locomotive-aloha-rails 0.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +18 -0
- data/README.md +48 -0
- data/Rakefile +60 -0
- data/app/assets/javascripts/aloha/preinit.js.erb +1 -0
- data/app/assets/javascripts/aloha.js +2 -0
- data/lib/aloha/rails/engine.rb +9 -0
- data/lib/aloha/rails/sprockets_monkeypatch.rb +13 -0
- data/lib/aloha/rails/version.rb +7 -0
- data/lib/aloha/rails.rb +3 -0
- data/lib/aloha-rails.rb +1 -0
- data/vendor/assets/javascripts/aloha/css/aloha-core.css +44 -0
- data/vendor/assets/javascripts/aloha/css/aloha-sidebar.css +284 -0
- data/vendor/assets/javascripts/aloha/css/aloha.css +7774 -0
- data/vendor/assets/javascripts/aloha/css/ext-aloha-reset.css +33 -0
- data/vendor/assets/javascripts/aloha/css/ext-aloha.css +357 -0
- data/vendor/assets/javascripts/aloha/img/arrow-down.png +0 -0
- data/vendor/assets/javascripts/aloha/img/arrow-left.png +0 -0
- data/vendor/assets/javascripts/aloha/img/arrow.png +0 -0
- data/vendor/assets/javascripts/aloha/img/base-big.png +0 -0
- data/vendor/assets/javascripts/aloha/img/base-multi.png +0 -0
- data/vendor/assets/javascripts/aloha/img/base.png +0 -0
- data/vendor/assets/javascripts/aloha/img/bg.png +0 -0
- data/vendor/assets/javascripts/aloha/img/breadcrumb-divider.png +0 -0
- data/vendor/assets/javascripts/aloha/img/fade-in.png +0 -0
- data/vendor/assets/javascripts/aloha/img/fade-out.png +0 -0
- data/vendor/assets/javascripts/aloha/img/gentics-logo.png +0 -0
- data/vendor/assets/javascripts/aloha/img/grabhandle.png +0 -0
- data/vendor/assets/javascripts/aloha/img/maximize.png +0 -0
- data/vendor/assets/javascripts/aloha/img/multisplit-base.jpg +0 -0
- data/vendor/assets/javascripts/aloha/img/multisplit-close.gif +0 -0
- data/vendor/assets/javascripts/aloha/img/multisplit-open.gif +0 -0
- data/vendor/assets/javascripts/aloha/img/pin.png +0 -0
- data/vendor/assets/javascripts/aloha/img/removeformat.png +0 -0
- data/vendor/assets/javascripts/aloha/img/text_indent.png +0 -0
- data/vendor/assets/javascripts/aloha/img/text_indent_remove.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/command.js +246 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/console.js +330 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/contenthandlermanager.js +65 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/core.js +560 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/ecma5.js +194 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/ecma5shims.js +280 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/editable.js +854 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/engine.js +8306 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/ext-alohaproxy.js +86 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/ext-alohareader.js +50 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/ext-alohatreeloader.js +77 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/ext.js +32 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/floatingmenu.js +1304 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/ierange-m2.js +546 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/jquery.aloha.js +324 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/jquery.js +24 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/jquery.patch.js +115 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/markup.js +977 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/message.js +115 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/nls/de/i18n.js +10 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/nls/i18n.js +20 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/observable.js +106 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/plugin.js +276 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/pluginmanager.js +146 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/rangy-core.js +3242 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/registry.js +59 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/repository.js +241 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/repositorymanager.js +570 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/repositoryobjects.js +146 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/selection.js +2083 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/sidebar.js +1133 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/ui-attributefield.js +530 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/ui-browser.js +214 -0
- data/vendor/assets/javascripts/aloha/lib/aloha/ui.js +889 -0
- data/vendor/assets/javascripts/aloha/lib/aloha-bootstrap.js +27645 -0
- data/vendor/assets/javascripts/aloha/lib/aloha.js +88750 -0
- data/vendor/assets/javascripts/aloha/lib/css.js +313 -0
- data/vendor/assets/javascripts/aloha/lib/i18n.js +153 -0
- data/vendor/assets/javascripts/aloha/lib/jquery-plugin.js +46 -0
- data/vendor/assets/javascripts/aloha/lib/order.js +140 -0
- data/vendor/assets/javascripts/aloha/lib/require.js +2013 -0
- data/vendor/assets/javascripts/aloha/lib/text.js +262 -0
- data/vendor/assets/javascripts/aloha/lib/util/class.js +80 -0
- data/vendor/assets/javascripts/aloha/lib/util/dom.js +1673 -0
- data/vendor/assets/javascripts/aloha/lib/util/json2.js +481 -0
- data/vendor/assets/javascripts/aloha/lib/util/lang.js +66 -0
- data/vendor/assets/javascripts/aloha/lib/util/position.js +158 -0
- data/vendor/assets/javascripts/aloha/lib/util/range.js +923 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/adapter/jquery/ext-jquery-adapter-debug.js +2470 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/adapter/jquery/ext-jquery-adapter.js +7 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/ext-all-debug.js +47684 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/ext-all.js +13 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/gpl-3.0.txt +674 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/license.txt +42 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/charts.swf +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/css/ext-all.css +5903 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/css/ext-all.less +6795 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/css/xtheme-gray.css +1692 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/expressinstall.swf +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/corners-blue.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/corners.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/l-blue.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/l.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/r-blue.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/r.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/tb-blue.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/box/tb.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/arrow.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/btn.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/group-cs.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/group-lr.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/group-tb.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/s-arrow-b-noline.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/s-arrow-b.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/s-arrow-bo.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/s-arrow-noline.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/s-arrow-o.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/button/s-arrow.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/dd/drop-add.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/dd/drop-no.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/dd/drop-yes.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/editor/tb-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/checkbox.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/clear-trigger.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/clear-trigger.psd +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/date-trigger.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/date-trigger.psd +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/error-tip-corners.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/exclamation.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/radio.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/search-trigger.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/search-trigger.psd +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/text-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/trigger-square.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/trigger-square.psd +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/trigger-tpl.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/trigger.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/form/trigger.psd +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/gradient-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/arrow-left-white.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/arrow-right-white.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/col-move-bottom.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/col-move-top.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/columns.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/dirty.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/done.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/drop-no.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/drop-yes.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/footer-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid-blue-hd.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid-blue-split.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid-hrow.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid-loading.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid-split.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid-vista-hd.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid3-hd-btn.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid3-hrow-over.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid3-hrow.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid3-special-col-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/grid3-special-col-sel-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/group-by.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/group-collapse.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/group-expand-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/group-expand.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hd-pop.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hmenu-asc.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hmenu-desc.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hmenu-lock.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hmenu-lock.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hmenu-unlock.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/hmenu-unlock.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/invalid_line.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/loading.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/mso-hd.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/nowait.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-first-disabled.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-first.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-last-disabled.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-last.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-next-disabled.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-next.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-prev-disabled.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/page-prev.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/pick-button.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/refresh.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/row-check-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/row-expand-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/row-over.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/row-sel.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/sort-hd.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/sort_asc.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/sort_desc.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/grid/wait.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/collapse.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/expand.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/gradient-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/mini-bottom.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/mini-left.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/mini-right.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/mini-top.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/ns-collapse.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/ns-expand.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/panel-close.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/panel-title-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/panel-title-light-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/stick.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/stuck.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/tab-close-on.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/layout/tab-close.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/menu/checked.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/menu/group-checked.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/menu/item-over.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/menu/menu-parent.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/menu/menu.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/menu/unchecked.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/corners-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/left-right.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/light-hd.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/tool-sprite-tpl.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/tool-sprites.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/tools-sprites-trans.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/top-bottom.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/top-bottom.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/white-corners-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/white-left-right.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/panel/white-top-bottom.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/progress/progress-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/qtip/bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/qtip/close.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/qtip/tip-anchor-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/qtip/tip-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/s.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shadow-c.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shadow-lr.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shadow.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/blue-loading.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/calendar.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/glass-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/hd-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/large-loading.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/left-btn.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/loading-balls.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/right-btn.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/shared/warning.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/e-handle-dark.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/e-handle.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/ne-handle-dark.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/ne-handle.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/nw-handle-dark.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/nw-handle.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/s-handle-dark.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/s-handle.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/se-handle-dark.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/se-handle.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/square.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/sw-handle-dark.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/sizer/sw-handle.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/slider/slider-bg.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/slider/slider-thumb.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/slider/slider-v-bg.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/slider/slider-v-thumb.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/scroll-left.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/scroll-right.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/scroller-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-btm-left-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-btm-over-left-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-btm-over-right-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-btm-right-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-close.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-strip-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-strip-bg.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tab-strip-btm-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tabs/tabs-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/btn-arrow-light.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/btn-arrow.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/btn-over-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/gray-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/more.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/tb-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/tb-btn-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/tb-xl-btn-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/toolbar/tb-xl-sep.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/arrows.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/drop-add.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/drop-between.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/drop-no.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/drop-over.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/drop-under.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/drop-yes.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-end-minus-nl.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-end-minus.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-end-plus-nl.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-end-plus.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-end.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-line.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-minus-nl.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-minus.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-plus-nl.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow-plus.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/elbow.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/folder-open.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/folder.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/leaf.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/loading.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/tree/s.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/icon-error.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/icon-info.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/icon-question.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/icon-warning.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/left-corners.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/left-corners.psd +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/left-right.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/left-right.psd +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/right-corners.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/right-corners.psd +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/top-bottom.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/default/window/top-bottom.psd +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/btn-arrow.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/btn-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/btn.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/group-cs.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/group-lr.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/group-tb.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/s-arrow-bo.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/button/s-arrow-o.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/form/clear-trigger.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/form/date-trigger.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/form/search-trigger.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/form/trigger-square.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/form/trigger.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/gradient-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/col-move-bottom.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/col-move-top.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-hd-btn.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-hrow-over.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-hrow-over2.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-hrow.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-hrow2.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-special-col-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-special-col-bg2.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/grid3-special-col-sel-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/group-collapse.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/group-expand-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/group-expand.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/page-first.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/page-last.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/page-next.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/page-prev.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/refresh.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/row-expand-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/sort_asc.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/grid/sort_desc.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/menu/group-checked.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/menu/item-over-disabled.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/menu/item-over.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/menu/menu-parent.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/corners-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/left-right.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/light-hd.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/tool-sprite-tpl.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/tool-sprites.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/tools-sprites-trans.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/top-bottom.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/top-bottom.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/white-corners-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/white-left-right.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/panel/white-top-bottom.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/progress/progress-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/qtip/bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/qtip/close.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/qtip/tip-anchor-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/qtip/tip-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/s.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/shared/hd-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/shared/left-btn.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/shared/right-btn.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/e-handle.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/ne-handle.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/nw-handle.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/s-handle.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/se-handle.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/square.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/sizer/sw-handle.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/slider/slider-thumb.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/slider/slider-v-thumb.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/scroll-left.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/scroll-right.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/scroller-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-btm-left-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-btm-over-left-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-btm-over-right-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-btm-right-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-close.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-strip-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-strip-bg.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tab-strip-btm-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tabs/tabs-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/btn-arrow-light.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/btn-arrow.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/btn-over-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/gray-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/more.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/tb-bg.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/toolbar/tb-btn-sprite.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tree/arrows.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tree/elbow-end-minus-nl.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tree/elbow-end-minus.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tree/elbow-end-plus-nl.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/tree/elbow-end-plus.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/icon-error.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/icon-info.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/icon-question.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/icon-warning.gif +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/left-corners.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/left-corners.pspimage +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/left-right.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/right-corners.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/images/gray/window/top-bottom.png +0 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/ext-3.2.1/resources/resources.jsb +507 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/jquery-1.6.1.js +8936 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/jquery.json-2.2.min.js +33 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/jquery.store.js +446 -0
- data/vendor/assets/javascripts/aloha/lib/vendor/sanitize.js +267 -0
- data/vendor/assets/javascripts/aloha/plugins/common/abbr/css/abbr.css +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/abbr/lib/abbr-plugin.js +293 -0
- data/vendor/assets/javascripts/aloha/plugins/common/abbr/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/abbr/nls/i18n.js +4 -0
- data/vendor/assets/javascripts/aloha/plugins/common/abbr/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/align/LICENSE +166 -0
- data/vendor/assets/javascripts/aloha/plugins/common/align/README +12 -0
- data/vendor/assets/javascripts/aloha/plugins/common/align/css/align.css +19 -0
- data/vendor/assets/javascripts/aloha/plugins/common/align/img/align.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/align/lib/align-plugin.js +345 -0
- data/vendor/assets/javascripts/aloha/plugins/common/align/nls/en/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/align/nls/fr/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/align/nls/i18n.js +6 -0
- data/vendor/assets/javascripts/aloha/plugins/common/align/package.json +2 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/README +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/css/block.css +51 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/img/toolbar-draghandle.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/block-plugin.js +104 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/block.js +442 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/blockcontenthandler.js +58 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/blockmanager.js +242 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/editor.js +209 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/editormanager.js +34 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/lib/sidebarattributeeditor.js +119 -0
- data/vendor/assets/javascripts/aloha/plugins/common/block/package.json +11 -0
- data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/css/characterpicker.css +38 -0
- data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/img/icon.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/lib/characterpicker-plugin.js +227 -0
- data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/characterpicker/nls/i18n.js +4 -0
- data/vendor/assets/javascripts/aloha/plugins/common/commands/css/abbr.css +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/commands/lib/commands-plugin.js +15 -0
- data/vendor/assets/javascripts/aloha/plugins/common/commands/lib/inserthtml.js +107 -0
- data/vendor/assets/javascripts/aloha/plugins/common/commands/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/README.md +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/contenthandler-plugin.js +54 -0
- data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/genericcontenthandler.js +255 -0
- data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/oembedcontenthandler.js +276 -0
- data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/sanitizecontenthandler.js +136 -0
- data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/lib/wordcontenthandler.js +279 -0
- data/vendor/assets/javascripts/aloha/plugins/common/contenthandler/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/css/format.css +8 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/img/em.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/img/strong.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/lib/format-plugin.js +303 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/nls/eo/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/nls/fi/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/nls/fr/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/nls/i18n.js +10 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/nls/it/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/nls/pl/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/format/nls/ru/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/highlighteditables/css/highlighteditables.css +14 -0
- data/vendor/assets/javascripts/aloha/plugins/common/highlighteditables/lib/highlighteditables-plugin.js +72 -0
- data/vendor/assets/javascripts/aloha/plugins/common/highlighteditables/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/horizontalruler/css/horizontalruler.css +4 -0
- data/vendor/assets/javascripts/aloha/plugins/common/horizontalruler/img/icon.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/horizontalruler/lib/horizontalruler-plugin.js +55 -0
- data/vendor/assets/javascripts/aloha/plugins/common/horizontalruler/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/horizontalruler/nls/i18n.js +4 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/AGPL3 +661 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/LICENSE +25 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/README.md +83 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/css/image.css +124 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/demo/crop.html +76 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/demo/crop.php +21 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/demo/cropnresize.jpg +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/demo/index.html +120 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/blank.jpg +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/cropnresize.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/handle-sw.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/image-align-left.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/image-align-none.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/image-align-right.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/image-border.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/image-title.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/image.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/padding-decrease.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/padding-increase.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/page.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/size-decrease.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/img/size-increase.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/lib/image-plugin.js +1615 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/nls/cz/i18n.js +16 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/nls/fr/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/nls/i18n.js +7 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/nls/ru/i18n.js +16 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/test/test.css +12 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/test/test.html +40 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/jcrop/jcrop.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/jcrop/jquery.jcrop.css +35 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/jcrop/jquery.jcrop.min.js +163 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/mousewheel/mousewheel.js +60 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/jquery-ui-1.8.10.custom.min.js +97 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_ef8c08_256x240.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/jquery-ui-1.8.10.cropnresize.css +33 -0
- data/vendor/assets/javascripts/aloha/plugins/common/image/vendor/ui/ui-lightness/jquery-ui-1.8.10.custom.css +314 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/css/link.css +55 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/demo/background.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/demo/external-link-ltr-icon.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/demo/index.css +91 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/demo/index.html +91 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/extra/delicious.js +246 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/extra/linklist.js +227 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/extra/slowlinklist.js +228 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/lib/link-plugin.js +759 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/nls/de/i18n.js +13 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/nls/fr/i18n.js +6 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/nls/i18n.js +9 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/nls/pl/i18n.js +6 -0
- data/vendor/assets/javascripts/aloha/plugins/common/link/nls/ru/i18n.js +6 -0
- data/vendor/assets/javascripts/aloha/plugins/common/list/lib/list-plugin.js +849 -0
- data/vendor/assets/javascripts/aloha/plugins/common/list/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/list/nls/eo/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/list/nls/fi/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/list/nls/fr/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/list/nls/i18n.js +9 -0
- data/vendor/assets/javascripts/aloha/plugins/common/list/nls/it/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/list/nls/ru/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/list/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/paste/README.md +3 -0
- data/vendor/assets/javascripts/aloha/plugins/common/paste/lib/paste-plugin.js +221 -0
- data/vendor/assets/javascripts/aloha/plugins/common/paste/package.json +8 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/css/table.css +160 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/img/down.cur +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/img/left.cur +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/img/table_layout.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/img/wai-green.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/img/wai-red.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-cell.js +463 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-create-layer.js +210 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-plugin-utils.js +355 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-plugin.js +1498 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table-selection.js +374 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/lib/table.js +1529 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/nls/eo/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/nls/fi/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/nls/fr/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/nls/i18n.js +11 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/nls/it/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/nls/pl/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/nls/ru/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/table/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/common/undo/demo/index.css +49 -0
- data/vendor/assets/javascripts/aloha/plugins/common/undo/demo/index.html +85 -0
- data/vendor/assets/javascripts/aloha/plugins/common/undo/lib/undo-plugin.js +134 -0
- data/vendor/assets/javascripts/aloha/plugins/common/undo/package.json +7 -0
- data/vendor/assets/javascripts/aloha/plugins/common/undo/vendor/diff_match_patch_uncompressed.js +2155 -0
- data/vendor/assets/javascripts/aloha/plugins/common/undo/vendor/undo.js +119 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/attributes/README +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/attributes/css/attributes.css +12 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/attributes/lib/attributes-plugin.js +217 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/attributes/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/attributes/nls/en/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/attributes/nls/i18n.js +5 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/README +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/browser.css +360 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/browser.jqgrid.css +374 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/browsercombined.css +752 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-icons_222222_256x240.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-icons_2e83ff_256x240.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-icons_454545_256x240.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-icons_888888_256x240.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/jquery-ui-1.8.13.custom.css +319 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/jstree.css +88 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/throbber.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/css/ui.jqgrid.css +148 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/arrow-000-medium.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/arrow-180.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/arrow-315-medium.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/arrow-stop-180.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/arrow-stop.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/arrow.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/control-stop-square-small.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/folder-horizontal-open.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/folder-open.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/gcn-icons/gcn-icon-file.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/gcn-icons/gcn-icon-image.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/gcn-icons/gcn-icon-page.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/magnifier-left.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/page.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/picture.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/sort-alphabet-descending.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/sort-alphabet.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/img/throbber.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/lib/browser-plugin.js +10 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/lib/browser.js +1103 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/lib/locale.js +26 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/nls/de/i18n.js +18 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/nls/de.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/nls/en/i18n.js +18 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/nls/en.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/nls/i18n.js +4 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/grid.locale.de.js +134 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/grid.locale.en.js +129 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/jquery.jqGrid.js +467 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/jquery.jstree.js +4544 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/jquery.ui.js +756 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/browser/vendor/ui-layout.js +108 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/cite/README +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/cite/css/cite.css +49 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/cite/img/blockquote.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/cite/img/icon_cite.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/cite/lib/cite-plugin.js +539 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/cite/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/cite/nls/en/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/cite/nls/i18n.js +4 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/cite/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/comments/img/add-icon.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/comments/img/add.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/comments/img/comments.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/comments/img/hr.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/comments/img/textbox.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/comments/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/comments/src/comments.css +442 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/comments/src/comments.js +669 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/AGPL3 +661 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/LICENSE +25 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/README.md +5 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/TODO.md +2 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/index.css +47 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/index.html +101 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/migration/index.css +189 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/migration/index.html +321 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/specs/DragnDropnImage.graphml +677 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/style.css +47 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/demo/upload.php +26 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/i18n/en.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/i18n/fr.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/img/cross.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/img/hourglass.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/img/loading.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/img/page.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/img/tick.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/lib/draganddropfiles-plugin.js +4 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/lib/dragndropfiles.css +110 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/lib/dragndropfiles.js +349 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/lib/dropfilesrepository.js +365 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/draganddropfiles/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/README.md +3 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/css/formatless.css +7 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/img/button.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/lib/formatlesshandler.js +67 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/lib/formatlesspaste-plugin.js +103 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/nls/i18n.js +7 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/formatlesspaste/package.json +8 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/headerids/README +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/headerids/css/headerids.css +8 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/headerids/lib/headerids-plugin.js +127 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/headerids/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/headerids/nls/en/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/headerids/nls/i18n.js +5 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/hints/dep/jquery.poshytip.js +470 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/hints/i18n/de.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/hints/i18n/en.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/hints/img/tip-twitter_arrows.gif +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/hints/package.json +9 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/hints/src/hints.css +61 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/hints/src/hints.js +49 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/README +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ad.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ae.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/af.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ag.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ai.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/al.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/am.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/an.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ao.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ar.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/as.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/at.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/au.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/aw.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ax.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/az.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ba.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bb.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bd.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/be.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bf.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bg.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bh.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bi.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bj.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bm.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bn.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bo.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/br.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bs.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bt.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bv.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bw.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/by.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/bz.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ca.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/catalonia.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cc.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cd.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cf.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cg.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ch.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ci.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ck.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cl.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cm.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cn.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/co.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cr.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cs.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cu.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cv.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cx.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cy.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/cz.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/de.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/dj.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/dk.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/dm.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/do.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/dz.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ec.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ee.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/eg.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/eh.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/en.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/er.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/es.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/et.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/europeanunion.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fam.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fi.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fj.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fk.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fm.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fo.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/fr.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ga.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gb.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gd.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ge.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gf.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gh.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gi.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gl.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gm.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gn.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gp.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gq.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gr.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gs.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gt.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gu.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gw.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/gy.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/hk.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/hm.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/hn.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/hr.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ht.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/hu.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/id.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ie.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/il.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/in.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/io.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/iq.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ir.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/is.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/it.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/jm.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/jo.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/jp.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ke.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kg.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kh.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ki.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/km.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kn.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kp.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kr.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kw.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ky.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/kz.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/la.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lb.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lc.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/li.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lk.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lr.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ls.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lt.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lu.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/lv.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ly.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ma.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mc.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/md.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/me.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mg.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mh.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mk.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ml.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mm.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mn.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mo.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mp.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mq.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mr.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ms.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mt.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mu.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mv.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mw.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mx.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/my.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/mz.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/na.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/nc.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ne.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/nf.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ng.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ni.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/nl.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/no.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/np.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/nr.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/nu.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/nz.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/om.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pa.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pe.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pf.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pg.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ph.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pk.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pl.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pm.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pn.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pr.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ps.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pt.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/pw.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/py.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/qa.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/re.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ro.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/rs.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ru.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/rw.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sa.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sb.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sc.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/scotland.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sd.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/se.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sg.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sh.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/si.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sj.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sk.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sl.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sm.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sn.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/so.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sr.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/st.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sv.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sy.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/sz.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tc.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/td.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tf.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tg.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/th.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tj.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tk.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tl.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tm.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tn.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/to.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tr.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tt.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tv.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tw.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/tz.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ua.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ug.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/um.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/us.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/uy.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/uz.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/va.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/vc.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ve.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/vg.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/vi.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/vn.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/vu.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/wales.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/wf.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ws.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/ye.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/yt.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/za.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/zm.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/img/flags/zw.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/lib/linkbrowser-plugin.js +153 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/nls/fr/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/nls/i18n.js +7 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/nls/pl/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkbrowser/nls/ru/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/demo/index.css +49 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/demo/index.html +82 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/i18n/en.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/proxy.php +244 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/src/linkchecker.css +14 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/linkchecker/src/linkchecker.js +256 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/listenforcer/lib/listenforcer-plugin.js +165 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/README +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/css/metaview.css +86 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/anchor.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/blockquote.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/button.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/caption.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/cite.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/dd.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/div.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/dl.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/dt.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/h1.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/h2.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/h3.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/h4.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/h5.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/h6.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/icon_cite.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/p.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/pre.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/table.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/td.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/img/th.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/lib/metaview-plugin.js +82 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/nls/de.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/nls/en/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/nls/en.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/metaview/nls/i18n.js +5 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/README +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/css/numerated-headers.css +7 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/demo/index.css +189 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/demo/index.html +139 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/demo/js/aloha-config.js +115 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/img/headers.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/lib/numerated-headers-plugin.js +233 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/nls/de/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/nls/en/i18n.js +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/numerated-headers/nls/i18n.js +5 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/profiler/css/profiler.css +34 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/profiler/lib/profiler-plugin.js +285 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/ribbon/LICENSE.md +662 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/ribbon/README.md +8 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/ribbon/css/ribbon.css +10 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/ribbon/lib/ribbon-plugin.js +186 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/ribbon/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/toc/i18n/de.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/toc/i18n/en.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/toc/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/toc/src/toc.js +350 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/vie/LICENSE +22 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/vie/README.markdown +65 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/vie/demo/index.html +93 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/vie/img/cms-decoupled-communications.png +0 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/vie/package.json +1 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/vie/src/backbone-min.js +27 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/vie/src/underscore-min.js +25 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/vie/src/vie-aloha.js +74 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/vie/src/vie-collectionmanager.js +70 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/vie/src/vie-containermanager.js +263 -0
- data/vendor/assets/javascripts/aloha/plugins/extra/vie/src/vie.js +20 -0
- metadata +1105 -0
@@ -0,0 +1,262 @@
|
|
1
|
+
/**
|
2
|
+
* @license RequireJS text 0.26.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
|
3
|
+
* Available via the MIT or new BSD license.
|
4
|
+
* see: http://github.com/jrburke/requirejs for details
|
5
|
+
*/
|
6
|
+
/*jslint regexp: false, nomen: false, plusplus: false, strict: false */
|
7
|
+
/*global require: false, XMLHttpRequest: false, ActiveXObject: false,
|
8
|
+
define: false, window: false, process: false, Packages: false,
|
9
|
+
java: false, location: false */
|
10
|
+
|
11
|
+
(function () {
|
12
|
+
var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'],
|
13
|
+
xmlRegExp = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im,
|
14
|
+
bodyRegExp = /<body[^>]*>\s*([\s\S]+)\s*<\/body>/im,
|
15
|
+
hasLocation = typeof location !== 'undefined' && location.href,
|
16
|
+
buildMap = [];
|
17
|
+
|
18
|
+
define(function () {
|
19
|
+
var text, get, fs;
|
20
|
+
|
21
|
+
if (typeof window !== "undefined" && window.navigator && window.document) {
|
22
|
+
get = function (url, callback) {
|
23
|
+
var xhr = text.createXhr();
|
24
|
+
xhr.open('GET', url, true);
|
25
|
+
xhr.onreadystatechange = function (evt) {
|
26
|
+
//Do not explicitly handle errors, those should be
|
27
|
+
//visible via console output in the browser.
|
28
|
+
if (xhr.readyState === 4) {
|
29
|
+
callback(xhr.responseText);
|
30
|
+
}
|
31
|
+
};
|
32
|
+
xhr.send(null);
|
33
|
+
};
|
34
|
+
} else if (typeof process !== "undefined" &&
|
35
|
+
process.versions &&
|
36
|
+
!!process.versions.node) {
|
37
|
+
//Using special require.nodeRequire, something added by r.js.
|
38
|
+
fs = require.nodeRequire('fs');
|
39
|
+
|
40
|
+
get = function (url, callback) {
|
41
|
+
callback(fs.readFileSync(url, 'utf8'));
|
42
|
+
};
|
43
|
+
} else if (typeof Packages !== 'undefined') {
|
44
|
+
//Why Java, why is this so awkward?
|
45
|
+
get = function (url, callback) {
|
46
|
+
var encoding = "utf-8",
|
47
|
+
file = new java.io.File(url),
|
48
|
+
lineSeparator = java.lang.System.getProperty("line.separator"),
|
49
|
+
input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)),
|
50
|
+
stringBuffer, line,
|
51
|
+
content = '';
|
52
|
+
try {
|
53
|
+
stringBuffer = new java.lang.StringBuffer();
|
54
|
+
line = input.readLine();
|
55
|
+
|
56
|
+
// Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324
|
57
|
+
// http://www.unicode.org/faq/utf_bom.html
|
58
|
+
|
59
|
+
// Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK:
|
60
|
+
// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058
|
61
|
+
if (line && line.length() && line.charAt(0) === 0xfeff) {
|
62
|
+
// Eat the BOM, since we've already found the encoding on this file,
|
63
|
+
// and we plan to concatenating this buffer with others; the BOM should
|
64
|
+
// only appear at the top of a file.
|
65
|
+
line = line.substring(1);
|
66
|
+
}
|
67
|
+
|
68
|
+
stringBuffer.append(line);
|
69
|
+
|
70
|
+
while ((line = input.readLine()) !== null) {
|
71
|
+
stringBuffer.append(lineSeparator);
|
72
|
+
stringBuffer.append(line);
|
73
|
+
}
|
74
|
+
//Make sure we return a JavaScript string and not a Java string.
|
75
|
+
content = String(stringBuffer.toString()); //String
|
76
|
+
} finally {
|
77
|
+
input.close();
|
78
|
+
}
|
79
|
+
callback(content);
|
80
|
+
};
|
81
|
+
}
|
82
|
+
|
83
|
+
text = {
|
84
|
+
version: '0.26.0',
|
85
|
+
|
86
|
+
strip: function (content) {
|
87
|
+
//Strips <?xml ...?> declarations so that external SVG and XML
|
88
|
+
//documents can be added to a document without worry. Also, if the string
|
89
|
+
//is an HTML document, only the part inside the body tag is returned.
|
90
|
+
if (content) {
|
91
|
+
content = content.replace(xmlRegExp, "");
|
92
|
+
var matches = content.match(bodyRegExp);
|
93
|
+
if (matches) {
|
94
|
+
content = matches[1];
|
95
|
+
}
|
96
|
+
} else {
|
97
|
+
content = "";
|
98
|
+
}
|
99
|
+
return content;
|
100
|
+
},
|
101
|
+
|
102
|
+
jsEscape: function (content) {
|
103
|
+
return content.replace(/(['\\])/g, '\\$1')
|
104
|
+
.replace(/[\f]/g, "\\f")
|
105
|
+
.replace(/[\b]/g, "\\b")
|
106
|
+
.replace(/[\n]/g, "\\n")
|
107
|
+
.replace(/[\t]/g, "\\t")
|
108
|
+
.replace(/[\r]/g, "\\r");
|
109
|
+
},
|
110
|
+
|
111
|
+
createXhr: function () {
|
112
|
+
//Would love to dump the ActiveX crap in here. Need IE 6 to die first.
|
113
|
+
var xhr, i, progId;
|
114
|
+
if (typeof XMLHttpRequest !== "undefined") {
|
115
|
+
return new XMLHttpRequest();
|
116
|
+
} else {
|
117
|
+
for (i = 0; i < 3; i++) {
|
118
|
+
progId = progIds[i];
|
119
|
+
try {
|
120
|
+
xhr = new ActiveXObject(progId);
|
121
|
+
} catch (e) {}
|
122
|
+
|
123
|
+
if (xhr) {
|
124
|
+
progIds = [progId]; // so faster next time
|
125
|
+
break;
|
126
|
+
}
|
127
|
+
}
|
128
|
+
}
|
129
|
+
|
130
|
+
if (!xhr) {
|
131
|
+
throw new Error("createXhr(): XMLHttpRequest not available");
|
132
|
+
}
|
133
|
+
|
134
|
+
return xhr;
|
135
|
+
},
|
136
|
+
|
137
|
+
get: get,
|
138
|
+
|
139
|
+
/**
|
140
|
+
* Parses a resource name into its component parts. Resource names
|
141
|
+
* look like: module/name.ext!strip, where the !strip part is
|
142
|
+
* optional.
|
143
|
+
* @param {String} name the resource name
|
144
|
+
* @returns {Object} with properties "moduleName", "ext" and "strip"
|
145
|
+
* where strip is a boolean.
|
146
|
+
*/
|
147
|
+
parseName: function (name) {
|
148
|
+
var strip = false, index = name.indexOf("."),
|
149
|
+
modName = name.substring(0, index),
|
150
|
+
ext = name.substring(index + 1, name.length);
|
151
|
+
|
152
|
+
index = ext.indexOf("!");
|
153
|
+
if (index !== -1) {
|
154
|
+
//Pull off the strip arg.
|
155
|
+
strip = ext.substring(index + 1, ext.length);
|
156
|
+
strip = strip === "strip";
|
157
|
+
ext = ext.substring(0, index);
|
158
|
+
}
|
159
|
+
|
160
|
+
return {
|
161
|
+
moduleName: modName,
|
162
|
+
ext: ext,
|
163
|
+
strip: strip
|
164
|
+
};
|
165
|
+
},
|
166
|
+
|
167
|
+
xdRegExp: /^((\w+)\:)?\/\/([^\/\\]+)/,
|
168
|
+
|
169
|
+
/**
|
170
|
+
* Is an URL on another domain. Only works for browser use, returns
|
171
|
+
* false in non-browser environments. Only used to know if an
|
172
|
+
* optimized .js version of a text resource should be loaded
|
173
|
+
* instead.
|
174
|
+
* @param {String} url
|
175
|
+
* @returns Boolean
|
176
|
+
*/
|
177
|
+
canUseXhr: function (url, protocol, hostname, port) {
|
178
|
+
var match = text.xdRegExp.exec(url),
|
179
|
+
uProtocol, uHostName, uPort;
|
180
|
+
if (!match) {
|
181
|
+
return true;
|
182
|
+
}
|
183
|
+
uProtocol = match[2];
|
184
|
+
uHostName = match[3];
|
185
|
+
|
186
|
+
uHostName = uHostName.split(':');
|
187
|
+
uPort = uHostName[1];
|
188
|
+
uHostName = uHostName[0];
|
189
|
+
|
190
|
+
return (!uProtocol || uProtocol === protocol) &&
|
191
|
+
(!uHostName || uHostName === hostname) &&
|
192
|
+
((!uPort && !uHostName) || uPort === port);
|
193
|
+
},
|
194
|
+
|
195
|
+
finishLoad: function (name, strip, content, onLoad, config) {
|
196
|
+
content = strip ? text.strip(content) : content;
|
197
|
+
if (config.isBuild && config.inlineText) {
|
198
|
+
buildMap[name] = content;
|
199
|
+
}
|
200
|
+
onLoad(content);
|
201
|
+
},
|
202
|
+
|
203
|
+
load: function (name, req, onLoad, config) {
|
204
|
+
//Name has format: some.module.filext!strip
|
205
|
+
//The strip part is optional.
|
206
|
+
//if strip is present, then that means only get the string contents
|
207
|
+
//inside a body tag in an HTML string. For XML/SVG content it means
|
208
|
+
//removing the <?xml ...?> declarations so the content can be inserted
|
209
|
+
//into the current doc without problems.
|
210
|
+
|
211
|
+
var parsed = text.parseName(name),
|
212
|
+
nonStripName = parsed.moduleName + '.' + parsed.ext,
|
213
|
+
url = req.toUrl(nonStripName);
|
214
|
+
|
215
|
+
//Load the text. Use XHR if possible and in a browser.
|
216
|
+
if (!hasLocation || text.canUseXhr(url)) {
|
217
|
+
text.get(url, function (content) {
|
218
|
+
text.finishLoad(name, parsed.strip, content, onLoad, config);
|
219
|
+
});
|
220
|
+
} else {
|
221
|
+
//Need to fetch the resource across domains. Assume
|
222
|
+
//the resource has been optimized into a JS module. Fetch
|
223
|
+
//by the module name + extension, but do not include the
|
224
|
+
//!strip part to avoid file system issues.
|
225
|
+
req([nonStripName], function (content) {
|
226
|
+
text.finishLoad(parsed.moduleName + '.' + parsed.ext,
|
227
|
+
parsed.strip, content, onLoad, config);
|
228
|
+
});
|
229
|
+
}
|
230
|
+
},
|
231
|
+
|
232
|
+
write: function (pluginName, moduleName, write, config) {
|
233
|
+
if (moduleName in buildMap) {
|
234
|
+
var content = text.jsEscape(buildMap[moduleName]);
|
235
|
+
write("define('" + pluginName + "!" + moduleName +
|
236
|
+
"', function () { return '" + content + "';});\n");
|
237
|
+
}
|
238
|
+
},
|
239
|
+
|
240
|
+
writeFile: function (pluginName, moduleName, req, write, config) {
|
241
|
+
var parsed = text.parseName(moduleName),
|
242
|
+
nonStripName = parsed.moduleName + '.' + parsed.ext,
|
243
|
+
//Use a '.js' file name so that it indicates it is a
|
244
|
+
//script that can be loaded across domains.
|
245
|
+
fileName = req.toUrl(parsed.moduleName + '.' +
|
246
|
+
parsed.ext) + '.js';
|
247
|
+
|
248
|
+
//Leverage own load() method to load plugin value, but only
|
249
|
+
//write out values that do not have the strip argument,
|
250
|
+
//to avoid any potential issues with ! in file names.
|
251
|
+
text.load(nonStripName, req, function (value) {
|
252
|
+
//Use own write() method to construct full module value.
|
253
|
+
text.write(pluginName, nonStripName, function (contents) {
|
254
|
+
write(fileName, contents);
|
255
|
+
}, config);
|
256
|
+
}, config);
|
257
|
+
}
|
258
|
+
};
|
259
|
+
|
260
|
+
return text;
|
261
|
+
});
|
262
|
+
}());
|
@@ -0,0 +1,80 @@
|
|
1
|
+
/* Simple JavaScript Inheritance
|
2
|
+
* By John Resig http://ejohn.org/
|
3
|
+
* MIT Licensed.
|
4
|
+
*/
|
5
|
+
// Inspired by base2 and Prototype
|
6
|
+
/*
|
7
|
+
* MODIFICATIONS:
|
8
|
+
* * The name of the "constructor" method was changed from "init" to "_constructor"
|
9
|
+
* * Mixin Support using https://gist.github.com/1006243
|
10
|
+
* * Modified to be a require.js module
|
11
|
+
*/
|
12
|
+
define(
|
13
|
+
[],
|
14
|
+
function(){
|
15
|
+
var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
|
16
|
+
|
17
|
+
// The base Class implementation (does nothing)
|
18
|
+
// with doing that Class is available in the global namespace.
|
19
|
+
this.Class = function(){};
|
20
|
+
|
21
|
+
// Create a new Class that inherits from this class
|
22
|
+
Class.extend = function() {
|
23
|
+
var _super = this.prototype;
|
24
|
+
|
25
|
+
// Instantiate a base class (but only create the instance,
|
26
|
+
// don't run the init constructor)
|
27
|
+
initializing = true;
|
28
|
+
var prototype = new this();
|
29
|
+
initializing = false;
|
30
|
+
|
31
|
+
// Copy the properties over onto the new prototype
|
32
|
+
for(var i = 0; i < arguments.length; i++) {
|
33
|
+
var prop = arguments[i];
|
34
|
+
for (var name in prop) {
|
35
|
+
// Check if we're overwriting an existing function
|
36
|
+
prototype[name] = typeof prop[name] == "function" &&
|
37
|
+
typeof _super[name] == "function" && fnTest.test(prop[name]) ?
|
38
|
+
(function(name, fn){
|
39
|
+
return function() {
|
40
|
+
var tmp = this._super;
|
41
|
+
|
42
|
+
// Add a new ._super() method that is the same method
|
43
|
+
// but on the super-class
|
44
|
+
this._super = _super[name];
|
45
|
+
|
46
|
+
// The method only need to be bound temporarily, so we
|
47
|
+
// remove it when we're done executing
|
48
|
+
var ret = fn.apply(this, arguments);
|
49
|
+
this._super = tmp;
|
50
|
+
|
51
|
+
return ret;
|
52
|
+
};
|
53
|
+
})(name, prop[name]) :
|
54
|
+
prop[name];
|
55
|
+
}
|
56
|
+
}
|
57
|
+
|
58
|
+
// The dummy class constructor
|
59
|
+
function Class() {
|
60
|
+
// All construction is actually done in the _constructor method
|
61
|
+
if ( !initializing && this._constructor )
|
62
|
+
this._constructor.apply(this, arguments);
|
63
|
+
}
|
64
|
+
|
65
|
+
// Populate our constructed prototype object
|
66
|
+
Class.prototype = prototype;
|
67
|
+
|
68
|
+
// Enforce the constructor to be what we expect
|
69
|
+
Class.constructor = Class;
|
70
|
+
|
71
|
+
// And make this class extendable
|
72
|
+
Class.extend = arguments.callee;
|
73
|
+
|
74
|
+
return Class;
|
75
|
+
|
76
|
+
};
|
77
|
+
|
78
|
+
return this.Class;
|
79
|
+
|
80
|
+
});
|
@@ -0,0 +1,1673 @@
|
|
1
|
+
/*!
|
2
|
+
* This file is part of Aloha Editor Project http://aloha-editor.org
|
3
|
+
* Copyright © 2010-2011 Gentics Software GmbH, aloha@gentics.com
|
4
|
+
* Contributors http://aloha-editor.org/contribution.php
|
5
|
+
* Licensed unter the terms of http://www.aloha-editor.org/license.html
|
6
|
+
*//*
|
7
|
+
* Aloha Editor is free software: you can redistribute it and/or modify
|
8
|
+
* it under the terms of the GNU Affero General Public License as published by
|
9
|
+
* the Free Software Foundation, either version 3 of the License, or
|
10
|
+
* (at your option) any later version.*
|
11
|
+
*
|
12
|
+
* Aloha Editor is distributed in the hope that it will be useful,
|
13
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
* GNU Affero General Public License for more details.
|
16
|
+
*
|
17
|
+
* You should have received a copy of the GNU Affero General Public License
|
18
|
+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
19
|
+
*/
|
20
|
+
|
21
|
+
// Ensure GENTICS Namespace
|
22
|
+
GENTICS = window.GENTICS || {};
|
23
|
+
GENTICS.Utils = GENTICS.Utils || {};
|
24
|
+
|
25
|
+
define(
|
26
|
+
['aloha/jquery', 'util/class', 'aloha/ecma5shims'],
|
27
|
+
function(jQuery, Class, $_) {
|
28
|
+
|
29
|
+
|
30
|
+
var
|
31
|
+
GENTICS = window.GENTICS,
|
32
|
+
// Class = window.Class,
|
33
|
+
// http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1841493061
|
34
|
+
Node = {
|
35
|
+
'ELEMENT_NODE' : 1,
|
36
|
+
'ATTRIBUTE_NODE': 2,
|
37
|
+
'TEXT_NODE': 3,
|
38
|
+
'CDATA_SECTION_NODE': 4,
|
39
|
+
'ENTITY_REFERENCE_NODE': 5,
|
40
|
+
'ENTITY_NODE': 6,
|
41
|
+
'PROCESSING_INSTRUCTION_NODE': 7,
|
42
|
+
'COMMENT_NODE': 8,
|
43
|
+
'DOCUMENT_NODE': 9,
|
44
|
+
'DOCUMENT_TYPE_NODE': 10,
|
45
|
+
'DOCUMENT_FRAGMENT_NODE': 11,
|
46
|
+
'NOTATION_NODE': 12,
|
47
|
+
//The two nodes are disconnected. Order between disconnected nodes is always implementation-specific.
|
48
|
+
'DOCUMENT_POSITION_DISCONNECTED': 0x01,
|
49
|
+
//The second node precedes the reference node.
|
50
|
+
'DOCUMENT_POSITION_PRECEDING': 0x02,
|
51
|
+
//The node follows the reference node.
|
52
|
+
'DOCUMENT_POSITION_FOLLOWING': 0x04,
|
53
|
+
//The node contains the reference node. A node which contains is always preceding, too.
|
54
|
+
'DOCUMENT_POSITION_CONTAINS': 0x08,
|
55
|
+
//The node is contained by the reference node. A node which is contained is always following, too.
|
56
|
+
'DOCUMENT_POSITION_CONTAINED_BY': 0x10,
|
57
|
+
//The determination of preceding versus following is implementation-specific.
|
58
|
+
'DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC': 0x20
|
59
|
+
};
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
/**
|
64
|
+
* @namespace GENTICS.Utils
|
65
|
+
* @class Dom provides methods to get information about the DOM and to manipulate it
|
66
|
+
* @singleton
|
67
|
+
*/
|
68
|
+
var Dom = Class.extend({
|
69
|
+
/**
|
70
|
+
* Regex to find word characters.
|
71
|
+
*/
|
72
|
+
wordRegex: /[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0525\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0621-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971\u0972\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3D\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8B\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u2094\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCB\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA65F\uA662-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B\uA78C\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA2D\uFA30-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Regex to find non-word characters.
|
76
|
+
*/
|
77
|
+
nonWordRegex: /[^\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0525\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0621-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971\u0972\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3D\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8B\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u2094\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31B7\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCB\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA65F\uA662-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B\uA78C\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA2D\uFA30-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
|
78
|
+
|
79
|
+
/**
|
80
|
+
* Tags which can safely be merged
|
81
|
+
* @hide
|
82
|
+
*/
|
83
|
+
mergeableTags: ['b', 'code', 'del', 'em', 'i', 'ins', 'strong', 'sub', 'sup', '#text'],
|
84
|
+
|
85
|
+
/**
|
86
|
+
* Tags which do not mark word boundaries
|
87
|
+
* @hide
|
88
|
+
*/
|
89
|
+
nonWordBoundaryTags: ['a', 'b', 'code', 'del', 'em', 'i', 'ins', 'span', 'strong', 'sub', 'sup', '#text'],
|
90
|
+
|
91
|
+
/**
|
92
|
+
* Tags which are considered 'nonempty', even if they have no children (or not data)
|
93
|
+
* TODO: finish this list
|
94
|
+
* @hide
|
95
|
+
*/
|
96
|
+
nonEmptyTags: ['br'],
|
97
|
+
|
98
|
+
/**
|
99
|
+
* Tags which make up Flow Content or Phrasing Content, according to the HTML 5 specification,
|
100
|
+
* @see http://dev.w3.org/html5/spec/Overview.html#flow-content
|
101
|
+
* @see http://dev.w3.org/html5/spec/Overview.html#phrasing-content
|
102
|
+
* @hide
|
103
|
+
*/
|
104
|
+
tags: {
|
105
|
+
'flow' : [ 'a', 'abbr', 'address', 'area', 'article', 'aside', 'audio',
|
106
|
+
'b', 'bdo', 'blockquote', 'br', 'button', 'canvas', 'cite', 'code',
|
107
|
+
'command', 'datalist', 'del', 'details', 'dfn', 'div', 'dl', 'em',
|
108
|
+
'embed', 'fieldset', 'figure', 'footer', 'form', 'h1', 'h2', 'h3',
|
109
|
+
'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'i', 'iframe', 'img',
|
110
|
+
'input', 'ins', 'kbd', 'keygen', 'label', 'map', 'mark', 'math',
|
111
|
+
'menu', 'meter', 'nav', 'noscript', 'object', 'ol', 'output', 'p',
|
112
|
+
'pre', 'progress', 'q', 'ruby', 'samp', 'script', 'section',
|
113
|
+
'select', 'small', 'span', 'strong', 'style', 'sub', 'sup', 'svg',
|
114
|
+
'table', 'textarea', 'time', 'ul', 'var', 'video', 'wbr', '#text' ],
|
115
|
+
'phrasing' : [ 'a', 'abbr', 'area', 'audio', 'b', 'bdo', 'br', 'button',
|
116
|
+
'canvas', 'cite', 'code', 'command', 'datalist', 'del', 'dfn',
|
117
|
+
'em', 'embed', 'i', 'iframe', 'img', 'input', 'ins', 'kbd',
|
118
|
+
'keygen', 'label', 'map', 'mark', 'math', 'meter', 'noscript',
|
119
|
+
'object', 'output', 'progress', 'q', 'ruby', 'samp', 'script',
|
120
|
+
'select', 'small', 'span', 'strong', 'sub', 'sup', 'svg',
|
121
|
+
'textarea', 'time', 'var', 'video', 'wbr', '#text' ]
|
122
|
+
},
|
123
|
+
|
124
|
+
/**
|
125
|
+
* Possible children of tags, according to the HTML 5
|
126
|
+
* specification.
|
127
|
+
* See http://dev.w3.org/html5/spec/Overview.html#elements-1
|
128
|
+
* Moved to http://www.whatwg.org/specs/web-apps/current-work/#elements-1
|
129
|
+
* @hide
|
130
|
+
*/
|
131
|
+
children: {
|
132
|
+
'a' : 'phrasing', // transparent
|
133
|
+
'abbr' : 'phrasing',
|
134
|
+
'address' : 'flow',
|
135
|
+
'area' : 'empty',
|
136
|
+
'article' : 'flow',
|
137
|
+
'aside' : 'flow',
|
138
|
+
'audio' : 'source', // transparent
|
139
|
+
'b' : 'phrasing',
|
140
|
+
'base' : 'empty',
|
141
|
+
'bdo' : 'phrasing',
|
142
|
+
'blockquote' : 'phrasing',
|
143
|
+
'body' : 'flow',
|
144
|
+
'br' : 'empty',
|
145
|
+
'button' : 'phrasing',
|
146
|
+
'canvas' : 'phrasing', // transparent
|
147
|
+
'caption' : 'flow',
|
148
|
+
'cite' : 'phrasing',
|
149
|
+
'code' : 'phrasing',
|
150
|
+
'col' : 'empty',
|
151
|
+
'colgroup' : 'col',
|
152
|
+
'command' : 'empty',
|
153
|
+
'datalist' : ['phrasing', 'option'],
|
154
|
+
'dd' : 'flow',
|
155
|
+
'del' : 'phrasing',
|
156
|
+
'div' : 'flow',
|
157
|
+
'details' : ['summary', 'flow'],
|
158
|
+
'dfn' : 'flow',
|
159
|
+
'dl' : ['dt','dd'],
|
160
|
+
'dt' : 'phrasing', // varies
|
161
|
+
'em' : 'phrasing',
|
162
|
+
'embed' : 'empty',
|
163
|
+
'fieldset' : ['legend', 'flow'],
|
164
|
+
'figcaption': 'flow',
|
165
|
+
'figure' : ['figcaption', 'flow'],
|
166
|
+
'footer' : 'flow',
|
167
|
+
'form' : 'flow',
|
168
|
+
'h1' : 'phrasing',
|
169
|
+
'h2' : 'phrasing',
|
170
|
+
'h3' : 'phrasing',
|
171
|
+
'h4' : 'phrasing',
|
172
|
+
'h5' : 'phrasing',
|
173
|
+
'h6' : 'phrasing',
|
174
|
+
//head
|
175
|
+
'header' : 'flow',
|
176
|
+
'hgroup' : ['h1','h2','h3','h4','h5','h6'],
|
177
|
+
'hr' : 'empty',
|
178
|
+
//html :)
|
179
|
+
'i' : 'phrasing',
|
180
|
+
'iframe' : '#text',
|
181
|
+
'img' : 'empty',
|
182
|
+
'input' : 'empty',
|
183
|
+
'ins' : 'phrasing', // transparent
|
184
|
+
'kbd' : 'phrasing',
|
185
|
+
'keygen' : 'empty',
|
186
|
+
'label' : 'phrasing',
|
187
|
+
'legend' : 'phrasing',
|
188
|
+
'li' : 'flow',
|
189
|
+
'link' : 'empty',
|
190
|
+
'map' : 'area', // transparent
|
191
|
+
'mark' : 'phrasing',
|
192
|
+
'menu' : ['li', 'flow'],
|
193
|
+
'meta' : 'empty',
|
194
|
+
'meter' : 'phrasing',
|
195
|
+
'nav' : 'flow',
|
196
|
+
'noscript' : 'phrasing', // varies
|
197
|
+
'object' : 'param', // transparent
|
198
|
+
'ol' : 'li',
|
199
|
+
'optgroup' : 'option',
|
200
|
+
'option' : '#text',
|
201
|
+
'output' : 'phrasing',
|
202
|
+
'p' : 'phrasing',
|
203
|
+
'param' : 'empty',
|
204
|
+
'pre' : 'phrasing',
|
205
|
+
'progress' : 'phrasing',
|
206
|
+
'q' : 'phrasing',
|
207
|
+
'rp' : 'phrasing',
|
208
|
+
'rt' : 'phrasing',
|
209
|
+
'ruby' : ['phrasing', 'rt', 'rp'],
|
210
|
+
's' : 'phrasing',
|
211
|
+
'samp' : 'pharsing',
|
212
|
+
'script' : '#script', //script
|
213
|
+
'section' : 'flow',
|
214
|
+
'select' : ['option', 'optgroup'],
|
215
|
+
'small' : 'phrasing',
|
216
|
+
'source' : 'empty',
|
217
|
+
'span' : 'phrasing',
|
218
|
+
'strong' : 'phrasing',
|
219
|
+
'style' : 'phrasing', // varies
|
220
|
+
'sub' : 'phrasing',
|
221
|
+
'summary' : 'phrasing',
|
222
|
+
'sup' : 'phrasing',
|
223
|
+
'table' : ['caption', 'colgroup', 'thead', 'tbody', 'tfoot', 'tr'],
|
224
|
+
'tbody' : 'tr',
|
225
|
+
'td' : 'flow',
|
226
|
+
'textarea' : '#text',
|
227
|
+
'tfoot' : 'tr',
|
228
|
+
'th' : 'phrasing',
|
229
|
+
'thead' : 'tr',
|
230
|
+
'time' : 'phrasing',
|
231
|
+
'title' : '#text',
|
232
|
+
'tr' : ['th', 'td'],
|
233
|
+
'track' : 'empty',
|
234
|
+
'ul' : 'li',
|
235
|
+
'var' : 'phrasing',
|
236
|
+
'video' : 'source', // transparent
|
237
|
+
'wbr' : 'empty'
|
238
|
+
},
|
239
|
+
|
240
|
+
/**
|
241
|
+
* List of nodenames of blocklevel elements
|
242
|
+
* TODO: finish this list
|
243
|
+
* @hide
|
244
|
+
*/
|
245
|
+
blockLevelElements: ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote', 'div', 'pre'],
|
246
|
+
|
247
|
+
/**
|
248
|
+
* List of nodenames of list elements
|
249
|
+
* @hide
|
250
|
+
*/
|
251
|
+
listElements: ['li', 'ol', 'ul'],
|
252
|
+
|
253
|
+
/**
|
254
|
+
* Splits a DOM element at the given position up until the limiting object(s), so that it is valid HTML again afterwards.
|
255
|
+
* @param {RangeObject} range Range object that indicates the position of the splitting.
|
256
|
+
* This range will be updated, so that it represents the same range as before the split.
|
257
|
+
* @param {jQuery} limit Limiting node(s) for the split.
|
258
|
+
* The limiting node will not be included in the split itself.
|
259
|
+
* If no limiting object is set, the document body will be the limiting object.
|
260
|
+
* @param {boolean} atEnd If set to true, the DOM will be splitted at the end of the range otherwise at the start.
|
261
|
+
* @return {object} jQuery object containing the two root DOM objects of the split, true if the DOM did not need to be split or false if the DOM could not be split
|
262
|
+
* @method
|
263
|
+
*/
|
264
|
+
split: function (range, limit, atEnd) {
|
265
|
+
var
|
266
|
+
splitElement = jQuery(range.startContainer),
|
267
|
+
splitPosition = range.startOffset,
|
268
|
+
updateRange, path, parents,
|
269
|
+
newDom, insertElement, secondPart,
|
270
|
+
i, pathLength, element, jqelement, children, newElement,
|
271
|
+
next, prev, offset;
|
272
|
+
|
273
|
+
|
274
|
+
if (atEnd) {
|
275
|
+
splitElement = jQuery(range.endContainer);
|
276
|
+
splitPosition = range.endOffset;
|
277
|
+
}
|
278
|
+
|
279
|
+
if (limit.length < 1) {
|
280
|
+
limit = jQuery(document.body);
|
281
|
+
}
|
282
|
+
|
283
|
+
// we may have to update the range if it is not collapsed and we are splitting at the start
|
284
|
+
updateRange = (!range.isCollapsed() && !atEnd);
|
285
|
+
|
286
|
+
// find the path up to the highest object that will be splitted
|
287
|
+
parents = splitElement.parents().get();
|
288
|
+
parents.unshift(splitElement.get(0));
|
289
|
+
|
290
|
+
jQuery.each(parents, function(index, element) {
|
291
|
+
var isLimit = limit.filter(
|
292
|
+
function(){
|
293
|
+
return this == element;
|
294
|
+
}).length;
|
295
|
+
if (isLimit) {
|
296
|
+
if (index > 0) {
|
297
|
+
path = parents.slice(0, index);
|
298
|
+
}
|
299
|
+
return false;
|
300
|
+
}
|
301
|
+
});
|
302
|
+
|
303
|
+
// nothing found to split -> return here
|
304
|
+
if (! path) {
|
305
|
+
return true;
|
306
|
+
}
|
307
|
+
|
308
|
+
path = path.reverse();
|
309
|
+
|
310
|
+
// iterate over the path, create new dom nodes for every element and move
|
311
|
+
// the contents right of the split to the new element
|
312
|
+
for( i=0, pathLength = path.length; i < pathLength; ++i) {
|
313
|
+
element = path[i];
|
314
|
+
if (i === pathLength - 1) {
|
315
|
+
// last element in the path -> we have to split it
|
316
|
+
|
317
|
+
// split the last part into two parts
|
318
|
+
if (element.nodeType === 3) {
|
319
|
+
// text node
|
320
|
+
secondPart = document.createTextNode(element.data.substring(splitPosition, element.data.length));
|
321
|
+
element.data = element.data.substring(0, splitPosition);
|
322
|
+
} else {
|
323
|
+
// other nodes
|
324
|
+
jqelement = jQuery(element);
|
325
|
+
children = jqelement.contents();
|
326
|
+
newElement = jqelement.clone(false).empty();
|
327
|
+
secondPart = newElement.append(children.slice(splitPosition, children.length)).get(0);
|
328
|
+
}
|
329
|
+
|
330
|
+
// update the range if necessary
|
331
|
+
if (updateRange && range.endContainer === element) {
|
332
|
+
range.endContainer = secondPart;
|
333
|
+
range.endOffset -= splitPosition;
|
334
|
+
range.clearCaches();
|
335
|
+
}
|
336
|
+
|
337
|
+
// add the second part
|
338
|
+
if (insertElement) {
|
339
|
+
insertElement.prepend(secondPart);
|
340
|
+
} else {
|
341
|
+
jQuery(element).after(secondPart);
|
342
|
+
}
|
343
|
+
} else {
|
344
|
+
// create the new element of the same type and prepend it to the previously created element
|
345
|
+
newElement = jQuery(element).clone(false).empty();
|
346
|
+
|
347
|
+
if (!newDom) {
|
348
|
+
newDom = newElement;
|
349
|
+
} else {
|
350
|
+
insertElement.prepend(newElement);
|
351
|
+
}
|
352
|
+
insertElement = newElement;
|
353
|
+
|
354
|
+
// move all contents right of the split to the new element
|
355
|
+
while ( true ) {
|
356
|
+
next = path[i+1].nextSibling;
|
357
|
+
if ( !next ) { break; }
|
358
|
+
insertElement.append(next);
|
359
|
+
}
|
360
|
+
|
361
|
+
// update the range if necessary
|
362
|
+
if (updateRange && range.endContainer === element) {
|
363
|
+
range.endContainer = newElement.get(0);
|
364
|
+
prev = path[i+1];
|
365
|
+
offset = 0;
|
366
|
+
while ( true ) {
|
367
|
+
prev = prev.previousSibling;
|
368
|
+
if ( !prev ) { break; }
|
369
|
+
offset++;
|
370
|
+
}
|
371
|
+
range.endOffset -= offset;
|
372
|
+
range.clearCaches();
|
373
|
+
}
|
374
|
+
}
|
375
|
+
}
|
376
|
+
|
377
|
+
// append the new dom
|
378
|
+
jQuery(path[0]).after(newDom);
|
379
|
+
|
380
|
+
return jQuery([path[0], newDom ? newDom.get(0) : secondPart]);
|
381
|
+
},
|
382
|
+
|
383
|
+
/**
|
384
|
+
* Check whether the HTML 5 specification allows direct nesting of the given DOM
|
385
|
+
* objects.
|
386
|
+
* @param {object} outerDOMObject
|
387
|
+
* outer (nesting) DOM Object
|
388
|
+
* @param {object} innerDOMObject
|
389
|
+
* inner (nested) DOM Object
|
390
|
+
* @return {boolean} true when the nesting is allowed, false if not
|
391
|
+
* @method
|
392
|
+
*/
|
393
|
+
allowsNesting: function (outerDOMObject, innerDOMObject) {
|
394
|
+
if (!outerDOMObject || !outerDOMObject.nodeName || !innerDOMObject
|
395
|
+
|| !innerDOMObject.nodeName) {
|
396
|
+
return false;
|
397
|
+
}
|
398
|
+
|
399
|
+
var outerNodeName = outerDOMObject.nodeName.toLowerCase(),
|
400
|
+
innerNodeName = innerDOMObject.nodeName.toLowerCase();
|
401
|
+
|
402
|
+
if (!this.children[outerNodeName]) {
|
403
|
+
return false;
|
404
|
+
}
|
405
|
+
|
406
|
+
// check whether the nesting is configured by node names (like for table)
|
407
|
+
if (this.children[outerNodeName] == innerNodeName) {
|
408
|
+
return true;
|
409
|
+
}
|
410
|
+
if (jQuery.isArray(this.children[outerNodeName])
|
411
|
+
&& jQuery.inArray(innerNodeName, this.children[outerNodeName]) >= 0) {
|
412
|
+
return true;
|
413
|
+
}
|
414
|
+
|
415
|
+
if (jQuery.isArray(this.tags[this.children[outerNodeName]])
|
416
|
+
&& jQuery.inArray(innerNodeName,
|
417
|
+
this.tags[this.children[outerNodeName]]) >= 0) {
|
418
|
+
return true;
|
419
|
+
}
|
420
|
+
|
421
|
+
return false;
|
422
|
+
},
|
423
|
+
|
424
|
+
/**
|
425
|
+
* Apply the given markup additively to the given range. The given rangeObject will be modified if necessary
|
426
|
+
* @param {GENTICS.Utils.RangeObject} rangeObject range to which the markup shall be added
|
427
|
+
* @param {jQuery} markup markup to be applied as jQuery object
|
428
|
+
* @param {boolean} allownesting true when nesting of the added markup is allowed, false if not (default: false)
|
429
|
+
* @method
|
430
|
+
*/
|
431
|
+
addMarkup: function (rangeObject, markup, nesting) {
|
432
|
+
// split partially contained text nodes at the start and end of the range
|
433
|
+
if (rangeObject.startContainer.nodeType === 3 && rangeObject.startOffset > 0
|
434
|
+
&& rangeObject.startOffset < rangeObject.startContainer.data.length) {
|
435
|
+
this.split(rangeObject, jQuery(rangeObject.startContainer).parent(),
|
436
|
+
false);
|
437
|
+
}
|
438
|
+
if (rangeObject.endContainer.nodeType === 3 && rangeObject.endOffset > 0
|
439
|
+
&& rangeObject.endOffset < rangeObject.endContainer.data.length) {
|
440
|
+
this.split(rangeObject, jQuery(rangeObject.endContainer).parent(),
|
441
|
+
true);
|
442
|
+
}
|
443
|
+
|
444
|
+
// get the range tree
|
445
|
+
var rangeTree = rangeObject.getRangeTree();
|
446
|
+
this.recursiveAddMarkup(rangeTree, markup, rangeObject, nesting);
|
447
|
+
|
448
|
+
// cleanup DOM
|
449
|
+
this.doCleanup({'merge' : true, 'removeempty' : true}, rangeObject);
|
450
|
+
},
|
451
|
+
|
452
|
+
/**
|
453
|
+
* Recursive helper method to add the given markup to the range
|
454
|
+
* @param rangeTree rangetree at the current level
|
455
|
+
* @param markup markup to be applied
|
456
|
+
* @param rangeObject range object, which eventually is updated
|
457
|
+
* @param nesting true when nesting of the added markup is allowed, false if not
|
458
|
+
* @hide
|
459
|
+
*/
|
460
|
+
recursiveAddMarkup: function (rangeTree, markup, rangeObject, nesting) {
|
461
|
+
var i, innerRange, rangeLength;
|
462
|
+
|
463
|
+
// iterate through all rangetree objects of that level
|
464
|
+
for ( i = 0, rangeLength = rangeTree.length; i < rangeLength; ++i) {
|
465
|
+
// check whether the rangetree object is fully contained and the markup may be wrapped around the object
|
466
|
+
if (rangeTree[i].type == 'full' && this.allowsNesting(markup.get(0), rangeTree[i].domobj)) {
|
467
|
+
// we wrap the object, when
|
468
|
+
// 1. nesting of markup is allowed or the node is not of the markup to be added
|
469
|
+
// 2. the node an element node or a non-empty text node
|
470
|
+
if ((nesting || rangeTree[i].domobj.nodeName != markup.get(0).nodeName)
|
471
|
+
&& (rangeTree[i].domobj.nodeType !== 3 || jQuery
|
472
|
+
.trim(rangeTree[i].domobj.data).length !== 0)) {
|
473
|
+
// wrap the object
|
474
|
+
jQuery(rangeTree[i].domobj).wrap(markup);
|
475
|
+
|
476
|
+
// TODO eventually update the range (if it changed)
|
477
|
+
|
478
|
+
// when nesting is not allowed, we remove the markup from the inner element
|
479
|
+
if (!nesting && rangeTree[i].domobj.nodeType !== 3) {
|
480
|
+
innerRange = new GENTICS.Utils.RangeObject();
|
481
|
+
innerRange.startContainer = innerRange.endContainer = rangeTree[i].domobj.parentNode;
|
482
|
+
innerRange.startOffset = 0;
|
483
|
+
innerRange.endOffset = innerRange.endContainer.childNodes.length;
|
484
|
+
this.removeMarkup(innerRange, markup, jQuery(rangeTree[i].domobj.parentNode));
|
485
|
+
}
|
486
|
+
}
|
487
|
+
} else {
|
488
|
+
// TODO check whether the object may be replaced by the given markup
|
489
|
+
if (false) {
|
490
|
+
// TODO replace
|
491
|
+
} else {
|
492
|
+
// recurse into the children (if any), but not if nesting is not
|
493
|
+
// allowed and the object is of the markup to be added
|
494
|
+
if ((nesting || (rangeTree[i].domobj && rangeTree[i].domobj.nodeName !== markup.get(0).nodeName))
|
495
|
+
&& rangeTree[i].children && rangeTree[i].children.length > 0) {
|
496
|
+
this.recursiveAddMarkup(rangeTree[i].children, markup);
|
497
|
+
}
|
498
|
+
}
|
499
|
+
}
|
500
|
+
}
|
501
|
+
},
|
502
|
+
|
503
|
+
/**
|
504
|
+
* Find the highest occurrence of a node with given nodename within the parents
|
505
|
+
* of the start. When limit objects are given, the search stops there.
|
506
|
+
* The limiting object is of the found type, it won't be considered
|
507
|
+
* @param {DOMObject} start start object
|
508
|
+
* @param {String} nodeName name of the node to search for (case-insensitive)
|
509
|
+
* @param {jQuery} limit Limiting node(s) as jQuery object (if none given, the search will stop when there are no more parents)
|
510
|
+
* @return {DOMObject} the found DOM object or undefined
|
511
|
+
* @method
|
512
|
+
*/
|
513
|
+
findHighestElement: function (start, nodeName, limit) {
|
514
|
+
nodeName = nodeName.toLowerCase();
|
515
|
+
|
516
|
+
// this will be the highest found markup object (up to a limit object)
|
517
|
+
var highestObject,
|
518
|
+
// blah
|
519
|
+
testObject = start,
|
520
|
+
// helper function to stop when we reach a limit object
|
521
|
+
isLimit = limit ? function () {
|
522
|
+
return limit.filter(
|
523
|
+
function() {
|
524
|
+
return testObject == this;
|
525
|
+
}
|
526
|
+
).length;
|
527
|
+
} : function () {
|
528
|
+
return false;
|
529
|
+
};
|
530
|
+
|
531
|
+
// now get the highest parent that has the given markup (until we reached
|
532
|
+
// one of the limit objects or there are no more parent nodes)
|
533
|
+
while (!isLimit() && testObject) {
|
534
|
+
if (testObject.nodeName.toLowerCase() === nodeName) {
|
535
|
+
highestObject = testObject;
|
536
|
+
}
|
537
|
+
testObject = testObject.parentNode;
|
538
|
+
}
|
539
|
+
|
540
|
+
return highestObject;
|
541
|
+
},
|
542
|
+
|
543
|
+
/**
|
544
|
+
* Remove the given markup from the given range. The given rangeObject will be modified if necessary
|
545
|
+
* TODO: add parameter deep/shallow
|
546
|
+
* @param {GENTICS.Utils.RangeObject} rangeObject range from which the markup shall be removed
|
547
|
+
* @param {jQuery} markup markup to be removed as jQuery object
|
548
|
+
* @param {jQuery} limit Limiting node(s) as jQuery object
|
549
|
+
* @method
|
550
|
+
*/
|
551
|
+
removeMarkup: function (rangeObject, markup, limit) {
|
552
|
+
var nodeName = markup.get(0).nodeName,
|
553
|
+
startSplitLimit = this.findHighestElement(rangeObject.startContainer, nodeName, limit),
|
554
|
+
endSplitLimit = this.findHighestElement(rangeObject.endContainer, nodeName, limit),
|
555
|
+
didSplit = false,
|
556
|
+
highestObject, root, rangeTree;
|
557
|
+
|
558
|
+
if (startSplitLimit && rangeObject.startOffset > 0) {
|
559
|
+
// when the start is in the start of its container, we don't split
|
560
|
+
this.split(rangeObject, jQuery(startSplitLimit).parent(), false);
|
561
|
+
didSplit = true;
|
562
|
+
}
|
563
|
+
|
564
|
+
if (endSplitLimit) {
|
565
|
+
// when the end is in the end of its container, we don't split
|
566
|
+
if (rangeObject.endContainer.nodeType === 3 && rangeObject.endOffset < rangeObject.endContainer.data.length) {
|
567
|
+
this.split(rangeObject, jQuery(endSplitLimit).parent(), true);
|
568
|
+
didSplit = true;
|
569
|
+
}
|
570
|
+
if (rangeObject.endContainer.nodeType === 1 && rangeObject.endOffset < rangeObject.childNodes.length) {
|
571
|
+
this.split(rangeObject, jQuery(endSplitLimit).parent(), true);
|
572
|
+
didSplit = true;
|
573
|
+
}
|
574
|
+
}
|
575
|
+
|
576
|
+
// when we split the DOM, we maybe need to correct the range
|
577
|
+
if (didSplit) {
|
578
|
+
rangeObject.correctRange();
|
579
|
+
}
|
580
|
+
|
581
|
+
// find the highest occurrence of the markup
|
582
|
+
highestObject = this.findHighestElement(rangeObject.getCommonAncestorContainer(), nodeName, limit);
|
583
|
+
root = highestObject ? highestObject.parentNode : rangeObject.getCommonAncestorContainer();
|
584
|
+
|
585
|
+
if (root) {
|
586
|
+
// construct the range tree
|
587
|
+
rangeTree = rangeObject.getRangeTree(root);
|
588
|
+
|
589
|
+
// remove the markup from the range tree
|
590
|
+
this.recursiveRemoveMarkup(rangeTree, markup);
|
591
|
+
|
592
|
+
// cleanup DOM
|
593
|
+
this.doCleanup({'merge' : true, 'removeempty' : true}, rangeObject, root);
|
594
|
+
}
|
595
|
+
},
|
596
|
+
|
597
|
+
/**
|
598
|
+
* TODO: pass the range itself and eventually update it if necessary
|
599
|
+
* Recursive helper method to remove the given markup from the range
|
600
|
+
* @param rangeTree rangetree at the current level
|
601
|
+
* @param markup markup to be applied
|
602
|
+
* @hide
|
603
|
+
*/
|
604
|
+
recursiveRemoveMarkup: function (rangeTree, markup) {
|
605
|
+
var i, rangeLength, content;
|
606
|
+
// iterate over the rangetree objects of this level
|
607
|
+
for (i = 0, rangeLength = rangeTree.length; i < rangeLength; ++i) {
|
608
|
+
// check whether the object is the markup to be removed and is fully into the range
|
609
|
+
if (rangeTree[i].type == 'full' && rangeTree[i].domobj.nodeName == markup.get(0).nodeName) {
|
610
|
+
// found the markup, so remove it
|
611
|
+
content = jQuery(rangeTree[i].domobj).contents();
|
612
|
+
if (content.length > 0) {
|
613
|
+
// when the object has children, we unwrap them
|
614
|
+
content.first().unwrap();
|
615
|
+
} else {
|
616
|
+
// obj has no children, so just remove it
|
617
|
+
jQuery(rangeTree[i].domobj).remove();
|
618
|
+
}
|
619
|
+
}
|
620
|
+
|
621
|
+
// if the object has children, we do the recursion now
|
622
|
+
if (rangeTree[i].children) {
|
623
|
+
this.recursiveRemoveMarkup(rangeTree[i].children, markup);
|
624
|
+
}
|
625
|
+
}
|
626
|
+
},
|
627
|
+
|
628
|
+
/**
|
629
|
+
* Cleanup the DOM, starting with the given startobject (or the common ancestor container of the given range)
|
630
|
+
* ATTENTION: If range is a selection you need to update the selection after doCleanup
|
631
|
+
* Cleanup modes (given as properties in 'cleanup'):
|
632
|
+
* <pre>
|
633
|
+
* - merge: merges multiple successive nodes of same type, if this is allowed, starting at the children of the given node (defaults to false)
|
634
|
+
* - removeempty: removes empty element nodes (defaults to false)
|
635
|
+
* </pre>
|
636
|
+
* Example for calling this method:<br/>
|
637
|
+
* <code>GENTICS.Utils.Dom.doCleanup({merge:true,removeempty:false}, range)</code>
|
638
|
+
* @param {object} cleanup type of cleanup to be done
|
639
|
+
* @param {GENTICS.Utils.RangeObject} rangeObject range which is eventually updated
|
640
|
+
* @param {DOMObject} start start object, if not given, the commonancestorcontainer is used as startobject insted
|
641
|
+
* @return {boolean} true when the range (startContainer/startOffset/endContainer/endOffset) was modified, false if not
|
642
|
+
* @method
|
643
|
+
*/
|
644
|
+
doCleanup: function(cleanup, rangeObject, start) {
|
645
|
+
var that = this, prevNode, modifiedRange, startObject, startOffset, endOffset;
|
646
|
+
|
647
|
+
if (typeof cleanup === 'undefined') {
|
648
|
+
cleanup = {};
|
649
|
+
}
|
650
|
+
if (typeof cleanup.merge === 'undefined') {
|
651
|
+
cleanup.merge = false;
|
652
|
+
}
|
653
|
+
if (typeof cleanup.removeempty === 'undefined') {
|
654
|
+
cleanup.removeempty = false;
|
655
|
+
}
|
656
|
+
|
657
|
+
if (typeof start === 'undefined' && rangeObject) {
|
658
|
+
start = rangeObject.getCommonAncestorContainer();
|
659
|
+
}
|
660
|
+
// remember the previous node here (successive nodes of same type will be merged into this)
|
661
|
+
prevNode = false;
|
662
|
+
// check whether the range needed to be modified during merging
|
663
|
+
modifiedRange = false;
|
664
|
+
// get the start object
|
665
|
+
startObject = jQuery(start);
|
666
|
+
startOffset = rangeObject.startOffset;
|
667
|
+
endOffset = rangeObject.endOffset;
|
668
|
+
|
669
|
+
// iterate through all sub nodes
|
670
|
+
startObject.contents().each(function(index) {
|
671
|
+
// decide further actions by node type
|
672
|
+
switch(this.nodeType) {
|
673
|
+
// found a non-text node
|
674
|
+
case 1:
|
675
|
+
if (prevNode && prevNode.nodeName == this.nodeName) {
|
676
|
+
// found a successive node of same type
|
677
|
+
|
678
|
+
// now we check whether the selection starts or ends in the mother node after the current node
|
679
|
+
if (rangeObject.startContainer === startObject && startOffset > index) {
|
680
|
+
// there will be one less object, so reduce the startOffset by one
|
681
|
+
rangeObject.startOffset -= 1;
|
682
|
+
// set the flag for range modification
|
683
|
+
modifiedRange = true;
|
684
|
+
}
|
685
|
+
if (rangeObject.endContainer === startObject && endOffset > index) {
|
686
|
+
// there will be one less object, so reduce the endOffset by one
|
687
|
+
rangeObject.endOffset -= 1;
|
688
|
+
// set the flag for range modification
|
689
|
+
modifiedRange = true;
|
690
|
+
}
|
691
|
+
|
692
|
+
// merge the contents of this node into the previous one
|
693
|
+
jQuery(prevNode).append(jQuery(this).contents());
|
694
|
+
|
695
|
+
// after merging, we eventually need to cleanup the prevNode again
|
696
|
+
modifiedRange |= that.doCleanup(cleanup, rangeObject, prevNode);
|
697
|
+
|
698
|
+
// remove this node
|
699
|
+
jQuery(this).remove();
|
700
|
+
|
701
|
+
} else {
|
702
|
+
|
703
|
+
// do the recursion step here
|
704
|
+
modifiedRange |= that.doCleanup(cleanup, rangeObject, this);
|
705
|
+
|
706
|
+
// eventually remove empty elements
|
707
|
+
var removed = false;
|
708
|
+
if (cleanup.removeempty) {
|
709
|
+
if (GENTICS.Utils.Dom.isBlockLevelElement(this) && this.childNodes.length === 0) {
|
710
|
+
// jQuery(this).remove();
|
711
|
+
removed = true;
|
712
|
+
}
|
713
|
+
if (jQuery.inArray(this.nodeName.toLowerCase(), that.mergeableTags) >= 0
|
714
|
+
&& jQuery(this).text().length === 0 && this.childNodes.length === 0) {
|
715
|
+
// jQuery(this).remove();
|
716
|
+
removed = true;
|
717
|
+
}
|
718
|
+
}
|
719
|
+
|
720
|
+
// when the current node was not removed, we eventually store it as previous (mergeable) tag
|
721
|
+
if (!removed) {
|
722
|
+
if (jQuery.inArray(this.nodeName.toLowerCase(), that.mergeableTags) >= 0) {
|
723
|
+
prevNode = this;
|
724
|
+
} else {
|
725
|
+
prevNode = false;
|
726
|
+
}
|
727
|
+
} else {
|
728
|
+
// now we check whether the selection starts or ends in the mother node of this
|
729
|
+
if (rangeObject.startContainer === this.parentNode && startOffset > index) {
|
730
|
+
// there will be one less object, so reduce the startOffset by one
|
731
|
+
rangeObject.startOffset = rangeObject.startOffset - 1;
|
732
|
+
// set the flag for range modification
|
733
|
+
modifiedRange = true;
|
734
|
+
}
|
735
|
+
if (rangeObject.endContainer === this.parentNode && endOffset > index) {
|
736
|
+
// there will be one less object, so reduce the endOffset by one
|
737
|
+
rangeObject.endOffset = rangeObject.endOffset - 1;
|
738
|
+
// set the flag for range modification
|
739
|
+
modifiedRange = true;
|
740
|
+
}
|
741
|
+
|
742
|
+
// remove this text node
|
743
|
+
jQuery(this).remove();
|
744
|
+
|
745
|
+
}
|
746
|
+
}
|
747
|
+
|
748
|
+
break;
|
749
|
+
// found a text node
|
750
|
+
case 3:
|
751
|
+
// found a text node
|
752
|
+
if (prevNode && prevNode.nodeType === 3 && cleanup.merge) {
|
753
|
+
// the current text node will be merged into the last one, so
|
754
|
+
// check whether the selection starts or ends in the current
|
755
|
+
// text node
|
756
|
+
if (rangeObject.startContainer === this) {
|
757
|
+
// selection starts in the current text node
|
758
|
+
|
759
|
+
// update the start container to the last node
|
760
|
+
rangeObject.startContainer = prevNode;
|
761
|
+
|
762
|
+
// update the start offset
|
763
|
+
rangeObject.startOffset += prevNode.nodeValue.length;
|
764
|
+
|
765
|
+
// set the flag for range modification
|
766
|
+
modifiedRange = true;
|
767
|
+
|
768
|
+
} else if (rangeObject.startContainer === prevNode.parentNode
|
769
|
+
&& rangeObject.startOffset === that.getIndexInParent(prevNode) + 1) {
|
770
|
+
// selection starts right between the previous and current text nodes (which will be merged)
|
771
|
+
|
772
|
+
// update the start container to the previous node
|
773
|
+
rangeObject.startContainer = prevNode;
|
774
|
+
|
775
|
+
// set the start offset
|
776
|
+
rangeObject.startOffset = prevNode.nodeValue.length;
|
777
|
+
|
778
|
+
// set the flag for range modification
|
779
|
+
modifiedRange = true;
|
780
|
+
}
|
781
|
+
|
782
|
+
if (rangeObject.endContainer === this) {
|
783
|
+
// selection ends in the current text node
|
784
|
+
|
785
|
+
// update the end container to be the last node
|
786
|
+
rangeObject.endContainer = prevNode;
|
787
|
+
|
788
|
+
// update the end offset
|
789
|
+
rangeObject.endOffset += prevNode.nodeValue.length;
|
790
|
+
|
791
|
+
// set the flag for range modification
|
792
|
+
modifiedRange = true;
|
793
|
+
|
794
|
+
} else if (rangeObject.endContainer === prevNode.parentNode
|
795
|
+
&& rangeObject.endOffset === that.getIndexInParent(prevNode) + 1) {
|
796
|
+
// selection ends right between the previous and current text nodes (which will be merged)
|
797
|
+
|
798
|
+
// update the end container to the previous node
|
799
|
+
rangeObject.endContainer = prevNode;
|
800
|
+
|
801
|
+
// set the end offset
|
802
|
+
rangeObject.endOffset = prevNode.nodeValue.length;
|
803
|
+
|
804
|
+
// set the flag for range modification
|
805
|
+
modifiedRange = true;
|
806
|
+
}
|
807
|
+
|
808
|
+
// now append the contents of the current text node into the previous
|
809
|
+
prevNode.data += this.data;
|
810
|
+
|
811
|
+
// remove empty text nodes
|
812
|
+
} else if ( this.nodeValue === '' && cleanup.removeempty ) {
|
813
|
+
// do nothing here.
|
814
|
+
|
815
|
+
// remember it as the last text node if not empty
|
816
|
+
} else if ( !(this.nodeValue === '' && cleanup.removeempty) ) {
|
817
|
+
prevNode = this;
|
818
|
+
// we are finish here don't delete this node
|
819
|
+
break;
|
820
|
+
}
|
821
|
+
|
822
|
+
// now we check whether the selection starts or ends in the mother node of this
|
823
|
+
if (rangeObject.startContainer === this.parentNode && rangeObject.startOffset > index) {
|
824
|
+
// there will be one less object, so reduce the startOffset by one
|
825
|
+
rangeObject.startOffset = rangeObject.startOffset - 1;
|
826
|
+
// set the flag for range modification
|
827
|
+
modifiedRange = true;
|
828
|
+
}
|
829
|
+
if (rangeObject.endContainer === this.parentNode && rangeObject.endOffset > index) {
|
830
|
+
// there will be one less object, so reduce the endOffset by one
|
831
|
+
rangeObject.endOffset = rangeObject.endOffset - 1;
|
832
|
+
// set the flag for range modification
|
833
|
+
modifiedRange = true;
|
834
|
+
}
|
835
|
+
|
836
|
+
// remove this text node
|
837
|
+
jQuery(this).remove();
|
838
|
+
|
839
|
+
break;
|
840
|
+
}
|
841
|
+
});
|
842
|
+
|
843
|
+
// eventually remove the startnode itself
|
844
|
+
// if (cleanup.removeempty
|
845
|
+
// && GENTICS.Utils.Dom.isBlockLevelElement(start)
|
846
|
+
// && (!start.childNodes || start.childNodes.length === 0)) {
|
847
|
+
// if (rangeObject.startContainer == start) {
|
848
|
+
// rangeObject.startContainer = start.parentNode;
|
849
|
+
// rangeObject.startOffset = GENTICS.Utils.Dom.getIndexInParent(start);
|
850
|
+
// }
|
851
|
+
// if (rangeObject.endContainer == start) {
|
852
|
+
// rangeObject.endContainer = start.parentNode;
|
853
|
+
// rangeObject.endOffset = GENTICS.Utils.Dom.getIndexInParent(start);
|
854
|
+
// }
|
855
|
+
// startObject.remove();
|
856
|
+
// modifiedRange = true;
|
857
|
+
// }
|
858
|
+
|
859
|
+
if (modifiedRange) {
|
860
|
+
rangeObject.clearCaches();
|
861
|
+
}
|
862
|
+
|
863
|
+
return modifiedRange;
|
864
|
+
},
|
865
|
+
|
866
|
+
/**
|
867
|
+
* Get the index of the given node within its parent node
|
868
|
+
* @param {DOMObject} node node to check
|
869
|
+
* @return {Integer} index in the parent node or false if no node given or node has no parent
|
870
|
+
* @method
|
871
|
+
*/
|
872
|
+
getIndexInParent: function (node) {
|
873
|
+
if (!node) {
|
874
|
+
return false;
|
875
|
+
}
|
876
|
+
|
877
|
+
var
|
878
|
+
index = 0,
|
879
|
+
check = node.previousSibling;
|
880
|
+
|
881
|
+
while(check) {
|
882
|
+
index++;
|
883
|
+
check = check.previousSibling;
|
884
|
+
}
|
885
|
+
|
886
|
+
return index;
|
887
|
+
},
|
888
|
+
|
889
|
+
/**
|
890
|
+
* Check whether the given node is a blocklevel element
|
891
|
+
* @param {DOMObject} node node to check
|
892
|
+
* @return {boolean} true if yes, false if not (or null)
|
893
|
+
* @method
|
894
|
+
*/
|
895
|
+
isBlockLevelElement: function (node) {
|
896
|
+
if (!node) {
|
897
|
+
return false;
|
898
|
+
}
|
899
|
+
if (node.nodeType === 1 && jQuery.inArray(node.nodeName.toLowerCase(), this.blockLevelElements) >= 0) {
|
900
|
+
return true;
|
901
|
+
} else {
|
902
|
+
return false;
|
903
|
+
}
|
904
|
+
},
|
905
|
+
|
906
|
+
/**
|
907
|
+
* Check whether the given node is a linebreak element
|
908
|
+
* @param {DOMObject} node node to check
|
909
|
+
* @return {boolean} true for linebreak elements, false for everything else
|
910
|
+
* @method
|
911
|
+
*/
|
912
|
+
isLineBreakElement: function (node) {
|
913
|
+
if (!node) {
|
914
|
+
return false;
|
915
|
+
}
|
916
|
+
return node.nodeType === 1 && node.nodeName.toLowerCase() == 'br';
|
917
|
+
},
|
918
|
+
|
919
|
+
/**
|
920
|
+
* Check whether the given node is a list element
|
921
|
+
* @param {DOMObject} node node to check
|
922
|
+
* @return {boolean} true for list elements (li, ul, ol), false for everything else
|
923
|
+
* @method
|
924
|
+
*/
|
925
|
+
isListElement: function (node) {
|
926
|
+
if (!node) {
|
927
|
+
return false;
|
928
|
+
}
|
929
|
+
return node.nodeType === 1 && jQuery.inArray(node.nodeName.toLowerCase(), this.listElements) >= 0;
|
930
|
+
},
|
931
|
+
|
932
|
+
/**
|
933
|
+
* This method checks, whether the passed dom object is a dom object, that would
|
934
|
+
* be split in cases of pressing enter. This currently is true for paragraphs
|
935
|
+
* and headings
|
936
|
+
* @param {DOMObject} el
|
937
|
+
* dom object to check
|
938
|
+
* @return {boolean} true for split objects, false for other
|
939
|
+
* @method
|
940
|
+
*/
|
941
|
+
isSplitObject: function(el) {
|
942
|
+
if (el.nodeType === 1){
|
943
|
+
switch(el.nodeName.toLowerCase()) {
|
944
|
+
case 'p':
|
945
|
+
case 'h1':
|
946
|
+
case 'h2':
|
947
|
+
case 'h3':
|
948
|
+
case 'h4':
|
949
|
+
case 'h5':
|
950
|
+
case 'h6':
|
951
|
+
case 'li':
|
952
|
+
return true;
|
953
|
+
}
|
954
|
+
}
|
955
|
+
return false;
|
956
|
+
},
|
957
|
+
|
958
|
+
/**
|
959
|
+
* Starting with the given position (between nodes), search in the given direction to an adjacent notempty text node
|
960
|
+
* @param {DOMObject} parent parent node containing the position
|
961
|
+
* @param {Integer} index index of the position within the parent node
|
962
|
+
* @param {boolean} searchleft true when search direction is 'left' (default), false for 'right'
|
963
|
+
* @param {object} stopat define at which types of element we shall stop, may contain the following properties
|
964
|
+
* <pre>
|
965
|
+
* - blocklevel (default: true)
|
966
|
+
* - list (default: true)
|
967
|
+
* - linebreak (default: true)
|
968
|
+
* </pre>
|
969
|
+
* @return {DOMObject} the found text node or false if none found
|
970
|
+
* @method
|
971
|
+
*/
|
972
|
+
searchAdjacentTextNode: function (parent, index, searchleft, stopat) {
|
973
|
+
if (!parent || parent.nodeType !== 1 || index < 0 || index > parent.childNodes.length) {
|
974
|
+
return false;
|
975
|
+
}
|
976
|
+
|
977
|
+
if (typeof stopat === 'undefined') {
|
978
|
+
stopat = {'blocklevel' : true, 'list' : true, 'linebreak' : true};
|
979
|
+
}
|
980
|
+
|
981
|
+
if (typeof stopat.blocklevel === 'undefined') {
|
982
|
+
stopat.blocklevel = true;
|
983
|
+
}
|
984
|
+
if (typeof stopat.list === 'undefined') {
|
985
|
+
stopat.list = true;
|
986
|
+
}
|
987
|
+
if (typeof stopat.linebreak === 'undefined') {
|
988
|
+
stopat.linebreak = true;
|
989
|
+
}
|
990
|
+
|
991
|
+
if (typeof searchleft === 'undefined') {
|
992
|
+
searchleft = true;
|
993
|
+
}
|
994
|
+
|
995
|
+
var
|
996
|
+
nextNode,
|
997
|
+
currentParent = parent;
|
998
|
+
|
999
|
+
// start at the node left/right of the given position
|
1000
|
+
if (searchleft && index > 0) {
|
1001
|
+
nextNode = parent.childNodes[index - 1];
|
1002
|
+
}
|
1003
|
+
if (!searchleft && index < parent.childNodes.length) {
|
1004
|
+
nextNode = parent.childNodes[index];
|
1005
|
+
}
|
1006
|
+
|
1007
|
+
//currentParent is not a number therefore it is sufficient to directly test for it with while(currentParent)
|
1008
|
+
//otherwise there would be an error if the object is null
|
1009
|
+
while (currentParent) {
|
1010
|
+
//while (typeof currentParent !== 'undefined') {
|
1011
|
+
if (!nextNode) {
|
1012
|
+
// no next node found, check whether the parent is a blocklevel element
|
1013
|
+
if (stopat.blocklevel && this.isBlockLevelElement(currentParent)) {
|
1014
|
+
// do not leave block level elements
|
1015
|
+
return false;
|
1016
|
+
} else if (stopat.list && this.isListElement(currentParent)) {
|
1017
|
+
// do not leave list elements
|
1018
|
+
return false;
|
1019
|
+
} else {
|
1020
|
+
// continue with the parent
|
1021
|
+
nextNode = searchleft ? currentParent.previousSibling : currentParent.nextSibling;
|
1022
|
+
currentParent = currentParent.parentNode;
|
1023
|
+
}
|
1024
|
+
} else if (nextNode.nodeType === 3 && jQuery.trim(nextNode.data).length > 0) {
|
1025
|
+
// we are lucky and found a notempty text node
|
1026
|
+
return nextNode;
|
1027
|
+
} else if (stopat.blocklevel && this.isBlockLevelElement(nextNode)) {
|
1028
|
+
// we found a blocklevel element, stop here
|
1029
|
+
return false;
|
1030
|
+
} else if (stopat.linebreak && this.isLineBreakElement(nextNode)) {
|
1031
|
+
// we found a linebreak, stop here
|
1032
|
+
return false;
|
1033
|
+
} else if (stopat.list && this.isListElement(nextNode)) {
|
1034
|
+
// we found a linebreak, stop here
|
1035
|
+
return false;
|
1036
|
+
} else if (nextNode.nodeType === 3) {
|
1037
|
+
// we found an empty text node, so step to the next
|
1038
|
+
nextNode = searchleft ? nextNode.previousSibling : nextNode.nextSibling;
|
1039
|
+
} else {
|
1040
|
+
// we found a non-blocklevel element, step into
|
1041
|
+
currentParent = nextNode;
|
1042
|
+
nextNode = searchleft ? nextNode.lastChild : nextNode.firstChild;
|
1043
|
+
}
|
1044
|
+
}
|
1045
|
+
},
|
1046
|
+
|
1047
|
+
/**
|
1048
|
+
* Insert the given DOM Object into the start/end of the given range. The method
|
1049
|
+
* will find the appropriate place in the DOM tree for inserting the given
|
1050
|
+
* object, and will eventually split elements in between. The given range will
|
1051
|
+
* be updated if necessary. The updated range will NOT embrace the inserted
|
1052
|
+
* object, which means that the object is actually inserted before or after the
|
1053
|
+
* given range (depending on the atEnd parameter)
|
1054
|
+
*
|
1055
|
+
* @param {jQuery}
|
1056
|
+
* object object to insert into the DOM
|
1057
|
+
* @param {GENTICS.Utils.RangeObject}
|
1058
|
+
* range range where to insert the object (at start or end)
|
1059
|
+
* @param {jQuery}
|
1060
|
+
* limit limiting object(s) of the DOM modification
|
1061
|
+
* @param {boolean}
|
1062
|
+
* atEnd true when the object shall be inserted at the end, false for
|
1063
|
+
* insertion at the start (default)
|
1064
|
+
* @param {boolean}
|
1065
|
+
* true when the insertion shall be done, even if inserting the element
|
1066
|
+
* would not be allowed, false to deny inserting unallowed elements (default)
|
1067
|
+
* @return true if the object could be inserted, false if not.
|
1068
|
+
* @method
|
1069
|
+
*/
|
1070
|
+
insertIntoDOM: function (object, range, limit, atEnd, force) {
|
1071
|
+
// first find the appropriate place to insert the given object
|
1072
|
+
var parentElements = range.getContainerParents(limit, atEnd),
|
1073
|
+
that = this,
|
1074
|
+
newParent,
|
1075
|
+
container, offset, splitParts, contents;
|
1076
|
+
|
1077
|
+
if (!limit) {
|
1078
|
+
limit = jQuery(document.body);
|
1079
|
+
}
|
1080
|
+
|
1081
|
+
// if no parent elements exist (up to the limit), the new parent will be the
|
1082
|
+
// limiter itself
|
1083
|
+
if (parentElements.length === 0) {
|
1084
|
+
newParent = limit.get(0);
|
1085
|
+
} else {
|
1086
|
+
jQuery.each(parentElements, function (index, parent) {
|
1087
|
+
if (that.allowsNesting(parent, object.get(0))) {
|
1088
|
+
newParent = parent;
|
1089
|
+
return false;
|
1090
|
+
}
|
1091
|
+
});
|
1092
|
+
}
|
1093
|
+
|
1094
|
+
if (typeof newParent === 'undefined' && limit.length > 0) {
|
1095
|
+
// found no possible new parent, so split up to the limit object
|
1096
|
+
newParent = limit.get(0);
|
1097
|
+
}
|
1098
|
+
|
1099
|
+
// check whether it is allowed to insert the element at all
|
1100
|
+
if (!this.allowsNesting(newParent, object.get(0)) && !force) {
|
1101
|
+
return false;
|
1102
|
+
}
|
1103
|
+
|
1104
|
+
if (typeof newParent !== 'undefined') {
|
1105
|
+
// we found a possible new parent, so we split the DOM up to the new parent
|
1106
|
+
splitParts = this.split(range, jQuery(newParent), atEnd);
|
1107
|
+
if (splitParts === true) {
|
1108
|
+
// DOM was not split (there was no need to split it), insert the new object anyway
|
1109
|
+
container = range.startContainer;
|
1110
|
+
offset = range.startOffset;
|
1111
|
+
if (atEnd) {
|
1112
|
+
container = range.endContainer;
|
1113
|
+
offset = range.endOffset;
|
1114
|
+
}
|
1115
|
+
if (offset === 0) {
|
1116
|
+
// insert right before the first element in the container
|
1117
|
+
contents = jQuery(container).contents();
|
1118
|
+
if (contents.length > 0) {
|
1119
|
+
contents.eq(0).before(object);
|
1120
|
+
} else {
|
1121
|
+
jQuery(container).append(object);
|
1122
|
+
}
|
1123
|
+
return true;
|
1124
|
+
} else {
|
1125
|
+
// insert right after the element at offset-1
|
1126
|
+
jQuery(container).contents().eq(offset-1).after(object);
|
1127
|
+
return true;
|
1128
|
+
}
|
1129
|
+
} else if (splitParts) {
|
1130
|
+
// if the DOM could be split, we insert the new object in between the split parts
|
1131
|
+
splitParts.eq(0).after(object);
|
1132
|
+
return true;
|
1133
|
+
} else {
|
1134
|
+
// could not split, so could not insert
|
1135
|
+
return false;
|
1136
|
+
}
|
1137
|
+
} else {
|
1138
|
+
// found no possible new parent, so we shall not insert
|
1139
|
+
return false;
|
1140
|
+
}
|
1141
|
+
},
|
1142
|
+
|
1143
|
+
/**
|
1144
|
+
* Remove the given DOM object from the DOM and modify the given range to reflect the user expected range after the object was removed
|
1145
|
+
* TODO: finish this
|
1146
|
+
* @param {DOMObject} object DOM object to remove
|
1147
|
+
* @param {GENTICS.Utils.RangeObject} range range which eventually be modified
|
1148
|
+
* @param {boolean} preserveContent true if the contents of the removed DOM object shall be preserved, false if not (default: false)
|
1149
|
+
* @return true if the DOM object could be removed, false if not
|
1150
|
+
* @hide
|
1151
|
+
*/
|
1152
|
+
removeFromDOM: function (object, range, preserveContent) {
|
1153
|
+
if (preserveContent) {
|
1154
|
+
// check whether the range will need modification
|
1155
|
+
var indexInParent = this.getIndexInParent(object),
|
1156
|
+
numChildren = jQuery(object).contents().length,
|
1157
|
+
parent = object.parentNode;
|
1158
|
+
|
1159
|
+
if (range.startContainer == parent && range.startOffset > indexInParent) {
|
1160
|
+
range.startOffset += numChildren - 1;
|
1161
|
+
} else if (range.startContainer == object) {
|
1162
|
+
range.startContainer = parent;
|
1163
|
+
range.startOffset = indexInParent + range.startOffset;
|
1164
|
+
}
|
1165
|
+
|
1166
|
+
if (range.endContainer == parent && range.endOffset > indexInParent) {
|
1167
|
+
range.endOffset += numChildren - 1;
|
1168
|
+
} else if (range.endContainer == object) {
|
1169
|
+
range.endContainer = parent;
|
1170
|
+
range.endOffset = indexInParent + range.endOffset;
|
1171
|
+
}
|
1172
|
+
|
1173
|
+
// we simply unwrap the children of the object
|
1174
|
+
jQuery(object).contents().unwrap();
|
1175
|
+
|
1176
|
+
// optionally do cleanup
|
1177
|
+
this.doCleanup({'merge' : true}, range, parent);
|
1178
|
+
} else {
|
1179
|
+
// TODO
|
1180
|
+
}
|
1181
|
+
},
|
1182
|
+
|
1183
|
+
/**
|
1184
|
+
* Remove the content defined by the given range from the DOM. Update the given
|
1185
|
+
* range object to be a collapsed selection at the place of the previous
|
1186
|
+
* selection.
|
1187
|
+
* @param rangeObject range object
|
1188
|
+
* @return true if the range could be removed, false if not
|
1189
|
+
*/
|
1190
|
+
removeRange: function (rangeObject) {
|
1191
|
+
if (!rangeObject) {
|
1192
|
+
// no range given
|
1193
|
+
return false;
|
1194
|
+
}
|
1195
|
+
if (rangeObject.isCollapsed()) {
|
1196
|
+
// the range is collapsed, nothing to delete
|
1197
|
+
return false;
|
1198
|
+
}
|
1199
|
+
|
1200
|
+
// split partially contained text nodes at the start and end of the range
|
1201
|
+
if (rangeObject.startContainer.nodeType == 3 && rangeObject.startOffset > 0
|
1202
|
+
&& rangeObject.startOffset < rangeObject.startContainer.data.length) {
|
1203
|
+
this.split(rangeObject, jQuery(rangeObject.startContainer).parent(),
|
1204
|
+
false);
|
1205
|
+
}
|
1206
|
+
if (rangeObject.endContainer.nodeType == 3 && rangeObject.endOffset > 0
|
1207
|
+
&& rangeObject.endOffset < rangeObject.endContainer.data.length) {
|
1208
|
+
this.split(rangeObject, jQuery(rangeObject.endContainer).parent(),
|
1209
|
+
true);
|
1210
|
+
}
|
1211
|
+
|
1212
|
+
// construct the range tree
|
1213
|
+
var rangeTree = rangeObject.getRangeTree();
|
1214
|
+
|
1215
|
+
// collapse the range
|
1216
|
+
rangeObject.endContainer = rangeObject.startContainer;
|
1217
|
+
rangeObject.endOffset = rangeObject.startOffset;
|
1218
|
+
|
1219
|
+
// remove the markup from the range tree
|
1220
|
+
this.recursiveRemoveRange(rangeTree, rangeObject);
|
1221
|
+
|
1222
|
+
// do some cleanup
|
1223
|
+
this.doCleanup({'merge' : true}, rangeObject);
|
1224
|
+
// this.doCleanup({'merge' : true, 'removeempty' : true}, rangeObject);
|
1225
|
+
|
1226
|
+
// clear the caches of the range object
|
1227
|
+
rangeObject.clearCaches();
|
1228
|
+
},
|
1229
|
+
|
1230
|
+
recursiveRemoveRange: function (rangeTree, rangeObject) {
|
1231
|
+
// iterate over the rangetree objects of this level
|
1232
|
+
for (var i = 0; i < rangeTree.length; ++i) {
|
1233
|
+
// check for nodes fully in the range
|
1234
|
+
if (rangeTree[i].type == 'full') {
|
1235
|
+
// if the domobj is the startcontainer, or the startcontainer is inside the domobj, we need to update the rangeObject
|
1236
|
+
if (jQuery(rangeObject.startContainer).parents().andSelf().filter(rangeTree[i].domobj).length > 0) {
|
1237
|
+
rangeObject.startContainer = rangeObject.endContainer = rangeTree[i].domobj.parentNode;
|
1238
|
+
rangeObject.startOffset = rangeObject.endOffset = this.getIndexInParent(rangeTree[i].domobj);
|
1239
|
+
}
|
1240
|
+
|
1241
|
+
// remove the object from the DOM
|
1242
|
+
jQuery(rangeTree[i].domobj).remove();
|
1243
|
+
} else if (rangeTree[i].type == 'partial' && rangeTree[i].children) {
|
1244
|
+
// node partially selected and has children, so do recursion
|
1245
|
+
this.recursiveRemoveRange(rangeTree[i].children, rangeObject);
|
1246
|
+
}
|
1247
|
+
}
|
1248
|
+
},
|
1249
|
+
|
1250
|
+
/**
|
1251
|
+
* Extend the given range to have start and end at the nearest word boundaries to the left (start) and right (end)
|
1252
|
+
* @param {GENTICS.Utils.RangeObject} range range to be extended
|
1253
|
+
* @param {boolean} fromBoundaries true if extending will also be done, if one or both ends of the range already are at a word boundary, false if not, default: false
|
1254
|
+
* @method
|
1255
|
+
*/
|
1256
|
+
extendToWord: function (range, fromBoundaries) {
|
1257
|
+
// search the word boundaries to the left and right
|
1258
|
+
var leftBoundary = this.searchWordBoundary(range.startContainer, range.startOffset, true),
|
1259
|
+
rightBoundary = this.searchWordBoundary(range.endContainer, range.endOffset, false);
|
1260
|
+
|
1261
|
+
// check whether we must not extend the range from word boundaries
|
1262
|
+
if (!fromBoundaries) {
|
1263
|
+
// we only extend the range if both ends would be different
|
1264
|
+
if (range.startContainer == leftBoundary.container && range.startOffset == leftBoundary.offset) {
|
1265
|
+
return;
|
1266
|
+
}
|
1267
|
+
if (range.endContainer == rightBoundary.container && range.endOffset == rightBoundary.offset) {
|
1268
|
+
return;
|
1269
|
+
}
|
1270
|
+
}
|
1271
|
+
|
1272
|
+
// set the new boundaries
|
1273
|
+
range.startContainer = leftBoundary.container;
|
1274
|
+
range.startOffset = leftBoundary.offset;
|
1275
|
+
range.endContainer = rightBoundary.container;
|
1276
|
+
range.endOffset = rightBoundary.offset;
|
1277
|
+
|
1278
|
+
// correct the range
|
1279
|
+
range.correctRange();
|
1280
|
+
|
1281
|
+
// clear caches
|
1282
|
+
range.clearCaches();
|
1283
|
+
},
|
1284
|
+
|
1285
|
+
/**
|
1286
|
+
* Helper method to check whether the given DOM object is a word boundary.
|
1287
|
+
* @param {DOMObject} object DOM object in question
|
1288
|
+
* @return {boolean} true when the DOM object is a word boundary, false if not
|
1289
|
+
* @hide
|
1290
|
+
*/
|
1291
|
+
isWordBoundaryElement: function (object) {
|
1292
|
+
if (!object || !object.nodeName) {
|
1293
|
+
return false;
|
1294
|
+
}
|
1295
|
+
return jQuery.inArray(object.nodeName.toLowerCase(), this.nonWordBoundaryTags) == -1;
|
1296
|
+
},
|
1297
|
+
|
1298
|
+
/**
|
1299
|
+
* Search for the next word boundary, starting at the given position
|
1300
|
+
* @param {DOMObject} container container of the start position
|
1301
|
+
* @param {Integer} offset offset of the start position
|
1302
|
+
* @param {boolean} searchleft true for searching to the left, false for searching to the right (default: true)
|
1303
|
+
* @return {object} object with properties 'container' and 'offset' marking the found word boundary
|
1304
|
+
* @method
|
1305
|
+
*/
|
1306
|
+
searchWordBoundary: function (container, offset, searchleft) {
|
1307
|
+
if (typeof searchleft === 'undefined') {
|
1308
|
+
searchleft = true;
|
1309
|
+
}
|
1310
|
+
var boundaryFound = false, wordBoundaryPos, tempWordBoundaryPos, textNode;
|
1311
|
+
while (!boundaryFound) {
|
1312
|
+
// check the node type
|
1313
|
+
if (container.nodeType === 3) {
|
1314
|
+
// we are currently in a text node
|
1315
|
+
|
1316
|
+
// find the nearest word boundary character
|
1317
|
+
if (!searchleft) {
|
1318
|
+
// search right
|
1319
|
+
wordBoundaryPos = container.data.substring(offset).search(this.nonWordRegex);
|
1320
|
+
if (wordBoundaryPos != -1) {
|
1321
|
+
// found a word boundary
|
1322
|
+
offset = offset + wordBoundaryPos;
|
1323
|
+
boundaryFound = true;
|
1324
|
+
} else {
|
1325
|
+
// found no word boundary, so we set the position after the container
|
1326
|
+
offset = this.getIndexInParent(container) + 1;
|
1327
|
+
container = container.parentNode;
|
1328
|
+
}
|
1329
|
+
} else {
|
1330
|
+
// search left
|
1331
|
+
wordBoundaryPos = container.data.substring(0, offset).search(this.nonWordRegex);
|
1332
|
+
tempWordBoundaryPos = wordBoundaryPos;
|
1333
|
+
while (tempWordBoundaryPos != -1) {
|
1334
|
+
wordBoundaryPos = tempWordBoundaryPos;
|
1335
|
+
tempWordBoundaryPos = container.data.substring(
|
1336
|
+
wordBoundaryPos + 1, offset).search(this.nonWordRegex);
|
1337
|
+
if (tempWordBoundaryPos != -1) {
|
1338
|
+
tempWordBoundaryPos = tempWordBoundaryPos + wordBoundaryPos + 1;
|
1339
|
+
}
|
1340
|
+
}
|
1341
|
+
|
1342
|
+
if (wordBoundaryPos != -1) {
|
1343
|
+
// found a word boundary
|
1344
|
+
offset = wordBoundaryPos + 1;
|
1345
|
+
boundaryFound = true;
|
1346
|
+
} else {
|
1347
|
+
// found no word boundary, so we set the position before the container
|
1348
|
+
offset = this.getIndexInParent(container);
|
1349
|
+
container = container.parentNode;
|
1350
|
+
}
|
1351
|
+
}
|
1352
|
+
} else if (container.nodeType === 1) {
|
1353
|
+
// we are currently in an element node (between nodes)
|
1354
|
+
|
1355
|
+
if (!searchleft) {
|
1356
|
+
// check whether there is an element to the right
|
1357
|
+
if (offset < container.childNodes.length) {
|
1358
|
+
// there is an element to the right, check whether it is a word boundary element
|
1359
|
+
if (this.isWordBoundaryElement(container.childNodes[offset])) {
|
1360
|
+
// we are done
|
1361
|
+
boundaryFound = true;
|
1362
|
+
} else {
|
1363
|
+
// element to the right is no word boundary, so enter it
|
1364
|
+
container = container.childNodes[offset];
|
1365
|
+
offset = 0;
|
1366
|
+
}
|
1367
|
+
} else {
|
1368
|
+
// no element to the right, check whether the element itself is a boundary element
|
1369
|
+
if (this.isWordBoundaryElement(container)) {
|
1370
|
+
// we are done
|
1371
|
+
boundaryFound = true;
|
1372
|
+
} else {
|
1373
|
+
// element itself is no boundary element, so go to parent
|
1374
|
+
offset = this.getIndexInParent(container) + 1;
|
1375
|
+
container = container.parentNode;
|
1376
|
+
}
|
1377
|
+
}
|
1378
|
+
} else {
|
1379
|
+
// check whether there is an element to the left
|
1380
|
+
if (offset > 0) {
|
1381
|
+
// there is an element to the left, check whether it is a word boundary element
|
1382
|
+
if (this.isWordBoundaryElement(container.childNodes[offset - 1])) {
|
1383
|
+
// we are done
|
1384
|
+
boundaryFound = true;
|
1385
|
+
} else {
|
1386
|
+
// element to the left is no word boundary, so enter it
|
1387
|
+
container = container.childNodes[offset - 1];
|
1388
|
+
offset = container.nodeType === 3 ? container.data.length : container.childNodes.length;
|
1389
|
+
}
|
1390
|
+
} else {
|
1391
|
+
// no element to the left, check whether the element itself is a boundary element
|
1392
|
+
if (this.isWordBoundaryElement(container)) {
|
1393
|
+
// we are done
|
1394
|
+
boundaryFound = true;
|
1395
|
+
} else {
|
1396
|
+
// element itself is no boundary element, so go to parent
|
1397
|
+
offset = this.getIndexInParent(container);
|
1398
|
+
container = container.parentNode;
|
1399
|
+
}
|
1400
|
+
}
|
1401
|
+
}
|
1402
|
+
}
|
1403
|
+
}
|
1404
|
+
|
1405
|
+
if (container.nodeType !== 3) {
|
1406
|
+
textNode = this.searchAdjacentTextNode(container, offset, !searchleft);
|
1407
|
+
if (textNode) {
|
1408
|
+
container = textNode;
|
1409
|
+
offset = searchleft ? 0 : container.data.length;
|
1410
|
+
}
|
1411
|
+
}
|
1412
|
+
|
1413
|
+
return {'container' : container, 'offset' : offset};
|
1414
|
+
},
|
1415
|
+
|
1416
|
+
/**
|
1417
|
+
* Check whether the given dom object is empty
|
1418
|
+
* @param {DOMObject} domObject object to check
|
1419
|
+
* @return {boolean} true when the object is empty, false if not
|
1420
|
+
* @method
|
1421
|
+
*/
|
1422
|
+
isEmpty: function (domObject) {
|
1423
|
+
// a non dom object is considered empty
|
1424
|
+
if (!domObject) {
|
1425
|
+
return true;
|
1426
|
+
}
|
1427
|
+
|
1428
|
+
// some tags are considered to be non-empty
|
1429
|
+
if (jQuery.inArray(domObject.nodeName.toLowerCase(), this.nonEmptyTags) != -1) {
|
1430
|
+
return false;
|
1431
|
+
}
|
1432
|
+
|
1433
|
+
// text nodes are not empty, if they contain non-whitespace characters
|
1434
|
+
if (domObject.nodeType === 3) {
|
1435
|
+
return domObject.data.search(/\S/) == -1;
|
1436
|
+
}
|
1437
|
+
|
1438
|
+
// all other nodes are not empty if they contain at least one child which is not empty
|
1439
|
+
for (var i = 0, childNodes = domObject.childNodes.length; i < childNodes; ++i) {
|
1440
|
+
if (!this.isEmpty(domObject.childNodes[i])) {
|
1441
|
+
return false;
|
1442
|
+
}
|
1443
|
+
}
|
1444
|
+
|
1445
|
+
// found no contents, so the element is empty
|
1446
|
+
return true;
|
1447
|
+
},
|
1448
|
+
|
1449
|
+
/**
|
1450
|
+
* Set the cursor (collapsed selection) right after the given DOM object
|
1451
|
+
* @param domObject DOM object
|
1452
|
+
* @method
|
1453
|
+
*/
|
1454
|
+
setCursorAfter: function (domObject) {
|
1455
|
+
var
|
1456
|
+
newRange = new GENTICS.Utils.RangeObject(),
|
1457
|
+
index = this.getIndexInParent(domObject),
|
1458
|
+
targetNode,
|
1459
|
+
offset;
|
1460
|
+
|
1461
|
+
// selection cannot be set between to TEXT_NODEs
|
1462
|
+
// if domOject is a Text node set selection at last position in that node
|
1463
|
+
if ( domObject.nodeType == 3) {
|
1464
|
+
targetNode = domObject;
|
1465
|
+
offset = targetNode.nodeValue.length;
|
1466
|
+
|
1467
|
+
// if domOject is a Text node set selection at last position in that node
|
1468
|
+
} else if ( domObject.nextSibling && domObject.nextSibling.nodeType == 3) {
|
1469
|
+
targetNode = domObject.nextSibling;
|
1470
|
+
offset = 0;
|
1471
|
+
} else {
|
1472
|
+
targetNode = domObject.parentNode;
|
1473
|
+
offset = this.getIndexInParent(domObject) + 1;
|
1474
|
+
}
|
1475
|
+
|
1476
|
+
newRange.startContainer = newRange.endContainer = targetNode;
|
1477
|
+
newRange.startOffset = newRange.endOffset = offset;
|
1478
|
+
|
1479
|
+
// select the range
|
1480
|
+
newRange.select();
|
1481
|
+
|
1482
|
+
return newRange;
|
1483
|
+
},
|
1484
|
+
|
1485
|
+
/**
|
1486
|
+
* Select a DOM node
|
1487
|
+
* will create a new range which spans the provided dom node and selects it afterwards
|
1488
|
+
* @param domObject DOM object
|
1489
|
+
* @method
|
1490
|
+
*/
|
1491
|
+
selectDomNode: function (domObject) {
|
1492
|
+
var newRange = new GENTICS.Utils.RangeObject();
|
1493
|
+
newRange.startContainer = newRange.endContainer = domObject.parentNode;
|
1494
|
+
newRange.startOffset = this.getIndexInParent(domObject);
|
1495
|
+
newRange.endOffset = newRange.startOffset + 1;
|
1496
|
+
newRange.select();
|
1497
|
+
},
|
1498
|
+
|
1499
|
+
/**
|
1500
|
+
* Set the cursor (collapsed selection) at the start into the given DOM object
|
1501
|
+
* @param domObject DOM object
|
1502
|
+
* @method
|
1503
|
+
*/
|
1504
|
+
setCursorInto: function (domObject) {
|
1505
|
+
// set a new range into the given dom object
|
1506
|
+
var newRange = new GENTICS.Utils.RangeObject();
|
1507
|
+
newRange.startContainer = newRange.endContainer = domObject;
|
1508
|
+
newRange.startOffset = newRange.endOffset = 0;
|
1509
|
+
|
1510
|
+
// select the range
|
1511
|
+
newRange.select();
|
1512
|
+
},
|
1513
|
+
|
1514
|
+
|
1515
|
+
/**
|
1516
|
+
* "An editing host is a node that is either an Element with a contenteditable
|
1517
|
+
* attribute set to the true state, or the Element child of a Document whose
|
1518
|
+
* designMode is enabled."
|
1519
|
+
* @param domObject DOM object
|
1520
|
+
* @method
|
1521
|
+
*/
|
1522
|
+
isEditingHost: function (node) {
|
1523
|
+
return node
|
1524
|
+
&& node.nodeType == 1 //ELEMENT_NODE
|
1525
|
+
&& (node.contentEditable == "true"
|
1526
|
+
|| (node.parentNode
|
1527
|
+
&& node.parentNode.nodeType == 9 //DOCUEMENT_NODE
|
1528
|
+
&& node.parentNode.designMode == "on"));
|
1529
|
+
},
|
1530
|
+
|
1531
|
+
/**
|
1532
|
+
* "Something is editable if it is a node which is not an editing host, does
|
1533
|
+
* not have a contenteditable attribute set to the false state, and whose
|
1534
|
+
* parent is an editing host or editable."
|
1535
|
+
* @param domObject DOM object
|
1536
|
+
* @method
|
1537
|
+
*/
|
1538
|
+
isEditable: function (node) {
|
1539
|
+
// This is slightly a lie, because we're excluding non-HTML elements with
|
1540
|
+
// contentEditable attributes.
|
1541
|
+
return node
|
1542
|
+
&& !this.isEditingHost(node)
|
1543
|
+
&& (node.nodeType != 1 || node.contentEditable != "false") // ELEMENT_NODE
|
1544
|
+
&& (this.isEditingHost(node.parentNode) || this.isEditable(node.parentNode));
|
1545
|
+
},
|
1546
|
+
|
1547
|
+
/**
|
1548
|
+
* "The editing host of node is null if node is neither editable nor an editing
|
1549
|
+
* host; node itself, if node is an editing host; or the nearest ancestor of
|
1550
|
+
* node that is an editing host, if node is editable."
|
1551
|
+
* @param domObject DOM object
|
1552
|
+
* @method
|
1553
|
+
*/
|
1554
|
+
getEditingHostOf: function(node) {
|
1555
|
+
if (this.isEditingHost(node)) {
|
1556
|
+
return node;
|
1557
|
+
} else if (this.isEditable(node)) {
|
1558
|
+
var ancestor = node.parentNode;
|
1559
|
+
while (!this.isEditingHost(ancestor)) {
|
1560
|
+
ancestor = ancestor.parentNode;
|
1561
|
+
}
|
1562
|
+
return ancestor;
|
1563
|
+
} else {
|
1564
|
+
return null;
|
1565
|
+
}
|
1566
|
+
},
|
1567
|
+
|
1568
|
+
/**
|
1569
|
+
*
|
1570
|
+
* "Two nodes are in the same editing host if the editing host of the first is
|
1571
|
+
* non-null and the same as the editing host of the second."
|
1572
|
+
* @param node1 DOM object
|
1573
|
+
* @param node2 DOM object
|
1574
|
+
* @method
|
1575
|
+
*/
|
1576
|
+
inSameEditingHost: function (node1, node2) {
|
1577
|
+
return this.getEditingHostOf(node1)
|
1578
|
+
&& this.getEditingHostOf(node1) == this.getEditingHostOf(node2);
|
1579
|
+
},
|
1580
|
+
|
1581
|
+
// "A block node is either an Element whose "display" property does not have
|
1582
|
+
// resolved value "inline" or "inline-block" or "inline-table" or "none", or a
|
1583
|
+
// Document, or a DocumentFragment."
|
1584
|
+
isBlockNode: function (node) {
|
1585
|
+
return node
|
1586
|
+
&& ((node.nodeType == $_.Node.ELEMENT_NODE && $_( ["inline", "inline-block", "inline-table", "none"] ).indexOf($_.getComputedStyle(node).display) == -1)
|
1587
|
+
|| node.nodeType == $_.Node.DOCUMENT_NODE
|
1588
|
+
|| node.nodeType == $_.Node.DOCUMENT_FRAGMENT_NODE);
|
1589
|
+
},
|
1590
|
+
|
1591
|
+
/**
|
1592
|
+
* Get the first visible child of the given node.
|
1593
|
+
* @param node node
|
1594
|
+
* @param includeNode when set to true, the node itself may be returned, otherwise only children are allowed
|
1595
|
+
* @return first visible child or null if none found
|
1596
|
+
*/
|
1597
|
+
getFirstVisibleChild: function (node, includeNode) {
|
1598
|
+
// no node -> no child
|
1599
|
+
if (!node) {
|
1600
|
+
return null;
|
1601
|
+
}
|
1602
|
+
|
1603
|
+
// check whether the node itself is visible
|
1604
|
+
if ((node.nodeType == $_.Node.TEXT_NODE && this.isEmpty(node))
|
1605
|
+
|| (node.nodeType == $_.Node.ELEMENT_NODE && node.offsetHeight == 0 && jQuery.inArray(node.nodeName.toLowerCase(), this.nonEmptyTags) === -1)) {
|
1606
|
+
return null;
|
1607
|
+
}
|
1608
|
+
|
1609
|
+
// if the node is a text node, or does not have children, or is not editable, it is the first visible child
|
1610
|
+
if (node.nodeType == $_.Node.TEXT_NODE
|
1611
|
+
|| (node.nodeType == $_.Node.ELEMENT_NODE && node.childNodes.length == 0)
|
1612
|
+
|| !jQuery(node).contentEditable()) {
|
1613
|
+
return includeNode ? node : null;
|
1614
|
+
}
|
1615
|
+
|
1616
|
+
// otherwise traverse through the children
|
1617
|
+
for (var i = 0; i < node.childNodes.length; ++i) {
|
1618
|
+
var visibleChild = this.getFirstVisibleChild(node.childNodes[i], true);
|
1619
|
+
if (visibleChild != null) {
|
1620
|
+
return visibleChild;
|
1621
|
+
}
|
1622
|
+
}
|
1623
|
+
|
1624
|
+
return null;
|
1625
|
+
},
|
1626
|
+
|
1627
|
+
/**
|
1628
|
+
* Get the last visible child of the given node.
|
1629
|
+
* @param node node
|
1630
|
+
* @param includeNode when set to true, the node itself may be returned, otherwise only children are allowed
|
1631
|
+
* @return last visible child or null if none found
|
1632
|
+
*/
|
1633
|
+
getLastVisibleChild: function (node, includeNode) {
|
1634
|
+
// no node -> no child
|
1635
|
+
if (!node) {
|
1636
|
+
return null;
|
1637
|
+
}
|
1638
|
+
|
1639
|
+
// check whether the node itself is visible
|
1640
|
+
if ((node.nodeType == $_.Node.TEXT_NODE && this.isEmpty(node))
|
1641
|
+
|| (node.nodeType == $_.Node.ELEMENT_NODE && node.offsetHeight == 0 && jQuery.inArray(node.nodeName.toLowerCase(), this.nonEmptyTags) === -1)) {
|
1642
|
+
return null;
|
1643
|
+
}
|
1644
|
+
|
1645
|
+
// if the node is a text node, or does not have children, or is not editable, it is the first visible child
|
1646
|
+
if (node.nodeType == $_.Node.TEXT_NODE
|
1647
|
+
|| (node.nodeType == $_.Node.ELEMENT_NODE && node.childNodes.length == 0)
|
1648
|
+
|| !jQuery(node).contentEditable()) {
|
1649
|
+
return includeNode ? node : null;
|
1650
|
+
}
|
1651
|
+
|
1652
|
+
// otherwise traverse through the children
|
1653
|
+
for (var i = node.childNodes.length - 1; i >= 0; --i) {
|
1654
|
+
var visibleChild = this.getLastVisibleChild(node.childNodes[i], true);
|
1655
|
+
if (visibleChild != null) {
|
1656
|
+
return visibleChild;
|
1657
|
+
}
|
1658
|
+
}
|
1659
|
+
|
1660
|
+
return null;
|
1661
|
+
}
|
1662
|
+
});
|
1663
|
+
|
1664
|
+
|
1665
|
+
/**
|
1666
|
+
* Create the singleton object
|
1667
|
+
* @hide
|
1668
|
+
*/
|
1669
|
+
GENTICS.Utils.Dom = new Dom();
|
1670
|
+
|
1671
|
+
return GENTICS.Utils.Dom;
|
1672
|
+
|
1673
|
+
});
|