browsercms 3.1.5 → 3.3.0.beta

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 (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
@@ -1,27 +0,0 @@
1
- module Cms
2
- module ContentBlockHelper
3
-
4
-
5
- # Prints the <tr> for each block. Adds classes based on:
6
- # * Name/id of the block
7
- # * If a block is published/draft
8
- # * If the user can edit/publish it
9
- def block_row_tag(block)
10
- cname = class_name_for(block)
11
- can_modify = current_user.able_to_modify?(block)
12
-
13
- options = {
14
- :id => "#{cname}_#{block.id}",
15
- :class => cname
16
- }
17
- options[:class] += block.class.publishable? && !block.published? ? ' draft' : ' published'
18
- options[:class] += ' non-editable' unless can_modify && current_user.able_to?(:edit_content)
19
- options[:class] += ' non-publishable' unless can_modify && current_user.able_to?(:publish_content)
20
- tag "tr", options, true
21
- end
22
-
23
- def class_name_for(block)
24
- block.class.name.underscore
25
- end
26
- end
27
- end
@@ -1,24 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
5
- <title><%= @page_title %></title>
6
- <%= stylesheet_link_tag 'cms/date_picker', 'cms/thickbox' %>
7
- <%= javascript_include_tag 'jquery', 'jquery-ui', 'jquery.cookie.js', 'jquery.selectbox-0.5.js', 'jquery.thickbox.js' %>
8
- <%= javascript_include_tag Cms.wysiwig_js %>
9
- <%= javascript_include_tag 'cms/application' %>
10
- <script type="text/javascript">
11
- jQuery(function($){
12
- <% if protect_against_forgery? %>
13
- $.cms.authenticity_token = '<%= form_authenticity_token %>'
14
- <% end %>
15
- $('input.date_picker').datepicker()
16
- })
17
- </script>
18
- <%= yield :html_head %>
19
- </head>
20
- <body>
21
- <div align="right"><a href="#" onclick="self.parent.tb_remove();">X</a></div>
22
- <%= yield %>
23
- </body>
24
- </html>
@@ -1,94 +0,0 @@
1
- class Browsercms315 < ActiveRecord::Migration
2
- def self.up
3
- generate_ancestry_from_section_id
4
- update_latest_version_cache
5
-
6
- INDEXES.each do |index|
7
- add_index *index
8
- end
9
- end
10
-
11
- def self.down
12
- # This migration is not reversible since it removes the original section_id column.
13
- end
14
-
15
- # Add some very commonly used indexes to improve the site performance as the # of pages/content grows (i.e. several thousand pages)
16
- INDEXES = [
17
- [:pages, :deleted],
18
- [:pages, :path],
19
- [:pages, :version],
20
- [:page_versions, :page_id],
21
- [:groups, :code],
22
- [:groups, :group_type_id],
23
- [:group_types, :cms_access],
24
- [:group_sections, :section_id],
25
- [:group_sections, :group_id],
26
- [:users, :expires_at],
27
- [:user_group_memberships, :group_id],
28
- [:user_group_memberships, :user_id],
29
- [:group_permissions, :group_id],
30
- [:group_permissions, :permission_id],
31
- [:group_permissions, [:group_id, :permission_id]],
32
- [:section_nodes, :node_type],
33
- [:section_nodes, :ancestry],
34
- [:connectors, :page_id],
35
- [:connectors, :page_version],
36
- [:html_blocks, :deleted],
37
- [:html_block_versions, :html_block_id],
38
- [:html_block_versions, :version],
39
- [:portlet_attributes, :portlet_id],
40
- [:portlets, :name],
41
- [:sections, :path],
42
- [:redirects, :from_path],
43
- [:connectors, :connectable_version],
44
- [:connectors, :connectable_type],
45
- [:content_types, :content_type_group_id],
46
- [:content_types, :name],
47
- [:file_block_versions, :file_block_id],
48
- [:file_block_versions, :version],
49
- [:file_blocks, :deleted],
50
- [:file_blocks, :type],
51
- [:attachment_versions, :attachment_id],
52
- [:tasks, :page_id],
53
- [:tasks, :completed_at],
54
- [:tasks, :assigned_to_id],
55
- ]
56
-
57
- private
58
-
59
- # v3.1.5 uses Ancestry to manage the parent child relationship between sections and their children.
60
- # This converts the data from the old section_id to use the ancestry column.
61
- def self.generate_ancestry_from_section_id
62
- add_column :section_nodes, :ancestry, :string
63
- add_column :section_nodes, :temp_parent_id, :integer
64
-
65
- SectionNode.reset_column_information
66
- root_section = Section.root.first
67
- SectionNode.create!(:node => root_section) if root_section
68
-
69
- all_nodes_but_root = SectionNode.find(:all, :conditions=>["section_id IS NOT NULL"])
70
- all_nodes_but_root.each do |sn|
71
- parent_node = SectionNode.find(:first, :conditions => ["node_id = ? and node_type = 'Section'", sn.section_id])
72
- sn.temp_parent_id = parent_node.id
73
- sn.save!
74
- end
75
- rename_column :section_nodes, :temp_parent_id, :parent_id # Ancestry works off the 'parent_id' column.
76
-
77
- SectionNode.build_ancestry_from_parent_ids!
78
- remove_column :section_nodes, :section_id
79
- remove_column :section_nodes, :parent_id
80
- SectionNode.reset_column_information
81
- end
82
-
83
- # Adds a 'latest_version' pointer to pages and links. Greatly reduces the number of queries the sitemap requires to determine if pages are in draft/published mode
84
- def self.update_latest_version_cache
85
- add_column :pages, :latest_version, :integer
86
- add_column :links, :latest_version, :integer
87
- Page.all.each do |p|
88
- p.update_latest_version
89
- end
90
- Link.all.each do |link|
91
- link.update_latest_version
92
- end
93
- end
94
- end
@@ -1,70 +0,0 @@
1
- # This is a new seed data file (new timestamp and name) so migrations will work in order.
2
- # It should be able to peacefully coexist next to the previous load_seed_data
3
- class LoadSeeds < ActiveRecord::Migration
4
- extend Cms::DataLoader
5
- def self.up
6
- if User.count > 0
7
- puts "Database has already been seeded. So skip reloading."
8
- return
9
- end
10
-
11
- if %w[development test dev local].include?(Rails.env)
12
- pwd = "cmsadmin"
13
- else
14
- pwd = (0..8).inject(""){|s,i| s << (('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a).rand}
15
- end
16
- User.current = create_user(:cmsadmin, :login => "cmsadmin", :first_name => "CMS", :last_name => "Administrator", :email => "cmsadmin@example.com", :password => pwd, :password_confirmation => pwd)
17
-
18
- create_permission(:administrate, :name => "administrate", :full_name => "Administer CMS" , :description => "Allows users to administer the CMS, including adding users and groups.")
19
- create_permission(:edit_content, :name => "edit_content", :full_name => "Edit Content" , :description => "Allows users to Add, Edit and Delete both Pages and Blocks. Can Save (but not Publish) and Assign them as well.")
20
- create_permission(:publish_content, :name => "publish_content", :full_name => "Publish Content" , :description => "Allows users to Save and Publish, Hide and Archive both Pages and Blocks.")
21
-
22
- create_group_type(:guest_group_type, :name => "Guest", :guest => true)
23
- create_group_type(:registered_public_user, :name => "Registered Public User")
24
- create_group_type(:cms_user, :name => "CMS User", :cms_access => true)
25
- group_types(:cms_user).permissions<<permissions(:edit_content)
26
- group_types(:cms_user).permissions<<permissions(:publish_content)
27
-
28
- create_group(:guest, :name => 'Guest', :code => 'guest', :group_type => group_types(:guest_group_type))
29
- create_group(:content_admin, :name => 'Cms Administrators', :code => 'cms-admin', :group_type => group_types(:cms_user))
30
- create_group(:content_editor, :name => 'Content Editors', :code => 'content-editor', :group_type => group_types(:cms_user))
31
- users(:cmsadmin).groups << groups(:content_admin)
32
- users(:cmsadmin).groups << groups(:content_editor)
33
-
34
- groups(:content_admin).permissions<<permissions(:administrate)
35
- groups(:content_editor).permissions<<permissions(:edit_content)
36
- groups(:content_editor).permissions<<permissions(:publish_content)
37
-
38
- create_site(:default, :name => "Default", :domain => "example.com")
39
- create_section(:root, :name => "My Site", :path => "/", :root => true)
40
- create_section(:system, :name => "system", :parent => sections(:root), :path => "/system", :hidden => true)
41
-
42
- Group.all.each{|g| g.sections = Section.all }
43
-
44
- create_page(:home, :name => "Home", :path => "/", :section => sections(:root), :template_file_name => "default.html.erb", :cacheable => true)
45
- create_page(:not_found, :name => "Page Not Found", :path => "/system/not_found", :section => sections(:system), :template_file_name => "default.html.erb", :publish_on_save => true, :hidden => true, :cacheable => true)
46
- create_page(:access_denied, :name => "Access Denied", :path => "/system/access_denied", :section => sections(:system), :template_file_name => "default.html.erb", :publish_on_save => true, :hidden => true, :cacheable => true)
47
- create_page(:server_error, :name => "Server Error", :path => "/system/server_error", :section => sections(:system), :template_file_name => "default.html.erb", :publish_on_save => true, :hidden => true, :cacheable => true)
48
-
49
- create_html_block(:page_not_found, :name => "Page Not Found", :content => "<p>The page you tried to access does not exist on this server.</p>", :publish_on_save => true)
50
- pages(:not_found).create_connector(html_blocks(:page_not_found), "main")
51
- pages(:not_found).publish!
52
-
53
- create_html_block(:access_denied, :name => "Access Denied", :content => "<p>You have tried to reach a resource or page which you do not have permission to view.</p>", :publish_on_save => true)
54
- pages(:access_denied).create_connector(html_blocks(:access_denied), "main")
55
- pages(:access_denied).publish!
56
-
57
- create_html_block(:server_error, :name => "Server Error", :content => "<p>The server encountered an unexpected condition that prevented it from fulfilling the request.</p>", :publish_on_save => true)
58
- pages(:server_error).create_connector(html_blocks(:server_error), "main")
59
- pages(:server_error).publish!
60
- pages(:home).publish!
61
-
62
- puts "*************************************************"
63
- puts "* YOUR CMS username/password is: cmsadmin/#{pwd}"
64
- puts "*************************************************"
65
-
66
- end
67
-
68
- def self.down
69
- end
70
- end
@@ -1,83 +0,0 @@
1
- # Represents any object which exists in a Sitemap.
2
- #
3
- # Can have parents (using SectionNodes) and children.
4
- module Addressable
5
-
6
- # Returns a list of all Addressable objects that are ancestors to this record.
7
- # @param [Hash] options
8
- # @option [Symbol] :include_self If this object should be included in the Array
9
- # @return [Array<Addressable]
10
- #
11
- def ancestors(options={})
12
- ancestor_nodes = node.ancestors
13
- ancestors = ancestor_nodes.collect { |node| node.node }
14
- ancestors << self if options[:include_self]
15
- ancestors
16
- end
17
-
18
- def parent
19
- @parent if @parent
20
- node ? node.section : nil
21
- end
22
-
23
- def cache_parent(section)
24
- @parent = section
25
- end
26
-
27
- def parent=(sec)
28
- if node
29
- node.move_to_end(sec)
30
- else
31
- build_section_node(:node => self, :section => sec)
32
- end
33
- end
34
-
35
- # Computes the name of the partial used to render this object in the sitemap.
36
- def partial_for
37
- self.class.name.underscore
38
- end
39
-
40
- # Pages/Links/Attachments use their parent to determine access
41
- module LeafNode
42
- def access_status
43
- parent.status
44
- end
45
- end
46
-
47
- module NodeAccessors
48
- def node
49
- section_node
50
- end
51
-
52
- def node=(n)
53
- self.section_node = n
54
- end
55
- end
56
- # These exist for backwards compatibility to avoid having to change tests.
57
- # I want to get rid of these in favor of parent and parent_id
58
- module DeprecatedPageAccessors
59
- include LeafNode
60
- include NodeAccessors
61
-
62
- def build_node(opts)
63
- build_section_node(opts)
64
- end
65
-
66
- def section_id
67
- section ? section.id : nil
68
- end
69
-
70
- def section_id=(sec_id)
71
- self.section = Section.find(sec_id)
72
- end
73
-
74
- def section
75
- parent
76
- end
77
-
78
- def section=(sec)
79
- self.parent = sec
80
-
81
- end
82
- end
83
- end
@@ -1,8 +0,0 @@
1
- module Cms
2
- module ErrorPages
3
-
4
- NOT_FOUND_PATH = '/system/not_found'
5
- FORBIDDEN_PATH = '/system/access_denied'
6
- SERVER_ERROR_PATH = '/system/server_error'
7
- end
8
- end
@@ -1,211 +0,0 @@
1
- // jQuery Context Menu Plugin
2
- //
3
- // Version 1.00
4
- //
5
- // Cory S.N. LaViska
6
- // A Beautiful Site (http://abeautifulsite.net/)
7
- //
8
- // Visit http://abeautifulsite.net/notebook/80 for usage and more information
9
- //
10
- // Terms of Use
11
- //
12
- // This software is licensed under a Creative Commons License and is copyrighted
13
- // (C)2008 by Cory S.N. LaViska.
14
- //
15
- // For details, visit http://creativecommons.org/licenses/by/3.0/us/
16
- //
17
- if(jQuery)( function() {
18
- $.extend($.fn, {
19
-
20
- contextMenu: function(o, callback) {
21
- // Defaults
22
- if( o.menu == undefined ) return false;
23
- if( o.inSpeed == undefined ) o.inSpeed = 150;
24
- if( o.outSpeed == undefined ) o.outSpeed = 75;
25
- // 0 needs to be -1 for expected results (no fade)
26
- if( o.inSpeed == 0 ) o.inSpeed = -1;
27
- if( o.outSpeed == 0 ) o.outSpeed = -1;
28
- // Loop each context menu
29
- $(this).each( function() {
30
- var el = $(this);
31
- var offset = $(el).offset();
32
- // Add contextMenu class
33
- $('#' + o.menu).addClass('contextMenu');
34
- // Simulate a true right click
35
- $(this).mousedown( function(e) {
36
- var evt = e;
37
- $(this).mouseup( function(e) {
38
- var srcElement = $(this);
39
- $(this).unbind('mouseup');
40
- if( evt.button == 0 ) {
41
- // Hide context menus that may be showing
42
- $(".contextMenu").hide();
43
- // Get this context menu
44
- var menu = $('#' + o.menu);
45
-
46
- if( $(el).hasClass('disabled') ) return false;
47
-
48
- // Detect mouse position
49
- var d = {}, x, y;
50
- if( self.innerHeight ) {
51
- d.pageYOffset = self.pageYOffset;
52
- d.pageXOffset = self.pageXOffset;
53
- d.innerHeight = self.innerHeight;
54
- d.innerWidth = self.innerWidth;
55
- } else if( document.documentElement &&
56
- document.documentElement.clientHeight ) {
57
- d.pageYOffset = document.documentElement.scrollTop;
58
- d.pageXOffset = document.documentElement.scrollLeft;
59
- d.innerHeight = document.documentElement.clientHeight;
60
- d.innerWidth = document.documentElement.clientWidth;
61
- } else if( document.body ) {
62
- d.pageYOffset = document.body.scrollTop;
63
- d.pageXOffset = document.body.scrollLeft;
64
- d.innerHeight = document.body.clientHeight;
65
- d.innerWidth = document.body.clientWidth;
66
- }
67
- (e.pageX) ? x = e.pageX : x = e.clientX + d.scrollLeft;
68
- (e.pageY) ? y = e.pageY : x = e.clientY + d.scrollTop;
69
-
70
- // Show the menu
71
- $(document).unbind('click');
72
- $(menu).css({ top: y, left: x }).fadeIn(o.inSpeed);
73
- // Hover events
74
- $(menu).find('A').mouseover( function() {
75
- $(menu).find('LI.hover').removeClass('hover');
76
- $(this).parent().addClass('hover');
77
- }).mouseout( function() {
78
- $(menu).find('LI.hover').removeClass('hover');
79
- });
80
-
81
- // Keyboard
82
- $(document).keypress( function(e) {
83
- switch( e.keyCode ) {
84
- case 38: // up
85
- if( $(menu).find('LI.hover').size() == 0 ) {
86
- $(menu).find('LI:last').addClass('hover');
87
- } else {
88
- $(menu).find('LI.hover').removeClass('hover').prevAll('LI:not(.disabled)').eq(0).addClass('hover');
89
- if( $(menu).find('LI.hover').size() == 0 ) $(menu).find('LI:last').addClass('hover');
90
- }
91
- break;
92
- case 40: // down
93
- if( $(menu).find('LI.hover').size() == 0 ) {
94
- $(menu).find('LI:first').addClass('hover');
95
- } else {
96
- $(menu).find('LI.hover').removeClass('hover').nextAll('LI:not(.disabled)').eq(0).addClass('hover');
97
- if( $(menu).find('LI.hover').size() == 0 ) $(menu).find('LI:first').addClass('hover');
98
- }
99
- break;
100
- case 13: // enter
101
- $(menu).find('LI.hover A').trigger('click');
102
- break;
103
- case 27: // esc
104
- $(document).trigger('click');
105
- break
106
- }
107
- });
108
-
109
- // When items are selected
110
- $('#' + o.menu).find('A').unbind('click');
111
- $('#' + o.menu).find('LI:not(.disabled) A').click( function() {
112
- $(document).unbind('click').unbind('keypress');
113
- $(".contextMenu").hide();
114
- // Callback
115
- if( callback ) callback( $(this).attr('href').substr(1), $(srcElement), {x: x - offset.left, y: y - offset.top, docX: x, docY: y} );
116
- return false;
117
- });
118
-
119
- // Hide bindings
120
- setTimeout( function() { // Delay for Mozilla
121
- $(document).click( function() {
122
- $(document).unbind('click').unbind('keypress');
123
- $(menu).fadeOut(o.outSpeed);
124
- return false;
125
- });
126
- }, 0);
127
- }
128
- });
129
- });
130
-
131
- // Disable text selection
132
- if( $.browser.mozilla ) {
133
- $('#' + o.menu).each( function() { $(this).css({ 'MozUserSelect' : 'none' }); });
134
- } else if( $.browser.msie ) {
135
- $('#' + o.menu).each( function() { $(this).bind('selectstart.disableTextSelect', function() { return false; }); });
136
- } else {
137
- $('#' + o.menu).each(function() { $(this).bind('mousedown.disableTextSelect', function() { return false; }); });
138
- }
139
- // Disable browser context menu (requires both selectors to work in IE/Safari + FF/Chrome)
140
- $(el).add('UL.contextMenu').bind('contextmenu', function() { return false; });
141
-
142
- });
143
- return $(this);
144
- },
145
-
146
- // Disable context menu items on the fly
147
- disableContextMenuItems: function(o) {
148
- if( o == undefined ) {
149
- // Disable all
150
- $(this).find('LI').addClass('disabled');
151
- return( $(this) );
152
- }
153
- $(this).each( function() {
154
- if( o != undefined ) {
155
- var d = o.split(',');
156
- for( var i = 0; i < d.length; i++ ) {
157
- $(this).find('A[href="' + d[i] + '"]').parent().addClass('disabled');
158
-
159
- }
160
- }
161
- });
162
- return( $(this) );
163
- },
164
-
165
- // Enable context menu items on the fly
166
- enableContextMenuItems: function(o) {
167
- if( o == undefined ) {
168
- // Enable all
169
- $(this).find('LI.disabled').removeClass('disabled');
170
- return( $(this) );
171
- }
172
- $(this).each( function() {
173
- if( o != undefined ) {
174
- var d = o.split(',');
175
- for( var i = 0; i < d.length; i++ ) {
176
- $(this).find('A[href="' + d[i] + '"]').parent().removeClass('disabled');
177
-
178
- }
179
- }
180
- });
181
- return( $(this) );
182
- },
183
-
184
- // Disable context menu(s)
185
- disableContextMenu: function() {
186
- $(this).each( function() {
187
- $(this).addClass('disabled');
188
- });
189
- return( $(this) );
190
- },
191
-
192
- // Enable context menu(s)
193
- enableContextMenu: function() {
194
- $(this).each( function() {
195
- $(this).removeClass('disabled');
196
- });
197
- return( $(this) );
198
- },
199
-
200
- // Destroy context menu(s)
201
- destroyContextMenu: function() {
202
- // Destroy specified context menus
203
- $(this).each( function() {
204
- // Disable action
205
- $(this).unbind('mousedown').unbind('mouseup');
206
- });
207
- return( $(this) );
208
- }
209
-
210
- });
211
- })(jQuery);