skylinecms 3.0.8 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. data/CHANGELOG +131 -10
  2. data/README.md +1 -2
  3. data/Rakefile +3 -3
  4. data/app/controllers/skyline/application_controller.rb +40 -4
  5. data/app/controllers/skyline/articles_controller.rb +4 -4
  6. data/app/controllers/skyline/browser/tabs/media_library/media_files_controller.rb +1 -1
  7. data/app/controllers/skyline/content_controller.rb +4 -3
  8. data/app/controllers/skyline/{media_files_data_controller.rb → media/data_controller.rb} +61 -59
  9. data/app/controllers/skyline/media/dirs_controller.rb +83 -0
  10. data/app/controllers/skyline/media/files_controller.rb +80 -0
  11. data/app/controllers/skyline/sections_controller.rb +10 -3
  12. data/app/controllers/skyline/settings_controller.rb +4 -2
  13. data/app/controllers/skyline/user_preferences_controller.rb +18 -0
  14. data/app/controllers/skyline/users_controller.rb +1 -1
  15. data/app/controllers/skyline/variant_current_editor_controller.rb +2 -0
  16. data/app/helpers/skyline/application_helper.rb +39 -35
  17. data/app/helpers/skyline/dialog_helper.rb +11 -10
  18. data/app/helpers/skyline/editors/boolean.rb +2 -2
  19. data/app/helpers/skyline/editors/page_browser.rb +2 -0
  20. data/app/helpers/skyline/editors/wysiwyg.rb +1 -1
  21. data/app/helpers/skyline/js_layout_helper.rb +19 -0
  22. data/app/helpers/skyline/media/dirs_helper.rb +2 -0
  23. data/app/helpers/skyline/media/files_helper.rb +6 -0
  24. data/app/helpers/skyline/media_files_helper.rb +2 -2
  25. data/app/helpers/skyline/menu_helper.rb +33 -0
  26. data/app/helpers/skyline/message_generator.rb +5 -1
  27. data/app/helpers/skyline/notification_generator.rb +6 -0
  28. data/app/helpers/skyline/plugin_helper.rb +21 -0
  29. data/app/helpers/skyline/presenters/presenter.rb +4 -13
  30. data/app/helpers/skyline/presenters/table.rb +0 -27
  31. data/app/helpers/skyline/ref_object_helper.rb +2 -2
  32. data/app/helpers/skyline/tree_helper.rb +74 -5
  33. data/app/models/skyline/article.rb +18 -6
  34. data/app/models/skyline/article_version.rb +1 -1
  35. data/app/models/skyline/image_ref.rb +9 -5
  36. data/app/models/skyline/inline_ref.rb +3 -2
  37. data/app/models/skyline/link_section_link.rb +2 -2
  38. data/app/models/skyline/media_file.rb +33 -10
  39. data/app/models/skyline/page.rb +10 -9
  40. data/app/models/skyline/section.rb +1 -1
  41. data/app/models/skyline/sections/content_collection_section.rb +1 -1
  42. data/app/models/skyline/sections/content_item_section.rb +1 -1
  43. data/app/models/skyline/sections/heading_section.rb +1 -1
  44. data/app/models/skyline/sections/iframe_section.rb +2 -2
  45. data/app/models/skyline/sections/link_section.rb +1 -1
  46. data/app/models/skyline/sections/media_section.rb +32 -5
  47. data/app/models/skyline/sections/page_fragment_section.rb +1 -1
  48. data/app/models/skyline/sections/raw_section.rb +1 -1
  49. data/app/models/skyline/sections/redirect_section.rb +4 -4
  50. data/app/models/skyline/sections/rss_section.rb +7 -2
  51. data/app/models/skyline/sections/splitter_section.rb +1 -1
  52. data/app/models/skyline/sections/wysiwyg_section.rb +3 -3
  53. data/app/models/skyline/site.rb +1 -1
  54. data/app/models/skyline/user.rb +1 -1
  55. data/app/models/skyline/user_preference.rb +69 -0
  56. data/app/models/skyline/variant.rb +1 -1
  57. data/app/templates/skyline/sections/content_item_section/default/index.html.erb +1 -1
  58. data/app/templates/skyline/sections/media_section/default/index.html.erb +9 -9
  59. data/app/views/skyline/articles/_list.html.erb +34 -0
  60. data/app/views/skyline/articles/edit.html.erb +13 -6
  61. data/app/views/skyline/articles/index.html.erb +12 -43
  62. data/app/views/skyline/articles/page/_index.html.erb +13 -11
  63. data/app/views/skyline/authentications/new.html.erb +2 -2
  64. data/app/views/skyline/browser/links/_index.html.erb +4 -2
  65. data/app/views/skyline/browser/tabs/media_library/_index.html.erb +12 -13
  66. data/app/views/skyline/browser/tabs/media_library/media_files/_index.html.erb +122 -51
  67. data/app/views/skyline/browser/tabs/media_library/media_files/_show.html.erb +7 -7
  68. data/app/views/skyline/content/list.rhtml +1 -3
  69. data/app/views/skyline/content/presenters/_table.html.erb +45 -0
  70. data/app/views/skyline/layouts/content.html.erb +1 -1
  71. data/app/views/skyline/layouts/media.html.erb +2 -1
  72. data/app/views/skyline/layouts/pages.html.erb +10 -0
  73. data/app/views/skyline/link_section_links/_form.html.erb +0 -1
  74. data/app/views/skyline/locales/show.js.erb +2 -2
  75. data/app/views/skyline/media/dirs/_edit.html.erb +42 -0
  76. data/app/views/skyline/media/dirs/_index.html.erb +14 -0
  77. data/app/views/skyline/media/dirs/_show.html.erb +34 -0
  78. data/app/views/skyline/media/dirs/index.html.erb +36 -0
  79. data/app/views/skyline/media/files/_edit.html.erb +101 -0
  80. data/app/views/skyline/media/files/_index.html.erb +68 -0
  81. data/app/views/skyline/media/files/_new.html.erb +45 -0
  82. data/app/views/skyline/publications/_index.html.erb +2 -2
  83. data/app/views/skyline/sections/_media_section.html.erb +12 -2
  84. data/app/views/skyline/sections/_wysiwyg_section.html.erb +2 -3
  85. data/app/views/skyline/settings/index.html +14 -0
  86. data/app/views/skyline/shared/_head.html.erb +2 -0
  87. data/app/views/skyline/shared/_header_area.html.erb +7 -5
  88. data/app/views/skyline/users/index.html.erb +31 -16
  89. data/config/initializers/dependencies.rb +6 -1
  90. data/config/initializers/observers.rb +1 -2
  91. data/config/initializers/rails_defaults.rb +1 -1
  92. data/config/locales/en-US.yml +110 -68
  93. data/config/locales/nl-NL.yml +117 -77
  94. data/config/routes.rb +36 -32
  95. data/db/fixtures/roles_and_rights.rb +65 -40
  96. data/db/migrate/20090302102548_add_media_nodes.rb +2 -2
  97. data/db/migrate/20090309133933_add_description_to_media_nodes.rb +2 -2
  98. data/db/migrate/20090309134731_add_tags.rb +2 -2
  99. data/db/migrate/20090309135746_create_media_files_tags.rb +2 -2
  100. data/db/migrate/20090319091342_create_media_caches.rb +2 -2
  101. data/db/migrate/20090327083240_create_users.rb +2 -2
  102. data/db/migrate/20090327084656_create_roles.rb +2 -2
  103. data/db/migrate/20090327084719_create_rights.rb +2 -2
  104. data/db/migrate/20090327084739_create_grants.rb +2 -2
  105. data/db/migrate/20090327090918_create_rights_roles.rb +2 -2
  106. data/db/migrate/20090408115155_create_ref_objects.rb +2 -2
  107. data/db/migrate/20090504140044_create_test_sections.rb +2 -2
  108. data/db/migrate/20090506083107_add_refering_column_name_to_ref_objects.rb +2 -2
  109. data/db/migrate/20090706124019_add_skyline_media_node_title.rb +1 -1
  110. data/db/migrate/20090904121447_create_skyline_referable_uris.rb +6 -6
  111. data/db/migrate/20091221145204_add_skyline_media_section_link.rb +11 -0
  112. data/db/migrate/20100109145958_add_associated_tags_index.rb +9 -0
  113. data/db/migrate/20100115111440_create_skyline_user_preferences.rb +14 -0
  114. data/db/migrate/20100120113953_remove_unused_articles_index.rb +9 -0
  115. data/db/migrate/20100409073447_change_referable_uri_to_text.rb +9 -0
  116. data/doc/Bundler.md +33 -28
  117. data/doc/MIGRATION.md +48 -0
  118. data/lib/skyline/{content_item.rb → belongs_to_referable.rb} +57 -88
  119. data/lib/skyline/configuration.rb +14 -15
  120. data/lib/skyline/content/content.rb +14 -2
  121. data/lib/skyline/deprecated/version3_0_8.rb +106 -0
  122. data/lib/skyline/{form_builder_with_errors.rb → form_builder.rb} +5 -5
  123. data/lib/skyline/{referable.rb → has_many_referables_in.rb} +22 -12
  124. data/lib/skyline/javascript_generator_methods.rb +1 -1
  125. data/lib/skyline/plugins_manager.rb +135 -14
  126. data/lib/skyline/rendering/helpers/renderer_helper.rb +14 -9
  127. data/lib/skyline/{renderer.rb → rendering/renderer.rb} +3 -4
  128. data/lib/skyline/{renderable_scope_interface.rb → rendering/scopes/interface.rb} +1 -1
  129. data/lib/skyline/{wildcard_renderable_scope.rb → rendering/scopes/wildcard.rb} +3 -3
  130. data/lib/skyline/{section_item.rb → sections/interface.rb} +17 -10
  131. data/lib/skyline/settings.rb +29 -19
  132. data/lib/skyline/taggable.rb +3 -3
  133. data/lib/skyline/version.rb +2 -2
  134. data/{tasks → lib/tasks}/database.rake +14 -2
  135. data/{tasks → lib/tasks}/implementation.rake +0 -0
  136. data/lib/tasks/testing.rake +41 -0
  137. data/public/skyline/images/backgrounds/panel-dt.gif +0 -0
  138. data/public/skyline/javascripts/src/application.js +114 -120
  139. data/public/skyline/javascripts/src/browser.js +22 -4
  140. data/public/skyline/javascripts/src/library_uploader.js +13 -3
  141. data/public/skyline/javascripts/src/sections.js +57 -6
  142. data/public/skyline/javascripts/src/skyline/src/dialog.js +6 -0
  143. data/public/skyline/javascripts/src/skyline/src/drag.js +6 -0
  144. data/public/skyline/javascripts/src/skyline/src/events.js +50 -0
  145. data/public/skyline/javascripts/src/skyline/src/field_replicator.js +12 -11
  146. data/public/skyline/javascripts/src/skyline/src/layout.js +172 -30
  147. data/public/skyline/javascripts/src/skyline/src/menu.js +3 -0
  148. data/public/skyline/javascripts/src/skyline/src/menubutton.js +3 -0
  149. data/public/skyline/javascripts/src/skyline/src/skyline.js +3 -0
  150. data/public/skyline/javascripts/src/skyline/src/table.js +398 -0
  151. data/public/skyline/javascripts/src/skyline/src/tabs.js +2 -2
  152. data/public/skyline/javascripts/src/skyline/src/tag_selector.js +34 -26
  153. data/public/skyline/javascripts/src/skyline/src/tree.js +3 -0
  154. data/public/skyline/javascripts/src/skyline/src/uploader.js +2 -2
  155. data/public/skyline/javascripts/src/skyline/src/utils.js +3 -0
  156. data/public/skyline/javascripts/src/skyline/test/_dynamic_right.html +24 -0
  157. data/public/skyline/javascripts/src/skyline/test/_right_content.html +1 -0
  158. data/public/skyline/javascripts/src/skyline/test/basic_layout.html +190 -0
  159. data/public/skyline/javascripts/src/skyline/test/dialog.html +101 -0
  160. data/public/skyline/javascripts/src/skyline/test/draggablefiles.html +196 -0
  161. data/public/skyline/javascripts/src/skyline/test/dynamic_layout.html +89 -0
  162. data/public/skyline/javascripts/src/skyline/test/field_replicator.html +60 -0
  163. data/public/skyline/javascripts/src/skyline/test/last-closed.gif +0 -0
  164. data/public/skyline/javascripts/src/skyline/test/last-open.gif +0 -0
  165. data/public/skyline/javascripts/src/skyline/test/menubutton.html +81 -0
  166. data/public/skyline/javascripts/src/skyline/test/middle.gif +0 -0
  167. data/public/skyline/javascripts/src/skyline/test/sortable.html +121 -0
  168. data/public/skyline/javascripts/src/skyline/test/table.html +521 -0
  169. data/public/skyline/javascripts/src/skyline/test/tagselector.html +72 -0
  170. data/public/skyline/javascripts/src/skyline/test/toggle.html +95 -0
  171. data/public/skyline/javascripts/src/skyline/test/tree.html +310 -0
  172. data/public/skyline/javascripts/src/skyline/test/tree.png +0 -0
  173. data/public/skyline/javascripts/src/skyline/test/undohtml.css +27 -0
  174. data/public/skyline/javascripts/src/skyline/vendor/fancyupload/Swiff.Uploader.js +2 -2
  175. data/public/skyline/javascripts/src/skyline/vendor/mootools/mootools-core.js +1 -354
  176. data/public/skyline/javascripts/src/skyline/vendor/mootools/mootools-more.js +64 -52
  177. data/public/skyline/javascripts/src/skyline.editor/assets/content.css +1 -1
  178. data/public/skyline/javascripts/src/skyline.editor/src/script_loader.js +156 -75
  179. data/public/skyline/javascripts/src/skyline.editor/src/skyline.editor.js +14 -4
  180. data/public/skyline/javascripts/src/skyline.editor/src/theme.js +8 -0
  181. data/public/skyline/javascripts/src/skyline.editor/test/dialog.html +28 -0
  182. data/public/skyline/javascripts/src/skyline.editor/test/lorem.html +7 -0
  183. data/public/skyline/javascripts/src/skyline.editor/test/multiple_editors.html +87 -0
  184. data/public/skyline/javascripts/src/skyline.editor/test/undohtml.css +27 -0
  185. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/changelog.txt +205 -0
  186. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/css/content.css +54 -0
  187. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/custom_formats.html +111 -0
  188. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/full.html +19 -3
  189. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/menu.html +1 -0
  190. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/simple.html +6 -2
  191. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/skins.html +14 -10
  192. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/translate.html +7 -3
  193. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/word.html +8 -4
  194. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/langs/en.js +18 -2
  195. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js +6 -3
  196. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advhr/rule.htm +2 -7
  197. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js +6 -3
  198. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/image.htm +2 -7
  199. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advimage/js/image.js +1 -1
  200. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js +6 -3
  201. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/js/advlink.js +1 -1
  202. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlink/link.htm +2 -7
  203. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin.js +1 -0
  204. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js +154 -0
  205. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin.js +1 -1
  206. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js +52 -44
  207. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin.js +1 -1
  208. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js +388 -17
  209. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/autosave/langs/en.js +4 -0
  210. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js +6 -3
  211. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js +1 -1
  212. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js +58 -6
  213. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js +6 -3
  214. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin.js +1 -1
  215. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js +8 -5
  216. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/example/dialog.htm +2 -7
  217. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/example/editor_plugin_src.js +6 -3
  218. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin.js +1 -1
  219. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js +10 -3
  220. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/fullpage.htm +2 -7
  221. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullpage/js/fullpage.js +18 -8
  222. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js +1 -1
  223. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js +12 -6
  224. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/fullscreen/fullscreen.htm +0 -1
  225. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js +6 -3
  226. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js +6 -3
  227. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js +6 -3
  228. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js +6 -3
  229. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin.js +1 -0
  230. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/legacyoutput/editor_plugin_src.js +136 -0
  231. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js +1 -1
  232. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js +18 -9
  233. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/media/media.htm +2 -7
  234. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin.js +1 -1
  235. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js +7 -4
  236. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js +6 -3
  237. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js +6 -3
  238. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin.js +1 -1
  239. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js +564 -124
  240. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/pastetext.htm +2 -8
  241. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/paste/pasteword.htm +2 -8
  242. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js +6 -3
  243. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js +6 -3
  244. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js +6 -3
  245. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js +1 -1
  246. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js +7 -4
  247. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js +4 -0
  248. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm +4 -9
  249. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin.js +1 -1
  250. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js +106 -27
  251. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js +6 -3
  252. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/style/props.htm +4 -11
  253. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin.js +1 -1
  254. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js +7 -4
  255. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/cell.htm +2 -7
  256. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin.js +1 -1
  257. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js +921 -918
  258. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/cell.js +41 -24
  259. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/merge_cells.js +18 -20
  260. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/row.js +48 -23
  261. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/js/table.js +24 -15
  262. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/merge_cells.htm +3 -8
  263. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/row.htm +2 -7
  264. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/table/table.htm +2 -7
  265. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin.js +1 -1
  266. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js +10 -7
  267. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/template/template.htm +2 -9
  268. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin.js +1 -1
  269. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js +26 -16
  270. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin.js +1 -0
  271. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js +98 -0
  272. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/abbr.htm +3 -10
  273. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/acronym.htm +3 -10
  274. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/attributes.htm +2 -7
  275. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/cite.htm +3 -10
  276. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/del.htm +3 -11
  277. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +1 -1
  278. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js +11 -15
  279. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/ins.htm +3 -11
  280. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/abbr.js +8 -5
  281. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/acronym.js +7 -4
  282. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/attributes.js +7 -4
  283. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/cite.js +7 -4
  284. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/del.js +7 -4
  285. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/element_common.js +8 -8
  286. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/js/ins.js +7 -4
  287. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/about.htm +1 -3
  288. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/anchor.htm +2 -7
  289. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/charmap.htm +0 -1
  290. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/color_picker.htm +2 -4
  291. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template.js +1 -1
  292. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js +252 -188
  293. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/image.htm +2 -7
  294. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/img/icons.gif +0 -0
  295. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/anchor.js +7 -7
  296. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/charmap.js +10 -0
  297. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/image.js +2 -2
  298. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/js/link.js +4 -4
  299. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/link.htm +2 -7
  300. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/content.css +7 -3
  301. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css +4 -3
  302. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/default/ui.css +5 -6
  303. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css +7 -3
  304. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +3 -2
  305. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +4 -4
  306. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/advanced/source_editor.htm +2 -8
  307. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js +5 -5
  308. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce.js +1 -1
  309. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_popup.js +1 -1
  310. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_src.js +5492 -4341
  311. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/utils/editable_selects.js +5 -4
  312. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/utils/form_utils.js +6 -5
  313. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/utils/mctabs.js +5 -4
  314. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/utils/validate.js +5 -4
  315. data/public/skyline/javascripts/src/skyline.js +3 -1
  316. data/public/skyline/javascripts/src/user_preferences.js +49 -0
  317. data/public/skyline/stylesheets/general.css +149 -47
  318. data/rails/init.rb +3 -3
  319. data/test/factories.rb +28 -0
  320. data/test/integration/media_browser_super_access_test.rb +52 -0
  321. data/test/integration/media_browser_user_access_test.rb +50 -0
  322. data/test/integration/user_preferences_test.rb +73 -0
  323. data/test/mocks/test_content_object.rb +32 -0
  324. data/test/mocks/test_section.rb +22 -0
  325. data/test/test_helper.rb +60 -0
  326. data/test/unit/inline_ref_test.rb +195 -0
  327. data/test/unit/locales_test.rb +82 -0
  328. data/test/unit/page_test.rb +204 -0
  329. data/test/unit/test_content_object_test.rb +69 -0
  330. data/test/unit/test_section_test.rb +247 -0
  331. data/test/unit/user_preference_test.rb +123 -0
  332. data/test/unit/user_test.rb +74 -0
  333. data/test/user_access_helper.rb +36 -0
  334. data/vendor/digitpaint/personify/test/fixtures/multiple_tags.txt +8 -0
  335. data/vendor/digitpaint/personify/test/parse_runner.rb +25 -0
  336. data/vendor/digitpaint/personify/test/parser_test.rb +109 -0
  337. data/vendor/digitpaint/personify/test/test_helper.rb +16 -0
  338. data/vendor/digitpaint/personify/vendor/treetop/.gitignore +5 -0
  339. data/vendor/mootools-on-rails/lib/mootools_on_rails/mootools_helper.rb +13 -4
  340. data/vendor/mootools-on-rails/test/mootools_helper_test.rb +138 -0
  341. data/vendor/mootools-on-rails/test/test_helper.rb +5 -0
  342. data/vendor/weppos/url_validation.rb +76 -0
  343. metadata +384 -189
  344. data/app/controllers/skyline/media_dirs_controller.rb +0 -56
  345. data/app/controllers/skyline/media_files_controller.rb +0 -87
  346. data/app/helpers/skyline/presenters/article_list.rb +0 -139
  347. data/app/observers/skyline/media_file_observer.rb +0 -32
  348. data/app/views/skyline/media_dirs/_edit.html.erb +0 -25
  349. data/app/views/skyline/media_dirs/_index.html.erb +0 -14
  350. data/app/views/skyline/media_dirs/index.html.erb +0 -42
  351. data/app/views/skyline/media_files/_edit.html.erb +0 -75
  352. data/app/views/skyline/media_files/_header.html.erb +0 -3
  353. data/app/views/skyline/media_files/_index.html.erb +0 -51
  354. data/app/views/skyline/media_files/_new.html.erb +0 -50
  355. data/db/migrate/20090603104115_prefix_tables_for_skyline.rb +0 -30
  356. data/lib/skyline/indexer.rb +0 -36
  357. data/lib/skyline/renderable_scope.rb +0 -27
  358. data/lib/skyline/rendering/helpers/settings_helper.rb +0 -26
  359. data/lib/skyline/searchable_item.rb +0 -132
  360. data/lib/skyline/url_validation.rb +0 -66
  361. data/public/skyline/images/backgrounds/splitter.gif +0 -0
  362. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/build.bat +0 -2
  363. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/build.xml +0 -364
  364. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/examples/full_jquery.html +0 -94
  365. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/AddOnManager.js +0 -95
  366. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/CommandManager.js +0 -54
  367. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ControlManager.js +0 -489
  368. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/Developer.js +0 -91
  369. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/Editor.js +0 -2295
  370. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/EditorCommands.js +0 -934
  371. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/EditorManager.js +0 -453
  372. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ForceBlocks.js +0 -644
  373. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/Popup.js +0 -412
  374. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/UndoManager.js +0 -183
  375. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/WindowManager.js +0 -169
  376. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/adapter/jquery/adapter.js +0 -240
  377. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/adapter/jquery/jquery.tinymce.js +0 -179
  378. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/adapter/prototype/adapter.js +0 -38
  379. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/BlockQuote.js +0 -135
  380. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/CutCopyPaste.js +0 -24
  381. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/InsertHorizontalRule.js +0 -15
  382. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/RemoveFormat.js +0 -173
  383. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/commands/UndoRedo.js +0 -38
  384. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/DOMUtils.js +0 -1823
  385. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Element.js +0 -199
  386. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/EventUtils.js +0 -349
  387. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Range.js +0 -721
  388. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/ScriptLoader.js +0 -351
  389. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Selection.js +0 -747
  390. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Serializer.js +0 -979
  391. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/Sizzle.js +0 -975
  392. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/StringWriter.js +0 -200
  393. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/TridentSelection.js +0 -273
  394. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/dom/XMLWriter.js +0 -155
  395. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/firebug/firebug-lite.js +0 -2518
  396. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/tinymce.js +0 -549
  397. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Button.js +0 -68
  398. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/ColorSplitButton.js +0 -212
  399. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Container.js +0 -56
  400. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Control.js +0 -182
  401. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/DropMenu.js +0 -397
  402. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/ListBox.js +0 -320
  403. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Menu.js +0 -175
  404. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/MenuButton.js +0 -128
  405. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/MenuItem.js +0 -69
  406. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/NativeListBox.js +0 -198
  407. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Separator.js +0 -34
  408. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/SplitButton.js +0 -99
  409. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/ui/Toolbar.js +0 -86
  410. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/Cookie.js +0 -126
  411. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/Dispatcher.js +0 -101
  412. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/JSON.js +0 -81
  413. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/JSONP.js +0 -25
  414. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/JSONRequest.js +0 -87
  415. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/URI.js +0 -289
  416. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/util/XHR.js +0 -80
  417. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/classes/xml/Parser.js +0 -126
  418. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/jquery.tinymce.js +0 -1
  419. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin.js +0 -1
  420. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/compat2x/editor_plugin_src.js +0 -616
  421. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/safari/blank.htm +0 -1
  422. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin.js +0 -1
  423. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/plugins/safari/editor_plugin_src.js +0 -438
  424. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_dev.js +0 -128
  425. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_jquery.js +0 -1
  426. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_jquery_src.js +0 -12198
  427. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_prototype.js +0 -1
  428. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/jscripts/tiny_mce/tiny_mce_prototype_src.js +0 -13057
  429. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/api.html +0 -18
  430. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/api_jquery.html +0 -18
  431. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/api_prototype.html +0 -19
  432. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/basic.html +0 -548
  433. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/crossdomain.html +0 -87
  434. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/css/unit.css +0 -120
  435. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/index.html +0 -10
  436. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/jquery_plugin.html +0 -112
  437. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/js/api.js +0 -1438
  438. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/js/testrunner.js +0 -791
  439. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/main.html +0 -8
  440. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/media.html +0 -221
  441. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/menu.html +0 -22
  442. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/parts.html +0 -90
  443. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/paste.html +0 -132
  444. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/performance.html +0 -152
  445. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/range.html +0 -522
  446. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/removeformat.html +0 -88
  447. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/selection.html +0 -235
  448. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/config.ini +0 -27
  449. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/footer.html +0 -3
  450. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/header.html +0 -6
  451. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/index.php +0 -1
  452. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/instructions.txt +0 -4
  453. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/logo.png +0 -0
  454. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/selectors.list +0 -40
  455. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/style.css +0 -181
  456. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/system/index.php +0 -112
  457. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/system/slickspeed.js +0 -147
  458. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/system/template.php +0 -47
  459. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/slickspeed/template.html +0 -2865
  460. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tests/test.xml +0 -6
  461. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/ant-contrib.jar +0 -0
  462. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/js_build_tools.jar +0 -0
  463. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/svnClientAdapter.jar +0 -0
  464. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/svnant.jar +0 -0
  465. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/svnjavahl.jar +0 -0
  466. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/svnkit.jar +0 -0
  467. data/public/skyline/javascripts/src/skyline.editor/vendor/tinymce/tools/ant/yuicompressor.jar +0 -0
@@ -0,0 +1,73 @@
1
+ require 'test_helper'
2
+ require 'user_access_helper'
3
+
4
+ class UserPreferencesTest < ActionController::IntegrationTest
5
+ include UserAccessHelper
6
+ context "User preferences" do
7
+ setup do
8
+ @user = Factory(:user)
9
+ @user.force_password!("qwedsa")
10
+
11
+ @user.user_preferences << Factory(:user_preference, :key => "a.", :encoded_value => 1.to_yaml)
12
+
13
+ @u = login(@user,"qwedsa")
14
+ end
15
+
16
+ should "be stored in a cookie with value and sent on request" do
17
+ @u.cookies["skyline_up"] = CGI::escape(ActiveSupport::JSON.encode({"my_field" => "a.email@address.com"}))
18
+ @u.get "/skyline"
19
+ @u.assert_equal('a.email@address.com', @user.user_preferences.get('my_field'))
20
+ end
21
+
22
+ should "be stored in a cookie with serialized hash and sent on request" do
23
+ up_my_hash = {'a' => 1, 'b' => 2}
24
+ @u.cookies["skyline_up"] = CGI::escape(ActiveSupport::JSON.encode({"my_hash" => up_my_hash}))
25
+ @u.get "/skyline"
26
+ @u.assert_equal(up_my_hash, @user.user_preferences.get('my_hash'))
27
+ end
28
+
29
+ should "be able to collect multiple values and send after request" do
30
+ @u.cookies["skyline_up"] = CGI::escape(ActiveSupport::JSON.encode({"my_field" => "a.email@address.com", "my_hash" => {'a' => 1, 'b' => 2}}))
31
+ @u.get "/skyline"
32
+ @u.assert_equal({'a' => 1, 'b' => 2}, @user.user_preferences.get('my_hash'))
33
+ @u.assert_equal('a.email@address.com', @user.user_preferences.get('my_field'))
34
+ end
35
+
36
+ should "have empty value in cookie after request" do
37
+ @u.cookies["skyline_up"] = CGI::escape(ActiveSupport::JSON.encode({"my_field" => "a.email@address.com"}))
38
+ @u.cookies["my_own_field"] = "Do not delete me"
39
+
40
+ @u.get "/skyline"
41
+
42
+ @u.assert("", cookies["skyline_up"])
43
+ @u.assert("Do not delete me", cookies["my_own_field"])
44
+ end
45
+
46
+ should "be able to be set through controller" do
47
+ @u.post "skyline/user_preferences",
48
+ 'skyline_up' => ActiveSupport::JSON.encode({"my_hash" => {"a" => 1, "b" => 2}})
49
+
50
+ @u.assert_equal({'a' => 1, 'b' => 2}, @user.user_preferences.get('my_hash'))
51
+ end
52
+
53
+ should "be able to delete through controller" do
54
+ @u.assert @user.user_preferences.has_key?("a")
55
+ @u.post "skyline/user_preferences",
56
+ 'skyline_up' => ActiveSupport::JSON.encode({"a" => "_delete"})
57
+
58
+ @u.assert !@user.user_preferences.has_key?("a")
59
+ end
60
+
61
+ should "store delete value in cookie and handle correctly" do
62
+ @u.assert @user.user_preferences.has_key?("a")
63
+ @u.cookies["skyline_up"] = CGI::escape(ActiveSupport::JSON.encode({"_delete" => ["a","b"]}))
64
+
65
+ @u.get "/skyline"
66
+
67
+ @u.assert !@user.user_preferences.has_key?("a")
68
+ @u.assert !@user.user_preferences.has_key?("b")
69
+ end
70
+
71
+
72
+ end
73
+ end
@@ -0,0 +1,32 @@
1
+ class Skyline::TestContentObject < ActiveRecord::Base
2
+ include Skyline::BelongsToReferable
3
+
4
+ belongs_to_referable :image
5
+
6
+ # before_save :create_object_ref
7
+ # after_save :update_object_ref
8
+ #
9
+ # belongs_to :image, :class_name => "Skyline::ObjectRef", :foreign_key => :image_id, :dependent => :destroy
10
+ #
11
+ # def image=(image)
12
+ # @image = image
13
+ # end
14
+ #
15
+ # private
16
+ # def create_object_ref
17
+ # unless @image.nil?
18
+ # @object_ref = Skyline::ObjectRef.find_or_create_by_id(self.image_id)
19
+ # @object_ref.update_attributes(
20
+ # :referable_id =>@image.id,
21
+ # :referable_type =>@image.class.name,
22
+ # :refering_type =>self.class.name,
23
+ # :refering_column_name =>"image_id")
24
+ # self.image_id = @object_ref.id if self.image_id.nil?
25
+ # self.image = @object_ref
26
+ # end
27
+ # end
28
+ #
29
+ # def update_object_ref
30
+ # Skyline::ObjectRef.update_all({:refering_id => self.id}, "id = #{@object_ref.id}") unless @object_ref.blank?
31
+ # end
32
+ end
@@ -0,0 +1,22 @@
1
+ class Skyline::TestSection < ActiveRecord::Base
2
+ include Skyline::Sections::Interface
3
+ include Skyline::HasManyReferablesIn
4
+
5
+ has_many_referables_in :body_a
6
+ has_many_referables_in :body_b
7
+
8
+ attr_accessor :fail_validation
9
+
10
+ validate :validate_fail_validation
11
+
12
+ self.table_name = "skyline_test_sections"
13
+
14
+ protected
15
+
16
+ def validate_fail_validation
17
+ self.errors.add_to_base("FAILED!!") if self.fail_validation == true
18
+ end
19
+
20
+
21
+ end
22
+
@@ -0,0 +1,60 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ ENV['RAILS_ROOT'] ||= File.dirname(__FILE__) + '/../../../..'
3
+ require File.expand_path(File.join(ENV['RAILS_ROOT'], 'config/environment.rb'))
4
+ require 'test_help'
5
+ # include ActionController::TestProcess
6
+ require 'factories'
7
+
8
+ SILENT_SEED = true
9
+
10
+ class ActiveSupport::TestCase
11
+ # Transactional fixtures accelerate your tests by wrapping each test method
12
+ # in a transaction that's rolled back on completion. This ensures that the
13
+ # test database remains unchanged so your fixtures don't have to be reloaded
14
+ # between every test method. Fewer database queries means faster tests.
15
+ #
16
+ # Read Mike Clark's excellent walkthrough at
17
+ # http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
18
+ #
19
+ # Every Active Record database supports transactions except MyISAM tables
20
+ # in MySQL. Turn off transactional fixtures in this case; however, if you
21
+ # don't care one way or the other, switching from MyISAM to InnoDB tables
22
+ # is recommended.
23
+ #
24
+ # The only drawback to using transactional fixtures is when you actually
25
+ # need to test transactions. Since your test is bracketed by a transaction,
26
+ # any transactions started in your code will be automatically rolled back.
27
+ self.use_transactional_fixtures = true
28
+
29
+ # Instantiated fixtures are slow, but give you @david where otherwise you
30
+ # would need people(:david). If you don't want to migrate your existing
31
+ # test cases which use the @david style and don't mind the speed hit (each
32
+ # instantiated fixtures translates to a database query per test method),
33
+ # then set this back to true.
34
+ self.use_instantiated_fixtures = false
35
+
36
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
37
+ #
38
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
39
+ # -- they do not yet inherit this setting
40
+ # fixtures :all
41
+
42
+ # Add more helper methods to be used by all tests here...
43
+
44
+ #convert [REF:id] tags back to html without specific object
45
+ def ref_id_convert(value,with_refs=false)
46
+ refs = Hash[*Skyline::InlineRef.all.map{ |m| [m.id, m]}.flatten]
47
+
48
+ return value unless value.kind_of?(String)
49
+ v = value.gsub(/\[REF:(\d+)\]/) do |match|
50
+ i = match[5..-2]
51
+ refs[i.to_i].to_start_html(with_refs)
52
+ end
53
+
54
+ outp = v.gsub(/\[\/REF:(\d+)\]/) do |match|
55
+ i = match[6..-2]
56
+ refs[i.to_i].to_end_html
57
+ end
58
+
59
+ end
60
+ end
@@ -0,0 +1,195 @@
1
+ require 'test_helper'
2
+ require 'mocks/test_section.rb'
3
+
4
+ class BogusSection
5
+ def id; @id ||= 10000; end
6
+
7
+ attr_accessor :body
8
+ end
9
+
10
+ class TestSectionTest < ActiveSupport::TestCase
11
+
12
+ context "InlineRef class" do
13
+ setup do
14
+ @section = BogusSection.new
15
+ end
16
+
17
+ context "parsing html" do
18
+
19
+ should "create new refs" do
20
+ html = "abcdefghi <img src='' skyline-referable-id='1' skyline-referable-type='Skyline::Page' /> <img src='' skyline-referable-id='1' skyline-referable-type='Skyline::Page' />"
21
+ parsed_html, ids = Skyline::InlineRef.parse_html(html,@section,:body)
22
+ assert_equal 2, ids.size
23
+ assert_equal 2,Skyline::InlineRef.count(:conditions => {:refering_id => @section.id, :refering_type => @section.class.name})
24
+
25
+ assert_equal ids,Skyline::InlineRef.all(ids).map(&:id)
26
+ ids.each do |id|
27
+ assert parsed_html =~ /\[REF:#{id}\]/
28
+ end
29
+ end
30
+
31
+ should "delete unused refs" do
32
+ html = "abcdefghi <img src='' skyline-referable-id='1' skyline-referable-type='Skyline::Page' /> <img src='' skyline-referable-id='1' skyline-referable-type='Skyline::Page' />"
33
+ parsed_html, ids = Skyline::InlineRef.parse_html(html,@section,:body)
34
+ assert_equal 2, ids.size
35
+ assert_equal 2,Skyline::InlineRef.count(:conditions => {:refering_id => @section.id, :refering_type => @section.class.name})
36
+ assert_equal ids,Skyline::InlineRef.all(ids).map(&:id)
37
+
38
+ new_html = "abcdefghi <img src='' skyline-referable-id='1' skyline-referable-type='Skyline::Page' />"
39
+ new_parsed_html, new_ids = Skyline::InlineRef.parse_html(new_html,@section,:body)
40
+ assert_equal 1, new_ids.size
41
+ assert_equal 1,Skyline::InlineRef.count(:conditions => {:refering_id => @section.id, :refering_type => @section.class.name})
42
+ assert_equal new_ids,Skyline::InlineRef.all(new_ids).map(&:id)
43
+ assert_equal new_ids,Skyline::InlineRef.all(ids).map(&:id)
44
+ end
45
+
46
+ should "update existing refs" do
47
+ html = "abcdefghi <img src='' skyline-referable-id='1' skyline-referable-type='Skyline::Page' /> bla bla"
48
+ section = Skyline::TestSection.new(:body_a => html)
49
+ assert section.save
50
+ refs_1 = Skyline::InlineRef.all(:conditions => {:refering_id => section.id, :refering_type => section.class.name}).map(&:id)
51
+ section.body_a = section.body_a(true).gsub("skyline-referable-id='1'","skyline-referable-id='2'")
52
+ assert section.save
53
+ refs_2 = Skyline::InlineRef.all(:conditions => {:refering_id => section.id, :refering_type => section.class.name}).map(&:id)
54
+
55
+ assert_equal refs_1,refs_2
56
+ end
57
+
58
+ should "only update it's own refs and replace 'foreign' refs" do
59
+ html = "abcdefghi <img src='' skyline-referable-id='1' skyline-referable-type='Skyline::Page' /> bla bla"
60
+ section_1 = Skyline::TestSection.new(:body_a => html)
61
+ assert section_1.save
62
+ assert_equal 1,Skyline::InlineRef.count(:conditions => {:refering_id => section_1.id, :refering_type => section_1.class.name})
63
+
64
+ section_2 = Skyline::TestSection.new(:body_a => section_1.body_a(true))
65
+ assert section_2.save
66
+ assert_equal 1,Skyline::InlineRef.count(:conditions => {:refering_id => section_2.id, :refering_type => section_2.class.name})
67
+ assert_equal 1,Skyline::InlineRef.count(:conditions => {:refering_id => section_1.id, :refering_type => section_1.class.name})
68
+
69
+ assert_not_equal section_1.body_a(true), section_2.body_a(true)
70
+ end
71
+
72
+ should "make sure that copying a ref from one field to another doesn't break" do
73
+ html = "abcdefghi <img src='' skyline-referable-id='1' skyline-referable-type='Skyline::Page' /> bla bla"
74
+ s1 = Skyline::TestSection.new(:body_a => html)
75
+ assert s1.save
76
+ assert_equal 1,Skyline::InlineRef.count(:conditions => {:refering_id => s1.id, :refering_type => s1.class.name, :refering_column_name => "body_a"})
77
+
78
+ s1.body_b = s1.body_a(true)
79
+ assert s1.save
80
+ assert_equal 1,Skyline::InlineRef.count(:conditions => {:refering_id => s1.id, :refering_type => s1.class.name, :refering_column_name => "body_a"})
81
+ assert_equal 1,Skyline::InlineRef.count(:conditions => {:refering_id => s1.id, :refering_type => s1.class.name, :refering_column_name => "body_b"})
82
+ end
83
+
84
+ end
85
+
86
+ context "converting REFS to html" do
87
+
88
+ setup do
89
+ @html = "a <img src='' skyline-referable-id='1' skyline-referable-type='Skyline::Page' /> <a href='' skyline-referable-id='2' skyline-referable-type='Skyline::Page'>test</a>"
90
+ @parsed_html, @ref_ids = Skyline::InlineRef.parse_html(@html,@section,:body)
91
+ assert_equal 2,Skyline::InlineRef.count(:conditions => {:refering_id => @section.id, :refering_type => @section.class.name})
92
+ end
93
+
94
+ should "return all refs on #hash_refs_for_object" do
95
+ refs = Skyline::InlineRef.hash_refs_for_object(@section,:body)
96
+ assert_equal 2,refs.keys.size
97
+ end
98
+
99
+ end
100
+
101
+ context "with external links" do
102
+
103
+ setup do
104
+ @html = "<a href=\"http://www.google.com\" skyline-referable-type=\"Skyline::ReferableUri\">Link1</a>link1</a> <a href=\"http://www.digitpaint.nl\" skyline-referable-type=\"Skyline::ReferableUri\">link2</a>"
105
+
106
+ end
107
+
108
+ should "create a ReferableUri object for each external link" do
109
+ s1 = Skyline::TestSection.new(:body_a => @html)
110
+ assert s1.save
111
+
112
+ refs = Skyline::InlineRef.all(:conditions => {:refering_id => s1.id, :refering_type => s1.class.name, :refering_column_name => "body_a"})
113
+ assert_equal 2, refs.size
114
+ referable_uris = refs.map(&:referable)
115
+ uris = referable_uris.map(&:uri)
116
+
117
+ assert_equal 2,referable_uris.select{|r| r.kind_of?(Skyline::ReferableUri) }.size
118
+ assert_equal ["http://www.google.com", "http://www.digitpaint.nl"], uris
119
+ end
120
+
121
+ should "not break when recovering from a validation" do
122
+ s1 = Skyline::TestSection.new(:body_a => @html)
123
+ s1.fail_validation = true
124
+
125
+ assert !s1.save
126
+ assert_equal 0,Skyline::InlineRef.count(:conditions => {:refering_id => s1.id, :refering_type => s1.class.name, :refering_column_name => "body_a"})
127
+
128
+ s2 = Skyline::TestSection.new(:body_a => s1.body_a(true), :id => '')
129
+ s2.fail_validation = false
130
+
131
+ assert s2.save
132
+ refs = Skyline::InlineRef.all(:conditions => {:refering_id => s2.id, :refering_type => s2.class.name, :refering_column_name => "body_a"})
133
+ assert_equal 2,refs.size
134
+
135
+ referable_uris = refs.map(&:referable)
136
+ uris = referable_uris.map(&:uri)
137
+
138
+ assert_equal 2,referable_uris.select{|r| r.kind_of?(Skyline::ReferableUri) }.size
139
+ assert_equal ["http://www.google.com", "http://www.digitpaint.nl"], uris
140
+
141
+ end
142
+
143
+ end
144
+
145
+
146
+ context "on an object with callbacks" do
147
+
148
+ should "not fail when after_create does another save" do
149
+ class TS1 < Skyline::TestSection
150
+ attr_accessor :skip_extra_save
151
+ after_create :after_creating
152
+ def after_creating
153
+ return if self.skip_extra_save
154
+ self.skip_extra_save = true
155
+ self.save
156
+ end
157
+ end
158
+ s1 = TS1.new(:body_a => "<a href=\"http://www.google.com\" skyline-referable-type=\"Skyline::ReferableUri\">Link1</a>link1</a>")
159
+
160
+ assert s1.save
161
+ assert_equal 1,Skyline::InlineRef.count(:conditions => {:refering_id => s1.id, :refering_type => s1.class.name, :refering_column_name => "body_a"})
162
+ assert_nothing_raised{ s1.body_a(true) }
163
+
164
+ s1.reload
165
+ assert s1.save
166
+ assert_equal 1,Skyline::InlineRef.count(:conditions => {:refering_id => s1.id, :refering_type => s1.class.name, :refering_column_name => "body_a"})
167
+ assert_nothing_raised{ s1.body_a(true) }
168
+ end
169
+
170
+ should "not fail when after_save does another save" do
171
+ class TS2 < Skyline::TestSection
172
+ attr_accessor :skip_extra_save
173
+ after_save :after_saving
174
+ def after_saving
175
+ return if self.skip_extra_save
176
+ self.skip_extra_save = true
177
+ self.save
178
+ end
179
+ end
180
+ s1 = TS2.new(:body_a => "<a href=\"http://www.google.com\" skyline-referable-type=\"Skyline::ReferableUri\">Link1</a>link1</a>")
181
+
182
+ assert s1.save
183
+
184
+ s1.reload
185
+ assert s1.save
186
+ assert_equal 1,Skyline::InlineRef.count(:conditions => {:refering_id => s1.id, :refering_type => s1.class.name, :refering_column_name => "body_a"})
187
+ assert_nothing_raised{ s1.body_a(true) }
188
+ end
189
+
190
+
191
+ end
192
+
193
+ end
194
+
195
+ end
@@ -0,0 +1,82 @@
1
+ require 'test_helper'
2
+
3
+ class Skyline::LocalesTest < ActiveSupport::TestCase
4
+ context "The locale files" do
5
+ setup do
6
+ @original_load_path = I18n.load_path.dup
7
+ @origignal_locale = I18n.locale
8
+ I18n.load_path = I18n.load_path.select{|p| (p =~ /vendor\/plugins\/skyline/)}
9
+ I18n.backend = I18n::Backend::Simple.new
10
+
11
+ @standard_locale = :"nl-NL"
12
+ @other_locales = I18n.available_locales.select{|l| l.to_s =~ /^[a-z]{2}-[A-Z]{2}$/}
13
+ @other_locales -= [@standard_locale]
14
+ end
15
+
16
+ should "should all have all entries" do
17
+ I18n.locale = @standard_locale
18
+ standard = I18n.translate("")
19
+
20
+ @other_locales.each do |l|
21
+ I18n.locale = l
22
+ other = I18n.translate("")
23
+
24
+ missing_keys = differences(standard, other)
25
+ if missing_keys.any?
26
+ puts "\n" + "-" * 80
27
+ puts "\nMissing translations in language file: #{l.to_s}"
28
+ print_differences(missing_keys)
29
+ puts "\n\n1: one entry is missing"
30
+ puts "*: complete subtree is missing"
31
+ puts "\n" + "-" * 80
32
+ end
33
+ assert_equal missing_keys.size, 0
34
+
35
+ missing_keys = differences(other, standard)
36
+ if missing_keys.any?
37
+ puts "\n" + "-" * 80
38
+ puts "\nObsolete translations in language file: #{l.to_s}"
39
+ print_differences(missing_keys)
40
+ puts "\n\n1: one entry is obsolete"
41
+ puts "*: complete subtree is obsolete"
42
+ puts "\n" + "-" * 80
43
+ end
44
+ assert_equal missing_keys.size, 0
45
+ end
46
+ end
47
+
48
+ teardown do
49
+ I18n.load_path = @original_load_path
50
+ I18n.backend = I18n::Backend::Simple.new
51
+ I18n.locale = @origignal_locale
52
+ end
53
+ end
54
+
55
+ def differences(standard, other)
56
+ missing = {}
57
+ standard.keys.each do |k|
58
+ if standard[k].kind_of?(Hash)
59
+ if other[k]
60
+ d = differences(standard[k], other[k])
61
+ missing[k] = d if d.any?
62
+ else
63
+ missing[k] = "*"
64
+ end
65
+ else
66
+ missing[k] = "1" unless other.keys.include?(k)
67
+ end
68
+ end
69
+ missing
70
+ end
71
+
72
+ def print_differences(missing_keys, indent = 2)
73
+ missing_keys.each do |k, v|
74
+ if v.kind_of?(String)
75
+ puts v + " " * indent + k.inspect
76
+ else
77
+ puts " " + " " * indent + k.inspect
78
+ print_differences(v, indent + 2)
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,204 @@
1
+ require 'test_helper'
2
+
3
+ class Skyline::PageTest < ActiveSupport::TestCase
4
+ context "A new page" do
5
+ setup do
6
+ @page = Factory(:page)
7
+ assert !@page.new_record?
8
+ end
9
+
10
+ should "have one variant" do
11
+ assert_equal 1, @page.variants.size
12
+ end
13
+ end
14
+
15
+ context "A page" do
16
+ setup do
17
+ @page = Factory(:page)
18
+ assert !@page.new_record?
19
+
20
+ @variant = @page.variants.first
21
+ @section_a = @variant.sections.create
22
+ @section_b = @variant.sections.create
23
+ @section_c = @variant.sections.create
24
+
25
+ @section_a.sectionable = Factory(:wysiwyg_section, :body => "Hallo, dit is de body")
26
+ @section_b.sectionable = Factory(:wysiwyg_section, :body => "Tweede sectie!")
27
+ @section_c.sectionable = Factory(:rss_section, :url => "http://www.google.nl/x.rss", :show_count => 1)
28
+
29
+ @section_a.save
30
+ @section_b.save
31
+ @section_c.save
32
+
33
+ @variant.reload
34
+ end
35
+
36
+ should "have 3 sections when 3 sections are created" do
37
+ assert_equal 3, @page.variants.first.sections.size
38
+ end
39
+
40
+ should "not be publishable when its not saved" do
41
+ @variant.data.url_part = "test"
42
+ assert_raise(StandardError) {@variant.publish}
43
+ end
44
+
45
+ should "be publishable" do
46
+ @variant.data.url_part = "test"
47
+ @variant.save
48
+ assert published_publication = @variant.publish
49
+
50
+ assert_not_equal published_publication, @variant
51
+
52
+ # published publication should have its own sections
53
+ assert_equal [], published_publication.sections.collect{|s| s.id} & @variant.sections.collect{|s| s.id}
54
+
55
+ # published publication should have its own sectionables
56
+ assert_equal [], published_publication.sections.collect{|s| s.sectionable.id} & @variant.sections.collect{|s| s.sectionable.id}
57
+ end
58
+
59
+ should "should reference the published publication via .published_publication" do
60
+ @variant.data.url_part = "test"
61
+ @variant.save
62
+ publised_publication = @variant.publish
63
+
64
+ assert_equal publised_publication, @variant.page.published_publication
65
+ assert_equal publised_publication.variant, @variant
66
+ end
67
+
68
+ should "should always keep the variant of a published publication" do
69
+ @variant.data.url_part = "test"
70
+ @variant.save
71
+ publised_publication = @variant.publish
72
+
73
+ assert_raise(StandardError) {@variant.destroy}
74
+ end
75
+
76
+ should "be destroyed when the last variant is destroyed" do
77
+ assert !@variant.page.frozen?
78
+ @variant.destroy
79
+ assert @variant.page.frozen?
80
+ end
81
+
82
+ should "have the published variant know its the published variant" do
83
+ @variant.data.url_part = "test"
84
+ @variant.save
85
+ @variant.publish
86
+ assert @variant.published_variant?
87
+ end
88
+
89
+ should "have the published variant know whether is has been modified" do
90
+ @variant.attributes = {:data_attributes => {:class => @variant.article.data_class.name, :url_part => "test"}}
91
+ @variant.save
92
+ @variant.reload
93
+
94
+ @variant.publish
95
+ assert_equal true, @variant.identical_published_variant?
96
+ @variant.data.custom_title_tag = "testing 123"
97
+ @variant.save
98
+ assert_equal false, @variant.identical_published_variant?
99
+ end
100
+
101
+ should "have the published variant know it has been modified when a section is modified via accepts_nested_attributes_for" do
102
+ @variant.attributes = {:data_attributes => {:class => @variant.article.data_class.name, :url_part => "test"}}
103
+ @variant.save
104
+ @variant.reload
105
+
106
+ @variant.publish
107
+
108
+ assert_equal true, @variant.identical_published_variant?
109
+ @variant.attributes = {"sections_attributes" => {1 => {'id' => @section_a.id, 'sectionable_attributes' => {'id' => @section_a.sectionable_id, 'body' => 'pino'}}}}
110
+ @variant.save
111
+ assert_equal false, @variant.identical_published_variant?
112
+ end
113
+
114
+ should "be able to rollback a publication" do
115
+ assert_equal [@variant], @variant.page.variants(true)
116
+
117
+ @variant.data.url_part = "test"
118
+ @variant.save
119
+ @variant.publish
120
+
121
+ assert_equal [@variant], @variant.page.variants(true)
122
+
123
+ publication = @variant.page.publications(true).first
124
+ variant = publication.rollback({'name' => "nieuwe variant"})
125
+ assert_not_equal publication, variant
126
+ assert_equal "nieuwe variant", variant.name
127
+ assert_equal publication.data.title, variant.data.title
128
+ assert_equal publication.version, variant.version
129
+
130
+ # @variant.page.variants contains exactly @variant and variant (no matter which order)
131
+ assert_equal 2, ([@variant, variant] & @variant.page.variants(true)).size
132
+ end
133
+
134
+ should "let a variant to be saved when a version attribute is set and it matches the current version" do
135
+ @variant.data.url_part = "test"
136
+ @variant.version = @variant.version
137
+ assert @variant.save
138
+ end
139
+
140
+ should "not let a variant to be saved when the actual version is higher than the version of the variant when it was retrieved" do
141
+ variant_id = @variant.id
142
+ current_version = @variant.version
143
+
144
+ # bob sends a POST request to save the Variant
145
+ bobs_variant = Skyline::Variant.find_by_id(variant_id)
146
+ bobs_variant.attributes = {:version => current_version, :data_attributes => {:class => bobs_variant.article.data_class.name, :url_part => "bob's url_part"}}
147
+ assert bobs_variant.save
148
+
149
+ # alice's save will fail
150
+ alices_variant = Skyline::Variant.find_by_id(variant_id)
151
+ bobs_variant_version = alices_variant.version
152
+ alices_variant.attributes = {:version => current_version, :data_attributes => {:class => alices_variant.article.data_class.name, :url_part => "alice's url_part"}}
153
+ assert !alices_variant.save
154
+
155
+ # after confirming she really wants to overwrite Bob's changes she can save the Variant by specifying Bob's version number
156
+ # if someone again edits the Variant between the save and confirmation the same problem and question arrises
157
+ alices_variant = Skyline::Variant.find(variant_id)
158
+ alices_variant.attributes = {:version => bobs_variant_version, :data_attributes => {:class => alices_variant.article.data_class.name, :url_part => "alice's url_part"}}
159
+ assert alices_variant.save
160
+ end
161
+
162
+ should "return the published variant as default_variant if the page is published" do
163
+ @variant.data.url_part = "test"
164
+ @variant.save
165
+ @variant.publish
166
+ assert_equal @variant, @variant.page.default_variant
167
+ end
168
+
169
+ should "return the last published variant as default_variant if the page is not published *anymore*" do
170
+ @variant.attributes = {:data_attributes => {:class => @variant.article.data_class.name, :url_part => "test"}}
171
+ @variant.save
172
+ @variant.reload
173
+
174
+ @variant.publish
175
+ @variant.page.depublish
176
+ assert_equal @variant, @variant.page.default_variant(true)
177
+
178
+ new_variant = @variant.clone
179
+ new_variant.save
180
+ new_variant.publish
181
+
182
+ new_variant.page.depublish
183
+
184
+ @variant.reload
185
+ assert_equal new_variant, @variant.page.default_variant(true)
186
+ end
187
+
188
+ should "return the last edited variant as default_variant if the page is *never* published" do
189
+ @variant.attributes = {:data_attributes => {:class => @variant.article.data_class.name, :url_part => "test"}}
190
+ @variant.save
191
+ @variant.reload
192
+
193
+ Skyline::Page.connection.execute("UPDATE skyline_article_versions SET updated_at='2009-01-01' WHERE id=#{@variant.id}")
194
+ assert_equal @variant, @variant.page.default_variant(true)
195
+
196
+ new_variant = @variant.clone
197
+ new_variant.save
198
+
199
+ @variant.article.set_default_variant!(new_variant)
200
+
201
+ assert_equal new_variant, @variant.page.default_variant(true)
202
+ end
203
+ end
204
+ end