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
@@ -8,17 +8,24 @@ class Skyline::SectionsController < Skyline::ApplicationController
8
8
  section.sectionable = params[:sectionable_type].constantize.new
9
9
  section_guid = Guid.new
10
10
 
11
+ if params[:after_section]
12
+ pos, id = :after, params[:after_section]
13
+ else
14
+ pos, id = :bottom, "contentlist"
15
+ end
16
+
11
17
  fields_for params[:object_name] do |variant_form|
12
- page.insert_html(:bottom, "contentlist", :partial => "form", :locals => {:variant_form => variant_form, :section => section, :guid => section_guid})
18
+ page.insert_html(pos, id, :partial => "form", :locals => {:variant_form => variant_form, :section => section, :guid => section_guid})
13
19
  end
20
+
14
21
  page << "$('contentlist').retrieve('application.sections').addSection('section_#{section_guid}');"
15
- page << "var myFx = new Fx.Scroll(\"contentEditPanel\").toBottom();"
22
+ page << "$('contentEditPanel').scrollTo(0, $('contentEditPanel').getScroll().y + $('section_#{section_guid}').getPosition(\"contentEditPanel\").y)"
16
23
  end
17
24
  end
18
25
 
19
26
  protected
20
27
  def find_renderable_scope
21
- @renderable_scope = Skyline::RenderableScopeInterface.unserialize(params[:renderable_scope]) if params[:renderable_scope]
28
+ @renderable_scope = Skyline::Rendering::Scopes::Interface.unserialize(params[:renderable_scope]) if params[:renderable_scope]
22
29
  raise "Can't load renderable_scope from params[:renderable_scope]: '#{params[:renderable_scope]}'" unless @renderable_scope
23
30
  end
24
31
  end
@@ -2,12 +2,14 @@ class Skyline::SettingsController < Skyline::Skyline2Controller
2
2
 
3
3
  layout "skyline/layouts/settings"
4
4
 
5
- self.default_menu_item = :admin
5
+ self.default_menu = :admin
6
6
 
7
7
  authorize :index, :edit, :update, :by => :settings_update
8
8
 
9
9
  def index
10
- redirect_to edit_skyline_setting_path(@implementation.settings.page_names.first)
10
+ if @implementation.has_settings?
11
+ redirect_to edit_skyline_setting_path(@implementation.settings.page_names.first)
12
+ end
11
13
  end
12
14
 
13
15
  def edit
@@ -0,0 +1,18 @@
1
+ class Skyline::UserPreferencesController < Skyline::ApplicationController
2
+ def create
3
+ unless params[:skyline_up].blank?
4
+ user_preference = ActiveSupport::JSON.decode(params[:skyline_up])
5
+
6
+ if user_preference.values.first == "_delete"
7
+ current_user.user_preferences.remove(user_preference.keys.first)
8
+ up = {}
9
+ else
10
+ current_user.user_preferences.set(user_preference.keys.first, user_preference.values.first)
11
+ up = {user_preference.keys.first => user_preference.values.first}
12
+ end
13
+ end
14
+ respond_to do |format|
15
+ format.json { render :json => up }
16
+ end
17
+ end
18
+ end
@@ -1,7 +1,7 @@
1
1
  class Skyline::UsersController < Skyline::ApplicationController
2
2
  layout "skyline/layouts/settings"
3
3
 
4
- self.default_menu_item = :admin
4
+ self.default_menu = :admin
5
5
 
6
6
  authorize :index, :by => "user_show"
7
7
  authorize :new,:create, :by => "user_create"
@@ -1,6 +1,8 @@
1
1
  class Skyline::VariantCurrentEditorController < Skyline::ApplicationController
2
2
  layout false
3
3
 
4
+ skip_before_filter :handle_user_preferences
5
+
4
6
  def poll
5
7
  return render(:nothing => true) if session[:user_id].blank?
6
8
 
@@ -1,11 +1,8 @@
1
1
  module Skyline::ApplicationHelper
2
2
  # Place a tick or a cross depending on the value of bool
3
3
  #
4
- # ==== Parameters
5
- # bool<Boolean>:: The value of the tick/cross
6
- # options<Hash>:: Options will be passed to the image_tag method
7
- #
8
- # --
4
+ # @param [Boolean] bool The value of the tick/cross
5
+ # @param [Hash] options ({}) Options will be passed to the image_tag method
9
6
  def tick_image(bool,options={})
10
7
  name = bool ? "true" : "false"
11
8
  src = "/skyline/images/icons/#{name}.gif"
@@ -15,56 +12,63 @@ module Skyline::ApplicationHelper
15
12
  image_tag(src,options)
16
13
  end
17
14
 
15
+ # Set the Skyline JS layout to use. Used in templates so the layout can initialize the correct layout.
16
+ #
17
+ # @param [Symbol] name The name of the js layout to use @see #render_js_layout
18
+ def use_js_layout(name)
19
+ @_js_layout = name
20
+ end
21
+
22
+ # Does this template have a Skyline JS Layout set?
23
+ #
24
+ # @return [Boolean]
25
+ def has_js_layout?
26
+ @_js_layout.present?
27
+ end
28
+
29
+ # Actually render the JS code to initialize the previously set Skyline JS Layout.
30
+ #
31
+ # @todo Currently only implemented in EntopicEditor plugin
32
+ def render_js_layout
33
+ return unless @_js_layout
34
+ raise "TO BE IMPLEMENTED"
35
+ end
36
+
18
37
  # You can use this method to place a message directly in your view. This also
19
38
  # works directly from a render(:update) or an update_page block.
20
39
  #
21
- # ==== Parameters
22
- # type<Symbol>:: The type of the message (:error,:notification,:success)
23
- # message<String>:: The message to show
24
- # optiosn<Hash>:: Options to be passed to the MessageGenerator (javascript)
25
- #
26
- # --
40
+ # @param [Symbol] type The type of the message (:error,:notification,:success)
41
+ # @param [String] message The message to show
42
+ # @param [Hash] options ({}) Options to be passed to the MessageGenerator (javascript)
27
43
  def message(type,message,options={})
28
- MessageGenerator.new(type,message,options)
44
+ Skyline::MessageGenerator.new(type,message,options)
29
45
  end
30
46
 
31
47
  # You can use this method to place a notification directly in your view. This also
32
48
  # works directly from a render(:update) or an update_page block.
33
49
  #
34
- # ==== Parameters
35
- # type<Symbol>:: The type of the message (:error,:notification,:success)
36
- # message<String>:: The message to show
37
- # optiosn<Hash>:: Options to be passed to the MessageGenerator (javascript)
38
- #
39
- # --
50
+ # @param [Symbol] type The type of the message (:error,:notification,:success)
51
+ # @param [String] message The message to show
52
+ # @param [Hash] options ({}) Options to be passed to the MessageGenerator (javascript)
40
53
  def notification(type,message,options={})
41
- MessageGenerator.new(type,message,options)
54
+ Skyline::NotificationGenerator.new(type,message,options)
42
55
  end
43
56
 
57
+ # Actually render the messages on screen.
58
+ #
59
+ # @option options [Class] :generator (Skyline::MessageGenerator) The generator to use to render the messages.
44
60
  def render_messages(options={})
45
61
  _render_volatiles(self.messages,options)
46
62
  end
47
63
 
64
+ # Actually render the notifications on screen.
65
+ #
66
+ # @option options [Class] :generator (Skyline::NotificationGenerator) The generator to use to render the messages.
48
67
  def render_notifications(options={})
68
+ options.reverse_merge! :generator => Skyline::NotificationGenerator
49
69
  _render_volatiles(self.notifications,options)
50
70
  end
51
-
52
- def plugin_hook(name)
53
- template = caller.first[/app\/views\/([^:]*):/,1]
54
- raise "Cannot determine template from caller: #{caller}" unless template
55
- plugin_template = template.sub(".html.erb", "_#{name}.html.erb")
56
71
 
57
- logger.debug "Looking for template #{plugin_template} in plugins..."
58
- Dir[Rails.root + "vendor/skyline_plugins/*/app/views/#{plugin_template}"].each do |file|
59
- if RAILS_ENV == "development"
60
- concat render(:inline => File.read(file), :layout => nil)
61
- else
62
- # render :file caches the file somehow, so only use it in production mode
63
- concat render(:file => file, :layout => nil)
64
- end
65
- end
66
- end
67
-
68
72
  protected
69
73
 
70
74
  def _render_volatiles(messages_hash, options={})
@@ -8,23 +8,24 @@ module Skyline::DialogHelper
8
8
  content = args.last
9
9
  options = options_for_render
10
10
  else
11
- options = options_for_render.slice!(:partial, :locals)
12
- options.each do |k,v|
13
- options[k] = case v
14
- when String,Symbol : "'" + escape_javascript(v.to_s) + "'"
15
- when Hash : options_for_javascript(v)
16
- else v
17
- end
18
- end
11
+ options = options_for_render.slice!(:partial, :locals)
19
12
  content = render(options_for_render)
20
13
  end
21
14
 
22
- p = "var s = function(){"
15
+ options.each do |k,v|
16
+ options[k] = case v
17
+ when String,Symbol : "'" + escape_javascript(v.to_s) + "'"
18
+ when Hash : options_for_javascript(v)
19
+ else v
20
+ end
21
+ end
22
+
23
+ p = "(function(){"
23
24
  p << "var sd = new Skyline.Dialog(#{options_for_javascript(options)});"
24
25
  p << "sd.setTitle('#{escape_javascript(title)}');"
25
26
  p << "sd.setContent('#{escape_javascript(content)}');"
26
27
  p << "sd.setup(); sd.show();"
27
- p << "}()"
28
+ p << "})()"
28
29
  end
29
30
 
30
31
  end
@@ -1,6 +1,6 @@
1
1
  class Skyline::Editors::Boolean < Skyline::Editors::Editor
2
2
  def output_without_errors
3
- check_box_tag(input_name(self.attribute_names), "1" , field.value(record)) +
4
- hidden_field_tag(input_name(self.attribute_names), "0") + " " + field.singular_label
3
+ hidden_field_tag(input_name(self.attribute_names), "0") +
4
+ check_box_tag(input_name(self.attribute_names), "1" , field.value(record)) + " " + field.singular_label
5
5
  end
6
6
  end
@@ -1,5 +1,7 @@
1
1
  class Skyline::Editors::PageBrowser < Skyline::Editors::Editor
2
2
  def output_without_errors
3
+ return "" unless Skyline::Configuration.enable_pages
4
+
3
5
  attr_names = self.attribute_names.dup
4
6
  attr_names[-1] = attr_names[-1].to_s.gsub(/_id$/, "_attributes")
5
7
  input_name_prefix = input_name(attr_names) # ie: element[image_attributes]
@@ -2,7 +2,7 @@ class Skyline::Editors::Wysiwyg < Skyline::Editors::Editor
2
2
  def output_without_errors
3
3
  out = content_tag("div",text_area_tag(
4
4
  input_name(self.attribute_names),
5
- record.send(field.name,true),
5
+ record.send(field.name),
6
6
  :class => "wysiwyg",
7
7
  :rows => 15,
8
8
  :cols => 90,
@@ -0,0 +1,19 @@
1
+ module Skyline::JsLayoutHelper
2
+ def use_js_layout(name)
3
+ @_js_layout = name
4
+ end
5
+
6
+ def has_js_layout?
7
+ @_js_layout.present?
8
+ end
9
+
10
+ def render_js_layout
11
+ return unless @_js_layout
12
+
13
+ t = ["Layout"]
14
+ t << {:content => "Content", :media => "Media"}[@_js_layout.to_sym]
15
+
16
+ layout_js = "new Application.#{t.compact.join(".")}()"
17
+ javascript_tag(layout_js)
18
+ end
19
+ end
@@ -0,0 +1,2 @@
1
+ module Skyline::Media::DirsHelper
2
+ end
@@ -0,0 +1,6 @@
1
+ module Skyline::Media::FilesHelper
2
+ def skyline_media_dir_files_path_with_session_information(media_dir)
3
+ session_key = ActionController::Base.session_options[:session_key] || ActionController::Base.session_options[:key]
4
+ skyline_media_dir_files_path(media_dir, session_key => cookies[session_key], request_forgery_protection_token => form_authenticity_token)
5
+ end
6
+ end
@@ -1,7 +1,7 @@
1
1
  # @private
2
2
  module Skyline::MediaFilesHelper
3
- def skyline_media_file_path_with_session_information(media_dir)
3
+ def skyline_media_dir_files_path_with_session_information(media_dir)
4
4
  session_key = ActionController::Base.session_options[:session_key] || ActionController::Base.session_options[:key]
5
- skyline_media_dir_media_files_path(media_dir, session_key => cookies[session_key], request_forgery_protection_token => form_authenticity_token)
5
+ skyline_media_dir_files_path(media_dir, session_key => cookies[session_key], request_forgery_protection_token => form_authenticity_token)
6
6
  end
7
7
  end
@@ -0,0 +1,33 @@
1
+ module Skyline::MenuHelper
2
+
3
+ # @param scope [Array]
4
+ # @param url [String,Hash]
5
+ # @param options [Hash]
6
+ def menu_item(*scope)
7
+ scope = Array(scope)
8
+ url_options = scope.extract_options!
9
+ options = url_options.slice!(:method)
10
+
11
+ url = scope.pop
12
+ scope = current_menu_scope(scope)
13
+ if controller.current_menu[0, scope.size] == scope
14
+ (options[:class] ||= "") << " active"
15
+ end
16
+
17
+
18
+ content_tag("li", link_to(t(scope.last, :scope => [:navigation, scope[-2]]), url, url_options), options)
19
+ end
20
+
21
+ def menu_for(*scope, &block)
22
+ return unless controller.current_menu[0, scope.size] == scope
23
+ @_menu_scope = scope
24
+ menu = capture(&block)
25
+ @_menu_scope = []
26
+ concat(menu)
27
+ end
28
+
29
+ def current_menu_scope(scope)
30
+ (@_menu_scope || []) + scope
31
+ end
32
+
33
+ end
@@ -15,11 +15,15 @@ class Skyline::MessageGenerator
15
15
  else v
16
16
  end
17
17
  end
18
- "new Application.Message('#{self.escape_javascript(@message)}',#{self.options_for_javascript(options)})"
18
+ "new #{self.js_object}('#{self.escape_javascript(@message)}',#{self.options_for_javascript(options)})"
19
19
  end
20
20
 
21
21
  def to_str
22
22
  to_s
23
23
  end
24
24
 
25
+ def js_object
26
+ "Application.Message"
27
+ end
28
+
25
29
  end
@@ -0,0 +1,6 @@
1
+ # @private
2
+ class Skyline::NotificationGenerator < Skyline::MessageGenerator
3
+ def js_object
4
+ "Application.Notification"
5
+ end
6
+ end
@@ -0,0 +1,21 @@
1
+ module Skyline::PluginHelper
2
+
3
+ # Add a hook to the template where a plugin can place it's own template.
4
+ # If templates from multiple plugins match the templates will be concatenated.
5
+ def plugin_hook(name)
6
+ template = caller.first[/app\/views\/([^:]*):/,1]
7
+ raise "Cannot determine template from caller: #{caller}" unless template
8
+ plugin_template = template.sub(".html.erb", "_#{name}.html.erb")
9
+
10
+ logger.debug "Looking for template #{plugin_template} in plugins..."
11
+ Dir[Skyline::PluginsManager.plugin_path + "*/app/views/#{plugin_template}"].each do |file|
12
+ if Rails.env == "development"
13
+ concat render(:inline => File.read(file), :layout => nil)
14
+ else
15
+ # render :file caches the file somehow, so only use it in production mode
16
+ concat render(:file => file, :layout => nil)
17
+ end
18
+ end
19
+ end
20
+
21
+ end
@@ -4,11 +4,7 @@
4
4
  class Skyline::Presenters::Presenter
5
5
  class << self
6
6
  def create(presenter,records,fieldset,template,options={})
7
- klass = case presenter
8
- when :article : Skyline::Presenters::ArticleList
9
- else Skyline::Presenters::Table
10
- end
11
- klass.new(records,fieldset,template,options)
7
+ Skyline::Presenters::Table.new(records,fieldset,template,options)
12
8
  end
13
9
  end
14
10
 
@@ -31,14 +27,9 @@ class Skyline::Presenters::Presenter
31
27
  def content_tag(*params); @template.content_tag(*params); end # :nodoc:
32
28
 
33
29
  def output
34
- [header,body,footer].join("\n")
30
+ @template.render :partial => "skyline/content/presenters/table", :locals => {:presenter => self}
35
31
  end
36
-
37
- def header; ""; end
38
- def body; ""; end
39
- def footer; ""; end
40
-
41
- protected
32
+
42
33
 
43
34
  def edit_button(record)
44
35
  link_to button_text(:edit),{:action => "edit", :types => stack.url_types(:down => [record.id]), :return_to => url_for({:filter => params[:filter]})}, :class => "button small"
@@ -118,7 +109,7 @@ class Skyline::Presenters::Presenter
118
109
  truncate(simple_format(strip_tags(content.gsub("<br />", "<br />\n").gsub("</p>", "</p>\n"))),150)
119
110
  end
120
111
  when String : truncate(content,150)
121
- when TrueClass,FalseClass : [(content ? image_tag("icons/tick.png") : image_tag("icons/cross.png")),{:class => "center"}]
112
+ when TrueClass,FalseClass : [(content ? image_tag("/skyline/images/icons/true.gif") : image_tag("/skyline/images/icons/false.gif")),{:class => "center"}]
122
113
  when Date,Time : l(content, :format => :long)
123
114
  else content.to_s
124
115
  end
@@ -1,30 +1,3 @@
1
1
  class Skyline::Presenters::Table < Skyline::Presenters::Presenter
2
-
3
- def output
4
- content_tag("table",super, :class => "listing")
5
- end
6
-
7
- def header
8
- "<thead><tr>#{self.heading_collection.map{|f| content_tag("th",f.singular_label.capitalize)}.join("\n")}<th></th><th></th></tr></thead>"
9
- end
10
-
11
- def body
12
- if self.collection.any?
13
- self.collection.map{|el| next if el.new_record?; content_tag("tr",self.row(el).join("\n"), :class => cycle("odd","even")) }
14
- else
15
- "<tr class=\"blank-slate\"><td colspan=\"#{self.heading_collection.size + 2}\">#{t(:blank_slate, :scope => [:content,:list], :class => self.fieldset.plural_name.downcase)}.</td></tr>"
16
- end
17
- end
18
-
19
- def row(record)
20
- return if record.new_record? # there can't be any new records in a list!
21
- content_cells = self.heading_collection.map do |field|
22
- content,options = self.value(record,field);
23
- content_tag("td",content,options)
24
- end
25
-
26
- [content_cells, content_tag("td",edit_button(record), :class => "edit"), content_tag("td",delete_button(record),:class => "delete")]
27
- end
28
-
29
2
 
30
3
  end
@@ -76,9 +76,9 @@ module Skyline::RefObjectHelper
76
76
  l << browse_button
77
77
  end
78
78
 
79
- c = content_tag("div", c.join, :class => "relatesTo #{"linked" if linked_form.object.andand.referable && !linked_form.object.andand.marked_for_destruction?}")
79
+ c = content_tag("div", c.join, :class => "relatesTo #{"linked" if linked_form.object.present? && !linked_form.object.andand.marked_for_destruction?}")
80
80
  end
81
81
 
82
- content_tag "div", c, :id => form_builder.dom_id(field), :class => css_class
82
+ content_tag("div", c, :id => form_builder.dom_id(field), :class => css_class) + form_builder.fieldset_errors(field).to_s
83
83
  end
84
84
  end
@@ -20,7 +20,13 @@ module Skyline::TreeHelper
20
20
  edit_skyline_article_path(page["id"])
21
21
  end
22
22
 
23
- options.reverse_merge! :id_prefix => "article", :node_content => node_content, :node_url => node_url, :node_title => node_title
23
+ options.reverse_merge!(
24
+ :id_prefix => "article",
25
+ :node_content => node_content,
26
+ :node_url => node_url,
27
+ :node_title => node_title,
28
+ :open_nodes => preferred_open_nodes("pages.tree.nodes.open", options[:selected])
29
+ )
24
30
  node_tree(pages,roots,options)
25
31
  end
26
32
 
@@ -36,27 +42,90 @@ module Skyline::TreeHelper
36
42
  node_url = Proc.new do |node|
37
43
  skyline_media_dir_media_files_path(node)
38
44
  end
39
- options.reverse_merge! :id_prefix => "media", :node_content => node_content, :node_url => node_url, :node_title => node_title
45
+ options.reverse_merge!(
46
+ :id_prefix => "media",
47
+ :node_content => node_content,
48
+ :node_url => node_url,
49
+ :node_title => node_title,
50
+ :open_nodes => preferred_open_nodes("media.dirs.tree.nodes.open", options[:selected])
51
+ )
40
52
  node_tree(dirs,roots,options)
41
53
  end
42
54
 
43
-
55
+ # Build a nested UL/LI construct used for trees.
56
+ #
57
+ # @param node_collection [Hash] A flat Hash which is keyed on parent_id and have as value all the child elements
58
+ # @param nodes [Array] The nodes for the current level to place (mostly the root nodes).
59
+ #
60
+ # @option options id_prefix [String] The prefix to place before the node id (this is used as the DOM id of the LI tag)
61
+ # @option options node_content [lambda{|node| }] A proc returning a string that will put as the content of the node
62
+ # @option options node_url [lambda{|node| }] A proc returning the URL for the node
63
+ # @option options node_title [lambda{|node| }] The title to use for node A tag.
64
+ # @option options selected [~id] The selected node, will be compared against #id
65
+ # @option options class [String] The CSS class to give the node
44
66
  def node_tree(node_collection,nodes,options={})
45
67
  node_url = Proc.new{|node| "" }
46
68
  node_content = Proc.new{|node| node }
47
69
  node_title = Proc.new{|node| "" }
48
- options.reverse_merge! :id_prefix => "node", :node_content => node_content, :node_url => node_url, :node_title => node_title, :selected => nil, :open => []
70
+ options.reverse_merge!(
71
+ :id_prefix => "node",
72
+ :node_content => node_content,
73
+ :node_url => node_url,
74
+ :node_title => node_title,
75
+ :selected => nil,
76
+ :open_nodes => []
77
+ )
78
+
49
79
  tags = []
50
80
  nodes ||= []
81
+ open_nodes = options[:open_nodes] || []
82
+
83
+ logger.warn("ON #{open_nodes.inspect}");
51
84
 
52
85
  nodes.each do |node|
53
86
  selected = options[:selected].present? ? options[:selected].id == node.id : false
54
87
  li = link_to(options[:node_content].call(node), options[:node_url].call(node), :class => (selected ? "selected" : nil), :title => options[:node_title].call(node))
55
88
  li << node_tree(node_collection,node_collection[node.id],options) if node_collection.has_key?(node.id)
56
- tags << content_tag("li",li , :id => "#{options[:id_prefix]}_#{node.id}", :class => (options[:open].include?(node)))
89
+
90
+ node_class = []
91
+ # node_class << node.open ? "open" : "closed" if node_collection.has_key?(node.id) && node.respond_to?(:open)
92
+ node_class << (open_nodes.include?("#{node.id}") ? "open" : "closed") if node_collection.has_key?(node.id)
93
+ node_class << options[:class] if options[:class]
94
+
95
+ tags << content_tag("li",li , :id => "#{options[:id_prefix]}_#{node.id}", :class => (node_class.any? ? node_class.join(" ") : nil))
57
96
  end
58
97
 
59
98
  content_tag("ul",tags.join("\n"));
60
99
  end
61
100
 
101
+ # Get's the current user preferred open nodes
102
+ #
103
+ # @param String up_key The User preferences key to use ("a.b.c")
104
+ # @param ~id selected The currently selected node
105
+ #
106
+ def preferred_open_nodes(up_key, selected = nil)
107
+ open_nodes = []
108
+ if user_preferences = current_user.user_preferences.get(up_key)
109
+ open_nodes = user_preferences.inject([]) do |result, (k,v)|
110
+ if v
111
+ id = k
112
+ result << id
113
+ end
114
+ end
115
+ end
116
+
117
+ # Make sure parents are open.
118
+ if selected.present?
119
+ if selected.respond_to?("nesting")
120
+ selected.nesting.each do |p|
121
+ open_nodes << p.id.to_s
122
+ end
123
+ else
124
+ open_nodes << selected.parent_id.to_s
125
+ end
126
+ end
127
+
128
+ open_nodes
129
+ end
130
+
62
131
  end
@@ -14,9 +14,20 @@ class Skyline::Article < ActiveRecord::Base
14
14
  super
15
15
  subclass.set_table_name subclass.name.underscore.gsub("/","_")
16
16
 
17
- parent = subclass.parent
18
- parent.send(:belongs_to, :default_variant_data, :class_name => subclass.name)
19
- parent.send(:belongs_to, :published_publication_data, :class_name => subclass.name)
17
+ parentclass = subclass.parent
18
+ parentclass.class_eval do
19
+ belongs_to :default_variant_data, :class_name => subclass.name
20
+ belongs_to :published_publication_data, :class_name => subclass.name
21
+ end
22
+
23
+ subclass.class_eval do
24
+ has_one :article, :foreign_key => "published_publication_data_id", :class_name => parentclass.name
25
+
26
+ named_scope :published, {
27
+ :include => [:article],
28
+ :conditions => "skyline_articles.published_publication_data_id = #{self.table_name}.id"
29
+ }
30
+ end
20
31
 
21
32
  if !Rails.configuration.cache_classes && !(ActiveSupport::Dependencies.load_once_path?(__FILE__) && subclass.parents[-2] == ::Skyline)
22
33
  ActiveSupport::Dependencies.autoloaded_constants << subclass.to_s
@@ -183,7 +194,8 @@ class Skyline::Article < ActiveRecord::Base
183
194
 
184
195
  def set_default_variant!(variant)
185
196
  return if variant.id == self.default_variant_id && variant.data_id == self.default_variant_data_id
186
- self.update_attributes(:default_variant_id => variant.id, :default_variant_data_id => variant.data_id)
197
+ self.attributes = {:default_variant_id => variant.id, :default_variant_data_id => variant.data_id}
198
+ self.save(false)
187
199
  end
188
200
 
189
201
  def set_default_variant(variant)
@@ -228,7 +240,7 @@ class Skyline::Article < ActiveRecord::Base
228
240
  end
229
241
 
230
242
  def renderable_scope
231
- Skyline::WildcardRenderableScope.new
243
+ Skyline::Rendering::Scopes::Wildcard.new
232
244
  end
233
245
 
234
246
  protected
@@ -249,7 +261,7 @@ class Skyline::Article < ActiveRecord::Base
249
261
  raise StandardError, "can't be destroyed because this page is persistent" if self.persistent?
250
262
  end
251
263
 
252
- # reset ref objects that refer to removed media file
264
+ # Reset ref objects that refer to this now removed Article.
253
265
  # by setting referable_id = nil
254
266
  def reset_ref_object
255
267
  Skyline::RefObject.update_all({:referable_id => nil}, {:referable_id => self.id, :referable_type => self.class.name})
@@ -25,7 +25,7 @@ class Skyline::ArticleVersion < ActiveRecord::Base
25
25
  end
26
26
 
27
27
  def clone
28
- returning super do |clone|
28
+ super.tap do |clone|
29
29
  clone.created_at = nil
30
30
  clone.updated_at = nil
31
31
  clone.sections = self.sections.collect{|section| section.clone}