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,361 @@
|
|
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
|
+
* @file DOM iterator, which iterates over list items, lines and paragraphs.
|
8
|
+
*/
|
9
|
+
|
10
|
+
CKEDITOR.plugins.add( 'domiterator' );
|
11
|
+
|
12
|
+
(function()
|
13
|
+
{
|
14
|
+
/**
|
15
|
+
* @name CKEDITOR.dom.iterator
|
16
|
+
*/
|
17
|
+
function iterator( range )
|
18
|
+
{
|
19
|
+
if ( arguments.length < 1 )
|
20
|
+
return;
|
21
|
+
|
22
|
+
this.range = range;
|
23
|
+
this.forceBrBreak = 0;
|
24
|
+
|
25
|
+
// Whether include <br>s into the enlarged range.(#3730).
|
26
|
+
this.enlargeBr = 1;
|
27
|
+
this.enforceRealBlocks = 0;
|
28
|
+
|
29
|
+
this._ || ( this._ = {} );
|
30
|
+
}
|
31
|
+
|
32
|
+
var beginWhitespaceRegex = /^[\r\n\t ]+$/,
|
33
|
+
// Ignore bookmark nodes.(#3783)
|
34
|
+
bookmarkGuard = CKEDITOR.dom.walker.bookmark( false, true ),
|
35
|
+
whitespacesGuard = CKEDITOR.dom.walker.whitespaces( true ),
|
36
|
+
skipGuard = function( node ) { return bookmarkGuard( node ) && whitespacesGuard( node ); };
|
37
|
+
|
38
|
+
// Get a reference for the next element, bookmark nodes are skipped.
|
39
|
+
function getNextSourceNode( node, startFromSibling, lastNode )
|
40
|
+
{
|
41
|
+
var next = node.getNextSourceNode( startFromSibling, null, lastNode );
|
42
|
+
while ( !bookmarkGuard( next ) )
|
43
|
+
next = next.getNextSourceNode( startFromSibling, null, lastNode );
|
44
|
+
return next;
|
45
|
+
}
|
46
|
+
|
47
|
+
iterator.prototype = {
|
48
|
+
getNextParagraph : function( blockTag )
|
49
|
+
{
|
50
|
+
// The block element to be returned.
|
51
|
+
var block;
|
52
|
+
|
53
|
+
// The range object used to identify the paragraph contents.
|
54
|
+
var range;
|
55
|
+
|
56
|
+
// Indicats that the current element in the loop is the last one.
|
57
|
+
var isLast;
|
58
|
+
|
59
|
+
// Indicate at least one of the range boundaries is inside a preformat block.
|
60
|
+
var touchPre;
|
61
|
+
|
62
|
+
// Instructs to cleanup remaining BRs.
|
63
|
+
var removePreviousBr, removeLastBr;
|
64
|
+
|
65
|
+
// This is the first iteration. Let's initialize it.
|
66
|
+
if ( !this._.lastNode )
|
67
|
+
{
|
68
|
+
range = this.range.clone();
|
69
|
+
|
70
|
+
// Shrink the range to exclude harmful "noises" (#4087, #4450, #5435).
|
71
|
+
range.shrink( CKEDITOR.NODE_ELEMENT, true );
|
72
|
+
|
73
|
+
touchPre = range.endContainer.hasAscendant( 'pre', true )
|
74
|
+
|| range.startContainer.hasAscendant( 'pre', true );
|
75
|
+
|
76
|
+
range.enlarge( this.forceBrBreak && !touchPre || !this.enlargeBr ?
|
77
|
+
CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS : CKEDITOR.ENLARGE_BLOCK_CONTENTS );
|
78
|
+
|
79
|
+
var walker = new CKEDITOR.dom.walker( range ),
|
80
|
+
ignoreBookmarkTextEvaluator = CKEDITOR.dom.walker.bookmark( true, true );
|
81
|
+
// Avoid anchor inside bookmark inner text.
|
82
|
+
walker.evaluator = ignoreBookmarkTextEvaluator;
|
83
|
+
this._.nextNode = walker.next();
|
84
|
+
// TODO: It's better to have walker.reset() used here.
|
85
|
+
walker = new CKEDITOR.dom.walker( range );
|
86
|
+
walker.evaluator = ignoreBookmarkTextEvaluator;
|
87
|
+
var lastNode = walker.previous();
|
88
|
+
this._.lastNode = lastNode.getNextSourceNode( true );
|
89
|
+
|
90
|
+
// We may have an empty text node at the end of block due to [3770].
|
91
|
+
// If that node is the lastNode, it would cause our logic to leak to the
|
92
|
+
// next block.(#3887)
|
93
|
+
if ( this._.lastNode &&
|
94
|
+
this._.lastNode.type == CKEDITOR.NODE_TEXT &&
|
95
|
+
!CKEDITOR.tools.trim( this._.lastNode.getText() ) &&
|
96
|
+
this._.lastNode.getParent().isBlockBoundary() )
|
97
|
+
{
|
98
|
+
var testRange = new CKEDITOR.dom.range( range.document );
|
99
|
+
testRange.moveToPosition( this._.lastNode, CKEDITOR.POSITION_AFTER_END );
|
100
|
+
if ( testRange.checkEndOfBlock() )
|
101
|
+
{
|
102
|
+
var path = new CKEDITOR.dom.elementPath( testRange.endContainer );
|
103
|
+
var lastBlock = path.block || path.blockLimit;
|
104
|
+
this._.lastNode = lastBlock.getNextSourceNode( true );
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
// Probably the document end is reached, we need a marker node.
|
109
|
+
if ( !this._.lastNode )
|
110
|
+
{
|
111
|
+
this._.lastNode = this._.docEndMarker = range.document.createText( '' );
|
112
|
+
this._.lastNode.insertAfter( lastNode );
|
113
|
+
}
|
114
|
+
|
115
|
+
// Let's reuse this variable.
|
116
|
+
range = null;
|
117
|
+
}
|
118
|
+
|
119
|
+
var currentNode = this._.nextNode;
|
120
|
+
lastNode = this._.lastNode;
|
121
|
+
|
122
|
+
this._.nextNode = null;
|
123
|
+
while ( currentNode )
|
124
|
+
{
|
125
|
+
// closeRange indicates that a paragraph boundary has been found,
|
126
|
+
// so the range can be closed.
|
127
|
+
var closeRange = 0,
|
128
|
+
parentPre = currentNode.hasAscendant( 'pre' );
|
129
|
+
|
130
|
+
// includeNode indicates that the current node is good to be part
|
131
|
+
// of the range. By default, any non-element node is ok for it.
|
132
|
+
var includeNode = ( currentNode.type != CKEDITOR.NODE_ELEMENT ),
|
133
|
+
continueFromSibling = 0;
|
134
|
+
|
135
|
+
// If it is an element node, let's check if it can be part of the
|
136
|
+
// range.
|
137
|
+
if ( !includeNode )
|
138
|
+
{
|
139
|
+
var nodeName = currentNode.getName();
|
140
|
+
|
141
|
+
if ( currentNode.isBlockBoundary( this.forceBrBreak &&
|
142
|
+
!parentPre && { br : 1 } ) )
|
143
|
+
{
|
144
|
+
// <br> boundaries must be part of the range. It will
|
145
|
+
// happen only if ForceBrBreak.
|
146
|
+
if ( nodeName == 'br' )
|
147
|
+
includeNode = 1;
|
148
|
+
else if ( !range && !currentNode.getChildCount() && nodeName != 'hr' )
|
149
|
+
{
|
150
|
+
// If we have found an empty block, and haven't started
|
151
|
+
// the range yet, it means we must return this block.
|
152
|
+
block = currentNode;
|
153
|
+
isLast = currentNode.equals( lastNode );
|
154
|
+
break;
|
155
|
+
}
|
156
|
+
|
157
|
+
// The range must finish right before the boundary,
|
158
|
+
// including possibly skipped empty spaces. (#1603)
|
159
|
+
if ( range )
|
160
|
+
{
|
161
|
+
range.setEndAt( currentNode, CKEDITOR.POSITION_BEFORE_START );
|
162
|
+
|
163
|
+
// The found boundary must be set as the next one at this
|
164
|
+
// point. (#1717)
|
165
|
+
if ( nodeName != 'br' )
|
166
|
+
this._.nextNode = currentNode;
|
167
|
+
}
|
168
|
+
|
169
|
+
closeRange = 1;
|
170
|
+
}
|
171
|
+
else
|
172
|
+
{
|
173
|
+
// If we have child nodes, let's check them.
|
174
|
+
if ( currentNode.getFirst() )
|
175
|
+
{
|
176
|
+
// If we don't have a range yet, let's start it.
|
177
|
+
if ( !range )
|
178
|
+
{
|
179
|
+
range = new CKEDITOR.dom.range( this.range.document );
|
180
|
+
range.setStartAt( currentNode, CKEDITOR.POSITION_BEFORE_START );
|
181
|
+
}
|
182
|
+
|
183
|
+
currentNode = currentNode.getFirst();
|
184
|
+
continue;
|
185
|
+
}
|
186
|
+
includeNode = 1;
|
187
|
+
}
|
188
|
+
}
|
189
|
+
else if ( currentNode.type == CKEDITOR.NODE_TEXT )
|
190
|
+
{
|
191
|
+
// Ignore normal whitespaces (i.e. not including or
|
192
|
+
// other unicode whitespaces) before/after a block node.
|
193
|
+
if ( beginWhitespaceRegex.test( currentNode.getText() ) )
|
194
|
+
includeNode = 0;
|
195
|
+
}
|
196
|
+
|
197
|
+
// The current node is good to be part of the range and we are
|
198
|
+
// starting a new range, initialize it first.
|
199
|
+
if ( includeNode && !range )
|
200
|
+
{
|
201
|
+
range = new CKEDITOR.dom.range( this.range.document );
|
202
|
+
range.setStartAt( currentNode, CKEDITOR.POSITION_BEFORE_START );
|
203
|
+
}
|
204
|
+
|
205
|
+
// The last node has been found.
|
206
|
+
isLast = ( ( !closeRange || includeNode ) && currentNode.equals( lastNode ) );
|
207
|
+
|
208
|
+
// If we are in an element boundary, let's check if it is time
|
209
|
+
// to close the range, otherwise we include the parent within it.
|
210
|
+
if ( range && !closeRange )
|
211
|
+
{
|
212
|
+
while ( !currentNode.getNext( skipGuard ) && !isLast )
|
213
|
+
{
|
214
|
+
var parentNode = currentNode.getParent();
|
215
|
+
|
216
|
+
if ( parentNode.isBlockBoundary( this.forceBrBreak
|
217
|
+
&& !parentPre && { br : 1 } ) )
|
218
|
+
{
|
219
|
+
closeRange = 1;
|
220
|
+
includeNode = 0;
|
221
|
+
isLast = isLast || ( parentNode.equals( lastNode) );
|
222
|
+
// Make sure range includes bookmarks at the end of the block. (#7359)
|
223
|
+
range.setEndAt( parentNode, CKEDITOR.POSITION_BEFORE_END );
|
224
|
+
break;
|
225
|
+
}
|
226
|
+
|
227
|
+
currentNode = parentNode;
|
228
|
+
includeNode = 1;
|
229
|
+
isLast = ( currentNode.equals( lastNode ) );
|
230
|
+
continueFromSibling = 1;
|
231
|
+
}
|
232
|
+
}
|
233
|
+
|
234
|
+
// Now finally include the node.
|
235
|
+
if ( includeNode )
|
236
|
+
range.setEndAt( currentNode, CKEDITOR.POSITION_AFTER_END );
|
237
|
+
|
238
|
+
currentNode = getNextSourceNode ( currentNode, continueFromSibling, lastNode );
|
239
|
+
isLast = !currentNode;
|
240
|
+
|
241
|
+
// We have found a block boundary. Let's close the range and move out of the
|
242
|
+
// loop.
|
243
|
+
if ( isLast || ( closeRange && range ) )
|
244
|
+
break;
|
245
|
+
}
|
246
|
+
|
247
|
+
// Now, based on the processed range, look for (or create) the block to be returned.
|
248
|
+
if ( !block )
|
249
|
+
{
|
250
|
+
// If no range has been found, this is the end.
|
251
|
+
if ( !range )
|
252
|
+
{
|
253
|
+
this._.docEndMarker && this._.docEndMarker.remove();
|
254
|
+
this._.nextNode = null;
|
255
|
+
return null;
|
256
|
+
}
|
257
|
+
|
258
|
+
var startPath = new CKEDITOR.dom.elementPath( range.startContainer );
|
259
|
+
var startBlockLimit = startPath.blockLimit,
|
260
|
+
checkLimits = { div : 1, th : 1, td : 1 };
|
261
|
+
block = startPath.block;
|
262
|
+
|
263
|
+
if ( !block
|
264
|
+
&& !this.enforceRealBlocks
|
265
|
+
&& checkLimits[ startBlockLimit.getName() ]
|
266
|
+
&& range.checkStartOfBlock()
|
267
|
+
&& range.checkEndOfBlock() )
|
268
|
+
block = startBlockLimit;
|
269
|
+
else if ( !block || ( this.enforceRealBlocks && block.getName() == 'li' ) )
|
270
|
+
{
|
271
|
+
// Create the fixed block.
|
272
|
+
block = this.range.document.createElement( blockTag || 'p' );
|
273
|
+
|
274
|
+
// Move the contents of the temporary range to the fixed block.
|
275
|
+
range.extractContents().appendTo( block );
|
276
|
+
block.trim();
|
277
|
+
|
278
|
+
// Insert the fixed block into the DOM.
|
279
|
+
range.insertNode( block );
|
280
|
+
|
281
|
+
removePreviousBr = removeLastBr = true;
|
282
|
+
}
|
283
|
+
else if ( block.getName() != 'li' )
|
284
|
+
{
|
285
|
+
// If the range doesn't includes the entire contents of the
|
286
|
+
// block, we must split it, isolating the range in a dedicated
|
287
|
+
// block.
|
288
|
+
if ( !range.checkStartOfBlock() || !range.checkEndOfBlock() )
|
289
|
+
{
|
290
|
+
// The resulting block will be a clone of the current one.
|
291
|
+
block = block.clone( false );
|
292
|
+
|
293
|
+
// Extract the range contents, moving it to the new block.
|
294
|
+
range.extractContents().appendTo( block );
|
295
|
+
block.trim();
|
296
|
+
|
297
|
+
// Split the block. At this point, the range will be in the
|
298
|
+
// right position for our intents.
|
299
|
+
var splitInfo = range.splitBlock();
|
300
|
+
|
301
|
+
removePreviousBr = !splitInfo.wasStartOfBlock;
|
302
|
+
removeLastBr = !splitInfo.wasEndOfBlock;
|
303
|
+
|
304
|
+
// Insert the new block into the DOM.
|
305
|
+
range.insertNode( block );
|
306
|
+
}
|
307
|
+
}
|
308
|
+
else if ( !isLast )
|
309
|
+
{
|
310
|
+
// LIs are returned as is, with all their children (due to the
|
311
|
+
// nested lists). But, the next node is the node right after
|
312
|
+
// the current range, which could be an <li> child (nested
|
313
|
+
// lists) or the next sibling <li>.
|
314
|
+
|
315
|
+
this._.nextNode = ( block.equals( lastNode ) ? null : getNextSourceNode( range.getBoundaryNodes().endNode, 1, lastNode ) );
|
316
|
+
}
|
317
|
+
}
|
318
|
+
|
319
|
+
if ( removePreviousBr )
|
320
|
+
{
|
321
|
+
var previousSibling = block.getPrevious();
|
322
|
+
if ( previousSibling && previousSibling.type == CKEDITOR.NODE_ELEMENT )
|
323
|
+
{
|
324
|
+
if ( previousSibling.getName() == 'br' )
|
325
|
+
previousSibling.remove();
|
326
|
+
else if ( previousSibling.getLast() && previousSibling.getLast().$.nodeName.toLowerCase() == 'br' )
|
327
|
+
previousSibling.getLast().remove();
|
328
|
+
}
|
329
|
+
}
|
330
|
+
|
331
|
+
if ( removeLastBr )
|
332
|
+
{
|
333
|
+
var lastChild = block.getLast();
|
334
|
+
if ( lastChild && lastChild.type == CKEDITOR.NODE_ELEMENT && lastChild.getName() == 'br' )
|
335
|
+
{
|
336
|
+
// Take care not to remove the block expanding <br> in non-IE browsers.
|
337
|
+
if ( CKEDITOR.env.ie
|
338
|
+
|| lastChild.getPrevious( bookmarkGuard )
|
339
|
+
|| lastChild.getNext( bookmarkGuard ) )
|
340
|
+
lastChild.remove();
|
341
|
+
}
|
342
|
+
}
|
343
|
+
|
344
|
+
// Get a reference for the next element. This is important because the
|
345
|
+
// above block can be removed or changed, so we can rely on it for the
|
346
|
+
// next interation.
|
347
|
+
if ( !this._.nextNode )
|
348
|
+
{
|
349
|
+
this._.nextNode = ( isLast || block.equals( lastNode ) ) ? null :
|
350
|
+
getNextSourceNode( block, 1, lastNode );
|
351
|
+
}
|
352
|
+
|
353
|
+
return block;
|
354
|
+
}
|
355
|
+
};
|
356
|
+
|
357
|
+
CKEDITOR.dom.range.prototype.createIterator = function()
|
358
|
+
{
|
359
|
+
return new iterator( this );
|
360
|
+
};
|
361
|
+
})();
|
@@ -0,0 +1,278 @@
|
|
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 default editing block plugin, which holds the editing area
|
8
|
+
* and source view.
|
9
|
+
*/
|
10
|
+
|
11
|
+
(function()
|
12
|
+
{
|
13
|
+
// This is a semaphore used to avoid recursive calls between
|
14
|
+
// the following data handling functions.
|
15
|
+
var isHandlingData;
|
16
|
+
|
17
|
+
CKEDITOR.plugins.add( 'editingblock',
|
18
|
+
{
|
19
|
+
init : function( editor )
|
20
|
+
{
|
21
|
+
if ( !editor.config.editingBlock )
|
22
|
+
return;
|
23
|
+
|
24
|
+
editor.on( 'themeSpace', function( event )
|
25
|
+
{
|
26
|
+
if ( event.data.space == 'contents' )
|
27
|
+
event.data.html += '<br>';
|
28
|
+
});
|
29
|
+
|
30
|
+
editor.on( 'themeLoaded', function()
|
31
|
+
{
|
32
|
+
editor.fireOnce( 'editingBlockReady' );
|
33
|
+
});
|
34
|
+
|
35
|
+
editor.on( 'uiReady', function()
|
36
|
+
{
|
37
|
+
editor.setMode( editor.config.startupMode );
|
38
|
+
});
|
39
|
+
|
40
|
+
editor.on( 'afterSetData', function()
|
41
|
+
{
|
42
|
+
if ( !isHandlingData )
|
43
|
+
{
|
44
|
+
function setData()
|
45
|
+
{
|
46
|
+
isHandlingData = true;
|
47
|
+
editor.getMode().loadData( editor.getData() );
|
48
|
+
isHandlingData = false;
|
49
|
+
}
|
50
|
+
|
51
|
+
if ( editor.mode )
|
52
|
+
setData();
|
53
|
+
else
|
54
|
+
{
|
55
|
+
editor.on( 'mode', function()
|
56
|
+
{
|
57
|
+
if ( editor.mode )
|
58
|
+
{
|
59
|
+
setData();
|
60
|
+
editor.removeListener( 'mode', arguments.callee );
|
61
|
+
}
|
62
|
+
});
|
63
|
+
}
|
64
|
+
}
|
65
|
+
});
|
66
|
+
|
67
|
+
editor.on( 'beforeGetData', function()
|
68
|
+
{
|
69
|
+
if ( !isHandlingData && editor.mode )
|
70
|
+
{
|
71
|
+
isHandlingData = true;
|
72
|
+
editor.setData( editor.getMode().getData(), null, 1 );
|
73
|
+
isHandlingData = false;
|
74
|
+
}
|
75
|
+
});
|
76
|
+
|
77
|
+
editor.on( 'getSnapshot', function( event )
|
78
|
+
{
|
79
|
+
if ( editor.mode )
|
80
|
+
event.data = editor.getMode().getSnapshotData();
|
81
|
+
});
|
82
|
+
|
83
|
+
editor.on( 'loadSnapshot', function( event )
|
84
|
+
{
|
85
|
+
if ( editor.mode )
|
86
|
+
editor.getMode().loadSnapshotData( event.data );
|
87
|
+
});
|
88
|
+
|
89
|
+
// For the first "mode" call, we'll also fire the "instanceReady"
|
90
|
+
// event.
|
91
|
+
editor.on( 'mode', function( event )
|
92
|
+
{
|
93
|
+
// Do that once only.
|
94
|
+
event.removeListener();
|
95
|
+
|
96
|
+
// Redirect the focus into editor for webkit. (#5713)
|
97
|
+
CKEDITOR.env.webkit && editor.container.on( 'focus', function()
|
98
|
+
{
|
99
|
+
editor.focus();
|
100
|
+
});
|
101
|
+
|
102
|
+
if ( editor.config.startupFocus )
|
103
|
+
editor.focus();
|
104
|
+
|
105
|
+
// Fire instanceReady for both the editor and CKEDITOR, but
|
106
|
+
// defer this until the whole execution has completed
|
107
|
+
// to guarantee the editor is fully responsible.
|
108
|
+
setTimeout( function(){
|
109
|
+
editor.fireOnce( 'instanceReady' );
|
110
|
+
CKEDITOR.fire( 'instanceReady', null, editor );
|
111
|
+
}, 0 );
|
112
|
+
});
|
113
|
+
|
114
|
+
editor.on( 'destroy', function ()
|
115
|
+
{
|
116
|
+
// -> currentMode.unload( holderElement );
|
117
|
+
if ( this.mode )
|
118
|
+
this._.modes[ this.mode ].unload( this.getThemeSpace( 'contents' ) );
|
119
|
+
});
|
120
|
+
}
|
121
|
+
});
|
122
|
+
|
123
|
+
/**
|
124
|
+
* The current editing mode. An editing mode is basically a viewport for
|
125
|
+
* editing or content viewing. By default the possible values for this
|
126
|
+
* property are "wysiwyg" and "source".
|
127
|
+
* @type String
|
128
|
+
* @example
|
129
|
+
* alert( CKEDITOR.instances.editor1.mode ); // "wysiwyg" (e.g.)
|
130
|
+
*/
|
131
|
+
CKEDITOR.editor.prototype.mode = '';
|
132
|
+
|
133
|
+
/**
|
134
|
+
* Registers an editing mode. This function is to be used mainly by plugins.
|
135
|
+
* @param {String} mode The mode name.
|
136
|
+
* @param {Object} modeEditor The mode editor definition.
|
137
|
+
* @example
|
138
|
+
*/
|
139
|
+
CKEDITOR.editor.prototype.addMode = function( mode, modeEditor )
|
140
|
+
{
|
141
|
+
modeEditor.name = mode;
|
142
|
+
( this._.modes || ( this._.modes = {} ) )[ mode ] = modeEditor;
|
143
|
+
};
|
144
|
+
|
145
|
+
/**
|
146
|
+
* Sets the current editing mode in this editor instance.
|
147
|
+
* @param {String} mode A registered mode name.
|
148
|
+
* @example
|
149
|
+
* // Switch to "source" view.
|
150
|
+
* CKEDITOR.instances.editor1.setMode( 'source' );
|
151
|
+
*/
|
152
|
+
CKEDITOR.editor.prototype.setMode = function( mode )
|
153
|
+
{
|
154
|
+
this.fire( 'beforeSetMode', { newMode : mode } );
|
155
|
+
|
156
|
+
var data,
|
157
|
+
holderElement = this.getThemeSpace( 'contents' ),
|
158
|
+
isDirty = this.checkDirty();
|
159
|
+
|
160
|
+
// Unload the previous mode.
|
161
|
+
if ( this.mode )
|
162
|
+
{
|
163
|
+
if ( mode == this.mode )
|
164
|
+
return;
|
165
|
+
|
166
|
+
this._.previousMode = this.mode;
|
167
|
+
|
168
|
+
this.fire( 'beforeModeUnload' );
|
169
|
+
|
170
|
+
var currentMode = this.getMode();
|
171
|
+
data = currentMode.getData();
|
172
|
+
currentMode.unload( holderElement );
|
173
|
+
this.mode = '';
|
174
|
+
}
|
175
|
+
|
176
|
+
holderElement.setHtml( '' );
|
177
|
+
|
178
|
+
// Load required mode.
|
179
|
+
var modeEditor = this.getMode( mode );
|
180
|
+
if ( !modeEditor )
|
181
|
+
throw '[CKEDITOR.editor.setMode] Unknown mode "' + mode + '".';
|
182
|
+
|
183
|
+
if ( !isDirty )
|
184
|
+
{
|
185
|
+
this.on( 'mode', function()
|
186
|
+
{
|
187
|
+
this.resetDirty();
|
188
|
+
this.removeListener( 'mode', arguments.callee );
|
189
|
+
});
|
190
|
+
}
|
191
|
+
|
192
|
+
modeEditor.load( holderElement, ( typeof data ) != 'string' ? this.getData() : data );
|
193
|
+
};
|
194
|
+
|
195
|
+
/**
|
196
|
+
* Gets the current or any of the objects that represent the editing
|
197
|
+
* area modes. The two most common editing modes are "wysiwyg" and "source".
|
198
|
+
* @param {String} [mode] The mode to be retrieved. If not specified, the
|
199
|
+
* current one is returned.
|
200
|
+
*/
|
201
|
+
CKEDITOR.editor.prototype.getMode = function( mode )
|
202
|
+
{
|
203
|
+
return this._.modes && this._.modes[ mode || this.mode ];
|
204
|
+
};
|
205
|
+
|
206
|
+
/**
|
207
|
+
* Moves the selection focus to the editing are space in the editor.
|
208
|
+
*/
|
209
|
+
CKEDITOR.editor.prototype.focus = function()
|
210
|
+
{
|
211
|
+
this.forceNextSelectionCheck();
|
212
|
+
var mode = this.getMode();
|
213
|
+
if ( mode )
|
214
|
+
mode.focus();
|
215
|
+
};
|
216
|
+
})();
|
217
|
+
|
218
|
+
/**
|
219
|
+
* The mode to load at the editor startup. It depends on the plugins
|
220
|
+
* loaded. By default, the "wysiwyg" and "source" modes are available.
|
221
|
+
* @type String
|
222
|
+
* @default 'wysiwyg'
|
223
|
+
* @example
|
224
|
+
* config.startupMode = 'source';
|
225
|
+
*/
|
226
|
+
CKEDITOR.config.startupMode = 'wysiwyg';
|
227
|
+
|
228
|
+
/**
|
229
|
+
* Sets whether the editor should have the focus when the page loads.
|
230
|
+
* @name CKEDITOR.config.startupFocus
|
231
|
+
* @type Boolean
|
232
|
+
* @default false
|
233
|
+
* @example
|
234
|
+
* config.startupFocus = true;
|
235
|
+
*/
|
236
|
+
|
237
|
+
/**
|
238
|
+
* Whether to render or not the editing block area in the editor interface.
|
239
|
+
* @type Boolean
|
240
|
+
* @default true
|
241
|
+
* @example
|
242
|
+
* config.editingBlock = false;
|
243
|
+
*/
|
244
|
+
CKEDITOR.config.editingBlock = true;
|
245
|
+
|
246
|
+
/**
|
247
|
+
* Fired when a CKEDITOR instance is created, fully initialized and ready for interaction.
|
248
|
+
* @name CKEDITOR#instanceReady
|
249
|
+
* @event
|
250
|
+
* @param {CKEDITOR.editor} editor The editor instance that has been created.
|
251
|
+
*/
|
252
|
+
|
253
|
+
/**
|
254
|
+
* Fired when the CKEDITOR instance is created, fully initialized and ready for interaction.
|
255
|
+
* @name CKEDITOR.editor#instanceReady
|
256
|
+
* @event
|
257
|
+
*/
|
258
|
+
|
259
|
+
/**
|
260
|
+
* Fired before changing the editing mode. See also CKEDITOR.editor#beforeSetMode and CKEDITOR.editor#mode
|
261
|
+
* @name CKEDITOR.editor#beforeModeUnload
|
262
|
+
* @event
|
263
|
+
*/
|
264
|
+
|
265
|
+
/**
|
266
|
+
* Fired before the editor mode is set. See also CKEDITOR.editor#mode and CKEDITOR.editor#beforeModeUnload
|
267
|
+
* @name CKEDITOR.editor#beforeSetMode
|
268
|
+
* @event
|
269
|
+
* @since 3.5.3
|
270
|
+
* @param {String} newMode The name of the mode which is about to be set.
|
271
|
+
*/
|
272
|
+
|
273
|
+
/**
|
274
|
+
* Fired after setting the editing mode. See also CKEDITOR.editor#beforeSetMode and CKEDITOR.editor#beforeModeUnload
|
275
|
+
* @name CKEDITOR.editor#mode
|
276
|
+
* @event
|
277
|
+
* @param {String} previousMode The previous mode of the editor.
|
278
|
+
*/
|