browsercms-artirix 4.0.0.rc1.art4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (754) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +5 -0
  3. data/COPYRIGHT.txt +27 -0
  4. data/GPL.txt +674 -0
  5. data/LICENSE.txt +165 -0
  6. data/README.markdown +45 -0
  7. data/app/assets/fonts/icomoon.dev.svg +61 -0
  8. data/app/assets/fonts/icomoon.eot +0 -0
  9. data/app/assets/fonts/icomoon.svg +61 -0
  10. data/app/assets/fonts/icomoon.ttf +0 -0
  11. data/app/assets/fonts/icomoon.woff +0 -0
  12. data/app/assets/images/ckeditor/plugins/delete_content/icons/deletecontent.png +0 -0
  13. data/app/assets/images/ckeditor/plugins/edit_content/icons/editcontent.png +0 -0
  14. data/app/assets/images/ckeditor/plugins/move_content/icons/movecontentdown.png +0 -0
  15. data/app/assets/images/ckeditor/plugins/move_content/icons/movecontentup.png +0 -0
  16. data/app/assets/images/cms/administration/user_browser_bg.gif +0 -0
  17. data/app/assets/images/cms/arrow-down.png +0 -0
  18. data/app/assets/images/cms/arrow-up.png +0 -0
  19. data/app/assets/images/cms/bg.png +0 -0
  20. data/app/assets/images/cms/bl_curve.png +0 -0
  21. data/app/assets/images/cms/bottom_cap.png +0 -0
  22. data/app/assets/images/cms/bottom_cap_content.png +0 -0
  23. data/app/assets/images/cms/browse.gif +0 -0
  24. data/app/assets/images/cms/browser_media_logo.png +0 -0
  25. data/app/assets/images/cms/browsercms_logo.png +0 -0
  26. data/app/assets/images/cms/buttons/button.png +0 -0
  27. data/app/assets/images/cms/buttons/button_bg.png +0 -0
  28. data/app/assets/images/cms/buttons/button_cap.png +0 -0
  29. data/app/assets/images/cms/buttons/button_cap_h.png +0 -0
  30. data/app/assets/images/cms/buttons/button_cap_off.gif +0 -0
  31. data/app/assets/images/cms/buttons/button_cap_off_middle.gif +0 -0
  32. data/app/assets/images/cms/buttons/button_h.png +0 -0
  33. data/app/assets/images/cms/buttons/button_left_bg.png +0 -0
  34. data/app/assets/images/cms/buttons/button_off.png +0 -0
  35. data/app/assets/images/cms/buttons/button_off_middle.png +0 -0
  36. data/app/assets/images/cms/buttons/delete_x.png +0 -0
  37. data/app/assets/images/cms/buttons/delete_x_disabled.png +0 -0
  38. data/app/assets/images/cms/buttons/delete_x_h.png +0 -0
  39. data/app/assets/images/cms/buttons/sm_button.gif +0 -0
  40. data/app/assets/images/cms/buttons/sm_button_2.gif +0 -0
  41. data/app/assets/images/cms/buttons/sm_button_2_h.gif +0 -0
  42. data/app/assets/images/cms/buttons/sm_button_h.gif +0 -0
  43. data/app/assets/images/cms/cogs.png +0 -0
  44. data/app/assets/images/cms/containers/add.gif +0 -0
  45. data/app/assets/images/cms/containers/alpha.png +0 -0
  46. data/app/assets/images/cms/containers/beta.png +0 -0
  47. data/app/assets/images/cms/containers/delete.gif +0 -0
  48. data/app/assets/images/cms/containers/down.gif +0 -0
  49. data/app/assets/images/cms/containers/edit.gif +0 -0
  50. data/app/assets/images/cms/containers/up.gif +0 -0
  51. data/app/assets/images/cms/containers/view.gif +0 -0
  52. data/app/assets/images/cms/content_bg.gif +0 -0
  53. data/app/assets/images/cms/dashboard/bottom_cap.png +0 -0
  54. data/app/assets/images/cms/dashboard/bottom_cap_content.png +0 -0
  55. data/app/assets/images/cms/dashboard/header_bg.gif +0 -0
  56. data/app/assets/images/cms/dashboard/header_left_bg.gif +0 -0
  57. data/app/assets/images/cms/dashboard/home.png +0 -0
  58. data/app/assets/images/cms/dashboard/table_header_bg.gif +0 -0
  59. data/app/assets/images/cms/dashboard/top_cap.png +0 -0
  60. data/app/assets/images/cms/dashed.gif +0 -0
  61. data/app/assets/images/cms/datepicker/clear.gif +0 -0
  62. data/app/assets/images/cms/datepicker/close.gif +0 -0
  63. data/app/assets/images/cms/dk_button_l.gif +0 -0
  64. data/app/assets/images/cms/dk_button_r.gif +0 -0
  65. data/app/assets/images/cms/dot.png +0 -0
  66. data/app/assets/images/cms/draft_status.gif +0 -0
  67. data/app/assets/images/cms/file-uploading.gif +0 -0
  68. data/app/assets/images/cms/gray_long_bg.gif +0 -0
  69. data/app/assets/images/cms/home.png +0 -0
  70. data/app/assets/images/cms/icons/actions/add.png +0 -0
  71. data/app/assets/images/cms/icons/actions/config.png +0 -0
  72. data/app/assets/images/cms/icons/actions/connect.png +0 -0
  73. data/app/assets/images/cms/icons/actions/delete.png +0 -0
  74. data/app/assets/images/cms/icons/actions/down.png +0 -0
  75. data/app/assets/images/cms/icons/actions/edit.png +0 -0
  76. data/app/assets/images/cms/icons/actions/folder.png +0 -0
  77. data/app/assets/images/cms/icons/actions/folder_add.png +0 -0
  78. data/app/assets/images/cms/icons/actions/folder_delete.png +0 -0
  79. data/app/assets/images/cms/icons/actions/folder_edit.png +0 -0
  80. data/app/assets/images/cms/icons/actions/folder_move.png +0 -0
  81. data/app/assets/images/cms/icons/actions/folder_open.png +0 -0
  82. data/app/assets/images/cms/icons/actions/history.png +0 -0
  83. data/app/assets/images/cms/icons/actions/home.png +0 -0
  84. data/app/assets/images/cms/icons/actions/left.png +0 -0
  85. data/app/assets/images/cms/icons/actions/link.png +0 -0
  86. data/app/assets/images/cms/icons/actions/page.png +0 -0
  87. data/app/assets/images/cms/icons/actions/page_add.png +0 -0
  88. data/app/assets/images/cms/icons/actions/page_edit.png +0 -0
  89. data/app/assets/images/cms/icons/actions/page_move.png +0 -0
  90. data/app/assets/images/cms/icons/actions/redo.png +0 -0
  91. data/app/assets/images/cms/icons/actions/refresh.png +0 -0
  92. data/app/assets/images/cms/icons/actions/right.png +0 -0
  93. data/app/assets/images/cms/icons/actions/root_folder.png +0 -0
  94. data/app/assets/images/cms/icons/actions/root_link.png +0 -0
  95. data/app/assets/images/cms/icons/actions/root_page.png +0 -0
  96. data/app/assets/images/cms/icons/actions/undo.png +0 -0
  97. data/app/assets/images/cms/icons/actions/up.png +0 -0
  98. data/app/assets/images/cms/icons/actions/view.png +0 -0
  99. data/app/assets/images/cms/icons/file_types/doc.png +0 -0
  100. data/app/assets/images/cms/icons/file_types/file.png +0 -0
  101. data/app/assets/images/cms/icons/file_types/gif.png +0 -0
  102. data/app/assets/images/cms/icons/file_types/htm.png +0 -0
  103. data/app/assets/images/cms/icons/file_types/pdf.png +0 -0
  104. data/app/assets/images/cms/icons/file_types/ppt.png +0 -0
  105. data/app/assets/images/cms/icons/file_types/swf.png +0 -0
  106. data/app/assets/images/cms/icons/file_types/txt.png +0 -0
  107. data/app/assets/images/cms/icons/file_types/xls.png +0 -0
  108. data/app/assets/images/cms/icons/file_types/xml.png +0 -0
  109. data/app/assets/images/cms/icons/file_types/zip.png +0 -0
  110. data/app/assets/images/cms/icons/status/archived.gif +0 -0
  111. data/app/assets/images/cms/icons/status/draft.gif +0 -0
  112. data/app/assets/images/cms/icons/status/hidden.gif +0 -0
  113. data/app/assets/images/cms/icons/status/locked.gif +0 -0
  114. data/app/assets/images/cms/icons/status/published.gif +0 -0
  115. data/app/assets/images/cms/icons/status/unlocked.gif +0 -0
  116. data/app/assets/images/cms/icons/user.png +0 -0
  117. data/app/assets/images/cms/login_bg.jpg +0 -0
  118. data/app/assets/images/cms/login_bottom.jpg +0 -0
  119. data/app/assets/images/cms/login_top.gif +0 -0
  120. data/app/assets/images/cms/logo.png +0 -0
  121. data/app/assets/images/cms/lt_button_bg.gif +0 -0
  122. data/app/assets/images/cms/lt_button_l.gif +0 -0
  123. data/app/assets/images/cms/lt_button_r.gif +0 -0
  124. data/app/assets/images/cms/menu/block_cap_h.gif +0 -0
  125. data/app/assets/images/cms/menu/bottom_cap.png +0 -0
  126. data/app/assets/images/cms/menu/bottom_cap_menu.png +0 -0
  127. data/app/assets/images/cms/menu/bottom_cap_menu_first.png +0 -0
  128. data/app/assets/images/cms/menu/menu_header_first_bg.gif +0 -0
  129. data/app/assets/images/cms/menu/selected_block_cap.gif +0 -0
  130. data/app/assets/images/cms/menu/top_cap.png +0 -0
  131. data/app/assets/images/cms/menu/top_cap_menu_header.png +0 -0
  132. data/app/assets/images/cms/menu.png +0 -0
  133. data/app/assets/images/cms/menu_h.gif +0 -0
  134. data/app/assets/images/cms/menu_header.png +0 -0
  135. data/app/assets/images/cms/menu_open.png +0 -0
  136. data/app/assets/images/cms/menu_open_bg.gif +0 -0
  137. data/app/assets/images/cms/nav/on_bg.gif +0 -0
  138. data/app/assets/images/cms/nav.png +0 -0
  139. data/app/assets/images/cms/nav_admin.gif +0 -0
  140. data/app/assets/images/cms/nav_admin_h.gif +0 -0
  141. data/app/assets/images/cms/nav_admin_on.gif +0 -0
  142. data/app/assets/images/cms/nav_cap.png +0 -0
  143. data/app/assets/images/cms/nav_cap_h.gif +0 -0
  144. data/app/assets/images/cms/nav_content_library.gif +0 -0
  145. data/app/assets/images/cms/nav_content_library_h.gif +0 -0
  146. data/app/assets/images/cms/nav_content_library_on.gif +0 -0
  147. data/app/assets/images/cms/nav_dash.gif +0 -0
  148. data/app/assets/images/cms/nav_dash_h.gif +0 -0
  149. data/app/assets/images/cms/nav_dash_on.gif +0 -0
  150. data/app/assets/images/cms/nav_h.gif +0 -0
  151. data/app/assets/images/cms/nav_sitemap.gif +0 -0
  152. data/app/assets/images/cms/nav_sitemap_h.gif +0 -0
  153. data/app/assets/images/cms/nav_sitemap_on.gif +0 -0
  154. data/app/assets/images/cms/page_toolbar/page_toolbar_bg.gif +0 -0
  155. data/app/assets/images/cms/page_toolbar/page_toolbar_inset_bg.gif +0 -0
  156. data/app/assets/images/cms/page_toolbar/page_toolbar_inset_draft_bg.gif +0 -0
  157. data/app/assets/images/cms/page_toolbar/page_toolbar_inset_draft_l.gif +0 -0
  158. data/app/assets/images/cms/page_toolbar/page_toolbar_inset_draft_r.gif +0 -0
  159. data/app/assets/images/cms/page_toolbar/page_toolbar_inset_l.gif +0 -0
  160. data/app/assets/images/cms/page_toolbar/page_toolbar_inset_published_bg.gif +0 -0
  161. data/app/assets/images/cms/page_toolbar/page_toolbar_inset_published_l.gif +0 -0
  162. data/app/assets/images/cms/page_toolbar/page_toolbar_inset_published_r.gif +0 -0
  163. data/app/assets/images/cms/page_toolbar/page_toolbar_inset_r.gif +0 -0
  164. data/app/assets/images/cms/page_toolbar/page_toolbar_l.gif +0 -0
  165. data/app/assets/images/cms/page_toolbar/page_toolbar_r.gif +0 -0
  166. data/app/assets/images/cms/page_toolbar/status_draft_bg.gif +0 -0
  167. data/app/assets/images/cms/page_toolbar/status_draft_l.gif +0 -0
  168. data/app/assets/images/cms/page_toolbar/status_l.gif +0 -0
  169. data/app/assets/images/cms/page_toolbar/status_published_bg.gif +0 -0
  170. data/app/assets/images/cms/page_toolbar/status_published_l.gif +0 -0
  171. data/app/assets/images/cms/page_toolbar/visual_editor_bg.gif +0 -0
  172. data/app/assets/images/cms/page_toolbar/visual_editor_end.gif +0 -0
  173. data/app/assets/images/cms/page_toolbar/visual_editor_r.gif +0 -0
  174. data/app/assets/images/cms/page_toolbar/visual_editor_state_bg.gif +0 -0
  175. data/app/assets/images/cms/pages/add_connectable.gif +0 -0
  176. data/app/assets/images/cms/pages/connect_connectable.gif +0 -0
  177. data/app/assets/images/cms/pages/container_border.gif +0 -0
  178. data/app/assets/images/cms/pages/container_border_l.gif +0 -0
  179. data/app/assets/images/cms/pages/container_border_r.gif +0 -0
  180. data/app/assets/images/cms/pages/delete_connectable.gif +0 -0
  181. data/app/assets/images/cms/pages/down_connectable.gif +0 -0
  182. data/app/assets/images/cms/pages/down_connectable_disabled.gif +0 -0
  183. data/app/assets/images/cms/pages/edit_connectable.gif +0 -0
  184. data/app/assets/images/cms/pages/edit_connectable_2.gif +0 -0
  185. data/app/assets/images/cms/pages/show_connectable.gif +0 -0
  186. data/app/assets/images/cms/pages/up_connectable.gif +0 -0
  187. data/app/assets/images/cms/pages/up_connectable_disabled.gif +0 -0
  188. data/app/assets/images/cms/pagination/first.gif +0 -0
  189. data/app/assets/images/cms/pagination/first_h.gif +0 -0
  190. data/app/assets/images/cms/pagination/input.gif +0 -0
  191. data/app/assets/images/cms/pagination/last.gif +0 -0
  192. data/app/assets/images/cms/pagination/last_h.gif +0 -0
  193. data/app/assets/images/cms/pagination/next.gif +0 -0
  194. data/app/assets/images/cms/pagination/next_h.gif +0 -0
  195. data/app/assets/images/cms/pagination/previous.gif +0 -0
  196. data/app/assets/images/cms/pagination/previous_h.gif +0 -0
  197. data/app/assets/images/cms/pencil.png +0 -0
  198. data/app/assets/images/cms/plus.png +0 -0
  199. data/app/assets/images/cms/published_status.gif +0 -0
  200. data/app/assets/images/cms/search.png +0 -0
  201. data/app/assets/images/cms/search_submit.gif +0 -0
  202. data/app/assets/images/cms/search_submit_h.gif +0 -0
  203. data/app/assets/images/cms/searchbox_gradient.gif +0 -0
  204. data/app/assets/images/cms/select_bg.gif +0 -0
  205. data/app/assets/images/cms/select_bg_2.gif +0 -0
  206. data/app/assets/images/cms/sitemap/bottom_cap.png +0 -0
  207. data/app/assets/images/cms/sitemap/buffer_caps.png +0 -0
  208. data/app/assets/images/cms/sitemap/contract.png +0 -0
  209. data/app/assets/images/cms/sitemap/corners.gif +0 -0
  210. data/app/assets/images/cms/sitemap/corners_hover.gif +0 -0
  211. data/app/assets/images/cms/sitemap/divider.gif +0 -0
  212. data/app/assets/images/cms/sitemap/expand.png +0 -0
  213. data/app/assets/images/cms/sitemap/gradient.gif +0 -0
  214. data/app/assets/images/cms/sitemap/gray_contract.png +0 -0
  215. data/app/assets/images/cms/sitemap/gray_expand.png +0 -0
  216. data/app/assets/images/cms/sitemap/no_contents.png +0 -0
  217. data/app/assets/images/cms/sitemap/site_root_cap.png +0 -0
  218. data/app/assets/images/cms/sitemap/tooltip.gif +0 -0
  219. data/app/assets/images/cms/sitemap/top_cap_content.png +0 -0
  220. data/app/assets/images/cms/solid.gif +0 -0
  221. data/app/assets/images/cms/table/bl.gif +0 -0
  222. data/app/assets/images/cms/table/br.gif +0 -0
  223. data/app/assets/images/cms/table/divider.gif +0 -0
  224. data/app/assets/images/cms/table/td_cap_first_h.gif +0 -0
  225. data/app/assets/images/cms/table/td_cap_first_s.gif +0 -0
  226. data/app/assets/images/cms/table/td_cap_last_h.gif +0 -0
  227. data/app/assets/images/cms/table/td_cap_last_s.gif +0 -0
  228. data/app/assets/images/cms/table/td_last_bg.gif +0 -0
  229. data/app/assets/images/cms/table/th_bg.gif +0 -0
  230. data/app/assets/images/cms/table/th_divider.gif +0 -0
  231. data/app/assets/images/cms/table/th_last_bg.gif +0 -0
  232. data/app/assets/images/cms/table/tl.gif +0 -0
  233. data/app/assets/images/cms/table/tr.gif +0 -0
  234. data/app/assets/images/cms/table/tr_bg.gif +0 -0
  235. data/app/assets/images/cms/toolbar_bg.png +0 -0
  236. data/app/assets/images/cms/top_cap.png +0 -0
  237. data/app/assets/images/cms/top_cap_content.png +0 -0
  238. data/app/assets/images/cms/top_cap_menu_header.png +0 -0
  239. data/app/assets/images/cms/user.png +0 -0
  240. data/app/assets/images/cms/user_search_submit.gif +0 -0
  241. data/app/assets/images/cms/usercontrols_bg.png +0 -0
  242. data/app/assets/images/cms/usercontrols_bg_cap.png +0 -0
  243. data/app/assets/javascripts/bcms/ckeditor.js +8 -0
  244. data/app/assets/javascripts/bcms/ckeditor_inline.js +23 -0
  245. data/app/assets/javascripts/bcms/ckeditor_load.js +54 -0
  246. data/app/assets/javascripts/bcms/ckeditor_standard_config.js +10 -0
  247. data/app/assets/javascripts/ckeditor/plugins/delete_content/plugin.js +36 -0
  248. data/app/assets/javascripts/ckeditor/plugins/edit_content/plugin.js +24 -0
  249. data/app/assets/javascripts/ckeditor/plugins/move_content/plugin.js +25 -0
  250. data/app/assets/javascripts/cms/ajax.js +60 -0
  251. data/app/assets/javascripts/cms/application.js +18 -0
  252. data/app/assets/javascripts/cms/attachment_manager.js +88 -0
  253. data/app/assets/javascripts/cms/content_library.js +121 -0
  254. data/app/assets/javascripts/cms/content_types.js +13 -0
  255. data/app/assets/javascripts/cms/core_library.js.erb +210 -0
  256. data/app/assets/javascripts/cms/form_builder.js +250 -0
  257. data/app/assets/javascripts/cms/namespace.js +2 -0
  258. data/app/assets/javascripts/cms/new_content_button.js +27 -0
  259. data/app/assets/javascripts/cms/page_editor.js +189 -0
  260. data/app/assets/javascripts/cms/page_toolbar.js +13 -0
  261. data/app/assets/javascripts/cms/site.js +2 -0
  262. data/app/assets/javascripts/cms/sitemap.js +219 -0
  263. data/app/assets/javascripts/cms/toolbar.js +21 -0
  264. data/app/assets/javascripts/cms/user.js +40 -0
  265. data/app/assets/javascripts/jquery.exists.js +5 -0
  266. data/app/assets/javascripts/jquery.taglist.js +157 -0
  267. data/app/assets/stylesheets/cms/_assets.scss +60 -0
  268. data/app/assets/stylesheets/cms/_base.scss +42 -0
  269. data/app/assets/stylesheets/cms/_cms-buttons.scss +73 -0
  270. data/app/assets/stylesheets/cms/_cms-forms.scss +70 -0
  271. data/app/assets/stylesheets/cms/_colors.scss +20 -0
  272. data/app/assets/stylesheets/cms/_dashboard.scss +25 -0
  273. data/app/assets/stylesheets/cms/_glyph.scss +60 -0
  274. data/app/assets/stylesheets/cms/_main-area.scss +62 -0
  275. data/app/assets/stylesheets/cms/_nav.scss +197 -0
  276. data/app/assets/stylesheets/cms/_sidebar.scss +64 -0
  277. data/app/assets/stylesheets/cms/_sitemap.scss +209 -0
  278. data/app/assets/stylesheets/cms/_submenu.scss +48 -0
  279. data/app/assets/stylesheets/cms/application.scss +49 -0
  280. data/app/assets/stylesheets/cms/core.scss +96 -0
  281. data/app/assets/stylesheets/cms/default-forms.scss +3 -0
  282. data/app/assets/stylesheets/cms/includes/_animation.scss +2 -0
  283. data/app/assets/stylesheets/cms/includes/_rem.scss +120 -0
  284. data/app/assets/stylesheets/cms/includes/animation/_animate.scss +31 -0
  285. data/app/assets/stylesheets/cms/includes/animation/_core.scss +127 -0
  286. data/app/assets/stylesheets/cms/includes/animation/_shared.scss +22 -0
  287. data/app/assets/stylesheets/cms/includes/animation/animate/_attention-seekers.scss +152 -0
  288. data/app/assets/stylesheets/cms/includes/animation/animate/_bouncing.scss +3 -0
  289. data/app/assets/stylesheets/cms/includes/animation/animate/_classes.scss +21 -0
  290. data/app/assets/stylesheets/cms/includes/animation/animate/_fading.scss +3 -0
  291. data/app/assets/stylesheets/cms/includes/animation/animate/_flippers.scss +87 -0
  292. data/app/assets/stylesheets/cms/includes/animation/animate/_lightspeed.scss +24 -0
  293. data/app/assets/stylesheets/cms/includes/animation/animate/_rotating.scss +3 -0
  294. data/app/assets/stylesheets/cms/includes/animation/animate/_specials.scss +42 -0
  295. data/app/assets/stylesheets/cms/includes/animation/animate/bouncing/_bouncing-entrances.scss +68 -0
  296. data/app/assets/stylesheets/cms/includes/animation/animate/bouncing/_bouncing-exits.scss +60 -0
  297. data/app/assets/stylesheets/cms/includes/animation/animate/fading/_fading-entrances.scss +86 -0
  298. data/app/assets/stylesheets/cms/includes/animation/animate/fading/_fading-exits.scss +86 -0
  299. data/app/assets/stylesheets/cms/includes/animation/animate/rotating/_rotating-entrances.scss +58 -0
  300. data/app/assets/stylesheets/cms/includes/animation/animate/rotating/_rotating-exits.scss +58 -0
  301. data/app/assets/stylesheets/cms/page_content_editing.scss +4 -0
  302. data/app/assets/stylesheets/cms/page_editor.scss +4 -0
  303. data/app/assets/stylesheets/cms/style.scss +138 -0
  304. data/app/assets/stylesheets/cms/styles/_alerts.scss +150 -0
  305. data/app/assets/stylesheets/cms/styles/_base-grid.scss +299 -0
  306. data/app/assets/stylesheets/cms/styles/_buttons.scss +247 -0
  307. data/app/assets/stylesheets/cms/styles/_dropdown.scss +155 -0
  308. data/app/assets/stylesheets/cms/styles/_forms.scss +728 -0
  309. data/app/assets/stylesheets/cms/styles/_glyph.scss +86 -0
  310. data/app/assets/stylesheets/cms/styles/_images.scss +86 -0
  311. data/app/assets/stylesheets/cms/styles/_lists.scss +115 -0
  312. data/app/assets/stylesheets/cms/styles/_modal.scss +174 -0
  313. data/app/assets/stylesheets/cms/styles/_progress.scss +43 -0
  314. data/app/assets/stylesheets/cms/styles/_tables.scss +141 -0
  315. data/app/assets/stylesheets/cms/styles/_text.scss +134 -0
  316. data/app/controllers/cms/application_controller.rb +11 -0
  317. data/app/controllers/cms/attachments_controller.rb +48 -0
  318. data/app/controllers/cms/base_controller.rb +22 -0
  319. data/app/controllers/cms/cache_controller.rb +23 -0
  320. data/app/controllers/cms/categories_controller.rb +7 -0
  321. data/app/controllers/cms/category_types_controller.rb +12 -0
  322. data/app/controllers/cms/connectors_controller.rb +70 -0
  323. data/app/controllers/cms/content_block_controller.rb +361 -0
  324. data/app/controllers/cms/content_controller.rb +173 -0
  325. data/app/controllers/cms/content_types_controller.rb +14 -0
  326. data/app/controllers/cms/dashboard_controller.rb +13 -0
  327. data/app/controllers/cms/dynamic_views_controller.rb +81 -0
  328. data/app/controllers/cms/email_messages_controller.rb +21 -0
  329. data/app/controllers/cms/file_blocks_controller.rb +4 -0
  330. data/app/controllers/cms/form_entries_controller.rb +140 -0
  331. data/app/controllers/cms/form_fields_controller.rb +74 -0
  332. data/app/controllers/cms/forms_controller.rb +35 -0
  333. data/app/controllers/cms/groups_controller.rb +25 -0
  334. data/app/controllers/cms/home_controller.rb +10 -0
  335. data/app/controllers/cms/html_blocks_controller.rb +4 -0
  336. data/app/controllers/cms/image_blocks_controller.rb +4 -0
  337. data/app/controllers/cms/inline_content_controller.rb +50 -0
  338. data/app/controllers/cms/links_controller.rb +81 -0
  339. data/app/controllers/cms/page_components_controller.rb +20 -0
  340. data/app/controllers/cms/page_route_conditions_controller.rb +4 -0
  341. data/app/controllers/cms/page_route_options_controller.rb +58 -0
  342. data/app/controllers/cms/page_route_requirements_controller.rb +4 -0
  343. data/app/controllers/cms/page_routes_controller.rb +51 -0
  344. data/app/controllers/cms/pages_controller.rb +151 -0
  345. data/app/controllers/cms/passwords_controller.rb +22 -0
  346. data/app/controllers/cms/portlet_controller.rb +21 -0
  347. data/app/controllers/cms/portlets_controller.rb +35 -0
  348. data/app/controllers/cms/redirects_controller.rb +25 -0
  349. data/app/controllers/cms/resource_controller.rb +125 -0
  350. data/app/controllers/cms/routes_controller.rb +22 -0
  351. data/app/controllers/cms/section_nodes_controller.rb +24 -0
  352. data/app/controllers/cms/sections_controller.rb +100 -0
  353. data/app/controllers/cms/sessions_controller.rb +15 -0
  354. data/app/controllers/cms/sites/passwords_controller.rb +32 -0
  355. data/app/controllers/cms/sites/sessions_controller.rb +20 -0
  356. data/app/controllers/cms/tags_controller.rb +16 -0
  357. data/app/controllers/cms/tasks_controller.rb +56 -0
  358. data/app/controllers/cms/toolbar_controller.rb +18 -0
  359. data/app/controllers/cms/user_controller.rb +8 -0
  360. data/app/controllers/cms/users_controller.rb +125 -0
  361. data/app/controllers/tests/pretend_controller.rb +32 -0
  362. data/app/helpers/cms/application_helper.rb +258 -0
  363. data/app/helpers/cms/content_block_helper.rb +55 -0
  364. data/app/helpers/cms/content_types_helper.rb +4 -0
  365. data/app/helpers/cms/form_tag_helper.rb +36 -0
  366. data/app/helpers/cms/menu_helper.rb +167 -0
  367. data/app/helpers/cms/mobile_helper.rb +29 -0
  368. data/app/helpers/cms/nav_menu_helper.rb +23 -0
  369. data/app/helpers/cms/page_helper.rb +169 -0
  370. data/app/helpers/cms/path_helper.rb +113 -0
  371. data/app/helpers/cms/rendering_helper.rb +112 -0
  372. data/app/helpers/cms/section_nodes_helper.rb +112 -0
  373. data/app/helpers/cms/sites/authentication_helper.rb +25 -0
  374. data/app/helpers/cms/sites/devise_shim_helper.rb +31 -0
  375. data/app/helpers/cms/template_support.rb +18 -0
  376. data/app/helpers/cms/ui_elements_helper.rb +168 -0
  377. data/app/helpers/forgot_password_portlet_helper.rb +9 -0
  378. data/app/helpers/login_portlet_helper.rb +10 -0
  379. data/app/inputs/attachments_input.rb +14 -0
  380. data/app/inputs/cms_text_area_input.rb +10 -0
  381. data/app/inputs/date_picker_input.rb +8 -0
  382. data/app/inputs/file_picker_input.rb +75 -0
  383. data/app/inputs/name_input.rb +42 -0
  384. data/app/inputs/path_input.rb +18 -0
  385. data/app/inputs/tag_list_input.rb +3 -0
  386. data/app/inputs/template_editor_input.rb +24 -0
  387. data/app/inputs/text_editor_input.rb +19 -0
  388. data/app/models/cms/abstract_file_block.rb +50 -0
  389. data/app/models/cms/attachment.rb +267 -0
  390. data/app/models/cms/category.rb +56 -0
  391. data/app/models/cms/category_type.rb +43 -0
  392. data/app/models/cms/connector.rb +99 -0
  393. data/app/models/cms/content.rb +31 -0
  394. data/app/models/cms/content_type.rb +191 -0
  395. data/app/models/cms/dynamic_view.rb +81 -0
  396. data/app/models/cms/email_message.rb +63 -0
  397. data/app/models/cms/email_message_mailer.rb +12 -0
  398. data/app/models/cms/external_user.rb +60 -0
  399. data/app/models/cms/file_block.rb +19 -0
  400. data/app/models/cms/form.rb +47 -0
  401. data/app/models/cms/form_entry.rb +75 -0
  402. data/app/models/cms/form_field.rb +78 -0
  403. data/app/models/cms/group.rb +62 -0
  404. data/app/models/cms/group_permission.rb +12 -0
  405. data/app/models/cms/group_section.rb +9 -0
  406. data/app/models/cms/group_type.rb +16 -0
  407. data/app/models/cms/group_type_permission.rb +8 -0
  408. data/app/models/cms/guest_user.rb +57 -0
  409. data/app/models/cms/html_block.rb +38 -0
  410. data/app/models/cms/image_block.rb +23 -0
  411. data/app/models/cms/link.rb +20 -0
  412. data/app/models/cms/page.rb +437 -0
  413. data/app/models/cms/page_component.rb +43 -0
  414. data/app/models/cms/page_partial.rb +40 -0
  415. data/app/models/cms/page_route.rb +140 -0
  416. data/app/models/cms/page_route_condition.rb +5 -0
  417. data/app/models/cms/page_route_option.rb +7 -0
  418. data/app/models/cms/page_route_requirement.rb +5 -0
  419. data/app/models/cms/page_template.rb +45 -0
  420. data/app/models/cms/permission.rb +17 -0
  421. data/app/models/cms/persistent_user.rb +223 -0
  422. data/app/models/cms/portlet.rb +237 -0
  423. data/app/models/cms/redirect.rb +12 -0
  424. data/app/models/cms/search_filter.rb +18 -0
  425. data/app/models/cms/section.rb +224 -0
  426. data/app/models/cms/section_node.rb +144 -0
  427. data/app/models/cms/site.rb +45 -0
  428. data/app/models/cms/tag.rb +69 -0
  429. data/app/models/cms/tagging.rb +14 -0
  430. data/app/models/cms/task.rb +75 -0
  431. data/app/models/cms/templates.rb +31 -0
  432. data/app/models/cms/user.rb +43 -0
  433. data/app/models/cms/user_group_membership.rb +9 -0
  434. data/app/models/cms/view_context.rb +81 -0
  435. data/app/portlets/deprecated_placeholder.rb +12 -0
  436. data/app/portlets/dynamic_portlet.rb +7 -0
  437. data/app/portlets/email_page_portlet.rb +32 -0
  438. data/app/portlets/forgot_password_portlet.rb +15 -0
  439. data/app/portlets/helpers/cms/list_portlet_helper.rb +5 -0
  440. data/app/portlets/list_portlet.rb +40 -0
  441. data/app/portlets/login_portlet.rb +13 -0
  442. data/app/portlets/tag_cloud_portlet.rb +15 -0
  443. data/app/presenters/cms/user_presenter.rb +47 -0
  444. data/app/views/cms/application/_add_content_modal.html.erb +3 -0
  445. data/app/views/cms/application/_buttons.html.erb +7 -0
  446. data/app/views/cms/application/_exception.html.erb +6 -0
  447. data/app/views/cms/application/_form_errors.html.erb +7 -0
  448. data/app/views/cms/application/_form_with_buttons.html.erb +10 -0
  449. data/app/views/cms/application/_main_content.html.erb +3 -0
  450. data/app/views/cms/application/_main_with_sidebar.html.erb +8 -0
  451. data/app/views/cms/application/_mobile_toolbar.html.erb +16 -0
  452. data/app/views/cms/application/_page_title.html.erb +5 -0
  453. data/app/views/cms/application/_pagination.html.erb +26 -0
  454. data/app/views/cms/application/_row.html.erb +1 -0
  455. data/app/views/cms/application/_save_buttons.html.erb +7 -0
  456. data/app/views/cms/application/_sidebar_layout.html.erb +3 -0
  457. data/app/views/cms/application/_version.html.erb +23 -0
  458. data/app/views/cms/application/_version_conflict_diff.html.erb +11 -0
  459. data/app/views/cms/application/_version_conflict_error.html.erb +6 -0
  460. data/app/views/cms/attachments/_attachment.html.erb +16 -0
  461. data/app/views/cms/attachments/_attachment_manager.html.erb +39 -0
  462. data/app/views/cms/attachments/_attachment_table.html.erb +22 -0
  463. data/app/views/cms/attachments/_attachment_wrapper.html.erb +4 -0
  464. data/app/views/cms/attachments/_no_attachments_defined.html.erb +1 -0
  465. data/app/views/cms/cache/show.html.erb +7 -0
  466. data/app/views/cms/categories/_form.html.erb +27 -0
  467. data/app/views/cms/category_types/_form.html.erb +1 -0
  468. data/app/views/cms/connectors/new.html.erb +38 -0
  469. data/app/views/cms/content/editing_frame.html.erb +1 -0
  470. data/app/views/cms/content/no_page.html.erb +19 -0
  471. data/app/views/cms/content/show.html.erb +21 -0
  472. data/app/views/cms/content_block/_block_form.html.erb +15 -0
  473. data/app/views/cms/content_block/_buttonbar.html.erb +29 -0
  474. data/app/views/cms/content_block/_buttons.html.erb +13 -0
  475. data/app/views/cms/content_block/_hidden_fields.html.erb +13 -0
  476. data/app/views/cms/content_block/_sidebar.html.erb +36 -0
  477. data/app/views/cms/content_block/edit.html.erb +3 -0
  478. data/app/views/cms/content_block/index.html.erb +87 -0
  479. data/app/views/cms/content_block/new.html.erb +3 -0
  480. data/app/views/cms/content_block/render_block_in_main_container.html.erb +10 -0
  481. data/app/views/cms/content_block/show.html.erb +1 -0
  482. data/app/views/cms/content_block/show_in_isolation.html.erb +15 -0
  483. data/app/views/cms/content_block/versions.html.erb +24 -0
  484. data/app/views/cms/content_types/_order_field.html.erb +5 -0
  485. data/app/views/cms/content_types/index.html.erb +3 -0
  486. data/app/views/cms/dashboard/_page_drafts.html.erb +39 -0
  487. data/app/views/cms/dashboard/_tasks.html.erb +41 -0
  488. data/app/views/cms/dashboard/index.html.erb +13 -0
  489. data/app/views/cms/dynamic_views/_form.html.erb +9 -0
  490. data/app/views/cms/dynamic_views/edit.html.erb +2 -0
  491. data/app/views/cms/dynamic_views/index.html.erb +33 -0
  492. data/app/views/cms/dynamic_views/new.html.erb +2 -0
  493. data/app/views/cms/email_messages/index.html.erb +36 -0
  494. data/app/views/cms/email_messages/show.html.erb +50 -0
  495. data/app/views/cms/file_blocks/_form.html.erb +3 -0
  496. data/app/views/cms/file_blocks/_section_selector.html.erb +13 -0
  497. data/app/views/cms/file_blocks/render.html.erb +5 -0
  498. data/app/views/cms/forgot_password_mailer/reset_password.text.html.erb +3 -0
  499. data/app/views/cms/forgot_password_mailer/reset_password.text.plain.erb +3 -0
  500. data/app/views/cms/form_entries/_buttons.html.erb +2 -0
  501. data/app/views/cms/form_entries/_form.html.erb +7 -0
  502. data/app/views/cms/form_entries/_internal_form.html.erb +9 -0
  503. data/app/views/cms/form_entries/edit.html.erb +5 -0
  504. data/app/views/cms/form_entries/error.html.erb +3 -0
  505. data/app/views/cms/form_entries/index.html.erb +5 -0
  506. data/app/views/cms/form_entries/new.html.erb +5 -0
  507. data/app/views/cms/form_entries/show.html.erb +13 -0
  508. data/app/views/cms/form_entries/submit.html.erb +1 -0
  509. data/app/views/cms/form_fields/_form.html.erb +8 -0
  510. data/app/views/cms/form_fields/_select.html.erb +3 -0
  511. data/app/views/cms/form_fields/_text_area.html.erb +3 -0
  512. data/app/views/cms/form_fields/_text_field.html.erb +3 -0
  513. data/app/views/cms/form_fields/edit.html.erb +0 -0
  514. data/app/views/cms/form_fields/new.html.erb +26 -0
  515. data/app/views/cms/form_fields/preview.html.erb +16 -0
  516. data/app/views/cms/forms/_form.html.erb +67 -0
  517. data/app/views/cms/forms/render.html.erb +15 -0
  518. data/app/views/cms/forms/show.html.erb +6 -0
  519. data/app/views/cms/groups/_form.html.erb +38 -0
  520. data/app/views/cms/groups/_permissions.html.erb +14 -0
  521. data/app/views/cms/groups/_sections.html.erb +12 -0
  522. data/app/views/cms/groups/edit.html.erb +2 -0
  523. data/app/views/cms/groups/index.html.erb +36 -0
  524. data/app/views/cms/groups/new.html.erb +2 -0
  525. data/app/views/cms/html_blocks/_form.html.erb +3 -0
  526. data/app/views/cms/html_blocks/render.html.erb +1 -0
  527. data/app/views/cms/image_blocks/_form.html.erb +3 -0
  528. data/app/views/cms/image_blocks/render.html.erb +4 -0
  529. data/app/views/cms/links/_form.html.erb +8 -0
  530. data/app/views/cms/links/edit.html.erb +4 -0
  531. data/app/views/cms/links/new.html.erb +5 -0
  532. data/app/views/cms/menus/_menu.html.erb +9 -0
  533. data/app/views/cms/menus/_menu_item.html.erb +11 -0
  534. data/app/views/cms/page_components/_content.html.erb +18 -0
  535. data/app/views/cms/page_components/new.html.erb +12 -0
  536. data/app/views/cms/page_routes/_form.html.erb +12 -0
  537. data/app/views/cms/page_routes/edit.html.erb +2 -0
  538. data/app/views/cms/page_routes/index.html.erb +33 -0
  539. data/app/views/cms/page_routes/new.html.erb +2 -0
  540. data/app/views/cms/pages/_edit_content.html.erb +28 -0
  541. data/app/views/cms/pages/_form.html.erb +21 -0
  542. data/app/views/cms/pages/_main_form.html.erb +23 -0
  543. data/app/views/cms/pages/_simple_container.html.erb +8 -0
  544. data/app/views/cms/pages/edit.html.erb +2 -0
  545. data/app/views/cms/pages/new.html.erb +19 -0
  546. data/app/views/cms/pages/versions.html.erb +22 -0
  547. data/app/views/cms/passwords/new.html.erb +16 -0
  548. data/app/views/cms/redirects/_form.html.erb +7 -0
  549. data/app/views/cms/redirects/edit.html.erb +2 -0
  550. data/app/views/cms/redirects/index.html.erb +25 -0
  551. data/app/views/cms/redirects/new.html.erb +2 -0
  552. data/app/views/cms/routes/index.html.erb +35 -0
  553. data/app/views/cms/section_nodes/_children.html.erb +5 -0
  554. data/app/views/cms/section_nodes/_row_buttons.html.erb +11 -0
  555. data/app/views/cms/section_nodes/_section_node.html.erb +24 -0
  556. data/app/views/cms/section_nodes/_sitemap_buttons.html.erb +47 -0
  557. data/app/views/cms/section_nodes/_status.html.erb +5 -0
  558. data/app/views/cms/section_nodes/show.html.erb +9 -0
  559. data/app/views/cms/sections/_buttons.html.erb +6 -0
  560. data/app/views/cms/sections/_form.html.erb +30 -0
  561. data/app/views/cms/sections/edit.html.erb +4 -0
  562. data/app/views/cms/sections/new.html.erb +5 -0
  563. data/app/views/cms/sessions/new.html.erb +16 -0
  564. data/app/views/cms/shared/access_denied.html.erb +2 -0
  565. data/app/views/cms/shared/error.html.erb +40 -0
  566. data/app/views/cms/shared/error.xml.erb +8 -0
  567. data/app/views/cms/sites/_flash.html.erb +8 -0
  568. data/app/views/cms/sites/passwords/new.html.erb +2 -0
  569. data/app/views/cms/sites/sessions/new.html.erb +2 -0
  570. data/app/views/cms/tags/_form.html.erb +1 -0
  571. data/app/views/cms/tags/render.html.erb +52 -0
  572. data/app/views/cms/tasks/new.html.erb +22 -0
  573. data/app/views/cms/toolbar/_new_pages_menu.html.erb +10 -0
  574. data/app/views/cms/users/_form.html.erb +9 -0
  575. data/app/views/cms/users/_password.html.erb +2 -0
  576. data/app/views/cms/users/_user_fields.html.erb +7 -0
  577. data/app/views/cms/users/change_password.html.erb +12 -0
  578. data/app/views/cms/users/edit.html.erb +2 -0
  579. data/app/views/cms/users/index.html.erb +65 -0
  580. data/app/views/cms/users/new.html.erb +2 -0
  581. data/app/views/devise/confirmations/new.html.erb +16 -0
  582. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  583. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  584. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  585. data/app/views/devise/passwords/edit.html.erb +19 -0
  586. data/app/views/devise/passwords/new.html.erb +15 -0
  587. data/app/views/devise/registrations/edit.html.erb +28 -0
  588. data/app/views/devise/registrations/new.html.erb +18 -0
  589. data/app/views/devise/shared/_links.erb +25 -0
  590. data/app/views/devise/unlocks/new.html.erb +16 -0
  591. data/app/views/layouts/cms/_content_types.html.erb +13 -0
  592. data/app/views/layouts/cms/_footer.erb +4 -0
  593. data/app/views/layouts/cms/_head.html.erb +8 -0
  594. data/app/views/layouts/cms/_main_menu.html.erb +78 -0
  595. data/app/views/layouts/cms/application.html.erb +23 -0
  596. data/app/views/layouts/cms/content_page.html.erb +5 -0
  597. data/app/views/layouts/cms/page_editor.html.erb +90 -0
  598. data/app/views/portlets/deprecated_placeholders/_form.html.erb +1 -0
  599. data/app/views/portlets/deprecated_placeholders/render.html.erb +8 -0
  600. data/app/views/portlets/dynamic/_form.html.erb +3 -0
  601. data/app/views/portlets/email_page/_form.html.erb +5 -0
  602. data/app/views/portlets/email_page/render.html.erb +17 -0
  603. data/app/views/portlets/forgot_password/_form.html.erb +5 -0
  604. data/app/views/portlets/forgot_password/render.html.erb +2 -0
  605. data/app/views/portlets/list/_form.html.erb +33 -0
  606. data/app/views/portlets/list/_list.html.erb +6 -0
  607. data/app/views/portlets/list/_table.html.erb +13 -0
  608. data/app/views/portlets/list/render.html.erb +1 -0
  609. data/app/views/portlets/login/_form.html.erb +4 -0
  610. data/app/views/portlets/login/render.html.erb +10 -0
  611. data/app/views/portlets/portlets/_form.html.erb +20 -0
  612. data/app/views/portlets/tag_cloud/_form.html.erb +4 -0
  613. data/app/views/portlets/tag_cloud/render.html.erb +5 -0
  614. data/app/views/tests/pretend/open_with_layout.html.erb +5 -0
  615. data/bin/bcms +321 -0
  616. data/bin/browsercms +4 -0
  617. data/bin/rake +16 -0
  618. data/config/routes.rb +135 -0
  619. data/db/browsercms.seeds.rb +63 -0
  620. data/db/migrate/20080815014337_browsercms300.rb +287 -0
  621. data/db/migrate/20130327184912_browsercms400.rb +120 -0
  622. data/db/migrate/20150715173336_create_default_users.rb +12 -0
  623. data/db/seeds.rb +1 -0
  624. data/doc/README_FOR_APP +6 -0
  625. data/doc/design/blue_button.psd +0 -0
  626. data/doc/design/gray_box.psd +0 -0
  627. data/doc/design/main_nav.psd +0 -0
  628. data/doc/features/design_integration.md +45 -0
  629. data/doc/features/external_user.md +7 -0
  630. data/doc/features/form_builder.md +40 -0
  631. data/doc/features/simple_form_refactor.md +60 -0
  632. data/doc/performance_tuning_notes.md +12 -0
  633. data/doc/release_notes.md +837 -0
  634. data/doc/test_procedure.txt +141 -0
  635. data/lib/acts_as_list.rb +257 -0
  636. data/lib/browsercms-artirix.rb +1 -0
  637. data/lib/browsercms.rb +73 -0
  638. data/lib/cms/acts/cms_user.rb +131 -0
  639. data/lib/cms/acts/content_block.rb +61 -0
  640. data/lib/cms/acts/content_page.rb +90 -0
  641. data/lib/cms/acts.rb +7 -0
  642. data/lib/cms/admin_tab.rb +15 -0
  643. data/lib/cms/attachments/attachment_serving.rb +59 -0
  644. data/lib/cms/attachments/configuration.rb +88 -0
  645. data/lib/cms/authentication/controller.rb +120 -0
  646. data/lib/cms/authentication/test_password_strategy.rb +28 -0
  647. data/lib/cms/authentication.rb +4 -0
  648. data/lib/cms/authoring.rb +9 -0
  649. data/lib/cms/behaviors/archiving.rb +43 -0
  650. data/lib/cms/behaviors/attaching.rb +363 -0
  651. data/lib/cms/behaviors/categorizing.rb +31 -0
  652. data/lib/cms/behaviors/connecting.rb +141 -0
  653. data/lib/cms/behaviors/dynamic_attributes.rb +384 -0
  654. data/lib/cms/behaviors/flush_cache_on_change.rb +31 -0
  655. data/lib/cms/behaviors/hiding.rb +46 -0
  656. data/lib/cms/behaviors/namespacing.rb +15 -0
  657. data/lib/cms/behaviors/naming.rb +16 -0
  658. data/lib/cms/behaviors/publishing.rb +205 -0
  659. data/lib/cms/behaviors/rendering.rb +195 -0
  660. data/lib/cms/behaviors/searching.rb +45 -0
  661. data/lib/cms/behaviors/soft_deleting.rb +103 -0
  662. data/lib/cms/behaviors/taggable.rb +66 -0
  663. data/lib/cms/behaviors/userstamping.rb +42 -0
  664. data/lib/cms/behaviors/versioning.rb +360 -0
  665. data/lib/cms/behaviors.rb +34 -0
  666. data/lib/cms/caching.rb +62 -0
  667. data/lib/cms/commands/actions.rb +107 -0
  668. data/lib/cms/commands/to_version400.rb +10 -0
  669. data/lib/cms/concerns/can_be_addressable.rb +326 -0
  670. data/lib/cms/concerns/has_content_type.rb +46 -0
  671. data/lib/cms/concerns/ignores_publishing.rb +9 -0
  672. data/lib/cms/concerns.rb +7 -0
  673. data/lib/cms/configuration/configurable_template.rb +24 -0
  674. data/lib/cms/configuration/devise.rb +256 -0
  675. data/lib/cms/configuration.rb +79 -0
  676. data/lib/cms/configure_simple_form.rb +142 -0
  677. data/lib/cms/configure_simple_form_bootstrap.rb +58 -0
  678. data/lib/cms/content_filter.rb +18 -0
  679. data/lib/cms/content_page.rb +77 -0
  680. data/lib/cms/content_rendering_support.rb +114 -0
  681. data/lib/cms/controllers/admin_controller.rb +78 -0
  682. data/lib/cms/data_loader.rb +54 -0
  683. data/lib/cms/date_picker.rb +23 -0
  684. data/lib/cms/default_accessible.rb +13 -0
  685. data/lib/cms/domain_support.rb +38 -0
  686. data/lib/cms/engine.rb +135 -0
  687. data/lib/cms/engine_helper.rb +103 -0
  688. data/lib/cms/error_handling.rb +84 -0
  689. data/lib/cms/error_pages.rb +8 -0
  690. data/lib/cms/extensions/action_view/base.rb +13 -0
  691. data/lib/cms/extensions/active_model/name.rb +13 -0
  692. data/lib/cms/extensions/active_record/base.rb +37 -0
  693. data/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb +94 -0
  694. data/lib/cms/extensions/active_record/errors.rb +12 -0
  695. data/lib/cms/extensions/active_support/cache/file_store.rb +9 -0
  696. data/lib/cms/extensions/hash.rb +11 -0
  697. data/lib/cms/extensions/integer.rb +16 -0
  698. data/lib/cms/extensions/nil.rb +19 -0
  699. data/lib/cms/extensions/string.rb +24 -0
  700. data/lib/cms/extensions.rb +5 -0
  701. data/lib/cms/form_builder/content_block_form_builder.rb +45 -0
  702. data/lib/cms/form_builder/default_input.rb +13 -0
  703. data/lib/cms/form_builder/deprecated_inputs.rb +40 -0
  704. data/lib/cms/form_builder/workflow_buttons.rb +38 -0
  705. data/lib/cms/installation_actions.rb +8 -0
  706. data/lib/cms/mobile_aware.rb +67 -0
  707. data/lib/cms/module.rb +36 -0
  708. data/lib/cms/module_installation.rb +31 -0
  709. data/lib/cms/polymorphic_single_table_inheritance.rb +19 -0
  710. data/lib/cms/publish_workflow.rb +26 -0
  711. data/lib/cms/responders/content_responder.rb +14 -0
  712. data/lib/cms/route_extensions.rb +157 -0
  713. data/lib/cms/users_service.rb +208 -0
  714. data/lib/cms/version.rb +11 -0
  715. data/lib/command_line.rb +39 -0
  716. data/lib/generators/browser_cms/demo_site/USAGE +3 -0
  717. data/lib/generators/browser_cms/demo_site/templates/demo.seeds.rb +249 -0
  718. data/lib/generators/browser_cms/demo_site/templates/demo_site.rake +14 -0
  719. data/lib/generators/browser_cms/demo_site/templates/logo.jpg +0 -0
  720. data/lib/generators/browser_cms/demo_site/templates/splash.jpg +0 -0
  721. data/lib/generators/browser_cms/demo_site/templates/style.css +257 -0
  722. data/lib/generators/browser_cms.rb +12 -0
  723. data/lib/generators/cms/content_block/USAGE +22 -0
  724. data/lib/generators/cms/content_block/content_block_generator.rb +103 -0
  725. data/lib/generators/cms/content_block/templates/_form.html.erb +27 -0
  726. data/lib/generators/cms/content_block/templates/application_controller.rb.erb +4 -0
  727. data/lib/generators/cms/content_block/templates/render.html.erb +23 -0
  728. data/lib/generators/cms/install/USAGE +8 -0
  729. data/lib/generators/cms/install/install_generator.rb +16 -0
  730. data/lib/generators/cms/portlet/USAGE +26 -0
  731. data/lib/generators/cms/portlet/portlet_generator.rb +38 -0
  732. data/lib/generators/cms/portlet/templates/_form.html.erb +5 -0
  733. data/lib/generators/cms/portlet/templates/portlet.rb +12 -0
  734. data/lib/generators/cms/portlet/templates/portlet_helper.rb +5 -0
  735. data/lib/generators/cms/portlet/templates/render.html.erb +1 -0
  736. data/lib/generators/cms/portlet/templates/unit_test.erb +9 -0
  737. data/lib/generators/cms/project/USAGE +1 -0
  738. data/lib/generators/cms/project/templates/COPYRIGHT.txt +23 -0
  739. data/lib/generators/cms/project/templates/GPL.txt +674 -0
  740. data/lib/generators/cms/project/templates/LICENSE.txt +165 -0
  741. data/lib/generators/cms/project/templates/USAGE +3 -0
  742. data/lib/generators/cms/project/templates/devise.rb.erb +7 -0
  743. data/lib/generators/cms/project/templates/gitignore.erb +11 -0
  744. data/lib/generators/cms/project/templates/install_generator.erb +21 -0
  745. data/lib/generators/cms/project/templates/module_tasks.rake +10 -0
  746. data/lib/generators/cms/template/USAGE +10 -0
  747. data/lib/generators/cms/template/template_generator.rb +29 -0
  748. data/lib/generators/cms/template/templates/template.erb +2 -0
  749. data/lib/sequence.rb +6 -0
  750. data/lib/tasks/cms.rake +23 -0
  751. data/lib/templates/active_record/model/model.rb +17 -0
  752. data/vendor/assets/javascripts/jquery.cookie.js +91 -0
  753. data/vendor/assets/javascripts/jquery.selectbox.js +209 -0
  754. metadata +1048 -0
@@ -0,0 +1,837 @@
1
+ # v4.0.0.beta
2
+
3
+ * List Portlet [#678] - A convenient way to find content without custom coding.
4
+ * NameInput [#682] - Improved :name input allows for consistent name fields look/feel. New content will be generated with it.
5
+ * [Fixes #684] Forgot Password
6
+
7
+ * /cms/forgot-password doesn't exist
8
+ * Reenable the forgot password link (/forgot-password)
9
+ * The edit_password page (pulled from email) doesn't work when followed.
10
+
11
+ ## [#678] List Portlet
12
+
13
+ This portlet is provides a configurable means to query for and display content without coding, similar to a greatly simplified Drupal views. The intent is to handle easy cases of finding a few content items without needing to create a full portlet. The following configuration options are supported:
14
+
15
+ 1. Content Type - User can select any available content type to list.
16
+ 2. Limit - Restrict the max results to some number (i.e. 5). Can be left blank to find all.
17
+ 3. Order - The results list can be ordered based on fields specific to each content type.
18
+ 4. Reverse order - Change the sorting order (asc to desc).
19
+ 5. View As - Results can be shown as a list or a table. Views can be customized as well.
20
+
21
+ ### Customizable Views
22
+
23
+ Each list portlet can also have its own specific view that overrides the default list or table view. Developers can add a new file in a specific location, based on the name of the portlet. This view will then be used when showing the portlet. The exact path for each portlet is displayed in the sidebar. If using a table view, this will almost always need to be overriden since there is no way to configure which columns to show in the portlet.
24
+
25
+ Other bug fixes: https://github.com/browsermedia/browsercms/issues?milestone=22&state=closed
26
+
27
+
28
+ # v4.0.0.alpha
29
+
30
+ Try it! gem install browsercms --pre
31
+
32
+ See (and please help with!) current bug list here: https://github.com/browsermedia/browsercms/issues?milestone=22&state=open
33
+
34
+ ## Major Features
35
+
36
+ This release includes the following major features:
37
+
38
+ * User Interface Redesign - User interface has been complete redesigned from the ground up. The new UI is based on Twitter Bootstrap, has usability enhancements as well as an improved design.
39
+ * True In Context Editing [#566] - Editors can directly edit Html content and page titles using CKEditor's inline capability.
40
+ * Rails 4 Upgrade [#617] - BrowserCMS is now designed to work with Rail 4.0.
41
+ * Ruby 2.0 [#651] - BrowserCMS is now designed to work with Ruby 2, matching the recommended specs for Rails 4. Ruby 1.9.3 and 1.9.2 may still work.
42
+ * Form Builder [#124] - Allow editors to create form pages that can be used to collect information from visitors
43
+ * Addressable Content [#588] - Custom content blocks (i.e. Product, Event, News Articles) can be created directly as pages in the sitemap.
44
+ * Improved Template Storage [#608] - Database managed templates are no longer written out to the file system. Sites should have less permission related issued during deployments. Using Heroku to host sites should be easier as well.
45
+ * Devise Integration [#641] - Devise is now used as standard authentication tool. Upgrading projects will have passwords reset (See upgrade notes for more details).
46
+ * External Users [#644] - Better support for authenticating/authorizing users from external data sources rather than using additional solutions like CAS.
47
+
48
+ ## Other Features/Improvements
49
+
50
+ In addition to the other major features above, here are some improvements/features of note.
51
+
52
+ * Portlet Descriptions [#619] - Portlets can now have a description that will be used to provide additional context when users are building/placing them.
53
+ * No need to register Content Types [#621] - Content Blocks will automatically appear in the menus without needing to add them to the database.
54
+ * Using SimpleForm [#623] Reworked all forms to use simple_form (https://github.com/plataformatec/simple_form).
55
+ * Migration Cleanup [#594] Migrations for previous versions have been compressed. This has implications for upgrading, but should make new project cleaner.
56
+ * Consistent table prefixes [#639] All core cms tables will now start with cms_ rather than being configurable.
57
+ * Content Blacklisting - Portlets can be blacklisted via configuration so that they can't be created. Several previously stock types are blacklisted.
58
+ * Refined Content API [#256] [#582][#584] - Make content blocks closer in behavior to ActiveRecord.
59
+
60
+ ## UI Redesign
61
+
62
+ The entire UI has been reworked to be more streamlined and lightweight. It is now built using Twitter Bootstrap, and makes better use of global menus and toolbars. Here are the notable changes.
63
+
64
+ 1. Global Menu - Many commons functions can now be invoked directly from the main menu, including adding new content or users.
65
+ 1. Smart 'New' button - Users can add content from any page in the CMS. The "New" button is a split button that can either add a specific type of content, or will 'guess' based on where a user is in the site.
66
+ 1. Sitemap - Each row now has hover buttons to edit/remove content rather than needing to select a row then click a button menu.
67
+ 1. Assets/Asset Library - The content library has been renamed to be called assets.
68
+
69
+ ## In Context Editing
70
+
71
+ Users can now edit most HTML content directly in the page. Icons indicate the area of the pages that are editable. Here are some of the highlights:
72
+
73
+ 1. No need to toggle the editor on/off. Just click the area of the page you want to edit.
74
+ 1. Full Edit - Click to edit in full text editor. Any changes made will be saved before going to the full editor. There is also a edit button on each block in the upper right hand corner.
75
+ 1. Remove blocks from page - Editors can select a block then remove it from the page via a button on the editor. Users will be prompted before its removed.
76
+ 1. Reorder content - Can move content blocks up or down within a page. Page will refresh after moving.
77
+ 1. Editable Page titles - Page title can be edited directly from the header.
78
+ 1. Preview Page - Editors can now preview the page without a toolbar or editing controls.
79
+ 1. Non-incontext Content - Not all content makes sense to be inline editable (for example portlets). For these content types, the previous move/remove/edit links now float in the upper right hand corner of the content block.
80
+
81
+ ## Addressable Content Blocks
82
+
83
+ Content blocks can created with as their own pages. To make a block addressable, a developer must do the following:
84
+
85
+ 1. Add is_addressable to the model. This will automatically generate a :slug form field when creating/editing instances.
86
+ 2. Set the Page Template that should be used (defaults to 'default').
87
+
88
+ ```
89
+ class Product < ActiveRecord::Base
90
+ is_addressable path: "/products", template: "product"
91
+ end
92
+ ```
93
+
94
+ 3. Add the following field to the _form.html.erb.
95
+
96
+ ```
97
+ <%= f.input :slug, as: :path %>
98
+ ```
99
+
100
+ ## Form Builder
101
+
102
+ Allow editors to create form pages that can be used to collect information from visitors (i.e. Contact Us, Support requests, etc). Basically, any quick collect a few fields using a consistent form styling.
103
+
104
+ ### Features include:
105
+
106
+ 1. Forms can have multiple fields which can be text fields, textareas or multiple choice dropdowns. Field management is done via AJAX and fields can be added/reordered/removed without leaving the page.
107
+ 2. Fields can be required, have instructions and default values. Choices are added as lines of text for each dropdown field. Dropdowns use the first value as the default.
108
+ 3. Entries are stored in the database and can optionally notify someone via email when new submissions are created.
109
+ 4. Editors can manage entries via the admin (CRUD)
110
+ 5. Visitors can be redirected to another URL after submitting their entry or display a customizable 'success' message.
111
+ 6. Forms generate the HTML display using bootstrap's CSS by default. Projects can customize this in the application.rb with config.cms.form_builder_css
112
+
113
+ ## Refined Content API
114
+
115
+ 1. .save now works identically between ActiveRecord and Content Blocks
116
+
117
+ Previously, calling .save on a block would save a draft copy, rather then updating the record in place. This has been changed. To save a draft, you can do either:
118
+
119
+ @block.publish_on_save
120
+ @block.save
121
+ # or
122
+ @block.save_draft
123
+
124
+
125
+ ## Registering Content Types
126
+
127
+ Content blocks no longer need to have a separate registration in the database to appear in menus.
128
+
129
+ Defining a new content model should be sufficient to have it appear in the content library. To specify which module it should appear in, you can configure it like so:
130
+
131
+ class Widget < ActiveRecord::Base
132
+ acts_as_content_block
133
+ content_module :acme
134
+ end
135
+
136
+ The content_types and content_type_groups tables have been removed as they are no longer necessary. If you don't want a block to appear in the menus, you can specify this via:
137
+
138
+ class Widget < ActiveRecord::Base
139
+ acts_as_content_block content_module: false
140
+ end
141
+
142
+ ## Refactor to use SimpleForm
143
+
144
+ Converted all the internal forms to use SimpleForm rather than our own custom form builder. This provides better consistency with bootstrap forms, as well as well tested API for defining new form inputs. This will primarily affect developers when they create content blocks. New content will be generated using simple_form syntax like so:
145
+
146
+ ```
147
+ <%= f.input :photo, as: :file_picker %>
148
+ ```
149
+
150
+ rather than the older syntax that looks like this:
151
+
152
+ ```
153
+ <%= f.cms_file_field :photo %>
154
+ ```
155
+
156
+ The old form_builder methods like cms_text_field and cms_file_field have been deprecated and will generate warnings when used. These methods are scheduled for removal in BrowserCMS 4.1. It's recommended that custom content blocks be upgraded to use the new syntax when feasible. The deprecation warnings should provide some guideance, but also look at simple_forms documentation http://simple-form.plataformatec.com.br for help.
157
+
158
+ ## Portlet Blacklists
159
+
160
+ Portlets can be blacklisted so that new instances cannot be created. This can be used to turn off some portlets for security, convience or otherwise. By default, the following portlet types are blacklisted (as 'deprecated').
161
+
162
+ * LoginPortlet (:login_portlet)
163
+ * DynamicPortlet (:dynamic_portlet)
164
+ * ForgotPasswordPortlet (:forgot_password_portlet)
165
+
166
+ ### Modifying the blacklist
167
+
168
+ ```
169
+ # Prevention creation
170
+ config.cms.content_types.blacklist += [:email_page_portlet]
171
+
172
+ # Allowing creation
173
+ config.cms.content_types.blacklist -= [:login_portlet]
174
+ ```
175
+
176
+ ## Devise Integration
177
+
178
+ Devise is now the standard authentication mechanism for BrowserCMS. This adds some new (and improved) authentication features including:
179
+
180
+ * Reset Password - Admin users have a link to reset passwords.
181
+ * Strong Password storage - Passwords are now encrypted using bcrypt which is a safer method (http://codahale.com/how-to-safely-store-a-password/)
182
+ * Remember Me - Allows users to stay logged in for up to two weeks.
183
+ * Devise/Warden APIs - Developers can use Devise and/or Warden's APIs to customize how authenication works. The previous RESTful Authentication based solution was not really pluggable.
184
+
185
+ ### [Warning] Upgrading/Password Reset
186
+
187
+ Upgrading to 4.0 means all user passwords will need to be reset. This doesn't apply where external user databases are used (i.e. CAS) for authentication. Just user accounts stored in the CMS itself.
188
+
189
+ This reset is a side effect of using a more secure password encryption algorithm (bcrypt). When users try to log in, they will have to request a password reset. This feature is provided on /cms/login as a standard feature. Users will need to provide an email, and a link for reseting their password will be sent to them. Alternatively, developers may choose to change passwords via the admin interface (or rails console) before turning over sites to the site maintainers.
190
+
191
+ ### Avoiding a reset
192
+
193
+ For most sites, the number of admin users is likely limited and part of a cohesive team. So forcing a reset shouldn't be an issue. In the case of sites that have large user databases, a migration strategy to mass update or possibly creating a new Warden/Devise strategy based on the 3.5.x encryption strategy. These two are coding exercises left to the developers working on the project.
194
+
195
+ For sites that need to keep a record of the old encrypted passwords, remove/comment out the following line from the browsercms400 migration which will preserve the old encrypted passwords.
196
+
197
+ ```
198
+ t.remove :crypted_password
199
+ ```
200
+
201
+ Note that preserving the old password data is just the first step. The new encryption strategy will still be used unless modifications are made to the project.
202
+
203
+ ### Forgot Password
204
+
205
+ Users can reset their password via the admin UI. On /cms/login, a link to 'Forgot Password' is available. Users can enter an email and have the reset link mailed to them.
206
+
207
+ Configuration: For Forgot Password to work, need to ensure the following is present for mailer in BrowserCMS setups.
208
+ * config.action_mailer.default_url_options = { :host => "yourhost" }
209
+
210
+ The core 'ForgotPassword' portlet has been reworked and is probably 100% unnecessary on most sites. It is now blacklisted by default. The portlet now just renders the stock /forgot-password view and isn't editable. Use /forgot-password instead.
211
+
212
+ ## External User API [#644]
213
+
214
+ There is now a core API for handling users that are authenticated/authorized against external data sources. There is a new class (Cms::ExternalUser) which represents a user which has been authenticated using some source other than the Core CMS. This user can have extra information retained as attribute and can be authorized to be part of a specific group(s).
215
+
216
+ A sample implementation of an authentication strategy can be found in lib/cms/authentication/test_password_strategy. Strategies are implemented as Devise Strategies and should either login or pass to the next strategy.
217
+
218
+ Don't forget to enable your new strategy in config/initializers/devise.rb
219
+ ```
220
+ # Add test_password strategy BEFORE other CMS authentication strategies
221
+ config.warden do |manager|
222
+ manager.default_strategies(:scope => :cms_user).unshift :my_custom_strategy
223
+ end
224
+ ```
225
+
226
+ This implementation is intended to replace CAS based strategies used in BrowserCMS 3.x. It provides the ability to style the login page directly, and avoid having an external CAS server software.
227
+
228
+ ## Upgrading
229
+
230
+ 1. Editable Page Titles: In order to take advantage of the editable pages titles, templates need to use the new Template API Method: page_header(). Used rather that <%= page_title %> within h1/h2 etc, this will output an editable page title element for logging in users.
231
+ 2. match -> get: Update your config/routes.rb to change any use of 'match' to get or post for your controller.
232
+ 3. Install the deprecated finders and other gems to help with upgrade. Once you get rid of the deprecation warnings you can remove the gem.
233
+ 4. Content Types - If you have defined content blocks in custom group names, you should edit them to specify the module name. See 'Registering Content Types' above for details. You can delete any seeds that create content types. There will be a deprecation warning if you call save! or create! on ContentTypes.
234
+ 5. Forms - Rework existing form fields in content blocks to use SimpleForm.
235
+ 6. Table Prefixing - In config/initializers/browsercms.rb remove the `Cms.table_prefix = 'cms_' line, which generated deprecation warnings.
236
+ 7. Password Reset - Users will need to reset their password after the upgrade. See Devise Integration/Avoiding a reset if this is concern.
237
+ 8. Forgot Password - Consider removing any existing ForgotPassword portlets and just use /forgot-password controller. Creation is disabled by default.
238
+ 9. Reset Password Portlet - These have been removed as they were no longer necessary. Any remaining instances have been converted to 'DeprecatedPlaceholders'. Find and remove these portlets (and the page they were on) from your site.
239
+ 10. Login Portlet - Consider removing these and using the built in /login route. Creation is disabled by default.
240
+
241
+ ### Migration Cleanup
242
+
243
+ Projects using versions older than 3.5.4 must first upgrade to the latest 3.5.x version. This is because we have compressed the migrations from 3.0.0 up to 4.0.0 into a single migration (browsercms300). Migrations, especially those that alter data get hard to maintain over time. And new projects don't care when they start with fresh data.
244
+
245
+ After migrating your production environment to 3.5.7 do the following:
246
+
247
+ 1. Record the timestamp for the existing 3_0_0 migration (i.e. 20080815014337).
248
+ 2. Delete all the BrowserCMS migrations (3_0_0, 314, etc) from the project.
249
+ 3. Add the migrations for 4.0.0.
250
+ 4. Change the name of the new browsercms300 migration so it matches the old timestamp of browsercms3_0_0. This will prevent the new migration from running.
251
+
252
+
253
+ ## Deprecations
254
+
255
+ * page_title("Some Name") is deprecated in favor of use_page_title("Some Name") for overriding a page title. This will be remove in 4.1. This probably will probably only effect changes make in modules or customizations to the core.
256
+
257
+ v3.5.6
258
+ ======
259
+
260
+ * [#591] Error pages do not render mobile templates
261
+
262
+ v3.5.5
263
+ ======
264
+
265
+ * Update to Rails 3.2.8 - Ensure tests to pass (there appeared to be some changes in inflection and html_safe between 3.2.5 and 3.2.8)
266
+
267
+
268
+ v3.5.4
269
+ ======
270
+
271
+ * [IE and Ckeditor] Fix issue where ckeditor would not load correctly in production for users using Internet Explorer 7-9.
272
+
273
+ v3.5.3
274
+ ======
275
+
276
+ Bug fixes, with some improvements for upgrading projects from older versions of the CMS.
277
+
278
+ * [#461] Allow portlets to easily set the page title. This makes it easy for one portlet to render multiple different content blocks, and change the displayed <title> attribute to match the name of the block. For example:
279
+
280
+ def render
281
+ @block = Product.find(params[:id])
282
+ page_title @block.name
283
+ end
284
+ * [#536] Fix bug to make PortletHelpers available in the render.html.erb.
285
+ * [#534] Bug Fix - Ensure image/file blocks can be deleted from the content library.
286
+ * Migrations - Add another migration to handle Rails 2->3 updates (v3.1.4) which should retroactivealy added before v315.
287
+
288
+ v3.5.2
289
+ ======
290
+
291
+ * Refactor CKEditor integration to make it easier to support external integrations (like CKFinder/KCFinder modules)
292
+ * [#527] Fix bug that prevented editing users/groups/redirects.
293
+
294
+ v3.5.1
295
+ ======
296
+
297
+ * Test with Rails 3.2.5 release
298
+ * Update gemspec to enforce Rails 3.2.5 or later (which contains a critical security SQL Injection patch)
299
+ * Fix issue with has_attachments (possibly caused by nested_assignment changes in Rails 3.2.5)
300
+
301
+ v3.5.0
302
+ ======
303
+
304
+ This release includes a number of new features, including:
305
+
306
+ * Improved Attachments
307
+ * Mobile Friendly templates
308
+ * Rail 3.2 compatibility
309
+ * Improved Heroku support
310
+
311
+ See the upgrade instructions here for existing projects: https://github.com/browsermedia/browsercms/wiki/Upgrading-to-3.5.x-from-3.4.x
312
+
313
+ Improved Attachments
314
+ --------------------
315
+
316
+ Attachments have been completely reworked to use Paperclip (https://github.com/thoughtbot/paperclip).
317
+
318
+ * Each block can now have multiple attachments using different styles.
319
+ * Attachments can be defined as one to one (has_attachment :image) or be stored as a collection (has_many_attachments :photos).
320
+ * Upgrade migrations are provide to migrate file and data for older projects to the new attachment structure.
321
+ * New generators have been provided to create content blocks with the new attachment styles.
322
+
323
+ See this Attachments API guide for more details: https://github.com/browsermedia/browsercms/wiki/Attachments-API
324
+
325
+ Mobile
326
+ ------
327
+
328
+ The CMS can now be configured to serve mobile optimized content, using a mobile subdomain and smart redirecting based on User Agents.
329
+
330
+ * Mobile Templates: Each template can have a 'mobile' version, which will be used when users request a mobile version of that page.
331
+ * Fallback Templates: Any page which lacks a mobile ready template will use the 'full' desktop template when displayed as mobile.
332
+ * Mobile Subdomain: Any requests to the mobile subdomain automatically serve mobile pages. m. is the assumed subdomain.
333
+ * Agent Redirection: Users on mobile devices can be automatically redirected to the mobile subdomain. (Handled via Apache User Agent detection.)
334
+ * Mobile Site Opt Out: Users on mobile device can opt to be redirected to the desktop site if they want. (Handled via a cookie)
335
+ * Mobile caching: The mobile and full sites have their own separate page cache, mean both can be served quickly by Apache.
336
+ * View as Mobile: Editors can preview the mobile templates while editing pages in the admin, if a page has a mobile template. Once in 'mobile' mode, all pages should be viewed as mobile until they disable it.
337
+
338
+ These features are originally from the bcms_mobile module, which has been inlined into the CMS core. See the [Mobile Setup Guide](https://github.com/browsermedia/browsercms/wiki/Setting-up-mobile-sites) for more information.
339
+
340
+ Improved Heroku Support
341
+ -----------------------
342
+
343
+ To better support deploying BrowserCMS to Heroku, we have put together a new guide: https://github.com/browsermedia/browsercms/wiki/Deploying-to-Heroku which covers what steps are required, as well as some considerations. For example, using Heroku requires storing files on an external service, so we refactored the core CMS and worked on a new Amazon S3 module (bcms_aws_s3) that will integrate with it.
344
+
345
+ As a side note, the CMS should work with Postgresql as well, based on our testing with Heroku (which uses Postgres by default).
346
+
347
+ Admin Links
348
+ ==========
349
+ In an engine, you can do the following:
350
+
351
+ ```
352
+ # In lib/bcms_your_module/engine.rb
353
+ initializer 'bcms_your_module.add_menu_item' do |app|
354
+ app.config.cms.tools_menu << {:menu_section => 'widgets',
355
+ :name => 'List of Widgets',
356
+ :engine=>'bcms_your_module',
357
+ :route_name => 'widgets_path'
358
+ }
359
+ end
360
+
361
+ # In app/controllers/bcms_your_module/widget_controller.rb
362
+ class BcmsYourModule::WidgetsController < Cms::BaseController
363
+
364
+ layout 'cms/administration'
365
+ check_permissions :administrate
366
+
367
+ def index
368
+ @menu_section = 'widgets'
369
+ # Do something interesting
370
+ end
371
+ end
372
+
373
+ # In config/routes.rb
374
+ BcmsYourModule::Engine.routes.draw do
375
+ get '/widgets' => 'widgets#index', :as =>:widgets
376
+ end
377
+ ```
378
+
379
+ X-Sendfile
380
+ ----------
381
+
382
+ One way to improve the performance of BrowserCMS is to enable X-Sendfile. Used in conjunction with Web servers like Apache and Nginx, X-Sendfile will allow web servers to handle serving files that have been uploaded into the CMS. Web servers are very well optimized for sending static files, and doing so takes load off the Ruby processes reducing bottlenecks.
383
+
384
+ To enable X-Sendfile in your application, uncomment one of the following two lines depending on which web server you are using.
385
+
386
+ ```
387
+ # In config/environments/production.rb
388
+ config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache
389
+ config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
390
+ ```
391
+
392
+ You will then need to configure your web server to handle X-Sendfile requests. See documentation for [Apache](https://tn123.org/mod_xsendfile/) and [Nginx](http://wiki.nginx.org/XSendfile) for details.
393
+
394
+ Other Notable Fixes
395
+ -------------
396
+
397
+ * [#493] Add Mobile capability
398
+ * [#494] Speed up Cucumber Scenarios
399
+ * [#492] Upgrade to be Rails 3.2.x compatible
400
+ * [#509] Pagination works for custom blocks now
401
+ * [#508] Remove fancy file upload (probably unused and wasn't working anyway)
402
+ * [#519] Better support for Amazon/AWS S3
403
+ * [#521] Remove SITE_DOMAIN constant in favor of more conventional rails configuration methods
404
+ * Add new migration methods to make it easier for modules to namespace their blocks.
405
+ * Allow modules to add new links to the Admin tab without overriding views.
406
+ * Fixed issue where named page routes couldn't be found in portlet views
407
+ * Fixed issue where page routes can't be created in seed data.
408
+ * Confirmed that X-Sendfile works
409
+
410
+ See the [detailed changelog](https://github.com/browsermedia/browsercms/compare/v3.4.0...v3.5.0) for more info.
411
+
412
+ v3.4.2
413
+ ======
414
+
415
+ Maintenance Release
416
+
417
+ * [#502] Fix issue where Page templates/partials could not be editted through the UI
418
+ * [#491] Fix issue where custom blocks couldn't be viewed in page edit mode
419
+ * [#470] Fix issue where loading throws errors on some OS's (Ubuntu)
420
+
421
+
422
+ v3.4.1
423
+ ======
424
+
425
+ Maintenance Release
426
+
427
+ * [#490] Fix issue where Javascript errors occured when in Page edit mode
428
+
429
+ v3.4.0
430
+ ======
431
+
432
+ It's done! After roughly a years worth of work, along with some excellent contributions from the community (thanks Brian King, James Prior and Neil Middleton), BrowserCMS 3.4 is done. This release contains two major additions:
433
+
434
+ 1. It's now Rails 3.1.x compatible
435
+ 2. Mountable App: BrowserCMS can be now be added to existing Rails applications.
436
+
437
+ Note: We recommend using Ruby 1.9.3 with this release (though Ruby 1.9.2 will probably still work)
438
+
439
+ Improved Updating
440
+ -----------------
441
+
442
+ A primary goal of this project is have a simple upgrade path for existing projects. As such, we have baked in the support for upgrading your project right into the core tool itself. See the [Upgrade Guide](https://github.com/browsermedia/browsercms/wiki/Upgrading-a-BrowserCMS-project) for more details, but upgrading a CMS project is now (nearly) as simple as running the following command in your project:
443
+
444
+ $ bcms upgrade
445
+
446
+
447
+ CMSifying your Rails project
448
+ ----------------------------
449
+
450
+ The entire project was reworked to become a Mountable Engine, meaning it should easier to add to an existing Rails project via running the following command in your Rails project. You can now add BrowserCMS to your Rails 3.1.x project by running:
451
+
452
+ $ bcms install
453
+
454
+ Integrating with the CMS
455
+ ------------------------
456
+
457
+ Once the CMS is installed, you can integrate with the existing templates, users, groups and pages. See [Adding BrowserCMS to an existing Rails project](https://github.com/browsermedia/browsercms/wiki/Adding-BrowserCMS-to-an-existing-Rails-project) for details on how you can integrate them. While User authentication/authorization is definitely something that needs more refinement, this release adds some support for modifying your existing User objects to behave as though they were a CMS User (and get access to CMS pages, etc).
458
+
459
+ Namespacing/Prefixing
460
+ ---------------------
461
+
462
+ * Most core files in the CMS are namespaced under Cms:: . This should reduce the chance of conflicting classes (i.e. what was User is now Cms::User)
463
+ * Table names can optionally be namespaced. By default, there is no namespace for standalone BrowserCMS projects. You can set: Cms.table_prefix = "cms_" to change this.
464
+ * Prefixing tables will be reflected in cms migrations (like create_content_table) automatically. Passing :prefix=>false will add no prefix.
465
+ * When defining migrations for cms tables, (using create_table), you can use prefix() to apply the current prefix. i.e.
466
+
467
+ create_table prefix(:users)
468
+
469
+ Other Notable Fixes
470
+ -------------------
471
+ * [#301] New `bcms upgrade` script for updating BrowserCMS projects.
472
+ * [#433] Starting new projects should work regardless of whether later versions of Rails are installed (i.e. Rails 3.2).
473
+ * [#3] Asset Pipeline: All bcms assets are now served using the assets pipeline.
474
+ * [#443] Removed two primitive javascript and stylesheets in favor of asset pipeline (where needed).
475
+ * [#448] Mountable Engines - BrowserCMS is now a mountable engine, which should make integrating it with other projects easier.
476
+ * [#416] BrowserCMS can be added to Gemfiles using :git or :path, which should make testing gems or projects easier.
477
+ * [#480] Standardized Version Column - Changed how version tables point back to their 'original' record to make working with namespaces easier. Module developers will need to update their migrations for the next release of their modules.
478
+ * [#466] Generate blocks with attachments correctly - When generating blocks that have an attachment, the initially generated code should work correctly without addition customization or tweaking.
479
+ * [#450] Generate Engines - BrowserCMS modules are created as Mountable Engines when running `bcms module`.
480
+ * [#487] CKEditor Gem - Replace the built in CKeditor gem with the Asset pipeline aware ckeditor_rails gem.
481
+
482
+ See the [detailed changelog](https://github.com/browsermedia/browsercms/compare/v3.3.3...v3.4.0) for a complete list of changes, as well as the [Closed Tickets for 3.4.0](https://github.com/browsermedia/browsercms/issues?milestone=1&state=closed) for a complete list of closed items.
483
+
484
+ v3.3.4
485
+ ======
486
+
487
+ Maintenance release
488
+
489
+ * [#503] - Searching and sort content blocks works
490
+ * [#472] - Sorting content blocks works
491
+
492
+ v3.3.3
493
+ ======
494
+
495
+ Performance! - This merges the performance tuning updates originally added in 3.1.5. See those release notes for details.
496
+
497
+ v3.3.2
498
+ ======
499
+
500
+ This is a maintenance release for the Rails 3.0 branch of BrowserCMS. It should simplify starting new projects and deploying them into production. In bcms-3.3.1, there were a number of configuration changes that were required before sites could be deployed. The 'correct' settings should now be generated when new BrowserCMS projects are created.
501
+
502
+ If developers still have issues deploying projects into production with this release, please report them on the mailing list. Note that deploying to Heroku is still going to require additional steps.
503
+
504
+ Details
505
+ -------
506
+ See https://github.com/browsermedia/browsercms/issues?sort=created&direction=desc&state=closed&page=1&milestone=5 for complete details, but here are highlights.
507
+
508
+ * [#425] db:install should now correctly setup the database in production mode (without needing to edit seeds.rb)
509
+ * [#412] Page caching directory should work on more hosting setups.
510
+ * [#409] [#427] Added the correct defaults to production.rb so manually editing it before deploying shouldn't be necessary
511
+ * [#406] Fixed a bug where having a Link as the first item in a section would throw errors.
512
+ * [#428] Updated the Deployment Guide (https://github.com/browsermedia/browsercms/wiki/Deployment-Guide) to reflect the necessary steps.
513
+
514
+ v3.3.0
515
+ ======
516
+
517
+ Final release is ready. Includes all the Rails 3 goodness, as well as an improve command line tool.
518
+
519
+ bcms new cool_new_project
520
+ bcms demo i_want_my_own_app_template -m http://example.com/app_template.rb
521
+ bcms module bcms_pet_store -d mysql
522
+
523
+ Details
524
+ -------
525
+ * New commandline syntax described here: https://github.com/browsermedia/browsercms/wiki/Getting-Started
526
+ * Removed guides from core project in favor of moving to Github's wiki
527
+ * Updated API docs so YARD is being used, and hosted at http://rubydoc.info/gems/browsercms/
528
+
529
+
530
+ v3.3.0.beta
531
+ ===========
532
+
533
+ The long awaited Rails 3 release. We have completely reworked BrowserCMS to work with Rails 3 and Ruby 1.9.2. This release is a 'beta', so that folks can start testing against it. This is especially important for module authors, as any modules need to be upgraded to work with Rails 3 as well. Our next steps will be to collect feedback for a final 3.3.0 release/release candidate. If we can get most of the 'core' modules (News, Blog, etc) updated and working, that will likely mean a final 3.3.0 release.
534
+
535
+ To get this do:
536
+
537
+ gem install browsercms --pre
538
+
539
+ Then generate a new project using the same command as before:
540
+
541
+ bcms my_bcms_project
542
+ cd my_bcms_project
543
+ rails s
544
+
545
+ Features:
546
+ --------
547
+ * Rails 3!!! : BrowserCMS now uses and requires Rails 3 (3.0.5 or later). We are also requiring Ruby 1.9.2, though 1.8.7 is 'close' to working.
548
+ * Engines: Both BrowserCMS and Module are now full blown Rails engines, and we have updated the 'module' template so its correctly generates engines.
549
+ * Module Upgrade script: Since all existing modules will require updating, we have provided a commandline script 'bcms-upgrade' to help manage it. Works similarly to how Rails Upgrade does: (https://github.com/jm/rails-upgrade/). Run 'bcms-upgrade check' in your project to get started.
550
+ * Project Upgrades: The 'bcms-upgrade' tool also has some support for handling upgrades, however its less comprehensive than the module support. See https://github.com/browsermedia/browsercms/wiki/Upgrading-a-BrowserCMS-project for details on what's involved in upgrading a project to BrowserCMS 3.3/Rails 3.
551
+ * Module Installer: After you download a module (i.e. gem install) which is bcms-3.3 compatible, you can now install that modules easily via rails generate cms:install bcms_news . This take care of adding the gem to your project, copying migrations and adding routes. It should no longer be necessary to call 'script/generate browser_cms' everytime you add a new module.
552
+ * Asset Packaging: All CMS static assets (js, images, html, etc) are now served directly from the BrowserCMS gem, as well as Modules. They are no longer copied into projects, and should make it much easier to keep track of whether a file has been altered/overridden. Any unaltered copied file can be safely deleted from any projects that upgrade to 3.3.
553
+ * JQuery Updates: Core JQuery libraries packaged with BrowserCMS are updated to v1.5.1. As part of this, several libraries have been removed as obsolete or unused, including jquery.dimensions, jquery.contextMenu and jquery.thickbox.
554
+ * New Generators: In addition to the new module installer, to fit with the Rails 3 way of 'namespacing' generators, the existing generators have been slightly renamed, specifically:
555
+ * rails generate cms:content_block (Was script/generate content_block)
556
+ * rails generate cms:portlet (Was script/generate portlet)
557
+ * rails generate cms:template (Was script/generate template)
558
+
559
+ Bug Fixes:
560
+ ---------
561
+ * #386 - Date Picker - Fixed inconsistent formatting where sometimes dates would appear with timestamps. In order to be both 1.8.7 and 1.9.2 compatible, all datepicker dates are now formatted as YYYY-mm-dd.
562
+ * #357 - Page path generator should not replace apostrophes with hyphens enhancement
563
+ * #298 - Dashboard errors when clicking complete tasks without selecting any tasks
564
+ * #346 - Connected pages returning historic results
565
+ * #345 - Pages with trailing slashs can cause issues.
566
+ * #352 - Revert to old Page Version Bug versioning
567
+
568
+ This release essentially merged the changes from 3.2.0 into 3.3.0 for a single release, so thanks to the folks that contributed bug patches for that.
569
+
570
+ Issues?
571
+ ------
572
+
573
+ If you encounter issues with this build, please report them for the 3.3.0.rc1 here: https://browsermedia.lighthouseapp.com/projects/28481/milestones/105840-330rc1
574
+
575
+ v3.1.5
576
+ ======
577
+
578
+ Performance Upgrades - This release adds a number of improvements designed to greatly improve the performance for larger sites (with thousands of pages/sections/attachments). The project now depends on the ancestry gem, which is used to handle the parent/child relationship between Sections/pages in a much more efficent way.
579
+
580
+ * #432 - Sitemap - The sitemap load time has been greatly reduced for larger sites. Load times of 60s or more with multiple thousands of pages/attachments should be reduced to several sections (2-3s). The number of queries (which could have been in the thousands before) is now ~9 and won't increase as the number of pages increase. There could still be further efficency gains from loading less data overall (i.e. non-open sections), but that will be for a future version.
581
+ * Pages - Viewing individual pages should also be faster, again by reducing the number of queries required to load the menus.
582
+ * Content Library - The load time of the most frequently hit content library pages (Text, File, Image, Portlet) should be faster.
583
+ * Indexes - A number of database indexes for the most commonly used core table/queries for the major pages have been added. In some cases, further indexes may/may not have advantage due to how database's (i.e. MySQL) handle optimization.
584
+
585
+ v3.1.3
586
+ ======
587
+
588
+ Small fix to get rid of a troublesome bug with reverting.
589
+
590
+ Bug Fixes
591
+ * #352 - Reverting pages with connected blocks should now work.
592
+
593
+ v3.1.2
594
+ ======
595
+
596
+ This is a small release which fixes a serious security patch. It is highly recommended that users update to this version.
597
+
598
+ Lighthouse ticket #'s:
599
+ * #314 - Page Templates and Partials will now 'page' if there are > 15 of them.
600
+ * #363 - Security patch that closes a security hole that would allow unauthorized users to delete portlets. Special thanks to Jan Schulz-Hofen for identifying the vulnerability and providing a patch for this.
601
+
602
+
603
+
604
+ Bug Fixes
605
+ * #352 - Reverting pages with connected blocks should now work.
606
+
607
+ v3.1.0
608
+ ======
609
+
610
+ BrowserCMS 3.1 is done! The release has a few exciting new features/refinements as well as its share of bug fixes. As always, you can get it by running 'gem install browsercms', and follow the upgrade guide on the wiki. Please report any errors found to our bug tracking system: https://browsermedia.lighthouseapp.com/projects/28481-browsercms-30
611
+
612
+ Notable Features:
613
+ -----------------
614
+
615
+ 1. New Html Editor: (LH #150) The default editor packaged with BrowserCMS is now CKEditor, which is the upgraded version of FCKEditor. CKEditor supports new features, polish and performance. For developers that still want to use FCKEditor any reason, we have made available a bcms_fckeditor module for continuity purposes. Installing the bcms_fckeditor module will switch the default editor back.
616
+ 2. Easier project creation: (LH #234) You can now create a new BrowserCMS project by typing 'bcms name_of_project' or 'browsercms name_of_project'. The command line tool is really just thin wrappers around 'rails' that invoke the application templates from within the gem itself. Run 'bcms' for more complete help tips, or http://patrickpeak.com/wordpress/2010/01/incoming-browsercms-commandline-script/ for a more indepth write up.
617
+ 3. Improved Portlet Workflow: (LH #180) Portlets now default to having their templates not be editable via the UI. There is an easy on/off option on the portlet to turn editing back on. This will allow for developers to more rapidly refine their views, with the option to easily make them editable when complete.
618
+ 4. Improved Documentation: We have updated the guides to match 3.1 features (especially 'Getting Started' - LH #272). There is also several new guides, including a more detailed exploration of Content Blocks and creating Templates (LH #287). All guides can now be found at http://guides.browsercms.org. API docs can be found at http://api.browsercms.org.
619
+ 5. Controllers that act like Pages: (LH #202) - Added a more refined way for developers to create their own controllers that can behave like CMS content pages, including using CMS templates as layouts, being able to throw exceptions like 404s to route to the standard CMS error page, etc. Also added more hooks for securing controllers as though they were in a particular section. Developers can 'include Cms::Acts::ContentPage' in their controllers to get access to this behavior.
620
+
621
+ Upgrade Notes:
622
+ --------------
623
+
624
+ When upgrading from 3.0.6 to 3.1, there are several things to keep in mind mostly related to how the new editor works.
625
+
626
+ 1. You can safely delete the public/fckeditor directory from your project. We have moved the default location that modules (like bcms_fckeditor) store public files to public/bcms/module_name (so public/bcms/fckeditor or public/bcms/ckeditor).
627
+ 2. FCKEditor styles: If you customized your fckeditor styles (by editing the fckstyles.xml), install the bcms_fckeditor module and it will create a public/bcms_config/fckeditor directory. The fckstyles.xml can be edited there, which will keep it separate from the 'stock' files that fckeditor comes with.
628
+
629
+ More Features/Enhancements:
630
+ ---------------------------
631
+
632
+ Lighthouse ticket #s are included:
633
+ * #199 - Developers should be able to manually set the display_name of content blocks. (See http://guides.browsercms.org/content_blocks.html for details).
634
+ * #234 - Added a cms_check_box field so content blocks can have single boolean values.
635
+ * #123 - Release the bcms_google_mini module as a gem. Allows for easy integration with the Google Mini Search tool for searching BrowserCMS sites.
636
+ * #190 - Changed cms_file_field helper so it uses a standard file browse button by default.
637
+ * #233 - When new modules are generated, there is now a public directory created by default (public/bcms/name_of_module). Developers can put files they need copied into projects into that directory when the module is installed.
638
+ * #198 - Added portlets that allow public users to reset their password if they have forgotten it.
639
+ * #295 - When creating a new project, it will explicitly set the version # of the browsercms gem. This should reduce the need to vendor the gem for servers that have multiple BrowserCMS sites.
640
+ * #299 - When generating a portlet, a portlet_helper will be created. All methods on this helper will be available in the portlet template view.
641
+ * #300 - For new projects, the 'default' template is now stored on the file system. This should make it more obvious to new developers that both file and database managed templates are possible.
642
+ * #301 - Created a generator for templates. ./script/generate template name_of_template will create a new erb template in the proper directory with some reasonable defaults.
643
+ * #205 - Developers can check if Users can view a particular section path (User.able_to_view?("/about-us").
644
+
645
+ Bug Fixes:
646
+ ---------
647
+
648
+ * #208 - Fixed an issue where an error on the dashboard that was preventing BrowserCMS projects from using SQLlite.
649
+ * #161 - Fixed a typo on the Edit Group Permissions page. (Thanks to Dmytro Samodurov)
650
+ * #197 - Fixed an issue where an editor could not cancel deleting of a template.
651
+ * #204 - Fixed an error where pages/sections would not appear in menus when pages were moved or deleted.
652
+ * #206 - Fixed an error where sections should be marked with an 'on' state, even if the first page in the section is hidden. (Thanks to Kimmy/3months.com)
653
+ * #240 - Fixed an issue where users could publish blocks via the content library that were embedded into pages. This resulted in a counter intuitive state where users would think they were publishing pages when they were not.
654
+ * #221 - Updated render_breadcrumbs helpers so it will return an empty string if there is no current_page. This should make breadcrumbs behaves better if using Cms::Acts::ContentPage and page templates.
655
+ * #265 - Fixed an issue where users could only have a single task assignment. (Thanks to 3months.com)
656
+ * #278 - Fixed an issue where users with expiry dates would not appear in the task list (Thanks to kimmy/3months.com)
657
+ * #284 - Eliminated warnings about Version constants while running tests (Thanks to czarneckid)
658
+ * #294 - Fixed an issue where generating blocks with attachment fields would fail during migrations.
659
+ * #275 = Fixed an issue where admin users were sent links to public pages when they were assigned tasks. This made it hard for them to follow links to pages to make corrections to them.
660
+ * #263 - Fixed an issue where portlets embedded in pages would break pages if they were deleted.
661
+
662
+ v3.0.6
663
+ ======
664
+
665
+ 3.0.6 is a small bug fix release which should correct the big issues that were preventing use of 3.0.5. Here's the rundown:
666
+
667
+ 1. The 'require_javacript_include' and 'require_stylesheet_link' methods were not working properly, and now they do.
668
+ 2. You could not publish a changed link without modifying it in some way, and now you can. (LIGHTHOUSE #256)
669
+ 3. You can now search for portlets and tags by name in the Content Library. (LIGHTHOUSE #257 and #258)
670
+ 4. After creating or updating a category or tag via the Content Library, you are now redirected to the list page (as with Category Types) instead of being shown a blank page. (LIGHTHOUSE #259)
671
+ 5. The user list in the Admin area now shows a user's login (instead of nothing) if the user does not have a name. (LIGHTHOUSE #260)
672
+
673
+ v3.0.5
674
+ ======
675
+
676
+ BrowserCMS 3.0.5 has been released to gemcutter. This is primarily a bug fix release, correcting some IE support issues as well as some problems with reverting. We also made some subtle changes to how JS gets loaded on page templates in the CMS admin UI. If your project had been using its own javascript (like jquery/prototype) in the page templates, you should double check to make sure its working correctly. See item #2 below for more details.
677
+
678
+ This is the first release directly to gemcutter and we will likely move to shutdown the rubyforge project since we are only it for gem hosting. Since GemCutter is now the default gem hosting environment this shouldn't really affect anybody.
679
+
680
+ The highlights of what has been fixed are as follows. You can also see the original tickets in Lighthouse here: https://browsermedia.lighthouseapp.com/projects/28481-browsercms-30/milestones/57844-305
681
+
682
+ Features/Enhancements:
683
+ 1. Javascript and Stylesheet assets may be "required" from any template or partial via helper methods. These methods add the asset to the header only if it has not already been added via a "required" statement. This may be useful for developer who create portlets that rely on common javascript libraries like jquery. You can add a '<%= require_javascript_include "jquery" %>' to your portlet template and be assured it will only be added to the page template once. LIGHTHOUSE #248.
684
+
685
+ Bug Fixes:
686
+ 1. Fixed an issue where you couldn't revert some pages/blocks. Attributes of draft versions could not be updated (or reverted) to the same attributes as the published version of the object. This problem affected pages and versioned content blocks. You can now update draft attributes to any value. The feature in which a new draft is only created if there is a change still works. LIGHTHOUSE #225.
687
+ 2. Internet Explorer 7 could not remove blocks from page containers nor move blocks within page containers. This problem seemed to be due to JavaScript permissions, as the iframe rendering the page toolbar could not attach the update form to the parent window. The edit container now requires JavaScript (see the enhancement) in the actual page to build the update forms. LIGHTHOUSE #229.
688
+ 3. Search parameters were not included with pagination links in the Content Library, so clicking the "next page" link of the searched results would lose the search filter, thus showing results the user had previously filtered out. Search parameters are now included in the pagination links. LIGHTHOUSE #239.
689
+
690
+
691
+ v3.0.4
692
+ ======
693
+
694
+ We found an unfortunate bug in the changes we introduced to the
695
+ "render menu" functionality in the 3.0.3 release. We have quickly
696
+ patched this and have released the 3.0.4 gem on RubyForge. BrowserCMS 3.0.3 is now released and available for download.
697
+
698
+ v3.0.3
699
+ ======
700
+
701
+ The primary goal of this release was to incorporate the many community
702
+ patches/changes that folks have been providing over the past few
703
+ months. A lot of developers put some hard work and smart thinking into
704
+ these patches, so many thanks to everyone who contributed to helping
705
+ make BrowserCMS even just a little bit better.
706
+
707
+ As always,the complete list of fixes can be found in Lighthouse -
708
+ https://browsermedia.lighthouseapp.com/projects/28481-browsercms-30/t...
709
+
710
+ Release Notes:
711
+
712
+ 1. Section editing permissions are now enforced. A CMS User must have
713
+ edit permission for a given section to add pages, links, or
714
+ subsections to it, as well as to edit the pages or links in that
715
+ section. Only CMS Administrators may change permissions. Blocks that
716
+ appears in multiple sections can be edited only by someone with
717
+ permissions to edit all of the sections. Patch supplied by Jon
718
+ Leighton, who incorporated the work of nachokb and webficient.
719
+
720
+ 2. Portlets can force redirects to Access Denied and Page not found
721
+ pages by raising AccessDenied and RecordNotFound errors. Patch
722
+ supplied by Jon Leighton.
723
+
724
+ 3. Versioning no longer breaks "update_attribute" api. Patch supplied
725
+ by nachokb.
726
+
727
+ 4. Bug fixed in which Attachment Blocks could not have attachments
728
+ added to them if there was no attachment at creation. Patch supplied
729
+ by Joshua Vial.
730
+
731
+ 5. Styles for containers improved to accommodate relative-width
732
+ formats. Patch supplied by djcp.
733
+
734
+ 6. File handling uses fileutils instead of ftools for Ruby 1.9
735
+ compatibility. Patch supplied by ahaller.
736
+
737
+ 7. Menu helper can now take an arbitrary tree of nodes. Patch
738
+ supplied by Jon Leighton.
739
+
740
+ 8. All unpublished pages publishable by the current user show up on
741
+ the dashboard. Patch supplied by Jon Leighton.
742
+
743
+ 9. If the login portlet has a success url set, this url overrides
744
+ wherever the user was trying to get to. Patch supplied by Luciano
745
+ Ruete.
746
+
747
+ 10. Bug fixed in which the routes in vendored gems overrode routes in
748
+ config. Patch supplied by Jon Leighton.
749
+
750
+ 11. Regular expression for email validation improved. Patch supplied
751
+ by Joshua Vial.
752
+
753
+ 12. Username in navigation now a link to view your account for non-
754
+ administrators. Also added the ability to change your password.
755
+ Patch supplied by Jon Leighton.
756
+
757
+ 13. Double-clicking a content item in the Content Library now takes
758
+ you to the edit (or view, if you are not allowed to edit) page.
759
+
760
+ 14. Method added to Group to check if guest.
761
+
762
+ 15. Added PSDs for some administrative buttons for use by those
763
+ working to improve the UI.
764
+
765
+ 16. Deprecated cms:install rake task removed.
766
+
767
+ v3.0.2
768
+ ======
769
+
770
+ We just released the 3.0.2 release through rubyforge, and it includes
771
+ a few small fixes.
772
+ Daniel Collis-Puro supplied a patch for the cms_text_field
773
+ instructions float problem.
774
+ Content blocks ending with 'ss' were causing problems, and now they
775
+ don't.
776
+ You can add columns to both the block and version table with one line
777
+ in migrations now.
778
+
779
+ For further info on what was changed, refer to this URL.
780
+ https://browsermedia.lighthouseapp.com/projects/28481-browsercms-30/t...
781
+ . It's pretty short list, but the instructions bug was quite
782
+ bothersome. We also have set up a Wiki for the project (on Github),
783
+ which can be found here: http://wiki.github.com/browsermedia/browsercms
784
+ .
785
+
786
+ The next release will be 3.0.3 and we are going to focus on rolling in
787
+ most of the community patches which folks have been sending pull
788
+ requests for, that we just haven't have a chance to get included.
789
+
790
+ v3.0.1
791
+ ======
792
+
793
+ I have just released 3.0.1 as a gem to ruby forge. This is mostly a
794
+ bug fix release, with a few notable issues I will mention in this
795
+ email. For a complete list of all the tickets fixed, see Lighthouse (https://browsermedia.lighthouseapp.com/projects/28481-browsercms-30/t...
796
+ )
797
+
798
+ h1. Release Notes
799
+ Here are some tickets fixed which might be of interest, along with the
800
+ corresponding LH ticket #.
801
+
802
+ * #116 - Changed guide format to Textile: This should be more inline
803
+ with how Rails guides works, which should make it easier for users to
804
+ contribute to the documentation.
805
+ * #67 - render_menu can now cap how many nav items to show: This
806
+ should help with menus that have a fixed amount of space (like
807
+ horizontal nav), where you want at most X number of items to show, and
808
+ you don't want to accidentally break your nav when adding an item to
809
+ the sitemap.
810
+ * #66 - render_menu can now dynamically render nav items from specific
811
+ sections: This helps with making 'utility' nav, where you might want
812
+ items from a specific section to be consistent on all templates (for
813
+ example, your 'contact us'/Sitemap/Directions to our office pages can
814
+ be in a specific section).
815
+ * #121 - Sample modules are released as gems: All the modules (except
816
+ google_mini) found here https://github.com/browsermedia can now be
817
+ installed as gems from rubyforge (i.e. gem install bcms_news)
818
+ * #51 - Portlets can be configured to render views from the file
819
+ system: Portlets by default use store the view in the database, so
820
+ they can be editted through the UI at runtime. This option lets you
821
+ have it use the copy on the file system, which should allow for quick
822
+ edit cycles. (See doc/guides/html/developer_guide.html for details)
823
+
824
+ Haml Support for templates- There is no ticket # for this, but the
825
+ Developers Guide has some instructions on how to use HAML for your
826
+ portlet views as well.
827
+
828
+ Plus a number of reported bugs from LH.
829
+
830
+ h1. Docs
831
+ I will update browsercms.org sometime today with the latest version of
832
+ the docs, but as always, you can find a copy with the latest source
833
+ code.
834
+
835
+ h1. Issues
836
+ If folks run into issues w/ 3.0.1, please report them in Lighthouse (https://browsermedia.lighthouseapp.com/projects/28481-browsercms-30
837
+ ), to be fixed in 3.0.2.