skylinecms 3.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (978) hide show
  1. data/.yardopts +8 -0
  2. data/CHANGELOG +111 -0
  3. data/COPYING +674 -0
  4. data/COPYING.LESSER +165 -0
  5. data/COPYRIGHT +14 -0
  6. data/README.md +46 -0
  7. data/Rakefile +42 -0
  8. data/app/controllers/skyline/application_controller.rb +256 -0
  9. data/app/controllers/skyline/article_versions_controller.rb +39 -0
  10. data/app/controllers/skyline/articles_controller.rb +245 -0
  11. data/app/controllers/skyline/authentications_controller.rb +34 -0
  12. data/app/controllers/skyline/browser/files_controller.rb +18 -0
  13. data/app/controllers/skyline/browser/images_controller.rb +20 -0
  14. data/app/controllers/skyline/browser/links_controller.rb +26 -0
  15. data/app/controllers/skyline/browser/pages_controller.rb +10 -0
  16. data/app/controllers/skyline/browser/tabs/media_library/media_files_controller.rb +31 -0
  17. data/app/controllers/skyline/content/editors/editable_list_controller.rb +23 -0
  18. data/app/controllers/skyline/content/editors/joinable_list_controller.rb +73 -0
  19. data/app/controllers/skyline/content_controller.rb +201 -0
  20. data/app/controllers/skyline/content_items_controller.rb +14 -0
  21. data/app/controllers/skyline/content_sections_controller.rb +15 -0
  22. data/app/controllers/skyline/link_section_links_controller.rb +14 -0
  23. data/app/controllers/skyline/locales_controller.rb +15 -0
  24. data/app/controllers/skyline/media_dirs_controller.rb +56 -0
  25. data/app/controllers/skyline/media_files_controller.rb +87 -0
  26. data/app/controllers/skyline/media_files_data_controller.rb +60 -0
  27. data/app/controllers/skyline/publications_controller.rb +45 -0
  28. data/app/controllers/skyline/published_publications_controller.rb +44 -0
  29. data/app/controllers/skyline/redirects_controller.rb +5 -0
  30. data/app/controllers/skyline/sections_controller.rb +24 -0
  31. data/app/controllers/skyline/settings_controller.rb +28 -0
  32. data/app/controllers/skyline/site/media_files_data_controller.rb +73 -0
  33. data/app/controllers/skyline/site/pages_controller.rb +50 -0
  34. data/app/controllers/skyline/skyline2_controller.rb +21 -0
  35. data/app/controllers/skyline/users_controller.rb +103 -0
  36. data/app/controllers/skyline/variant_current_editor_controller.rb +37 -0
  37. data/app/controllers/skyline/variants_controller.rb +71 -0
  38. data/app/helpers/skyline/application_helper.rb +82 -0
  39. data/app/helpers/skyline/browser/tabs/media_library/media_files_helper.rb +6 -0
  40. data/app/helpers/skyline/button_helper.rb +77 -0
  41. data/app/helpers/skyline/content_helper.rb +159 -0
  42. data/app/helpers/skyline/dialog_helper.rb +30 -0
  43. data/app/helpers/skyline/editors/boolean.rb +6 -0
  44. data/app/helpers/skyline/editors/checkable_list.rb +54 -0
  45. data/app/helpers/skyline/editors/date.rb +15 -0
  46. data/app/helpers/skyline/editors/date_time.rb +11 -0
  47. data/app/helpers/skyline/editors/display.rb +12 -0
  48. data/app/helpers/skyline/editors/editable_list.rb +81 -0
  49. data/app/helpers/skyline/editors/editor.rb +107 -0
  50. data/app/helpers/skyline/editors/file_browser.rb +54 -0
  51. data/app/helpers/skyline/editors/heading.rb +13 -0
  52. data/app/helpers/skyline/editors/inline_list.rb +9 -0
  53. data/app/helpers/skyline/editors/joinable_list.rb +118 -0
  54. data/app/helpers/skyline/editors/list.rb +15 -0
  55. data/app/helpers/skyline/editors/page_browser.rb +54 -0
  56. data/app/helpers/skyline/editors/text_field.rb +12 -0
  57. data/app/helpers/skyline/editors/textarea.rb +11 -0
  58. data/app/helpers/skyline/editors/textile.rb +12 -0
  59. data/app/helpers/skyline/editors/wysiwyg.rb +28 -0
  60. data/app/helpers/skyline/media_files_helper.rb +6 -0
  61. data/app/helpers/skyline/message_generator.rb +24 -0
  62. data/app/helpers/skyline/pages_helper.rb +44 -0
  63. data/app/helpers/skyline/presenters/article_list.rb +139 -0
  64. data/app/helpers/skyline/presenters/presenter.rb +127 -0
  65. data/app/helpers/skyline/presenters/table.rb +30 -0
  66. data/app/helpers/skyline/ref_object_helper.rb +84 -0
  67. data/app/helpers/skyline/translation_helper.rb +36 -0
  68. data/app/helpers/skyline/tree_helper.rb +62 -0
  69. data/app/helpers/skyline/users_helper.rb +2 -0
  70. data/app/middleware/skyline/flash_session_cookie_middleware.rb +16 -0
  71. data/app/middleware/skyline/plugins_loader_middleware.rb +10 -0
  72. data/app/middleware/skyline/sprockets_middleware.rb +71 -0
  73. data/app/models/skyline/article.rb +219 -0
  74. data/app/models/skyline/article_version.rb +95 -0
  75. data/app/models/skyline/associated_tag.rb +14 -0
  76. data/app/models/skyline/grant.rb +6 -0
  77. data/app/models/skyline/image_ref.rb +35 -0
  78. data/app/models/skyline/inline_ref.rb +182 -0
  79. data/app/models/skyline/link_ref.rb +34 -0
  80. data/app/models/skyline/link_section_link.rb +23 -0
  81. data/app/models/skyline/media_cache.rb +38 -0
  82. data/app/models/skyline/media_dir.rb +61 -0
  83. data/app/models/skyline/media_file.rb +132 -0
  84. data/app/models/skyline/media_node.rb +104 -0
  85. data/app/models/skyline/object_ref.rb +47 -0
  86. data/app/models/skyline/page.rb +256 -0
  87. data/app/models/skyline/page_fragment.rb +14 -0
  88. data/app/models/skyline/publication.rb +24 -0
  89. data/app/models/skyline/ref_object.rb +9 -0
  90. data/app/models/skyline/referable_uri.rb +17 -0
  91. data/app/models/skyline/right.rb +5 -0
  92. data/app/models/skyline/role.rb +8 -0
  93. data/app/models/skyline/section.rb +33 -0
  94. data/app/models/skyline/sections/content_collection_section.rb +26 -0
  95. data/app/models/skyline/sections/content_item_section.rb +27 -0
  96. data/app/models/skyline/sections/heading_section.rb +5 -0
  97. data/app/models/skyline/sections/iframe_section.rb +8 -0
  98. data/app/models/skyline/sections/link_section.rb +21 -0
  99. data/app/models/skyline/sections/media_section.rb +12 -0
  100. data/app/models/skyline/sections/page_fragment_section.rb +7 -0
  101. data/app/models/skyline/sections/raw_section.rb +7 -0
  102. data/app/models/skyline/sections/redirect_section.rb +16 -0
  103. data/app/models/skyline/sections/rss_section.rb +99 -0
  104. data/app/models/skyline/sections/splitter_section.rb +5 -0
  105. data/app/models/skyline/sections/wysiwyg_section.rb +12 -0
  106. data/app/models/skyline/site.rb +30 -0
  107. data/app/models/skyline/tag.rb +34 -0
  108. data/app/models/skyline/user.rb +192 -0
  109. data/app/models/skyline/variant.rb +178 -0
  110. data/app/observers/skyline/article_version_observer.rb +17 -0
  111. data/app/observers/skyline/file_cache_sweeper.rb +23 -0
  112. data/app/observers/skyline/media_file_observer.rb +32 -0
  113. data/app/observers/skyline/version_stamper.rb +42 -0
  114. data/app/templates/skyline/page/default/index.html.erb +19 -0
  115. data/app/templates/skyline/sections/content_collection_section/default/index.html.erb +2 -0
  116. data/app/templates/skyline/sections/content_item_section/default/index.html.erb +6 -0
  117. data/app/templates/skyline/sections/heading_section/default/index.html.erb +2 -0
  118. data/app/templates/skyline/sections/iframe_section/default/index.html.erb +1 -0
  119. data/app/templates/skyline/sections/link_section/default/index.html.erb +11 -0
  120. data/app/templates/skyline/sections/media_section/default/index.html.erb +15 -0
  121. data/app/templates/skyline/sections/page_fragment_section/default/index.html.erb +5 -0
  122. data/app/templates/skyline/sections/raw_section/default/index.html.erb +1 -0
  123. data/app/templates/skyline/sections/redirect_section/default/index.html.erb +0 -0
  124. data/app/templates/skyline/sections/rss_section/default/index.html.erb +11 -0
  125. data/app/templates/skyline/sections/splitter_section/default/index.html.erb +1 -0
  126. data/app/templates/skyline/sections/wysiwyg_section/default/index.html.erb +3 -0
  127. data/app/views/skyline/articles/_currently_editing.html.erb +18 -0
  128. data/app/views/skyline/articles/_meta.html.erb +146 -0
  129. data/app/views/skyline/articles/_security.html.erb +30 -0
  130. data/app/views/skyline/articles/_takeover_action.html.erb +36 -0
  131. data/app/views/skyline/articles/edit.html.erb +111 -0
  132. data/app/views/skyline/articles/edit_preview_only.html.erb +16 -0
  133. data/app/views/skyline/articles/index.html.erb +70 -0
  134. data/app/views/skyline/articles/page/_header.html.erb +72 -0
  135. data/app/views/skyline/articles/page/_index.html.erb +28 -0
  136. data/app/views/skyline/articles/page_fragment/_header.html.erb +23 -0
  137. data/app/views/skyline/articles/page_fragment/_index.html.erb +15 -0
  138. data/app/views/skyline/authentications/new.html.erb +58 -0
  139. data/app/views/skyline/browser/files/_index.html.erb +26 -0
  140. data/app/views/skyline/browser/images/_index.html.erb +62 -0
  141. data/app/views/skyline/browser/links/_index.html.erb +56 -0
  142. data/app/views/skyline/browser/pages/_index.html.erb +27 -0
  143. data/app/views/skyline/browser/tabs/external_image/_index.html.erb +18 -0
  144. data/app/views/skyline/browser/tabs/external_link/_index.html.erb +17 -0
  145. data/app/views/skyline/browser/tabs/media_library/_index.html.erb +51 -0
  146. data/app/views/skyline/browser/tabs/media_library/media_files/_index.html.erb +63 -0
  147. data/app/views/skyline/browser/tabs/media_library/media_files/_show.html.erb +44 -0
  148. data/app/views/skyline/browser/tabs/pages/_index.html.erb +49 -0
  149. data/app/views/skyline/content/_add.rhtml +30 -0
  150. data/app/views/skyline/content/_filter.rhtml +41 -0
  151. data/app/views/skyline/content/_group.html.erb +6 -0
  152. data/app/views/skyline/content/_import.html.erb +18 -0
  153. data/app/views/skyline/content/_index.html.erb +28 -0
  154. data/app/views/skyline/content/_meta.html.erb +45 -0
  155. data/app/views/skyline/content/_submit.html.erb +15 -0
  156. data/app/views/skyline/content/create.rhtml +13 -0
  157. data/app/views/skyline/content/edit.rhtml +13 -0
  158. data/app/views/skyline/content/editors/joinable_list/_add.html.erb +13 -0
  159. data/app/views/skyline/content/editors/joinable_list/_list.html.erb +69 -0
  160. data/app/views/skyline/content/error.rhtml +2 -0
  161. data/app/views/skyline/content/index.html.erb +0 -0
  162. data/app/views/skyline/content/list.rhtml +22 -0
  163. data/app/views/skyline/content/show.rhtml +9 -0
  164. data/app/views/skyline/content_items/_content_item.html.erb +3 -0
  165. data/app/views/skyline/content_sections/_tags.html.erb +22 -0
  166. data/app/views/skyline/layouts/articles.html.erb +30 -0
  167. data/app/views/skyline/layouts/content.html.erb +66 -0
  168. data/app/views/skyline/layouts/media.html.erb +22 -0
  169. data/app/views/skyline/layouts/pages.html.erb +59 -0
  170. data/app/views/skyline/layouts/settings.html.erb +40 -0
  171. data/app/views/skyline/link_section_links/_form.html.erb +29 -0
  172. data/app/views/skyline/locales/show.js.erb +14 -0
  173. data/app/views/skyline/media_dirs/_edit.html.erb +25 -0
  174. data/app/views/skyline/media_dirs/_index.html.erb +14 -0
  175. data/app/views/skyline/media_dirs/index.html.erb +42 -0
  176. data/app/views/skyline/media_files/_edit.html.erb +75 -0
  177. data/app/views/skyline/media_files/_header.html.erb +3 -0
  178. data/app/views/skyline/media_files/_index.html.erb +51 -0
  179. data/app/views/skyline/media_files/_new.html.erb +50 -0
  180. data/app/views/skyline/publications/_index.html.erb +35 -0
  181. data/app/views/skyline/sections/_content_collection_section.html.erb +30 -0
  182. data/app/views/skyline/sections/_content_item_section.html.erb +27 -0
  183. data/app/views/skyline/sections/_form.html.erb +45 -0
  184. data/app/views/skyline/sections/_heading_section.html.erb +23 -0
  185. data/app/views/skyline/sections/_iframe_section.html.erb +12 -0
  186. data/app/views/skyline/sections/_link_section.html.erb +33 -0
  187. data/app/views/skyline/sections/_media_section.html.erb +16 -0
  188. data/app/views/skyline/sections/_page_fragment_section.html.erb +8 -0
  189. data/app/views/skyline/sections/_raw_section.html.erb +1 -0
  190. data/app/views/skyline/sections/_redirect_section.html.erb +10 -0
  191. data/app/views/skyline/sections/_rss_section.html.erb +12 -0
  192. data/app/views/skyline/sections/_splitter_section.html.erb +1 -0
  193. data/app/views/skyline/sections/_wysiwyg_section.html.erb +21 -0
  194. data/app/views/skyline/settings/edit.html.erb +46 -0
  195. data/app/views/skyline/shared/_head.html.erb +29 -0
  196. data/app/views/skyline/shared/_header_area.html.erb +49 -0
  197. data/app/views/skyline/tags/_available_tags.html.erb +5 -0
  198. data/app/views/skyline/users/_edit.html.erb +3 -0
  199. data/app/views/skyline/users/_form.html.erb +73 -0
  200. data/app/views/skyline/users/_new.html.erb +3 -0
  201. data/app/views/skyline/users/index.html.erb +70 -0
  202. data/bin/skylinecms +5 -0
  203. data/config/initializers/dependencies.rb +21 -0
  204. data/config/initializers/javascript_generator_methods.rb +4 -0
  205. data/config/initializers/locales.rb +11 -0
  206. data/config/initializers/middlewares.rb +20 -0
  207. data/config/initializers/mime_types.rb +225 -0
  208. data/config/initializers/observers.rb +5 -0
  209. data/config/initializers/rails_defaults.rb +2 -0
  210. data/config/locales/en-US.yml +819 -0
  211. data/config/locales/nl-NL.yml +818 -0
  212. data/config/routes.rb +89 -0
  213. data/db/fixtures/files/test.gif +0 -0
  214. data/db/fixtures/roles_and_rights.rb +81 -0
  215. data/db/fixtures/roots.rb +15 -0
  216. data/db/migrate/20090302102548_add_media_nodes.rb +17 -0
  217. data/db/migrate/20090309133933_add_description_to_media_nodes.rb +9 -0
  218. data/db/migrate/20090309134731_add_tags.rb +11 -0
  219. data/db/migrate/20090309135746_create_media_files_tags.rb +12 -0
  220. data/db/migrate/20090319091342_create_media_caches.rb +13 -0
  221. data/db/migrate/20090327083240_create_users.rb +16 -0
  222. data/db/migrate/20090327084656_create_roles.rb +12 -0
  223. data/db/migrate/20090327084719_create_rights.rb +12 -0
  224. data/db/migrate/20090327084739_create_grants.rb +12 -0
  225. data/db/migrate/20090327090918_create_rights_roles.rb +12 -0
  226. data/db/migrate/20090408115155_create_ref_objects.rb +19 -0
  227. data/db/migrate/20090504140044_create_test_sections.rb +14 -0
  228. data/db/migrate/20090506083107_add_refering_column_name_to_ref_objects.rb +9 -0
  229. data/db/migrate/20090508145820_create_skyline_pages.rb +17 -0
  230. data/db/migrate/20090508145852_create_skyline_page_versions.rb +27 -0
  231. data/db/migrate/20090508150149_create_skyline_sections.rb +17 -0
  232. data/db/migrate/20090508150204_create_skyline_wysiwyg_sections.rb +12 -0
  233. data/db/migrate/20090508150210_create_skyline_rss_sections.rb +13 -0
  234. data/db/migrate/20090511074702_create_test_content_objs.rb +14 -0
  235. data/db/migrate/20090519143912_add_skyline_pages_locked.rb +9 -0
  236. data/db/migrate/20090525081942_rename_test_content_objs.rb +9 -0
  237. data/db/migrate/20090526090049_add_pages_url_part.rb +11 -0
  238. data/db/migrate/20090527130112_create_skyline_iframe_sections.rb +14 -0
  239. data/db/migrate/20090528080308_create_skyline_versions.rb +14 -0
  240. data/db/migrate/20090528090319_create_skyline_actions.rb +14 -0
  241. data/db/migrate/20090603104115_prefix_tables_for_skyline.rb +30 -0
  242. data/db/migrate/20090608131055_add_skyline_pages_navigation_title.rb +9 -0
  243. data/db/migrate/20090610134844_create_skyline_content_collection_sections.rb +13 -0
  244. data/db/migrate/20090610142139_add_skyline_tags_taggable_type.rb +11 -0
  245. data/db/migrate/20090610143446_move_skyline_media_files_skyline_tags_to_skyline_associated_tags.rb +14 -0
  246. data/db/migrate/20090616091122_add_skyline_pages_persistent.rb +10 -0
  247. data/db/migrate/20090616091432_add_skyline_pages_identifier.rb +9 -0
  248. data/db/migrate/20090616134834_create_skyline_heading_section.rb +12 -0
  249. data/db/migrate/20090624113754_create_skyline_content_item_section.rb +13 -0
  250. data/db/migrate/20090624134548_create_skyline_splitter_section.rb +11 -0
  251. data/db/migrate/20090624154213_create_skyline_link_sections.rb +12 -0
  252. data/db/migrate/20090624154251_create_skyline_link_section_links.rb +17 -0
  253. data/db/migrate/20090625110837_remove_skyline_actions.rb +14 -0
  254. data/db/migrate/20090630100045_add_media_nodes_file_type.rb +10 -0
  255. data/db/migrate/20090702160937_add_media_node_dimensions.rb +18 -0
  256. data/db/migrate/20090703101812_rename_page_title_tag.rb +9 -0
  257. data/db/migrate/20090706124019_add_skyline_media_node_title.rb +11 -0
  258. data/db/migrate/20090709142235_add_system_users_flag.rb +9 -0
  259. data/db/migrate/20090710145157_add_skyline_users_destroyed.rb +9 -0
  260. data/db/migrate/20090713133240_add_skyline_grants_primary_key.rb +9 -0
  261. data/db/migrate/20090714084713_migrate_sections_in_module.rb +24 -0
  262. data/db/migrate/20090723132822_add_skyline_page_version_current_editor.rb +13 -0
  263. data/db/migrate/20090804072505_create_skyline_sections_raw_sections.rb +13 -0
  264. data/db/migrate/20090804074053_create_skyline_sections_media_sections.rb +16 -0
  265. data/db/migrate/20090806134610_migrate_pages_to_articles.rb +23 -0
  266. data/db/migrate/20090806155411_create_skyline_page_datas.rb +85 -0
  267. data/db/migrate/20090807074314_create_skyline_sections_redirect_sections.rb +13 -0
  268. data/db/migrate/20090807112358_add_roles_system.rb +9 -0
  269. data/db/migrate/20090807130819_add_article_data_pointers.rb +48 -0
  270. data/db/migrate/20090807143152_remove_articles_cached_fields.rb +9 -0
  271. data/db/migrate/20090810130159_remove_page_url_part_constraint.rb +11 -0
  272. data/db/migrate/20090810131440_create_skyline_page_fragement_data.rb +12 -0
  273. data/db/migrate/20090812154655_create_skyline_sections_page_fragment_sections.rb +12 -0
  274. data/db/migrate/20090814102107_add_associated_tag_id.rb +9 -0
  275. data/db/migrate/20090904121447_create_skyline_referable_uris.rb +62 -0
  276. data/db/migrate/20091008134448_article_position_no_default.rb +9 -0
  277. data/db/migrate/20091013135821_allow_null_for_position_in_articles.rb +9 -0
  278. data/db/migrate/20091202130512_rename_users_destroyed_to_is_destroyed.rb +9 -0
  279. data/db/migrate/20091202152514_add_media_nodes_date.rb +9 -0
  280. data/doc/INSTALL.md +64 -0
  281. data/doc/MIGRATION.md +45 -0
  282. data/lib/skyline.rb +22 -0
  283. data/lib/skyline/cli/base.rb +21 -0
  284. data/lib/skyline/cli/init.rb +118 -0
  285. data/lib/skyline/cli/init/templates/config/initializers/skyline_configuration.rb +5 -0
  286. data/lib/skyline/cli/init/templates/tasks/skyline.rake +2 -0
  287. data/lib/skyline/configuration.rb +112 -0
  288. data/lib/skyline/content/class_meta_data.rb +105 -0
  289. data/lib/skyline/content/content.rb +315 -0
  290. data/lib/skyline/content/exportable.rb +28 -0
  291. data/lib/skyline/content/field_meta_data.rb +336 -0
  292. data/lib/skyline/content/implementation.rb +57 -0
  293. data/lib/skyline/content/meta_data/class_settings.rb +18 -0
  294. data/lib/skyline/content/meta_data/field.rb +212 -0
  295. data/lib/skyline/content/meta_data/field_group.rb +83 -0
  296. data/lib/skyline/content/meta_data/field_page.rb +82 -0
  297. data/lib/skyline/content/orderable.rb +81 -0
  298. data/lib/skyline/content/stack.rb +111 -0
  299. data/lib/skyline/content/versioning/version.rb +42 -0
  300. data/lib/skyline/content/versioning/versionable.rb +38 -0
  301. data/lib/skyline/content_item.rb +197 -0
  302. data/lib/skyline/content_item_section_selectable.rb +32 -0
  303. data/lib/skyline/form_builder_with_errors.rb +182 -0
  304. data/lib/skyline/indexer.rb +36 -0
  305. data/lib/skyline/javascript_generator_methods.rb +13 -0
  306. data/lib/skyline/plugins_manager.rb +29 -0
  307. data/lib/skyline/positionable.rb +47 -0
  308. data/lib/skyline/referable.rb +103 -0
  309. data/lib/skyline/renderable_scope.rb +27 -0
  310. data/lib/skyline/renderable_scope_interface.rb +29 -0
  311. data/lib/skyline/renderer.rb +392 -0
  312. data/lib/skyline/rendering/helpers/bread_crumb_helper.rb +46 -0
  313. data/lib/skyline/rendering/helpers/column_helper.rb +22 -0
  314. data/lib/skyline/rendering/helpers/renderer_helper.rb +130 -0
  315. data/lib/skyline/rendering/helpers/settings_helper.rb +31 -0
  316. data/lib/skyline/searchable_item.rb +132 -0
  317. data/lib/skyline/section_item.rb +35 -0
  318. data/lib/skyline/settings.rb +175 -0
  319. data/lib/skyline/taggable.rb +87 -0
  320. data/lib/skyline/url_validation.rb +66 -0
  321. data/lib/skyline/version.rb +13 -0
  322. data/lib/skyline/wildcard_renderable_scope.rb +15 -0
  323. data/lib/skylinecms.rb +3 -0
  324. data/public/skyline/images/backgrounds/advanced-closed.gif +0 -0
  325. data/public/skyline/images/backgrounds/advanced-open.gif +0 -0
  326. data/public/skyline/images/backgrounds/dialog-head.gif +0 -0
  327. data/public/skyline/images/backgrounds/dialog-shadow-bl-corner.png +0 -0
  328. data/public/skyline/images/backgrounds/dialog-shadow-bottom.png +0 -0
  329. data/public/skyline/images/backgrounds/dialog-shadow-br-corner.png +0 -0
  330. data/public/skyline/images/backgrounds/dialog-shadow-left.png +0 -0
  331. data/public/skyline/images/backgrounds/dialog-shadow-right.png +0 -0
  332. data/public/skyline/images/backgrounds/dialog-shadow-tl-corner.png +0 -0
  333. data/public/skyline/images/backgrounds/dialog-shadow-top.png +0 -0
  334. data/public/skyline/images/backgrounds/dialog-shadow-tr-corner.png +0 -0
  335. data/public/skyline/images/backgrounds/dots.gif +0 -0
  336. data/public/skyline/images/backgrounds/hover.gif +0 -0
  337. data/public/skyline/images/backgrounds/login-contentarea.gif +0 -0
  338. data/public/skyline/images/backgrounds/mainnavigation.gif +0 -0
  339. data/public/skyline/images/backgrounds/menu-arrow-bottom.gif +0 -0
  340. data/public/skyline/images/backgrounds/menu-arrow-right.gif +0 -0
  341. data/public/skyline/images/backgrounds/menubutton-active.gif +0 -0
  342. data/public/skyline/images/backgrounds/menubutton-arrow.gif +0 -0
  343. data/public/skyline/images/backgrounds/menubutton.gif +0 -0
  344. data/public/skyline/images/backgrounds/messages-confirmation.gif +0 -0
  345. data/public/skyline/images/backgrounds/messages-error-icon.gif +0 -0
  346. data/public/skyline/images/backgrounds/panel-dt.gif +0 -0
  347. data/public/skyline/images/backgrounds/panel-footer.gif +0 -0
  348. data/public/skyline/images/backgrounds/panel-head-closed.gif +0 -0
  349. data/public/skyline/images/backgrounds/panel-head-open.gif +0 -0
  350. data/public/skyline/images/backgrounds/panel-head.gif +0 -0
  351. data/public/skyline/images/backgrounds/pixel-blue.gif +0 -0
  352. data/public/skyline/images/backgrounds/pixel-gray.gif +0 -0
  353. data/public/skyline/images/backgrounds/progressbar-bar.gif +0 -0
  354. data/public/skyline/images/backgrounds/progressbar.gif +0 -0
  355. data/public/skyline/images/backgrounds/section-splitter.gif +0 -0
  356. data/public/skyline/images/backgrounds/selected.gif +0 -0
  357. data/public/skyline/images/backgrounds/splitter.gif +0 -0
  358. data/public/skyline/images/backgrounds/tree-li-closed.gif +0 -0
  359. data/public/skyline/images/backgrounds/tree-li-last.gif +0 -0
  360. data/public/skyline/images/backgrounds/tree-li-open.gif +0 -0
  361. data/public/skyline/images/backgrounds/tree-li.gif +0 -0
  362. data/public/skyline/images/backgrounds/tree-ul.gif +0 -0
  363. data/public/skyline/images/backgrounds/usernavigation.gif +0 -0
  364. data/public/skyline/images/buttons/buttons-medium.gif +0 -0
  365. data/public/skyline/images/buttons/buttons-small.gif +0 -0
  366. data/public/skyline/images/buttons/dialog-close.gif +0 -0
  367. data/public/skyline/images/buttons/section-delete.gif +0 -0
  368. data/public/skyline/images/icons/attachment.gif +0 -0
  369. data/public/skyline/images/icons/audio.gif +0 -0
  370. data/public/skyline/images/icons/cog-blue.gif +0 -0
  371. data/public/skyline/images/icons/cog.gif +0 -0
  372. data/public/skyline/images/icons/compressed.gif +0 -0
  373. data/public/skyline/images/icons/default.gif +0 -0
  374. data/public/skyline/images/icons/drag.gif +0 -0
  375. data/public/skyline/images/icons/excel.gif +0 -0
  376. data/public/skyline/images/icons/executable.gif +0 -0
  377. data/public/skyline/images/icons/false.gif +0 -0
  378. data/public/skyline/images/icons/file-failed.gif +0 -0
  379. data/public/skyline/images/icons/file-success.gif +0 -0
  380. data/public/skyline/images/icons/flash.gif +0 -0
  381. data/public/skyline/images/icons/folder.gif +0 -0
  382. data/public/skyline/images/icons/html.gif +0 -0
  383. data/public/skyline/images/icons/image.gif +0 -0
  384. data/public/skyline/images/icons/link-external.gif +0 -0
  385. data/public/skyline/images/icons/lock-open.gif +0 -0
  386. data/public/skyline/images/icons/lock.gif +0 -0
  387. data/public/skyline/images/icons/pages.gif +0 -0
  388. data/public/skyline/images/icons/pdf.gif +0 -0
  389. data/public/skyline/images/icons/powerpoint.gif +0 -0
  390. data/public/skyline/images/icons/text.gif +0 -0
  391. data/public/skyline/images/icons/toolbar.gif +0 -0
  392. data/public/skyline/images/icons/true.gif +0 -0
  393. data/public/skyline/images/icons/video.gif +0 -0
  394. data/public/skyline/images/icons/word.gif +0 -0
  395. data/public/skyline/images/logo.gif +0 -0
  396. data/public/skyline/images/logo.png +0 -0
  397. data/public/skyline/images/spinner.gif +0 -0
  398. data/public/skyline/javascripts/README +5 -0
  399. data/public/skyline/javascripts/src/application.js +403 -0
  400. data/public/skyline/javascripts/src/browser.js +267 -0
  401. data/public/skyline/javascripts/src/draggable_files.js +102 -0
  402. data/public/skyline/javascripts/src/library_uploader.js +226 -0
  403. data/public/skyline/javascripts/src/messages.js +61 -0
  404. data/public/skyline/javascripts/src/mootools_on_rails.js +53 -0
  405. data/public/skyline/javascripts/src/page_helper.js +49 -0
  406. data/public/skyline/javascripts/src/poller.js +51 -0
  407. data/public/skyline/javascripts/src/sections.js +70 -0
  408. data/public/skyline/javascripts/src/skyline.editor.js +1 -0
  409. data/public/skyline/javascripts/src/skyline.editor/assets/content.css +21 -0
  410. data/public/skyline/javascripts/src/skyline.editor/assets/dialog.css +116 -0
  411. data/public/skyline/javascripts/src/skyline.editor/assets/icons.gif +0 -0
  412. data/public/skyline/javascripts/src/skyline.editor/assets/ui.css +211 -0
  413. data/public/skyline/javascripts/src/skyline.editor/dialogs/anchor.htm +31 -0
  414. data/public/skyline/javascripts/src/skyline.editor/dialogs/charmap.htm +53 -0
  415. data/public/skyline/javascripts/src/skyline.editor/dialogs/color_picker.htm +75 -0
  416. data/public/skyline/javascripts/src/skyline.editor/dialogs/skyline_code.html +17 -0
  417. data/public/skyline/javascripts/src/skyline.editor/src/plugins/autoresize/editor_plugin.js +115 -0
  418. data/public/skyline/javascripts/src/skyline.editor/src/plugins/skylinecode/dialog.js +87 -0
  419. data/public/skyline/javascripts/src/skyline.editor/src/plugins/skylinecode/editor_plugin.js +38 -0
  420. data/public/skyline/javascripts/src/skyline.editor/src/plugins/skylinecontextmenu/editor_plugin.js +89 -0
  421. data/public/skyline/javascripts/src/skyline.editor/src/plugins/skylineimage/dialog.js +88 -0
  422. data/public/skyline/javascripts/src/skyline.editor/src/plugins/skylineimage/editor_plugin.js +33 -0
  423. data/public/skyline/javascripts/src/skyline.editor/src/plugins/skylinelink/dialog.js +113 -0
  424. data/public/skyline/javascripts/src/skyline.editor/src/plugins/skylinelink/editor_plugin.js +51 -0
  425. data/public/skyline/javascripts/src/skyline.editor/src/plugins/skylinetable/editor_plugin.js +1087 -0
  426. data/public/skyline/javascripts/src/skyline.editor/src/plugins/skylinewindows/editor_plugin.js +263 -0
  427. data/public/skyline/javascripts/src/skyline.editor/src/script_loader.js +96 -0
  428. data/public/skyline/javascripts/src/skyline.editor/src/skyline.editor.js +135 -0
  429. data/public/skyline/javascripts/src/skyline.editor/src/theme.js +636 -0
  430. data/public/skyline/javascripts/src/skyline.editor/src/ui/separator.js +34 -0
  431. data/public/skyline/javascripts/src/skyline.editor/src/ui/toolbar.js +102 -0
  432. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/build.bat +2 -0
  433. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/build.xml +364 -0
  434. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/changelog.txt +886 -0
  435. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/css/content.css +51 -0
  436. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/css/word.css +53 -0
  437. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/full.html +85 -0
  438. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/full_jquery.html +94 -0
  439. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/index.html +10 -0
  440. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/lists/image_list.js +9 -0
  441. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/lists/link_list.js +10 -0
  442. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/lists/media_list.js +10 -0
  443. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/lists/template_list.js +9 -0
  444. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/media/logo.jpg +0 -0
  445. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/media/logo_over.jpg +0 -0
  446. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/media/sample.avi +0 -0
  447. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/media/sample.dcr +0 -0
  448. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/media/sample.mov +0 -0
  449. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/media/sample.ram +1 -0
  450. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/media/sample.rm +0 -0
  451. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/media/sample.swf +0 -0
  452. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/menu.html +16 -0
  453. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/simple.html +43 -0
  454. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/skins.html +212 -0
  455. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/templates/layout1.htm +15 -0
  456. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/templates/snippet1.htm +1 -0
  457. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/translate.html +80 -0
  458. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/word.html +67 -0
  459. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/AddOnManager.js +95 -0
  460. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/CommandManager.js +54 -0
  461. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ControlManager.js +489 -0
  462. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/Developer.js +91 -0
  463. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/Editor.js +2295 -0
  464. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/EditorCommands.js +934 -0
  465. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/EditorManager.js +453 -0
  466. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ForceBlocks.js +644 -0
  467. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/Popup.js +412 -0
  468. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/UndoManager.js +183 -0
  469. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/WindowManager.js +169 -0
  470. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/adapter/jquery/adapter.js +240 -0
  471. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/adapter/jquery/jquery.tinymce.js +179 -0
  472. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/adapter/prototype/adapter.js +38 -0
  473. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/BlockQuote.js +135 -0
  474. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/CutCopyPaste.js +24 -0
  475. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/InsertHorizontalRule.js +15 -0
  476. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/RemoveFormat.js +173 -0
  477. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/UndoRedo.js +38 -0
  478. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/DOMUtils.js +1823 -0
  479. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Element.js +199 -0
  480. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/EventUtils.js +349 -0
  481. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Range.js +721 -0
  482. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/ScriptLoader.js +351 -0
  483. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Selection.js +747 -0
  484. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Serializer.js +979 -0
  485. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Sizzle.js +975 -0
  486. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/StringWriter.js +200 -0
  487. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/TridentSelection.js +273 -0
  488. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/XMLWriter.js +155 -0
  489. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/firebug/firebug-lite.js +2518 -0
  490. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/tinymce.js +549 -0
  491. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Button.js +68 -0
  492. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/ColorSplitButton.js +212 -0
  493. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Container.js +56 -0
  494. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Control.js +182 -0
  495. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/DropMenu.js +397 -0
  496. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/ListBox.js +320 -0
  497. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Menu.js +175 -0
  498. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/MenuButton.js +128 -0
  499. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/MenuItem.js +69 -0
  500. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/NativeListBox.js +198 -0
  501. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Separator.js +34 -0
  502. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/SplitButton.js +99 -0
  503. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Toolbar.js +86 -0
  504. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/Cookie.js +126 -0
  505. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/Dispatcher.js +101 -0
  506. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/JSON.js +81 -0
  507. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/JSONP.js +25 -0
  508. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/JSONRequest.js +87 -0
  509. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/URI.js +289 -0
  510. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/XHR.js +80 -0
  511. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/xml/Parser.js +126 -0
  512. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/jquery.tinymce.js +1 -0
  513. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/langs/en.js +154 -0
  514. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/license.txt +504 -0
  515. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/css/advhr.css +5 -0
  516. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin.js +1 -0
  517. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js +54 -0
  518. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/js/rule.js +43 -0
  519. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/langs/en_dlg.js +5 -0
  520. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm +62 -0
  521. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/css/advimage.css +13 -0
  522. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin.js +1 -0
  523. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js +47 -0
  524. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm +237 -0
  525. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/img/sample.gif +0 -0
  526. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js +443 -0
  527. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/langs/en_dlg.js +43 -0
  528. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/css/advlink.css +8 -0
  529. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin.js +1 -0
  530. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js +58 -0
  531. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js +528 -0
  532. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/langs/en_dlg.js +52 -0
  533. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm +338 -0
  534. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js +1 -0
  535. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js +111 -0
  536. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js +1 -0
  537. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js +51 -0
  538. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin.js +1 -0
  539. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js +117 -0
  540. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin.js +1 -0
  541. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin_src.js +616 -0
  542. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js +1 -0
  543. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js +95 -0
  544. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin.js +1 -0
  545. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js +79 -0
  546. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js +1 -0
  547. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js +40 -0
  548. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/emotions.htm +40 -0
  549. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cool.gif +0 -0
  550. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-cry.gif +0 -0
  551. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-embarassed.gif +0 -0
  552. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif +0 -0
  553. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-frown.gif +0 -0
  554. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-innocent.gif +0 -0
  555. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-kiss.gif +0 -0
  556. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-laughing.gif +0 -0
  557. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif +0 -0
  558. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-sealed.gif +0 -0
  559. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-smile.gif +0 -0
  560. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-surprised.gif +0 -0
  561. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif +0 -0
  562. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-undecided.gif +0 -0
  563. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-wink.gif +0 -0
  564. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/img/smiley-yell.gif +0 -0
  565. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/js/emotions.js +22 -0
  566. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/langs/en_dlg.js +20 -0
  567. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm +27 -0
  568. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin.js +1 -0
  569. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js +81 -0
  570. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/example/img/example.gif +0 -0
  571. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/example/js/dialog.js +19 -0
  572. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/example/langs/en.js +3 -0
  573. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/example/langs/en_dlg.js +3 -0
  574. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/css/fullpage.css +182 -0
  575. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js +1 -0
  576. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js +146 -0
  577. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm +576 -0
  578. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js +461 -0
  579. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/langs/en_dlg.js +85 -0
  580. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js +1 -0
  581. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js +145 -0
  582. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm +110 -0
  583. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin.js +1 -0
  584. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js +51 -0
  585. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin.js +1 -0
  586. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js +632 -0
  587. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
  588. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
  589. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
  590. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
  591. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
  592. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
  593. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
  594. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +90 -0
  595. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/template.htm +387 -0
  596. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js +1 -0
  597. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js +80 -0
  598. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin.js +1 -0
  599. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js +209 -0
  600. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/css/content.css +6 -0
  601. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/css/media.css +16 -0
  602. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js +1 -0
  603. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js +405 -0
  604. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/img/flash.gif +0 -0
  605. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/img/flv_player.swf +0 -0
  606. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/img/quicktime.gif +0 -0
  607. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/img/realmedia.gif +0 -0
  608. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/img/shockwave.gif +0 -0
  609. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/img/trans.gif +0 -0
  610. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/img/windowsmedia.gif +0 -0
  611. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/js/embed.js +73 -0
  612. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/js/media.js +630 -0
  613. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/langs/en_dlg.js +103 -0
  614. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/media.htm +822 -0
  615. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js +1 -0
  616. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js +50 -0
  617. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin.js +1 -0
  618. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js +87 -0
  619. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/pagebreak/css/content.css +1 -0
  620. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin.js +1 -0
  621. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js +74 -0
  622. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/pagebreak.gif +0 -0
  623. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/pagebreak/img/trans.gif +0 -0
  624. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js +1 -0
  625. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js +512 -0
  626. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/js/pastetext.js +36 -0
  627. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/js/pasteword.js +51 -0
  628. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/langs/en_dlg.js +5 -0
  629. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm +33 -0
  630. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm +27 -0
  631. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin.js +1 -0
  632. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js +50 -0
  633. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/preview/example.html +28 -0
  634. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/preview/jscripts/embed.js +73 -0
  635. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/preview/preview.html +17 -0
  636. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin.js +1 -0
  637. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js +31 -0
  638. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/safari/blank.htm +1 -0
  639. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js +1 -0
  640. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js +438 -0
  641. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin.js +1 -0
  642. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js +98 -0
  643. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css +6 -0
  644. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js +1 -0
  645. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js +54 -0
  646. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js +126 -0
  647. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js +16 -0
  648. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm +104 -0
  649. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/spellchecker/css/content.css +1 -0
  650. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js +1 -0
  651. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js +338 -0
  652. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/spellchecker/img/wline.gif +0 -0
  653. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/style/css/props.css +13 -0
  654. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin.js +1 -0
  655. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js +52 -0
  656. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/style/js/props.js +641 -0
  657. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/style/langs/en_dlg.js +63 -0
  658. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/style/props.htm +730 -0
  659. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js +1 -0
  660. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js +109 -0
  661. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/cell.htm +183 -0
  662. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/css/cell.css +17 -0
  663. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/css/row.css +25 -0
  664. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/css/table.css +13 -0
  665. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js +1 -0
  666. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js +1136 -0
  667. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js +269 -0
  668. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js +29 -0
  669. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/row.js +212 -0
  670. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/table.js +440 -0
  671. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/langs/en_dlg.js +74 -0
  672. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm +37 -0
  673. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/row.htm +160 -0
  674. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/table.htm +192 -0
  675. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/blank.htm +12 -0
  676. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/css/template.css +23 -0
  677. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js +1 -0
  678. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js +156 -0
  679. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/js/template.js +106 -0
  680. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/langs/en_dlg.js +15 -0
  681. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/template.htm +38 -0
  682. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js +1 -0
  683. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js +73 -0
  684. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm +148 -0
  685. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm +148 -0
  686. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm +153 -0
  687. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm +148 -0
  688. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/attributes.css +11 -0
  689. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/css/popup.css +9 -0
  690. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm +169 -0
  691. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +1 -0
  692. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +136 -0
  693. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm +169 -0
  694. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js +25 -0
  695. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js +25 -0
  696. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js +123 -0
  697. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js +25 -0
  698. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js +60 -0
  699. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js +231 -0
  700. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js +59 -0
  701. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js +32 -0
  702. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/about.htm +56 -0
  703. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm +31 -0
  704. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm +53 -0
  705. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm +75 -0
  706. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js +1 -0
  707. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js +1153 -0
  708. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/image.htm +85 -0
  709. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
  710. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif +0 -0
  711. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/about.js +72 -0
  712. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js +37 -0
  713. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js +325 -0
  714. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/color_picker.js +253 -0
  715. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js +245 -0
  716. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js +156 -0
  717. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/source_editor.js +62 -0
  718. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js +62 -0
  719. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js +51 -0
  720. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/link.htm +63 -0
  721. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css +32 -0
  722. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css +116 -0
  723. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  724. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  725. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  726. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  727. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
  728. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  729. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css +214 -0
  730. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css +32 -0
  731. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +115 -0
  732. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  733. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  734. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  735. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +215 -0
  736. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +8 -0
  737. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +5 -0
  738. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm +31 -0
  739. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/simple/editor_template.js +1 -0
  740. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js +85 -0
  741. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/simple/img/icons.gif +0 -0
  742. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/simple/langs/en.js +11 -0
  743. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/simple/skins/default/content.css +25 -0
  744. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/simple/skins/default/ui.css +32 -0
  745. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/content.css +17 -0
  746. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png +0 -0
  747. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/simple/skins/o2k7/ui.css +35 -0
  748. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce.js +1 -0
  749. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_dev.js +128 -0
  750. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_jquery.js +1 -0
  751. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_jquery_src.js +12198 -0
  752. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_popup.js +5 -0
  753. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_prototype.js +1 -0
  754. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_prototype_src.js +13057 -0
  755. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_src.js +13030 -0
  756. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/utils/editable_selects.js +69 -0
  757. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/utils/form_utils.js +199 -0
  758. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/utils/mctabs.js +76 -0
  759. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/utils/validate.js +219 -0
  760. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/api.html +18 -0
  761. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/api_jquery.html +18 -0
  762. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/api_prototype.html +19 -0
  763. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/basic.html +548 -0
  764. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/crossdomain.html +87 -0
  765. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/css/unit.css +120 -0
  766. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/index.html +10 -0
  767. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/jquery_plugin.html +112 -0
  768. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/js/api.js +1438 -0
  769. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/js/testrunner.js +791 -0
  770. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/main.html +8 -0
  771. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/media.html +221 -0
  772. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/menu.html +22 -0
  773. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/parts.html +90 -0
  774. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/paste.html +132 -0
  775. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/performance.html +152 -0
  776. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/range.html +522 -0
  777. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/removeformat.html +88 -0
  778. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/selection.html +235 -0
  779. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/config.ini +27 -0
  780. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/footer.html +3 -0
  781. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/header.html +6 -0
  782. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/index.php +1 -0
  783. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/instructions.txt +4 -0
  784. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/logo.png +0 -0
  785. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/selectors.list +40 -0
  786. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/style.css +181 -0
  787. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/system/index.php +112 -0
  788. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/system/slickspeed.js +147 -0
  789. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/system/template.php +47 -0
  790. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/template.html +2865 -0
  791. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/test.xml +6 -0
  792. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/ant-contrib.jar +0 -0
  793. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/js_build_tools.jar +0 -0
  794. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/svnClientAdapter.jar +0 -0
  795. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/svnant.jar +0 -0
  796. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/svnjavahl.jar +0 -0
  797. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/svnkit.jar +0 -0
  798. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/yuicompressor.jar +0 -0
  799. data/public/skyline/javascripts/src/skyline.js +16 -0
  800. data/public/skyline/javascripts/src/skyline/assets/dialog/button-close.gif +0 -0
  801. data/public/skyline/javascripts/src/skyline/assets/dialog/dialog.css +104 -0
  802. data/public/skyline/javascripts/src/skyline/assets/dialog/head.gif +0 -0
  803. data/public/skyline/javascripts/src/skyline/assets/dialog/shadow-bl-corner.png +0 -0
  804. data/public/skyline/javascripts/src/skyline/assets/dialog/shadow-bottom.png +0 -0
  805. data/public/skyline/javascripts/src/skyline/assets/dialog/shadow-br-corner.png +0 -0
  806. data/public/skyline/javascripts/src/skyline/assets/dialog/shadow-left.png +0 -0
  807. data/public/skyline/javascripts/src/skyline/assets/dialog/shadow-right.png +0 -0
  808. data/public/skyline/javascripts/src/skyline/assets/dialog/shadow-tl-corner.png +0 -0
  809. data/public/skyline/javascripts/src/skyline/assets/dialog/shadow-top.png +0 -0
  810. data/public/skyline/javascripts/src/skyline/assets/dialog/shadow-tr-corner.png +0 -0
  811. data/public/skyline/javascripts/src/skyline/assets/menubutton/menubutton-active.gif +0 -0
  812. data/public/skyline/javascripts/src/skyline/assets/menubutton/menubutton-arrow.gif +0 -0
  813. data/public/skyline/javascripts/src/skyline/assets/menubutton/menubutton.css +66 -0
  814. data/public/skyline/javascripts/src/skyline/assets/menubutton/menubutton.gif +0 -0
  815. data/public/skyline/javascripts/src/skyline/assets/tree/icon.gif +0 -0
  816. data/public/skyline/javascripts/src/skyline/assets/tree/last.gif +0 -0
  817. data/public/skyline/javascripts/src/skyline/assets/tree/li.gif +0 -0
  818. data/public/skyline/javascripts/src/skyline/assets/tree/middle-closed.gif +0 -0
  819. data/public/skyline/javascripts/src/skyline/assets/tree/middle-open.gif +0 -0
  820. data/public/skyline/javascripts/src/skyline/assets/tree/tree.css +91 -0
  821. data/public/skyline/javascripts/src/skyline/assets/tree/tree_vert_line.png +0 -0
  822. data/public/skyline/javascripts/src/skyline/src/dialog.js +286 -0
  823. data/public/skyline/javascripts/src/skyline/src/drag.js +59 -0
  824. data/public/skyline/javascripts/src/skyline/src/field_replicator.js +55 -0
  825. data/public/skyline/javascripts/src/skyline/src/hover_select.js +46 -0
  826. data/public/skyline/javascripts/src/skyline/src/layout.js +417 -0
  827. data/public/skyline/javascripts/src/skyline/src/menu.js +54 -0
  828. data/public/skyline/javascripts/src/skyline/src/menubutton.js +122 -0
  829. data/public/skyline/javascripts/src/skyline/src/skyline.js +6 -0
  830. data/public/skyline/javascripts/src/skyline/src/sortable.js +146 -0
  831. data/public/skyline/javascripts/src/skyline/src/tabs.js +131 -0
  832. data/public/skyline/javascripts/src/skyline/src/tag_selector.js +110 -0
  833. data/public/skyline/javascripts/src/skyline/src/toggle.js +66 -0
  834. data/public/skyline/javascripts/src/skyline/src/tree.js +399 -0
  835. data/public/skyline/javascripts/src/skyline/src/uploader.js +115 -0
  836. data/public/skyline/javascripts/src/skyline/src/utils.js +31 -0
  837. data/public/skyline/javascripts/src/skyline/vendor/fancyupload/FancyUpload2.js +251 -0
  838. data/public/skyline/javascripts/src/skyline/vendor/fancyupload/FancyUpload3.Attach.js +222 -0
  839. data/public/skyline/javascripts/src/skyline/vendor/fancyupload/Fx.ProgressBar.js +71 -0
  840. data/public/skyline/javascripts/src/skyline/vendor/fancyupload/Swiff.Uploader.js +488 -0
  841. data/public/skyline/javascripts/src/skyline/vendor/fancyupload/Swiff.Uploader.swf +0 -0
  842. data/public/skyline/javascripts/src/skyline/vendor/mootools/mootools-core.js +356 -0
  843. data/public/skyline/javascripts/src/skyline/vendor/mootools/mootools-more.js +82 -0
  844. data/public/skyline/javascripts/src/utils.js +111 -0
  845. data/public/skyline/stylesheets/general.css +2291 -0
  846. data/public/skyline/stylesheets/ie.css +47 -0
  847. data/public/skyline/stylesheets/undohtml.css +53 -0
  848. data/public/skyline/stylesheets/wysiwyg.css +28 -0
  849. data/rails/init.rb +30 -0
  850. data/recipes/deploy.rb +31 -0
  851. data/tasks/database.rake +66 -0
  852. data/tasks/implementation.rake +2 -0
  853. data/vendor/andand/andand.rb +96 -0
  854. data/vendor/digitpaint/configure.rb +144 -0
  855. data/vendor/digitpaint/nested_attributes_positioning.rb +70 -0
  856. data/vendor/digitpaint/personify/README.md +86 -0
  857. data/vendor/digitpaint/personify/lib/parser/personify.rb +838 -0
  858. data/vendor/digitpaint/personify/lib/parser/personify.treetop +126 -0
  859. data/vendor/digitpaint/personify/lib/parser/personify_node_classes.rb +7 -0
  860. data/vendor/digitpaint/personify/lib/template.rb +16 -0
  861. data/vendor/digitpaint/personify/personify.rb +7 -0
  862. data/vendor/digitpaint/personify/script/generate_parser.rb +6 -0
  863. data/vendor/digitpaint/personify/vendor/treetop/History.txt +9 -0
  864. data/vendor/digitpaint/personify/vendor/treetop/README +164 -0
  865. data/vendor/digitpaint/personify/vendor/treetop/Rakefile +20 -0
  866. data/vendor/digitpaint/personify/vendor/treetop/Treetop.tmbundle/Snippets/grammar ___ end.tmSnippet +20 -0
  867. data/vendor/digitpaint/personify/vendor/treetop/Treetop.tmbundle/Snippets/rule ___ end.tmSnippet +18 -0
  868. data/vendor/digitpaint/personify/vendor/treetop/Treetop.tmbundle/Syntaxes/Treetop Grammar.tmLanguage +251 -0
  869. data/vendor/digitpaint/personify/vendor/treetop/Treetop.tmbundle/info.plist +10 -0
  870. data/vendor/digitpaint/personify/vendor/treetop/bin/tt +28 -0
  871. data/vendor/digitpaint/personify/vendor/treetop/doc/contributing_and_planned_features.markdown +103 -0
  872. data/vendor/digitpaint/personify/vendor/treetop/doc/grammar_composition.markdown +65 -0
  873. data/vendor/digitpaint/personify/vendor/treetop/doc/index.markdown +90 -0
  874. data/vendor/digitpaint/personify/vendor/treetop/doc/pitfalls_and_advanced_techniques.markdown +51 -0
  875. data/vendor/digitpaint/personify/vendor/treetop/doc/semantic_interpretation.markdown +189 -0
  876. data/vendor/digitpaint/personify/vendor/treetop/doc/site.rb +110 -0
  877. data/vendor/digitpaint/personify/vendor/treetop/doc/sitegen.rb +60 -0
  878. data/vendor/digitpaint/personify/vendor/treetop/doc/syntactic_recognition.markdown +100 -0
  879. data/vendor/digitpaint/personify/vendor/treetop/doc/using_in_ruby.markdown +21 -0
  880. data/vendor/digitpaint/personify/vendor/treetop/examples/lambda_calculus/arithmetic.rb +551 -0
  881. data/vendor/digitpaint/personify/vendor/treetop/examples/lambda_calculus/arithmetic.treetop +97 -0
  882. data/vendor/digitpaint/personify/vendor/treetop/examples/lambda_calculus/arithmetic_node_classes.rb +7 -0
  883. data/vendor/digitpaint/personify/vendor/treetop/examples/lambda_calculus/arithmetic_test.rb +54 -0
  884. data/vendor/digitpaint/personify/vendor/treetop/examples/lambda_calculus/lambda_calculus +0 -0
  885. data/vendor/digitpaint/personify/vendor/treetop/examples/lambda_calculus/lambda_calculus.rb +718 -0
  886. data/vendor/digitpaint/personify/vendor/treetop/examples/lambda_calculus/lambda_calculus.treetop +132 -0
  887. data/vendor/digitpaint/personify/vendor/treetop/examples/lambda_calculus/lambda_calculus_node_classes.rb +5 -0
  888. data/vendor/digitpaint/personify/vendor/treetop/examples/lambda_calculus/lambda_calculus_test.rb +89 -0
  889. data/vendor/digitpaint/personify/vendor/treetop/examples/lambda_calculus/test_helper.rb +18 -0
  890. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop.rb +11 -0
  891. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/bootstrap_gen_1_metagrammar.rb +45 -0
  892. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler.rb +6 -0
  893. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/grammar_compiler.rb +40 -0
  894. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/lexical_address_space.rb +17 -0
  895. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/metagrammar.rb +2955 -0
  896. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/metagrammar.treetop +404 -0
  897. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes.rb +19 -0
  898. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/anything_symbol.rb +20 -0
  899. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/atomic_expression.rb +14 -0
  900. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/character_class.rb +22 -0
  901. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/choice.rb +31 -0
  902. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/declaration_sequence.rb +24 -0
  903. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/grammar.rb +28 -0
  904. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/inline_module.rb +27 -0
  905. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/nonterminal.rb +13 -0
  906. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/optional.rb +19 -0
  907. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/parenthesized_expression.rb +9 -0
  908. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/parsing_expression.rb +138 -0
  909. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/parsing_rule.rb +55 -0
  910. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/predicate.rb +45 -0
  911. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/repetition.rb +55 -0
  912. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/sequence.rb +68 -0
  913. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/terminal.rb +20 -0
  914. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/transient_prefix.rb +9 -0
  915. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/node_classes/treetop_file.rb +9 -0
  916. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/compiler/ruby_builder.rb +113 -0
  917. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/ruby_extensions.rb +2 -0
  918. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/ruby_extensions/string.rb +42 -0
  919. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/runtime.rb +5 -0
  920. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/runtime/compiled_parser.rb +95 -0
  921. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/runtime/interval_skip_list.rb +4 -0
  922. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/runtime/interval_skip_list/head_node.rb +15 -0
  923. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/runtime/interval_skip_list/interval_skip_list.rb +200 -0
  924. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/runtime/interval_skip_list/node.rb +164 -0
  925. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/runtime/syntax_node.rb +72 -0
  926. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/runtime/terminal_parse_failure.rb +16 -0
  927. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/runtime/terminal_syntax_node.rb +17 -0
  928. data/vendor/digitpaint/personify/vendor/treetop/lib/treetop/version.rb +9 -0
  929. data/vendor/digitpaint/personify/vendor/treetop/script/generate_metagrammar.rb +14 -0
  930. data/vendor/digitpaint/personify/vendor/treetop/script/svnadd +11 -0
  931. data/vendor/digitpaint/personify/vendor/treetop/script/svnrm +11 -0
  932. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/and_predicate_spec.rb +36 -0
  933. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/anything_symbol_spec.rb +52 -0
  934. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/character_class_spec.rb +188 -0
  935. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/choice_spec.rb +80 -0
  936. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/circular_compilation_spec.rb +28 -0
  937. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/failure_propagation_functional_spec.rb +21 -0
  938. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/grammar_compiler_spec.rb +84 -0
  939. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/grammar_spec.rb +41 -0
  940. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/nonterminal_symbol_spec.rb +40 -0
  941. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/not_predicate_spec.rb +38 -0
  942. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/one_or_more_spec.rb +35 -0
  943. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/optional_spec.rb +37 -0
  944. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/parenthesized_expression_spec.rb +19 -0
  945. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/parsing_rule_spec.rb +32 -0
  946. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/sequence_spec.rb +115 -0
  947. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/terminal_spec.rb +81 -0
  948. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/terminal_symbol_spec.rb +37 -0
  949. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/test_grammar.treetop +7 -0
  950. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/test_grammar.tt +7 -0
  951. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/test_grammar_do.treetop +7 -0
  952. data/vendor/digitpaint/personify/vendor/treetop/spec/compiler/zero_or_more_spec.rb +56 -0
  953. data/vendor/digitpaint/personify/vendor/treetop/spec/composition/a.treetop +11 -0
  954. data/vendor/digitpaint/personify/vendor/treetop/spec/composition/b.treetop +11 -0
  955. data/vendor/digitpaint/personify/vendor/treetop/spec/composition/c.treetop +10 -0
  956. data/vendor/digitpaint/personify/vendor/treetop/spec/composition/d.treetop +10 -0
  957. data/vendor/digitpaint/personify/vendor/treetop/spec/composition/grammar_composition_spec.rb +26 -0
  958. data/vendor/digitpaint/personify/vendor/treetop/spec/ruby_extensions/string_spec.rb +32 -0
  959. data/vendor/digitpaint/personify/vendor/treetop/spec/runtime/compiled_parser_spec.rb +101 -0
  960. data/vendor/digitpaint/personify/vendor/treetop/spec/runtime/interval_skip_list/delete_spec.rb +147 -0
  961. data/vendor/digitpaint/personify/vendor/treetop/spec/runtime/interval_skip_list/expire_range_spec.rb +349 -0
  962. data/vendor/digitpaint/personify/vendor/treetop/spec/runtime/interval_skip_list/insert_and_delete_node.rb +385 -0
  963. data/vendor/digitpaint/personify/vendor/treetop/spec/runtime/interval_skip_list/insert_spec.rb +660 -0
  964. data/vendor/digitpaint/personify/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.graffle +6175 -0
  965. data/vendor/digitpaint/personify/vendor/treetop/spec/runtime/interval_skip_list/interval_skip_list_spec.rb +58 -0
  966. data/vendor/digitpaint/personify/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture.rb +23 -0
  967. data/vendor/digitpaint/personify/vendor/treetop/spec/runtime/interval_skip_list/palindromic_fixture_spec.rb +164 -0
  968. data/vendor/digitpaint/personify/vendor/treetop/spec/runtime/interval_skip_list/spec_helper.rb +84 -0
  969. data/vendor/digitpaint/personify/vendor/treetop/spec/runtime/syntax_node_spec.rb +53 -0
  970. data/vendor/digitpaint/personify/vendor/treetop/spec/spec_helper.rb +106 -0
  971. data/vendor/digitpaint/personify/vendor/treetop/spec/spec_suite.rb +4 -0
  972. data/vendor/digitpaint/personify/vendor/treetop/treetop.gemspec +18 -0
  973. data/vendor/digitpaint/unique_identifiers.rb +89 -0
  974. data/vendor/mootools-on-rails/README +54 -0
  975. data/vendor/mootools-on-rails/Rakefile +22 -0
  976. data/vendor/mootools-on-rails/lib/mootools_on_rails.rb +30 -0
  977. data/vendor/mootools-on-rails/lib/mootools_on_rails/mootools_helper.rb +501 -0
  978. metadata +1141 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * $Id: adapter.js 1000 2009-02-12 13:03:40Z spocke $
3
+ *
4
+ * @author Moxiecode
5
+ * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
6
+ *
7
+ * This file contains all adapter logic needed to use prototype library as the base API for TinyMCE.
8
+ */
9
+
10
+ // #ifdef prototype_adapter
11
+
12
+ (function() {
13
+ if (!window.Prototype)
14
+ return alert("Load prototype first!");
15
+
16
+ // Patch in core NS functions
17
+ tinymce.extend(tinymce, {
18
+ trim : function(s) {return s ? s.strip() : '';},
19
+ inArray : function(a, v) {return a && a.indexOf ? a.indexOf(v) : -1;}
20
+ });
21
+
22
+ // Patch in functions in various clases
23
+ // Add a "#ifndefjquery" statement around each core API function you add below
24
+ var patches = {
25
+ 'tinymce.util.JSON' : {
26
+ serialize : function(o) {
27
+ return o.toJSON();
28
+ }
29
+ },
30
+ };
31
+
32
+ // Patch functions after a class is created
33
+ tinymce.onCreate = function(ty, c, p) {
34
+ tinymce.extend(p, patches[c]);
35
+ };
36
+ })();
37
+
38
+ // #endif
@@ -0,0 +1,135 @@
1
+ /**
2
+ * $Id: EditorCommands.js 1042 2009-03-04 16:00:50Z spocke $
3
+ *
4
+ * @author Moxiecode
5
+ * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
6
+ */
7
+
8
+ (function(tinymce) {
9
+ tinymce.GlobalCommands.add('mceBlockQuote', function() {
10
+ var ed = this, s = ed.selection, dom = ed.dom, sb, eb, n, bm, bq, r, bq2, i, nl;
11
+
12
+ function getBQ(e) {
13
+ return dom.getParent(e, function(n) {return n.nodeName === 'BLOCKQUOTE';});
14
+ };
15
+
16
+ // Get start/end block
17
+ sb = dom.getParent(s.getStart(), dom.isBlock);
18
+ eb = dom.getParent(s.getEnd(), dom.isBlock);
19
+
20
+ // Remove blockquote(s)
21
+ if (bq = getBQ(sb)) {
22
+ if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR'))
23
+ bm = s.getBookmark();
24
+
25
+ // Move all elements after the end block into new bq
26
+ if (getBQ(eb)) {
27
+ bq2 = bq.cloneNode(false);
28
+
29
+ while (n = eb.nextSibling)
30
+ bq2.appendChild(n.parentNode.removeChild(n));
31
+ }
32
+
33
+ // Add new bq after
34
+ if (bq2)
35
+ dom.insertAfter(bq2, bq);
36
+
37
+ // Move all selected blocks after the current bq
38
+ nl = s.getSelectedBlocks(sb, eb);
39
+ for (i = nl.length - 1; i >= 0; i--) {
40
+ dom.insertAfter(nl[i], bq);
41
+ }
42
+
43
+ // Empty bq, then remove it
44
+ if (/^\s*$/.test(bq.innerHTML))
45
+ dom.remove(bq, 1); // Keep children so boomark restoration works correctly
46
+
47
+ // Empty bq, then remote it
48
+ if (bq2 && /^\s*$/.test(bq2.innerHTML))
49
+ dom.remove(bq2, 1); // Keep children so boomark restoration works correctly
50
+
51
+ if (!bm) {
52
+ // Move caret inside empty block element
53
+ if (!tinymce.isIE) {
54
+ r = ed.getDoc().createRange();
55
+ r.setStart(sb, 0);
56
+ r.setEnd(sb, 0);
57
+ s.setRng(r);
58
+ } else {
59
+ s.select(sb);
60
+ s.collapse(0);
61
+
62
+ // IE misses the empty block some times element so we must move back the caret
63
+ if (dom.getParent(s.getStart(), dom.isBlock) != sb) {
64
+ r = s.getRng();
65
+ r.move('character', -1);
66
+ r.select();
67
+ }
68
+ }
69
+ } else
70
+ ed.selection.moveToBookmark(bm);
71
+
72
+ return;
73
+ }
74
+
75
+ // Since IE can start with a totally empty document we need to add the first bq and paragraph
76
+ if (tinymce.isIE && !sb && !eb) {
77
+ ed.getDoc().execCommand('Indent');
78
+ n = getBQ(s.getNode());
79
+ n.style.margin = n.dir = ''; // IE adds margin and dir to bq
80
+ return;
81
+ }
82
+
83
+ if (!sb || !eb)
84
+ return;
85
+
86
+ // If empty paragraph node then do not use bookmark
87
+ if (sb != eb || sb.childNodes.length > 1 || (sb.childNodes.length == 1 && sb.firstChild.nodeName != 'BR'))
88
+ bm = s.getBookmark();
89
+
90
+ // Move selected block elements into a bq
91
+ tinymce.each(s.getSelectedBlocks(getBQ(s.getStart()), getBQ(s.getEnd())), function(e) {
92
+ // Found existing BQ add to this one
93
+ if (e.nodeName == 'BLOCKQUOTE' && !bq) {
94
+ bq = e;
95
+ return;
96
+ }
97
+
98
+ // No BQ found, create one
99
+ if (!bq) {
100
+ bq = dom.create('blockquote');
101
+ e.parentNode.insertBefore(bq, e);
102
+ }
103
+
104
+ // Add children from existing BQ
105
+ if (e.nodeName == 'BLOCKQUOTE' && bq) {
106
+ n = e.firstChild;
107
+
108
+ while (n) {
109
+ bq.appendChild(n.cloneNode(true));
110
+ n = n.nextSibling;
111
+ }
112
+
113
+ dom.remove(e);
114
+ return;
115
+ }
116
+
117
+ // Add non BQ element to BQ
118
+ bq.appendChild(dom.remove(e));
119
+ });
120
+
121
+ if (!bm) {
122
+ // Move caret inside empty block element
123
+ if (!tinymce.isIE) {
124
+ r = ed.getDoc().createRange();
125
+ r.setStart(sb, 0);
126
+ r.setEnd(sb, 0);
127
+ s.setRng(r);
128
+ } else {
129
+ s.select(sb);
130
+ s.collapse(1);
131
+ }
132
+ } else
133
+ s.moveToBookmark(bm);
134
+ });
135
+ })(tinymce);
@@ -0,0 +1,24 @@
1
+ /**
2
+ * $Id: EditorCommands.js 1042 2009-03-04 16:00:50Z spocke $
3
+ *
4
+ * @author Moxiecode
5
+ * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
6
+ */
7
+
8
+ (function(tinymce) {
9
+ tinymce.each(['Cut', 'Copy', 'Paste'], function(cmd) {
10
+ tinymce.GlobalCommands.add(cmd, function() {
11
+ var ed = this, doc = ed.getDoc();
12
+
13
+ try {
14
+ doc.execCommand(cmd, false, null);
15
+
16
+ // On WebKit the command will just be ignored if it's not enabled
17
+ if (!doc.queryCommandSupported(cmd))
18
+ throw 'Error';
19
+ } catch (ex) {
20
+ ed.windowManager.alert(ed.getLang('clipboard_no_support'));
21
+ }
22
+ });
23
+ });
24
+ })(tinymce);
@@ -0,0 +1,15 @@
1
+ /**
2
+ * $Id: EditorCommands.js 1042 2009-03-04 16:00:50Z spocke $
3
+ *
4
+ * @author Moxiecode
5
+ * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
6
+ */
7
+
8
+ (function(tinymce) {
9
+ tinymce.GlobalCommands.add('InsertHorizontalRule', function() {
10
+ if (tinymce.isOpera)
11
+ return this.getDoc().execCommand('InsertHorizontalRule', false, '');
12
+
13
+ this.selection.setContent('<hr />');
14
+ });
15
+ })(tinymce);
@@ -0,0 +1,173 @@
1
+ /**
2
+ * $Id: EditorCommands.js 1042 2009-03-04 16:00:50Z spocke $
3
+ *
4
+ * @author Moxiecode
5
+ * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
6
+ */
7
+
8
+ (function(tinymce) {
9
+ function processRange(dom, start, end, callback) {
10
+ var ancestor, n, startPoint, endPoint, sib;
11
+
12
+ function findEndPoint(n, c) {
13
+ do {
14
+ if (n.parentNode == c)
15
+ return n;
16
+
17
+ n = n.parentNode;
18
+ } while(n);
19
+ };
20
+
21
+ function process(n) {
22
+ callback(n);
23
+ tinymce.walk(n, callback, 'childNodes');
24
+ };
25
+
26
+ // Find common ancestor and end points
27
+ ancestor = dom.findCommonAncestor(start, end);
28
+ startPoint = findEndPoint(start, ancestor) || start;
29
+ endPoint = findEndPoint(end, ancestor) || end;
30
+
31
+ // Process left leaf
32
+ for (n = start; n && n != startPoint; n = n.parentNode) {
33
+ for (sib = n.nextSibling; sib; sib = sib.nextSibling)
34
+ process(sib);
35
+ }
36
+
37
+ // Process middle from start to end point
38
+ if (startPoint != endPoint) {
39
+ for (n = startPoint.nextSibling; n && n != endPoint; n = n.nextSibling)
40
+ process(n);
41
+ } else
42
+ process(startPoint);
43
+
44
+ // Process right leaf
45
+ for (n = end; n && n != endPoint; n = n.parentNode) {
46
+ for (sib = n.previousSibling; sib; sib = sib.previousSibling)
47
+ process(sib);
48
+ }
49
+ };
50
+
51
+ tinymce.GlobalCommands.add('RemoveFormat', function() {
52
+ var ed = this, dom = ed.dom, s = ed.selection, r = s.getRng(1), nodes = [], bm, start, end, sc, so, ec, eo, n;
53
+
54
+ function findFormatRoot(n) {
55
+ var sp;
56
+
57
+ dom.getParent(n, function(n) {
58
+ if (dom.is(n, ed.getParam('removeformat_selector')))
59
+ sp = n;
60
+
61
+ return dom.isBlock(n);
62
+ }, ed.getBody());
63
+
64
+ return sp;
65
+ };
66
+
67
+ function collect(n) {
68
+ if (dom.is(n, ed.getParam('removeformat_selector')))
69
+ nodes.push(n);
70
+ };
71
+
72
+ function walk(n) {
73
+ collect(n);
74
+ tinymce.walk(n, collect, 'childNodes');
75
+ };
76
+
77
+ bm = s.getBookmark();
78
+ sc = r.startContainer;
79
+ ec = r.endContainer;
80
+ so = r.startOffset;
81
+ eo = r.endOffset;
82
+ sc = sc.nodeType == 1 ? sc.childNodes[Math.min(so, sc.childNodes.length - 1)] : sc;
83
+ ec = ec.nodeType == 1 ? ec.childNodes[Math.min(so == eo ? eo : eo - 1, ec.childNodes.length - 1)] : ec;
84
+
85
+ // Same container
86
+ if (sc == ec) { // TEXT_NODE
87
+ start = findFormatRoot(sc);
88
+
89
+ // Handle single text node
90
+ if (sc.nodeType == 3) {
91
+ if (start && start.nodeType == 1) { // ELEMENT
92
+ n = sc.splitText(so);
93
+ n.splitText(eo - so);
94
+ dom.split(start, n);
95
+
96
+ s.moveToBookmark(bm);
97
+ }
98
+
99
+ return;
100
+ }
101
+
102
+ // Handle single element
103
+ walk(dom.split(start, sc) || sc);
104
+ } else {
105
+ // Find start/end format root
106
+ start = findFormatRoot(sc);
107
+ end = findFormatRoot(ec);
108
+
109
+ // Split start text node
110
+ if (start) {
111
+ if (sc.nodeType == 3) { // TEXT
112
+ // Since IE doesn't support white space nodes in the DOM we need to
113
+ // add this invisible character so that the splitText function can split the contents
114
+ if (so == sc.nodeValue.length)
115
+ sc.nodeValue += '\uFEFF'; // Yet another pesky IE fix
116
+
117
+ sc = sc.splitText(so);
118
+ }
119
+ }
120
+
121
+ // Split end text node
122
+ if (end) {
123
+ if (ec.nodeType == 3) // TEXT
124
+ ec.splitText(eo);
125
+ }
126
+
127
+ // If the start and end format root is the same then we need to wrap
128
+ // the end node in a span since the split calls might change the reference
129
+ // Example: <p><b><em>x[yz<span>---</span>12]3</em></b></p>
130
+ if (start && start == end)
131
+ dom.replace(dom.create('span', {id : '__end'}, ec.cloneNode(true)), ec);
132
+
133
+ // Split all start containers down to the format root
134
+ if (start)
135
+ start = dom.split(start, sc);
136
+ else
137
+ start = sc;
138
+
139
+ // If there is a span wrapper use that one instead
140
+ if (n = dom.get('__end')) {
141
+ ec = n;
142
+ end = findFormatRoot(ec);
143
+ }
144
+
145
+ // Split all end containers down to the format root
146
+ if (end)
147
+ end = dom.split(end, ec);
148
+ else
149
+ end = ec;
150
+
151
+ // Collect nodes in between
152
+ processRange(dom, start, end, collect);
153
+
154
+ // Remove invisible character for IE workaround if we find it
155
+ if (sc.nodeValue == '\uFEFF')
156
+ sc.nodeValue = '';
157
+
158
+ // Process start/end container elements
159
+ walk(ec);
160
+ walk(sc);
161
+ }
162
+
163
+ // Remove all collected nodes
164
+ tinymce.each(nodes, function(n) {
165
+ dom.remove(n, 1);
166
+ });
167
+
168
+ // Remove leftover wrapper
169
+ dom.remove('__end', 1);
170
+
171
+ s.moveToBookmark(bm);
172
+ });
173
+ })(tinymce);
@@ -0,0 +1,38 @@
1
+ /**
2
+ * $Id: EditorCommands.js 1042 2009-03-04 16:00:50Z spocke $
3
+ *
4
+ * @author Moxiecode
5
+ * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
6
+ */
7
+
8
+ (function() {
9
+ var cmds = tinymce.GlobalCommands;
10
+
11
+ cmds.add(['mceEndUndoLevel', 'mceAddUndoLevel'], function() {
12
+ this.undoManager.add();
13
+ });
14
+
15
+ cmds.add('Undo', function() {
16
+ var ed = this;
17
+
18
+ if (ed.settings.custom_undo_redo) {
19
+ ed.undoManager.undo();
20
+ ed.nodeChanged();
21
+ return true;
22
+ }
23
+
24
+ return false; // Run browser command
25
+ });
26
+
27
+ cmds.add('Redo', function() {
28
+ var ed = this;
29
+
30
+ if (ed.settings.custom_undo_redo) {
31
+ ed.undoManager.redo();
32
+ ed.nodeChanged();
33
+ return true;
34
+ }
35
+
36
+ return false; // Run browser command
37
+ });
38
+ })();
@@ -0,0 +1,1823 @@
1
+ /**
2
+ * $Id: DOMUtils.js 1154 2009-06-10 17:31:03Z spocke $
3
+ *
4
+ * @author Moxiecode
5
+ * @copyright Copyright � 2004-2008, Moxiecode Systems AB, All rights reserved.
6
+ */
7
+
8
+ (function(tinymce) {
9
+ // Shorten names
10
+ var each = tinymce.each, is = tinymce.is;
11
+ var isWebKit = tinymce.isWebKit, isIE = tinymce.isIE;
12
+
13
+ /**#@+
14
+ * @class Utility class for various DOM manipulation and retrival functions.
15
+ * @member tinymce.dom.DOMUtils
16
+ */
17
+ tinymce.create('tinymce.dom.DOMUtils', {
18
+ doc : null,
19
+ root : null,
20
+ files : null,
21
+ pixelStyles : /^(top|left|bottom|right|width|height|borderWidth)$/,
22
+ props : {
23
+ "for" : "htmlFor",
24
+ "class" : "className",
25
+ className : "className",
26
+ checked : "checked",
27
+ disabled : "disabled",
28
+ maxlength : "maxLength",
29
+ readonly : "readOnly",
30
+ selected : "selected",
31
+ value : "value",
32
+ id : "id",
33
+ name : "name",
34
+ type : "type"
35
+ },
36
+
37
+ /**
38
+ * Constructs a new DOMUtils instance. Consult the Wiki for more details on settings etc for this class.
39
+ *
40
+ * @constructor
41
+ * @param {Document} d Document reference to bind the utility class to.
42
+ * @param {settings} s Optional settings collection.
43
+ */
44
+ DOMUtils : function(d, s) {
45
+ var t = this;
46
+
47
+ t.doc = d;
48
+ t.win = window;
49
+ t.files = {};
50
+ t.cssFlicker = false;
51
+ t.counter = 0;
52
+ t.boxModel = !tinymce.isIE || d.compatMode == "CSS1Compat";
53
+ t.stdMode = d.documentMode === 8;
54
+
55
+ t.settings = s = tinymce.extend({
56
+ keep_values : false,
57
+ hex_colors : 1,
58
+ process_html : 1
59
+ }, s);
60
+
61
+ // Fix IE6SP2 flicker and check it failed for pre SP2
62
+ if (tinymce.isIE6) {
63
+ try {
64
+ d.execCommand('BackgroundImageCache', false, true);
65
+ } catch (e) {
66
+ t.cssFlicker = true;
67
+ }
68
+ }
69
+
70
+ tinymce.addUnload(t.destroy, t);
71
+ },
72
+
73
+ /**#@+
74
+ * @method
75
+ */
76
+
77
+ /**
78
+ * Returns the root node of the document this is normally the body but might be a DIV. Parents like getParent will not
79
+ * go above the point of this root node.
80
+ *
81
+ * @return {Element} Root element for the utility class.
82
+ */
83
+ getRoot : function() {
84
+ var t = this, s = t.settings;
85
+
86
+ return (s && t.get(s.root_element)) || t.doc.body;
87
+ },
88
+
89
+ /**
90
+ * Returns the viewport of the window.
91
+ *
92
+ * @param {Window} w Optional window to get viewport of.
93
+ * @return {Object} Viewport object with fields x, y, w and h.
94
+ */
95
+ getViewPort : function(w) {
96
+ var d, b;
97
+
98
+ w = !w ? this.win : w;
99
+ d = w.document;
100
+ b = this.boxModel ? d.documentElement : d.body;
101
+
102
+ // Returns viewport size excluding scrollbars
103
+ return {
104
+ x : w.pageXOffset || b.scrollLeft,
105
+ y : w.pageYOffset || b.scrollTop,
106
+ w : w.innerWidth || b.clientWidth,
107
+ h : w.innerHeight || b.clientHeight
108
+ };
109
+ },
110
+
111
+ /**
112
+ * Returns the rectangle for a specific element.
113
+ *
114
+ * @param {Element/String} e Element object or element ID to get rectange from.
115
+ * @return {object} Rectange for specified element object with x, y, w, h fields.
116
+ */
117
+ getRect : function(e) {
118
+ var p, t = this, sr;
119
+
120
+ e = t.get(e);
121
+ p = t.getPos(e);
122
+ sr = t.getSize(e);
123
+
124
+ return {
125
+ x : p.x,
126
+ y : p.y,
127
+ w : sr.w,
128
+ h : sr.h
129
+ };
130
+ },
131
+
132
+ /**
133
+ * Returns the size dimensions of the specified element.
134
+ *
135
+ * @param {Element/String} e Element object or element ID to get rectange from.
136
+ * @return {object} Rectange for specified element object with w, h fields.
137
+ */
138
+ getSize : function(e) {
139
+ var t = this, w, h;
140
+
141
+ e = t.get(e);
142
+ w = t.getStyle(e, 'width');
143
+ h = t.getStyle(e, 'height');
144
+
145
+ // Non pixel value, then force offset/clientWidth
146
+ if (w.indexOf('px') === -1)
147
+ w = 0;
148
+
149
+ // Non pixel value, then force offset/clientWidth
150
+ if (h.indexOf('px') === -1)
151
+ h = 0;
152
+
153
+ return {
154
+ w : parseInt(w) || e.offsetWidth || e.clientWidth,
155
+ h : parseInt(h) || e.offsetHeight || e.clientHeight
156
+ };
157
+ },
158
+
159
+ /**
160
+ * Returns a node by the specified selector function. This function will
161
+ * loop through all parent nodes and call the specified function for each node.
162
+ * If the function then returns true indicating that it has found what it was looking for, the loop execution will then end
163
+ * and the node it found will be returned.
164
+ *
165
+ * @param {Node/String} n DOM node to search parents on or ID string.
166
+ * @param {function} f Selection function to execute on each node or CSS pattern.
167
+ * @param {Node} r Optional root element, never go below this point.
168
+ * @return {Node} DOM Node or null if it wasn't found.
169
+ */
170
+ getParent : function(n, f, r) {
171
+ return this.getParents(n, f, r, false);
172
+ },
173
+
174
+ /**
175
+ * Returns a node list of all parents matching the specified selector function or pattern.
176
+ * If the function then returns true indicating that it has found what it was looking for and that node will be collected.
177
+ *
178
+ * @param {Node/String} n DOM node to search parents on or ID string.
179
+ * @param {function} f Selection function to execute on each node or CSS pattern.
180
+ * @param {Node} r Optional root element, never go below this point.
181
+ * @return {Array} Array of nodes or null if it wasn't found.
182
+ */
183
+ getParents : function(n, f, r, c) {
184
+ var t = this, na, se = t.settings, o = [];
185
+
186
+ n = t.get(n);
187
+ c = c === undefined;
188
+
189
+ if (se.strict_root)
190
+ r = r || t.getRoot();
191
+
192
+ // Wrap node name as func
193
+ if (is(f, 'string')) {
194
+ na = f;
195
+
196
+ if (f === '*') {
197
+ f = function(n) {return n.nodeType == 1;};
198
+ } else {
199
+ f = function(n) {
200
+ return t.is(n, na);
201
+ };
202
+ }
203
+ }
204
+
205
+ while (n) {
206
+ if (n == r || !n.nodeType || n.nodeType === 9)
207
+ break;
208
+
209
+ if (!f || f(n)) {
210
+ if (c)
211
+ o.push(n);
212
+ else
213
+ return n;
214
+ }
215
+
216
+ n = n.parentNode;
217
+ }
218
+
219
+ return c ? o : null;
220
+ },
221
+
222
+ /**
223
+ * Returns the specified element by ID or the input element if it isn't a string.
224
+ *
225
+ * @param {String/Element} n Element id to look for or element to just pass though.
226
+ * @return {Element} Element matching the specified id or null if it wasn't found.
227
+ */
228
+ get : function(e) {
229
+ var n;
230
+
231
+ if (e && this.doc && typeof(e) == 'string') {
232
+ n = e;
233
+ e = this.doc.getElementById(e);
234
+
235
+ // IE and Opera returns meta elements when they match the specified input ID, but getElementsByName seems to do the trick
236
+ if (e && e.id !== n)
237
+ return this.doc.getElementsByName(n)[1];
238
+ }
239
+
240
+ return e;
241
+ },
242
+
243
+ // #ifndef jquery
244
+
245
+ /**
246
+ * Selects specific elements by a CSS level 3 pattern. For example "div#a1 p.test".
247
+ * This function is optimized for the most common patterns needed in TinyMCE but it also performes good enough
248
+ * on more complex patterns.
249
+ *
250
+ * @param {String} p CSS level 1 pattern to select/find elements by.
251
+ * @param {Object} s Optional root element/scope element to search in.
252
+ * @return {Array} Array with all matched elements.
253
+ */
254
+ select : function(pa, s) {
255
+ var t = this;
256
+
257
+ return tinymce.dom.Sizzle(pa, t.get(s) || t.get(t.settings.root_element) || t.doc, []);
258
+ },
259
+
260
+ /**
261
+ * Returns true/false if the specified element matches the specified css pattern.
262
+ *
263
+ * @param {Node/NodeList} n DOM node to match or an array of nodes to match.
264
+ * @param {String} patt CSS pattern to match the element agains.
265
+ */
266
+ is : function(n, patt) {
267
+ return tinymce.dom.Sizzle.matches(patt, n.nodeType ? [n] : n).length > 0;
268
+ },
269
+
270
+ // #endif
271
+
272
+ /**
273
+ * Adds the specified element to another element or elements.
274
+ *
275
+ * @param {String/Element/Array} Element id string, DOM node element or array of id's or elements to add to.
276
+ * @param {String/Element} n Name of new element to add or existing element to add.
277
+ * @param {Object} a Optional object collection with arguments to add to the new element(s).
278
+ * @param {String} h Optional inner HTML contents to add for each element.
279
+ * @param {bool} c Optional internal state to indicate if it should create or add.
280
+ * @return {Element/Array} Element that got created or array with elements if multiple elements where passed.
281
+ */
282
+ add : function(p, n, a, h, c) {
283
+ var t = this;
284
+
285
+ return this.run(p, function(p) {
286
+ var e, k;
287
+
288
+ e = is(n, 'string') ? t.doc.createElement(n) : n;
289
+ t.setAttribs(e, a);
290
+
291
+ if (h) {
292
+ if (h.nodeType)
293
+ e.appendChild(h);
294
+ else
295
+ t.setHTML(e, h);
296
+ }
297
+
298
+ return !c ? p.appendChild(e) : e;
299
+ });
300
+ },
301
+
302
+ /**
303
+ * Creates a new element.
304
+ *
305
+ * @param {String} n Name of new element.
306
+ * @param {Object} a Optional object name/value collection with element attributes.
307
+ * @param {String} h Optional HTML string to set as inner HTML of the element.
308
+ * @return {Element} HTML DOM node element that got created.
309
+ */
310
+ create : function(n, a, h) {
311
+ return this.add(this.doc.createElement(n), n, a, h, 1);
312
+ },
313
+
314
+ /**
315
+ * Create HTML string for element. The elemtn will be closed unless an empty inner HTML string is passed.
316
+ *
317
+ * @param {String} n Name of new element.
318
+ * @param {Object} a Optional object name/value collection with element attributes.
319
+ * @param {String} h Optional HTML string to set as inner HTML of the element.
320
+ * @return {String} String with new HTML element like for example: <a href="#">test</a>.
321
+ */
322
+ createHTML : function(n, a, h) {
323
+ var o = '', t = this, k;
324
+
325
+ o += '<' + n;
326
+
327
+ for (k in a) {
328
+ if (a.hasOwnProperty(k))
329
+ o += ' ' + k + '="' + t.encode(a[k]) + '"';
330
+ }
331
+
332
+ if (tinymce.is(h))
333
+ return o + '>' + h + '</' + n + '>';
334
+
335
+ return o + ' />';
336
+ },
337
+
338
+ /**
339
+ * Removes/deletes the specified element(s) from the DOM.
340
+ *
341
+ * @param {String/Element/Array} n ID of element or DOM element object or array containing multiple elements/ids.
342
+ * @param {bool} k Optional state to keep children or not. If set to true all children will be placed at the location of the removed element.
343
+ * @return {Element/Array} HTML DOM element that got removed or array of elements depending on input.
344
+ */
345
+ remove : function(n, k) {
346
+ var t = this;
347
+
348
+ return this.run(n, function(n) {
349
+ var p, g, i;
350
+
351
+ p = n.parentNode;
352
+
353
+ if (!p)
354
+ return null;
355
+
356
+ if (k) {
357
+ for (i = n.childNodes.length - 1; i >= 0; i--)
358
+ t.insertAfter(n.childNodes[i], n);
359
+
360
+ //each(n.childNodes, function(c) {
361
+ // p.insertBefore(c.cloneNode(true), n);
362
+ //});
363
+ }
364
+
365
+ // Fix IE psuedo leak
366
+ if (t.fixPsuedoLeaks) {
367
+ p = n.cloneNode(true);
368
+ k = 'IELeakGarbageBin';
369
+ g = t.get(k) || t.add(t.doc.body, 'div', {id : k, style : 'display:none'});
370
+ g.appendChild(n);
371
+ g.innerHTML = '';
372
+
373
+ return p;
374
+ }
375
+
376
+ return p.removeChild(n);
377
+ });
378
+ },
379
+
380
+ /**
381
+ * Sets the CSS style value on a HTML element. The name can be a camelcase string
382
+ * or the CSS style name like background-color.
383
+ *
384
+ * @param {String/Element/Array} n HTML element/Element ID or Array of elements/ids to set CSS style value on.
385
+ * @param {String} na Name of the style value to set.
386
+ * @param {String} v Value to set on the style.
387
+ */
388
+ setStyle : function(n, na, v) {
389
+ var t = this;
390
+
391
+ return t.run(n, function(e) {
392
+ var s, i;
393
+
394
+ s = e.style;
395
+
396
+ // Camelcase it, if needed
397
+ na = na.replace(/-(\D)/g, function(a, b){
398
+ return b.toUpperCase();
399
+ });
400
+
401
+ // Default px suffix on these
402
+ if (t.pixelStyles.test(na) && (tinymce.is(v, 'number') || /^[\-0-9\.]+$/.test(v)))
403
+ v += 'px';
404
+
405
+ switch (na) {
406
+ case 'opacity':
407
+ // IE specific opacity
408
+ if (isIE) {
409
+ s.filter = v === '' ? '' : "alpha(opacity=" + (v * 100) + ")";
410
+
411
+ if (!n.currentStyle || !n.currentStyle.hasLayout)
412
+ s.display = 'inline-block';
413
+ }
414
+
415
+ // Fix for older browsers
416
+ s[na] = s['-moz-opacity'] = s['-khtml-opacity'] = v || '';
417
+ break;
418
+
419
+ case 'float':
420
+ isIE ? s.styleFloat = v : s.cssFloat = v;
421
+ break;
422
+
423
+ default:
424
+ s[na] = v || '';
425
+ }
426
+
427
+ // Force update of the style data
428
+ if (t.settings.update_styles)
429
+ t.setAttrib(e, 'mce_style');
430
+ });
431
+ },
432
+
433
+ /**
434
+ * Returns the current style or runtime/computed value of a element.
435
+ *
436
+ * @param {String/Element} n HTML element or element id string to get style from.
437
+ * @param {String} na Style name to return.
438
+ * @param {String} c Computed style.
439
+ * @return {String} Current style or computed style value of a element.
440
+ */
441
+ getStyle : function(n, na, c) {
442
+ n = this.get(n);
443
+
444
+ if (!n)
445
+ return false;
446
+
447
+ // Gecko
448
+ if (this.doc.defaultView && c) {
449
+ // Remove camelcase
450
+ na = na.replace(/[A-Z]/g, function(a){
451
+ return '-' + a;
452
+ });
453
+
454
+ try {
455
+ return this.doc.defaultView.getComputedStyle(n, null).getPropertyValue(na);
456
+ } catch (ex) {
457
+ // Old safari might fail
458
+ return null;
459
+ }
460
+ }
461
+
462
+ // Camelcase it, if needed
463
+ na = na.replace(/-(\D)/g, function(a, b){
464
+ return b.toUpperCase();
465
+ });
466
+
467
+ if (na == 'float')
468
+ na = isIE ? 'styleFloat' : 'cssFloat';
469
+
470
+ // IE & Opera
471
+ if (n.currentStyle && c)
472
+ return n.currentStyle[na];
473
+
474
+ return n.style[na];
475
+ },
476
+
477
+ /**
478
+ * Sets multiple styles on the specified element(s).
479
+ *
480
+ * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to set styles on.
481
+ * @param {Object} o Name/Value collection of style items to add to the element(s).
482
+ */
483
+ setStyles : function(e, o) {
484
+ var t = this, s = t.settings, ol;
485
+
486
+ ol = s.update_styles;
487
+ s.update_styles = 0;
488
+
489
+ each(o, function(v, n) {
490
+ t.setStyle(e, n, v);
491
+ });
492
+
493
+ // Update style info
494
+ s.update_styles = ol;
495
+ if (s.update_styles)
496
+ t.setAttrib(e, s.cssText);
497
+ },
498
+
499
+ /**
500
+ * Sets the specified attributes value of a element or elements.
501
+ *
502
+ * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to set attribute on.
503
+ * @param {String} n Name of attribute to set.
504
+ * @param {String} v Value to set on the attribute of this value is falsy like null 0 or '' it will remove the attribute instead.
505
+ */
506
+ setAttrib : function(e, n, v) {
507
+ var t = this;
508
+
509
+ // Whats the point
510
+ if (!e || !n)
511
+ return;
512
+
513
+ // Strict XML mode
514
+ if (t.settings.strict)
515
+ n = n.toLowerCase();
516
+
517
+ return this.run(e, function(e) {
518
+ var s = t.settings;
519
+
520
+ switch (n) {
521
+ case "style":
522
+ if (!is(v, 'string')) {
523
+ each(v, function(v, n) {
524
+ t.setStyle(e, n, v);
525
+ });
526
+
527
+ return;
528
+ }
529
+
530
+ // No mce_style for elements with these since they might get resized by the user
531
+ if (s.keep_values) {
532
+ if (v && !t._isRes(v))
533
+ e.setAttribute('mce_style', v, 2);
534
+ else
535
+ e.removeAttribute('mce_style', 2);
536
+ }
537
+
538
+ e.style.cssText = v;
539
+ break;
540
+
541
+ case "class":
542
+ e.className = v || ''; // Fix IE null bug
543
+ break;
544
+
545
+ case "src":
546
+ case "href":
547
+ if (s.keep_values) {
548
+ if (s.url_converter)
549
+ v = s.url_converter.call(s.url_converter_scope || t, v, n, e);
550
+
551
+ t.setAttrib(e, 'mce_' + n, v, 2);
552
+ }
553
+
554
+ break;
555
+
556
+ case "shape":
557
+ e.setAttribute('mce_style', v);
558
+ break;
559
+ }
560
+
561
+ if (is(v) && v !== null && v.length !== 0)
562
+ e.setAttribute(n, '' + v, 2);
563
+ else
564
+ e.removeAttribute(n, 2);
565
+ });
566
+ },
567
+
568
+ /**
569
+ * Sets the specified attributes of a element or elements.
570
+ *
571
+ * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to set attributes on.
572
+ * @param {Object} o Name/Value collection of attribute items to add to the element(s).
573
+ */
574
+ setAttribs : function(e, o) {
575
+ var t = this;
576
+
577
+ return this.run(e, function(e) {
578
+ each(o, function(v, n) {
579
+ t.setAttrib(e, n, v);
580
+ });
581
+ });
582
+ },
583
+
584
+ /**
585
+ * Returns the specified attribute by name.
586
+ *
587
+ * @param {String/Element} e Element string id or DOM element to get attribute from.
588
+ * @param {String} n Name of attribute to get.
589
+ * @param {String} dv Optional default value to return if the attribute didn't exist.
590
+ * @return {String} Attribute value string, default value or null if the attribute wasn't found.
591
+ */
592
+ getAttrib : function(e, n, dv) {
593
+ var v, t = this;
594
+
595
+ e = t.get(e);
596
+
597
+ if (!e || e.nodeType !== 1)
598
+ return false;
599
+
600
+ if (!is(dv))
601
+ dv = '';
602
+
603
+ // Try the mce variant for these
604
+ if (/^(src|href|style|coords|shape)$/.test(n)) {
605
+ v = e.getAttribute("mce_" + n);
606
+
607
+ if (v)
608
+ return v;
609
+ }
610
+
611
+ if (isIE && t.props[n]) {
612
+ v = e[t.props[n]];
613
+ v = v && v.nodeValue ? v.nodeValue : v;
614
+ }
615
+
616
+ if (!v)
617
+ v = e.getAttribute(n, 2);
618
+
619
+ if (n === 'style') {
620
+ v = v || e.style.cssText;
621
+
622
+ if (v) {
623
+ v = t.serializeStyle(t.parseStyle(v));
624
+
625
+ if (t.settings.keep_values && !t._isRes(v))
626
+ e.setAttribute('mce_style', v);
627
+ }
628
+ }
629
+
630
+ // Remove Apple and WebKit stuff
631
+ if (isWebKit && n === "class" && v)
632
+ v = v.replace(/(apple|webkit)\-[a-z\-]+/gi, '');
633
+
634
+ // Handle IE issues
635
+ if (isIE) {
636
+ switch (n) {
637
+ case 'rowspan':
638
+ case 'colspan':
639
+ // IE returns 1 as default value
640
+ if (v === 1)
641
+ v = '';
642
+
643
+ break;
644
+
645
+ case 'size':
646
+ // IE returns +0 as default value for size
647
+ if (v === '+0' || v === 20 || v === 0)
648
+ v = '';
649
+
650
+ break;
651
+
652
+ case 'width':
653
+ case 'height':
654
+ case 'vspace':
655
+ case 'checked':
656
+ case 'disabled':
657
+ case 'readonly':
658
+ if (v === 0)
659
+ v = '';
660
+
661
+ break;
662
+
663
+ case 'hspace':
664
+ // IE returns -1 as default value
665
+ if (v === -1)
666
+ v = '';
667
+
668
+ break;
669
+
670
+ case 'maxlength':
671
+ case 'tabindex':
672
+ // IE returns default value
673
+ if (v === 32768 || v === 2147483647 || v === '32768')
674
+ v = '';
675
+
676
+ break;
677
+
678
+ case 'multiple':
679
+ case 'compact':
680
+ case 'noshade':
681
+ case 'nowrap':
682
+ if (v === 65535)
683
+ return n;
684
+
685
+ return dv;
686
+
687
+ case 'shape':
688
+ v = v.toLowerCase();
689
+ break;
690
+
691
+ default:
692
+ // IE has odd anonymous function for event attributes
693
+ if (n.indexOf('on') === 0 && v)
694
+ v = ('' + v).replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/, '$1');
695
+ }
696
+ }
697
+
698
+ return (v !== undefined && v !== null && v !== '') ? '' + v : dv;
699
+ },
700
+
701
+ /**
702
+ * Returns the absolute x, y position of a node. The position will be returned in a object with x, y fields.
703
+ *
704
+ * @param {Element/String} n HTML element or element id to get x, y position from.
705
+ * @param {Element} ro Optional root element to stop calculations at.
706
+ * @return {object} Absolute position of the specified element object with x, y fields.
707
+ */
708
+ getPos : function(n, ro) {
709
+ var t = this, x = 0, y = 0, e, d = t.doc, r;
710
+
711
+ n = t.get(n);
712
+ ro = ro || d.body;
713
+
714
+ if (n) {
715
+ // Use getBoundingClientRect on IE, Opera has it but it's not perfect
716
+ if (isIE && !t.stdMode) {
717
+ n = n.getBoundingClientRect();
718
+ e = t.boxModel ? d.documentElement : d.body;
719
+ x = t.getStyle(t.select('html')[0], 'borderWidth'); // Remove border
720
+ x = (x == 'medium' || t.boxModel && !t.isIE6) && 2 || x;
721
+ n.top += t.win.self != t.win.top ? 2 : 0; // IE adds some strange extra cord if used in a frameset
722
+
723
+ return {x : n.left + e.scrollLeft - x, y : n.top + e.scrollTop - x};
724
+ }
725
+
726
+ r = n;
727
+ while (r && r != ro && r.nodeType) {
728
+ x += r.offsetLeft || 0;
729
+ y += r.offsetTop || 0;
730
+ r = r.offsetParent;
731
+ }
732
+
733
+ r = n.parentNode;
734
+ while (r && r != ro && r.nodeType) {
735
+ x -= r.scrollLeft || 0;
736
+ y -= r.scrollTop || 0;
737
+ r = r.parentNode;
738
+ }
739
+ }
740
+
741
+ return {x : x, y : y};
742
+ },
743
+
744
+ /**
745
+ * Parses the specified style value into an object collection. This parser will also
746
+ * merge and remove any redundant items that browsers might have added. It will also convert non hex
747
+ * colors to hex values. Urls inside the styles will also be converted to absolute/relative based on settings.
748
+ *
749
+ * @param {String} st Style value to parse for example: border:1px solid red;.
750
+ * @return {Object} Object representation of that style like {border : '1px solid red'}
751
+ */
752
+ parseStyle : function(st) {
753
+ var t = this, s = t.settings, o = {};
754
+
755
+ if (!st)
756
+ return o;
757
+
758
+ function compress(p, s, ot) {
759
+ var t, r, b, l;
760
+
761
+ // Get values and check it it needs compressing
762
+ t = o[p + '-top' + s];
763
+ if (!t)
764
+ return;
765
+
766
+ r = o[p + '-right' + s];
767
+ if (t != r)
768
+ return;
769
+
770
+ b = o[p + '-bottom' + s];
771
+ if (r != b)
772
+ return;
773
+
774
+ l = o[p + '-left' + s];
775
+ if (b != l)
776
+ return;
777
+
778
+ // Compress
779
+ o[ot] = l;
780
+ delete o[p + '-top' + s];
781
+ delete o[p + '-right' + s];
782
+ delete o[p + '-bottom' + s];
783
+ delete o[p + '-left' + s];
784
+ };
785
+
786
+ function compress2(ta, a, b, c) {
787
+ var t;
788
+
789
+ t = o[a];
790
+ if (!t)
791
+ return;
792
+
793
+ t = o[b];
794
+ if (!t)
795
+ return;
796
+
797
+ t = o[c];
798
+ if (!t)
799
+ return;
800
+
801
+ // Compress
802
+ o[ta] = o[a] + ' ' + o[b] + ' ' + o[c];
803
+ delete o[a];
804
+ delete o[b];
805
+ delete o[c];
806
+ };
807
+
808
+ st = st.replace(/&(#?[a-z0-9]+);/g, '&$1_MCE_SEMI_'); // Protect entities
809
+
810
+ each(st.split(';'), function(v) {
811
+ var sv, ur = [];
812
+
813
+ if (v) {
814
+ v = v.replace(/_MCE_SEMI_/g, ';'); // Restore entities
815
+ v = v.replace(/url\([^\)]+\)/g, function(v) {ur.push(v);return 'url(' + ur.length + ')';});
816
+ v = v.split(':');
817
+ sv = tinymce.trim(v[1]);
818
+ sv = sv.replace(/url\(([^\)]+)\)/g, function(a, b) {return ur[parseInt(b) - 1];});
819
+
820
+ sv = sv.replace(/rgb\([^\)]+\)/g, function(v) {
821
+ return t.toHex(v);
822
+ });
823
+
824
+ if (s.url_converter) {
825
+ sv = sv.replace(/url\([\'\"]?([^\)\'\"]+)[\'\"]?\)/g, function(x, c) {
826
+ return 'url(' + s.url_converter.call(s.url_converter_scope || t, t.decode(c), 'style', null) + ')';
827
+ });
828
+ }
829
+
830
+ o[tinymce.trim(v[0]).toLowerCase()] = sv;
831
+ }
832
+ });
833
+
834
+ compress("border", "", "border");
835
+ compress("border", "-width", "border-width");
836
+ compress("border", "-color", "border-color");
837
+ compress("border", "-style", "border-style");
838
+ compress("padding", "", "padding");
839
+ compress("margin", "", "margin");
840
+ compress2('border', 'border-width', 'border-style', 'border-color');
841
+
842
+ if (isIE) {
843
+ // Remove pointless border
844
+ if (o.border == 'medium none')
845
+ o.border = '';
846
+ }
847
+
848
+ return o;
849
+ },
850
+
851
+ /**
852
+ * Serializes the specified style object into a string.
853
+ *
854
+ * @param {Object} o Object to serialize as string for example: {border : '1px solid red'}
855
+ * @return {String} String representation of the style object for example: border: 1px solid red.
856
+ */
857
+ serializeStyle : function(o) {
858
+ var s = '';
859
+
860
+ each(o, function(v, k) {
861
+ if (k && v) {
862
+ if (tinymce.isGecko && k.indexOf('-moz-') === 0)
863
+ return;
864
+
865
+ switch (k) {
866
+ case 'color':
867
+ case 'background-color':
868
+ v = v.toLowerCase();
869
+ break;
870
+ }
871
+
872
+ s += (s ? ' ' : '') + k + ': ' + v + ';';
873
+ }
874
+ });
875
+
876
+ return s;
877
+ },
878
+
879
+ /**
880
+ * Imports/loads the specified CSS file into the document bound to the class.
881
+ *
882
+ * @param {String} u URL to CSS file to load.
883
+ */
884
+ loadCSS : function(u) {
885
+ var t = this, d = t.doc, head;
886
+
887
+ if (!u)
888
+ u = '';
889
+
890
+ head = t.select('head')[0];
891
+
892
+ each(u.split(','), function(u) {
893
+ var link;
894
+
895
+ if (t.files[u])
896
+ return;
897
+
898
+ t.files[u] = true;
899
+ link = t.create('link', {rel : 'stylesheet', href : tinymce._addVer(u)});
900
+
901
+ // IE 8 has a bug where dynamically loading stylesheets would produce a 1 item remaining bug
902
+ // This fix seems to resolve that issue by realcing the document ones a stylesheet finishes loading
903
+ // It's ugly but it seems to work fine.
904
+ if (isIE && d.documentMode) {
905
+ link.onload = function() {
906
+ d.recalc();
907
+ link.onload = null;
908
+ };
909
+ }
910
+
911
+ head.appendChild(link);
912
+ });
913
+ },
914
+
915
+ /**
916
+ * Adds a class to the specified element or elements.
917
+ *
918
+ * @param {String/Element/Array} Element ID string or DOM element or array with elements or IDs.
919
+ * @param {String} c Class name to add to each element.
920
+ * @return {String/Array} String with new class value or array with new class values for all elements.
921
+ */
922
+ addClass : function(e, c) {
923
+ return this.run(e, function(e) {
924
+ var o;
925
+
926
+ if (!c)
927
+ return 0;
928
+
929
+ if (this.hasClass(e, c))
930
+ return e.className;
931
+
932
+ o = this.removeClass(e, c);
933
+
934
+ return e.className = (o != '' ? (o + ' ') : '') + c;
935
+ });
936
+ },
937
+
938
+ /**
939
+ * Removes a class from the specified element or elements.
940
+ *
941
+ * @param {String/Element/Array} Element ID string or DOM element or array with elements or IDs.
942
+ * @param {String} c Class name to remove to each element.
943
+ * @return {String/Array} String with new class value or array with new class values for all elements.
944
+ */
945
+ removeClass : function(e, c) {
946
+ var t = this, re;
947
+
948
+ return t.run(e, function(e) {
949
+ var v;
950
+
951
+ if (t.hasClass(e, c)) {
952
+ if (!re)
953
+ re = new RegExp("(^|\\s+)" + c + "(\\s+|$)", "g");
954
+
955
+ v = e.className.replace(re, ' ');
956
+
957
+ return e.className = tinymce.trim(v != ' ' ? v : '');
958
+ }
959
+
960
+ return e.className;
961
+ });
962
+ },
963
+
964
+ /**
965
+ * Returns true if the specified element has the specified class.
966
+ *
967
+ * @param {String/Element} n HTML element or element id string to check CSS class on.
968
+ * @param {String] c CSS class to check for.
969
+ * @return {bool} true/false if the specified element has the specified class.
970
+ */
971
+ hasClass : function(n, c) {
972
+ n = this.get(n);
973
+
974
+ if (!n || !c)
975
+ return false;
976
+
977
+ return (' ' + n.className + ' ').indexOf(' ' + c + ' ') !== -1;
978
+ },
979
+
980
+ /**
981
+ * Shows the specified element(s) by ID by setting the "display" style.
982
+ *
983
+ * @param {String/Element/Array} e ID of DOM element or DOM element or array with elements or IDs to show.
984
+ */
985
+ show : function(e) {
986
+ return this.setStyle(e, 'display', 'block');
987
+ },
988
+
989
+ /**
990
+ * Hides the specified element(s) by ID by setting the "display" style.
991
+ *
992
+ * @param {String/Element/Array} e ID of DOM element or DOM element or array with elements or IDs to hide.
993
+ */
994
+ hide : function(e) {
995
+ return this.setStyle(e, 'display', 'none');
996
+ },
997
+
998
+ /**
999
+ * Returns true/false if the element is hidden or not by checking the "display" style.
1000
+ *
1001
+ * @param {String/Element} e Id or element to check display state on.
1002
+ * @return {bool} true/false if the element is hidden or not.
1003
+ */
1004
+ isHidden : function(e) {
1005
+ e = this.get(e);
1006
+
1007
+ return !e || e.style.display == 'none' || this.getStyle(e, 'display') == 'none';
1008
+ },
1009
+
1010
+ /**
1011
+ * Returns a unique id. This can be useful when generating elements on the fly.
1012
+ * This method will not check if the element allready exists.
1013
+ *
1014
+ * @param {String} p Optional prefix to add infront of all ids defaults to "mce_".
1015
+ * @return {String} Unique id.
1016
+ */
1017
+ uniqueId : function(p) {
1018
+ return (!p ? 'mce_' : p) + (this.counter++);
1019
+ },
1020
+
1021
+ /**
1022
+ * Sets the specified HTML content inside the element or elements. The HTML will first be processed this means
1023
+ * URLs will get converted, hex color values fixed etc. Check processHTML for details.
1024
+ *
1025
+ * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to set HTML inside.
1026
+ * @param {String} h HTML content to set as inner HTML of the element.
1027
+ */
1028
+ setHTML : function(e, h) {
1029
+ var t = this;
1030
+
1031
+ return this.run(e, function(e) {
1032
+ var x, i, nl, n, p, x;
1033
+
1034
+ h = t.processHTML(h);
1035
+
1036
+ if (isIE) {
1037
+ function set() {
1038
+ try {
1039
+ // IE will remove comments from the beginning
1040
+ // unless you padd the contents with something
1041
+ e.innerHTML = '<br />' + h;
1042
+ e.removeChild(e.firstChild);
1043
+ } catch (ex) {
1044
+ // IE sometimes produces an unknown runtime error on innerHTML if it's an block element within a block element for example a div inside a p
1045
+ // This seems to fix this problem
1046
+
1047
+ // Remove all child nodes
1048
+ while (e.firstChild)
1049
+ e.firstChild.removeNode();
1050
+
1051
+ // Create new div with HTML contents and a BR infront to keep comments
1052
+ x = t.create('div');
1053
+ x.innerHTML = '<br />' + h;
1054
+
1055
+ // Add all children from div to target
1056
+ each (x.childNodes, function(n, i) {
1057
+ // Skip br element
1058
+ if (i)
1059
+ e.appendChild(n);
1060
+ });
1061
+ }
1062
+ };
1063
+
1064
+ // IE has a serious bug when it comes to paragraphs it can produce an invalid
1065
+ // DOM tree if contents like this <p><ul><li>Item 1</li></ul></p> is inserted
1066
+ // It seems to be that IE doesn't like a root block element placed inside another root block element
1067
+ if (t.settings.fix_ie_paragraphs)
1068
+ h = h.replace(/<p><\/p>|<p([^>]+)><\/p>|<p[^\/+]\/>/gi, '<p$1 mce_keep="true">&nbsp;</p>');
1069
+
1070
+ set();
1071
+
1072
+ if (t.settings.fix_ie_paragraphs) {
1073
+ // Check for odd paragraphs this is a sign of a broken DOM
1074
+ nl = e.getElementsByTagName("p");
1075
+ for (i = nl.length - 1, x = 0; i >= 0; i--) {
1076
+ n = nl[i];
1077
+
1078
+ if (!n.hasChildNodes()) {
1079
+ if (!n.mce_keep) {
1080
+ x = 1; // Is broken
1081
+ break;
1082
+ }
1083
+
1084
+ n.removeAttribute('mce_keep');
1085
+ }
1086
+ }
1087
+ }
1088
+
1089
+ // Time to fix the madness IE left us
1090
+ if (x) {
1091
+ // So if we replace the p elements with divs and mark them and then replace them back to paragraphs
1092
+ // after we use innerHTML we can fix the DOM tree
1093
+ h = h.replace(/<p ([^>]+)>|<p>/g, '<div $1 mce_tmp="1">');
1094
+ h = h.replace(/<\/p>/g, '</div>');
1095
+
1096
+ // Set the new HTML with DIVs
1097
+ set();
1098
+
1099
+ // Replace all DIV elements with he mce_tmp attibute back to paragraphs
1100
+ // This is needed since IE has a annoying bug see above for details
1101
+ // This is a slow process but it has to be done. :(
1102
+ if (t.settings.fix_ie_paragraphs) {
1103
+ nl = e.getElementsByTagName("DIV");
1104
+ for (i = nl.length - 1; i >= 0; i--) {
1105
+ n = nl[i];
1106
+
1107
+ // Is it a temp div
1108
+ if (n.mce_tmp) {
1109
+ // Create new paragraph
1110
+ p = t.doc.createElement('p');
1111
+
1112
+ // Copy all attributes
1113
+ n.cloneNode(false).outerHTML.replace(/([a-z0-9\-_]+)=/gi, function(a, b) {
1114
+ var v;
1115
+
1116
+ if (b !== 'mce_tmp') {
1117
+ v = n.getAttribute(b);
1118
+
1119
+ if (!v && b === 'class')
1120
+ v = n.className;
1121
+
1122
+ p.setAttribute(b, v);
1123
+ }
1124
+ });
1125
+
1126
+ // Append all children to new paragraph
1127
+ for (x = 0; x<n.childNodes.length; x++)
1128
+ p.appendChild(n.childNodes[x].cloneNode(true));
1129
+
1130
+ // Replace div with new paragraph
1131
+ n.swapNode(p);
1132
+ }
1133
+ }
1134
+ }
1135
+ }
1136
+ } else
1137
+ e.innerHTML = h;
1138
+
1139
+ return h;
1140
+ });
1141
+ },
1142
+
1143
+ /**
1144
+ * Processes the HTML by replacing strong, em, del in gecko since it doesn't support them
1145
+ * properly in a RTE environment. It also converts any URLs in links and images and places
1146
+ * a converted value into a separate attribute with the mce prefix like mce_src or mce_href.
1147
+ *
1148
+ * @param {String} h HTML to process.
1149
+ * @return {String} Processed HTML code.
1150
+ */
1151
+ processHTML : function(h) {
1152
+ var t = this, s = t.settings;
1153
+
1154
+ if (!s.process_html)
1155
+ return h;
1156
+
1157
+ // Convert strong and em to b and i in FF since it can't handle them
1158
+ if (tinymce.isGecko) {
1159
+ h = h.replace(/<(\/?)strong>|<strong( [^>]+)>/gi, '<$1b$2>');
1160
+ h = h.replace(/<(\/?)em>|<em( [^>]+)>/gi, '<$1i$2>');
1161
+ } else if (isIE) {
1162
+ h = h.replace(/&apos;/g, '&#39;'); // IE can't handle apos
1163
+ h = h.replace(/\s+(disabled|checked|readonly|selected)\s*=\s*[\"\']?(false|0)[\"\']?/gi, ''); // IE doesn't handle default values correct
1164
+ }
1165
+
1166
+ // Fix some issues
1167
+ h = h.replace(/<a( )([^>]+)\/>|<a\/>/gi, '<a$1$2></a>'); // Force open
1168
+
1169
+ // Store away src and href in mce_src and mce_href since browsers mess them up
1170
+ if (s.keep_values) {
1171
+ // Wrap scripts and styles in comments for serialization purposes
1172
+ if (/<script|noscript|style/.test(h)) {
1173
+ function trim(s) {
1174
+ // Remove prefix and suffix code for element
1175
+ s = s.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n');
1176
+ s = s.replace(/^[\r\n]*|[\r\n]*$/g, '');
1177
+ s = s.replace(/^\s*(\/\/\s*<!--|\/\/\s*<!\[CDATA\[|<!--|<!\[CDATA\[)[\r\n]*/g, '');
1178
+ s = s.replace(/\s*(\/\/\s*\]\]>|\/\/\s*-->|\]\]>|-->|\]\]-->)\s*$/g, '');
1179
+
1180
+ return s;
1181
+ };
1182
+
1183
+ // Wrap the script contents in CDATA and keep them from executing
1184
+ h = h.replace(/<script([^>]+|)>([\s\S]*?)<\/script>/g, function(v, attribs, text) {
1185
+ // Force type attribute
1186
+ if (!attribs)
1187
+ attribs = ' type="text/javascript"';
1188
+
1189
+ // Prefix script type/language attribute values with mce- to prevent it from executing
1190
+ attribs = attribs.replace(/(type|language)=\"?/, '$&mce-');
1191
+ attribs = attribs.replace(/src=\"([^\"]+)\"?/, function(a, url) {
1192
+ if (s.url_converter)
1193
+ url = t.encode(s.url_converter.call(s.url_converter_scope || t, t.decode(url), 'src', 'script'));
1194
+
1195
+ return 'mce_src="' + url + '"';
1196
+ });
1197
+
1198
+ // Wrap text contents
1199
+ if (tinymce.trim(text))
1200
+ text = '<!--\n' + trim(text) + '\n// -->';
1201
+
1202
+ return '<mce:script' + attribs + '>' + text + '</mce:script>';
1203
+ });
1204
+
1205
+ // Wrap style elements
1206
+ h = h.replace(/<style([^>]+|)>([\s\S]*?)<\/style>/g, function(v, attribs, text) {
1207
+ // Wrap text contents
1208
+ if (text)
1209
+ text = '<!--\n' + trim(text) + '\n-->';
1210
+
1211
+ return '<mce:style' + attribs + '>' + text + '</mce:style><style ' + attribs + ' mce_bogus="1">' + text + '</style>';
1212
+ });
1213
+
1214
+ // Wrap noscript elements
1215
+ h = h.replace(/<noscript([^>]+|)>([\s\S]*?)<\/noscript>/g, function(v, attribs, text) {
1216
+ return '<mce:noscript' + attribs + '><!--' + t.encode(text).replace(/--/g, '&#45;&#45;') + '--></mce:noscript>';
1217
+ });
1218
+ }
1219
+
1220
+ h = h.replace(/<!\[CDATA\[([\s\S]+)\]\]>/g, '<!--[CDATA[$1]]-->');
1221
+
1222
+ // Process all tags with src, href or style
1223
+ h = h.replace(/<([\w:]+) [^>]*(src|href|style|shape|coords)[^>]*>/gi, function(a, n) {
1224
+ function handle(m, b, c) {
1225
+ var u = c;
1226
+
1227
+ // Tag already got a mce_ version
1228
+ if (a.indexOf('mce_' + b) != -1)
1229
+ return m;
1230
+
1231
+ if (b == 'style') {
1232
+ // No mce_style for elements with these since they might get resized by the user
1233
+ if (t._isRes(c))
1234
+ return m;
1235
+
1236
+ if (s.hex_colors) {
1237
+ u = u.replace(/rgb\([^\)]+\)/g, function(v) {
1238
+ return t.toHex(v);
1239
+ });
1240
+ }
1241
+
1242
+ if (s.url_converter) {
1243
+ u = u.replace(/url\([\'\"]?([^\)\'\"]+)\)/g, function(x, c) {
1244
+ return 'url(' + t.encode(s.url_converter.call(s.url_converter_scope || t, t.decode(c), b, n)) + ')';
1245
+ });
1246
+ }
1247
+ } else if (b != 'coords' && b != 'shape') {
1248
+ if (s.url_converter)
1249
+ u = t.encode(s.url_converter.call(s.url_converter_scope || t, t.decode(c), b, n));
1250
+ }
1251
+
1252
+ return ' ' + b + '="' + c + '" mce_' + b + '="' + u + '"';
1253
+ };
1254
+
1255
+ a = a.replace(/ (src|href|style|coords|shape)=[\"]([^\"]+)[\"]/gi, handle); // W3C
1256
+ a = a.replace(/ (src|href|style|coords|shape)=[\']([^\']+)[\']/gi, handle); // W3C
1257
+
1258
+ return a.replace(/ (src|href|style|coords|shape)=([^\s\"\'>]+)/gi, handle); // IE
1259
+ });
1260
+ }
1261
+
1262
+ return h;
1263
+ },
1264
+
1265
+ /**
1266
+ * Returns the outer HTML of an element.
1267
+ *
1268
+ * @param {String/Element} e Element ID or element object to get outer HTML from.
1269
+ * @return {String} Outer HTML string.
1270
+ */
1271
+ getOuterHTML : function(e) {
1272
+ var d;
1273
+
1274
+ e = this.get(e);
1275
+
1276
+ if (!e)
1277
+ return null;
1278
+
1279
+ if (e.outerHTML !== undefined)
1280
+ return e.outerHTML;
1281
+
1282
+ d = (e.ownerDocument || this.doc).createElement("body");
1283
+ d.appendChild(e.cloneNode(true));
1284
+
1285
+ return d.innerHTML;
1286
+ },
1287
+
1288
+ /**
1289
+ * Sets the specified outer HTML on a element or elements.
1290
+ *
1291
+ * @param {Element/String/Array} e DOM element, element id string or array of elements/ids to set outer HTML on.
1292
+ * @param {Object} h HTML code to set as outer value for the element.
1293
+ * @param {Document} d Optional document scope to use in this process defaults to the document of the DOM class.
1294
+ */
1295
+ setOuterHTML : function(e, h, d) {
1296
+ var t = this;
1297
+
1298
+ return this.run(e, function(e) {
1299
+ var n, tp;
1300
+
1301
+ e = t.get(e);
1302
+ d = d || e.ownerDocument || t.doc;
1303
+
1304
+ if (isIE && e.nodeType == 1)
1305
+ e.outerHTML = h;
1306
+ else {
1307
+ tp = d.createElement("body");
1308
+ tp.innerHTML = h;
1309
+
1310
+ n = tp.lastChild;
1311
+ while (n) {
1312
+ t.insertAfter(n.cloneNode(true), e);
1313
+ n = n.previousSibling;
1314
+ }
1315
+
1316
+ t.remove(e);
1317
+ }
1318
+ });
1319
+ },
1320
+
1321
+ /**
1322
+ * Entity decode a string, resolves any HTML entities like &aring;.
1323
+ *
1324
+ * @param {String} s String to decode entities on.
1325
+ * @return {String} Entity decoded string.
1326
+ */
1327
+ decode : function(s) {
1328
+ var e, n, v;
1329
+
1330
+ // Look for entities to decode
1331
+ if (/&[^;]+;/.test(s)) {
1332
+ // Decode the entities using a div element not super efficient but less code
1333
+ e = this.doc.createElement("div");
1334
+ e.innerHTML = s;
1335
+ n = e.firstChild;
1336
+ v = '';
1337
+
1338
+ if (n) {
1339
+ do {
1340
+ v += n.nodeValue;
1341
+ } while (n.nextSibling);
1342
+ }
1343
+
1344
+ return v || s;
1345
+ }
1346
+
1347
+ return s;
1348
+ },
1349
+
1350
+ /**
1351
+ * Entity encodes a string, encodes the most common entities <>"& into entities.
1352
+ *
1353
+ * @param {String} s String to encode with entities.
1354
+ * @return {String} Entity encoded string.
1355
+ */
1356
+ encode : function(s) {
1357
+ return s ? ('' + s).replace(/[<>&\"]/g, function (c, b) {
1358
+ switch (c) {
1359
+ case '&':
1360
+ return '&amp;';
1361
+
1362
+ case '"':
1363
+ return '&quot;';
1364
+
1365
+ case '<':
1366
+ return '&lt;';
1367
+
1368
+ case '>':
1369
+ return '&gt;';
1370
+ }
1371
+
1372
+ return c;
1373
+ }) : s;
1374
+ },
1375
+
1376
+ /**
1377
+ * Inserts a element after the reference element.
1378
+ *
1379
+ * @param {Element} Element to insert after the reference.
1380
+ * @param {Element/String/Array} r Reference element, element id or array of elements to insert after.
1381
+ * @return {Element/Array} Element that got added or an array with elements.
1382
+ */
1383
+ insertAfter : function(n, r) {
1384
+ var t = this;
1385
+
1386
+ r = t.get(r);
1387
+
1388
+ return this.run(n, function(n) {
1389
+ var p, ns;
1390
+
1391
+ p = r.parentNode;
1392
+ ns = r.nextSibling;
1393
+
1394
+ if (ns)
1395
+ p.insertBefore(n, ns);
1396
+ else
1397
+ p.appendChild(n);
1398
+
1399
+ return n;
1400
+ });
1401
+ },
1402
+
1403
+ /**
1404
+ * Returns true/false if the specified element is a block element or not.
1405
+ *
1406
+ * @param {Node} n Element/Node to check.
1407
+ * @return {bool} True/False state if the node is a block element or not.
1408
+ */
1409
+ isBlock : function(n) {
1410
+ if (n.nodeType && n.nodeType !== 1)
1411
+ return false;
1412
+
1413
+ n = n.nodeName || n;
1414
+
1415
+ return /^(H[1-6]|HR|P|DIV|ADDRESS|PRE|FORM|TABLE|LI|OL|UL|TR|TD|CAPTION|BLOCKQUOTE|CENTER|DL|DT|DD|DIR|FIELDSET|NOSCRIPT|NOFRAMES|MENU|ISINDEX|SAMP)$/.test(n);
1416
+ },
1417
+
1418
+ /**
1419
+ * Replaces the specified element or elements with the specified element, the new element will
1420
+ * be cloned if multiple inputs elements are passed.
1421
+ *
1422
+ * @param {Element} n New element to replace old ones with.
1423
+ * @param {Element/String/Array} o Element DOM node, element id or array of elements or ids to replace.
1424
+ * @param {bool} k Optional keep children state, if set to true child nodes from the old object will be added to new ones.
1425
+ */
1426
+ replace : function(n, o, k) {
1427
+ var t = this;
1428
+
1429
+ if (is(o, 'array'))
1430
+ n = n.cloneNode(true);
1431
+
1432
+ return t.run(o, function(o) {
1433
+ if (k) {
1434
+ each(o.childNodes, function(c) {
1435
+ n.appendChild(c.cloneNode(true));
1436
+ });
1437
+ }
1438
+
1439
+ // Fix IE psuedo leak for elements since replacing elements if fairly common
1440
+ // Will break parentNode for some unknown reason
1441
+ if (t.fixPsuedoLeaks && o.nodeType === 1) {
1442
+ o.parentNode.insertBefore(n, o);
1443
+ t.remove(o);
1444
+ return n;
1445
+ }
1446
+
1447
+ return o.parentNode.replaceChild(n, o);
1448
+ });
1449
+ },
1450
+
1451
+ /**
1452
+ * Find the common ancestor of two elements. This is a shorter method than using the DOM Range logic.
1453
+ *
1454
+ * @param {Element} a Element to find common ancestor of.
1455
+ * @param {Element} b Element to find common ancestor of.
1456
+ * @return {Element} Common ancestor element of the two input elements.
1457
+ */
1458
+ findCommonAncestor : function(a, b) {
1459
+ var ps = a, pe;
1460
+
1461
+ while (ps) {
1462
+ pe = b;
1463
+
1464
+ while (pe && ps != pe)
1465
+ pe = pe.parentNode;
1466
+
1467
+ if (ps == pe)
1468
+ break;
1469
+
1470
+ ps = ps.parentNode;
1471
+ }
1472
+
1473
+ if (!ps && a.ownerDocument)
1474
+ return a.ownerDocument.documentElement;
1475
+
1476
+ return ps;
1477
+ },
1478
+
1479
+ /**
1480
+ * Parses the specified RGB color value and returns a hex version of that color.
1481
+ *
1482
+ * @param {String} s RGB string value like rgb(1,2,3)
1483
+ * @return {String} Hex version of that RGB value like #FF00FF.
1484
+ */
1485
+ toHex : function(s) {
1486
+ var c = /^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(s);
1487
+
1488
+ function hex(s) {
1489
+ s = parseInt(s).toString(16);
1490
+
1491
+ return s.length > 1 ? s : '0' + s; // 0 -> 00
1492
+ };
1493
+
1494
+ if (c) {
1495
+ s = '#' + hex(c[1]) + hex(c[2]) + hex(c[3]);
1496
+
1497
+ return s;
1498
+ }
1499
+
1500
+ return s;
1501
+ },
1502
+
1503
+ /**
1504
+ * Returns a array of all single CSS classes in the document. A single CSS class is a simple
1505
+ * rule like ".class" complex ones like "div td.class" will not be added to output.
1506
+ *
1507
+ * @return {Array} Array with class objects each object has a class field might be other fields in the future.
1508
+ */
1509
+ getClasses : function() {
1510
+ var t = this, cl = [], i, lo = {}, f = t.settings.class_filter, ov;
1511
+
1512
+ if (t.classes)
1513
+ return t.classes;
1514
+
1515
+ function addClasses(s) {
1516
+ // IE style imports
1517
+ each(s.imports, function(r) {
1518
+ addClasses(r);
1519
+ });
1520
+
1521
+ each(s.cssRules || s.rules, function(r) {
1522
+ // Real type or fake it on IE
1523
+ switch (r.type || 1) {
1524
+ // Rule
1525
+ case 1:
1526
+ if (r.selectorText) {
1527
+ each(r.selectorText.split(','), function(v) {
1528
+ v = v.replace(/^\s*|\s*$|^\s\./g, "");
1529
+
1530
+ // Is internal or it doesn't contain a class
1531
+ if (/\.mce/.test(v) || !/\.[\w\-]+$/.test(v))
1532
+ return;
1533
+
1534
+ // Remove everything but class name
1535
+ ov = v;
1536
+ v = v.replace(/.*\.([a-z0-9_\-]+).*/i, '$1');
1537
+
1538
+ // Filter classes
1539
+ if (f && !(v = f(v, ov)))
1540
+ return;
1541
+
1542
+ if (!lo[v]) {
1543
+ cl.push({'class' : v});
1544
+ lo[v] = 1;
1545
+ }
1546
+ });
1547
+ }
1548
+ break;
1549
+
1550
+ // Import
1551
+ case 3:
1552
+ addClasses(r.styleSheet);
1553
+ break;
1554
+ }
1555
+ });
1556
+ };
1557
+
1558
+ try {
1559
+ each(t.doc.styleSheets, addClasses);
1560
+ } catch (ex) {
1561
+ // Ignore
1562
+ }
1563
+
1564
+ if (cl.length > 0)
1565
+ t.classes = cl;
1566
+
1567
+ return cl;
1568
+ },
1569
+
1570
+ /**
1571
+ * Executes the specified function on the element by id or dom element node or array of elements/id.
1572
+ *
1573
+ * @param {String/Element/Array} Element ID or DOM element object or array with ids or elements.
1574
+ * @param {function} f Function to execute for each item.
1575
+ * @param {Object} s Optional scope to execute the function in.
1576
+ * @return {Object/Array} Single object or array with objects depending on multiple input or not.
1577
+ */
1578
+ run : function(e, f, s) {
1579
+ var t = this, o;
1580
+
1581
+ if (t.doc && typeof(e) === 'string')
1582
+ e = t.get(e);
1583
+
1584
+ if (!e)
1585
+ return false;
1586
+
1587
+ s = s || this;
1588
+ if (!e.nodeType && (e.length || e.length === 0)) {
1589
+ o = [];
1590
+
1591
+ each(e, function(e, i) {
1592
+ if (e) {
1593
+ if (typeof(e) == 'string')
1594
+ e = t.doc.getElementById(e);
1595
+
1596
+ o.push(f.call(s, e, i));
1597
+ }
1598
+ });
1599
+
1600
+ return o;
1601
+ }
1602
+
1603
+ return f.call(s, e);
1604
+ },
1605
+
1606
+ /**
1607
+ * Returns an NodeList with attributes for the element.
1608
+ *
1609
+ * @param {HTMLElement/string} n Element node or string id to get attributes from.
1610
+ * @return {NodeList} NodeList with attributes.
1611
+ */
1612
+ getAttribs : function(n) {
1613
+ var o;
1614
+
1615
+ n = this.get(n);
1616
+
1617
+ if (!n)
1618
+ return [];
1619
+
1620
+ if (isIE) {
1621
+ o = [];
1622
+
1623
+ // Object will throw exception in IE
1624
+ if (n.nodeName == 'OBJECT')
1625
+ return n.attributes;
1626
+
1627
+ // It's crazy that this is faster in IE but it's because it returns all attributes all the time
1628
+ n.cloneNode(false).outerHTML.replace(/([a-z0-9\:\-_]+)=/gi, function(a, b) {
1629
+ o.push({specified : 1, nodeName : b});
1630
+ });
1631
+
1632
+ return o;
1633
+ }
1634
+
1635
+ return n.attributes;
1636
+ },
1637
+
1638
+ /**
1639
+ * Destroys all internal references to the DOM to solve IE leak issues.
1640
+ */
1641
+ destroy : function(s) {
1642
+ var t = this;
1643
+
1644
+ if (t.events)
1645
+ t.events.destroy();
1646
+
1647
+ t.win = t.doc = t.root = t.events = null;
1648
+
1649
+ // Manual destroy then remove unload handler
1650
+ if (!s)
1651
+ tinymce.removeUnload(t.destroy);
1652
+ },
1653
+
1654
+ /**
1655
+ * Created a new DOM Range object. This will use the native DOM Range API if it's
1656
+ * available if it's not it will fallback to the custom TinyMCE implementation.
1657
+ *
1658
+ * @return {DOMRange} DOM Range object.
1659
+ */
1660
+ createRng : function() {
1661
+ var d = this.doc;
1662
+
1663
+ return d.createRange ? d.createRange() : new tinymce.dom.Range(this);
1664
+ },
1665
+
1666
+ /**
1667
+ * Splits an element into two new elements and places the specified split
1668
+ * element or element between the new ones. For example splitting the paragraph at the bold element in
1669
+ * this example <p>abc<b>abc</b>123</p> would produce <p>abc</p><b>abc</b><p>123</p>.
1670
+ *
1671
+ * @param {Element} pe Parent element to split.
1672
+ * @param {Element} e Element to split at.
1673
+ * @param {Element} re Optional replacement element to replace the split element by.
1674
+ * @return {Element} Returns the split element or the replacement element if that is specified.
1675
+ */
1676
+ split : function(pe, e, re) {
1677
+ var t = this, r = t.createRng(), bef, aft, pa;
1678
+
1679
+ // W3C valid browsers tend to leave empty nodes to the left/right side of the contents, this makes sence
1680
+ // but we don't want that in our code since it serves no purpose
1681
+ // For example if this is chopped:
1682
+ // <p>text 1<span><b>CHOP</b></span>text 2</p>
1683
+ // would produce:
1684
+ // <p>text 1<span></span></p><b>CHOP</b><p><span></span>text 2</p>
1685
+ // this function will then trim of empty edges and produce:
1686
+ // <p>text 1</p><b>CHOP</b><p>text 2</p>
1687
+ function trimEdge(n, na) {
1688
+ n = n[na];
1689
+
1690
+ if (n && n[na] && n[na].nodeType == 1 && isEmpty(n[na]))
1691
+ t.remove(n[na]);
1692
+ };
1693
+
1694
+ function isEmpty(n) {
1695
+ n = t.getOuterHTML(n);
1696
+ n = n.replace(/<(img|hr|table)/gi, '-'); // Keep these convert them to - chars
1697
+ n = n.replace(/<[^>]+>/g, ''); // Remove all tags
1698
+
1699
+ return n.replace(/[ \t\r\n]+|&nbsp;|&#160;/g, '') == '';
1700
+ };
1701
+
1702
+ if (pe && e) {
1703
+ // Get before chunk
1704
+ r.setStartBefore(pe);
1705
+ r.setEndBefore(e);
1706
+ bef = r.extractContents();
1707
+
1708
+ // Get after chunk
1709
+ r = t.createRng();
1710
+ r.setStartAfter(e);
1711
+ r.setEndAfter(pe);
1712
+ aft = r.extractContents();
1713
+
1714
+ // Insert chunks and remove parent
1715
+ pa = pe.parentNode;
1716
+
1717
+ // Remove right side edge of the before contents
1718
+ trimEdge(bef, 'lastChild');
1719
+
1720
+ if (!isEmpty(bef))
1721
+ pa.insertBefore(bef, pe);
1722
+
1723
+ if (re)
1724
+ pa.replaceChild(re, e);
1725
+ else
1726
+ pa.insertBefore(e, pe);
1727
+
1728
+ // Remove left site edge of the after contents
1729
+ trimEdge(aft, 'firstChild');
1730
+
1731
+ if (!isEmpty(aft))
1732
+ pa.insertBefore(aft, pe);
1733
+
1734
+ t.remove(pe);
1735
+
1736
+ return re || e;
1737
+ }
1738
+ },
1739
+
1740
+ /**
1741
+ * Adds an event handler to the specified object.
1742
+ *
1743
+ * @param {Element/Document/Window/Array/String} o Object or element id string to add event handler to or an array of elements/ids/documents.
1744
+ * @param {String} n Name of event handler to add for example: click.
1745
+ * @param {function} f Function to execute when the event occurs.
1746
+ * @param {Object} s Optional scope to execute the function in.
1747
+ * @return {function} Function callback handler the same as the one passed in.
1748
+ */
1749
+ bind : function(target, name, func, scope) {
1750
+ var t = this;
1751
+
1752
+ if (!t.events)
1753
+ t.events = new tinymce.dom.EventUtils();
1754
+
1755
+ return t.events.add(target, name, func, scope || this);
1756
+ },
1757
+
1758
+ /**
1759
+ * Removes the specified event handler by name and function from a element or collection of elements.
1760
+ *
1761
+ * @param {String/Element/Array} o Element ID string or HTML element or an array of elements or ids to remove handler from.
1762
+ * @param {String} n Event handler name like for example: "click"
1763
+ * @param {function} f Function to remove.
1764
+ * @return {bool/Array} Bool state if true if the handler was removed or an array with states if multiple elements where passed in.
1765
+ */
1766
+ unbind : function(target, name, func) {
1767
+ var t = this;
1768
+
1769
+ if (!t.events)
1770
+ t.events = new tinymce.dom.EventUtils();
1771
+
1772
+ return t.events.remove(target, name, func);
1773
+ },
1774
+
1775
+ // #ifdef debug
1776
+
1777
+ dumpRng : function(r) {
1778
+ return 'startContainer: ' + r.startContainer.nodeName + ', startOffset: ' + r.startOffset + ', endContainer: ' + r.endContainer.nodeName + ', endOffset: ' + r.endOffset;
1779
+ },
1780
+
1781
+ // #endif
1782
+
1783
+ _isRes : function(c) {
1784
+ // Is live resizble element
1785
+ return /^(top|left|bottom|right|width|height)/i.test(c) || /;\s*(top|left|bottom|right|width|height)/i.test(c);
1786
+ }
1787
+
1788
+ /*
1789
+ walk : function(n, f, s) {
1790
+ var d = this.doc, w;
1791
+
1792
+ if (d.createTreeWalker) {
1793
+ w = d.createTreeWalker(n, NodeFilter.SHOW_TEXT, null, false);
1794
+
1795
+ while ((n = w.nextNode()) != null)
1796
+ f.call(s || this, n);
1797
+ } else
1798
+ tinymce.walk(n, f, 'childNodes', s);
1799
+ }
1800
+ */
1801
+
1802
+ /*
1803
+ toRGB : function(s) {
1804
+ var c = /^\s*?#([0-9A-F]{2})([0-9A-F]{1,2})([0-9A-F]{2})?\s*?$/.exec(s);
1805
+
1806
+ if (c) {
1807
+ // #FFF -> #FFFFFF
1808
+ if (!is(c[3]))
1809
+ c[3] = c[2] = c[1];
1810
+
1811
+ return "rgb(" + parseInt(c[1], 16) + "," + parseInt(c[2], 16) + "," + parseInt(c[3], 16) + ")";
1812
+ }
1813
+
1814
+ return s;
1815
+ }
1816
+ */
1817
+
1818
+ /**#@-*/
1819
+ });
1820
+
1821
+ // Setup page DOM
1822
+ tinymce.DOM = new tinymce.dom.DOMUtils(document, {process_html : 0});
1823
+ })(tinymce);