browsercms 3.1.5 → 3.3.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (425) hide show
  1. data/app/controllers/cms/base_controller.rb +3 -3
  2. data/app/controllers/cms/content_block_controller.rb +2 -2
  3. data/app/controllers/cms/content_controller.rb +5 -4
  4. data/app/controllers/cms/error_handling.rb +1 -1
  5. data/app/controllers/cms/routes_controller.rb +4 -5
  6. data/app/controllers/cms/section_nodes_controller.rb +1 -6
  7. data/app/controllers/cms/sections_controller.rb +2 -3
  8. data/app/controllers/cms/tasks_controller.rb +3 -0
  9. data/app/controllers/cms/users_controller.rb +1 -1
  10. data/app/helpers/cms/application_helper.rb +137 -34
  11. data/app/helpers/cms/form_builder.rb +33 -21
  12. data/app/helpers/cms/page_helper.rb +43 -10
  13. data/app/helpers/cms/path_helper.rb +1 -1
  14. data/app/helpers/cms/rendering_helper.rb +3 -4
  15. data/app/helpers/cms/section_nodes_helper.rb +5 -43
  16. data/app/models/abstract_file_block.rb +1 -16
  17. data/app/models/attachment.rb +57 -22
  18. data/app/models/category.rb +4 -4
  19. data/app/models/category_type.rb +2 -2
  20. data/app/models/cms/view_context.rb +46 -0
  21. data/app/models/connector.rb +7 -6
  22. data/app/models/content_type.rb +3 -3
  23. data/app/models/dynamic_view.rb +1 -1
  24. data/app/models/email_message.rb +2 -2
  25. data/app/models/file_block.rb +12 -0
  26. data/app/models/group.rb +4 -4
  27. data/app/models/group_type.rb +4 -4
  28. data/app/models/html_block.rb +1 -1
  29. data/app/models/image_block.rb +12 -0
  30. data/app/models/link.rb +22 -5
  31. data/app/models/page.rb +87 -46
  32. data/app/models/page_route.rb +61 -6
  33. data/app/models/permission.rb +1 -1
  34. data/app/models/portlet.rb +14 -4
  35. data/app/models/section.rb +48 -86
  36. data/app/models/section_node.rb +25 -40
  37. data/app/models/site.rb +1 -1
  38. data/app/models/tag.rb +1 -1
  39. data/app/models/task.rb +8 -7
  40. data/app/models/user.rb +2 -7
  41. data/app/portlets/forgot_password_portlet.rb +6 -2
  42. data/app/portlets/reset_password_portlet.rb +1 -1
  43. data/app/views/cms/blocks/_toolbar.html.erb +1 -1
  44. data/app/views/cms/blocks/_toolbar_for_collection.html.erb +3 -6
  45. data/app/views/cms/blocks/_toolbar_for_member.html.erb +3 -5
  46. data/app/views/cms/blocks/edit.html.erb +4 -4
  47. data/app/views/cms/blocks/index.html.erb +7 -7
  48. data/app/views/cms/blocks/new.html.erb +4 -4
  49. data/app/views/cms/blocks/show.html.erb +2 -2
  50. data/app/views/cms/blocks/usages.html.erb +2 -2
  51. data/app/views/cms/blocks/versions.html.erb +4 -4
  52. data/app/views/cms/cache/show.html.erb +2 -2
  53. data/app/views/cms/categories/_form.html.erb +2 -2
  54. data/app/views/cms/connectors/new.html.erb +6 -8
  55. data/app/views/cms/content/no_page.html.erb +1 -1
  56. data/app/views/cms/content/show.html.erb +2 -7
  57. data/app/views/cms/dashboard/_page_drafts.html.erb +1 -1
  58. data/app/views/cms/dashboard/_tasks.html.erb +1 -1
  59. data/app/views/cms/dashboard/index.html.erb +1 -1
  60. data/app/views/cms/dynamic_views/_form.html.erb +2 -2
  61. data/app/views/cms/dynamic_views/index.html.erb +7 -10
  62. data/app/views/cms/email_messages/show.html.erb +2 -2
  63. data/app/views/cms/file_blocks/_form.html.erb +4 -4
  64. data/app/views/cms/form_builder/_cms_fancy_drop_down.html.erb +2 -2
  65. data/app/views/cms/form_builder/_cms_file_field.html.erb +2 -2
  66. data/app/views/cms/form_builder/_cms_tag_list.html.erb +2 -2
  67. data/app/views/cms/form_builder/_cms_text_editor.html.erb +2 -2
  68. data/app/views/cms/groups/_form.html.erb +5 -5
  69. data/app/views/cms/groups/_permissions.html.erb +4 -4
  70. data/app/views/cms/groups/_sections.html.erb +1 -2
  71. data/app/views/cms/groups/index.html.erb +1 -1
  72. data/app/views/cms/html_blocks/render.html.erb +1 -1
  73. data/app/views/cms/image_blocks/_form.html.erb +4 -5
  74. data/app/views/cms/links/_form.html.erb +1 -1
  75. data/app/views/cms/links/edit.html.erb +2 -2
  76. data/app/views/cms/links/new.html.erb +2 -2
  77. data/app/views/cms/page_routes/_form.html.erb +2 -2
  78. data/app/views/cms/page_routes/index.html.erb +6 -9
  79. data/app/views/cms/page_routes/show.html.erb +5 -8
  80. data/app/views/cms/pages/_edit_connector.html.erb +1 -1
  81. data/app/views/cms/pages/_form.html.erb +3 -3
  82. data/app/views/cms/pages/edit.html.erb +2 -2
  83. data/app/views/cms/pages/new.html.erb +7 -7
  84. data/app/views/cms/pages/versions.html.erb +4 -4
  85. data/app/views/cms/redirects/_form.html.erb +2 -2
  86. data/app/views/cms/redirects/index.html.erb +8 -7
  87. data/app/views/cms/routes/index.html.erb +2 -2
  88. data/app/views/cms/section_nodes/_link.html.erb +3 -6
  89. data/app/views/cms/section_nodes/_node.html.erb +4 -13
  90. data/app/views/cms/section_nodes/_page.html.erb +7 -13
  91. data/app/views/cms/section_nodes/_section.html.erb +8 -24
  92. data/app/views/cms/section_nodes/_section_node.html.erb +10 -0
  93. data/app/views/cms/section_nodes/index.html.erb +18 -30
  94. data/app/views/cms/sections/_form.html.erb +4 -6
  95. data/app/views/cms/sections/edit.html.erb +2 -2
  96. data/app/views/cms/sections/index.html.erb +3 -3
  97. data/app/views/cms/sections/new.html.erb +3 -3
  98. data/app/views/cms/sessions/new.html.erb +3 -3
  99. data/app/views/cms/shared/_pagination.html.erb +1 -1
  100. data/app/views/cms/shared/error.html.erb +1 -1
  101. data/app/views/cms/tags/render.html.erb +2 -2
  102. data/app/views/cms/tasks/new.html.erb +4 -4
  103. data/app/views/cms/users/_form.html.erb +3 -3
  104. data/app/views/cms/users/_toolbar.html.erb +3 -3
  105. data/app/views/cms/users/change_password.html.erb +5 -5
  106. data/app/views/cms/users/edit.html.erb +2 -2
  107. data/app/views/cms/users/index.html.erb +4 -4
  108. data/app/views/cms/users/new.html.erb +2 -2
  109. data/app/views/cms/users/show.html.erb +16 -16
  110. data/app/views/layouts/_cms_toolbar.html.erb +5 -5
  111. data/app/views/layouts/_page_toolbar.html.erb +11 -11
  112. data/app/views/layouts/cms/_footer.erb +1 -1
  113. data/app/views/layouts/cms/_head.html.erb +2 -6
  114. data/app/views/layouts/cms/administration.html.erb +32 -32
  115. data/app/views/layouts/cms/content_library.html.erb +5 -5
  116. data/app/views/layouts/cms/toolbar.html.erb +1 -1
  117. data/app/views/portlets/email_page/render.html.erb +2 -2
  118. data/app/views/portlets/forgot_password/render.html.erb +1 -1
  119. data/app/views/portlets/login/render.html.erb +4 -2
  120. data/app/views/portlets/reset_password/render.html.erb +1 -1
  121. data/app/views/tests/pretend/open_with_layout.html.erb +1 -1
  122. data/bin/bcms +0 -0
  123. data/bin/bcms-upgrade +232 -0
  124. data/bin/browsercms +2 -2
  125. data/browsercms.gemspec +16 -14
  126. data/db/migrate/20100705083859_browsercms_3_3_0.rb +56 -0
  127. data/db/seeds.rb +58 -0
  128. data/doc/guides/html/authentication.html +448 -192
  129. data/doc/guides/html/build_it_yourself.html +454 -175
  130. data/doc/guides/html/building_modules.html +451 -220
  131. data/doc/guides/html/building_templates.html +448 -498
  132. data/doc/guides/html/content_blocks.html +450 -470
  133. data/doc/guides/html/customizing_browsercms.html +453 -169
  134. data/doc/guides/html/deployment_guide.html +443 -82
  135. data/doc/guides/html/files/bcmsorg.js +28 -0
  136. data/doc/guides/html/files/clearfix.css +8 -0
  137. data/doc/guides/html/files/cufon.js +7 -0
  138. data/doc/guides/html/files/global.css +190 -0
  139. data/doc/guides/html/files/helvetica.js +91 -0
  140. data/doc/guides/html/files/jquery.js +11 -0
  141. data/doc/guides/html/getting_started.html +454 -213
  142. data/doc/guides/html/index.html +454 -174
  143. data/doc/guides/html/installing_modules.html +454 -186
  144. data/doc/guides/html/portlets.html +451 -232
  145. data/doc/guides/html/user_guide.html +452 -270
  146. data/doc/guides/html/writing_guides.html +454 -161
  147. data/lib/acts_as_list.rb +1 -1
  148. data/lib/browsercms.rb +10 -6
  149. data/lib/cms/acts.rb +7 -0
  150. data/lib/cms/authentication.rb +4 -0
  151. data/lib/cms/authentication/controller.rb +1 -1
  152. data/lib/cms/behaviors.rb +1 -1
  153. data/lib/cms/behaviors/archiving.rb +2 -2
  154. data/lib/cms/behaviors/attaching.rb +28 -43
  155. data/lib/cms/behaviors/categorizing.rb +1 -1
  156. data/lib/cms/behaviors/connecting.rb +27 -12
  157. data/lib/cms/behaviors/dynamic_attributes.rb +8 -5
  158. data/lib/cms/behaviors/hiding.rb +2 -2
  159. data/lib/cms/behaviors/publishing.rb +32 -22
  160. data/lib/cms/behaviors/rendering.rb +41 -18
  161. data/lib/cms/behaviors/searching.rb +1 -1
  162. data/lib/cms/behaviors/soft_deleting.rb +58 -29
  163. data/lib/cms/behaviors/taggable.rb +1 -1
  164. data/lib/cms/behaviors/userstamping.rb +5 -4
  165. data/lib/cms/behaviors/versioning.rb +192 -111
  166. data/lib/cms/content_rendering_support.rb +3 -3
  167. data/lib/cms/date_picker.rb +23 -0
  168. data/lib/cms/engine.rb +46 -0
  169. data/lib/cms/extensions.rb +1 -1
  170. data/lib/cms/extensions/active_record/errors.rb +2 -2
  171. data/lib/cms/extensions/hash.rb +4 -2
  172. data/lib/cms/extensions/string.rb +7 -2
  173. data/lib/cms/init.rb +32 -21
  174. data/lib/cms/module.rb +22 -0
  175. data/lib/cms/module_installation.rb +38 -0
  176. data/lib/cms/routes.rb +127 -115
  177. data/lib/cms/version.rb +2 -2
  178. data/lib/generators/browser_cms.rb +12 -0
  179. data/lib/generators/browser_cms/cms/USAGE +2 -0
  180. data/lib/generators/browser_cms/cms/cms_generator.rb +36 -0
  181. data/{rails_generators/browser_cms → lib/generators/browser_cms/cms}/templates/README +0 -0
  182. data/{rails_generators/browser_cms_demo_site → lib/generators/browser_cms/demo_site}/USAGE +0 -0
  183. data/lib/generators/browser_cms/demo_site/demo_site_generator.rb +138 -0
  184. data/lib/generators/browser_cms/demo_site/templates/demo_site.rake +11 -0
  185. data/{rails_generators/browser_cms_demo_site/templates/migration.rb → lib/generators/browser_cms/demo_site/templates/migration.erb} +2 -8
  186. data/lib/generators/cms/content_block/USAGE +22 -0
  187. data/lib/generators/cms/content_block/content_block_generator.rb +55 -0
  188. data/{rails_generators → lib/generators/cms}/content_block/templates/_form.html.erb +0 -0
  189. data/{rails_generators → lib/generators/cms}/content_block/templates/content_block.rb +0 -0
  190. data/{rails_generators → lib/generators/cms}/content_block/templates/controller.rb +0 -0
  191. data/{rails_generators → lib/generators/cms}/content_block/templates/functional_test.erb +0 -0
  192. data/{rails_generators/content_block/templates/migration.rb → lib/generators/cms/content_block/templates/migration.erb} +1 -1
  193. data/{rails_generators → lib/generators/cms}/content_block/templates/render.html.erb +0 -0
  194. data/{rails_generators → lib/generators/cms}/content_block/templates/unit_test.erb +0 -0
  195. data/lib/generators/cms/install/USAGE +8 -0
  196. data/lib/generators/cms/install/install_generator.rb +20 -0
  197. data/{rails_generators → lib/generators/cms}/portlet/USAGE +3 -16
  198. data/lib/generators/cms/portlet/portlet_generator.rb +38 -0
  199. data/{rails_generators → lib/generators/cms}/portlet/templates/_form.html.erb +0 -0
  200. data/{rails_generators → lib/generators/cms}/portlet/templates/portlet.rb +0 -0
  201. data/{rails_generators → lib/generators/cms}/portlet/templates/portlet_helper.rb +0 -0
  202. data/{rails_generators → lib/generators/cms}/portlet/templates/render.html.erb +0 -0
  203. data/{rails_generators → lib/generators/cms}/portlet/templates/unit_test.erb +0 -0
  204. data/{rails_generators → lib/generators/cms}/template/USAGE +1 -1
  205. data/lib/generators/cms/template/template_generator.rb +18 -0
  206. data/lib/generators/cms/template/templates/template.erb +2 -0
  207. data/lib/generators/cms/upgrade_module/README.txt +3 -0
  208. data/lib/generators/cms/upgrade_module/templates/20100705083859_browsercms_3_3_0.rb +56 -0
  209. data/lib/generators/cms/upgrade_module/templates/README +1 -0
  210. data/lib/generators/cms/upgrade_module/templates/USAGE.erb +10 -0
  211. data/lib/generators/cms/upgrade_module/templates/build_gem.rake +5 -0
  212. data/lib/generators/cms/upgrade_module/templates/engine.erb +7 -0
  213. data/lib/generators/cms/upgrade_module/templates/gemspec.erb +25 -0
  214. data/lib/generators/cms/upgrade_module/templates/gitignore.erb +11 -0
  215. data/lib/generators/cms/upgrade_module/templates/install.erb +9 -0
  216. data/lib/generators/cms/upgrade_module/templates/module_file.erb +3 -0
  217. data/lib/generators/cms/upgrade_module/templates/routes.erb +7 -0
  218. data/lib/generators/cms/upgrade_module/upgrade_module_generator.rb +61 -0
  219. data/lib/tasks/build_gem.rake +1 -0
  220. data/lib/tasks/cms.rake +34 -6
  221. data/lib/tasks/cucumber.rake +53 -0
  222. data/lib/tasks/db.rake +2 -2
  223. data/public/javascripts/cms/application.js +144 -135
  224. data/public/javascripts/cms/sitemap.js +383 -357
  225. data/public/javascripts/jquery-ui.js +782 -591
  226. data/public/javascripts/jquery.cookie.js +38 -43
  227. data/public/javascripts/jquery.js +13 -8
  228. data/public/javascripts/jquery.taglist.js +7 -0
  229. data/public/stylesheets/cms/date_picker.css +49 -40
  230. data/rails/init.rb +2 -3
  231. data/templates/blank.rb +13 -7
  232. data/templates/demo.rb +15 -7
  233. data/templates/module.rb +12 -75
  234. metadata +87 -407
  235. data/app/helpers/cms/content_block_helper.rb +0 -27
  236. data/app/views/layouts/cms/thickbox.html.erb +0 -24
  237. data/db/migrate/20120117144039_browsercms315.rb +0 -94
  238. data/db/migrate/20121114172307_load_seeds.rb +0 -70
  239. data/lib/cms/addressable.rb +0 -83
  240. data/lib/cms/error_pages.rb +0 -8
  241. data/public/images/cms/thickbox/loadingAnimation.gif +0 -0
  242. data/public/images/cms/thickbox/macFFBgHack.png +0 -0
  243. data/public/javascripts/jquery.contextMenu.js +0 -211
  244. data/public/javascripts/jquery.dimensions.js +0 -119
  245. data/public/javascripts/jquery.thickbox.js +0 -10
  246. data/public/stylesheets/cms/jquery.contextMenu.css +0 -61
  247. data/public/stylesheets/cms/thickbox.css +0 -163
  248. data/rails_generators/browser_cms/USAGE +0 -2
  249. data/rails_generators/browser_cms/browser_cms_generator.rb +0 -35
  250. data/rails_generators/browser_cms_demo_site/browser_cms_demo_site_generator.rb +0 -63
  251. data/rails_generators/content_block/USAGE +0 -32
  252. data/rails_generators/content_block/content_block_generator.rb +0 -69
  253. data/rails_generators/portlet/portlet_generator.rb +0 -35
  254. data/rails_generators/template/template_generator.rb +0 -18
  255. data/rails_generators/template/templates/template.erb +0 -3
  256. data/test/custom_assertions.rb +0 -74
  257. data/test/factories.rb +0 -111
  258. data/test/factories/sitemap_factories.rb +0 -28
  259. data/test/fixtures/connectors.yml +0 -97
  260. data/test/fixtures/content_type_groups.yml +0 -13
  261. data/test/fixtures/content_types.yml +0 -50
  262. data/test/fixtures/dynamic_view_versions.yml +0 -26
  263. data/test/fixtures/dynamic_views.yml +0 -26
  264. data/test/fixtures/group_permissions.yml +0 -16
  265. data/test/fixtures/group_sections.yml +0 -31
  266. data/test/fixtures/group_type_permissions.yml +0 -11
  267. data/test/fixtures/group_types.yml +0 -25
  268. data/test/fixtures/groups.yml +0 -25
  269. data/test/fixtures/html_block_versions.yml +0 -67
  270. data/test/fixtures/html_blocks.yml +0 -63
  271. data/test/fixtures/page_versions.yml +0 -265
  272. data/test/fixtures/pages.yml +0 -85
  273. data/test/fixtures/permissions.yml +0 -28
  274. data/test/fixtures/section_nodes.yml +0 -46
  275. data/test/fixtures/sections.yml +0 -19
  276. data/test/fixtures/sites.yml +0 -9
  277. data/test/fixtures/user_group_memberships.yml +0 -11
  278. data/test/fixtures/users.yml +0 -15
  279. data/test/functional/cms/cache_controller_test.rb +0 -14
  280. data/test/functional/cms/categories_controller_test.rb +0 -25
  281. data/test/functional/cms/connectors_controller_test.rb +0 -60
  282. data/test/functional/cms/content_block_controller_test.rb +0 -120
  283. data/test/functional/cms/content_controller_test.rb +0 -439
  284. data/test/functional/cms/content_types_controller_test.rb +0 -18
  285. data/test/functional/cms/dashboard_controller_test.rb +0 -16
  286. data/test/functional/cms/dynamic_views_controller_test.rb +0 -52
  287. data/test/functional/cms/file_blocks_controller_test.rb +0 -52
  288. data/test/functional/cms/groups_controller_test.rb +0 -50
  289. data/test/functional/cms/home_controller_test.rb +0 -156
  290. data/test/functional/cms/html_blocks_controller_test.rb +0 -164
  291. data/test/functional/cms/image_blocks_controller_test.rb +0 -82
  292. data/test/functional/cms/links_controller_test.rb +0 -148
  293. data/test/functional/cms/pages_controller_test.rb +0 -227
  294. data/test/functional/cms/portlets_controller_test.rb +0 -67
  295. data/test/functional/cms/section_nodes_controller_test.rb +0 -112
  296. data/test/functional/cms/sections_controller_test.rb +0 -227
  297. data/test/functional/cms/sessions_controller_test.rb +0 -76
  298. data/test/functional/cms/toolbar_controller_test.rb +0 -64
  299. data/test/functional/cms/users_controller_test.rb +0 -231
  300. data/test/functional/tests/pretend_controller_test.rb +0 -57
  301. data/test/integration/cms/ckeditor_test.rb +0 -30
  302. data/test/integration/cms/password_management_test.rb +0 -56
  303. data/test/integration/login_test.rb +0 -14
  304. data/test/integration/sitemap_performance_test.rb +0 -26
  305. data/test/selenium-core/Blank.html +0 -7
  306. data/test/selenium-core/InjectedRemoteRunner.html +0 -8
  307. data/test/selenium-core/RemoteRunner.html +0 -110
  308. data/test/selenium-core/SeleniumLog.html +0 -109
  309. data/test/selenium-core/TestPrompt.html +0 -145
  310. data/test/selenium-core/TestRunner-splash.html +0 -55
  311. data/test/selenium-core/TestRunner.hta +0 -176
  312. data/test/selenium-core/TestRunner.html +0 -176
  313. data/test/selenium-core/domviewer/butmin.gif +0 -0
  314. data/test/selenium-core/domviewer/butplus.gif +0 -0
  315. data/test/selenium-core/domviewer/domviewer.css +0 -298
  316. data/test/selenium-core/domviewer/domviewer.html +0 -16
  317. data/test/selenium-core/domviewer/selenium-domviewer.js +0 -205
  318. data/test/selenium-core/icons/all.png +0 -0
  319. data/test/selenium-core/icons/continue.png +0 -0
  320. data/test/selenium-core/icons/continue_disabled.png +0 -0
  321. data/test/selenium-core/icons/pause.png +0 -0
  322. data/test/selenium-core/icons/pause_disabled.png +0 -0
  323. data/test/selenium-core/icons/selected.png +0 -0
  324. data/test/selenium-core/icons/step.png +0 -0
  325. data/test/selenium-core/icons/step_disabled.png +0 -0
  326. data/test/selenium-core/iedoc-core.xml +0 -1515
  327. data/test/selenium-core/iedoc.xml +0 -1469
  328. data/test/selenium-core/lib/cssQuery/cssQuery-p.js +0 -6
  329. data/test/selenium-core/lib/cssQuery/src/cssQuery-level2.js +0 -142
  330. data/test/selenium-core/lib/cssQuery/src/cssQuery-level3.js +0 -150
  331. data/test/selenium-core/lib/cssQuery/src/cssQuery-standard.js +0 -53
  332. data/test/selenium-core/lib/cssQuery/src/cssQuery.js +0 -356
  333. data/test/selenium-core/lib/prototype.js +0 -2006
  334. data/test/selenium-core/lib/scriptaculous/builder.js +0 -101
  335. data/test/selenium-core/lib/scriptaculous/controls.js +0 -815
  336. data/test/selenium-core/lib/scriptaculous/dragdrop.js +0 -915
  337. data/test/selenium-core/lib/scriptaculous/effects.js +0 -958
  338. data/test/selenium-core/lib/scriptaculous/scriptaculous.js +0 -47
  339. data/test/selenium-core/lib/scriptaculous/slider.js +0 -283
  340. data/test/selenium-core/lib/scriptaculous/unittest.js +0 -383
  341. data/test/selenium-core/scripts/find_matching_child.js +0 -69
  342. data/test/selenium-core/scripts/htmlutils.js +0 -894
  343. data/test/selenium-core/scripts/injection.html +0 -72
  344. data/test/selenium-core/scripts/js2html.js +0 -70
  345. data/test/selenium-core/scripts/narcissus-defs.js +0 -175
  346. data/test/selenium-core/scripts/narcissus-exec.js +0 -1054
  347. data/test/selenium-core/scripts/narcissus-parse.js +0 -1003
  348. data/test/selenium-core/scripts/se2html.js +0 -63
  349. data/test/selenium-core/scripts/selenium-api.js +0 -2409
  350. data/test/selenium-core/scripts/selenium-browserbot.js +0 -2203
  351. data/test/selenium-core/scripts/selenium-browserdetect.js +0 -150
  352. data/test/selenium-core/scripts/selenium-commandhandlers.js +0 -377
  353. data/test/selenium-core/scripts/selenium-executionloop.js +0 -175
  354. data/test/selenium-core/scripts/selenium-logging.js +0 -147
  355. data/test/selenium-core/scripts/selenium-remoterunner.js +0 -571
  356. data/test/selenium-core/scripts/selenium-testrunner.js +0 -1333
  357. data/test/selenium-core/scripts/selenium-version.js +0 -5
  358. data/test/selenium-core/scripts/user-extensions.js +0 -3
  359. data/test/selenium-core/scripts/user-extensions.js.sample +0 -75
  360. data/test/selenium-core/scripts/xmlextras.js +0 -153
  361. data/test/selenium-core/selenium-logo.png +0 -0
  362. data/test/selenium-core/selenium-test.css +0 -43
  363. data/test/selenium-core/selenium.css +0 -299
  364. data/test/selenium-core/xpath/dom.js +0 -428
  365. data/test/selenium-core/xpath/misc.js +0 -252
  366. data/test/selenium-core/xpath/xpath.js +0 -2223
  367. data/test/selenium/_login_as_cmsadmin.rsel +0 -4
  368. data/test/selenium/dashboard.rsel +0 -5
  369. data/test/selenium/html_blocks.rsel +0 -4
  370. data/test/selenium/login/failed_login.rsel +0 -8
  371. data/test/selenium/login/successful_login.rsel +0 -9
  372. data/test/selenium/page_templates.rsel +0 -12
  373. data/test/selenium/pages/edit_properties.rsel +0 -5
  374. data/test/selenium/site/view_home_page.rsel +0 -4
  375. data/test/selenium/sitemap/move_page.rsel +0 -9
  376. data/test/selenium/sitemap/open_section.rsel +0 -6
  377. data/test/selenium/sitemap/select_page.rsel +0 -12
  378. data/test/selenium/sitemap/select_section.rsel +0 -17
  379. data/test/test_helper.rb +0 -193
  380. data/test/test_logging.rb +0 -67
  381. data/test/unit/behaviors/attaching_test.rb +0 -357
  382. data/test/unit/behaviors/connectable_test.rb +0 -29
  383. data/test/unit/behaviors/dynamic_attributes_test.rb +0 -38
  384. data/test/unit/behaviors/publishable_test.rb +0 -84
  385. data/test/unit/behaviors/searching_test.rb +0 -102
  386. data/test/unit/behaviors/taggable_test.rb +0 -109
  387. data/test/unit/behaviors/versioning_test.rb +0 -36
  388. data/test/unit/extensions/active_record/base_test.rb +0 -10
  389. data/test/unit/extensions/hash_test.rb +0 -17
  390. data/test/unit/extensions/integer_test.rb +0 -10
  391. data/test/unit/helpers/application_helper_test.rb +0 -77
  392. data/test/unit/helpers/form_builder_test.rb +0 -36
  393. data/test/unit/helpers/menu_helper_test.rb +0 -242
  394. data/test/unit/helpers/page_helper_test.rb +0 -67
  395. data/test/unit/helpers/path_helper_test.rb +0 -57
  396. data/test/unit/lib/acts_as_content_page_test.rb +0 -72
  397. data/test/unit/lib/cms/authentication/controller_test.rb +0 -20
  398. data/test/unit/lib/cms/sitemap_test.rb +0 -206
  399. data/test/unit/lib/cms_domain_support_test.rb +0 -43
  400. data/test/unit/lib/command_line_test.rb +0 -70
  401. data/test/unit/lib/content_block_test.rb +0 -203
  402. data/test/unit/lib/content_rendering_support_test.rb +0 -40
  403. data/test/unit/lib/generators_test.rb +0 -40
  404. data/test/unit/lib/routes_test.rb +0 -57
  405. data/test/unit/models/attachment_test.rb +0 -116
  406. data/test/unit/models/category_test.rb +0 -40
  407. data/test/unit/models/category_type_test.rb +0 -8
  408. data/test/unit/models/connector_test.rb +0 -152
  409. data/test/unit/models/content_type_test.rb +0 -56
  410. data/test/unit/models/email_page_portlet_test.rb +0 -14
  411. data/test/unit/models/file_block_test.rb +0 -230
  412. data/test/unit/models/group_test.rb +0 -13
  413. data/test/unit/models/html_block_test.rb +0 -102
  414. data/test/unit/models/link_test.rb +0 -52
  415. data/test/unit/models/page_partial_test.rb +0 -29
  416. data/test/unit/models/page_route_test.rb +0 -29
  417. data/test/unit/models/page_template_test.rb +0 -40
  418. data/test/unit/models/page_test.rb +0 -792
  419. data/test/unit/models/permission_test.rb +0 -10
  420. data/test/unit/models/portlet_test.rb +0 -69
  421. data/test/unit/models/sections_test.rb +0 -264
  422. data/test/unit/models/site_test.rb +0 -50
  423. data/test/unit/models/task_test.rb +0 -141
  424. data/test/unit/models/user_test.rb +0 -352
  425. data/test/unit/schema_statements_test.rb +0 -41
@@ -2,7 +2,7 @@ Description:
2
2
  Generates a basic page template in the project.
3
3
 
4
4
  Example:
5
- `./script/generate template subpage`
5
+ `rails generate template subpage`
6
6
 
7
7
  A page template in html format using erb.
8
8
  Template: app/views/layouts/templates/subpage.html.erb
@@ -0,0 +1,18 @@
1
+ module Cms
2
+ module Generators
3
+ class TemplateGenerator < Rails::Generators::NamedBase
4
+
5
+ source_root File.expand_path('../templates', __FILE__)
6
+
7
+ def create_template
8
+ template 'template.erb', File.join('app/views/layouts/templates', "#{template_name}.html.erb")
9
+ end
10
+
11
+ private
12
+
13
+ def template_name
14
+ file_name
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,2 @@
1
+ <% require 'templates' -%>
2
+ <%= Templates.default_body %>
@@ -0,0 +1,3 @@
1
+ This directory is used both by
2
+ 1. The bcms-upgrade script for upgrading a BrowserCMS module.
3
+ 2. For generating a new BrowserCMS module.
@@ -0,0 +1,56 @@
1
+ class Browsercms330 < ActiveRecord::Migration
2
+ def self.up
3
+
4
+ # patch required for LH345
5
+ cant_fix = []
6
+ to_fix = []
7
+ # find all pages whose path ends in slash and is not root
8
+ Page.find(:all, :conditions => "path LIKE '/%/'").each do |pt_page|
9
+ # make sure no extant page has this path
10
+ if Page.count(:conditions => ["path = ?", pt_page.path.sub(/(.+)\/+$/, '\1')]) > 0
11
+ cant_fix << pt_page
12
+ else
13
+ to_fix << pt_page
14
+ end
15
+ end
16
+ version_cant_fix = []
17
+ version_to_fix = []
18
+ # find all page versions whose path ends in slash and is not root
19
+ Page::Version.find(:all, :conditions => "path LIKE '/%/'").each do |pt_page|
20
+ # make sure no extant page has this path
21
+ if Page.count(:conditions => ["path = ?", pt_page.path.sub(/(.+)\/+$/, '\1')]) > 0
22
+ version_cant_fix << pt_page
23
+ else
24
+ version_to_fix << pt_page
25
+ end
26
+ end
27
+
28
+ # raise an error if there are pages (*not* page versions) that will duplicate an extant path if the ending slash is dropped
29
+ if cant_fix.length > 0
30
+ raise "Cannot remove trailing slashes from pages with ID(s) (#{cant_fix.map(&:id).join(', ')}). Other pages already exist with their correct path. The offending path may be in an unpublished page version, newer than the current public version. These needed to be corrected manually in your DBMS before running this migration"
31
+ end
32
+
33
+ to_fix.each do |fix_page|
34
+ # change the path of all pages with a trailing slash to not have one
35
+ # using sql updates to prevent unwanted callbacks
36
+ new_path = fix_page.path.to_s.sub(/(.+)\/+$/, '\1')
37
+ execute "UPDATE pages SET path = '#{new_path}' WHERE id = #{fix_page.id};"
38
+ end
39
+ version_to_fix.each do |fix_page|
40
+ # change the path of all fixable page versions with a trailing slash to not have one
41
+ # using sql updates to prevent unwanted callbacks
42
+ new_path = fix_page.path.to_s.sub(/(.+)\/+$/, '\1')
43
+ execute "UPDATE page_versions SET path = '#{new_path}' WHERE id = #{fix_page.id};"
44
+ end
45
+ # end patch for LH345
46
+ end
47
+
48
+ def self.down
49
+
50
+ # Cannot restore paths with trailing slash - raise error or show message
51
+ #
52
+ # raise IrreversibleMigration, "Cannot reverse migration which removes trailing slash from page paths"
53
+ puts "Page paths which had trailing slashes removed cannot be restored to their original state."
54
+
55
+ end
56
+ end
@@ -0,0 +1 @@
1
+ Use this directory to add public files that should be packaged in the gem.
@@ -0,0 +1,10 @@
1
+ Description:
2
+ Installs the <%= name_of_module %> module.
3
+
4
+ Example:
5
+ rails generate <%= name_of_module %>:install
6
+
7
+ This will:
8
+ 1. Copy any migrations from the gem into the project.
9
+ 2. Add the routes to the config/routes.rb
10
+
@@ -0,0 +1,5 @@
1
+ # Add any tasks from your Rake file here (if you were using, say, Jeweler to build gems)
2
+
3
+ # Otherwise, this enabled Bundler to build your gem
4
+ require 'bundler'
5
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,7 @@
1
+ require 'browsercms'
2
+
3
+ module <%= gem_name %>
4
+ class Engine < Rails::Engine
5
+ include Cms::Module
6
+ end
7
+ end
@@ -0,0 +1,25 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = "<%= name_of_module %>"
3
+ spec.rubyforge_project = spec.name
4
+ spec.version = "1.0.0"
5
+ spec.summary = "A <%= name_of_module.titleize %> Module for BrowserCMS"
6
+ spec.author = "BrowserMedia"
7
+ spec.email = "github@browsermedia.com"
8
+ spec.homepage = "http://www.github.com/browsermedia/<%= name_of_module %>"
9
+ spec.files += Dir["app/**/*"]
10
+ spec.files -= Dir["app/views/layouts/templates/default.html.erb"]
11
+ spec.files += Dir["db/migrate/*.rb"]
12
+ spec.files -= Dir["db/migrate/*_browsercms_*.rb"]
13
+ spec.files += Dir["lib/**/*"]
14
+ spec.files -= Dir["lib/tasks/build_gem.rake"]
15
+ spec.files += Dir["public/bcms/<%= short_project_name %>/**/*"]
16
+ spec.files += Dir["LICENSE.txt"]
17
+ spec.files += Dir["GPL.txt"]
18
+ spec.files += Dir["Gemfile"]
19
+ spec.files += Dir["Copyright.txt"]
20
+ spec.has_rdoc = true
21
+ spec.extra_rdoc_files = ["README"]
22
+
23
+ spec.add_dependency('browsercms', "<%= cms_version%>")
24
+
25
+ end
@@ -0,0 +1,11 @@
1
+ coverage/**/*
2
+ .DS_Store
3
+ log/*.log
4
+ tmp/**/*
5
+ db/*.sqlite3
6
+ db/schema.rb
7
+ *.gem
8
+ .dotest
9
+ tmp/restart.txt
10
+ public/cache
11
+ Gemfile.lock
@@ -0,0 +1,9 @@
1
+ require 'cms/module_installation'
2
+
3
+ class <%= gem_name %>::InstallGenerator < Cms::ModuleInstallation
4
+ add_migrations_directory_to_source_root __FILE__
5
+
6
+ # Add migrations to be copied, by uncommenting the following file and editing as needed.
7
+ # copy_migration_file 'DATESTAMP_create_name_of_content_block.rb'
8
+
9
+ end
@@ -0,0 +1,3 @@
1
+ require '<%= name_of_module %>/engine'
2
+ require '<%= name_of_module %>/routes'
3
+
@@ -0,0 +1,7 @@
1
+ module Cms::Routes
2
+ def routes_for_<%= name_of_module %>
3
+ namespace(:cms) do
4
+ #content_blocks :<%= name_of_module.pluralize %>
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,61 @@
1
+ module Cms
2
+ module Generators
3
+
4
+
5
+ class UpgradeModuleGenerator < Rails::Generators::NamedBase
6
+
7
+ source_root File.expand_path('../templates', __FILE__)
8
+
9
+ def alter_gemfile
10
+ append_to_file 'Gemfile', "gemspec"
11
+ end
12
+
13
+ # Needs to be more specific than the core BrowserCMS .gitigore
14
+ # Assumed to be run 'after' browser_cms:cms
15
+ def generate_gitignore
16
+ remove_file '.gitignore'
17
+ template 'gitignore.erb', '.gitignore'
18
+ end
19
+
20
+ def generate_module_files
21
+ copy_file 'README', "public/bcms/#{name_of_module}/README"
22
+
23
+ copy_file 'build_gem.rake', 'lib/tasks/build_gem.rake'
24
+ template 'engine.erb', "lib/#{name_of_module}/engine.rb"
25
+ template 'module_file.erb', "lib/#{name_of_module}.rb"
26
+ template 'gemspec.erb', "#{name_of_module}.gemspec"
27
+
28
+ template 'routes.erb', "lib/#{name_of_module}/routes.rb"
29
+ route "routes_for_#{name_of_module}"
30
+ template 'install.erb', "lib/generators/#{name_of_module}/install/install_generator.rb"
31
+ template 'USAGE.erb', "lib/generators/#{name_of_module}/install/USAGE"
32
+ end
33
+
34
+ # BrowserCMS new generator should probably handle this
35
+ def generate_default_template
36
+ generate 'cms:template', 'default'
37
+ end
38
+
39
+ private
40
+
41
+ # i.e. bcms_something
42
+ def name_of_module
43
+ name
44
+ end
45
+
46
+ # ie. BcmsSomething
47
+ def gem_name
48
+ name_of_module.camelize
49
+ end
50
+
51
+ # i.e. Something
52
+ def short_project_name
53
+ File.basename(name_of_module).match(/bcms_(.+)/)[1]
54
+ end
55
+
56
+ def cms_version
57
+ Cms::VERSION
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1 @@
1
+ # Add any tasks from your Rake file here.
data/lib/tasks/cms.rake CHANGED
@@ -1,14 +1,29 @@
1
1
  namespace :test do
2
- Rake::TestTask.new(:all => "db:test:prepare") do |t|
3
- t.libs << "test"
4
- t.pattern = 'test/**/*_test.rb'
5
- t.verbose = true
2
+
3
+ desc 'Runs all Tests (Test::Unit) and Features (cucumber)'
4
+ task :all => ["test", "cucumber"]
5
+
6
+ # Could be improved somewhat to get rid of unneeded warnings.
7
+ desc "run tests against sqlite database"
8
+ task :sqlite3 do
9
+ cp(File.join('config', 'database.sqlite3.yml'), File.join('config', 'database.yml'), :verbose => true)
10
+ Rake::Task['db:drop'].invoke
11
+ Rake::Task['db:create'].invoke
12
+ system "rake db:migrate test"
13
+ end
14
+
15
+ # Could be improved somewhat to get rid of unneeded warnings.
16
+ desc "run tests against mysql database"
17
+ task :mysql do
18
+ cp(File.join('config', 'database.mysql.yml'), File.join('config', 'database.yml'), :verbose => true)
19
+ Rake::Task['db:drop'].invoke
20
+ Rake::Task['db:create'].invoke
21
+ system "rake db:migrate test"
6
22
  end
7
- Rake::Task['test:all'].comment = "Run all tests at once"
8
23
  end
9
24
 
10
25
  # When Jeweler builds the gem, make sure the guides are also rebuilt.
11
- task :build => ['cms:guides']
26
+ #task :build => ['cms:guides']
12
27
 
13
28
  namespace :cms do
14
29
 
@@ -38,4 +53,17 @@ namespace :cms do
38
53
  CmsGuides::Generator.new.generate
39
54
 
40
55
  end
56
+
57
+ desc "Rebuild the browsercms gem locally and install it, Useful for testing releases."
58
+ task :gem => ["browsercms.gemspec", :build, :install]
59
+
60
+ task :install do
61
+ puts "installing..."
62
+ if RUBY_PLATFORM =~ /mswin32/
63
+ system("cmd /c gem install pkg/browsercms-3.1.0")
64
+ else
65
+ sh("sudo gem install pkg/browsercms-3.1.0")
66
+ end
67
+ end
41
68
  end
69
+
@@ -0,0 +1,53 @@
1
+ # IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
2
+ # It is recommended to regenerate this file in the future when you upgrade to a
3
+ # newer version of cucumber-rails. Consider adding your own code to a new file
4
+ # instead of editing this one. Cucumber will automatically load all features/**/*.rb
5
+ # files.
6
+
7
+
8
+ unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:* tasks
9
+
10
+ vendored_cucumber_bin = Dir["#{Rails.root}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
11
+ $LOAD_PATH.unshift(File.dirname(vendored_cucumber_bin) + '/../lib') unless vendored_cucumber_bin.nil?
12
+
13
+ begin
14
+ require 'cucumber/rake/task'
15
+
16
+ namespace :cucumber do
17
+ Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t|
18
+ t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
19
+ t.fork = true # You may get faster startup if you set this to false
20
+ t.profile = 'default'
21
+ end
22
+
23
+ Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t|
24
+ t.binary = vendored_cucumber_bin
25
+ t.fork = true # You may get faster startup if you set this to false
26
+ t.profile = 'wip'
27
+ end
28
+
29
+ Cucumber::Rake::Task.new({:rerun => 'db:test:prepare'}, 'Record failing features and run only them if any exist') do |t|
30
+ t.binary = vendored_cucumber_bin
31
+ t.fork = true # You may get faster startup if you set this to false
32
+ t.profile = 'rerun'
33
+ end
34
+
35
+ desc 'Run all features'
36
+ task :all => [:ok, :wip]
37
+ end
38
+ desc 'Alias for cucumber:ok'
39
+ task :cucumber => 'cucumber:ok'
40
+
41
+ task :default => :cucumber
42
+
43
+ task :features => :cucumber do
44
+ STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
45
+ end
46
+ rescue LoadError
47
+ desc 'cucumber rake task not available (cucumber not installed)'
48
+ task :cucumber do
49
+ abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
50
+ end
51
+ end
52
+
53
+ end
data/lib/tasks/db.rake CHANGED
@@ -9,7 +9,7 @@ namespace :db do
9
9
  desc 'Dumps all models into fixtures.'
10
10
  task :dump => :environment do
11
11
  models = []
12
- Find.find(RAILS_ROOT + '/app/models') do |path|
12
+ Find.find(Rails.root + '/app/models') do |path|
13
13
  unless File.directory?(path) then models << path.match(/(\w+).rb/)[1] end
14
14
  end
15
15
 
@@ -53,7 +53,7 @@ namespace :db do
53
53
  formatted += "\n"
54
54
  end
55
55
 
56
- model_file = RAILS_ROOT + '/test/fixtures/' + model.table_name + '.yml'
56
+ model_file = Rails.root + '/test/fixtures/' + model.table_name + '.yml'
57
57
 
58
58
  # Final munging of file
59
59
  formatted = "# auto-generated by rake db:fixtures:dump, DO NOT EDIT BY HAND!\n#{formatted}"
@@ -1,148 +1,157 @@
1
- //CMS related functions
1
+ //
2
+ // Defines BrowserCMS functions used throughout the application.
3
+ //
4
+ //
2
5
  jQuery(function($) {
3
-
4
- //It would be cool if these were added to the real jQuery
6
+
7
+ //It would be cool if these were added to the real jQuery
5
8
  //You can call this a few ways:
6
9
  //createElement('p') => "<p/>"
7
10
  //createElement('p','hi') => "<p>hi</p>"
8
11
  //createElement('p', {align: 'center'}) => "<p align="center"/>"
9
12
  //createElement('p','hi',{align: 'center'}) => "<p align="center">hi</p>"
10
13
  $.createElement = function(tag_name, tag_value, tag_attrs) {
11
- var name = tag_name
12
- if(typeof tag_value == "object") {
13
- var value = null
14
- var attrs = tag_value
15
- } else {
16
- var value = tag_value
17
- var attrs = tag_attrs
18
- }
19
- var element = $(document.createElement(tag_name))
20
- if(attrs) {
21
- $.each(attrs, function(k,v) {
22
- element.attr(k,v)
23
- })
24
- }
25
- if(value) {
26
- element.html(value)
27
- }
28
- return element
14
+ var name = tag_name
15
+ if (typeof tag_value == "object") {
16
+ var value = null
17
+ var attrs = tag_value
18
+ } else {
19
+ var value = tag_value
20
+ var attrs = tag_attrs
21
+ }
22
+ var element = $(document.createElement(tag_name))
23
+ if (attrs) {
24
+ $.each(attrs, function(k, v) {
25
+ element.attr(k, v)
26
+ })
27
+ }
28
+ if (value) {
29
+ element.html(value)
30
+ }
31
+ return element
29
32
  }
30
-
31
- var sanitizationRegexes = [[/\s/, "_"], [/[&+()]/, "-"], [/[=?!'"{}\[\]#<>%]/, ""]]
32
-
33
- $.cms = {
34
- sanitizeFileName: function(s) {
35
- var split = s.split(/\/|\\/)
36
- s = split[split.length-1]
37
- $.each(sanitizationRegexes, function(i,e){
38
- var r = new RegExp(e[0].source, 'g')
39
- s = s.replace(r, e[1])
40
- })
41
- return s;
42
- },
43
- slug: function(s) {
44
- return $.trim(s.toLowerCase().replace(/\W+/g, ' ')).replace(/\ +/g, '-')
45
- },
46
- showNotice: function(msg) {
47
- $('#message').removeClass('error').addClass('notice').html(msg).parent().show().animate({opacity: 1.0}, 3000).fadeOut("normal")
48
- },
49
- showError: function(msg) {
50
- $('#message').removeClass('notice').addClass('error').html(msg).parent().show().animate({opacity: 1.0}, 3000).fadeOut("normal")
51
- },
52
- attachEventHandlers: function(context) {
53
- $('a.button', context).click(function(){if($(this).hasClass('disabled')) return false;});
54
- $('a.http_post, a.http_put, a.http_delete', context).click(function() {
55
- if($(this).hasClass('disabled')) return false;
56
- if($(this).hasClass('confirm_with_title') ? confirm(this.title) : true) {
57
-
58
- // Create the form
59
- var f = document.createElement('form')
60
- f.style.display = 'none'
61
- this.parentNode.appendChild(f)
62
- f.method = "POST"
63
- f.action = this.href
64
- $(f).attr('target', $(this).attr('target'))
65
-
66
- //Create the _method hidden input
67
- var m = document.createElement('input')
68
- var http_method = $(this).attr('class').match(/http_([^ ]*)/)[1]
69
- $(m).attr('type', 'hidden').attr('name', '_method').attr('value', http_method)
70
- f.appendChild(m)
71
-
72
- //Create the authenticity_token hidden input
73
- if($.cms.authenticity_token && $.cms.authenticity_token != '') {
74
- var m = document.createElement('input')
75
- $(m).attr('type', 'hidden').attr('name', 'authenticity_token').attr('value', $.cms.authenticity_token)
76
- f.appendChild(m)
77
- }
78
-
79
- f.submit()
33
+
34
+
35
+ var sanitizationRegexes = [
36
+ [/\s/, "_"],
37
+ [/[&+()]/, "-"],
38
+ [/[=?!'"{}\[\]#<>%]/, ""]
39
+ ]
40
+
41
+ $.cms = {
42
+ sanitizeFileName: function(s) {
43
+ var split = s.split(/\/|\\/)
44
+ s = split[split.length - 1]
45
+ $.each(sanitizationRegexes, function(i, e) {
46
+ var r = new RegExp(e[0].source, 'g')
47
+ s = s.replace(r, e[1])
48
+ })
49
+ return s;
50
+ },
51
+ slug: function(s) {
52
+ return $.trim(s.toLowerCase().replace(/[^a-zA-Z0-9_\s]+/g, '')).replace(/\ +/g, '-')
53
+ },
54
+ showNotice: function(msg) {
55
+ $('#message').removeClass('error').addClass('notice').html(msg).parent().show().animate({opacity: 1.0}, 3000).fadeOut("normal")
56
+ },
57
+ showError: function(msg) {
58
+ $('#message').removeClass('notice').addClass('error').html(msg).parent().show().animate({opacity: 1.0}, 3000).fadeOut("normal")
59
+ },
60
+ attachEventHandlers: function(context) {
61
+ $('a.button', context).click(function() {
62
+ if ($(this).hasClass('disabled')) return false;
63
+ });
64
+ $('a.http_post, a.http_put, a.http_delete', context).click(function() {
65
+ if ($(this).hasClass('disabled')) return false;
66
+ if ($(this).hasClass('confirm_with_title') ? confirm(this.title) : true) {
67
+
68
+ // Create the form
69
+ var f = document.createElement('form')
70
+ f.style.display = 'none'
71
+ this.parentNode.appendChild(f)
72
+ f.method = "POST"
73
+ f.action = this.href
74
+ $(f).attr('target', $(this).attr('target'))
75
+
76
+ //Create the _method hidden input
77
+ var m = document.createElement('input')
78
+ var http_method = $(this).attr('class').match(/http_([^ ]*)/)[1]
79
+ $(m).attr('type', 'hidden').attr('name', '_method').attr('value', http_method)
80
+ f.appendChild(m)
81
+
82
+ //Create the authenticity_token hidden input
83
+ if ($.cms.authenticity_token && $.cms.authenticity_token != '') {
84
+ var m = document.createElement('input')
85
+ $(m).attr('type', 'hidden').attr('name', 'authenticity_token').attr('value', $.cms.authenticity_token)
86
+ f.appendChild(m)
87
+ }
88
+
89
+ f.submit()
90
+ }
91
+ return false
92
+ })
80
93
  }
81
- return false
82
- })
83
94
  }
84
- }
85
-
86
- $.cms.attachEventHandlers(document);
87
-
88
- $('#message.notice').parent().show().animate({opacity: 1.0}, 3000).fadeOut("normal")
89
- $('#message.error').parent().show().animate({opacity: 1.0}, 3000).fadeOut("normal")
90
-
91
- })
95
+
96
+ $.cms.attachEventHandlers(document);
97
+
98
+ $('#message.notice').parent().show().animate({opacity: 1.0}, 3000).fadeOut("normal")
99
+ $('#message.error').parent().show().animate({opacity: 1.0}, 3000).fadeOut("normal")
100
+
101
+ });
92
102
 
93
103
  //CookieSet allows us to treat one cookie value as a set of values
94
104
  jQuery(function($) {
95
-
96
- var sep = '|'
97
-
98
- $.cookieSet = {
99
- //Treats the cookie as an array
100
- add: function(name, value, options) {
101
- this.remove(name, value, options)
102
- var set = this.get(name)
103
- if(set) {
104
- set.push(value)
105
- } else {
106
- var set = [value]
107
- }
108
- $.cookie(name, set.join(sep), options)
109
- return this.get(name)
110
- },
111
-
112
- get: function(name) {
113
- var val = $.cookie(name)
114
- if(val) {
115
- return val.split(sep)
116
- } else {
117
- return null
118
- }
119
- },
120
-
121
- remove: function(name, value, options) {
122
- var set = this.get(name)
123
- if(set) {
124
- var arr = []
125
- $.each(set, function() {
126
- if(this != value+'') {
127
- arr.push(this)
128
- }
129
- })
130
- $.cookie(name, arr.join(sep), options)
131
- return this.get(name)
132
- } else {
133
- return null
134
- }
135
- },
136
-
137
- //Treats the cookie as an array
138
- contains: function(name, value) {
139
- var set = this.get(name)
140
- if(set) {
141
- return $.inArray(value+'', set) > -1
142
- } else {
143
- return false
144
- }
145
- }
146
- }
147
-
148
- })
105
+ var sep = '|'
106
+
107
+ $.cookieSet = {
108
+ //Treats the cookie as an array
109
+ add: function(name, value, options) {
110
+ this.remove(name, value, options)
111
+ var set = this.get(name)
112
+ if (set) {
113
+ set.push(value)
114
+ } else {
115
+ var set = [value]
116
+ }
117
+ $.cookie(name, set.join(sep), options)
118
+ return this.get(name)
119
+ },
120
+
121
+ get: function(name) {
122
+ var val = $.cookie(name)
123
+ if (val) {
124
+ return val.split(sep)
125
+ } else {
126
+ return null
127
+ }
128
+ },
129
+
130
+ remove: function(name, value, options) {
131
+ var set = this.get(name)
132
+ if (set) {
133
+ var arr = []
134
+ $.each(set, function() {
135
+ if (this != value + '') {
136
+ arr.push(this)
137
+ }
138
+ })
139
+ $.cookie(name, arr.join(sep), options)
140
+ return this.get(name)
141
+ } else {
142
+ return null
143
+ }
144
+ },
145
+
146
+ //Treats the cookie as an array
147
+ contains: function(name, value) {
148
+ var set = this.get(name)
149
+ if (set) {
150
+ return $.inArray(value + '', set) > -1
151
+ } else {
152
+ return false
153
+ }
154
+ }
155
+ }
156
+
157
+ });