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
@@ -1,234 +1,445 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
- <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
5
- <title>Creating your own modules</title>
6
- <link rel="stylesheet" type="text/css" href="files/stylesheets/syntax.css" />
7
- <script type="text/javascript" src="files/javascripts/code_highlighter.js"></script>
8
- <script type="text/javascript" src="files/javascripts/highlighters.js"></script>
9
- <style type="text/css">
10
- body {
11
- background: #FFFFFF url(images/bg.png) repeat-x scroll 0 0;
12
- font-family: "Trebuchet MS", Helvetica, Verdana, Arial, sans-serif;
13
- margin: 0;
14
- padding: 0;
15
- }
16
-
17
- #page {
18
- margin: 0 auto;
19
- text-align: left;
20
- width: 1000px;
21
- }
22
-
23
- #header {
24
- height: 110px;
25
- }
26
-
27
- div.top_cap {
28
- background: transparent url(images/top_cap.png) no-repeat scroll 0 0;
29
- height: 10px;
30
- }
31
-
32
- #contentwrap {
33
- background: transparent url(images/dot.png) repeat scroll 0 0;
34
- float: left;
35
- width: 1000px;
36
- }
37
-
38
- div.bottom_cap {
39
- background: transparent url(images/bottom_cap.png) no-repeat scroll 0 0;
40
- height: 9px;
41
- }
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html class="cufon-active cufon-ready" xml:lang="en"
3
+ xmlns="http://www.w3.org/1999/xhtml" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6
+ <meta name="keywords" content="">
7
+ <meta name="description" content="">
8
+ <link href="files/clearfix.css" media="screen,projection" rel="stylesheet" type="text/css">
9
+ <link href="files/global.css" media="screen,projection" rel="stylesheet" type="text/css">
10
+ <script src="files/jquery.js" type="text/javascript"></script>
11
+ <script src="files/cufon.js" type="text/javascript"></script>
12
+ <style type="text/css">cufon {
13
+ text-indent: 0 !important;
14
+ }
42
15
 
43
- div.top_cap_content {
44
- background: transparent url(images/top_cap_content.png) no-repeat scroll 0 0;
45
- height: 5px;
46
- }
47
-
48
- #content {
49
- background-color: #FFFFFF;
50
- margin: 0 5px;
51
- padding: 0 10px;
52
- }
53
-
54
- div.title {
55
- padding: 20px;
56
- }
57
-
58
- div.title h1 {
59
- border-bottom: 3px solid #505358;
60
- color: #FFFFFF;
61
- font-size: 24pt;
62
- font-weight: normal;
63
- line-height: 1;
64
- margin: 0 0 10px;
65
- padding-bottom: 10px;
66
- }
67
-
68
- td.sidebar {
69
- font-size: 8pt;
70
- width: 165px;
71
- padding: 5px;
72
- }
73
-
74
- td.sidebar ol {
75
- margin-left: 20px;
76
- padding: 0;
77
- line-height: 1.5;
78
- }
79
-
80
- td.sidebar ol li {
81
- margin: 0;
82
- padding: 0;
83
- }
84
-
85
- td.sidebar ol li ul {
86
- list-style-type: none;
87
- padding-left: 10px;
88
- }
89
-
90
- td.guides {
91
- font-size: 10pt;
92
- width: 800px;
93
- padding: 10px;
94
- }
95
-
96
- .code_container {
97
- padding: 10px;
98
- background: #eee;
99
- border: 1px solid #ccc;
100
- overflow: auto;
101
- width: 760px;
102
- }
103
-
104
- pre, code {
105
- overflow: auto;
106
- white-space:pre;
107
- }
108
- .note {
109
- -moz-background-clip:border;
110
- -moz-background-inline-policy:continuous;
111
- -moz-background-origin:padding;
112
- background:#FFF9D8 url(../images/tab_note.gif) no-repeat scroll left top;
113
- border:medium none;
114
- margin:0.25em 0 1.5em;
115
- padding:1em 1em 0.25em 48px;
116
- }
117
- </style>
118
- </head>
119
- <body>
120
- <div id="page">
121
- <div id="header">
122
- <a href="index.html"><img style="border:0px" src="images/browsercms_logo.png" alt="BrowserCMS"/></a>
123
- </div>
124
- <div id="main">
125
- <div class="top_cap"></div>
126
- <div id="contentwrap">
127
- <div class="title">
128
- <h1>Creating your own modules</h1>
129
- </div>
130
- <div class="top_cap_content"></div>
131
- <div id="content">
132
- <table width="100%" cellpadding="0" cellspacing="0" border="0">
133
- <tr>
134
- <td class="sidebar" valign="top">
135
- <div id="subCol">
136
- <h3 class="chapter"><img src="images/chapters_icon.gif" alt="" />Chapters</h3>
137
- <ol class="chapters">
138
- <li><a href="#getting-started">Getting Started</a><ul><li><a href="#generated-files">Generated Files</a></li></ul></li><li><a href="#creating-blocks">Creating Blocks</a><ul><li><a href="#defining-routes-for-the-module">Defining routes for the module</a></li></ul></li><li><a href="#displaying-products-in-our-site">Displaying Products in our Site</a><ul></ul></li><li><a href="#copying-files-into-projects">Copying files into projects.</a><ul></ul></li><li><a href="#conventions-when-building-your-module">Conventions When Building Your Module</a><ul></ul></li><li><a href="#testing-your-gem">Testing Your Gem</a><ul></ul></li></ol></div>
139
- </td>
140
- <td class="guides">
141
- <h2>Creating your own modules</h2>
142
- <p>This guide covers how to create and package modules for BrowserCMS. Modules are the primary way to expand the functionality of the BrowserCMS core project. After reading this guide, you should understand how to:</p>
143
- <ul>
144
- <li>Create a new module</li>
145
- <li>Add blocks and portlets</li>
146
- <li>Add new controllers</li>
147
- <li>How to modify core modules using open classes</li>
148
- <li>Package and Test your module in another <span class="caps">CMS</span> project.</li>
16
+ @media screen, projection {
17
+ cufon {
18
+ display: inline !important;
19
+ display: inline-block !important;
20
+ position: relative !important;
21
+ vertical-align: middle !important;
22
+ font-size: 1px !important;
23
+ line-height: 1px !important;
24
+ }
25
+
26
+ cufon cufontext {
27
+ display: -moz-inline-box !important;
28
+ display: inline-block !important;
29
+ width: 0 !important;
30
+ height: 0 !important;
31
+ overflow: hidden !important;
32
+ text-indent: -10000in !important;
33
+ }
34
+
35
+ cufon canvas {
36
+ position: relative !important;
37
+ }
38
+ }
39
+
40
+ @media print {
41
+ cufon {
42
+ padding: 0 !important;
43
+ }
44
+
45
+ cufon canvas {
46
+ display: none !important;
47
+ }
48
+ }</style>
49
+ <script src="files/helvetica.js" type="text/javascript"></script>
50
+ <script src="files/bcmsorg.js" type="text/javascript"></script>
51
+ <title>Table of Contents</title>
52
+ </head>
53
+ <body>
54
+
55
+ <div id="container">
56
+ <div id="header">
57
+ <h1 id="logo"><a href="http://www.staging.browsercms.org/"
58
+ title="Return to Home Page">Table of Contents</a></h1>
59
+
60
+ <div id="topnav">
61
+ <ul>
62
+ <li><a href="/">Home</a></li>
63
+ <li><a href="/demo">Demo</a></li>
64
+ <li><a href="/documentation" class="active">Documentation</a></li>
65
+ <li><a href="/extending">Extending</a></li>
66
+ <li><a href="/support">Support</a></li>
67
+ <li><a href="/blog">Blog</a></li>
68
+ <li><a href="/download">Download</a></li>
69
+ </ul>
70
+
71
+ </div>
72
+ </div>
73
+ <div id="content" class="clearfix">
74
+ <div id="subnav">
75
+ <ul class="breadcrumbs">
76
+ <li class="first first-child"><a
77
+ href="http://www.staging.browsercms.org/documentation">Documentation</a></li>
78
+ <li><a href="http://www.staging.browsercms.org/documentation/guides">Guides</a></li>
79
+ <li class="last-child">Table of Contents</li>
80
+ </ul>
81
+ </div>
82
+ <div id="sidenav_doc">
83
+ <h2 class="alt">
84
+ <cufon style="width: 58px; height: 23px;" alt="Table "
85
+ class="cufon cufon-canvas">
86
+ <canvas style="width: 77px; height: 23px;
87
+ top: 1px; left: -1px;" height="23" width="77"></canvas>
88
+ <cufontext>Table</cufontext>
89
+ </cufon>
90
+ <cufon
91
+ style="width: 25px; height: 23px;" alt="of " class="cufon cufon-canvas">
92
+ <canvas
93
+ style="width: 43px; height: 23px; top: 1px; left: -1px;" height="23"
94
+ width="43"></canvas>
95
+ <cufontext>of</cufontext>
96
+ </cufon>
97
+ <cufon
98
+ style="width: 84px; height: 23px;" alt="Contents" class="cufon
99
+ cufon-canvas">
100
+ <canvas style="width: 98px; height: 23px; top: 1px; left:
101
+ -1px;" height="23" width="98"></canvas>
102
+ <cufontext>Contents</cufontext>
103
+ </cufon>
104
+ </h2>
105
+ <div id="menu" class="menu">
106
+ <ul>
107
+ <li id="section_6" class="depth-1 first open first-child">
108
+ <a
109
+ href="http://www.staging.browsercms.org/documentation/guides/table-of-contents/installing-browsercms">Installing
110
+ BrowserCMS</a>
111
+ <ul>
112
+ <li id="page_11" class="depth-2 first last last-child
113
+ first-child">
114
+ <a
115
+ href="http://www.staging.browsercms.org/documentation/guides/table-of-contents/installing-browsercms/things-you-need-first">Things
116
+ you need first</a>
117
+ </li>
118
+ </ul>
119
+ </li>
120
+ <li id="section_7" class="depth-1 last open final">
121
+ <a
122
+ href="http://www.staging.browsercms.org/documentation/guides/table-of-contents/trying-out-browsercms">Trying
123
+ Out BrowserCMS</a>
124
+ <ul>
125
+ <li id="page_14" class="depth-2 first first-child">
126
+ <a
127
+ href="http://www.staging.browsercms.org/documentation/guides/table-of-contents/trying-out-browsercms/with-sqlite3">With
128
+ SQLite3</a>
129
+ </li>
130
+ <li id="page_15" class="depth-2">
131
+ <a
132
+ href="http://www.staging.browsercms.org/documentation/guides/table-of-contents/trying-out-browsercms/with-mysql">With
133
+ MySQL</a>
134
+ </li>
135
+ <li id="page_16" class="depth-2 last last-child final">
136
+ <a
137
+ href="http://www.staging.browsercms.org/documentation/guides/table-of-contents/trying-out-browsercms/using-your-site">Using
138
+ your Site</a>
139
+ </li>
140
+ </ul>
141
+ </li>
142
+ </ul>
143
+ </div>
144
+
145
+ </div>
146
+ <div id="main_doc">
147
+
148
+ <h2>
149
+ <cufon style="width: 73px; height: 23px;" alt="Header "
150
+ class="cufon cufon-canvas">
151
+ <canvas style="width: 92px; height: 23px;
152
+ top: 1px; left: -1px;" height="23" width="92"></canvas>
153
+ <cufontext>Header
154
+ </cufontext>
155
+ </cufon>
156
+ <cufon style="width: 12px; height: 23px;" alt="2"
157
+ class="cufon cufon-canvas">
158
+ <canvas style="width: 25px; height: 23px;
159
+ top: 1px; left: -1px;" height="23" width="25"></canvas>
160
+ <cufontext>2</cufontext>
161
+ </cufon>
162
+ </h2>
163
+ <h2 class="alt">
164
+ <cufon style="width: 73px; height: 23px;" alt="Header "
165
+ class="cufon cufon-canvas">
166
+ <canvas style="width: 92px; height: 23px;
167
+ top: 1px; left: -1px;" height="23" width="92"></canvas>
168
+ <cufontext>Header
169
+ </cufontext>
170
+ </cufon>
171
+ <cufon style="width: 18px; height: 23px;" alt="2 "
172
+ class="cufon cufon-canvas">
173
+ <canvas style="width: 36px; height: 23px;
174
+ top: 1px; left: -1px;" height="23" width="36"></canvas>
175
+ <cufontext>2</cufontext>
176
+ </cufon>
177
+ <cufon
178
+ style="width: 27px; height: 23px;" alt="Alt" class="cufon cufon-canvas">
179
+ <canvas
180
+ style="width: 44px; height: 23px; top: 1px; left: -1px;" height="23"
181
+ width="44"></canvas>
182
+ <cufontext>Alt</cufontext>
183
+ </cufon>
184
+ </h2>
185
+ <h2 class="brdr">
186
+ <cufon style="width: 73px; height: 23px;" alt="Header "
187
+ class="cufon cufon-canvas">
188
+ <canvas style="width: 92px; height: 23px;
189
+ top: 1px; left: -1px;" height="23" width="92"></canvas>
190
+ <cufontext>Header
191
+ </cufontext>
192
+ </cufon>
193
+ <cufon style="width: 18px; height: 23px;" alt="2 "
194
+ class="cufon cufon-canvas">
195
+ <canvas style="width: 36px; height: 23px;
196
+ top: 1px; left: -1px;" height="23" width="36"></canvas>
197
+ <cufontext>2</cufontext>
198
+ </cufon>
199
+ <cufon
200
+ style="width: 91px; height: 23px;" alt="Underline" class="cufon
201
+ cufon-canvas">
202
+ <canvas style="width: 104px; height: 23px; top: 1px; left:
203
+ -1px;" height="23" width="104"></canvas>
204
+ <cufontext>Underline</cufontext>
205
+ </cufon>
206
+ </h2>
207
+ <h3>
208
+ <cufon style="width: 51px; height: 16px;" alt="Header " class="cufon
209
+ cufon-canvas">
210
+ <canvas style="width: 64px; height: 16px; top: 0px; left:
211
+ 0px;" height="16" width="64"></canvas>
212
+ <cufontext>Header</cufontext>
213
+ </cufon>
214
+ <cufon
215
+ style="width: 8px; height: 16px;" alt="3" class="cufon cufon-canvas">
216
+ <canvas
217
+ style="width: 18px; height: 16px; top: 0px; left: 0px;" height="16"
218
+ width="18"></canvas>
219
+ <cufontext>3</cufontext>
220
+ </cufon>
221
+ </h3>
222
+ <h3 class="alt">
223
+ <cufon style="width: 51px; height: 16px;" alt="Header "
224
+ class="cufon cufon-canvas">
225
+ <canvas style="width: 64px; height: 16px;
226
+ top: 0px; left: 0px;" height="16" width="64"></canvas>
227
+ <cufontext>Header</cufontext>
228
+ </cufon>
229
+ <cufon
230
+ style="width: 12px; height: 16px;" alt="3 " class="cufon cufon-canvas">
231
+ <canvas
232
+ style="width: 25px; height: 16px; top: 0px; left: 0px;" height="16"
233
+ width="25"></canvas>
234
+ <cufontext>3</cufontext>
235
+ </cufon>
236
+ <cufon
237
+ style="width: 19px; height: 16px;" alt="Alt" class="cufon cufon-canvas">
238
+ <canvas
239
+ style="width: 31px; height: 16px; top: 0px; left: 0px;" height="16"
240
+ width="31"></canvas>
241
+ <cufontext>Alt</cufontext>
242
+ </cufon>
243
+ </h3>
244
+ <h3 class="brdr">
245
+ <cufon style="width: 51px; height: 16px;" alt="Header "
246
+ class="cufon cufon-canvas">
247
+ <canvas style="width: 64px; height: 16px;
248
+ top: 0px; left: 0px;" height="16" width="64"></canvas>
249
+ <cufontext>Header</cufontext>
250
+ </cufon>
251
+ <cufon
252
+ style="width: 12px; height: 16px;" alt="3 " class="cufon cufon-canvas">
253
+ <canvas
254
+ style="width: 25px; height: 16px; top: 0px; left: 0px;" height="16"
255
+ width="25"></canvas>
256
+ <cufontext>3</cufontext>
257
+ </cufon>
258
+ <cufon
259
+ style="width: 63px; height: 16px;" alt="Underline" class="cufon
260
+ cufon-canvas">
261
+ <canvas style="width: 73px; height: 16px; top: 0px; left:
262
+ 0px;" height="16" width="73"></canvas>
263
+ <cufontext>Underline</cufontext>
264
+ </cufon>
265
+ </h3>
266
+ <h4>
267
+ <cufon style="width: 45px; height: 14px;" alt="Header " class="cufon
268
+ cufon-canvas">
269
+ <canvas style="width: 56px; height: 14px; top: 0px; left:
270
+ 0px;" height="14" width="56"></canvas>
271
+ <cufontext>Header</cufontext>
272
+ </cufon>
273
+ <cufon
274
+ style="width: 7px; height: 14px;" alt="4" class="cufon cufon-canvas">
275
+ <canvas
276
+ style="width: 15px; height: 14px; top: 0px; left: 0px;" height="14"
277
+ width="15"></canvas>
278
+ <cufontext>4</cufontext>
279
+ </cufon>
280
+ </h4>
281
+ <h4 class="alt">
282
+ <cufon style="width: 45px; height: 14px;" alt="Header "
283
+ class="cufon cufon-canvas">
284
+ <canvas style="width: 56px; height: 14px;
285
+ top: 0px; left: 0px;" height="14" width="56"></canvas>
286
+ <cufontext>Header</cufontext>
287
+ </cufon>
288
+ <cufon
289
+ style="width: 11px; height: 14px;" alt="4 " class="cufon cufon-canvas">
290
+ <canvas
291
+ style="width: 22px; height: 14px; top: 0px; left: 0px;" height="14"
292
+ width="22"></canvas>
293
+ <cufontext>4</cufontext>
294
+ </cufon>
295
+ <cufon
296
+ style="width: 16px; height: 14px;" alt="Alt" class="cufon cufon-canvas">
297
+ <canvas
298
+ style="width: 27px; height: 14px; top: 0px; left: 0px;" height="14"
299
+ width="27"></canvas>
300
+ <cufontext>Alt</cufontext>
301
+ </cufon>
302
+ </h4>
303
+ <h4 class="brdr">
304
+ <cufon style="width: 45px; height: 14px;" alt="Header "
305
+ class="cufon cufon-canvas">
306
+ <canvas style="width: 56px; height: 14px;
307
+ top: 0px; left: 0px;" height="14" width="56"></canvas>
308
+ <cufontext>Header</cufontext>
309
+ </cufon>
310
+ <cufon
311
+ style="width: 11px; height: 14px;" alt="4 " class="cufon cufon-canvas">
312
+ <canvas
313
+ style="width: 22px; height: 14px; top: 0px; left: 0px;" height="14"
314
+ width="22"></canvas>
315
+ <cufontext>4</cufontext>
316
+ </cufon>
317
+ <cufon
318
+ style="width: 55px; height: 14px;" alt="Underline" class="cufon
319
+ cufon-canvas">
320
+ <canvas style="width: 64px; height: 14px; top: 0px; left:
321
+ 0px;" height="14" width="64"></canvas>
322
+ <cufontext>Underline</cufontext>
323
+ </cufon>
324
+ </h4>
325
+ <h5>
326
+ <cufon style="width: 35px; height: 11px;" alt="Header " class="cufon
327
+ cufon-canvas">
328
+ <canvas style="width: 44px; height: 11px; top: 0px; left:
329
+ 0px;" height="11" width="44"></canvas>
330
+ <cufontext>Header</cufontext>
331
+ </cufon>
332
+ <cufon
333
+ style="width: 6px; height: 11px;" alt="5" class="cufon cufon-canvas">
334
+ <canvas
335
+ style="width: 12px; height: 11px; top: 0px; left: 0px;" height="11"
336
+ width="12"></canvas>
337
+ <cufontext>5</cufontext>
338
+ </cufon>
339
+ </h5>
340
+ <h5 class="alt">
341
+ <cufon style="width: 35px; height: 11px;" alt="Header "
342
+ class="cufon cufon-canvas">
343
+ <canvas style="width: 44px; height: 11px;
344
+ top: 0px; left: 0px;" height="11" width="44"></canvas>
345
+ <cufontext>Header</cufontext>
346
+ </cufon>
347
+ <cufon
348
+ style="width: 9px; height: 11px;" alt="5 " class="cufon cufon-canvas">
349
+ <canvas
350
+ style="width: 18px; height: 11px; top: 0px; left: 0px;" height="11"
351
+ width="18"></canvas>
352
+ <cufontext>5</cufontext>
353
+ </cufon>
354
+ <cufon
355
+ style="width: 13px; height: 11px;" alt="Alt" class="cufon cufon-canvas">
356
+ <canvas
357
+ style="width: 21px; height: 11px; top: 0px; left: 0px;" height="11"
358
+ width="21"></canvas>
359
+ <cufontext>Alt</cufontext>
360
+ </cufon>
361
+ </h5>
362
+ <h5 class="brdr">
363
+ <cufon style="width: 35px; height: 11px;" alt="Header "
364
+ class="cufon cufon-canvas">
365
+ <canvas style="width: 44px; height: 11px;
366
+ top: 0px; left: 0px;" height="11" width="44"></canvas>
367
+ <cufontext>Header</cufontext>
368
+ </cufon>
369
+ <cufon
370
+ style="width: 9px; height: 11px;" alt="5 " class="cufon cufon-canvas">
371
+ <canvas
372
+ style="width: 18px; height: 11px; top: 0px; left: 0px;" height="11"
373
+ width="18"></canvas>
374
+ <cufontext>5</cufontext>
375
+ </cufon>
376
+ <cufon
377
+ style="width: 44px; height: 11px;" alt="Underline" class="cufon
378
+ cufon-canvas">
379
+ <canvas style="width: 50px; height: 11px; top: 0px; left:
380
+ 0px;" height="11" width="50"></canvas>
381
+ <cufontext>Underline</cufontext>
382
+ </cufon>
383
+ </h5>
384
+ <p>
385
+ <code>I am code<br>
386
+ I can expand as needed<br>
387
+ with my content<br>
388
+ </code></p>
389
+
390
+ <p>
391
+ <code class="mono">I am monotone code<br>
392
+ I can expand too<br>
393
+ </code></p>
394
+
395
+ <div class="info">
396
+ I am info<br>
397
+ again, can expand with content<br>
398
+ as I grow
399
+ </div>
400
+ <div class="warn">
401
+ I am warning<br>
402
+ repetition is nice when it <br>
403
+ comes to demonstrating expansion<br>
404
+ of elements
405
+ </div>
406
+ <ul class="list">
407
+ <li class="first-child">
408
+ list item 1
409
+ </li>
410
+ <li class="last-child">
411
+ list item 2
412
+ </li>
149
413
  </ul>
150
- <p>This guide is for BrowserCMS <strong>3.1</strong>. Some code shown here may not work with older versions of BrowserCMS.</p>
151
- <h3 id="getting-started">1 Getting Started</h3>
152
- <p>The guide is going to walk how a new module can be created from scratch. The goal for our sample module will be to add some Pet Store functionality to BrowserCMS, and allow editors to create new products and users to browse a product catalog. This module will be built to show off some of the most common techniques used to add dynamic behavior to BrowserCMS projects.</p>
153
- <p>To start a new module, run the following command:</p>
154
- <div class="code_container"><code class="html">$ bcms bcms_pet_store -m module</code></div>
155
- <p>This will create a browsercms project, which will be structured to help test your module as its being built. The <tt>-m module</tt> flag will a project design to be packaged as gem for reuse. Note that the name of any module must start with <tt>bcms_</tt> or the files won&#8217;t be generated correctly.</p>
156
- <h4 id="generated-files">1.1 Generated Files</h4>
157
- <p>After the project has been created, there are a number of files which are created. Here&#8217;s a brief list of the notable files and their purpose.</p>
158
- <table>
159
- <tr>
160
- <th>File </th>
161
- <th>Purpose </th>
162
- </tr>
163
- <tr>
164
- <td> .gitignore </td>
165
- <td> Contains a list of files which will not be checked into git </td>
166
- </tr>
167
- <tr>
168
- <td> bcms_pet_store.gemspec</td>
169
- <td> An initial gemspec to package the module as a gem. </td>
170
- </tr>
171
- <tr>
172
- <td> config/initializers/init_module.rb </td>
173
- <td> Called by BrowserCMS startup to load the module&#8217;s files. (You shouldn&#8217;t need to modify this) </td>
174
- </tr>
175
- <tr>
176
- <td> lib/bcms_pet_store.rb </td>
177
- <td> Used to require files not in the app/ loadpath. You may need to update this if you add new files under lib. </td>
178
- </tr>
179
- <tr>
180
- <td> public/bcms/bcms_petstore/ </td>
181
- <td> A directory for public files which should be copied into projects that use this module. </td>
182
- </tr>
183
- <tr>
184
- <td> lib/bcms_pet_store/routes.rb </td>
185
- <td> A place to define routes for this module, like content blocks. These routes will be included in projects that use this gem. </td>
186
- </tr>
187
- <tr>
188
- <td> rails/init.rb </td>
189
- <td> Add the gem root to the Rails load path, including determining which files will be copied from the gem into projects .</td>
190
- </tr>
191
- </table>
192
- <p>Note the gemspec, license (<span class="caps">LGPL</span>) and copywrite files specific to BrowserMedia, therefore you will likely want to edit these later to reflect your own purposes.</p>
193
- <h3 id="creating-blocks">2 Creating Blocks</h3>
194
- <p>One of the most common reason to creating a module is to define one or more Content blocks that can be added to projects. For our Pet Store example, we will create a Product block which will represent a purchasable good in our Store. Run the following command inside the project.</p>
195
- <div class="code_container"><code class="html">$ script/generate content_block product name:string price:integer description:html</code></div>
196
- <p>This is the exact same generator used to create content blocks for any BrowserCMS project. You can run <tt>rake db:migrate</tt> and see this block in the <span class="caps">CMS</span> Admin UI.</p>
197
- <h4 id="defining-routes-for-the-module">2.1 Defining routes for the module</h4>
198
- <p>Each content block will have its own routes for the Admin UI, which the generator will place into the <tt>config/routes.rb</tt>. This works fine for a BrowserCMS project, but not as a module as the <tt>config/routes.rb</tt> file won&#8217;t be packaged in the gem. To fix this, we need to move the route from the <tt>config/routes.rb</tt> to the <tt>lib/bcms_pet_store/routes.rb</tt>. Open the latter file and alter to look like this:</p>
199
- <div class="code_container"><code class="ruby">module Cms::Routes
200
- def routes_for_bcms_pet_store
201
- namespace(:cms) do |cms|
202
- cms.content_blocks :products
203
- end
204
- end
205
- end</code></div>
206
- <p>Then edit the +config/routes.rb file to look like this:</p>
207
- <div class="code_container"><code class="ruby">ActionController::Routing::Routes.draw do |map|
208
- map.routes_for_bcms_pet_store
209
- map.routes_for_browser_cms
210
- end</code></div>
211
- <p>By doing this, we are defining our routes in a reusuable way, both for the gem as well as the bcms_pet_store project for testing. All routes that you want to make available to projects should be defined in the <tt>lib/bcms_pet_store/routes.rb</tt> file, which developers will add to their routes by calling <tt>map.routes_for_bcms_pet_store</tt>.</p>
212
- <p>Restart your server and verify that you see that the routes still work.</p>
213
- <h3 id="displaying-products-in-our-site">3 Displaying Products in our Site</h3>
214
- <p>Now that we have our product data, we can use the Admin UI to create some sample product data. But how do we display our products to our site visitors. In a typical Rails project, you might create a controller that looks up the products and shows them in a view. However, in a BrowserCMS project we probably want to take advantage of displaying products on <span class="caps">CMS</span> page which can be styled by our <span class="caps">CMS</span> editors.</p>
215
- <p>To do this, we need to use portlets.</p>
216
- <h3 id="copying-files-into-projects">4 Copying files into projects.</h3>
217
- <ul>
218
- <li><code>rails/init.rb</code></li>
414
+ <ul class="disc">
415
+ <li class="first-child">
416
+ disc list item 1
417
+ </li>
418
+ <li class="last-child">
419
+ disc list item 2
420
+ </li>
421
+ </ul>
422
+ <ul class="flat-list">
423
+ <li class="first-child">
424
+ flat-list item 1
425
+ </li>
426
+ <li class="last-child">
427
+ flat-list item 2
428
+ </li>
219
429
  </ul>
220
430
  <blockquote>
221
- <p>Adds the gem root to the rails paths, adds all migration files to the list of files that will be copied into any application using the module when <code>script/generate browser_cms</code> is run, and adds all files in <code>public/bcms/bcms_[module name]/</code> to the list of files that will be copied into any application using the module when <code>script/generate browser_cms</code> is run.</p>
431
+ <p><span class="caps">GNU</span> General Public License</p>
222
432
  </blockquote>
223
- <h3 id="conventions-when-building-your-module">5 Conventions When Building Your Module</h3>
433
+ <p>Note: the module template was developed primarily for BrowserMedia in-house use. Therefore the license, copywrite, and gemspec files all reflect our organization. Please edit and/or remove these files to fit your needs.</p>
434
+ <h3>Conventions When Building Your Module</h3>
224
435
  <p>Build your module as if you were building a rails application that does whatever you want.</p>
225
436
  <p>That said, there are some conventions that tend to make things easier.</p>
226
437
  <p>First, place any files that are used as configuration files for public assects (for example, the fckeditor) in the <code>public/bcms_config/[module_name]</code> directory and have the gem only copy them if they are not already there. For example you can add code like the following to the <code>rails/init.rb</code> file.</p>
227
- <div class="code_container"><code class="ruby">unless File.exists?(&quot;#{RAILS_ROOT}/public/bcms_config/fckeditor/fckstyles.xml&quot;)
438
+ <div class="code_container"><code class="ruby">unless File.exists?(&quot;#{Rails.root}/public/bcms_config/fckeditor/fckstyles.xml&quot;)
228
439
  Cms.add_generator_paths gem_root, &quot;public/bcms_config/fckeditor/fckstyles.xml&quot;
229
440
  end</code></div>
230
441
  <p>This will make the required configuration file available to the fckeditor, but it won&#8217;t overwrite it (or even ask you if you want to overwrite it) every time you run <code>script/generate browser_cms</code> for your application.</p>
231
- <h3 id="testing-your-gem">6 Testing Your Gem</h3>
442
+ <h3>Testing Your Gem</h3>
232
443
  <p>We strongly encourage the creation of unit, functional, and integration tests as part of your module.</p>
233
444
  <p>We also suggest that you test your gem against a BrowserCMS application. To do this, first run</p>
234
445
  <p><code>bcms module_tester -m demo</code></p>
@@ -247,3 +458,23 @@ end</code></div>
247
458
  </body>
248
459
  </html>
249
460
 
461
+ </div>
462
+ </div>
463
+ <div id="footer">
464
+ <ul>
465
+ <li class="first-child"><a href="">BrowserMedia Home</a></li>
466
+ <li><a href="">BrowserCMS Home</a></li>
467
+ <li><a href="">Sitemap</a></li>
468
+ <li class="last-child"><a href="">Contact Us</a></li>
469
+ </ul>
470
+ <p class="copynotice">© 1998-2010 BrowserMedia, LLC. All Rights
471
+ Reserved.</p>
472
+ </div>
473
+ </div>
474
+ <script type="text/javascript">
475
+ //<![CDATA[
476
+ bcmsOrg.init();
477
+ //]]>
478
+ </script>
479
+ </body>
480
+ </html>