|
823 | 823 | if ( !offline ) {
|
824 | 824 | editable.removeClass( 'cke_widget_editable' );
|
825 | 825 | editable.removeClass( 'cke_widget_editable_focused' );
|
826 |
| - editable.removeAttributes( [ 'contenteditable', 'data-cke-widget-editable' ] ); |
| 826 | + editable.removeAttributes( [ 'contenteditable', 'data-cke-widget-editable', 'data-cke-enter-mode' ] ); |
827 | 827 | }
|
828 | 828 |
|
829 | 829 | delete this.editables[ editableName ];
|
|
911 | 911 |
|
912 | 912 | editable.setAttributes( {
|
913 | 913 | contenteditable: 'true',
|
914 |
| - 'data-cke-widget-editable': editableName |
| 914 | + 'data-cke-widget-editable': editableName, |
| 915 | + 'data-cke-enter-mode': editable.enterMode |
915 | 916 | } );
|
916 | 917 | editable.addClass( 'cke_widget_editable' );
|
917 | 918 | // This class may be left when d&ding widget which
|
|
1171 | 1172 | // Call the base constructor.
|
1172 | 1173 | CKEDITOR.dom.element.call( this, element.$ );
|
1173 | 1174 | this.editor = editor;
|
1174 |
| - this.filter = config.filter; |
| 1175 | + var filter = this.filter = config.filter; |
| 1176 | + |
| 1177 | + // If blockless editable - always use BR mode. |
| 1178 | + if ( !CKEDITOR.dtd[ this.getName() ].p ) |
| 1179 | + this.enterMode = this.shiftEnterMode = CKEDITOR.ENTER_BR; |
| 1180 | + else { |
| 1181 | + this.enterMode = filter ? filter.getAllowedEnterMode( editor.enterMode ) : editor.enterMode; |
| 1182 | + this.shiftEnterMode = filter ? filter.getAllowedEnterMode( editor.shiftEnterMode, true ) : editor.shiftEnterMode; |
| 1183 | + } |
1175 | 1184 | }
|
1176 | 1185 |
|
1177 | 1186 | NestedEditable.prototype = CKEDITOR.tools.extend( CKEDITOR.tools.prototypedCopy( CKEDITOR.dom.element.prototype ), {
|
|
1186 | 1195 | data = this.editor.dataProcessor.toHtml( data, {
|
1187 | 1196 | context: this.getName(),
|
1188 | 1197 | filter: this.filter,
|
1189 |
| - enterMode: this.filter ? this.filter.getAllowedEnterMode() : this.editor.enterMode |
| 1198 | + enterMode: this.enterMode |
1190 | 1199 | } );
|
1191 | 1200 | this.setHtml( data );
|
1192 | 1201 | },
|
|
1200 | 1209 | return this.editor.dataProcessor.toDataFormat( this.getHtml(), {
|
1201 | 1210 | context: this.getName(),
|
1202 | 1211 | filter: this.filter,
|
1203 |
| - enterMode: this.filter ? this.filter.getAllowedEnterMode() : this.editor.enterMode |
| 1212 | + enterMode: this.enterMode |
1204 | 1213 | } );
|
1205 | 1214 | }
|
1206 | 1215 | } );
|
1207 | 1216 |
|
| 1217 | + /** |
| 1218 | + * The editor instance. |
| 1219 | + * |
| 1220 | + * @readonly |
| 1221 | + * @property {CKEDITOR.editor} editor |
| 1222 | + */ |
| 1223 | + |
| 1224 | + /** |
| 1225 | + * The filter instance if allowed content rules were defined. |
| 1226 | + * |
| 1227 | + * @readonly |
| 1228 | + * @property {CKEDITOR.filter} filter |
| 1229 | + */ |
| 1230 | + |
| 1231 | + /** |
| 1232 | + * The enter mode active in this editable. |
| 1233 | + * It is determined from editable's name (whether it is a blockless editable), |
| 1234 | + * its allowed content rules (if defined) and the default editor's mode. |
| 1235 | + * |
| 1236 | + * @readonly |
| 1237 | + * @property {Number} enterMode |
| 1238 | + */ |
| 1239 | + |
| 1240 | + /** |
| 1241 | + * The shift enter move active in this editable. |
| 1242 | + * |
| 1243 | + * @readonly |
| 1244 | + * @property {Number} shiftEnterMode |
| 1245 | + */ |
| 1246 | + |
1208 | 1247 |
|
1209 | 1248 | //
|
1210 | 1249 | // REPOSITORY helpers -----------------------------------------------------
|
|
1616 | 1655 | }
|
1617 | 1656 |
|
1618 | 1657 | function setFocusedEditable( widgetsRepo, widget, editableElement, offline ) {
|
1619 |
| - widgetsRepo.editor.fire( 'lockSnapshot' ); |
| 1658 | + var editor = widgetsRepo.editor; |
| 1659 | + |
| 1660 | + editor.fire( 'lockSnapshot' ); |
1620 | 1661 |
|
1621 | 1662 | if ( editableElement ) {
|
1622 | 1663 | var editableName = editableElement.data( 'cke-widget-editable' ),
|
|
1627 | 1668 | editableElement.addClass( 'cke_widget_editable_focused' );
|
1628 | 1669 |
|
1629 | 1670 | if ( editableInstance.filter )
|
1630 |
| - widgetsRepo.editor.setActiveFilter( editableInstance.filter ); |
| 1671 | + editor.setActiveFilter( editableInstance.filter ); |
| 1672 | + editor.setActiveEnterMode( editableInstance.enterMode, editableInstance.shiftEnterMode ); |
1631 | 1673 | } else {
|
1632 | 1674 | if ( !offline )
|
1633 | 1675 | widget.focusedEditable.removeClass( 'cke_widget_editable_focused' );
|
1634 | 1676 |
|
1635 | 1677 | widget.focusedEditable = null;
|
1636 | 1678 | widgetsRepo.widgetHoldingFocusedEditable = null;
|
1637 |
| - widgetsRepo.editor.setActiveFilter( null ); |
| 1679 | + editor.setActiveFilter( null ); |
| 1680 | + editor.setActiveEnterMode( null, null ); |
1638 | 1681 | }
|
1639 | 1682 |
|
1640 |
| - widgetsRepo.editor.fire( 'unlockSnapshot' ); |
| 1683 | + editor.fire( 'unlockSnapshot' ); |
1641 | 1684 | }
|
1642 | 1685 |
|
1643 | 1686 | function setupContextMenu( editor ) {
|
|
0 commit comments