browsercms 3.4.2 → 3.5.0.rc1

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 (367) hide show
  1. data/README.markdown +1 -0
  2. data/app/assets/images/cms/file-uploading.gif +0 -0
  3. data/app/assets/javascripts/cms/application.js +1 -0
  4. data/app/assets/javascripts/cms/attachment_manager.js.erb +87 -0
  5. data/app/assets/javascripts/cms/core_library.js.erb +38 -25
  6. data/app/assets/stylesheets/cms/application.css.erb +1 -0
  7. data/app/assets/stylesheets/cms/attachment_manager.css.scss +28 -0
  8. data/app/controllers/cms/application_controller.rb +1 -1
  9. data/app/controllers/cms/attachments_controller.rb +45 -10
  10. data/app/controllers/cms/cache_controller.rb +1 -1
  11. data/app/controllers/cms/content_block_controller.rb +134 -122
  12. data/app/controllers/cms/content_controller.rb +143 -155
  13. data/app/controllers/cms/dashboard_controller.rb +11 -9
  14. data/app/controllers/cms/error_handling.rb +19 -7
  15. data/app/controllers/cms/file_blocks_controller.rb +2 -2
  16. data/app/controllers/cms/home_controller.rb +3 -0
  17. data/app/controllers/cms/section_nodes_controller.rb +52 -44
  18. data/app/controllers/cms/sections_controller.rb +4 -2
  19. data/app/controllers/cms/toolbar_controller.rb +14 -10
  20. data/app/helpers/cms/application_helper.rb +23 -19
  21. data/app/helpers/cms/form_builder.rb +65 -18
  22. data/app/helpers/cms/mobile_helper.rb +19 -0
  23. data/app/helpers/cms/path_helper.rb +30 -4
  24. data/app/helpers/cms/rendering_helper.rb +9 -1
  25. data/app/models/cms/abstract_file_block.rb +6 -6
  26. data/app/models/cms/attachment.rb +196 -107
  27. data/app/models/cms/category.rb +3 -0
  28. data/app/models/cms/category_type.rb +2 -0
  29. data/app/models/cms/connector.rb +3 -0
  30. data/app/models/cms/content_type.rb +3 -0
  31. data/app/models/cms/content_type_group.rb +2 -0
  32. data/app/models/cms/dynamic_view.rb +4 -0
  33. data/app/models/cms/email_message.rb +2 -0
  34. data/app/models/cms/file_block.rb +9 -2
  35. data/app/models/cms/group.rb +5 -2
  36. data/app/models/cms/group_permission.rb +2 -0
  37. data/app/models/cms/group_section.rb +3 -0
  38. data/app/models/cms/group_type.rb +2 -0
  39. data/app/models/cms/group_type_permission.rb +2 -0
  40. data/app/models/cms/html_block.rb +3 -2
  41. data/app/models/cms/image_block.rb +13 -2
  42. data/app/models/cms/page.rb +14 -3
  43. data/app/models/cms/page_route.rb +4 -0
  44. data/app/models/cms/page_route_condition.rb +1 -0
  45. data/app/models/cms/page_route_option.rb +2 -0
  46. data/app/models/cms/page_route_requirement.rb +1 -0
  47. data/app/models/cms/permission.rb +3 -0
  48. data/app/models/cms/portlet.rb +2 -2
  49. data/app/models/cms/redirect.rb +2 -0
  50. data/app/models/cms/section.rb +15 -1
  51. data/app/models/cms/section_node.rb +1 -0
  52. data/app/models/cms/site.rb +3 -0
  53. data/app/models/cms/tag.rb +2 -0
  54. data/app/models/cms/tagging.rb +3 -0
  55. data/app/models/cms/task.rb +5 -1
  56. data/app/models/cms/user.rb +1 -1
  57. data/app/models/cms/user_group_membership.rb +3 -0
  58. data/app/views/cms/attachments/_attachment.html.erb +14 -0
  59. data/app/views/cms/attachments/_attachment_table.html.erb +17 -0
  60. data/app/views/cms/attachments/_attachment_wrapper.html.erb +4 -0
  61. data/app/views/cms/blocks/index.html.erb +2 -3
  62. data/app/views/cms/blocks/show.html.erb +1 -1
  63. data/app/views/cms/dynamic_views/index.html.erb +1 -1
  64. data/app/views/cms/email_messages/index.html.erb +1 -1
  65. data/app/views/cms/file_blocks/_form.html.erb +1 -27
  66. data/app/views/cms/file_blocks/_section_selector.html.erb +13 -0
  67. data/app/views/cms/file_blocks/render.html.erb +3 -3
  68. data/app/views/cms/form_builder/_cms_attachment_manager.html.erb +26 -0
  69. data/app/views/cms/form_builder/_cms_file_field.html.erb +27 -35
  70. data/app/views/cms/groups/index.html.erb +1 -1
  71. data/app/views/cms/image_blocks/_form.html.erb +1 -27
  72. data/app/views/cms/image_blocks/render.html.erb +4 -1
  73. data/app/views/cms/page_routes/index.html.erb +3 -0
  74. data/app/views/cms/shared/error.xml.erb +8 -0
  75. data/app/views/cms/tags/render.html.erb +1 -1
  76. data/app/views/cms/toolbar/_mobile_toggle.html.erb +33 -0
  77. data/app/views/cms/users/index.html.erb +1 -1
  78. data/app/views/layouts/_page_toolbar.html.erb +2 -1
  79. data/bin/bcms +21 -26
  80. data/config/routes.rb +3 -2
  81. data/db/browsercms.seeds.rb +2 -1
  82. data/db/migrate/20111130221145_browsercms340.rb +5 -4
  83. data/db/migrate/20120329144406_browsercms350.rb +32 -0
  84. data/{test/dummy/db → db}/schema.rb +97 -128
  85. data/{performance_tuning_notes.md → doc/performance_tuning_notes.md} +0 -0
  86. data/doc/release_notes.md +74 -0
  87. data/lib/browsercms.rb +3 -0
  88. data/lib/cms/acts/content_block.rb +10 -2
  89. data/lib/cms/addressable.rb +8 -0
  90. data/lib/cms/attachments/attachment_serving.rb +59 -0
  91. data/lib/cms/attachments/configuration.rb +88 -0
  92. data/lib/cms/behaviors/attaching.rb +305 -136
  93. data/lib/cms/behaviors/connecting.rb +3 -4
  94. data/lib/cms/behaviors/dynamic_attributes.rb +121 -118
  95. data/lib/cms/behaviors/flush_cache_on_change.rb +1 -3
  96. data/lib/cms/behaviors/naming.rb +16 -0
  97. data/lib/cms/behaviors/pagination.rb +4 -1
  98. data/lib/cms/behaviors/publishing.rb +9 -3
  99. data/lib/cms/behaviors/searching.rb +3 -8
  100. data/lib/cms/behaviors/soft_deleting.rb +1 -0
  101. data/lib/cms/behaviors/taggable.rb +2 -0
  102. data/lib/cms/behaviors/versioning.rb +73 -120
  103. data/lib/cms/caching.rb +53 -11
  104. data/lib/cms/commands/actions.rb +19 -2
  105. data/lib/cms/configuration.rb +44 -0
  106. data/lib/cms/content_rendering_support.rb +9 -6
  107. data/lib/cms/default_accessible.rb +13 -0
  108. data/lib/cms/domain_support.rb +22 -0
  109. data/lib/cms/engine.rb +40 -19
  110. data/lib/cms/engine_helper.rb +54 -0
  111. data/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb +14 -2
  112. data/lib/cms/mobile_aware.rb +67 -0
  113. data/lib/cms/route_extensions.rb +3 -0
  114. data/lib/cms/upgrades/v3_5_0.rb +155 -0
  115. data/lib/cms/version.rb +6 -1
  116. data/lib/generators/cms/content_block/content_block_generator.rb +14 -9
  117. data/lib/generators/cms/content_block/templates/_form.html.erb +17 -6
  118. data/lib/generators/cms/content_block/templates/render.html.erb +12 -5
  119. data/lib/generators/cms/template/template_generator.rb +11 -2
  120. data/lib/tasks/cms.rake +23 -0
  121. data/lib/templates/active_record/model/model.rb +6 -0
  122. metadata +127 -517
  123. data/.gitignore +0 -24
  124. data/.rvmrc +0 -2
  125. data/Gemfile +0 -29
  126. data/Gemfile.lock +0 -196
  127. data/Rakefile +0 -97
  128. data/app/assets/images/browsercms/.gitkeep +0 -0
  129. data/app/controllers/browsercms/application_controller.rb +0 -4
  130. data/browsercms.gemspec +0 -35
  131. data/config/cucumber.yml +0 -8
  132. data/config/database.jdbcmysql.yml +0 -30
  133. data/config/database.mysql.yml +0 -27
  134. data/config/database.postgres.yml +0 -25
  135. data/config/database.sqlite3.yml +0 -11
  136. data/config/environment.rb +0 -6
  137. data/config/initializers/query_reviewer_patch.rb +0 -12
  138. data/config/initializers/rack_1_2_1_patch.rb +0 -12
  139. data/config/locales/en.yml +0 -5
  140. data/features/acts_as_content_page.feature +0 -62
  141. data/features/add_content_to_pages.feature +0 -45
  142. data/features/caching.feature +0 -13
  143. data/features/ckeditor.feature +0 -11
  144. data/features/commands/confirm_aruba_works.feature +0 -24
  145. data/features/commands/generate_module.feature +0 -54
  146. data/features/commands/install_browsercms.feature +0 -21
  147. data/features/commands/new_demo_project.feature +0 -30
  148. data/features/commands/new_projects.feature +0 -50
  149. data/features/commands/upgrade_modules_to_3_4_0_from_3_1_x.feature +0 -19
  150. data/features/commands/upgrade_project_to_3_4_0_from_3_3_x.feature +0 -52
  151. data/features/commands/upgrading_modules.feature +0 -67
  152. data/features/content_blocks/manage_custom_blocks.feature +0 -67
  153. data/features/content_blocks/manage_html_blocks.feature +0 -48
  154. data/features/content_blocks/manage_image_blocks.feature +0 -41
  155. data/features/content_files.feature +0 -37
  156. data/features/content_pages.feature +0 -21
  157. data/features/generators/content_blocks_for_modules.feature +0 -58
  158. data/features/generators/content_blocks_for_projects.feature +0 -109
  159. data/features/install_content.feature +0 -25
  160. data/features/jquery-testplan.txt +0 -12
  161. data/features/manage_groups.feature +0 -33
  162. data/features/manage_page_routes.feature +0 -72
  163. data/features/manage_redirects.feature +0 -20
  164. data/features/manage_sections.feature +0 -12
  165. data/features/manage_tasks.feature +0 -25
  166. data/features/manage_users.feature +0 -38
  167. data/features/page_templates.feature +0 -49
  168. data/features/portlets/email_friend_portlet.feature +0 -29
  169. data/features/portlets/portlets.feature +0 -100
  170. data/features/portlets/tag_cloud_portlet.feature +0 -28
  171. data/features/sitemap/create_pages.feature +0 -15
  172. data/features/sitemap/manage_links.feature +0 -29
  173. data/features/sitemap/sitemap.feature +0 -18
  174. data/features/step_definitions/acts_as_content_page_steps.rb.rb +0 -3
  175. data/features/step_definitions/ckeditor_steps.rb +0 -13
  176. data/features/step_definitions/command_line_steps.rb +0 -212
  177. data/features/step_definitions/content_pages_steps.rb +0 -170
  178. data/features/step_definitions/data_steps.rb +0 -48
  179. data/features/step_definitions/edit_page_templates_steps.rb +0 -21
  180. data/features/step_definitions/html_blocks_steps.rb +0 -9
  181. data/features/step_definitions/install_content_steps.rb +0 -4
  182. data/features/step_definitions/manage_content_blocks_steps.rb +0 -26
  183. data/features/step_definitions/manage_image_blocks_steps.rb +0 -31
  184. data/features/step_definitions/manage_sections_steps.rb +0 -18
  185. data/features/step_definitions/manage_user_steps.rb +0 -22
  186. data/features/step_definitions/more_custom_block_steps.rb +0 -34
  187. data/features/step_definitions/page_route_steps.rb +0 -65
  188. data/features/step_definitions/page_template_steps.rb +0 -5
  189. data/features/step_definitions/permissions_steps.rb +0 -13
  190. data/features/step_definitions/portlets_steps.rb +0 -64
  191. data/features/step_definitions/redirect_steps.rb +0 -12
  192. data/features/step_definitions/sitemap_steps.rb +0 -18
  193. data/features/step_definitions/tag_cloud_steps.rb +0 -11
  194. data/features/step_definitions/task_steps.rb +0 -4
  195. data/features/step_definitions/taxonomy_steps.rb +0 -16
  196. data/features/step_definitions/upgrade_module_steps.rb +0 -76
  197. data/features/step_definitions/web_steps.rb +0 -211
  198. data/features/support/async_support.rb +0 -17
  199. data/features/support/command_line_helpers.rb +0 -63
  200. data/features/support/debug_formatter.rb +0 -7
  201. data/features/support/debugging.rb +0 -28
  202. data/features/support/env.rb +0 -73
  203. data/features/support/git_api.rb +0 -9
  204. data/features/support/open_on_first_failure.rb +0 -25
  205. data/features/support/paths.rb +0 -32
  206. data/features/support/rails_api.rb +0 -8
  207. data/features/support/selectors.rb +0 -39
  208. data/features/support/transforms.rb +0 -7
  209. data/features/taxonomy/add_content_with_category.feature +0 -30
  210. data/features/taxonomy/manage_categories.feature +0 -20
  211. data/features/taxonomy/manage_category_types.feature +0 -16
  212. data/lib/cms/init.rb +0 -105
  213. data/lib/tasks/data.rake +0 -43
  214. data/lib/tasks/db.rake +0 -82
  215. data/public/styled_file_field/index.html +0 -72
  216. data/script/cucumber +0 -10
  217. data/script/rails +0 -6
  218. data/test/console_helper.rb +0 -5
  219. data/test/custom_assertions.rb +0 -84
  220. data/test/dummy/Rakefile +0 -7
  221. data/test/dummy/app/assets/javascripts/application.js +0 -9
  222. data/test/dummy/app/assets/javascripts/content_page.js +0 -2
  223. data/test/dummy/app/assets/stylesheets/application.css +0 -7
  224. data/test/dummy/app/assets/stylesheets/content_page.css +0 -4
  225. data/test/dummy/app/controllers/application_controller.rb +0 -3
  226. data/test/dummy/app/controllers/cms/products_controller.rb +0 -2
  227. data/test/dummy/app/controllers/cms/sample_blocks_controller.rb +0 -3
  228. data/test/dummy/app/controllers/content_page_controller.rb +0 -13
  229. data/test/dummy/app/helpers/application_helper.rb +0 -2
  230. data/test/dummy/app/helpers/content_page_helper.rb +0 -2
  231. data/test/dummy/app/mailers/.gitkeep +0 -0
  232. data/test/dummy/app/models/.gitkeep +0 -0
  233. data/test/dummy/app/models/cms/sample_block.rb +0 -22
  234. data/test/dummy/app/models/product.rb +0 -5
  235. data/test/dummy/app/views/cms/products/_form.html.erb +0 -7
  236. data/test/dummy/app/views/cms/products/render.html.erb +0 -3
  237. data/test/dummy/app/views/content_page/custom_page.html.erb +0 -3
  238. data/test/dummy/app/views/content_page/index.html.erb +0 -2
  239. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  240. data/test/dummy/app/views/layouts/templates/default.html.erb +0 -17
  241. data/test/dummy/app/views/layouts/templates/subpage.html.erb +0 -16
  242. data/test/dummy/app/views/test_route/index.html.erb +0 -14
  243. data/test/dummy/config.ru +0 -4
  244. data/test/dummy/config/application.rb +0 -45
  245. data/test/dummy/config/boot.rb +0 -10
  246. data/test/dummy/config/database.yml +0 -27
  247. data/test/dummy/config/environment.rb +0 -5
  248. data/test/dummy/config/environments/development.rb +0 -32
  249. data/test/dummy/config/environments/production.rb +0 -60
  250. data/test/dummy/config/environments/test.rb +0 -46
  251. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  252. data/test/dummy/config/initializers/browsercms.rb +0 -7
  253. data/test/dummy/config/initializers/inflections.rb +0 -10
  254. data/test/dummy/config/initializers/mime_types.rb +0 -5
  255. data/test/dummy/config/initializers/quiet_sprocket_assets.rb +0 -13
  256. data/test/dummy/config/initializers/secret_token.rb +0 -7
  257. data/test/dummy/config/initializers/session_store.rb +0 -8
  258. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  259. data/test/dummy/config/locales/en.yml +0 -5
  260. data/test/dummy/config/routes.rb +0 -23
  261. data/test/dummy/db/migrate/20111228141250_create_products.rb +0 -16
  262. data/test/dummy/db/seeds.rb +0 -1
  263. data/test/dummy/lib/assets/.gitkeep +0 -0
  264. data/test/dummy/public/404.html +0 -26
  265. data/test/dummy/public/422.html +0 -26
  266. data/test/dummy/public/500.html +0 -26
  267. data/test/dummy/public/favicon.ico +0 -0
  268. data/test/dummy/script/rails +0 -6
  269. data/test/dummy/test/functional/content_page_controller_test.rb +0 -9
  270. data/test/dummy/test/unit/helpers/content_page_helper_test.rb +0 -4
  271. data/test/factories.rb +0 -235
  272. data/test/fixtures/multipart/foo.jpg +0 -0
  273. data/test/fixtures/multipart/sample_upload.txt +0 -1
  274. data/test/fixtures/multipart/second_upload.txt +0 -1
  275. data/test/fixtures/multipart/test.jpg +0 -0
  276. data/test/fixtures/multipart/version1.txt +0 -1
  277. data/test/fixtures/multipart/version2.txt +0 -1
  278. data/test/functional/cms/cache_controller_test.rb +0 -16
  279. data/test/functional/cms/categories_controller_test.rb +0 -28
  280. data/test/functional/cms/connectors_controller_test.rb +0 -64
  281. data/test/functional/cms/content_block_controller_test.rb +0 -127
  282. data/test/functional/cms/content_controller_test.rb +0 -351
  283. data/test/functional/cms/dashboard_controller_test.rb +0 -20
  284. data/test/functional/cms/file_blocks_controller_test.rb +0 -55
  285. data/test/functional/cms/home_controller_test.rb +0 -160
  286. data/test/functional/cms/html_blocks_controller_test.rb +0 -159
  287. data/test/functional/cms/image_blocks_controller_test.rb +0 -78
  288. data/test/functional/cms/links_controller_test.rb +0 -92
  289. data/test/functional/cms/log/test.log +0 -0
  290. data/test/functional/cms/pages_controller_test.rb +0 -233
  291. data/test/functional/cms/portlets_controller_test.rb +0 -57
  292. data/test/functional/cms/sections_controller_test.rb +0 -234
  293. data/test/functional/cms/sessions_controller_test.rb +0 -80
  294. data/test/functional/cms/tasks_controller_test.rb +0 -64
  295. data/test/functional/cms/toolbar_controller_test.rb +0 -76
  296. data/test/functional/cms/users_controller_test.rb +0 -218
  297. data/test/integration/cms/password_management_test.rb +0 -66
  298. data/test/integration/sitemap_performance_test.rb +0 -26
  299. data/test/mock_file.rb +0 -33
  300. data/test/performance/browsing_test.rb +0 -9
  301. data/test/support/engine_controller_hacks.rb +0 -34
  302. data/test/support/factory_helpers.rb +0 -57
  303. data/test/support/rails_3_1_routes_hack.rb +0 -70
  304. data/test/test_helper.rb +0 -199
  305. data/test/test_logging.rb +0 -67
  306. data/test/unit/active_record_callbacks.rb +0 -50
  307. data/test/unit/behaviors/attaching_test.rb +0 -370
  308. data/test/unit/behaviors/cms_user_test.rb +0 -67
  309. data/test/unit/behaviors/connectable_test.rb +0 -32
  310. data/test/unit/behaviors/connecting_test.rb +0 -56
  311. data/test/unit/behaviors/dynamic_attributes_test.rb +0 -74
  312. data/test/unit/behaviors/namespacing_test.rb +0 -76
  313. data/test/unit/behaviors/publishable_test.rb +0 -83
  314. data/test/unit/behaviors/rendering_test.rb +0 -68
  315. data/test/unit/behaviors/searching_test.rb +0 -102
  316. data/test/unit/behaviors/taggable_test.rb +0 -110
  317. data/test/unit/behaviors/userstamping_test.rb +0 -27
  318. data/test/unit/behaviors/versioning_test.rb +0 -102
  319. data/test/unit/extensions/active_record/base_test.rb +0 -25
  320. data/test/unit/extensions/hash_test.rb +0 -26
  321. data/test/unit/extensions/integer_test.rb +0 -10
  322. data/test/unit/extensions/string_test.rb +0 -14
  323. data/test/unit/factories_test.rb +0 -50
  324. data/test/unit/generators/install_generator_test.rb +0 -15
  325. data/test/unit/helpers/application_helper_test.rb +0 -104
  326. data/test/unit/helpers/date_picker_test.rb +0 -17
  327. data/test/unit/helpers/menu_helper_test.rb +0 -240
  328. data/test/unit/helpers/page_helper_test.rb +0 -69
  329. data/test/unit/helpers/path_helper_test.rb +0 -38
  330. data/test/unit/helpers/rendering_helper_test.rb +0 -8
  331. data/test/unit/lib/acts_as_content_page_test.rb +0 -72
  332. data/test/unit/lib/cms/authentication/controller_test.rb +0 -20
  333. data/test/unit/lib/cms/engine_helper_test.rb +0 -119
  334. data/test/unit/lib/cms/sitemap_test.rb +0 -210
  335. data/test/unit/lib/cms_domain_support_test.rb +0 -44
  336. data/test/unit/lib/command_line_test.rb +0 -70
  337. data/test/unit/lib/content_block_test.rb +0 -304
  338. data/test/unit/lib/content_rendering_support_test.rb +0 -40
  339. data/test/unit/lib/generators_test.rb +0 -40
  340. data/test/unit/lib/routes_test.rb +0 -98
  341. data/test/unit/mock_file_test.rb +0 -19
  342. data/test/unit/models/attachment_test.rb +0 -160
  343. data/test/unit/models/category_test.rb +0 -40
  344. data/test/unit/models/category_type_test.rb +0 -8
  345. data/test/unit/models/connector_test.rb +0 -152
  346. data/test/unit/models/content_type_group_test.rb +0 -26
  347. data/test/unit/models/content_type_test.rb +0 -177
  348. data/test/unit/models/dynamic_views_test.rb +0 -36
  349. data/test/unit/models/email_page_portlet_test.rb +0 -20
  350. data/test/unit/models/file_block_test.rb +0 -246
  351. data/test/unit/models/group_test.rb +0 -29
  352. data/test/unit/models/html_block_test.rb +0 -121
  353. data/test/unit/models/image_block_test.rb +0 -35
  354. data/test/unit/models/link_test.rb +0 -52
  355. data/test/unit/models/namespaces_test.rb +0 -57
  356. data/test/unit/models/page_partial_test.rb +0 -37
  357. data/test/unit/models/page_route_test.rb +0 -113
  358. data/test/unit/models/page_template_test.rb +0 -50
  359. data/test/unit/models/page_test.rb +0 -879
  360. data/test/unit/models/permission_test.rb +0 -10
  361. data/test/unit/models/portlet_test.rb +0 -99
  362. data/test/unit/models/sections_test.rb +0 -278
  363. data/test/unit/models/site_test.rb +0 -50
  364. data/test/unit/models/task_test.rb +0 -150
  365. data/test/unit/models/user_test.rb +0 -358
  366. data/test/unit/schema_statements_test.rb +0 -137
  367. data/todo_list.markdown +0 -50
@@ -1,5 +1,8 @@
1
1
  module Cms
2
2
  class UserGroupMembership < ActiveRecord::Base
3
+
4
+ include Cms::DefaultAccessible
5
+
3
6
  belongs_to :group, :class_name => 'Cms::Group'
4
7
  belongs_to :user, :class_name => 'Cms::User'
5
8
  end
@@ -0,0 +1,14 @@
1
+ <%
2
+ show_delete = true
3
+ show_delete = can_delete if defined?(can_delete)
4
+ %>
5
+ <tr id="<%= dom_id(attachment)%>">
6
+ <% if attachment.is_image? %>
7
+ <td><%= link_to image_tag(attachment_path_for(attachment), :size => '60x60', :data=>{:purpose=>'attachment'}), attachment_path_for(attachment) %></td>
8
+ <% else %>
9
+ <td><%= image_tag "cms/icons/file_types/#{attachment.icon}.png" %>
10
+ <% end %>
11
+ <td><%= attachment.attachment_name.singularize.capitalize %></td>
12
+ <td><%= number_to_human_size(attachment.size) %></td>
13
+ <td><%= link_to_function "Delete", "$.cms.AttachmentManager.destroy(#{attachment.id})" if show_delete %></td>
14
+ </tr>
@@ -0,0 +1,17 @@
1
+ <div class="fields" id="assets_table">
2
+ <label><span id="asset-name"><%= block.class.name %></span> Attachments</label>
3
+ <br /><br />
4
+ <table style="display:<%= block.multiple_attachments.empty? ? "none" : "block"%>">
5
+ <tr>
6
+ <th>Preview</th>
7
+ <th>Type</th>
8
+ <th>Size</th>
9
+ <th></th>
10
+ <tr>
11
+ <% for attachment in block.multiple_attachments %>
12
+ <% unless attachment.new_record? %>
13
+ <%= render :partial => "cms/attachments/attachment", :locals => { :attachment => attachment, :can_delete => can_delete } %>
14
+ <% end %>
15
+ <% end %>
16
+ </table>
17
+ </div>
@@ -0,0 +1,4 @@
1
+ <table>
2
+ <%= render @attachment %>
3
+ </table>
4
+ <span id="asset-id"><%= attachment.id %></span>
@@ -26,8 +26,7 @@
26
26
  <th<%= attrs %>>
27
27
  <div class="dividers">
28
28
  <% if column[:order] %>
29
- <%= link_to column[:label], cms_index_path_for(content_type,
30
- :order => determine_order(params[:order], column[:order])) %>
29
+ <%= link_to column[:label], cms_sortable_column_path(content_type, column[:order])%>
31
30
  <% else %>
32
31
  <%= column[:label] %>
33
32
  <% end %>
@@ -83,5 +82,5 @@
83
82
  <% if params[:search] && @blocks.size == 0 %>
84
83
  <div class="pagination">No results found for '<%= params[:search][:term] %>'</div>
85
84
  <% elsif @blocks.total_pages > 1 %>
86
- <%= render_pagination @blocks, content_type.content_block_type, :order => params[:order], :search => params[:search] %>
85
+ <%= render_pagination @blocks, content_type, :order => params[:order], :search => params[:search] %>
87
86
  <% end %>
@@ -33,7 +33,7 @@
33
33
  <% if @block.respond_to?(:draft_version?) && !@block.draft_version? %>
34
34
  <div class="nv_pair">
35
35
  <div class="header">Version:</div>
36
- <div>v. <%= @block.version %> ( <%= link_to "Current", @block %> )</div>
36
+ <div>v. <%= @block.version %> ( <%= link_to "Current", block_path(@block) %> )</div>
37
37
  </div>
38
38
  <% end -%>
39
39
  <% if @block.class.renderable? %>
@@ -50,6 +50,6 @@
50
50
  <% if @views.size == 0 && params[:key_word]%>
51
51
  <div class="pagination">No results found for '<%= params[:key_word] %>'</div>
52
52
  <% elsif @views.total_pages > 1 %>
53
- <%= render_pagination @views, dynamic_view_type.resource_name %>
53
+ <%= render_pagination @views, dynamic_view_type %>
54
54
  <% end %>
55
55
 
@@ -35,5 +35,5 @@
35
35
  <div class="br"></div>
36
36
  </div>
37
37
  <% if @messages.total_pages > 1 %>
38
- <%= render_pagination @messages, :email_messages %>
38
+ <%= render_pagination @messages, Cms::EmailMessage %>
39
39
  <% end %>
@@ -1,31 +1,5 @@
1
- <%
2
- root = Cms::Section.root.first
3
- root.full_path = root.name
4
- @sections = []
5
- @sections << root
6
- @sections += root.master_section_list
7
- @sections.each {|s| s.full_path = "/" + s.full_path unless s == root }
8
- @block.attachment_file_path = @block.attachment.file_path if @block.attachment_file_path.blank? && !@block.new_record?
9
- %>
10
- <%= content_for :html_head do %>
11
- <%= javascript_tag do %>
12
- jQuery(function($) {
13
- <% if @block.new_record? %>
14
- var sectionIdPathMap = <%= @sections.inject({}){|map, sec| map[sec.id.to_s] = sec.path.sub(/\/$/,''); map}.to_json.html_safe %>
15
- $('#file_block_attachment_file, #file_block_attachment_section_id').change(function(){
16
- $('#file_block_attachment_file_path').val(sectionIdPathMap[$('#file_block_attachment_section_id').val()]+'/'+$.cms.sanitizeFileName($('#file_block_attachment_file').val()))
17
- })
18
- <% end %>
19
- });
20
- <% end %>
21
- <% end %>
22
-
23
1
  <%= f.cms_text_field :name %>
24
- <%= f.cms_file_field :attachment_file, :label => "File" %>
25
- <%= f.cms_drop_down :attachment_section_id,
26
- @sections.map{|s| [s.full_path, s.id]},
27
- :label => "Section" %>
28
- <%= f.cms_text_field :attachment_file_path, :label => "Path" %>
2
+ <%= f.cms_file_field :file, :label => "File", :instructions=>"Select a file to upload.", edit_path: true, edit_section: true %>
29
3
  <%= f.cms_tag_list %>
30
4
 
31
5
 
@@ -0,0 +1,13 @@
1
+ <%
2
+ root = Cms::Section.root.first
3
+ root.full_path = root.name
4
+ @sections = []
5
+ @sections << root
6
+ @sections += root.master_section_list
7
+ @sections.each {|s| s.full_path = "/" + s.full_path unless s == root }
8
+ %>
9
+ <span style="display: hidden">
10
+ <% @sections.each do |s| -%>
11
+ <%= tag :span, :class=>"section_id_map", :data=>{:id=> s.id, :path => s.prependable_path} %>
12
+ <% end %>
13
+ </span>
@@ -1,5 +1,5 @@
1
1
  <div id="file_block_<%= @content_block.id %>" class="file_block">
2
- <%= image_tag "cms/icons/file_types/#{@content_block.attachment.icon}.png", :alt=>@content_block.attachment.icon %>
3
- <%= link_to @content_block.name, @content_block.attachment_link %>
4
- <%= @content_block.attachment.file_size.round_bytes %>
2
+ <%= image_tag "cms/icons/file_types/#{@content_block.file.icon}.png", :alt=>@content_block.file.icon %>
3
+ <%= link_to @content_block.name, attachment_path_for(@content_block.file) %>
4
+ <%= @content_block.file.data_file_size.round_bytes %>
5
5
  </div>
@@ -0,0 +1,26 @@
1
+ <% if asset_definitions.nil? %>
2
+ <p>This content type (<%= @block.class.name %>) does not have any define any attachments.<p>
3
+ <% else %>
4
+ <br/>
5
+ <%= render :partial => 'cms/attachments/attachment_table', :locals => {:block => @block, :can_delete => true} %>
6
+ <div class="fields">
7
+ <p>Upload a new attachment:</p>
8
+ </div>
9
+
10
+ <div class="fields select_fields">
11
+ <%= label_tag "Attachment Type" %>
12
+ <%= select_tag :asset_types, options_for_select(asset_types) %>
13
+ </div>
14
+ <%= f.hidden_field :attachment_id_list, :id => "attachment_manager_ids_list" %>
15
+
16
+ <div id="asset_add" class="fields file_fields" style="display:<%= asset_types.size > 1 ? "none" : "block" %>">
17
+ <label for="asset_add">Choose file</label>
18
+
19
+ <div id="asset_add_div">
20
+ <input type="file" name="attachment[data]" id="asset_add_file" onchange="$.cms.AttachmentManager.upload(this)"/>
21
+ <input type="hidden" id="asset_attachable_id" name="asset[attachable_id]" value="<%= @block.id %>"/>
22
+ <input type="hidden" id="asset_attachable_class" value="<%= @block.class.name %>"/>
23
+ <iframe src="javascript:false" name="asset_add_uploader" id="asset_add_uploader"></iframe>
24
+ </div>
25
+ </div>
26
+ <% end %>
@@ -1,36 +1,28 @@
1
- <% if cms_options[:fancy] %>
2
- <%= content_for :html_head do %>
3
- <%= javascript_tag do %>
4
- jQuery(function($) {
5
- $('#mock_<%= object_name %>_<%= method %>')
6
- .focus(function() {this.blur()})
7
- .mousedown(function() {this.blur()})
8
- $('#<%= object_name %>_<%= method %>').change(function() {
9
- $('#mock_<%= object_name %>_<%= method %>')
10
- .attr('value', $(this).attr('value'))
11
- })
12
- })
13
- <% end %>
14
- <% end %>
1
+ <%#
2
+ # Renders a single file field for a given attachment.
3
+ # method - The field name
4
+ #
5
+ # This loops over the attachments array for a given block in order to create a nested_hash. This allows multiple attachments to be created at once
6
+ # However, since content_types can have multiple attachments, we only want to render once for eatch attachment, regardless of how many times
7
+ # cms_file_field gets called.
8
+ %>
9
+ <%= f.fields_for :attachments do |a| %>
10
+ <% if a.object.attachment_name == method.to_s %>
11
+ <%= a.hidden_field :attachment_name, :value => method.to_s %>
12
+ <div class="fields file_fields">
13
+ <%= a.cms_label :data, cms_options[:label] %>
14
+ <div id="<%= object_name %>_<%= method %>_div" class="file_inputs">
15
+ <%= a.file_field :data, options.merge('data-purpose'=>"cms_file_field") %>
16
+ </div>
17
+ <%= a.cms_instructions cms_options[:instructions] %>
18
+ </div>
19
+ <% if options[:edit_section] %>
20
+ <%= render :partial=>'cms/file_blocks/section_selector' %>
21
+ <%= a.cms_drop_down :section_id, @sections.map {|s| [s.full_path, s.id]}, {:label => "Section"}, {'data-purpose'=>"section_selector"} %>
22
+ <% end %>
23
+ <% if options[:edit_path] %>
24
+ <% suggest_file_path = model_object.new_record? ? "suggest_file_path" : "keep_existing_path" %>
25
+ <%= a.cms_text_field :data_file_path, :label => "Path", :class=>suggest_file_path %>
26
+ <% end %>
27
+ <% end %>
15
28
  <% end %>
16
-
17
- <div class="fields file_fields">
18
- <% if cms_options[:label] %>
19
- <%= f.label method, cms_options[:label] %>
20
- <% else %>
21
- <%= f.label method %>
22
- <% end %>
23
- <div id="<%= object_name %>_<%= method %>_div" class="file_inputs">
24
- <%= f.file_field method, {:class=>"#{'fancy_' if cms_options[:fancy]}file"}.merge(options) %>
25
- <% if cms_options[:fancy] %>
26
- <div class="fakefile">
27
- <input type="text" name="temp" class="mock" id="mock_<%= object_name %>_<%= method %>" />
28
- <%= image_tag("cms/browse.gif") %>
29
- </div>
30
- <% end %>
31
- </div>
32
- <% if cms_options[:instructions] %>
33
- <div class="instructions"><%=h cms_options[:instructions] %></div>
34
- <br clear="all"/>
35
- <% end %>
36
- </div>
@@ -54,5 +54,5 @@
54
54
  <div class="br"></div>
55
55
  </div>
56
56
  <% if @groups.total_pages > 1 %>
57
- <%= render_pagination @groups, :groups %>
57
+ <%= render_pagination @groups, Cms::Group %>
58
58
  <% end %>
@@ -1,29 +1,3 @@
1
- <%
2
- root = Cms::Section.root.first
3
- root.full_path = root.name
4
- @sections = []
5
- @sections << root
6
- @sections += root.master_section_list
7
- @sections.each {|s| s.full_path = "/" + s.full_path unless s == root }
8
- @block.attachment_file_path = @block.attachment.file_path if @block.attachment_file_path.blank? && !@block.new_record?
9
- %>
10
- <%= content_for :html_head do %>
11
- <%= javascript_tag do %>
12
- jQuery(function($) {
13
- <% if @block.new_record? %>
14
- var sectionIdPathMap = <%= @sections.inject({}){|map, sec| map[sec.id.to_s] = sec.path.sub(/\/$/,''); map}.to_json.html_safe %>
15
- $('#image_block_attachment_file, #image_block_attachment_section_id').change(function(){
16
- $('#image_block_attachment_file_path').val(sectionIdPathMap[$('#image_block_attachment_section_id').val()]+'/'+$.cms.sanitizeFileName($('#image_block_attachment_file').val()))
17
- });
18
- <% end %>
19
- });
20
- <% end %>
21
- <% end %>
22
-
23
1
  <%= f.cms_text_field :name %>
24
- <%= f.cms_file_field :attachment_file, :label => "File" %>
25
- <%= f.cms_drop_down :attachment_section_id,
26
- @sections.map{|s| [s.full_path, s.id]},
27
- :label => "Section" %>
28
- <%= f.cms_text_field :attachment_file_path, :label => "Path" %>
2
+ <%= f.cms_file_field :file, :label => "File", :instructions=>"Select a file to upload.", edit_path: true, edit_section: true %>
29
3
  <%= f.cms_tag_list %>
@@ -1 +1,4 @@
1
- <img src="<%= @content_block.attachment_link %>" alt="<%=h @content_block.name %>"/>
1
+ <%= tag :img,
2
+ :src => attachment_path_for(@content_block.file),
3
+ :alt => h(@content_block.name),
4
+ :data => { :type => "image_block" } %>
@@ -51,3 +51,6 @@
51
51
  <div class="bl"></div>
52
52
  <div class="br"></div>
53
53
  </div>
54
+ <% if @page_routes.total_pages > 1 %>
55
+ <%= render_pagination @page_routes, Cms::PageRoute %>
56
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8" ?>
2
+ <error>
3
+ <message><%=h exception.message %></message>
4
+ <stacktrace>
5
+ <title>Stacktrace</title>
6
+ <body><pre><%=h exception.backtrace.join("<br />") %></pre></body>
7
+ </stacktrace>
8
+ </error>
@@ -49,5 +49,5 @@
49
49
  </div>
50
50
  </div>
51
51
  <% if @taggings.total_pages > 1 %>
52
- <%= render_pagination @taggings, :tag, {:id => @content_block} %>
52
+ <%= render_pagination @taggings, Cms::Tag, {:id => @content_block} %>
53
53
  <% end %>
@@ -0,0 +1,33 @@
1
+ <% if mobile_template_exists?(@page) %>
2
+ <style>
3
+ #mobile_toggle {
4
+ float: left;
5
+ text-transform: uppercase;
6
+ padding-left: 110px;
7
+ margin-top: 12px;
8
+ margin-right: 0px;
9
+ color: black;
10
+ font-weight: bold;
11
+ width: 200px;
12
+ }
13
+
14
+ #mobile_toggle div {
15
+ float: left;
16
+ }
17
+ </style>
18
+ <%
19
+ mobile_state = session[:mobile_mode] == true ? "ON" : "OFF"
20
+ button_text = session[:mobile_mode] == true ? "TURN OFF" : "TURN ON"
21
+ new_template = session[:mobile_mode] == true ? "full" : "mobile"
22
+ %>
23
+
24
+ <div id="mobile_toggle">
25
+ <div class="visual_editor_label">View As Mobile?:</div>
26
+ <div class="visual_editor_value_container">
27
+ <div><span id="visual_editor_state"><%= mobile_state %></span></div>
28
+ </div>
29
+ <div class="visual_editor_toggle_container">
30
+ <div class="sm_button"><%= link_to "<span id='visual_editor_action'>#{button_text}</span>".html_safe, "#{@page.path}?template=#{new_template}", :target => "_top", :class => "sm_button" %></div>
31
+ </div>
32
+ </div>
33
+ <% end %>
@@ -57,6 +57,6 @@
57
57
  <% if @users.size == 0 && params[:key_word]%>
58
58
  <div class="pagination">No results found for '<%= params[:key_word] %>'</div>
59
59
  <% elsif @users.total_pages > 1 %>
60
- <%= render_pagination @users, :users %>
60
+ <%= render_pagination @users, Cms::User %>
61
61
  <% end %>
62
62
 
@@ -86,13 +86,14 @@
86
86
  :class => "spacer button confirm_with_title http_delete#{ ' disabled' unless current_user.able_to_publish?(@page) }" %>
87
87
  <% else %>
88
88
  <%= link_to "<span>Revert to this Version</span>".html_safe,
89
- cms.revert_to_page_path(@page, @page.version),
89
+ cms.revert_page_path(@page, @page.version),
90
90
  :id => "revert_button",
91
91
  :class => "button http_put",
92
92
  :target => "_top" %>
93
93
  <% end %>
94
94
  <% end %>
95
95
 
96
+ <%= render :partial => "cms/toolbar/mobile_toggle" %>
96
97
  <div id="visual_editor_toggle">
97
98
  <% if @page.version == @page.draft.version %>
98
99
  <div class="visual_editor_label">Visual Editor:</div>
data/bin/bcms CHANGED
@@ -8,6 +8,7 @@ require 'active_support/core_ext/string/inflections'
8
8
  require 'cms/version'
9
9
  require 'cms/commands/actions'
10
10
  require 'cms/upgrades/v3_4_0'
11
+ require 'cms/upgrades/v3_5_0'
11
12
  # This seems to be required only due to a bug in Thor documented here:
12
13
  # https://rails.lighthouseapp.com/projects/8994/tickets/4692-error-when-creating-app-from-template-undefined-method-wrap-for-arrayclass
13
14
  # If this bug is fixed the following line can probably be removed.
@@ -24,6 +25,7 @@ class Cms::Install < Thor
24
25
  include Rails::Generators::Actions
25
26
  include Cms::Commands::Actions
26
27
  include Cms::Upgrades::V3_4_0
28
+ include Cms::Upgrades::V3_5_0
27
29
 
28
30
  def self.common_options
29
31
  method_option :database, :aliases => "-d", :desc => "Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite3/frontbase/ibm_db) [Default: sqlite3]"
@@ -70,19 +72,22 @@ class Cms::Install < Thor
70
72
 
71
73
  desc "upgrade", "Upgrades a BrowserCMS project to v#{Cms::VERSION}"
72
74
  method_option :skip_rails, :aliases => "--skip-rails", :desc => "Skip running `rake rails:update`.", :default => false, :type => :boolean
75
+ method_option :skip_bundle, :aliases => "--skip-bundle", :desc => "Don't run `bundle update` during the process'", :default => false, :type => :boolean
76
+
73
77
  def upgrade
74
78
  update_browsercms_gem_version
75
79
  comment_out_rails_in_gemfile
76
- run_bundle_install
80
+ run_bundle_update
77
81
  install_migrations
78
82
  rake "rails:update" unless options[:skip_rails]
79
83
  generate_rails_3_4_0_migration
84
+ upgrade_to_3_5_0
80
85
  install_cms_seed_data
81
86
 
82
87
  instructions = <<TEXT
83
- Upgrade is nearly complete. Review https://github.com/browsermedia/browsercms/wiki/Upgrading-to-3.4.x-from-3.3.x before proceeding.
88
+ Upgrade is nearly complete. Review https://github.com/browsermedia/browsercms/wiki/Upgrading-a-BrowserCMS-project before proceeding.
84
89
  Next Steps:
85
- 1. Revert/undo the changes (see the 3.4.x Upgrade guide for details)
90
+ 1. Review the changes made by the script, revert any files that need it.
86
91
  2. Run `rake db:migrate`
87
92
  TEXT
88
93
  puts instructions
@@ -171,34 +176,25 @@ Cms.table_prefix = "cms_"
171
176
  puts " then type 'rails server' and open your browser to 'http://localhost:3000'."
172
177
  end
173
178
 
174
- def configure_default_cache_directory
175
- insert_into_file "config/environments/production.rb", :after => "Application.configure do\n" do
176
- <<-CODE
177
- config.action_controller.page_cache_directory = File.join(Rails.root,'public','cache')
178
- CODE
179
- end
180
- end
181
-
182
179
  def enable_asset_precompiling
183
180
  gsub_file "config/environments/production.rb", /config\.assets\.compile = false/, 'config.assets.compile = true'
184
181
  end
185
182
 
186
183
  def configure_mail_server
187
- insert_into_file "config/environments/production.rb", :after => "config.active_support.deprecation = :notify" do
188
- %q{
189
-
190
- # Configure your mail server's address below
191
- config.action_mailer.smtp_settings = {:address => 'mail.yourmailserver.com', :domain => "#{SITE_DOMAIN}"}}
184
+ [
185
+ "# Configure your mail server's address below",
186
+ "config.action_mailer.smtp_settings = {:address => 'mail.yourmailserver.com', :domain => config.cms.site_domain}}\n"
187
+ ].reverse.each do |line|
188
+ environment line, :env => "production"
192
189
  end
193
190
  end
194
191
 
195
- def add_sitedomain_constant_to_environment_files
196
- %w{development test production}.each do |env|
197
- prepend_to_file "config/environments/#{env}.rb" do
198
- <<-CODE
199
- SITE_DOMAIN="localhost:3000"
200
- CODE
201
- end
192
+ def add_sitedomain_to_production
193
+ [
194
+ %!# Uncomment and set this to match your production URL. Used for emailing links to the CMS. (default: localhost:3000)!,
195
+ %!# config.cms.site_domain = "www.example.com"\n!
196
+ ].reverse.each do |line| # Reverse ensures comment appears first
197
+ environment line, :env => "production"
202
198
  end
203
199
  end
204
200
 
@@ -208,12 +204,11 @@ SITE_DOMAIN="localhost:3000"
208
204
  inside rails_app do
209
205
  install_cms_seed_data
210
206
  add_route_to_end("mount_browsercms")
211
- add_sitedomain_constant_to_environment_files
212
- configure_default_cache_directory
213
- configure_mail_server
214
207
  create_browsercms_initializer
215
208
  enable_asset_precompiling
216
209
  end
210
+ configure_mail_server
211
+ add_sitedomain_to_production
217
212
  end
218
213
 
219
214
  def generate_demo_project