esp-ckeditor 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.rdoc +32 -0
- data/Rakefile +28 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/_bootstrap.js +87 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/ckeditor.js +141 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/ckeditor_base.js +227 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/ckeditor_basic.js +238 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/command.js +209 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/commanddefinition.js +129 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/config.js +423 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dataprocessor.js +65 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/comment.js +32 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/document.js +251 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/documentfragment.js +49 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/domobject.js +258 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/element.js +1691 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/elementpath.js +119 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/event.js +145 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/node.js +696 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/nodelist.js +26 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/range.js +2054 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/rangelist.js +213 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/text.js +128 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/walker.js +462 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom/window.js +96 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dom.js +20 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/dtd.js +266 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/editor.js +1060 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/editor_basic.js +186 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/env.js +305 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/event.js +342 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/eventInfo.js +120 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/focusmanager.js +152 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/basicwriter.js +145 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/cdata.js +43 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/comment.js +60 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/element.js +308 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/filter.js +288 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/fragment.js +518 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser/text.js +53 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/htmlparser.js +224 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/lang.js +157 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/loader.js +240 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/plugindefinition.js +83 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/plugins.js +103 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/resourcemanager.js +238 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/scriptloader.js +180 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/skins.js +184 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/themes.js +19 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/tools.js +763 -0
- data/app/assets/javascripts/esp-ckeditor/_source/core/ui.js +128 -0
- data/app/assets/javascripts/esp-ckeditor/_source/lang/_languages.js +27 -0
- data/app/assets/javascripts/esp-ckeditor/_source/lang/en.js +815 -0
- data/app/assets/javascripts/esp-ckeditor/_source/lang/ru.js +815 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/a11yhelp/dialogs/a11yhelp.js +222 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/a11yhelp/lang/en.js +108 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/a11yhelp/lang/he.js +216 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/a11yhelp/plugin.js +47 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/basicstyles/plugin.js +129 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/button/plugin.js +290 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/clipboard/dialogs/paste.js +223 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/clipboard/plugin.js +453 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/contextmenu/plugin.js +179 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/dialog/dialogDefinition.js +1166 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/dialog/plugin.js +3308 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/dialogadvtab/plugin.js +208 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/dialogui/plugin.js +1541 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/domiterator/plugin.js +361 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/editingblock/plugin.js +278 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/elementspath/plugin.js +218 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/enterkey/plugin.js +433 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/entities/plugin.js +250 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_attachment/dialogs/esp_attachment.js +234 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_attachment/images/esp_attachment.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_attachment/lang/en.js +22 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_attachment/lang/ru.js +22 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_attachment/lang/uk.js +22 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_attachment/plugin.js +23 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/dialogs/esp_audio.js +207 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/images/esp_audio.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/images/placeholder.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/lang/en.js +18 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/lang/ru.js +18 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/lang/uk.js +18 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_audio/plugin.js +182 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_blockquote/dialogs/esp_blockquote.js +132 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_blockquote/plugin.js +235 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_image/dialogs/esp_image.js +1414 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_image/images/esp_image.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_image/lang/en.js +9 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_image/lang/ru.js +9 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_image/lang/uk.js +9 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_image/plugin.js +80 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/dialogs/esp_anchor.js +145 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/dialogs/esp_link.js +1396 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/images/anchor.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/images/esp_anchor.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/images/esp_link.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/images/esp_unlink.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/lang/en.js +8 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/lang/ru.js +8 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/lang/uk.js +8 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_link/plugin.js +379 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_address.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_blockquote.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_div.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_h1.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_h2.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_h3.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_h4.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_h5.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_h6.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_p.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/block_pre.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/images/esp_showblocks.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_showblocks/plugin.js +163 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/dialogs/esp_video.js +277 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/images/esp_video.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/images/placeholder.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/lang/en.js +19 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/lang/ru.js +19 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/lang/uk.js +19 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/esp_video/plugin.js +182 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/fakeobjects/plugin.js +175 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/filebrowser/plugin.js +534 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/find/dialogs/find.js +915 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/find/plugin.js +47 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/floatpanel/plugin.js +428 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/format/plugin.js +197 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/htmldataprocessor/plugin.js +596 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/htmlwriter/plugin.js +319 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/image/dialogs/image.js +1407 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/image/plugin.js +81 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/indent/plugin.js +461 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/justify/plugin.js +253 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/keystrokes/plugin.js +225 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/list/plugin.js +774 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/listblock/plugin.js +266 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/liststyle/dialogs/liststyle.js +225 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/liststyle/plugin.js +66 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/maximize/plugin.js +353 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/menu/plugin.js +541 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/panel/plugin.js +400 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/pastefromword/filter/default.js +1367 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/pastefromword/plugin.js +141 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/pastetext/dialogs/pastetext.js +67 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/pastetext/plugin.js +98 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/popup/plugin.js +64 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/removeformat/plugin.js +185 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/resize/plugin.js +168 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/richcombo/plugin.js +381 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/selection/plugin.js +1729 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/showborders/plugin.js +207 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/sourcearea/plugin.js +209 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/styles/plugin.js +1700 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/styles/styles/default.js +88 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/stylescombo/plugin.js +218 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/tab/plugin.js +367 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/table/dialogs/table.js +623 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/table/plugin.js +78 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/tabletools/dialogs/tableCell.js +525 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/tabletools/plugin.js +1194 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/toolbar/plugin.js +545 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/undo/plugin.js +578 -0
- data/app/assets/javascripts/esp-ckeditor/_source/plugins/wysiwygarea/plugin.js +1347 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/dialog.css +988 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/editor.css +25 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/elementspath.css +73 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/icons.css +367 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/icons.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/icons_rtl.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/dialog_sides.gif +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/dialog_sides.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/dialog_sides_rtl.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/mini.gif +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/noimage.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/sprites.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/sprites_ie6.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/images/toolbar_start.gif +0 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/mainui.css +209 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/menu.css +232 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/panel.css +227 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/presets.css +49 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/reset.css +85 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/richcombo.css +287 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/skin.js +236 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/templates.css +88 -0
- data/app/assets/javascripts/esp-ckeditor/_source/skins/kama/toolbar.css +412 -0
- data/app/assets/javascripts/esp-ckeditor/_source/themes/default/theme.js +407 -0
- data/app/assets/javascripts/esp-ckeditor/application.js +8 -0
- data/app/assets/javascripts/esp-ckeditor/ckeditor.js +137 -0
- data/app/assets/javascripts/esp-ckeditor/ckeditor.pack +194 -0
- data/app/assets/javascripts/esp-ckeditor/ckeditor_source.js +35 -0
- data/app/assets/javascripts/esp-ckeditor/ckpackager.jar +0 -0
- data/app/assets/javascripts/esp-ckeditor/ckpackager.txt +2 -0
- data/app/assets/javascripts/esp-ckeditor/config.js +147 -0
- data/app/assets/javascripts/esp-ckeditor/contents.css +38 -0
- data/app/assets/javascripts/esp-ckeditor/images/spacer.gif +0 -0
- data/app/assets/javascripts/esp-ckeditor/init_ckeditor.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/a11yhelp/lang/en.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/a11yhelp/lang/he.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/a11yhelp/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/basicstyles/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/button/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/clipboard/dialogs/paste.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/clipboard/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/contextmenu/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/dialog/dialogDefinition.js +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/dialog/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/dialogadvtab/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/dialogui/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/domiterator/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/editingblock/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/elementspath/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/enterkey/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/entities/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_attachment/dialogs/esp_attachment.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_attachment/images/esp_attachment.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_attachment/lang/en.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_attachment/lang/ru.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_attachment/lang/uk.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_attachment/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/dialogs/esp_audio.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/images/esp_audio.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/images/placeholder.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/lang/en.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/lang/ru.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/lang/uk.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_audio/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_blockquote/dialogs/esp_blockquote.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_blockquote/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_image/dialogs/esp_image.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_image/images/esp_image.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_image/lang/en.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_image/lang/ru.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_image/lang/uk.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_image/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/dialogs/esp_anchor.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/dialogs/esp_link.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/images/anchor.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/images/esp_anchor.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/images/esp_link.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/images/esp_unlink.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/lang/en.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/lang/ru.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/lang/uk.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_link/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_address.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_blockquote.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_div.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_h1.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_h2.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_h3.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_h4.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_h5.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_h6.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_p.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/block_pre.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/images/esp_showblocks.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_showblocks/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/dialogs/esp_video.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/images/esp_video.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/images/placeholder.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/lang/en.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/lang/ru.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/lang/uk.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/esp_video/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/fakeobjects/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/filebrowser/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/find/dialogs/find.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/find/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/floatpanel/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/format/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/htmldataprocessor/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/htmlwriter/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/image/dialogs/image.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/image/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/indent/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/justify/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/keystrokes/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/list/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/listblock/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/liststyle/dialogs/liststyle.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/liststyle/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/maximize/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/menu/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/panel/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/pastefromword/filter/default.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/pastefromword/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/pastetext/dialogs/pastetext.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/pastetext/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/popup/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/removeformat/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/resize/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/richcombo/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/selection/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/showborders/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/sourcearea/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/styles/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/styles/styles/default.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/stylescombo/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/tab/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/table/dialogs/table.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/table/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/tabletools/dialogs/tableCell.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/tabletools/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/toolbar/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/undo/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/plugins/wysiwygarea/plugin.js +1 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/dialog.css +988 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/editor.css +25 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/elementspath.css +73 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/icons.css +367 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/icons.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/icons_rtl.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/images/dialog_sides.gif +0 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/images/dialog_sides.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/images/dialog_sides_rtl.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/images/mini.gif +0 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/images/noimage.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/images/sprites.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/images/sprites_ie6.png +0 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/images/toolbar_start.gif +0 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/mainui.css +209 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/menu.css +232 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/panel.css +227 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/presets.css +49 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/reset.css +85 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/richcombo.css +287 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/skin.js +236 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/templates.css +88 -0
- data/app/assets/javascripts/esp-ckeditor/skins/kama/toolbar.css +412 -0
- data/app/inputs/ckeditor_input.rb +42 -0
- data/config/routes.rb +2 -0
- data/lib/esp-ckeditor/engine.rb +9 -0
- data/lib/esp-ckeditor/version.rb +3 -0
- data/lib/esp-ckeditor.rb +17 -0
- data/lib/tasks/esp-ckeditor_tasks.rake +4 -0
- metadata +434 -0
@@ -0,0 +1,218 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
|
3
|
+
For licensing, see LICENSE.html or http://ckeditor.com/license
|
4
|
+
*/
|
5
|
+
|
6
|
+
/**
|
7
|
+
* @fileOverview The "elementspath" plugin. It shows all elements in the DOM
|
8
|
+
* parent tree relative to the current selection in the editing area.
|
9
|
+
*/
|
10
|
+
|
11
|
+
(function()
|
12
|
+
{
|
13
|
+
var commands =
|
14
|
+
{
|
15
|
+
toolbarFocus :
|
16
|
+
{
|
17
|
+
editorFocus : false,
|
18
|
+
readOnly : 1,
|
19
|
+
exec : function( editor )
|
20
|
+
{
|
21
|
+
var idBase = editor._.elementsPath.idBase;
|
22
|
+
var element = CKEDITOR.document.getById( idBase + '0' );
|
23
|
+
|
24
|
+
// Make the first button focus accessible for IE. (#3417)
|
25
|
+
// Adobe AIR instead need while of delay.
|
26
|
+
element && element.focus( CKEDITOR.env.ie || CKEDITOR.env.air );
|
27
|
+
}
|
28
|
+
}
|
29
|
+
};
|
30
|
+
|
31
|
+
var emptyHtml = '<span class="cke_empty"> </span>';
|
32
|
+
|
33
|
+
CKEDITOR.plugins.add( 'elementspath',
|
34
|
+
{
|
35
|
+
requires : [ 'selection' ],
|
36
|
+
|
37
|
+
init : function( editor )
|
38
|
+
{
|
39
|
+
var spaceId = 'cke_path_' + editor.name;
|
40
|
+
var spaceElement;
|
41
|
+
var getSpaceElement = function()
|
42
|
+
{
|
43
|
+
if ( !spaceElement )
|
44
|
+
spaceElement = CKEDITOR.document.getById( spaceId );
|
45
|
+
return spaceElement;
|
46
|
+
};
|
47
|
+
|
48
|
+
var idBase = 'cke_elementspath_' + CKEDITOR.tools.getNextNumber() + '_';
|
49
|
+
|
50
|
+
editor._.elementsPath = { idBase : idBase, filters : [] };
|
51
|
+
|
52
|
+
editor.on( 'themeSpace', function( event )
|
53
|
+
{
|
54
|
+
if ( event.data.space == 'bottom' )
|
55
|
+
{
|
56
|
+
event.data.html +=
|
57
|
+
'<span id="' + spaceId + '_label" class="cke_voice_label">' + editor.lang.elementsPath.eleLabel + '</span>' +
|
58
|
+
'<div id="' + spaceId + '" class="cke_path" role="group" aria-labelledby="' + spaceId + '_label">' + emptyHtml + '</div>';
|
59
|
+
}
|
60
|
+
});
|
61
|
+
|
62
|
+
function onClick( elementIndex )
|
63
|
+
{
|
64
|
+
editor.focus();
|
65
|
+
var element = editor._.elementsPath.list[ elementIndex ];
|
66
|
+
if ( element.is( 'body' ) )
|
67
|
+
{
|
68
|
+
var range = new CKEDITOR.dom.range( editor.document );
|
69
|
+
range.selectNodeContents( element );
|
70
|
+
range.select();
|
71
|
+
}
|
72
|
+
else
|
73
|
+
editor.getSelection().selectElement( element );
|
74
|
+
}
|
75
|
+
|
76
|
+
var onClickHanlder = CKEDITOR.tools.addFunction( onClick );
|
77
|
+
|
78
|
+
var onKeyDownHandler = CKEDITOR.tools.addFunction( function( elementIndex, ev )
|
79
|
+
{
|
80
|
+
var idBase = editor._.elementsPath.idBase,
|
81
|
+
element;
|
82
|
+
|
83
|
+
ev = new CKEDITOR.dom.event( ev );
|
84
|
+
|
85
|
+
var rtl = editor.lang.dir == 'rtl';
|
86
|
+
switch ( ev.getKeystroke() )
|
87
|
+
{
|
88
|
+
case rtl ? 39 : 37 : // LEFT-ARROW
|
89
|
+
case 9 : // TAB
|
90
|
+
element = CKEDITOR.document.getById( idBase + ( elementIndex + 1 ) );
|
91
|
+
if ( !element )
|
92
|
+
element = CKEDITOR.document.getById( idBase + '0' );
|
93
|
+
element.focus();
|
94
|
+
return false;
|
95
|
+
|
96
|
+
case rtl ? 37 : 39 : // RIGHT-ARROW
|
97
|
+
case CKEDITOR.SHIFT + 9 : // SHIFT + TAB
|
98
|
+
element = CKEDITOR.document.getById( idBase + ( elementIndex - 1 ) );
|
99
|
+
if ( !element )
|
100
|
+
element = CKEDITOR.document.getById( idBase + ( editor._.elementsPath.list.length - 1 ) );
|
101
|
+
element.focus();
|
102
|
+
return false;
|
103
|
+
|
104
|
+
case 27 : // ESC
|
105
|
+
editor.focus();
|
106
|
+
return false;
|
107
|
+
|
108
|
+
case 13 : // ENTER // Opera
|
109
|
+
case 32 : // SPACE
|
110
|
+
onClick( elementIndex );
|
111
|
+
return false;
|
112
|
+
}
|
113
|
+
return true;
|
114
|
+
});
|
115
|
+
|
116
|
+
editor.on( 'selectionChange', function( ev )
|
117
|
+
{
|
118
|
+
var env = CKEDITOR.env,
|
119
|
+
selection = ev.data.selection,
|
120
|
+
element = selection.getStartElement(),
|
121
|
+
html = [],
|
122
|
+
editor = ev.editor,
|
123
|
+
elementsList = editor._.elementsPath.list = [],
|
124
|
+
filters = editor._.elementsPath.filters;
|
125
|
+
|
126
|
+
while ( element )
|
127
|
+
{
|
128
|
+
var ignore = 0,
|
129
|
+
name;
|
130
|
+
|
131
|
+
if ( element.data( 'cke-display-name' ) )
|
132
|
+
name = element.data( 'cke-display-name' );
|
133
|
+
else if ( element.data( 'cke-real-element-type' ) )
|
134
|
+
name = element.data( 'cke-real-element-type' );
|
135
|
+
else
|
136
|
+
name = element.getName();
|
137
|
+
|
138
|
+
for ( var i = 0; i < filters.length; i++ )
|
139
|
+
{
|
140
|
+
var ret = filters[ i ]( element, name );
|
141
|
+
if ( ret === false )
|
142
|
+
{
|
143
|
+
ignore = 1;
|
144
|
+
break;
|
145
|
+
}
|
146
|
+
name = ret || name;
|
147
|
+
}
|
148
|
+
|
149
|
+
if ( !ignore )
|
150
|
+
{
|
151
|
+
var index = elementsList.push( element ) - 1;
|
152
|
+
|
153
|
+
// Use this variable to add conditional stuff to the
|
154
|
+
// HTML (because we are doing it in reverse order... unshift).
|
155
|
+
var extra = '';
|
156
|
+
|
157
|
+
// Some browsers don't cancel key events in the keydown but in the
|
158
|
+
// keypress.
|
159
|
+
// TODO: Check if really needed for Gecko+Mac.
|
160
|
+
if ( env.opera || ( env.gecko && env.mac ) )
|
161
|
+
extra += ' onkeypress="return false;"';
|
162
|
+
|
163
|
+
// With Firefox, we need to force the button to redraw, otherwise it
|
164
|
+
// will remain in the focus state.
|
165
|
+
if ( env.gecko )
|
166
|
+
extra += ' onblur="this.style.cssText = this.style.cssText;"';
|
167
|
+
|
168
|
+
var label = editor.lang.elementsPath.eleTitle.replace( /%1/, name );
|
169
|
+
html.unshift(
|
170
|
+
'<a' +
|
171
|
+
' id="', idBase, index, '"' +
|
172
|
+
' href="javascript:void(\'', name, '\')"' +
|
173
|
+
' tabindex="-1"' +
|
174
|
+
' title="', label, '"' +
|
175
|
+
( ( CKEDITOR.env.gecko && CKEDITOR.env.version < 10900 ) ?
|
176
|
+
' onfocus="event.preventBubble();"' : '' ) +
|
177
|
+
' hidefocus="true" ' +
|
178
|
+
' onkeydown="return CKEDITOR.tools.callFunction(', onKeyDownHandler, ',', index, ', event );"' +
|
179
|
+
extra ,
|
180
|
+
' onclick="CKEDITOR.tools.callFunction('+ onClickHanlder, ',', index, '); return false;"',
|
181
|
+
' role="button" aria-labelledby="' + idBase + index + '_label">',
|
182
|
+
name,
|
183
|
+
'<span id="', idBase, index, '_label" class="cke_label">' + label + '</span>',
|
184
|
+
'</a>' );
|
185
|
+
|
186
|
+
}
|
187
|
+
|
188
|
+
if ( name == 'body' )
|
189
|
+
break;
|
190
|
+
|
191
|
+
element = element.getParent();
|
192
|
+
}
|
193
|
+
|
194
|
+
var space = getSpaceElement();
|
195
|
+
space.setHtml( html.join('') + emptyHtml );
|
196
|
+
editor.fire( 'elementsPathUpdate', { space : space } );
|
197
|
+
});
|
198
|
+
|
199
|
+
function empty()
|
200
|
+
{
|
201
|
+
spaceElement && spaceElement.setHtml( emptyHtml );
|
202
|
+
delete editor._.elementsPath.list;
|
203
|
+
}
|
204
|
+
|
205
|
+
editor.on( 'readOnly', empty );
|
206
|
+
editor.on( 'contentDomUnload', empty );
|
207
|
+
|
208
|
+
editor.addCommand( 'elementsPathFocus', commands.toolbarFocus );
|
209
|
+
}
|
210
|
+
});
|
211
|
+
})();
|
212
|
+
|
213
|
+
/**
|
214
|
+
* Fired when the contents of the elementsPath are changed
|
215
|
+
* @name CKEDITOR.editor#elementsPathUpdate
|
216
|
+
* @event
|
217
|
+
* @param {Object} eventData.space The elementsPath container
|
218
|
+
*/
|
@@ -0,0 +1,433 @@
|
|
1
|
+
/*
|
2
|
+
Copyright (c) 2003-2011, CKSource - Frederico Knabben. All rights reserved.
|
3
|
+
For licensing, see LICENSE.html or http://ckeditor.com/license
|
4
|
+
*/
|
5
|
+
|
6
|
+
(function()
|
7
|
+
{
|
8
|
+
CKEDITOR.plugins.add( 'enterkey',
|
9
|
+
{
|
10
|
+
requires : [ 'keystrokes', 'indent' ],
|
11
|
+
|
12
|
+
init : function( editor )
|
13
|
+
{
|
14
|
+
editor.addCommand( 'enter', {
|
15
|
+
modes : { wysiwyg:1 },
|
16
|
+
editorFocus : false,
|
17
|
+
exec : function( editor ){ enter( editor ); }
|
18
|
+
});
|
19
|
+
|
20
|
+
editor.addCommand( 'shiftEnter', {
|
21
|
+
modes : { wysiwyg:1 },
|
22
|
+
editorFocus : false,
|
23
|
+
exec : function( editor ){ shiftEnter( editor ); }
|
24
|
+
});
|
25
|
+
|
26
|
+
var keystrokes = editor.keystrokeHandler.keystrokes;
|
27
|
+
keystrokes[ 13 ] = 'enter';
|
28
|
+
keystrokes[ CKEDITOR.SHIFT + 13 ] = 'shiftEnter';
|
29
|
+
}
|
30
|
+
});
|
31
|
+
|
32
|
+
CKEDITOR.plugins.enterkey =
|
33
|
+
{
|
34
|
+
enterBlock : function( editor, mode, range, forceMode )
|
35
|
+
{
|
36
|
+
// Get the range for the current selection.
|
37
|
+
range = range || getRange( editor );
|
38
|
+
|
39
|
+
// We may not have valid ranges to work on, like when inside a
|
40
|
+
// contenteditable=false element.
|
41
|
+
if ( !range )
|
42
|
+
return;
|
43
|
+
|
44
|
+
var doc = range.document;
|
45
|
+
|
46
|
+
var atBlockStart = range.checkStartOfBlock(),
|
47
|
+
atBlockEnd = range.checkEndOfBlock(),
|
48
|
+
path = new CKEDITOR.dom.elementPath( range.startContainer ),
|
49
|
+
block = path.block;
|
50
|
+
|
51
|
+
if ( atBlockStart && atBlockEnd )
|
52
|
+
{
|
53
|
+
// Exit the list when we're inside an empty list item block. (#5376)
|
54
|
+
if ( block && ( block.is( 'li' ) || block.getParent().is( 'li' ) ) )
|
55
|
+
{
|
56
|
+
editor.execCommand( 'outdent' );
|
57
|
+
return;
|
58
|
+
}
|
59
|
+
|
60
|
+
if ( block && block.getParent().is( 'blockquote' ) )
|
61
|
+
{
|
62
|
+
block.breakParent( block.getParent() );
|
63
|
+
|
64
|
+
// If we were at the start of <blockquote>, there will be an empty element before it now.
|
65
|
+
if ( !block.getPrevious().getFirst( CKEDITOR.dom.walker.invisible(1) ) )
|
66
|
+
block.getPrevious().remove();
|
67
|
+
|
68
|
+
// If we were at the end of <blockquote>, there will be an empty element after it now.
|
69
|
+
if ( !block.getNext().getFirst( CKEDITOR.dom.walker.invisible(1) ) )
|
70
|
+
block.getNext().remove();
|
71
|
+
|
72
|
+
range.moveToElementEditStart( block );
|
73
|
+
range.select();
|
74
|
+
return;
|
75
|
+
}
|
76
|
+
}
|
77
|
+
// Don't split <pre> if we're in the middle of it, act as shift enter key.
|
78
|
+
else if ( block && block.is( 'pre' ) )
|
79
|
+
{
|
80
|
+
if ( !atBlockEnd )
|
81
|
+
{
|
82
|
+
enterBr( editor, mode, range, forceMode );
|
83
|
+
return;
|
84
|
+
}
|
85
|
+
}
|
86
|
+
// Don't split caption blocks. (#7944)
|
87
|
+
else if ( block && CKEDITOR.dtd.$captionBlock[ block.getName() ] )
|
88
|
+
{
|
89
|
+
enterBr( editor, mode, range, forceMode );
|
90
|
+
return;
|
91
|
+
}
|
92
|
+
|
93
|
+
// Determine the block element to be used.
|
94
|
+
var blockTag = ( mode == CKEDITOR.ENTER_DIV ? 'div' : 'p' );
|
95
|
+
|
96
|
+
// Split the range.
|
97
|
+
var splitInfo = range.splitBlock( blockTag );
|
98
|
+
|
99
|
+
if ( !splitInfo )
|
100
|
+
return;
|
101
|
+
|
102
|
+
// Get the current blocks.
|
103
|
+
var previousBlock = splitInfo.previousBlock,
|
104
|
+
nextBlock = splitInfo.nextBlock;
|
105
|
+
|
106
|
+
var isStartOfBlock = splitInfo.wasStartOfBlock,
|
107
|
+
isEndOfBlock = splitInfo.wasEndOfBlock;
|
108
|
+
|
109
|
+
var node;
|
110
|
+
|
111
|
+
// If this is a block under a list item, split it as well. (#1647)
|
112
|
+
if ( nextBlock )
|
113
|
+
{
|
114
|
+
node = nextBlock.getParent();
|
115
|
+
if ( node.is( 'li' ) )
|
116
|
+
{
|
117
|
+
nextBlock.breakParent( node );
|
118
|
+
nextBlock.move( nextBlock.getNext(), 1 );
|
119
|
+
}
|
120
|
+
}
|
121
|
+
else if ( previousBlock && ( node = previousBlock.getParent() ) && node.is( 'li' ) )
|
122
|
+
{
|
123
|
+
previousBlock.breakParent( node );
|
124
|
+
node = previousBlock.getNext();
|
125
|
+
range.moveToElementEditStart( node );
|
126
|
+
previousBlock.move( previousBlock.getPrevious() );
|
127
|
+
}
|
128
|
+
|
129
|
+
// If we have both the previous and next blocks, it means that the
|
130
|
+
// boundaries were on separated blocks, or none of them where on the
|
131
|
+
// block limits (start/end).
|
132
|
+
if ( !isStartOfBlock && !isEndOfBlock )
|
133
|
+
{
|
134
|
+
// If the next block is an <li> with another list tree as the first
|
135
|
+
// child, we'll need to append a filler (<br>/NBSP) or the list item
|
136
|
+
// wouldn't be editable. (#1420)
|
137
|
+
if ( nextBlock.is( 'li' )
|
138
|
+
&& ( node = nextBlock.getFirst( CKEDITOR.dom.walker.invisible( true ) ) )
|
139
|
+
&& node.is && node.is( 'ul', 'ol' ) )
|
140
|
+
( CKEDITOR.env.ie ? doc.createText( '\xa0' ) : doc.createElement( 'br' ) ).insertBefore( node );
|
141
|
+
|
142
|
+
// Move the selection to the end block.
|
143
|
+
if ( nextBlock )
|
144
|
+
range.moveToElementEditStart( nextBlock );
|
145
|
+
}
|
146
|
+
else
|
147
|
+
{
|
148
|
+
var newBlock,
|
149
|
+
newBlockDir;
|
150
|
+
|
151
|
+
if ( previousBlock )
|
152
|
+
{
|
153
|
+
// Do not enter this block if it's a header tag, or we are in
|
154
|
+
// a Shift+Enter (#77). Create a new block element instead
|
155
|
+
// (later in the code).
|
156
|
+
if ( previousBlock.is( 'li' ) ||
|
157
|
+
! ( headerTagRegex.test( previousBlock.getName() ) || previousBlock.is( 'pre' ) ) )
|
158
|
+
{
|
159
|
+
// Otherwise, duplicate the previous block.
|
160
|
+
newBlock = previousBlock.clone();
|
161
|
+
}
|
162
|
+
}
|
163
|
+
else if ( nextBlock )
|
164
|
+
newBlock = nextBlock.clone();
|
165
|
+
|
166
|
+
if ( !newBlock )
|
167
|
+
{
|
168
|
+
// We have already created a new list item. (#6849)
|
169
|
+
if ( node && node.is( 'li' ) )
|
170
|
+
newBlock = node;
|
171
|
+
else
|
172
|
+
{
|
173
|
+
newBlock = doc.createElement( blockTag );
|
174
|
+
if ( previousBlock && ( newBlockDir = previousBlock.getDirection() ) )
|
175
|
+
newBlock.setAttribute( 'dir', newBlockDir );
|
176
|
+
}
|
177
|
+
}
|
178
|
+
// Force the enter block unless we're talking of a list item.
|
179
|
+
else if ( forceMode && !newBlock.is( 'li' ) )
|
180
|
+
newBlock.renameNode( blockTag );
|
181
|
+
|
182
|
+
// Recreate the inline elements tree, which was available
|
183
|
+
// before hitting enter, so the same styles will be available in
|
184
|
+
// the new block.
|
185
|
+
var elementPath = splitInfo.elementPath;
|
186
|
+
if ( elementPath )
|
187
|
+
{
|
188
|
+
for ( var i = 0, len = elementPath.elements.length ; i < len ; i++ )
|
189
|
+
{
|
190
|
+
var element = elementPath.elements[ i ];
|
191
|
+
|
192
|
+
if ( element.equals( elementPath.block ) || element.equals( elementPath.blockLimit ) )
|
193
|
+
break;
|
194
|
+
|
195
|
+
if ( CKEDITOR.dtd.$removeEmpty[ element.getName() ] )
|
196
|
+
{
|
197
|
+
element = element.clone();
|
198
|
+
newBlock.moveChildren( element );
|
199
|
+
newBlock.append( element );
|
200
|
+
}
|
201
|
+
}
|
202
|
+
}
|
203
|
+
|
204
|
+
if ( !CKEDITOR.env.ie )
|
205
|
+
newBlock.appendBogus();
|
206
|
+
|
207
|
+
if ( !newBlock.getParent() )
|
208
|
+
range.insertNode( newBlock );
|
209
|
+
|
210
|
+
// list item start number should not be duplicated (#7330), but we need
|
211
|
+
// to remove the attribute after it's onto the DOM tree because of old IEs (#7581).
|
212
|
+
newBlock.is( 'li' ) && newBlock.removeAttribute( 'value' );
|
213
|
+
|
214
|
+
// This is tricky, but to make the new block visible correctly
|
215
|
+
// we must select it.
|
216
|
+
// The previousBlock check has been included because it may be
|
217
|
+
// empty if we have fixed a block-less space (like ENTER into an
|
218
|
+
// empty table cell).
|
219
|
+
if ( CKEDITOR.env.ie && isStartOfBlock && ( !isEndOfBlock || !previousBlock.getChildCount() ) )
|
220
|
+
{
|
221
|
+
// Move the selection to the new block.
|
222
|
+
range.moveToElementEditStart( isEndOfBlock ? previousBlock : newBlock );
|
223
|
+
range.select();
|
224
|
+
}
|
225
|
+
|
226
|
+
// Move the selection to the new block.
|
227
|
+
range.moveToElementEditStart( isStartOfBlock && !isEndOfBlock ? nextBlock : newBlock );
|
228
|
+
}
|
229
|
+
|
230
|
+
if ( !CKEDITOR.env.ie )
|
231
|
+
{
|
232
|
+
if ( nextBlock )
|
233
|
+
{
|
234
|
+
// If we have split the block, adds a temporary span at the
|
235
|
+
// range position and scroll relatively to it.
|
236
|
+
var tmpNode = doc.createElement( 'span' );
|
237
|
+
|
238
|
+
// We need some content for Safari.
|
239
|
+
tmpNode.setHtml( ' ' );
|
240
|
+
|
241
|
+
range.insertNode( tmpNode );
|
242
|
+
tmpNode.scrollIntoView();
|
243
|
+
range.deleteContents();
|
244
|
+
}
|
245
|
+
else
|
246
|
+
{
|
247
|
+
// We may use the above scroll logic for the new block case
|
248
|
+
// too, but it gives some weird result with Opera.
|
249
|
+
newBlock.scrollIntoView();
|
250
|
+
}
|
251
|
+
}
|
252
|
+
|
253
|
+
range.select();
|
254
|
+
},
|
255
|
+
|
256
|
+
enterBr : function( editor, mode, range, forceMode )
|
257
|
+
{
|
258
|
+
// Get the range for the current selection.
|
259
|
+
range = range || getRange( editor );
|
260
|
+
|
261
|
+
// We may not have valid ranges to work on, like when inside a
|
262
|
+
// contenteditable=false element.
|
263
|
+
if ( !range )
|
264
|
+
return;
|
265
|
+
|
266
|
+
var doc = range.document;
|
267
|
+
|
268
|
+
// Determine the block element to be used.
|
269
|
+
var blockTag = ( mode == CKEDITOR.ENTER_DIV ? 'div' : 'p' );
|
270
|
+
|
271
|
+
var isEndOfBlock = range.checkEndOfBlock();
|
272
|
+
|
273
|
+
var elementPath = new CKEDITOR.dom.elementPath( editor.getSelection().getStartElement() );
|
274
|
+
|
275
|
+
var startBlock = elementPath.block,
|
276
|
+
startBlockTag = startBlock && elementPath.block.getName();
|
277
|
+
|
278
|
+
var isPre = false;
|
279
|
+
|
280
|
+
if ( !forceMode && startBlockTag == 'li' )
|
281
|
+
{
|
282
|
+
enterBlock( editor, mode, range, forceMode );
|
283
|
+
return;
|
284
|
+
}
|
285
|
+
|
286
|
+
// If we are at the end of a header block.
|
287
|
+
if ( !forceMode && isEndOfBlock && headerTagRegex.test( startBlockTag ) )
|
288
|
+
{
|
289
|
+
var newBlock,
|
290
|
+
newBlockDir;
|
291
|
+
|
292
|
+
if ( ( newBlockDir = startBlock.getDirection() ) )
|
293
|
+
{
|
294
|
+
newBlock = doc.createElement( 'div' );
|
295
|
+
newBlock.setAttribute( 'dir', newBlockDir );
|
296
|
+
newBlock.insertAfter( startBlock );
|
297
|
+
range.setStart( newBlock, 0 );
|
298
|
+
}
|
299
|
+
else
|
300
|
+
{
|
301
|
+
// Insert a <br> after the current paragraph.
|
302
|
+
doc.createElement( 'br' ).insertAfter( startBlock );
|
303
|
+
|
304
|
+
// A text node is required by Gecko only to make the cursor blink.
|
305
|
+
if ( CKEDITOR.env.gecko )
|
306
|
+
doc.createText( '' ).insertAfter( startBlock );
|
307
|
+
|
308
|
+
// IE has different behaviors regarding position.
|
309
|
+
range.setStartAt( startBlock.getNext(), CKEDITOR.env.ie ? CKEDITOR.POSITION_BEFORE_START : CKEDITOR.POSITION_AFTER_START );
|
310
|
+
}
|
311
|
+
}
|
312
|
+
else
|
313
|
+
{
|
314
|
+
var lineBreak;
|
315
|
+
|
316
|
+
isPre = ( startBlockTag == 'pre' );
|
317
|
+
|
318
|
+
// Gecko prefers <br> as line-break inside <pre> (#4711).
|
319
|
+
if ( isPre && !CKEDITOR.env.gecko )
|
320
|
+
lineBreak = doc.createText( CKEDITOR.env.ie ? '\r' : '\n' );
|
321
|
+
else
|
322
|
+
lineBreak = doc.createElement( 'br' );
|
323
|
+
|
324
|
+
range.deleteContents();
|
325
|
+
range.insertNode( lineBreak );
|
326
|
+
|
327
|
+
// IE has different behavior regarding position.
|
328
|
+
if ( CKEDITOR.env.ie )
|
329
|
+
range.setStartAt( lineBreak, CKEDITOR.POSITION_AFTER_END );
|
330
|
+
else
|
331
|
+
{
|
332
|
+
// A text node is required by Gecko only to make the cursor blink.
|
333
|
+
// We need some text inside of it, so the bogus <br> is properly
|
334
|
+
// created.
|
335
|
+
doc.createText( '\ufeff' ).insertAfter( lineBreak );
|
336
|
+
|
337
|
+
// If we are at the end of a block, we must be sure the bogus node is available in that block.
|
338
|
+
if ( isEndOfBlock )
|
339
|
+
lineBreak.getParent().appendBogus();
|
340
|
+
|
341
|
+
// Now we can remove the text node contents, so the caret doesn't
|
342
|
+
// stop on it.
|
343
|
+
lineBreak.getNext().$.nodeValue = '';
|
344
|
+
|
345
|
+
range.setStartAt( lineBreak.getNext(), CKEDITOR.POSITION_AFTER_START );
|
346
|
+
|
347
|
+
// Scroll into view, for non IE.
|
348
|
+
var dummy = null;
|
349
|
+
|
350
|
+
// BR is not positioned in Opera and Webkit.
|
351
|
+
if ( !CKEDITOR.env.gecko )
|
352
|
+
{
|
353
|
+
dummy = doc.createElement( 'span' );
|
354
|
+
// We need have some contents for Webkit to position it
|
355
|
+
// under parent node. ( #3681)
|
356
|
+
dummy.setHtml(' ');
|
357
|
+
}
|
358
|
+
else
|
359
|
+
dummy = doc.createElement( 'br' );
|
360
|
+
|
361
|
+
dummy.insertBefore( lineBreak.getNext() );
|
362
|
+
dummy.scrollIntoView();
|
363
|
+
dummy.remove();
|
364
|
+
}
|
365
|
+
}
|
366
|
+
|
367
|
+
// This collapse guarantees the cursor will be blinking.
|
368
|
+
range.collapse( true );
|
369
|
+
|
370
|
+
range.select( isPre );
|
371
|
+
}
|
372
|
+
};
|
373
|
+
|
374
|
+
var plugin = CKEDITOR.plugins.enterkey,
|
375
|
+
enterBr = plugin.enterBr,
|
376
|
+
enterBlock = plugin.enterBlock,
|
377
|
+
headerTagRegex = /^h[1-6]$/;
|
378
|
+
|
379
|
+
function shiftEnter( editor )
|
380
|
+
{
|
381
|
+
// Only effective within document.
|
382
|
+
if ( editor.mode != 'wysiwyg' )
|
383
|
+
return false;
|
384
|
+
|
385
|
+
// On SHIFT+ENTER:
|
386
|
+
// 1. We want to enforce the mode to be respected, instead
|
387
|
+
// of cloning the current block. (#77)
|
388
|
+
return enter( editor, editor.config.shiftEnterMode, 1 );
|
389
|
+
}
|
390
|
+
|
391
|
+
function enter( editor, mode, forceMode )
|
392
|
+
{
|
393
|
+
forceMode = editor.config.forceEnterMode || forceMode;
|
394
|
+
|
395
|
+
// Only effective within document.
|
396
|
+
if ( editor.mode != 'wysiwyg' )
|
397
|
+
return false;
|
398
|
+
|
399
|
+
if ( !mode )
|
400
|
+
mode = editor.config.enterMode;
|
401
|
+
|
402
|
+
// Use setTimout so the keys get cancelled immediatelly.
|
403
|
+
setTimeout( function()
|
404
|
+
{
|
405
|
+
editor.fire( 'saveSnapshot' ); // Save undo step.
|
406
|
+
|
407
|
+
if ( mode == CKEDITOR.ENTER_BR )
|
408
|
+
enterBr( editor, mode, null, forceMode );
|
409
|
+
else
|
410
|
+
enterBlock( editor, mode, null, forceMode );
|
411
|
+
|
412
|
+
editor.fire( 'saveSnapshot' );
|
413
|
+
|
414
|
+
}, 0 );
|
415
|
+
|
416
|
+
return true;
|
417
|
+
}
|
418
|
+
|
419
|
+
function getRange( editor )
|
420
|
+
{
|
421
|
+
// Get the selection ranges.
|
422
|
+
var ranges = editor.getSelection().getRanges( true );
|
423
|
+
|
424
|
+
// Delete the contents of all ranges except the first one.
|
425
|
+
for ( var i = ranges.length - 1 ; i > 0 ; i-- )
|
426
|
+
{
|
427
|
+
ranges[ i ].deleteContents();
|
428
|
+
}
|
429
|
+
|
430
|
+
// Return the first range.
|
431
|
+
return ranges[ 0 ];
|
432
|
+
}
|
433
|
+
})();
|