skylinecms 3.0.8 → 3.1.0
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/CHANGELOG +131 -10
- data/README.md +1 -2
- data/Rakefile +3 -3
- data/app/controllers/skyline/application_controller.rb +40 -4
- data/app/controllers/skyline/articles_controller.rb +4 -4
- data/app/controllers/skyline/browser/tabs/media_library/media_files_controller.rb +1 -1
- data/app/controllers/skyline/content_controller.rb +4 -3
- data/app/controllers/skyline/{media_files_data_controller.rb → media/data_controller.rb} +61 -59
- data/app/controllers/skyline/media/dirs_controller.rb +83 -0
- data/app/controllers/skyline/media/files_controller.rb +80 -0
- data/app/controllers/skyline/sections_controller.rb +10 -3
- data/app/controllers/skyline/settings_controller.rb +4 -2
- data/app/controllers/skyline/user_preferences_controller.rb +18 -0
- data/app/controllers/skyline/users_controller.rb +1 -1
- data/app/controllers/skyline/variant_current_editor_controller.rb +2 -0
- data/app/helpers/skyline/application_helper.rb +39 -35
- data/app/helpers/skyline/dialog_helper.rb +11 -10
- data/app/helpers/skyline/editors/boolean.rb +2 -2
- data/app/helpers/skyline/editors/page_browser.rb +2 -0
- data/app/helpers/skyline/editors/wysiwyg.rb +1 -1
- data/app/helpers/skyline/js_layout_helper.rb +19 -0
- data/app/helpers/skyline/media/dirs_helper.rb +2 -0
- data/app/helpers/skyline/media/files_helper.rb +6 -0
- data/app/helpers/skyline/media_files_helper.rb +2 -2
- data/app/helpers/skyline/menu_helper.rb +33 -0
- data/app/helpers/skyline/message_generator.rb +5 -1
- data/app/helpers/skyline/notification_generator.rb +6 -0
- data/app/helpers/skyline/plugin_helper.rb +21 -0
- data/app/helpers/skyline/presenters/presenter.rb +4 -13
- data/app/helpers/skyline/presenters/table.rb +0 -27
- data/app/helpers/skyline/ref_object_helper.rb +2 -2
- data/app/helpers/skyline/tree_helper.rb +74 -5
- data/app/models/skyline/article.rb +18 -6
- data/app/models/skyline/article_version.rb +1 -1
- data/app/models/skyline/image_ref.rb +9 -5
- data/app/models/skyline/inline_ref.rb +3 -2
- data/app/models/skyline/link_section_link.rb +2 -2
- data/app/models/skyline/media_file.rb +33 -10
- data/app/models/skyline/page.rb +10 -9
- data/app/models/skyline/section.rb +1 -1
- data/app/models/skyline/sections/content_collection_section.rb +1 -1
- data/app/models/skyline/sections/content_item_section.rb +1 -1
- data/app/models/skyline/sections/heading_section.rb +1 -1
- data/app/models/skyline/sections/iframe_section.rb +2 -2
- data/app/models/skyline/sections/link_section.rb +1 -1
- data/app/models/skyline/sections/media_section.rb +32 -5
- data/app/models/skyline/sections/page_fragment_section.rb +1 -1
- data/app/models/skyline/sections/raw_section.rb +1 -1
- data/app/models/skyline/sections/redirect_section.rb +4 -4
- data/app/models/skyline/sections/rss_section.rb +7 -2
- data/app/models/skyline/sections/splitter_section.rb +1 -1
- data/app/models/skyline/sections/wysiwyg_section.rb +3 -3
- data/app/models/skyline/site.rb +1 -1
- data/app/models/skyline/user.rb +1 -1
- data/app/models/skyline/user_preference.rb +69 -0
- data/app/models/skyline/variant.rb +1 -1
- data/app/templates/skyline/sections/content_item_section/default/index.html.erb +1 -1
- data/app/templates/skyline/sections/media_section/default/index.html.erb +9 -9
- data/app/views/skyline/articles/_list.html.erb +34 -0
- data/app/views/skyline/articles/edit.html.erb +13 -6
- data/app/views/skyline/articles/index.html.erb +12 -43
- data/app/views/skyline/articles/page/_index.html.erb +13 -11
- data/app/views/skyline/authentications/new.html.erb +2 -2
- data/app/views/skyline/browser/links/_index.html.erb +4 -2
- data/app/views/skyline/browser/tabs/media_library/_index.html.erb +12 -13
- data/app/views/skyline/browser/tabs/media_library/media_files/_index.html.erb +122 -51
- data/app/views/skyline/browser/tabs/media_library/media_files/_show.html.erb +7 -7
- data/app/views/skyline/content/list.rhtml +1 -3
- data/app/views/skyline/content/presenters/_table.html.erb +45 -0
- data/app/views/skyline/layouts/content.html.erb +1 -1
- data/app/views/skyline/layouts/media.html.erb +2 -1
- data/app/views/skyline/layouts/pages.html.erb +10 -0
- data/app/views/skyline/link_section_links/_form.html.erb +0 -1
- data/app/views/skyline/locales/show.js.erb +2 -2
- data/app/views/skyline/media/dirs/_edit.html.erb +42 -0
- data/app/views/skyline/media/dirs/_index.html.erb +14 -0
- data/app/views/skyline/media/dirs/_show.html.erb +34 -0
- data/app/views/skyline/media/dirs/index.html.erb +36 -0
- data/app/views/skyline/media/files/_edit.html.erb +101 -0
- data/app/views/skyline/media/files/_index.html.erb +68 -0
- data/app/views/skyline/media/files/_new.html.erb +45 -0
- data/app/views/skyline/publications/_index.html.erb +2 -2
- data/app/views/skyline/sections/_media_section.html.erb +12 -2
- data/app/views/skyline/sections/_wysiwyg_section.html.erb +2 -3
- data/app/views/skyline/settings/index.html +14 -0
- data/app/views/skyline/shared/_head.html.erb +2 -0
- data/app/views/skyline/shared/_header_area.html.erb +7 -5
- data/app/views/skyline/users/index.html.erb +31 -16
- data/config/initializers/dependencies.rb +6 -1
- data/config/initializers/observers.rb +1 -2
- data/config/initializers/rails_defaults.rb +1 -1
- data/config/locales/en-US.yml +110 -68
- data/config/locales/nl-NL.yml +117 -77
- data/config/routes.rb +36 -32
- data/db/fixtures/roles_and_rights.rb +65 -40
- data/db/migrate/20090302102548_add_media_nodes.rb +2 -2
- data/db/migrate/20090309133933_add_description_to_media_nodes.rb +2 -2
- data/db/migrate/20090309134731_add_tags.rb +2 -2
- data/db/migrate/20090309135746_create_media_files_tags.rb +2 -2
- data/db/migrate/20090319091342_create_media_caches.rb +2 -2
- data/db/migrate/20090327083240_create_users.rb +2 -2
- data/db/migrate/20090327084656_create_roles.rb +2 -2
- data/db/migrate/20090327084719_create_rights.rb +2 -2
- data/db/migrate/20090327084739_create_grants.rb +2 -2
- data/db/migrate/20090327090918_create_rights_roles.rb +2 -2
- data/db/migrate/20090408115155_create_ref_objects.rb +2 -2
- data/db/migrate/20090504140044_create_test_sections.rb +2 -2
- data/db/migrate/20090506083107_add_refering_column_name_to_ref_objects.rb +2 -2
- data/db/migrate/20090706124019_add_skyline_media_node_title.rb +1 -1
- data/db/migrate/20090904121447_create_skyline_referable_uris.rb +6 -6
- data/db/migrate/20091221145204_add_skyline_media_section_link.rb +11 -0
- data/db/migrate/20100109145958_add_associated_tags_index.rb +9 -0
- data/db/migrate/20100115111440_create_skyline_user_preferences.rb +14 -0
- data/db/migrate/20100120113953_remove_unused_articles_index.rb +9 -0
- data/db/migrate/20100409073447_change_referable_uri_to_text.rb +9 -0
- data/doc/Bundler.md +33 -28
- data/doc/MIGRATION.md +48 -0
- data/lib/skyline/{content_item.rb → belongs_to_referable.rb} +57 -88
- data/lib/skyline/configuration.rb +14 -15
- data/lib/skyline/content/content.rb +14 -2
- data/lib/skyline/deprecated/version3_0_8.rb +106 -0
- data/lib/skyline/{form_builder_with_errors.rb → form_builder.rb} +5 -5
- data/lib/skyline/{referable.rb → has_many_referables_in.rb} +22 -12
- data/lib/skyline/javascript_generator_methods.rb +1 -1
- data/lib/skyline/plugins_manager.rb +135 -14
- data/lib/skyline/rendering/helpers/renderer_helper.rb +14 -9
- data/lib/skyline/{renderer.rb → rendering/renderer.rb} +3 -4
- data/lib/skyline/{renderable_scope_interface.rb → rendering/scopes/interface.rb} +1 -1
- data/lib/skyline/{wildcard_renderable_scope.rb → rendering/scopes/wildcard.rb} +3 -3
- data/lib/skyline/{section_item.rb → sections/interface.rb} +17 -10
- data/lib/skyline/settings.rb +29 -19
- data/lib/skyline/taggable.rb +3 -3
- data/lib/skyline/version.rb +2 -2
- data/{tasks → lib/tasks}/database.rake +14 -2
- data/{tasks → lib/tasks}/implementation.rake +0 -0
- data/lib/tasks/testing.rake +41 -0
- data/public/skyline/images/backgrounds/panel-dt.gif +0 -0
- data/public/skyline/javascripts/src/application.js +114 -120
- data/public/skyline/javascripts/src/browser.js +22 -4
- data/public/skyline/javascripts/src/library_uploader.js +13 -3
- data/public/skyline/javascripts/src/sections.js +57 -6
- data/public/skyline/javascripts/src/skyline/src/dialog.js +6 -0
- data/public/skyline/javascripts/src/skyline/src/drag.js +6 -0
- data/public/skyline/javascripts/src/skyline/src/events.js +50 -0
- data/public/skyline/javascripts/src/skyline/src/field_replicator.js +12 -11
- data/public/skyline/javascripts/src/skyline/src/layout.js +172 -30
- data/public/skyline/javascripts/src/skyline/src/menu.js +3 -0
- data/public/skyline/javascripts/src/skyline/src/menubutton.js +3 -0
- data/public/skyline/javascripts/src/skyline/src/skyline.js +3 -0
- data/public/skyline/javascripts/src/skyline/src/table.js +398 -0
- data/public/skyline/javascripts/src/skyline/src/tabs.js +2 -2
- data/public/skyline/javascripts/src/skyline/src/tag_selector.js +34 -26
- data/public/skyline/javascripts/src/skyline/src/tree.js +3 -0
- data/public/skyline/javascripts/src/skyline/src/uploader.js +2 -2
- data/public/skyline/javascripts/src/skyline/src/utils.js +3 -0
- data/public/skyline/javascripts/src/skyline/test/_dynamic_right.html +24 -0
- data/public/skyline/javascripts/src/skyline/test/_right_content.html +1 -0
- data/public/skyline/javascripts/src/skyline/test/basic_layout.html +190 -0
- data/public/skyline/javascripts/src/skyline/test/dialog.html +101 -0
- data/public/skyline/javascripts/src/skyline/test/draggablefiles.html +196 -0
- data/public/skyline/javascripts/src/skyline/test/dynamic_layout.html +89 -0
- data/public/skyline/javascripts/src/skyline/test/field_replicator.html +60 -0
- data/public/skyline/javascripts/src/skyline/test/last-closed.gif +0 -0
- data/public/skyline/javascripts/src/skyline/test/last-open.gif +0 -0
- data/public/skyline/javascripts/src/skyline/test/menubutton.html +81 -0
- data/public/skyline/javascripts/src/skyline/test/middle.gif +0 -0
- data/public/skyline/javascripts/src/skyline/test/sortable.html +121 -0
- data/public/skyline/javascripts/src/skyline/test/table.html +521 -0
- data/public/skyline/javascripts/src/skyline/test/tagselector.html +72 -0
- data/public/skyline/javascripts/src/skyline/test/toggle.html +95 -0
- data/public/skyline/javascripts/src/skyline/test/tree.html +310 -0
- data/public/skyline/javascripts/src/skyline/test/tree.png +0 -0
- data/public/skyline/javascripts/src/skyline/test/undohtml.css +27 -0
- data/public/skyline/javascripts/src/skyline/vendor/fancyupload/Swiff.Uploader.js +2 -2
- data/public/skyline/javascripts/src/skyline/vendor/mootools/mootools-core.js +1 -354
- data/public/skyline/javascripts/src/skyline/vendor/mootools/mootools-more.js +64 -52
- data/public/skyline/javascripts/src/skyline.editor/assets/content.css +1 -1
- data/public/skyline/javascripts/src/skyline.editor/src/script_loader.js +156 -75
- data/public/skyline/javascripts/src/skyline.editor/src/skyline.editor.js +14 -4
- data/public/skyline/javascripts/src/skyline.editor/src/theme.js +8 -0
- data/public/skyline/javascripts/src/skyline.editor/test/dialog.html +28 -0
- data/public/skyline/javascripts/src/skyline.editor/test/lorem.html +7 -0
- data/public/skyline/javascripts/src/skyline.editor/test/multiple_editors.html +87 -0
- data/public/skyline/javascripts/src/skyline.editor/test/undohtml.css +27 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/changelog.txt +205 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/css/content.css +54 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/custom_formats.html +111 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/full.html +19 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/menu.html +1 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/simple.html +6 -2
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/skins.html +14 -10
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/translate.html +7 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/word.html +8 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/langs/en.js +18 -2
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js +1 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js +154 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js +52 -44
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js +388 -17
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js +4 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js +58 -6
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js +8 -5
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js +10 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js +18 -8
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js +12 -6
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm +0 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js +1 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js +136 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js +18 -9
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/media.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js +7 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js +564 -124
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm +2 -8
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm +2 -8
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js +7 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js +4 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm +4 -9
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js +106 -27
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js +6 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/style/props.htm +4 -11
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js +7 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/cell.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js +921 -918
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js +41 -24
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js +18 -20
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/row.js +48 -23
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/table.js +24 -15
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm +3 -8
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/row.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/table.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js +10 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/template.htm +2 -9
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js +26 -16
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js +1 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js +98 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm +3 -10
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm +3 -10
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm +3 -10
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm +3 -11
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +11 -15
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm +3 -11
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js +8 -5
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js +7 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js +7 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js +7 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js +7 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js +8 -8
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js +7 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/about.htm +1 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm +0 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm +2 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js +252 -188
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/image.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif +0 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js +7 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js +10 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js +2 -2
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js +4 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/link.htm +2 -7
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css +7 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css +4 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css +5 -6
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css +7 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +3 -2
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +4 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm +2 -8
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js +5 -5
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_popup.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_src.js +5492 -4341
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/utils/editable_selects.js +5 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/utils/form_utils.js +6 -5
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/utils/mctabs.js +5 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/utils/validate.js +5 -4
- data/public/skyline/javascripts/src/skyline.js +3 -1
- data/public/skyline/javascripts/src/user_preferences.js +49 -0
- data/public/skyline/stylesheets/general.css +149 -47
- data/rails/init.rb +3 -3
- data/test/factories.rb +28 -0
- data/test/integration/media_browser_super_access_test.rb +52 -0
- data/test/integration/media_browser_user_access_test.rb +50 -0
- data/test/integration/user_preferences_test.rb +73 -0
- data/test/mocks/test_content_object.rb +32 -0
- data/test/mocks/test_section.rb +22 -0
- data/test/test_helper.rb +60 -0
- data/test/unit/inline_ref_test.rb +195 -0
- data/test/unit/locales_test.rb +82 -0
- data/test/unit/page_test.rb +204 -0
- data/test/unit/test_content_object_test.rb +69 -0
- data/test/unit/test_section_test.rb +247 -0
- data/test/unit/user_preference_test.rb +123 -0
- data/test/unit/user_test.rb +74 -0
- data/test/user_access_helper.rb +36 -0
- data/vendor/digitpaint/personify/test/fixtures/multiple_tags.txt +8 -0
- data/vendor/digitpaint/personify/test/parse_runner.rb +25 -0
- data/vendor/digitpaint/personify/test/parser_test.rb +109 -0
- data/vendor/digitpaint/personify/test/test_helper.rb +16 -0
- data/vendor/digitpaint/personify/vendor/treetop/.gitignore +5 -0
- data/vendor/mootools-on-rails/lib/mootools_on_rails/mootools_helper.rb +13 -4
- data/vendor/mootools-on-rails/test/mootools_helper_test.rb +138 -0
- data/vendor/mootools-on-rails/test/test_helper.rb +5 -0
- data/vendor/weppos/url_validation.rb +76 -0
- metadata +384 -189
- data/app/controllers/skyline/media_dirs_controller.rb +0 -56
- data/app/controllers/skyline/media_files_controller.rb +0 -87
- data/app/helpers/skyline/presenters/article_list.rb +0 -139
- data/app/observers/skyline/media_file_observer.rb +0 -32
- data/app/views/skyline/media_dirs/_edit.html.erb +0 -25
- data/app/views/skyline/media_dirs/_index.html.erb +0 -14
- data/app/views/skyline/media_dirs/index.html.erb +0 -42
- data/app/views/skyline/media_files/_edit.html.erb +0 -75
- data/app/views/skyline/media_files/_header.html.erb +0 -3
- data/app/views/skyline/media_files/_index.html.erb +0 -51
- data/app/views/skyline/media_files/_new.html.erb +0 -50
- data/db/migrate/20090603104115_prefix_tables_for_skyline.rb +0 -30
- data/lib/skyline/indexer.rb +0 -36
- data/lib/skyline/renderable_scope.rb +0 -27
- data/lib/skyline/rendering/helpers/settings_helper.rb +0 -26
- data/lib/skyline/searchable_item.rb +0 -132
- data/lib/skyline/url_validation.rb +0 -66
- data/public/skyline/images/backgrounds/splitter.gif +0 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/build.bat +0 -2
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/build.xml +0 -364
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/full_jquery.html +0 -94
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/AddOnManager.js +0 -95
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/CommandManager.js +0 -54
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ControlManager.js +0 -489
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/Developer.js +0 -91
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/Editor.js +0 -2295
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/EditorCommands.js +0 -934
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/EditorManager.js +0 -453
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ForceBlocks.js +0 -644
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/Popup.js +0 -412
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/UndoManager.js +0 -183
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/WindowManager.js +0 -169
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/adapter/jquery/adapter.js +0 -240
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/adapter/jquery/jquery.tinymce.js +0 -179
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/adapter/prototype/adapter.js +0 -38
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/BlockQuote.js +0 -135
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/CutCopyPaste.js +0 -24
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/InsertHorizontalRule.js +0 -15
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/RemoveFormat.js +0 -173
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/UndoRedo.js +0 -38
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/DOMUtils.js +0 -1823
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Element.js +0 -199
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/EventUtils.js +0 -349
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Range.js +0 -721
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/ScriptLoader.js +0 -351
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Selection.js +0 -747
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Serializer.js +0 -979
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Sizzle.js +0 -975
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/StringWriter.js +0 -200
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/TridentSelection.js +0 -273
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/XMLWriter.js +0 -155
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/firebug/firebug-lite.js +0 -2518
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/tinymce.js +0 -549
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Button.js +0 -68
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/ColorSplitButton.js +0 -212
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Container.js +0 -56
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Control.js +0 -182
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/DropMenu.js +0 -397
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/ListBox.js +0 -320
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Menu.js +0 -175
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/MenuButton.js +0 -128
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/MenuItem.js +0 -69
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/NativeListBox.js +0 -198
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Separator.js +0 -34
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/SplitButton.js +0 -99
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Toolbar.js +0 -86
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/Cookie.js +0 -126
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/Dispatcher.js +0 -101
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/JSON.js +0 -81
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/JSONP.js +0 -25
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/JSONRequest.js +0 -87
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/URI.js +0 -289
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/XHR.js +0 -80
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/xml/Parser.js +0 -126
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/jquery.tinymce.js +0 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin.js +0 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin_src.js +0 -616
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/safari/blank.htm +0 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js +0 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js +0 -438
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_dev.js +0 -128
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_jquery.js +0 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_jquery_src.js +0 -12198
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_prototype.js +0 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_prototype_src.js +0 -13057
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/api.html +0 -18
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/api_jquery.html +0 -18
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/api_prototype.html +0 -19
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/basic.html +0 -548
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/crossdomain.html +0 -87
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/css/unit.css +0 -120
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/index.html +0 -10
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/jquery_plugin.html +0 -112
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/js/api.js +0 -1438
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/js/testrunner.js +0 -791
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/main.html +0 -8
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/media.html +0 -221
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/menu.html +0 -22
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/parts.html +0 -90
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/paste.html +0 -132
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/performance.html +0 -152
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/range.html +0 -522
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/removeformat.html +0 -88
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/selection.html +0 -235
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/config.ini +0 -27
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/footer.html +0 -3
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/header.html +0 -6
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/index.php +0 -1
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/instructions.txt +0 -4
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/logo.png +0 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/selectors.list +0 -40
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/style.css +0 -181
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/system/index.php +0 -112
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/system/slickspeed.js +0 -147
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/system/template.php +0 -47
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/template.html +0 -2865
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/test.xml +0 -6
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/ant-contrib.jar +0 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/js_build_tools.jar +0 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/svnClientAdapter.jar +0 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/svnant.jar +0 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/svnjavahl.jar +0 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/svnkit.jar +0 -0
- data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/yuicompressor.jar +0 -0
|
@@ -1,16 +1,46 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* editor_plugin_src.js
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Copyright 2009, Moxiecode Systems AB
|
|
5
|
+
* Released under LGPL License.
|
|
6
|
+
*
|
|
7
|
+
* License: http://tinymce.moxiecode.com/license
|
|
8
|
+
* Contributing: http://tinymce.moxiecode.com/contributing
|
|
6
9
|
*/
|
|
7
10
|
|
|
8
11
|
(function() {
|
|
9
|
-
var each = tinymce.each
|
|
12
|
+
var each = tinymce.each,
|
|
13
|
+
entities = null,
|
|
14
|
+
defs = {
|
|
15
|
+
paste_auto_cleanup_on_paste : true,
|
|
16
|
+
paste_block_drop : false,
|
|
17
|
+
paste_retain_style_properties : "none",
|
|
18
|
+
paste_strip_class_attributes : "mso",
|
|
19
|
+
paste_remove_spans : false,
|
|
20
|
+
paste_remove_styles : false,
|
|
21
|
+
paste_remove_styles_if_webkit : true,
|
|
22
|
+
paste_convert_middot_lists : true,
|
|
23
|
+
paste_convert_headers_to_strong : false,
|
|
24
|
+
paste_dialog_width : "450",
|
|
25
|
+
paste_dialog_height : "400",
|
|
26
|
+
paste_text_use_dialog : false,
|
|
27
|
+
paste_text_sticky : false,
|
|
28
|
+
paste_text_notifyalways : false,
|
|
29
|
+
paste_text_linebreaktype : "p",
|
|
30
|
+
paste_text_replacements : [
|
|
31
|
+
[/\u2026/g, "..."],
|
|
32
|
+
[/[\x93\x94\u201c\u201d]/g, '"'],
|
|
33
|
+
[/[\x60\x91\x92\u2018\u2019]/g, "'"]
|
|
34
|
+
]
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
function getParam(ed, name) {
|
|
38
|
+
return ed.getParam(name, defs[name]);
|
|
39
|
+
}
|
|
10
40
|
|
|
11
41
|
tinymce.create('tinymce.plugins.PastePlugin', {
|
|
12
42
|
init : function(ed, url) {
|
|
13
|
-
var t = this
|
|
43
|
+
var t = this;
|
|
14
44
|
|
|
15
45
|
t.editor = ed;
|
|
16
46
|
t.url = url;
|
|
@@ -33,8 +63,12 @@
|
|
|
33
63
|
ed.execCallback('paste_postprocess', pl, o);
|
|
34
64
|
});
|
|
35
65
|
|
|
66
|
+
// Initialize plain text flag
|
|
67
|
+
ed.pasteAsPlainText = false;
|
|
68
|
+
|
|
36
69
|
// This function executes the process handlers and inserts the contents
|
|
37
|
-
|
|
70
|
+
// force_rich overrides plain text mode set by user, important for pasting with execCommand
|
|
71
|
+
function process(o, force_rich) {
|
|
38
72
|
var dom = ed.dom;
|
|
39
73
|
|
|
40
74
|
// Execute pre process handlers
|
|
@@ -49,29 +83,69 @@
|
|
|
49
83
|
// Serialize content
|
|
50
84
|
o.content = ed.serializer.serialize(o.node, {getInner : 1});
|
|
51
85
|
|
|
52
|
-
//
|
|
53
|
-
if (
|
|
86
|
+
// Plain text option active?
|
|
87
|
+
if ((!force_rich) && (ed.pasteAsPlainText)) {
|
|
88
|
+
t._insertPlainText(ed, dom, o.content);
|
|
89
|
+
|
|
90
|
+
if (!getParam(ed, "paste_text_sticky")) {
|
|
91
|
+
ed.pasteAsPlainText = false;
|
|
92
|
+
ed.controlManager.setActive("pastetext", false);
|
|
93
|
+
}
|
|
94
|
+
} else if (/<(p|h[1-6]|ul|ol)/.test(o.content)) {
|
|
95
|
+
// Handle insertion of contents containing block elements separately
|
|
54
96
|
t._insertBlockContent(ed, dom, o.content);
|
|
55
|
-
else
|
|
97
|
+
} else {
|
|
56
98
|
t._insert(o.content);
|
|
57
|
-
|
|
99
|
+
}
|
|
100
|
+
}
|
|
58
101
|
|
|
59
102
|
// Add command for external usage
|
|
60
103
|
ed.addCommand('mceInsertClipboardContent', function(u, o) {
|
|
61
|
-
process(o);
|
|
104
|
+
process(o, true);
|
|
62
105
|
});
|
|
63
106
|
|
|
107
|
+
if (!getParam(ed, "paste_text_use_dialog")) {
|
|
108
|
+
ed.addCommand('mcePasteText', function(u, v) {
|
|
109
|
+
var cookie = tinymce.util.Cookie;
|
|
110
|
+
|
|
111
|
+
ed.pasteAsPlainText = !ed.pasteAsPlainText;
|
|
112
|
+
ed.controlManager.setActive('pastetext', ed.pasteAsPlainText);
|
|
113
|
+
|
|
114
|
+
if ((ed.pasteAsPlainText) && (!cookie.get("tinymcePasteText"))) {
|
|
115
|
+
if (getParam(ed, "paste_text_sticky")) {
|
|
116
|
+
ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky'));
|
|
117
|
+
} else {
|
|
118
|
+
ed.windowManager.alert(ed.translate('paste.plaintext_mode_sticky'));
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (!getParam(ed, "paste_text_notifyalways")) {
|
|
122
|
+
cookie.set("tinymcePasteText", "1", new Date(new Date().getFullYear() + 1, 12, 31))
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
ed.addButton('pastetext', {title: 'paste.paste_text_desc', cmd: 'mcePasteText'});
|
|
129
|
+
ed.addButton('selectall', {title: 'paste.selectall_desc', cmd: 'selectall'});
|
|
130
|
+
|
|
64
131
|
// This function grabs the contents from the clipboard by adding a
|
|
65
132
|
// hidden div and placing the caret inside it and after the browser paste
|
|
66
133
|
// is done it grabs that contents and processes that
|
|
67
134
|
function grabContent(e) {
|
|
68
135
|
var n, or, rng, sel = ed.selection, dom = ed.dom, body = ed.getBody(), posY;
|
|
69
136
|
|
|
137
|
+
// Check if browser supports direct plaintext access
|
|
138
|
+
if (ed.pasteAsPlainText && (e.clipboardData || dom.doc.dataTransfer)) {
|
|
139
|
+
e.preventDefault();
|
|
140
|
+
process({content : (e.clipboardData || dom.doc.dataTransfer).getData('Text')}, true);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
|
|
70
144
|
if (dom.get('_mcePaste'))
|
|
71
145
|
return;
|
|
72
146
|
|
|
73
147
|
// Create container to paste into
|
|
74
|
-
n = dom.add(body, 'div', {id : '_mcePaste'}, '
|
|
148
|
+
n = dom.add(body, 'div', {id : '_mcePaste', 'class' : 'mcePaste'}, '\uFEFF<br _mce_bogus="1">');
|
|
75
149
|
|
|
76
150
|
// If contentEditable mode we need to find out the position of the closest element
|
|
77
151
|
if (body != ed.getDoc().body)
|
|
@@ -98,11 +172,28 @@
|
|
|
98
172
|
// Remove container
|
|
99
173
|
dom.remove(n);
|
|
100
174
|
|
|
175
|
+
// Check if the contents was changed, if it wasn't then clipboard extraction failed probably due
|
|
176
|
+
// to IE security settings so we pass the junk though better than nothing right
|
|
177
|
+
if (n.innerHTML === '\uFEFF') {
|
|
178
|
+
ed.execCommand('mcePasteWord');
|
|
179
|
+
e.preventDefault();
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
|
|
101
183
|
// Process contents
|
|
102
184
|
process({content : n.innerHTML});
|
|
103
185
|
|
|
186
|
+
// Block the real paste event
|
|
104
187
|
return tinymce.dom.Event.cancel(e);
|
|
105
188
|
} else {
|
|
189
|
+
function block(e) {
|
|
190
|
+
e.preventDefault();
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
// Block mousedown and click to prevent selection change
|
|
194
|
+
dom.bind(ed.getDoc(), 'mousedown', block);
|
|
195
|
+
dom.bind(ed.getDoc(), 'keydown', block);
|
|
196
|
+
|
|
106
197
|
or = ed.selection.getRng();
|
|
107
198
|
|
|
108
199
|
// Move caret into hidden div
|
|
@@ -114,32 +205,55 @@
|
|
|
114
205
|
|
|
115
206
|
// Wait a while and grab the pasted contents
|
|
116
207
|
window.setTimeout(function() {
|
|
117
|
-
var
|
|
208
|
+
var h = '', nl = dom.select('div.mcePaste');
|
|
209
|
+
|
|
210
|
+
// WebKit will split the div into multiple ones so this will loop through then all and join them to get the whole HTML string
|
|
211
|
+
each(nl, function(n) {
|
|
212
|
+
var child = n.firstChild;
|
|
213
|
+
|
|
214
|
+
// WebKit inserts a DIV container with lots of odd styles
|
|
215
|
+
if (child && child.nodeName == 'DIV' && child.style.marginTop && child.style.backgroundColor) {
|
|
216
|
+
dom.remove(child, 1);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// WebKit duplicates the divs so we need to remove them
|
|
220
|
+
each(dom.select('div.mcePaste', n), function(n) {
|
|
221
|
+
dom.remove(n, 1);
|
|
222
|
+
});
|
|
118
223
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
224
|
+
// Remove apply style spans
|
|
225
|
+
each(dom.select('span.Apple-style-span', n), function(n) {
|
|
226
|
+
dom.remove(n, 1);
|
|
227
|
+
});
|
|
123
228
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
229
|
+
// Remove bogus br elements
|
|
230
|
+
each(dom.select('br[_mce_bogus]', n), function(n) {
|
|
231
|
+
dom.remove(n);
|
|
232
|
+
});
|
|
128
233
|
|
|
129
|
-
|
|
130
|
-
|
|
234
|
+
h += n.innerHTML;
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
// Remove the nodes
|
|
238
|
+
each(nl, function(n) {
|
|
239
|
+
dom.remove(n);
|
|
240
|
+
});
|
|
131
241
|
|
|
132
242
|
// Restore the old selection
|
|
133
243
|
if (or)
|
|
134
244
|
sel.setRng(or);
|
|
135
245
|
|
|
136
246
|
process({content : h});
|
|
247
|
+
|
|
248
|
+
// Unblock events ones we got the contents
|
|
249
|
+
dom.unbind(ed.getDoc(), 'mousedown', block);
|
|
250
|
+
dom.unbind(ed.getDoc(), 'keydown', block);
|
|
137
251
|
}, 0);
|
|
138
252
|
}
|
|
139
|
-
}
|
|
253
|
+
}
|
|
140
254
|
|
|
141
255
|
// Check if we should use the new auto process method
|
|
142
|
-
if (
|
|
256
|
+
if (getParam(ed, "paste_auto_cleanup_on_paste")) {
|
|
143
257
|
// Is it's Opera or older FF use key handler
|
|
144
258
|
if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
|
|
145
259
|
ed.onKeyDown.add(function(ed, e) {
|
|
@@ -155,7 +269,7 @@
|
|
|
155
269
|
}
|
|
156
270
|
|
|
157
271
|
// Block all drag/drop events
|
|
158
|
-
if (
|
|
272
|
+
if (getParam(ed, "paste_block_drop")) {
|
|
159
273
|
ed.onInit.add(function() {
|
|
160
274
|
ed.dom.bind(ed.getBody(), ['dragend', 'dragover', 'draggesture', 'dragdrop', 'drop', 'drag'], function(e) {
|
|
161
275
|
e.preventDefault();
|
|
@@ -181,10 +295,15 @@
|
|
|
181
295
|
},
|
|
182
296
|
|
|
183
297
|
_preProcess : function(pl, o) {
|
|
184
|
-
var ed = this.editor, h = o.content, process, stripClass;
|
|
185
|
-
|
|
186
298
|
//console.log('Before preprocess:' + o.content);
|
|
187
299
|
|
|
300
|
+
var ed = this.editor,
|
|
301
|
+
h = o.content,
|
|
302
|
+
grep = tinymce.grep,
|
|
303
|
+
explode = tinymce.explode,
|
|
304
|
+
trim = tinymce.trim,
|
|
305
|
+
len, stripClass;
|
|
306
|
+
|
|
188
307
|
function process(items) {
|
|
189
308
|
each(items, function(v) {
|
|
190
309
|
// Remove or replace
|
|
@@ -193,71 +312,205 @@
|
|
|
193
312
|
else
|
|
194
313
|
h = h.replace(v[0], v[1]);
|
|
195
314
|
});
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
// Process away some basic content
|
|
199
|
-
process([
|
|
200
|
-
/^\s*( )+/g, // nbsp entities at the start of contents
|
|
201
|
-
/( |<br[^>]*>)+\s*$/g // nbsp entities at the end of contents
|
|
202
|
-
]);
|
|
315
|
+
}
|
|
203
316
|
|
|
204
317
|
// Detect Word content and process it more aggressive
|
|
205
|
-
if (/
|
|
206
|
-
o.wordContent = true;
|
|
318
|
+
if (/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(h) || o.wordContent) {
|
|
319
|
+
o.wordContent = true; // Mark the pasted contents as word specific content
|
|
207
320
|
//console.log('Word contents detected.');
|
|
208
321
|
|
|
209
|
-
|
|
322
|
+
// Process away some basic content
|
|
323
|
+
process([
|
|
324
|
+
/^\s*( )+/gi, // entities at the start of contents
|
|
325
|
+
/( |<br[^>]*>)+\s*$/gi // entities at the end of contents
|
|
326
|
+
]);
|
|
327
|
+
|
|
328
|
+
if (getParam(ed, "paste_convert_headers_to_strong")) {
|
|
329
|
+
h = h.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi, "<p><strong>$1</strong></p>");
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
if (getParam(ed, "paste_convert_middot_lists")) {
|
|
210
333
|
process([
|
|
211
|
-
[/<!--\[if !supportLists\]-->/gi, '$&__MCE_ITEM__'],
|
|
212
|
-
[/(<span[^>]
|
|
213
|
-
[/(<span[^>]+mso-list:[^>]+>)/gi, '$1__MCE_ITEM__'] // Convert mso-list to item marker
|
|
334
|
+
[/<!--\[if !supportLists\]-->/gi, '$&__MCE_ITEM__'], // Convert supportLists to a list item marker
|
|
335
|
+
[/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi, '$1__MCE_ITEM__'] // Convert mso-list and symbol spans to item markers
|
|
214
336
|
]);
|
|
215
337
|
}
|
|
216
338
|
|
|
217
339
|
process([
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
/<
|
|
226
|
-
|
|
340
|
+
// Word comments like conditional comments etc
|
|
341
|
+
/<!--[\s\S]+?-->/gi,
|
|
342
|
+
|
|
343
|
+
// Remove comments, scripts (e.g., msoShowComment), XML tag, VML content, MS Office namespaced tags, and a few other tags
|
|
344
|
+
/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,
|
|
345
|
+
|
|
346
|
+
// Convert <s> into <strike> for line-though
|
|
347
|
+
[/<(\/?)s>/gi, "<$1strike>"],
|
|
348
|
+
|
|
349
|
+
// Replace nsbp entites to char since it's easier to handle
|
|
350
|
+
[/ /gi, "\u00a0"]
|
|
227
351
|
]);
|
|
228
352
|
|
|
353
|
+
// Remove bad attributes, with or without quotes, ensuring that attribute text is really inside a tag.
|
|
354
|
+
// If JavaScript had a RegExp look-behind, we could have integrated this with the last process() array and got rid of the loop. But alas, it does not, so we cannot.
|
|
355
|
+
do {
|
|
356
|
+
len = h.length;
|
|
357
|
+
h = h.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1");
|
|
358
|
+
} while (len != h.length);
|
|
359
|
+
|
|
229
360
|
// Remove all spans if no styles is to be retained
|
|
230
|
-
if (
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
}
|
|
361
|
+
if (getParam(ed, "paste_retain_style_properties").replace(/^none$/i, "").length == 0) {
|
|
362
|
+
h = h.replace(/<\/?span[^>]*>/gi, "");
|
|
363
|
+
} else {
|
|
364
|
+
// We're keeping styles, so at least clean them up.
|
|
365
|
+
// CSS Reference: http://msdn.microsoft.com/en-us/library/aa155477.aspx
|
|
236
366
|
|
|
237
|
-
// Allow for class names to be retained if desired; either all, or just the ones from Word
|
|
238
|
-
// Note that the paste_strip_class_attributes: 'none, verify_css_classes: true is also a good variation.
|
|
239
|
-
stripClass = ed.getParam('paste_strip_class_attributes', 'all');
|
|
240
|
-
if (stripClass != 'none') {
|
|
241
|
-
if (stripClass == 'all') {
|
|
242
|
-
process([
|
|
243
|
-
/ class=\"([^\"]*)\"/gi, // class attributes with quotes
|
|
244
|
-
/ class=(\w+)/gi // class attributes without quotes (IE)
|
|
245
|
-
]);
|
|
246
|
-
} else { // Only strip the 'mso*' classes
|
|
247
367
|
process([
|
|
248
|
-
|
|
249
|
-
|
|
368
|
+
// Convert <span style="mso-spacerun:yes">___</span> to string of alternating breaking/non-breaking spaces of same length
|
|
369
|
+
[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,
|
|
370
|
+
function(str, spaces) {
|
|
371
|
+
return (spaces.length > 0)? spaces.replace(/./, " ").slice(Math.floor(spaces.length/2)).split("").join("\u00a0") : "";
|
|
372
|
+
}
|
|
373
|
+
],
|
|
374
|
+
|
|
375
|
+
// Examine all styles: delete junk, transform some, and keep the rest
|
|
376
|
+
[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,
|
|
377
|
+
function(str, tag, style) {
|
|
378
|
+
var n = [],
|
|
379
|
+
i = 0,
|
|
380
|
+
s = explode(trim(style).replace(/"/gi, "'"), ";");
|
|
381
|
+
|
|
382
|
+
// Examine each style definition within the tag's style attribute
|
|
383
|
+
each(s, function(v) {
|
|
384
|
+
var name, value,
|
|
385
|
+
parts = explode(v, ":");
|
|
386
|
+
|
|
387
|
+
function ensureUnits(v) {
|
|
388
|
+
return v + ((v !== "0") && (/\d$/.test(v)))? "px" : "";
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
if (parts.length == 2) {
|
|
392
|
+
name = parts[0].toLowerCase();
|
|
393
|
+
value = parts[1].toLowerCase();
|
|
394
|
+
|
|
395
|
+
// Translate certain MS Office styles into their CSS equivalents
|
|
396
|
+
switch (name) {
|
|
397
|
+
case "mso-padding-alt":
|
|
398
|
+
case "mso-padding-top-alt":
|
|
399
|
+
case "mso-padding-right-alt":
|
|
400
|
+
case "mso-padding-bottom-alt":
|
|
401
|
+
case "mso-padding-left-alt":
|
|
402
|
+
case "mso-margin-alt":
|
|
403
|
+
case "mso-margin-top-alt":
|
|
404
|
+
case "mso-margin-right-alt":
|
|
405
|
+
case "mso-margin-bottom-alt":
|
|
406
|
+
case "mso-margin-left-alt":
|
|
407
|
+
case "mso-table-layout-alt":
|
|
408
|
+
case "mso-height":
|
|
409
|
+
case "mso-width":
|
|
410
|
+
case "mso-vertical-align-alt":
|
|
411
|
+
n[i++] = name.replace(/^mso-|-alt$/g, "") + ":" + ensureUnits(value);
|
|
412
|
+
return;
|
|
413
|
+
|
|
414
|
+
case "horiz-align":
|
|
415
|
+
n[i++] = "text-align:" + value;
|
|
416
|
+
return;
|
|
417
|
+
|
|
418
|
+
case "vert-align":
|
|
419
|
+
n[i++] = "vertical-align:" + value;
|
|
420
|
+
return;
|
|
421
|
+
|
|
422
|
+
case "font-color":
|
|
423
|
+
case "mso-foreground":
|
|
424
|
+
n[i++] = "color:" + value;
|
|
425
|
+
return;
|
|
426
|
+
|
|
427
|
+
case "mso-background":
|
|
428
|
+
case "mso-highlight":
|
|
429
|
+
n[i++] = "background:" + value;
|
|
430
|
+
return;
|
|
431
|
+
|
|
432
|
+
case "mso-default-height":
|
|
433
|
+
n[i++] = "min-height:" + ensureUnits(value);
|
|
434
|
+
return;
|
|
435
|
+
|
|
436
|
+
case "mso-default-width":
|
|
437
|
+
n[i++] = "min-width:" + ensureUnits(value);
|
|
438
|
+
return;
|
|
439
|
+
|
|
440
|
+
case "mso-padding-between-alt":
|
|
441
|
+
n[i++] = "border-collapse:separate;border-spacing:" + ensureUnits(value);
|
|
442
|
+
return;
|
|
443
|
+
|
|
444
|
+
case "text-line-through":
|
|
445
|
+
if ((value == "single") || (value == "double")) {
|
|
446
|
+
n[i++] = "text-decoration:line-through";
|
|
447
|
+
}
|
|
448
|
+
return;
|
|
449
|
+
|
|
450
|
+
case "mso-zero-height":
|
|
451
|
+
if (value == "yes") {
|
|
452
|
+
n[i++] = "display:none";
|
|
453
|
+
}
|
|
454
|
+
return;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
// Eliminate all MS Office style definitions that have no CSS equivalent by examining the first characters in the name
|
|
458
|
+
if (/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(name)) {
|
|
459
|
+
return;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// If it reached this point, it must be a valid CSS style
|
|
463
|
+
n[i++] = name + ":" + parts[1]; // Lower-case name, but keep value case
|
|
464
|
+
}
|
|
465
|
+
});
|
|
466
|
+
|
|
467
|
+
// If style attribute contained any valid styles the re-write it; otherwise delete style attribute.
|
|
468
|
+
if (i > 0) {
|
|
469
|
+
return tag + ' style="' + n.join(';') + '"';
|
|
470
|
+
} else {
|
|
471
|
+
return tag;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
]
|
|
250
475
|
]);
|
|
251
476
|
}
|
|
252
477
|
}
|
|
253
478
|
|
|
254
|
-
//
|
|
255
|
-
if (
|
|
479
|
+
// Replace headers with <strong>
|
|
480
|
+
if (getParam(ed, "paste_convert_headers_to_strong")) {
|
|
256
481
|
process([
|
|
257
|
-
|
|
482
|
+
[/<h[1-6][^>]*>/gi, "<p><strong>"],
|
|
483
|
+
[/<\/h[1-6][^>]*>/gi, "</strong></p>"]
|
|
258
484
|
]);
|
|
259
485
|
}
|
|
260
486
|
|
|
487
|
+
// Class attribute options are: leave all as-is ("none"), remove all ("all"), or remove only those starting with mso ("mso").
|
|
488
|
+
// Note:- paste_strip_class_attributes: "none", verify_css_classes: true is also a good variation.
|
|
489
|
+
stripClass = getParam(ed, "paste_strip_class_attributes");
|
|
490
|
+
|
|
491
|
+
if (stripClass !== "none") {
|
|
492
|
+
function removeClasses(match, g1) {
|
|
493
|
+
if (stripClass === "all")
|
|
494
|
+
return '';
|
|
495
|
+
|
|
496
|
+
var cls = grep(explode(g1.replace(/^(["'])(.*)\1$/, "$2"), " "),
|
|
497
|
+
function(v) {
|
|
498
|
+
return (/^(?!mso)/i.test(v));
|
|
499
|
+
}
|
|
500
|
+
);
|
|
501
|
+
|
|
502
|
+
return cls.length ? ' class="' + cls.join(" ") + '"' : '';
|
|
503
|
+
};
|
|
504
|
+
|
|
505
|
+
h = h.replace(/ class="([^"]+)"/gi, removeClasses);
|
|
506
|
+
h = h.replace(/ class=(\w+)/gi, removeClasses);
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
// Remove spans option
|
|
510
|
+
if (getParam(ed, "paste_remove_spans")) {
|
|
511
|
+
h = h.replace(/<\/?span[^>]*>/gi, "");
|
|
512
|
+
}
|
|
513
|
+
|
|
261
514
|
//console.log('After preprocess:' + h);
|
|
262
515
|
|
|
263
516
|
o.content = h;
|
|
@@ -276,56 +529,58 @@
|
|
|
276
529
|
dom.remove(a, 1);
|
|
277
530
|
});
|
|
278
531
|
|
|
279
|
-
if (
|
|
532
|
+
if (getParam(ed, "paste_convert_middot_lists")) {
|
|
280
533
|
t._convertLists(pl, o);
|
|
534
|
+
}
|
|
281
535
|
|
|
282
536
|
// Process styles
|
|
283
|
-
styleProps =
|
|
537
|
+
styleProps = getParam(ed, "paste_retain_style_properties"); // retained properties
|
|
284
538
|
|
|
285
|
-
//
|
|
286
|
-
if (tinymce.is(styleProps,
|
|
287
|
-
styleProps = tinymce.explode(styleProps);
|
|
539
|
+
// Process only if a string was specified and not equal to "all" or "*"
|
|
540
|
+
if ((tinymce.is(styleProps, "string")) && (styleProps !== "all") && (styleProps !== "*")) {
|
|
541
|
+
styleProps = tinymce.explode(styleProps.replace(/^none$/i, ""));
|
|
288
542
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
543
|
+
// Retains some style properties
|
|
544
|
+
each(dom.select('*', o.node), function(el) {
|
|
545
|
+
var newStyle = {}, npc = 0, i, sp, sv;
|
|
546
|
+
|
|
547
|
+
// Store a subset of the existing styles
|
|
548
|
+
if (styleProps) {
|
|
549
|
+
for (i = 0; i < styleProps.length; i++) {
|
|
550
|
+
sp = styleProps[i];
|
|
551
|
+
sv = dom.getStyle(el, sp);
|
|
552
|
+
|
|
553
|
+
if (sv) {
|
|
554
|
+
newStyle[sp] = sv;
|
|
555
|
+
npc++;
|
|
556
|
+
}
|
|
302
557
|
}
|
|
303
558
|
}
|
|
304
|
-
}
|
|
305
559
|
|
|
306
|
-
|
|
307
|
-
|
|
560
|
+
// Remove all of the existing styles
|
|
561
|
+
dom.setAttrib(el, 'style', '');
|
|
308
562
|
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
563
|
+
if (styleProps && npc > 0)
|
|
564
|
+
dom.setStyles(el, newStyle); // Add back the stored subset of styles
|
|
565
|
+
else // Remove empty span tags that do not have class attributes
|
|
566
|
+
if (el.nodeName == 'SPAN' && !el.className)
|
|
567
|
+
dom.remove(el, true);
|
|
568
|
+
});
|
|
569
|
+
}
|
|
315
570
|
}
|
|
316
571
|
|
|
317
572
|
// Remove all style information or only specifically on WebKit to avoid the style bug on that browser
|
|
318
|
-
if (
|
|
573
|
+
if (getParam(ed, "paste_remove_styles") || (getParam(ed, "paste_remove_styles_if_webkit") && tinymce.isWebKit)) {
|
|
319
574
|
each(dom.select('*[style]', o.node), function(el) {
|
|
320
575
|
el.removeAttribute('style');
|
|
321
|
-
el.removeAttribute('
|
|
576
|
+
el.removeAttribute('_mce_style');
|
|
322
577
|
});
|
|
323
578
|
} else {
|
|
324
579
|
if (tinymce.isWebKit) {
|
|
325
580
|
// We need to compress the styles on WebKit since if you paste <img border="0" /> it will become <img border="0" style="... lots of junk ..." />
|
|
326
581
|
// Removing the mce_style that contains the real value will force the Serializer engine to compress the styles
|
|
327
582
|
each(dom.select('*', o.node), function(el) {
|
|
328
|
-
el.removeAttribute('
|
|
583
|
+
el.removeAttribute('_mce_style');
|
|
329
584
|
});
|
|
330
585
|
}
|
|
331
586
|
}
|
|
@@ -417,7 +672,7 @@
|
|
|
417
672
|
* This logic can be improved so text nodes at the start/end remain in the start/end block elements
|
|
418
673
|
*/
|
|
419
674
|
_insertBlockContent : function(ed, dom, content) {
|
|
420
|
-
var parentBlock, marker, sel = ed.selection, last, elm, vp, y, elmHeight;
|
|
675
|
+
var parentBlock, marker, sel = ed.selection, last, elm, vp, y, elmHeight, markerId = 'mce_marker';
|
|
421
676
|
|
|
422
677
|
function select(n) {
|
|
423
678
|
var r;
|
|
@@ -431,14 +686,15 @@
|
|
|
431
686
|
sel.select(n, 1);
|
|
432
687
|
sel.collapse(false);
|
|
433
688
|
}
|
|
434
|
-
}
|
|
689
|
+
}
|
|
435
690
|
|
|
436
691
|
// Insert a marker for the caret position
|
|
437
|
-
this._insert('<span id="
|
|
438
|
-
marker = dom.get(
|
|
439
|
-
parentBlock = dom.getParent(marker, 'p,h1,h2,h3,h4,h5,h6,ul,ol');
|
|
692
|
+
this._insert('<span id="' + markerId + '"></span>', 1);
|
|
693
|
+
marker = dom.get(markerId);
|
|
694
|
+
parentBlock = dom.getParent(marker, 'p,h1,h2,h3,h4,h5,h6,ul,ol,th,td');
|
|
440
695
|
|
|
441
|
-
|
|
696
|
+
// If it's a parent block but not a table cell
|
|
697
|
+
if (parentBlock && !/TD|TH/.test(parentBlock.nodeName)) {
|
|
442
698
|
// Split parent block
|
|
443
699
|
marker = dom.split(parentBlock, marker);
|
|
444
700
|
|
|
@@ -455,7 +711,9 @@
|
|
|
455
711
|
sel.collapse(0);
|
|
456
712
|
}
|
|
457
713
|
|
|
458
|
-
|
|
714
|
+
// Remove marker if it's left
|
|
715
|
+
while (elm = dom.get(markerId))
|
|
716
|
+
dom.remove(elm);
|
|
459
717
|
|
|
460
718
|
// Get element, position and height
|
|
461
719
|
elm = sel.getStart();
|
|
@@ -472,41 +730,223 @@
|
|
|
472
730
|
* Inserts the specified contents at the caret position.
|
|
473
731
|
*/
|
|
474
732
|
_insert : function(h, skip_undo) {
|
|
475
|
-
var ed = this.editor;
|
|
733
|
+
var ed = this.editor, r = ed.selection.getRng();
|
|
476
734
|
|
|
477
|
-
// First delete the contents seems to work better on WebKit
|
|
478
|
-
if (!ed.selection.isCollapsed())
|
|
735
|
+
// First delete the contents seems to work better on WebKit when the selection spans multiple list items or multiple table cells.
|
|
736
|
+
if (!ed.selection.isCollapsed() && r.startContainer != r.endContainer)
|
|
479
737
|
ed.getDoc().execCommand('Delete', false, null);
|
|
480
738
|
|
|
481
739
|
// It's better to use the insertHTML method on Gecko since it will combine paragraphs correctly before inserting the contents
|
|
482
740
|
ed.execCommand(tinymce.isGecko ? 'insertHTML' : 'mceInsertContent', false, h, {skip_undo : skip_undo});
|
|
483
741
|
},
|
|
484
742
|
|
|
743
|
+
/**
|
|
744
|
+
* Instead of the old plain text method which tried to re-create a paste operation, the
|
|
745
|
+
* new approach adds a plain text mode toggle switch that changes the behavior of paste.
|
|
746
|
+
* This function is passed the same input that the regular paste plugin produces.
|
|
747
|
+
* It performs additional scrubbing and produces (and inserts) the plain text.
|
|
748
|
+
* This approach leverages all of the great existing functionality in the paste
|
|
749
|
+
* plugin, and requires minimal changes to add the new functionality.
|
|
750
|
+
* Speednet - June 2009
|
|
751
|
+
*/
|
|
752
|
+
_insertPlainText : function(ed, dom, h) {
|
|
753
|
+
var i, len, pos, rpos, node, breakElms, before, after,
|
|
754
|
+
w = ed.getWin(),
|
|
755
|
+
d = ed.getDoc(),
|
|
756
|
+
sel = ed.selection,
|
|
757
|
+
is = tinymce.is,
|
|
758
|
+
inArray = tinymce.inArray,
|
|
759
|
+
linebr = getParam(ed, "paste_text_linebreaktype"),
|
|
760
|
+
rl = getParam(ed, "paste_text_replacements");
|
|
761
|
+
|
|
762
|
+
function process(items) {
|
|
763
|
+
each(items, function(v) {
|
|
764
|
+
if (v.constructor == RegExp)
|
|
765
|
+
h = h.replace(v, "");
|
|
766
|
+
else
|
|
767
|
+
h = h.replace(v[0], v[1]);
|
|
768
|
+
});
|
|
769
|
+
};
|
|
770
|
+
|
|
771
|
+
if ((typeof(h) === "string") && (h.length > 0)) {
|
|
772
|
+
if (!entities)
|
|
773
|
+
entities = ("34,quot,38,amp,39,apos,60,lt,62,gt," + ed.serializer.settings.entities).split(",");
|
|
774
|
+
|
|
775
|
+
// If HTML content with line-breaking tags, then remove all cr/lf chars because only tags will break a line
|
|
776
|
+
if (/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(h)) {
|
|
777
|
+
process([
|
|
778
|
+
/[\n\r]+/g
|
|
779
|
+
]);
|
|
780
|
+
} else {
|
|
781
|
+
// Otherwise just get rid of carriage returns (only need linefeeds)
|
|
782
|
+
process([
|
|
783
|
+
/\r+/g
|
|
784
|
+
]);
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
process([
|
|
788
|
+
[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi, "\n\n"], // Block tags get a blank line after them
|
|
789
|
+
[/<br[^>]*>|<\/tr>/gi, "\n"], // Single linebreak for <br /> tags and table rows
|
|
790
|
+
[/<\/t[dh]>\s*<t[dh][^>]*>/gi, "\t"], // Table cells get tabs betweem them
|
|
791
|
+
/<[a-z!\/?][^>]*>/gi, // Delete all remaining tags
|
|
792
|
+
[/ /gi, " "], // Convert non-break spaces to regular spaces (remember, *plain text*)
|
|
793
|
+
[
|
|
794
|
+
// HTML entity
|
|
795
|
+
/&(#\d+|[a-z0-9]{1,10});/gi,
|
|
796
|
+
|
|
797
|
+
// Replace with actual character
|
|
798
|
+
function(e, s) {
|
|
799
|
+
if (s.charAt(0) === "#") {
|
|
800
|
+
return String.fromCharCode(s.slice(1));
|
|
801
|
+
}
|
|
802
|
+
else {
|
|
803
|
+
return ((e = inArray(entities, s)) > 0)? String.fromCharCode(entities[e-1]) : " ";
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
],
|
|
807
|
+
[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"], // Cool little RegExp deletes whitespace around linebreak chars.
|
|
808
|
+
[/\n{3,}/g, "\n\n"], // Max. 2 consecutive linebreaks
|
|
809
|
+
/^\s+|\s+$/g // Trim the front & back
|
|
810
|
+
]);
|
|
811
|
+
|
|
812
|
+
h = dom.encode(h);
|
|
813
|
+
|
|
814
|
+
// Delete any highlighted text before pasting
|
|
815
|
+
if (!sel.isCollapsed()) {
|
|
816
|
+
d.execCommand("Delete", false, null);
|
|
817
|
+
}
|
|
818
|
+
|
|
819
|
+
// Perform default or custom replacements
|
|
820
|
+
if (is(rl, "array") || (is(rl, "array"))) {
|
|
821
|
+
process(rl);
|
|
822
|
+
}
|
|
823
|
+
else if (is(rl, "string")) {
|
|
824
|
+
process(new RegExp(rl, "gi"));
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
// Treat paragraphs as specified in the config
|
|
828
|
+
if (linebr == "none") {
|
|
829
|
+
process([
|
|
830
|
+
[/\n+/g, " "]
|
|
831
|
+
]);
|
|
832
|
+
}
|
|
833
|
+
else if (linebr == "br") {
|
|
834
|
+
process([
|
|
835
|
+
[/\n/g, "<br />"]
|
|
836
|
+
]);
|
|
837
|
+
}
|
|
838
|
+
else {
|
|
839
|
+
process([
|
|
840
|
+
/^\s+|\s+$/g,
|
|
841
|
+
[/\n\n/g, "</p><p>"],
|
|
842
|
+
[/\n/g, "<br />"]
|
|
843
|
+
]);
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
// This next piece of code handles the situation where we're pasting more than one paragraph of plain
|
|
847
|
+
// text, and we are pasting the content into the middle of a block node in the editor. The block
|
|
848
|
+
// node gets split at the selection point into "Para A" and "Para B" (for the purposes of explaining).
|
|
849
|
+
// The first paragraph of the pasted text is appended to "Para A", and the last paragraph of the
|
|
850
|
+
// pasted text is prepended to "Para B". Any other paragraphs of pasted text are placed between
|
|
851
|
+
// "Para A" and "Para B". This code solves a host of problems with the original plain text plugin and
|
|
852
|
+
// now handles styles correctly. (Pasting plain text into a styled paragraph is supposed to make the
|
|
853
|
+
// plain text take the same style as the existing paragraph.)
|
|
854
|
+
if ((pos = h.indexOf("</p><p>")) != -1) {
|
|
855
|
+
rpos = h.lastIndexOf("</p><p>");
|
|
856
|
+
node = sel.getNode();
|
|
857
|
+
breakElms = []; // Get list of elements to break
|
|
858
|
+
|
|
859
|
+
do {
|
|
860
|
+
if (node.nodeType == 1) {
|
|
861
|
+
// Don't break tables and break at body
|
|
862
|
+
if (node.nodeName == "TD" || node.nodeName == "BODY") {
|
|
863
|
+
break;
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
breakElms[breakElms.length] = node;
|
|
867
|
+
}
|
|
868
|
+
} while (node = node.parentNode);
|
|
869
|
+
|
|
870
|
+
// Are we in the middle of a block node?
|
|
871
|
+
if (breakElms.length > 0) {
|
|
872
|
+
before = h.substring(0, pos);
|
|
873
|
+
after = "";
|
|
874
|
+
|
|
875
|
+
for (i=0, len=breakElms.length; i<len; i++) {
|
|
876
|
+
before += "</" + breakElms[i].nodeName.toLowerCase() + ">";
|
|
877
|
+
after += "<" + breakElms[breakElms.length-i-1].nodeName.toLowerCase() + ">";
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
if (pos == rpos) {
|
|
881
|
+
h = before + after + h.substring(pos+7);
|
|
882
|
+
}
|
|
883
|
+
else {
|
|
884
|
+
h = before + h.substring(pos+4, rpos+4) + after + h.substring(rpos+7);
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
// Insert content at the caret, plus add a marker for repositioning the caret
|
|
890
|
+
ed.execCommand("mceInsertRawHTML", false, h + '<span id="_plain_text_marker"> </span>');
|
|
891
|
+
|
|
892
|
+
// Reposition the caret to the marker, which was placed immediately after the inserted content.
|
|
893
|
+
// Needs to be done asynchronously (in window.setTimeout) or else it doesn't work in all browsers.
|
|
894
|
+
// The second part of the code scrolls the content up if the caret is positioned off-screen.
|
|
895
|
+
// This is only necessary for WebKit browsers, but it doesn't hurt to use for all.
|
|
896
|
+
window.setTimeout(function() {
|
|
897
|
+
var marker = dom.get('_plain_text_marker'),
|
|
898
|
+
elm, vp, y, elmHeight;
|
|
899
|
+
|
|
900
|
+
sel.select(marker, false);
|
|
901
|
+
d.execCommand("Delete", false, null);
|
|
902
|
+
marker = null;
|
|
903
|
+
|
|
904
|
+
// Get element, position and height
|
|
905
|
+
elm = sel.getStart();
|
|
906
|
+
vp = dom.getViewPort(w);
|
|
907
|
+
y = dom.getPos(elm).y;
|
|
908
|
+
elmHeight = elm.clientHeight;
|
|
909
|
+
|
|
910
|
+
// Is element within viewport if not then scroll it into view
|
|
911
|
+
if ((y < vp.y) || (y + elmHeight > vp.y + vp.h)) {
|
|
912
|
+
d.body.scrollTop = y < vp.y ? y : y - vp.h + 25;
|
|
913
|
+
}
|
|
914
|
+
}, 0);
|
|
915
|
+
}
|
|
916
|
+
},
|
|
917
|
+
|
|
485
918
|
/**
|
|
486
919
|
* This method will open the old style paste dialogs. Some users might want the old behavior but still use the new cleanup engine.
|
|
487
920
|
*/
|
|
488
921
|
_legacySupport : function() {
|
|
489
922
|
var t = this, ed = t.editor;
|
|
490
923
|
|
|
491
|
-
// Register
|
|
492
|
-
|
|
493
|
-
ed.
|
|
924
|
+
// Register command(s) for backwards compatibility
|
|
925
|
+
ed.addCommand("mcePasteWord", function() {
|
|
926
|
+
ed.windowManager.open({
|
|
927
|
+
file: t.url + "/pasteword.htm",
|
|
928
|
+
width: parseInt(getParam(ed, "paste_dialog_width")),
|
|
929
|
+
height: parseInt(getParam(ed, "paste_dialog_height")),
|
|
930
|
+
inline: 1
|
|
931
|
+
});
|
|
932
|
+
});
|
|
933
|
+
|
|
934
|
+
if (getParam(ed, "paste_text_use_dialog")) {
|
|
935
|
+
ed.addCommand("mcePasteText", function() {
|
|
494
936
|
ed.windowManager.open({
|
|
495
|
-
file : t.url +
|
|
496
|
-
width
|
|
497
|
-
height
|
|
937
|
+
file : t.url + "/pastetext.htm",
|
|
938
|
+
width: parseInt(getParam(ed, "paste_dialog_width")),
|
|
939
|
+
height: parseInt(getParam(ed, "paste_dialog_height")),
|
|
498
940
|
inline : 1
|
|
499
941
|
});
|
|
500
942
|
});
|
|
501
|
-
}
|
|
943
|
+
}
|
|
502
944
|
|
|
503
|
-
// Register
|
|
504
|
-
ed.addButton(
|
|
505
|
-
ed.addButton('pasteword', {title : 'paste.paste_word_desc', cmd : 'mcePasteWord'});
|
|
506
|
-
ed.addButton('selectall', {title : 'paste.selectall_desc', cmd : 'selectall'});
|
|
945
|
+
// Register button for backwards compatibility
|
|
946
|
+
ed.addButton("pasteword", {title : "paste.paste_word_desc", cmd : "mcePasteWord"});
|
|
507
947
|
}
|
|
508
948
|
});
|
|
509
949
|
|
|
510
950
|
// Register plugin
|
|
511
|
-
tinymce.PluginManager.add(
|
|
512
|
-
})();
|
|
951
|
+
tinymce.PluginManager.add("paste", tinymce.plugins.PastePlugin);
|
|
952
|
+
})();
|