|
1570 | 1570 | validClasses = status.validClasses,
|
1571 | 1571 | attrs = element.attributes,
|
1572 | 1572 | styles = element.styles,
|
| 1573 | + classes = element.classes, |
1573 | 1574 | origClasses = element.classBackup,
|
1574 | 1575 | origStyles = element.styleBackup,
|
1575 |
| - name, origName, |
| 1576 | + name, origName, i, |
1576 | 1577 | stylesArr = [],
|
1577 | 1578 | classesArr = [],
|
1578 | 1579 | internalAttr = /^data-cke-/,
|
|
1585 | 1586 | delete element.classBackup;
|
1586 | 1587 | delete element.styleBackup;
|
1587 | 1588 |
|
1588 |
| - if ( !status.allAttributes || status.hadInvalidAttribute ) { |
| 1589 | + if ( !status.allAttributes ) { |
1589 | 1590 | for ( name in attrs ) {
|
1590 | 1591 | // If not valid and not internal attribute delete it.
|
1591 | 1592 | if ( !validAttrs[ name ] ) {
|
|
1609 | 1610 |
|
1610 | 1611 | if ( !status.allStyles || status.hadInvalidStyle ) {
|
1611 | 1612 | for ( name in styles ) {
|
1612 |
| - if ( validStyles[ name ] ) |
| 1613 | + // We check status.allStyles because when there was a '*' ACR and some |
| 1614 | + // DACR we have now both properties true - status.allStyles and status.hadInvalidStyle. |
| 1615 | + // However unlike in the case when we only have '*' ACR, in which we can just copy original |
| 1616 | + // styles, in this case we must copy only those styles which were not removed by DACRs. |
| 1617 | + if ( status.allStyles || validStyles[ name ] ) |
1613 | 1618 | stylesArr.push( name + ':' + styles[ name ] );
|
1614 | 1619 | else
|
1615 | 1620 | isModified = true;
|
|
1621 | 1626 | attrs.style = origStyles;
|
1622 | 1627 |
|
1623 | 1628 | if ( !status.allClasses || status.hadInvalidClass ) {
|
1624 |
| - for ( name in validClasses ) { |
1625 |
| - if ( validClasses[ name ] ) |
1626 |
| - classesArr.push( name ); |
| 1629 | + for ( i = 0; i < classes.length; ++i ) { |
| 1630 | + // See comment for styles. |
| 1631 | + if ( status.allClasses || validClasses[ classes[ i ] ] ) |
| 1632 | + classesArr.push( classes[ i ] ); |
1627 | 1633 | }
|
1628 | 1634 | if ( classesArr.length )
|
1629 | 1635 | attrs[ 'class' ] = classesArr.sort().join( ' ' );
|
|
0 commit comments