browsercms-artirix 4.0.0.rc1.art4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.yardopts +5 -0
- data/COPYRIGHT.txt +27 -0
- data/GPL.txt +674 -0
- data/LICENSE.txt +165 -0
- data/README.markdown +45 -0
- data/app/assets/fonts/icomoon.dev.svg +61 -0
- data/app/assets/fonts/icomoon.eot +0 -0
- data/app/assets/fonts/icomoon.svg +61 -0
- data/app/assets/fonts/icomoon.ttf +0 -0
- data/app/assets/fonts/icomoon.woff +0 -0
- data/app/assets/images/ckeditor/plugins/delete_content/icons/deletecontent.png +0 -0
- data/app/assets/images/ckeditor/plugins/edit_content/icons/editcontent.png +0 -0
- data/app/assets/images/ckeditor/plugins/move_content/icons/movecontentdown.png +0 -0
- data/app/assets/images/ckeditor/plugins/move_content/icons/movecontentup.png +0 -0
- data/app/assets/images/cms/administration/user_browser_bg.gif +0 -0
- data/app/assets/images/cms/arrow-down.png +0 -0
- data/app/assets/images/cms/arrow-up.png +0 -0
- data/app/assets/images/cms/bg.png +0 -0
- data/app/assets/images/cms/bl_curve.png +0 -0
- data/app/assets/images/cms/bottom_cap.png +0 -0
- data/app/assets/images/cms/bottom_cap_content.png +0 -0
- data/app/assets/images/cms/browse.gif +0 -0
- data/app/assets/images/cms/browser_media_logo.png +0 -0
- data/app/assets/images/cms/browsercms_logo.png +0 -0
- data/app/assets/images/cms/buttons/button.png +0 -0
- data/app/assets/images/cms/buttons/button_bg.png +0 -0
- data/app/assets/images/cms/buttons/button_cap.png +0 -0
- data/app/assets/images/cms/buttons/button_cap_h.png +0 -0
- data/app/assets/images/cms/buttons/button_cap_off.gif +0 -0
- data/app/assets/images/cms/buttons/button_cap_off_middle.gif +0 -0
- data/app/assets/images/cms/buttons/button_h.png +0 -0
- data/app/assets/images/cms/buttons/button_left_bg.png +0 -0
- data/app/assets/images/cms/buttons/button_off.png +0 -0
- data/app/assets/images/cms/buttons/button_off_middle.png +0 -0
- data/app/assets/images/cms/buttons/delete_x.png +0 -0
- data/app/assets/images/cms/buttons/delete_x_disabled.png +0 -0
- data/app/assets/images/cms/buttons/delete_x_h.png +0 -0
- data/app/assets/images/cms/buttons/sm_button.gif +0 -0
- data/app/assets/images/cms/buttons/sm_button_2.gif +0 -0
- data/app/assets/images/cms/buttons/sm_button_2_h.gif +0 -0
- data/app/assets/images/cms/buttons/sm_button_h.gif +0 -0
- data/app/assets/images/cms/cogs.png +0 -0
- data/app/assets/images/cms/containers/add.gif +0 -0
- data/app/assets/images/cms/containers/alpha.png +0 -0
- data/app/assets/images/cms/containers/beta.png +0 -0
- data/app/assets/images/cms/containers/delete.gif +0 -0
- data/app/assets/images/cms/containers/down.gif +0 -0
- data/app/assets/images/cms/containers/edit.gif +0 -0
- data/app/assets/images/cms/containers/up.gif +0 -0
- data/app/assets/images/cms/containers/view.gif +0 -0
- data/app/assets/images/cms/content_bg.gif +0 -0
- data/app/assets/images/cms/dashboard/bottom_cap.png +0 -0
- data/app/assets/images/cms/dashboard/bottom_cap_content.png +0 -0
- data/app/assets/images/cms/dashboard/header_bg.gif +0 -0
- data/app/assets/images/cms/dashboard/header_left_bg.gif +0 -0
- data/app/assets/images/cms/dashboard/home.png +0 -0
- data/app/assets/images/cms/dashboard/table_header_bg.gif +0 -0
- data/app/assets/images/cms/dashboard/top_cap.png +0 -0
- data/app/assets/images/cms/dashed.gif +0 -0
- data/app/assets/images/cms/datepicker/clear.gif +0 -0
- data/app/assets/images/cms/datepicker/close.gif +0 -0
- data/app/assets/images/cms/dk_button_l.gif +0 -0
- data/app/assets/images/cms/dk_button_r.gif +0 -0
- data/app/assets/images/cms/dot.png +0 -0
- data/app/assets/images/cms/draft_status.gif +0 -0
- data/app/assets/images/cms/file-uploading.gif +0 -0
- data/app/assets/images/cms/gray_long_bg.gif +0 -0
- data/app/assets/images/cms/home.png +0 -0
- data/app/assets/images/cms/icons/actions/add.png +0 -0
- data/app/assets/images/cms/icons/actions/config.png +0 -0
- data/app/assets/images/cms/icons/actions/connect.png +0 -0
- data/app/assets/images/cms/icons/actions/delete.png +0 -0
- data/app/assets/images/cms/icons/actions/down.png +0 -0
- data/app/assets/images/cms/icons/actions/edit.png +0 -0
- data/app/assets/images/cms/icons/actions/folder.png +0 -0
- data/app/assets/images/cms/icons/actions/folder_add.png +0 -0
- data/app/assets/images/cms/icons/actions/folder_delete.png +0 -0
- data/app/assets/images/cms/icons/actions/folder_edit.png +0 -0
- data/app/assets/images/cms/icons/actions/folder_move.png +0 -0
- data/app/assets/images/cms/icons/actions/folder_open.png +0 -0
- data/app/assets/images/cms/icons/actions/history.png +0 -0
- data/app/assets/images/cms/icons/actions/home.png +0 -0
- data/app/assets/images/cms/icons/actions/left.png +0 -0
- data/app/assets/images/cms/icons/actions/link.png +0 -0
- data/app/assets/images/cms/icons/actions/page.png +0 -0
- data/app/assets/images/cms/icons/actions/page_add.png +0 -0
- data/app/assets/images/cms/icons/actions/page_edit.png +0 -0
- data/app/assets/images/cms/icons/actions/page_move.png +0 -0
- data/app/assets/images/cms/icons/actions/redo.png +0 -0
- data/app/assets/images/cms/icons/actions/refresh.png +0 -0
- data/app/assets/images/cms/icons/actions/right.png +0 -0
- data/app/assets/images/cms/icons/actions/root_folder.png +0 -0
- data/app/assets/images/cms/icons/actions/root_link.png +0 -0
- data/app/assets/images/cms/icons/actions/root_page.png +0 -0
- data/app/assets/images/cms/icons/actions/undo.png +0 -0
- data/app/assets/images/cms/icons/actions/up.png +0 -0
- data/app/assets/images/cms/icons/actions/view.png +0 -0
- data/app/assets/images/cms/icons/file_types/doc.png +0 -0
- data/app/assets/images/cms/icons/file_types/file.png +0 -0
- data/app/assets/images/cms/icons/file_types/gif.png +0 -0
- data/app/assets/images/cms/icons/file_types/htm.png +0 -0
- data/app/assets/images/cms/icons/file_types/pdf.png +0 -0
- data/app/assets/images/cms/icons/file_types/ppt.png +0 -0
- data/app/assets/images/cms/icons/file_types/swf.png +0 -0
- data/app/assets/images/cms/icons/file_types/txt.png +0 -0
- data/app/assets/images/cms/icons/file_types/xls.png +0 -0
- data/app/assets/images/cms/icons/file_types/xml.png +0 -0
- data/app/assets/images/cms/icons/file_types/zip.png +0 -0
- data/app/assets/images/cms/icons/status/archived.gif +0 -0
- data/app/assets/images/cms/icons/status/draft.gif +0 -0
- data/app/assets/images/cms/icons/status/hidden.gif +0 -0
- data/app/assets/images/cms/icons/status/locked.gif +0 -0
- data/app/assets/images/cms/icons/status/published.gif +0 -0
- data/app/assets/images/cms/icons/status/unlocked.gif +0 -0
- data/app/assets/images/cms/icons/user.png +0 -0
- data/app/assets/images/cms/login_bg.jpg +0 -0
- data/app/assets/images/cms/login_bottom.jpg +0 -0
- data/app/assets/images/cms/login_top.gif +0 -0
- data/app/assets/images/cms/logo.png +0 -0
- data/app/assets/images/cms/lt_button_bg.gif +0 -0
- data/app/assets/images/cms/lt_button_l.gif +0 -0
- data/app/assets/images/cms/lt_button_r.gif +0 -0
- data/app/assets/images/cms/menu/block_cap_h.gif +0 -0
- data/app/assets/images/cms/menu/bottom_cap.png +0 -0
- data/app/assets/images/cms/menu/bottom_cap_menu.png +0 -0
- data/app/assets/images/cms/menu/bottom_cap_menu_first.png +0 -0
- data/app/assets/images/cms/menu/menu_header_first_bg.gif +0 -0
- data/app/assets/images/cms/menu/selected_block_cap.gif +0 -0
- data/app/assets/images/cms/menu/top_cap.png +0 -0
- data/app/assets/images/cms/menu/top_cap_menu_header.png +0 -0
- data/app/assets/images/cms/menu.png +0 -0
- data/app/assets/images/cms/menu_h.gif +0 -0
- data/app/assets/images/cms/menu_header.png +0 -0
- data/app/assets/images/cms/menu_open.png +0 -0
- data/app/assets/images/cms/menu_open_bg.gif +0 -0
- data/app/assets/images/cms/nav/on_bg.gif +0 -0
- data/app/assets/images/cms/nav.png +0 -0
- data/app/assets/images/cms/nav_admin.gif +0 -0
- data/app/assets/images/cms/nav_admin_h.gif +0 -0
- data/app/assets/images/cms/nav_admin_on.gif +0 -0
- data/app/assets/images/cms/nav_cap.png +0 -0
- data/app/assets/images/cms/nav_cap_h.gif +0 -0
- data/app/assets/images/cms/nav_content_library.gif +0 -0
- data/app/assets/images/cms/nav_content_library_h.gif +0 -0
- data/app/assets/images/cms/nav_content_library_on.gif +0 -0
- data/app/assets/images/cms/nav_dash.gif +0 -0
- data/app/assets/images/cms/nav_dash_h.gif +0 -0
- data/app/assets/images/cms/nav_dash_on.gif +0 -0
- data/app/assets/images/cms/nav_h.gif +0 -0
- data/app/assets/images/cms/nav_sitemap.gif +0 -0
- data/app/assets/images/cms/nav_sitemap_h.gif +0 -0
- data/app/assets/images/cms/nav_sitemap_on.gif +0 -0
- data/app/assets/images/cms/page_toolbar/page_toolbar_bg.gif +0 -0
- data/app/assets/images/cms/page_toolbar/page_toolbar_inset_bg.gif +0 -0
- data/app/assets/images/cms/page_toolbar/page_toolbar_inset_draft_bg.gif +0 -0
- data/app/assets/images/cms/page_toolbar/page_toolbar_inset_draft_l.gif +0 -0
- data/app/assets/images/cms/page_toolbar/page_toolbar_inset_draft_r.gif +0 -0
- data/app/assets/images/cms/page_toolbar/page_toolbar_inset_l.gif +0 -0
- data/app/assets/images/cms/page_toolbar/page_toolbar_inset_published_bg.gif +0 -0
- data/app/assets/images/cms/page_toolbar/page_toolbar_inset_published_l.gif +0 -0
- data/app/assets/images/cms/page_toolbar/page_toolbar_inset_published_r.gif +0 -0
- data/app/assets/images/cms/page_toolbar/page_toolbar_inset_r.gif +0 -0
- data/app/assets/images/cms/page_toolbar/page_toolbar_l.gif +0 -0
- data/app/assets/images/cms/page_toolbar/page_toolbar_r.gif +0 -0
- data/app/assets/images/cms/page_toolbar/status_draft_bg.gif +0 -0
- data/app/assets/images/cms/page_toolbar/status_draft_l.gif +0 -0
- data/app/assets/images/cms/page_toolbar/status_l.gif +0 -0
- data/app/assets/images/cms/page_toolbar/status_published_bg.gif +0 -0
- data/app/assets/images/cms/page_toolbar/status_published_l.gif +0 -0
- data/app/assets/images/cms/page_toolbar/visual_editor_bg.gif +0 -0
- data/app/assets/images/cms/page_toolbar/visual_editor_end.gif +0 -0
- data/app/assets/images/cms/page_toolbar/visual_editor_r.gif +0 -0
- data/app/assets/images/cms/page_toolbar/visual_editor_state_bg.gif +0 -0
- data/app/assets/images/cms/pages/add_connectable.gif +0 -0
- data/app/assets/images/cms/pages/connect_connectable.gif +0 -0
- data/app/assets/images/cms/pages/container_border.gif +0 -0
- data/app/assets/images/cms/pages/container_border_l.gif +0 -0
- data/app/assets/images/cms/pages/container_border_r.gif +0 -0
- data/app/assets/images/cms/pages/delete_connectable.gif +0 -0
- data/app/assets/images/cms/pages/down_connectable.gif +0 -0
- data/app/assets/images/cms/pages/down_connectable_disabled.gif +0 -0
- data/app/assets/images/cms/pages/edit_connectable.gif +0 -0
- data/app/assets/images/cms/pages/edit_connectable_2.gif +0 -0
- data/app/assets/images/cms/pages/show_connectable.gif +0 -0
- data/app/assets/images/cms/pages/up_connectable.gif +0 -0
- data/app/assets/images/cms/pages/up_connectable_disabled.gif +0 -0
- data/app/assets/images/cms/pagination/first.gif +0 -0
- data/app/assets/images/cms/pagination/first_h.gif +0 -0
- data/app/assets/images/cms/pagination/input.gif +0 -0
- data/app/assets/images/cms/pagination/last.gif +0 -0
- data/app/assets/images/cms/pagination/last_h.gif +0 -0
- data/app/assets/images/cms/pagination/next.gif +0 -0
- data/app/assets/images/cms/pagination/next_h.gif +0 -0
- data/app/assets/images/cms/pagination/previous.gif +0 -0
- data/app/assets/images/cms/pagination/previous_h.gif +0 -0
- data/app/assets/images/cms/pencil.png +0 -0
- data/app/assets/images/cms/plus.png +0 -0
- data/app/assets/images/cms/published_status.gif +0 -0
- data/app/assets/images/cms/search.png +0 -0
- data/app/assets/images/cms/search_submit.gif +0 -0
- data/app/assets/images/cms/search_submit_h.gif +0 -0
- data/app/assets/images/cms/searchbox_gradient.gif +0 -0
- data/app/assets/images/cms/select_bg.gif +0 -0
- data/app/assets/images/cms/select_bg_2.gif +0 -0
- data/app/assets/images/cms/sitemap/bottom_cap.png +0 -0
- data/app/assets/images/cms/sitemap/buffer_caps.png +0 -0
- data/app/assets/images/cms/sitemap/contract.png +0 -0
- data/app/assets/images/cms/sitemap/corners.gif +0 -0
- data/app/assets/images/cms/sitemap/corners_hover.gif +0 -0
- data/app/assets/images/cms/sitemap/divider.gif +0 -0
- data/app/assets/images/cms/sitemap/expand.png +0 -0
- data/app/assets/images/cms/sitemap/gradient.gif +0 -0
- data/app/assets/images/cms/sitemap/gray_contract.png +0 -0
- data/app/assets/images/cms/sitemap/gray_expand.png +0 -0
- data/app/assets/images/cms/sitemap/no_contents.png +0 -0
- data/app/assets/images/cms/sitemap/site_root_cap.png +0 -0
- data/app/assets/images/cms/sitemap/tooltip.gif +0 -0
- data/app/assets/images/cms/sitemap/top_cap_content.png +0 -0
- data/app/assets/images/cms/solid.gif +0 -0
- data/app/assets/images/cms/table/bl.gif +0 -0
- data/app/assets/images/cms/table/br.gif +0 -0
- data/app/assets/images/cms/table/divider.gif +0 -0
- data/app/assets/images/cms/table/td_cap_first_h.gif +0 -0
- data/app/assets/images/cms/table/td_cap_first_s.gif +0 -0
- data/app/assets/images/cms/table/td_cap_last_h.gif +0 -0
- data/app/assets/images/cms/table/td_cap_last_s.gif +0 -0
- data/app/assets/images/cms/table/td_last_bg.gif +0 -0
- data/app/assets/images/cms/table/th_bg.gif +0 -0
- data/app/assets/images/cms/table/th_divider.gif +0 -0
- data/app/assets/images/cms/table/th_last_bg.gif +0 -0
- data/app/assets/images/cms/table/tl.gif +0 -0
- data/app/assets/images/cms/table/tr.gif +0 -0
- data/app/assets/images/cms/table/tr_bg.gif +0 -0
- data/app/assets/images/cms/toolbar_bg.png +0 -0
- data/app/assets/images/cms/top_cap.png +0 -0
- data/app/assets/images/cms/top_cap_content.png +0 -0
- data/app/assets/images/cms/top_cap_menu_header.png +0 -0
- data/app/assets/images/cms/user.png +0 -0
- data/app/assets/images/cms/user_search_submit.gif +0 -0
- data/app/assets/images/cms/usercontrols_bg.png +0 -0
- data/app/assets/images/cms/usercontrols_bg_cap.png +0 -0
- data/app/assets/javascripts/bcms/ckeditor.js +8 -0
- data/app/assets/javascripts/bcms/ckeditor_inline.js +23 -0
- data/app/assets/javascripts/bcms/ckeditor_load.js +54 -0
- data/app/assets/javascripts/bcms/ckeditor_standard_config.js +10 -0
- data/app/assets/javascripts/ckeditor/plugins/delete_content/plugin.js +36 -0
- data/app/assets/javascripts/ckeditor/plugins/edit_content/plugin.js +24 -0
- data/app/assets/javascripts/ckeditor/plugins/move_content/plugin.js +25 -0
- data/app/assets/javascripts/cms/ajax.js +60 -0
- data/app/assets/javascripts/cms/application.js +18 -0
- data/app/assets/javascripts/cms/attachment_manager.js +88 -0
- data/app/assets/javascripts/cms/content_library.js +121 -0
- data/app/assets/javascripts/cms/content_types.js +13 -0
- data/app/assets/javascripts/cms/core_library.js.erb +210 -0
- data/app/assets/javascripts/cms/form_builder.js +250 -0
- data/app/assets/javascripts/cms/namespace.js +2 -0
- data/app/assets/javascripts/cms/new_content_button.js +27 -0
- data/app/assets/javascripts/cms/page_editor.js +189 -0
- data/app/assets/javascripts/cms/page_toolbar.js +13 -0
- data/app/assets/javascripts/cms/site.js +2 -0
- data/app/assets/javascripts/cms/sitemap.js +219 -0
- data/app/assets/javascripts/cms/toolbar.js +21 -0
- data/app/assets/javascripts/cms/user.js +40 -0
- data/app/assets/javascripts/jquery.exists.js +5 -0
- data/app/assets/javascripts/jquery.taglist.js +157 -0
- data/app/assets/stylesheets/cms/_assets.scss +60 -0
- data/app/assets/stylesheets/cms/_base.scss +42 -0
- data/app/assets/stylesheets/cms/_cms-buttons.scss +73 -0
- data/app/assets/stylesheets/cms/_cms-forms.scss +70 -0
- data/app/assets/stylesheets/cms/_colors.scss +20 -0
- data/app/assets/stylesheets/cms/_dashboard.scss +25 -0
- data/app/assets/stylesheets/cms/_glyph.scss +60 -0
- data/app/assets/stylesheets/cms/_main-area.scss +62 -0
- data/app/assets/stylesheets/cms/_nav.scss +197 -0
- data/app/assets/stylesheets/cms/_sidebar.scss +64 -0
- data/app/assets/stylesheets/cms/_sitemap.scss +209 -0
- data/app/assets/stylesheets/cms/_submenu.scss +48 -0
- data/app/assets/stylesheets/cms/application.scss +49 -0
- data/app/assets/stylesheets/cms/core.scss +96 -0
- data/app/assets/stylesheets/cms/default-forms.scss +3 -0
- data/app/assets/stylesheets/cms/includes/_animation.scss +2 -0
- data/app/assets/stylesheets/cms/includes/_rem.scss +120 -0
- data/app/assets/stylesheets/cms/includes/animation/_animate.scss +31 -0
- data/app/assets/stylesheets/cms/includes/animation/_core.scss +127 -0
- data/app/assets/stylesheets/cms/includes/animation/_shared.scss +22 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_attention-seekers.scss +152 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_bouncing.scss +3 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_classes.scss +21 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_fading.scss +3 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_flippers.scss +87 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_lightspeed.scss +24 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_rotating.scss +3 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_specials.scss +42 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/bouncing/_bouncing-entrances.scss +68 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/bouncing/_bouncing-exits.scss +60 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/fading/_fading-entrances.scss +86 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/fading/_fading-exits.scss +86 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/rotating/_rotating-entrances.scss +58 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/rotating/_rotating-exits.scss +58 -0
- data/app/assets/stylesheets/cms/page_content_editing.scss +4 -0
- data/app/assets/stylesheets/cms/page_editor.scss +4 -0
- data/app/assets/stylesheets/cms/style.scss +138 -0
- data/app/assets/stylesheets/cms/styles/_alerts.scss +150 -0
- data/app/assets/stylesheets/cms/styles/_base-grid.scss +299 -0
- data/app/assets/stylesheets/cms/styles/_buttons.scss +247 -0
- data/app/assets/stylesheets/cms/styles/_dropdown.scss +155 -0
- data/app/assets/stylesheets/cms/styles/_forms.scss +728 -0
- data/app/assets/stylesheets/cms/styles/_glyph.scss +86 -0
- data/app/assets/stylesheets/cms/styles/_images.scss +86 -0
- data/app/assets/stylesheets/cms/styles/_lists.scss +115 -0
- data/app/assets/stylesheets/cms/styles/_modal.scss +174 -0
- data/app/assets/stylesheets/cms/styles/_progress.scss +43 -0
- data/app/assets/stylesheets/cms/styles/_tables.scss +141 -0
- data/app/assets/stylesheets/cms/styles/_text.scss +134 -0
- data/app/controllers/cms/application_controller.rb +11 -0
- data/app/controllers/cms/attachments_controller.rb +48 -0
- data/app/controllers/cms/base_controller.rb +22 -0
- data/app/controllers/cms/cache_controller.rb +23 -0
- data/app/controllers/cms/categories_controller.rb +7 -0
- data/app/controllers/cms/category_types_controller.rb +12 -0
- data/app/controllers/cms/connectors_controller.rb +70 -0
- data/app/controllers/cms/content_block_controller.rb +361 -0
- data/app/controllers/cms/content_controller.rb +173 -0
- data/app/controllers/cms/content_types_controller.rb +14 -0
- data/app/controllers/cms/dashboard_controller.rb +13 -0
- data/app/controllers/cms/dynamic_views_controller.rb +81 -0
- data/app/controllers/cms/email_messages_controller.rb +21 -0
- data/app/controllers/cms/file_blocks_controller.rb +4 -0
- data/app/controllers/cms/form_entries_controller.rb +140 -0
- data/app/controllers/cms/form_fields_controller.rb +74 -0
- data/app/controllers/cms/forms_controller.rb +35 -0
- data/app/controllers/cms/groups_controller.rb +25 -0
- data/app/controllers/cms/home_controller.rb +10 -0
- data/app/controllers/cms/html_blocks_controller.rb +4 -0
- data/app/controllers/cms/image_blocks_controller.rb +4 -0
- data/app/controllers/cms/inline_content_controller.rb +50 -0
- data/app/controllers/cms/links_controller.rb +81 -0
- data/app/controllers/cms/page_components_controller.rb +20 -0
- data/app/controllers/cms/page_route_conditions_controller.rb +4 -0
- data/app/controllers/cms/page_route_options_controller.rb +58 -0
- data/app/controllers/cms/page_route_requirements_controller.rb +4 -0
- data/app/controllers/cms/page_routes_controller.rb +51 -0
- data/app/controllers/cms/pages_controller.rb +151 -0
- data/app/controllers/cms/passwords_controller.rb +22 -0
- data/app/controllers/cms/portlet_controller.rb +21 -0
- data/app/controllers/cms/portlets_controller.rb +35 -0
- data/app/controllers/cms/redirects_controller.rb +25 -0
- data/app/controllers/cms/resource_controller.rb +125 -0
- data/app/controllers/cms/routes_controller.rb +22 -0
- data/app/controllers/cms/section_nodes_controller.rb +24 -0
- data/app/controllers/cms/sections_controller.rb +100 -0
- data/app/controllers/cms/sessions_controller.rb +15 -0
- data/app/controllers/cms/sites/passwords_controller.rb +32 -0
- data/app/controllers/cms/sites/sessions_controller.rb +20 -0
- data/app/controllers/cms/tags_controller.rb +16 -0
- data/app/controllers/cms/tasks_controller.rb +56 -0
- data/app/controllers/cms/toolbar_controller.rb +18 -0
- data/app/controllers/cms/user_controller.rb +8 -0
- data/app/controllers/cms/users_controller.rb +125 -0
- data/app/controllers/tests/pretend_controller.rb +32 -0
- data/app/helpers/cms/application_helper.rb +258 -0
- data/app/helpers/cms/content_block_helper.rb +55 -0
- data/app/helpers/cms/content_types_helper.rb +4 -0
- data/app/helpers/cms/form_tag_helper.rb +36 -0
- data/app/helpers/cms/menu_helper.rb +167 -0
- data/app/helpers/cms/mobile_helper.rb +29 -0
- data/app/helpers/cms/nav_menu_helper.rb +23 -0
- data/app/helpers/cms/page_helper.rb +169 -0
- data/app/helpers/cms/path_helper.rb +113 -0
- data/app/helpers/cms/rendering_helper.rb +112 -0
- data/app/helpers/cms/section_nodes_helper.rb +112 -0
- data/app/helpers/cms/sites/authentication_helper.rb +25 -0
- data/app/helpers/cms/sites/devise_shim_helper.rb +31 -0
- data/app/helpers/cms/template_support.rb +18 -0
- data/app/helpers/cms/ui_elements_helper.rb +168 -0
- data/app/helpers/forgot_password_portlet_helper.rb +9 -0
- data/app/helpers/login_portlet_helper.rb +10 -0
- data/app/inputs/attachments_input.rb +14 -0
- data/app/inputs/cms_text_area_input.rb +10 -0
- data/app/inputs/date_picker_input.rb +8 -0
- data/app/inputs/file_picker_input.rb +75 -0
- data/app/inputs/name_input.rb +42 -0
- data/app/inputs/path_input.rb +18 -0
- data/app/inputs/tag_list_input.rb +3 -0
- data/app/inputs/template_editor_input.rb +24 -0
- data/app/inputs/text_editor_input.rb +19 -0
- data/app/models/cms/abstract_file_block.rb +50 -0
- data/app/models/cms/attachment.rb +267 -0
- data/app/models/cms/category.rb +56 -0
- data/app/models/cms/category_type.rb +43 -0
- data/app/models/cms/connector.rb +99 -0
- data/app/models/cms/content.rb +31 -0
- data/app/models/cms/content_type.rb +191 -0
- data/app/models/cms/dynamic_view.rb +81 -0
- data/app/models/cms/email_message.rb +63 -0
- data/app/models/cms/email_message_mailer.rb +12 -0
- data/app/models/cms/external_user.rb +60 -0
- data/app/models/cms/file_block.rb +19 -0
- data/app/models/cms/form.rb +47 -0
- data/app/models/cms/form_entry.rb +75 -0
- data/app/models/cms/form_field.rb +78 -0
- data/app/models/cms/group.rb +62 -0
- data/app/models/cms/group_permission.rb +12 -0
- data/app/models/cms/group_section.rb +9 -0
- data/app/models/cms/group_type.rb +16 -0
- data/app/models/cms/group_type_permission.rb +8 -0
- data/app/models/cms/guest_user.rb +57 -0
- data/app/models/cms/html_block.rb +38 -0
- data/app/models/cms/image_block.rb +23 -0
- data/app/models/cms/link.rb +20 -0
- data/app/models/cms/page.rb +437 -0
- data/app/models/cms/page_component.rb +43 -0
- data/app/models/cms/page_partial.rb +40 -0
- data/app/models/cms/page_route.rb +140 -0
- data/app/models/cms/page_route_condition.rb +5 -0
- data/app/models/cms/page_route_option.rb +7 -0
- data/app/models/cms/page_route_requirement.rb +5 -0
- data/app/models/cms/page_template.rb +45 -0
- data/app/models/cms/permission.rb +17 -0
- data/app/models/cms/persistent_user.rb +223 -0
- data/app/models/cms/portlet.rb +237 -0
- data/app/models/cms/redirect.rb +12 -0
- data/app/models/cms/search_filter.rb +18 -0
- data/app/models/cms/section.rb +224 -0
- data/app/models/cms/section_node.rb +144 -0
- data/app/models/cms/site.rb +45 -0
- data/app/models/cms/tag.rb +69 -0
- data/app/models/cms/tagging.rb +14 -0
- data/app/models/cms/task.rb +75 -0
- data/app/models/cms/templates.rb +31 -0
- data/app/models/cms/user.rb +43 -0
- data/app/models/cms/user_group_membership.rb +9 -0
- data/app/models/cms/view_context.rb +81 -0
- data/app/portlets/deprecated_placeholder.rb +12 -0
- data/app/portlets/dynamic_portlet.rb +7 -0
- data/app/portlets/email_page_portlet.rb +32 -0
- data/app/portlets/forgot_password_portlet.rb +15 -0
- data/app/portlets/helpers/cms/list_portlet_helper.rb +5 -0
- data/app/portlets/list_portlet.rb +40 -0
- data/app/portlets/login_portlet.rb +13 -0
- data/app/portlets/tag_cloud_portlet.rb +15 -0
- data/app/presenters/cms/user_presenter.rb +47 -0
- data/app/views/cms/application/_add_content_modal.html.erb +3 -0
- data/app/views/cms/application/_buttons.html.erb +7 -0
- data/app/views/cms/application/_exception.html.erb +6 -0
- data/app/views/cms/application/_form_errors.html.erb +7 -0
- data/app/views/cms/application/_form_with_buttons.html.erb +10 -0
- data/app/views/cms/application/_main_content.html.erb +3 -0
- data/app/views/cms/application/_main_with_sidebar.html.erb +8 -0
- data/app/views/cms/application/_mobile_toolbar.html.erb +16 -0
- data/app/views/cms/application/_page_title.html.erb +5 -0
- data/app/views/cms/application/_pagination.html.erb +26 -0
- data/app/views/cms/application/_row.html.erb +1 -0
- data/app/views/cms/application/_save_buttons.html.erb +7 -0
- data/app/views/cms/application/_sidebar_layout.html.erb +3 -0
- data/app/views/cms/application/_version.html.erb +23 -0
- data/app/views/cms/application/_version_conflict_diff.html.erb +11 -0
- data/app/views/cms/application/_version_conflict_error.html.erb +6 -0
- data/app/views/cms/attachments/_attachment.html.erb +16 -0
- data/app/views/cms/attachments/_attachment_manager.html.erb +39 -0
- data/app/views/cms/attachments/_attachment_table.html.erb +22 -0
- data/app/views/cms/attachments/_attachment_wrapper.html.erb +4 -0
- data/app/views/cms/attachments/_no_attachments_defined.html.erb +1 -0
- data/app/views/cms/cache/show.html.erb +7 -0
- data/app/views/cms/categories/_form.html.erb +27 -0
- data/app/views/cms/category_types/_form.html.erb +1 -0
- data/app/views/cms/connectors/new.html.erb +38 -0
- data/app/views/cms/content/editing_frame.html.erb +1 -0
- data/app/views/cms/content/no_page.html.erb +19 -0
- data/app/views/cms/content/show.html.erb +21 -0
- data/app/views/cms/content_block/_block_form.html.erb +15 -0
- data/app/views/cms/content_block/_buttonbar.html.erb +29 -0
- data/app/views/cms/content_block/_buttons.html.erb +13 -0
- data/app/views/cms/content_block/_hidden_fields.html.erb +13 -0
- data/app/views/cms/content_block/_sidebar.html.erb +36 -0
- data/app/views/cms/content_block/edit.html.erb +3 -0
- data/app/views/cms/content_block/index.html.erb +87 -0
- data/app/views/cms/content_block/new.html.erb +3 -0
- data/app/views/cms/content_block/render_block_in_main_container.html.erb +10 -0
- data/app/views/cms/content_block/show.html.erb +1 -0
- data/app/views/cms/content_block/show_in_isolation.html.erb +15 -0
- data/app/views/cms/content_block/versions.html.erb +24 -0
- data/app/views/cms/content_types/_order_field.html.erb +5 -0
- data/app/views/cms/content_types/index.html.erb +3 -0
- data/app/views/cms/dashboard/_page_drafts.html.erb +39 -0
- data/app/views/cms/dashboard/_tasks.html.erb +41 -0
- data/app/views/cms/dashboard/index.html.erb +13 -0
- data/app/views/cms/dynamic_views/_form.html.erb +9 -0
- data/app/views/cms/dynamic_views/edit.html.erb +2 -0
- data/app/views/cms/dynamic_views/index.html.erb +33 -0
- data/app/views/cms/dynamic_views/new.html.erb +2 -0
- data/app/views/cms/email_messages/index.html.erb +36 -0
- data/app/views/cms/email_messages/show.html.erb +50 -0
- data/app/views/cms/file_blocks/_form.html.erb +3 -0
- data/app/views/cms/file_blocks/_section_selector.html.erb +13 -0
- data/app/views/cms/file_blocks/render.html.erb +5 -0
- data/app/views/cms/forgot_password_mailer/reset_password.text.html.erb +3 -0
- data/app/views/cms/forgot_password_mailer/reset_password.text.plain.erb +3 -0
- data/app/views/cms/form_entries/_buttons.html.erb +2 -0
- data/app/views/cms/form_entries/_form.html.erb +7 -0
- data/app/views/cms/form_entries/_internal_form.html.erb +9 -0
- data/app/views/cms/form_entries/edit.html.erb +5 -0
- data/app/views/cms/form_entries/error.html.erb +3 -0
- data/app/views/cms/form_entries/index.html.erb +5 -0
- data/app/views/cms/form_entries/new.html.erb +5 -0
- data/app/views/cms/form_entries/show.html.erb +13 -0
- data/app/views/cms/form_entries/submit.html.erb +1 -0
- data/app/views/cms/form_fields/_form.html.erb +8 -0
- data/app/views/cms/form_fields/_select.html.erb +3 -0
- data/app/views/cms/form_fields/_text_area.html.erb +3 -0
- data/app/views/cms/form_fields/_text_field.html.erb +3 -0
- data/app/views/cms/form_fields/edit.html.erb +0 -0
- data/app/views/cms/form_fields/new.html.erb +26 -0
- data/app/views/cms/form_fields/preview.html.erb +16 -0
- data/app/views/cms/forms/_form.html.erb +67 -0
- data/app/views/cms/forms/render.html.erb +15 -0
- data/app/views/cms/forms/show.html.erb +6 -0
- data/app/views/cms/groups/_form.html.erb +38 -0
- data/app/views/cms/groups/_permissions.html.erb +14 -0
- data/app/views/cms/groups/_sections.html.erb +12 -0
- data/app/views/cms/groups/edit.html.erb +2 -0
- data/app/views/cms/groups/index.html.erb +36 -0
- data/app/views/cms/groups/new.html.erb +2 -0
- data/app/views/cms/html_blocks/_form.html.erb +3 -0
- data/app/views/cms/html_blocks/render.html.erb +1 -0
- data/app/views/cms/image_blocks/_form.html.erb +3 -0
- data/app/views/cms/image_blocks/render.html.erb +4 -0
- data/app/views/cms/links/_form.html.erb +8 -0
- data/app/views/cms/links/edit.html.erb +4 -0
- data/app/views/cms/links/new.html.erb +5 -0
- data/app/views/cms/menus/_menu.html.erb +9 -0
- data/app/views/cms/menus/_menu_item.html.erb +11 -0
- data/app/views/cms/page_components/_content.html.erb +18 -0
- data/app/views/cms/page_components/new.html.erb +12 -0
- data/app/views/cms/page_routes/_form.html.erb +12 -0
- data/app/views/cms/page_routes/edit.html.erb +2 -0
- data/app/views/cms/page_routes/index.html.erb +33 -0
- data/app/views/cms/page_routes/new.html.erb +2 -0
- data/app/views/cms/pages/_edit_content.html.erb +28 -0
- data/app/views/cms/pages/_form.html.erb +21 -0
- data/app/views/cms/pages/_main_form.html.erb +23 -0
- data/app/views/cms/pages/_simple_container.html.erb +8 -0
- data/app/views/cms/pages/edit.html.erb +2 -0
- data/app/views/cms/pages/new.html.erb +19 -0
- data/app/views/cms/pages/versions.html.erb +22 -0
- data/app/views/cms/passwords/new.html.erb +16 -0
- data/app/views/cms/redirects/_form.html.erb +7 -0
- data/app/views/cms/redirects/edit.html.erb +2 -0
- data/app/views/cms/redirects/index.html.erb +25 -0
- data/app/views/cms/redirects/new.html.erb +2 -0
- data/app/views/cms/routes/index.html.erb +35 -0
- data/app/views/cms/section_nodes/_children.html.erb +5 -0
- data/app/views/cms/section_nodes/_row_buttons.html.erb +11 -0
- data/app/views/cms/section_nodes/_section_node.html.erb +24 -0
- data/app/views/cms/section_nodes/_sitemap_buttons.html.erb +47 -0
- data/app/views/cms/section_nodes/_status.html.erb +5 -0
- data/app/views/cms/section_nodes/show.html.erb +9 -0
- data/app/views/cms/sections/_buttons.html.erb +6 -0
- data/app/views/cms/sections/_form.html.erb +30 -0
- data/app/views/cms/sections/edit.html.erb +4 -0
- data/app/views/cms/sections/new.html.erb +5 -0
- data/app/views/cms/sessions/new.html.erb +16 -0
- data/app/views/cms/shared/access_denied.html.erb +2 -0
- data/app/views/cms/shared/error.html.erb +40 -0
- data/app/views/cms/shared/error.xml.erb +8 -0
- data/app/views/cms/sites/_flash.html.erb +8 -0
- data/app/views/cms/sites/passwords/new.html.erb +2 -0
- data/app/views/cms/sites/sessions/new.html.erb +2 -0
- data/app/views/cms/tags/_form.html.erb +1 -0
- data/app/views/cms/tags/render.html.erb +52 -0
- data/app/views/cms/tasks/new.html.erb +22 -0
- data/app/views/cms/toolbar/_new_pages_menu.html.erb +10 -0
- data/app/views/cms/users/_form.html.erb +9 -0
- data/app/views/cms/users/_password.html.erb +2 -0
- data/app/views/cms/users/_user_fields.html.erb +7 -0
- data/app/views/cms/users/change_password.html.erb +12 -0
- data/app/views/cms/users/edit.html.erb +2 -0
- data/app/views/cms/users/index.html.erb +65 -0
- data/app/views/cms/users/new.html.erb +2 -0
- data/app/views/devise/confirmations/new.html.erb +16 -0
- data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
- data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
- data/app/views/devise/passwords/edit.html.erb +19 -0
- data/app/views/devise/passwords/new.html.erb +15 -0
- data/app/views/devise/registrations/edit.html.erb +28 -0
- data/app/views/devise/registrations/new.html.erb +18 -0
- data/app/views/devise/shared/_links.erb +25 -0
- data/app/views/devise/unlocks/new.html.erb +16 -0
- data/app/views/layouts/cms/_content_types.html.erb +13 -0
- data/app/views/layouts/cms/_footer.erb +4 -0
- data/app/views/layouts/cms/_head.html.erb +8 -0
- data/app/views/layouts/cms/_main_menu.html.erb +78 -0
- data/app/views/layouts/cms/application.html.erb +23 -0
- data/app/views/layouts/cms/content_page.html.erb +5 -0
- data/app/views/layouts/cms/page_editor.html.erb +90 -0
- data/app/views/portlets/deprecated_placeholders/_form.html.erb +1 -0
- data/app/views/portlets/deprecated_placeholders/render.html.erb +8 -0
- data/app/views/portlets/dynamic/_form.html.erb +3 -0
- data/app/views/portlets/email_page/_form.html.erb +5 -0
- data/app/views/portlets/email_page/render.html.erb +17 -0
- data/app/views/portlets/forgot_password/_form.html.erb +5 -0
- data/app/views/portlets/forgot_password/render.html.erb +2 -0
- data/app/views/portlets/list/_form.html.erb +33 -0
- data/app/views/portlets/list/_list.html.erb +6 -0
- data/app/views/portlets/list/_table.html.erb +13 -0
- data/app/views/portlets/list/render.html.erb +1 -0
- data/app/views/portlets/login/_form.html.erb +4 -0
- data/app/views/portlets/login/render.html.erb +10 -0
- data/app/views/portlets/portlets/_form.html.erb +20 -0
- data/app/views/portlets/tag_cloud/_form.html.erb +4 -0
- data/app/views/portlets/tag_cloud/render.html.erb +5 -0
- data/app/views/tests/pretend/open_with_layout.html.erb +5 -0
- data/bin/bcms +321 -0
- data/bin/browsercms +4 -0
- data/bin/rake +16 -0
- data/config/routes.rb +135 -0
- data/db/browsercms.seeds.rb +63 -0
- data/db/migrate/20080815014337_browsercms300.rb +287 -0
- data/db/migrate/20130327184912_browsercms400.rb +120 -0
- data/db/migrate/20150715173336_create_default_users.rb +12 -0
- data/db/seeds.rb +1 -0
- data/doc/README_FOR_APP +6 -0
- data/doc/design/blue_button.psd +0 -0
- data/doc/design/gray_box.psd +0 -0
- data/doc/design/main_nav.psd +0 -0
- data/doc/features/design_integration.md +45 -0
- data/doc/features/external_user.md +7 -0
- data/doc/features/form_builder.md +40 -0
- data/doc/features/simple_form_refactor.md +60 -0
- data/doc/performance_tuning_notes.md +12 -0
- data/doc/release_notes.md +837 -0
- data/doc/test_procedure.txt +141 -0
- data/lib/acts_as_list.rb +257 -0
- data/lib/browsercms-artirix.rb +1 -0
- data/lib/browsercms.rb +73 -0
- data/lib/cms/acts/cms_user.rb +131 -0
- data/lib/cms/acts/content_block.rb +61 -0
- data/lib/cms/acts/content_page.rb +90 -0
- data/lib/cms/acts.rb +7 -0
- data/lib/cms/admin_tab.rb +15 -0
- data/lib/cms/attachments/attachment_serving.rb +59 -0
- data/lib/cms/attachments/configuration.rb +88 -0
- data/lib/cms/authentication/controller.rb +120 -0
- data/lib/cms/authentication/test_password_strategy.rb +28 -0
- data/lib/cms/authentication.rb +4 -0
- data/lib/cms/authoring.rb +9 -0
- data/lib/cms/behaviors/archiving.rb +43 -0
- data/lib/cms/behaviors/attaching.rb +363 -0
- data/lib/cms/behaviors/categorizing.rb +31 -0
- data/lib/cms/behaviors/connecting.rb +141 -0
- data/lib/cms/behaviors/dynamic_attributes.rb +384 -0
- data/lib/cms/behaviors/flush_cache_on_change.rb +31 -0
- data/lib/cms/behaviors/hiding.rb +46 -0
- data/lib/cms/behaviors/namespacing.rb +15 -0
- data/lib/cms/behaviors/naming.rb +16 -0
- data/lib/cms/behaviors/publishing.rb +205 -0
- data/lib/cms/behaviors/rendering.rb +195 -0
- data/lib/cms/behaviors/searching.rb +45 -0
- data/lib/cms/behaviors/soft_deleting.rb +103 -0
- data/lib/cms/behaviors/taggable.rb +66 -0
- data/lib/cms/behaviors/userstamping.rb +42 -0
- data/lib/cms/behaviors/versioning.rb +360 -0
- data/lib/cms/behaviors.rb +34 -0
- data/lib/cms/caching.rb +62 -0
- data/lib/cms/commands/actions.rb +107 -0
- data/lib/cms/commands/to_version400.rb +10 -0
- data/lib/cms/concerns/can_be_addressable.rb +326 -0
- data/lib/cms/concerns/has_content_type.rb +46 -0
- data/lib/cms/concerns/ignores_publishing.rb +9 -0
- data/lib/cms/concerns.rb +7 -0
- data/lib/cms/configuration/configurable_template.rb +24 -0
- data/lib/cms/configuration/devise.rb +256 -0
- data/lib/cms/configuration.rb +79 -0
- data/lib/cms/configure_simple_form.rb +142 -0
- data/lib/cms/configure_simple_form_bootstrap.rb +58 -0
- data/lib/cms/content_filter.rb +18 -0
- data/lib/cms/content_page.rb +77 -0
- data/lib/cms/content_rendering_support.rb +114 -0
- data/lib/cms/controllers/admin_controller.rb +78 -0
- data/lib/cms/data_loader.rb +54 -0
- data/lib/cms/date_picker.rb +23 -0
- data/lib/cms/default_accessible.rb +13 -0
- data/lib/cms/domain_support.rb +38 -0
- data/lib/cms/engine.rb +135 -0
- data/lib/cms/engine_helper.rb +103 -0
- data/lib/cms/error_handling.rb +84 -0
- data/lib/cms/error_pages.rb +8 -0
- data/lib/cms/extensions/action_view/base.rb +13 -0
- data/lib/cms/extensions/active_model/name.rb +13 -0
- data/lib/cms/extensions/active_record/base.rb +37 -0
- data/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb +94 -0
- data/lib/cms/extensions/active_record/errors.rb +12 -0
- data/lib/cms/extensions/active_support/cache/file_store.rb +9 -0
- data/lib/cms/extensions/hash.rb +11 -0
- data/lib/cms/extensions/integer.rb +16 -0
- data/lib/cms/extensions/nil.rb +19 -0
- data/lib/cms/extensions/string.rb +24 -0
- data/lib/cms/extensions.rb +5 -0
- data/lib/cms/form_builder/content_block_form_builder.rb +45 -0
- data/lib/cms/form_builder/default_input.rb +13 -0
- data/lib/cms/form_builder/deprecated_inputs.rb +40 -0
- data/lib/cms/form_builder/workflow_buttons.rb +38 -0
- data/lib/cms/installation_actions.rb +8 -0
- data/lib/cms/mobile_aware.rb +67 -0
- data/lib/cms/module.rb +36 -0
- data/lib/cms/module_installation.rb +31 -0
- data/lib/cms/polymorphic_single_table_inheritance.rb +19 -0
- data/lib/cms/publish_workflow.rb +26 -0
- data/lib/cms/responders/content_responder.rb +14 -0
- data/lib/cms/route_extensions.rb +157 -0
- data/lib/cms/users_service.rb +208 -0
- data/lib/cms/version.rb +11 -0
- data/lib/command_line.rb +39 -0
- data/lib/generators/browser_cms/demo_site/USAGE +3 -0
- data/lib/generators/browser_cms/demo_site/templates/demo.seeds.rb +249 -0
- data/lib/generators/browser_cms/demo_site/templates/demo_site.rake +14 -0
- data/lib/generators/browser_cms/demo_site/templates/logo.jpg +0 -0
- data/lib/generators/browser_cms/demo_site/templates/splash.jpg +0 -0
- data/lib/generators/browser_cms/demo_site/templates/style.css +257 -0
- data/lib/generators/browser_cms.rb +12 -0
- data/lib/generators/cms/content_block/USAGE +22 -0
- data/lib/generators/cms/content_block/content_block_generator.rb +103 -0
- data/lib/generators/cms/content_block/templates/_form.html.erb +27 -0
- data/lib/generators/cms/content_block/templates/application_controller.rb.erb +4 -0
- data/lib/generators/cms/content_block/templates/render.html.erb +23 -0
- data/lib/generators/cms/install/USAGE +8 -0
- data/lib/generators/cms/install/install_generator.rb +16 -0
- data/lib/generators/cms/portlet/USAGE +26 -0
- data/lib/generators/cms/portlet/portlet_generator.rb +38 -0
- data/lib/generators/cms/portlet/templates/_form.html.erb +5 -0
- data/lib/generators/cms/portlet/templates/portlet.rb +12 -0
- data/lib/generators/cms/portlet/templates/portlet_helper.rb +5 -0
- data/lib/generators/cms/portlet/templates/render.html.erb +1 -0
- data/lib/generators/cms/portlet/templates/unit_test.erb +9 -0
- data/lib/generators/cms/project/USAGE +1 -0
- data/lib/generators/cms/project/templates/COPYRIGHT.txt +23 -0
- data/lib/generators/cms/project/templates/GPL.txt +674 -0
- data/lib/generators/cms/project/templates/LICENSE.txt +165 -0
- data/lib/generators/cms/project/templates/USAGE +3 -0
- data/lib/generators/cms/project/templates/devise.rb.erb +7 -0
- data/lib/generators/cms/project/templates/gitignore.erb +11 -0
- data/lib/generators/cms/project/templates/install_generator.erb +21 -0
- data/lib/generators/cms/project/templates/module_tasks.rake +10 -0
- data/lib/generators/cms/template/USAGE +10 -0
- data/lib/generators/cms/template/template_generator.rb +29 -0
- data/lib/generators/cms/template/templates/template.erb +2 -0
- data/lib/sequence.rb +6 -0
- data/lib/tasks/cms.rake +23 -0
- data/lib/templates/active_record/model/model.rb +17 -0
- data/vendor/assets/javascripts/jquery.cookie.js +91 -0
- data/vendor/assets/javascripts/jquery.selectbox.js +209 -0
- metadata +1048 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#
|
|
2
|
+
# A support module for handling detecting if a page or controller is being
|
|
3
|
+
# served by the public or cms domain.
|
|
4
|
+
#
|
|
5
|
+
module Cms
|
|
6
|
+
module DomainSupport
|
|
7
|
+
|
|
8
|
+
protected
|
|
9
|
+
|
|
10
|
+
def cms_domain_prefix
|
|
11
|
+
"cms"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def request_is_for_cms_subdomain?
|
|
15
|
+
cms_site?
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def cms_site?
|
|
19
|
+
subdomains = request.subdomains
|
|
20
|
+
subdomains.shift if subdomains.first == "www"
|
|
21
|
+
subdomains.first == cms_domain_prefix
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Determines if users should be redirected between the public (www.) and admin (cms.) subdomains.
|
|
25
|
+
def using_cms_subdomains?
|
|
26
|
+
result = (wants_to_use_subdomains? && perform_caching)
|
|
27
|
+
#Rails.logger.debug {"Are we using cms subdomains? #{result} based on 'want subdomain: #{wants_to_use_subdomains?}' and perform_caching: '#{perform_caching}'"}
|
|
28
|
+
result
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def wants_to_use_subdomains?
|
|
34
|
+
!Rails.configuration.cms.use_single_domain
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
data/lib/cms/engine.rb
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Load just enough dependencies for this file to be loadable.
|
|
2
|
+
require 'cms/module'
|
|
3
|
+
|
|
4
|
+
module Cms
|
|
5
|
+
class Engine < Rails::Engine
|
|
6
|
+
include Cms::Module
|
|
7
|
+
isolate_namespace Cms
|
|
8
|
+
|
|
9
|
+
config.cms = ActiveSupport::OrderedOptions.new
|
|
10
|
+
config.cms.attachments = ActiveSupport::OrderedOptions.new
|
|
11
|
+
|
|
12
|
+
# Allows additional menu items to be added to the 'Tools' menu on the Admin tab.
|
|
13
|
+
config.cms.tools_menu = ActiveSupport::OrderedOptions.new
|
|
14
|
+
|
|
15
|
+
# Define configuration for the CKEditor
|
|
16
|
+
config.cms.ckeditor = ActiveSupport::OrderedOptions.new
|
|
17
|
+
|
|
18
|
+
# Configuration for content types.
|
|
19
|
+
config.cms.content_types = ActiveSupport::OrderedOptions.new
|
|
20
|
+
|
|
21
|
+
# Configuration for working on BrowserCMS core.
|
|
22
|
+
# We want these configuration for generators.
|
|
23
|
+
config.generators do |g|
|
|
24
|
+
g.test_framework :mini_test, :spec => true, :fixture => false
|
|
25
|
+
g.stylesheets false
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Configuration for projects using BrowserCMS>
|
|
29
|
+
# Need to use our rails model template (rather then its default) when `rails g cms:content_block` is run.
|
|
30
|
+
config.app_generators do |g|
|
|
31
|
+
path = File::expand_path('../../templates', __FILE__)
|
|
32
|
+
g.templates.unshift path
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Ensure Attachments are configured:
|
|
36
|
+
# 1. Before every request in development mode
|
|
37
|
+
# 2. Once in production
|
|
38
|
+
config.to_prepare do
|
|
39
|
+
Attachments.configure
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Set reasonable defaults
|
|
43
|
+
# These default values can be changed by developers in their projects in their application.rb or environment's files.
|
|
44
|
+
config.before_configuration do |app|
|
|
45
|
+
WillPaginate.per_page = 15
|
|
46
|
+
|
|
47
|
+
# Default cache directories.
|
|
48
|
+
app.config.cms.mobile_cache_directory = File.join(Rails.root, 'public', 'cache', 'mobile')
|
|
49
|
+
app.config.cms.page_cache_directory = File.join(Rails.root, 'public', 'cache', 'full')
|
|
50
|
+
|
|
51
|
+
# Default storage for uploaded files
|
|
52
|
+
app.config.cms.attachments.storage = :filesystem
|
|
53
|
+
app.config.cms.attachments.storage_directory = File.join(Rails.root, 'tmp', 'uploads')
|
|
54
|
+
|
|
55
|
+
# Determines if a single domain will be used (i.e. www) or multiple subdomains (www and cms). Enabling this will
|
|
56
|
+
# turn off page caching and not handle redirects between subdomains.
|
|
57
|
+
app.config.cms.use_single_domain = false
|
|
58
|
+
|
|
59
|
+
# Used to send emails with links back to the Cms Admin. In production, this should include the www. of the public site.
|
|
60
|
+
# Matters less in development, as emails generally aren't sent.
|
|
61
|
+
# I.e.
|
|
62
|
+
# config.cms.site_domain = "www.browsercms.org"
|
|
63
|
+
app.config.cms.site_domain = "localhost:3000"
|
|
64
|
+
|
|
65
|
+
# Determines what email sender will be applied to messages generated by the CMS.
|
|
66
|
+
# By default, this is based on the site_domain, i.e. mailbot@example.com
|
|
67
|
+
app.config.cms.mailbot = :default
|
|
68
|
+
|
|
69
|
+
# Allows Addressable content types and Controllers to set which template will be used for page layouts.
|
|
70
|
+
# This takes precedence over the :template attribute set on models/controllers.
|
|
71
|
+
# Keys are looked up based on Class.name.underscore
|
|
72
|
+
# @example:
|
|
73
|
+
# config.cms.templates['cms/form'] = 'my-form-layout' # app/views/layouts/templates/my-form-layout
|
|
74
|
+
# config.cms.templates['cms/sites/sessions_controller'] = 'subpage' # For /login
|
|
75
|
+
#
|
|
76
|
+
app.config.cms.templates = {}
|
|
77
|
+
|
|
78
|
+
# Determines which ckeditor file will be used to configure all instances.
|
|
79
|
+
# There should be at most ONE of these, so use manifest files which require the below one to augement it.
|
|
80
|
+
#app.config.cms.ckeditor.configuration_file = 'bcms/ckeditor_standard_config.js'
|
|
81
|
+
# Note: This no longer works since we are statically loading it via asset pipeline.
|
|
82
|
+
|
|
83
|
+
# Define menu items to be added dynamically to the CMS Admin tab.
|
|
84
|
+
app.config.cms.tools_menu = []
|
|
85
|
+
|
|
86
|
+
# Disable portlets so they don't appear in menus and can't be created. Existing portlets will not be deleted.
|
|
87
|
+
app.config.cms.content_types.blacklist = [:login_portlet, :forgot_password_portlet, :dynamic_portlet]
|
|
88
|
+
|
|
89
|
+
# Initialization
|
|
90
|
+
require 'cms/configure_simple_form'
|
|
91
|
+
require 'cms/configure_simple_form_bootstrap'
|
|
92
|
+
require 'cms/configuration/devise'
|
|
93
|
+
|
|
94
|
+
# Sets the default .css file that will be added to forms created via the Forms module.
|
|
95
|
+
# Projects can override this as needed.
|
|
96
|
+
app.config.cms.form_builder_css = 'cms/default-forms'
|
|
97
|
+
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Needed to ensure routes added to the main app by the Engine are available. (Since engine draws its routes after the main app)
|
|
101
|
+
# Borrrow from Spree as documenented here: https://github.com/rails/rails/issues/11895
|
|
102
|
+
config.after_initialize do
|
|
103
|
+
Rails.application.routes_reloader.reload!
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
initializer 'browsercms.add_core_routes', :after => 'action_dispatch.prepare_dispatcher' do |app|
|
|
107
|
+
ActionDispatch::Routing::Mapper.send :include, Cms::RouteExtensions
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
initializer 'browsercms.add_load_paths', :after => 'action_controller.deprecated_routes' do |app|
|
|
111
|
+
|
|
112
|
+
ActiveSupport::Dependencies.autoload_paths += %W( #{self.root}/vendor #{self.root}/app/mailers #{self.root}/app/helpers)
|
|
113
|
+
ActiveSupport::Dependencies.autoload_paths += %W( #{self.root}/app/controllers #{self.root}/app/models #{self.root}/app/portlets)
|
|
114
|
+
ActiveSupport::Dependencies.autoload_paths += %W( #{Rails.root}/app/portlets )
|
|
115
|
+
ActiveSupport::Dependencies.autoload_paths += %W( #{Rails.root}/app/presenters )
|
|
116
|
+
ActiveSupport::Dependencies.autoload_paths += %W( #{Rails.root}/app/portlets/helpers )
|
|
117
|
+
ActionController::Base.append_view_path DynamicView.base_path
|
|
118
|
+
ActionController::Base.append_view_path %W( #{self.root}/app/views)
|
|
119
|
+
require 'jdbc_adapter' if defined?(JRUBY_VERSION)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
initializer 'browsercms.precompile_assets' do |app|
|
|
123
|
+
# Ensure all engine specific assets are compiled when rake asset:precompile is run.
|
|
124
|
+
app.config.assets.precompile += ['cms/page_toolbar.js', 'cms/page_editor.js', 'cms/site.js']
|
|
125
|
+
|
|
126
|
+
app.config.assets.precompile += ['cms/page_editor.css', 'cms/page_content_editing.css', 'cms/site.js']
|
|
127
|
+
|
|
128
|
+
# Ckeditor
|
|
129
|
+
app.config.assets.precompile += ['bcms/ckeditor_inline.js', 'bcms/ckeditor.js', 'bcms/ckeditor_standard_config.js']
|
|
130
|
+
|
|
131
|
+
# Unsure why jquery isn't getting precompiled.
|
|
132
|
+
app.config.assets.precompile += ['jquery']
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
module Cms
|
|
2
|
+
|
|
3
|
+
class EngineAwarePathBuilder
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
attr_reader :path_subject
|
|
7
|
+
|
|
8
|
+
def initialize(model_class_or_content_type_or_model)
|
|
9
|
+
normalize_subject_class(model_class_or_content_type_or_model)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def subject_class
|
|
13
|
+
if path_subject.instance_of?(Class)
|
|
14
|
+
path_subject
|
|
15
|
+
else
|
|
16
|
+
path_subject.class
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def build_preview(view)
|
|
21
|
+
path = []
|
|
22
|
+
path << engine_name
|
|
23
|
+
path << path_subject
|
|
24
|
+
path
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def build(view)
|
|
28
|
+
path = []
|
|
29
|
+
path << engine(view)
|
|
30
|
+
path << path_subject
|
|
31
|
+
path
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def main_app_model?
|
|
36
|
+
engine_name == "main_app"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Determine which 'Engine' this model is from based on the class
|
|
40
|
+
def engine_name
|
|
41
|
+
model_class = subject_class.model_name
|
|
42
|
+
name = EngineAware.module_name(model_class)
|
|
43
|
+
return "main_app" unless name
|
|
44
|
+
|
|
45
|
+
begin
|
|
46
|
+
engine = "#{name}::Engine".constantize
|
|
47
|
+
rescue NameError
|
|
48
|
+
# This means there is no Engine for this model, so its from the main Rails App.
|
|
49
|
+
return "main_app"
|
|
50
|
+
end
|
|
51
|
+
engine.engine_name
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def engine_class
|
|
56
|
+
if main_app_model?
|
|
57
|
+
Rails.application
|
|
58
|
+
else
|
|
59
|
+
guess_engine_class(subject_class)
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
private
|
|
64
|
+
|
|
65
|
+
# Will raise NameError if klass::Engine doesn't exist.
|
|
66
|
+
def guess_engine_class(klass)
|
|
67
|
+
name = EngineAware.module_name(klass)
|
|
68
|
+
"#{name}::Engine".constantize
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Allows ContentType, Class, or model to be passed.
|
|
72
|
+
def normalize_subject_class(model_class_or_content_type_or_model)
|
|
73
|
+
if model_class_or_content_type_or_model.respond_to? :model_class # i.e. ContentType
|
|
74
|
+
@path_subject = model_class_or_content_type_or_model.model_class
|
|
75
|
+
else # Class or Model
|
|
76
|
+
@path_subject = model_class_or_content_type_or_model
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Loads the actual engine (which contains the RouteSet.)
|
|
81
|
+
# See http://api.rubyonrails.org/classes/ActionDispatch/Routing/PolymorphicRoutes.html
|
|
82
|
+
def engine(view)
|
|
83
|
+
view.send(engine_name)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
module EngineAware
|
|
90
|
+
|
|
91
|
+
# Finds the top level module for a given class.
|
|
92
|
+
# Cms::Thing -> Cms
|
|
93
|
+
# Thing -> nil
|
|
94
|
+
# Whatever::Thing -> Whatever
|
|
95
|
+
#
|
|
96
|
+
# @param [Class] klass
|
|
97
|
+
def self.module_name(klass)
|
|
98
|
+
names = klass.name.split("::")
|
|
99
|
+
return names.first if names.size > 1
|
|
100
|
+
nil
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
module Cms
|
|
2
|
+
module ErrorHandling
|
|
3
|
+
def self.included(controller)
|
|
4
|
+
controller.class_eval do
|
|
5
|
+
rescue_from Exception, :with => :handle_server_error unless Rails.env == "test"
|
|
6
|
+
rescue_from Cms::Errors::AccessDenied, :with => :handle_internal_access_denied
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Ensures the entire render stack applies a specific format
|
|
11
|
+
# For example, this allows missing jpg's to throw the proper error as opposed to 500
|
|
12
|
+
def with_format(format, &block)
|
|
13
|
+
old_formats = self.formats
|
|
14
|
+
self.formats = [format]
|
|
15
|
+
result = block.call
|
|
16
|
+
self.formats = old_formats
|
|
17
|
+
result
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def handle_server_error(exception, status=:internal_server_error)
|
|
21
|
+
log_complete_stacktrace(exception)
|
|
22
|
+
with_format('html') do
|
|
23
|
+
render :layout => 'cms/application',
|
|
24
|
+
:template => 'cms/shared/error',
|
|
25
|
+
:status => status,
|
|
26
|
+
:locals => {:exception => exception}
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def handle_internal_access_denied(exception)
|
|
31
|
+
render :layout => 'cms/application',
|
|
32
|
+
:template => 'cms/shared/access_denied',
|
|
33
|
+
:status => 403
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Print the underlying stack trace to the logs for debugging.
|
|
37
|
+
# Should be human readable (i.e. line breaks)
|
|
38
|
+
# See http://stackoverflow.com/questions/228441/how-do-i-log-the-entire-trace-back-of-a-ruby-exception-using-the-default-rails-l for discussion of implementation
|
|
39
|
+
def log_complete_stacktrace(exception)
|
|
40
|
+
logger.error "#{exception.message}\n#{exception.backtrace.join("\n")}"
|
|
41
|
+
NotifierService.notify exception
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
class NotifierService
|
|
45
|
+
class << self
|
|
46
|
+
delegate :notify, :register_notifier_call,
|
|
47
|
+
to: :service
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def self.service
|
|
51
|
+
@service ||= new
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
attr_reader :notifiers
|
|
55
|
+
|
|
56
|
+
def initialize
|
|
57
|
+
@notifiers = []
|
|
58
|
+
|
|
59
|
+
autoload_notifiers
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def notify(exception)
|
|
63
|
+
notifiers.each { |notifier| notifier.call exception }
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def register_notifier_call(callable_object = nil, &block)
|
|
67
|
+
raise ArgumentError unless callable_object.respond_to?(:call) || block_given?
|
|
68
|
+
@notifiers << (callable_object || block)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
private
|
|
72
|
+
|
|
73
|
+
def autoload_notifiers
|
|
74
|
+
autoload_airbrake_if_present
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def autoload_airbrake_if_present
|
|
78
|
+
if defined?(::Airbrake)
|
|
79
|
+
register_notifier_call { |exception| ::Airbrake.notify exception }
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Cms
|
|
2
|
+
module ActiveModel
|
|
3
|
+
module Name
|
|
4
|
+
|
|
5
|
+
# Provide backwards capablity with Rails 3.2.x method.
|
|
6
|
+
# Hopefully only has_dynamic_attributes requires this.
|
|
7
|
+
def foreign_key
|
|
8
|
+
"#{self.param_key}_id"
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
ActiveModel::Name.send(:include, Cms::ActiveModel::Name)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Cms
|
|
2
|
+
module Extensions
|
|
3
|
+
module ActiveRecord
|
|
4
|
+
|
|
5
|
+
module Base
|
|
6
|
+
def updated_on_string(fmt="%b %e, %Y")
|
|
7
|
+
if respond_to?(:updated_at) && updated_at
|
|
8
|
+
updated_at.strftime(fmt).gsub(/\s{2,}/," ")
|
|
9
|
+
else
|
|
10
|
+
nil
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
module ClassMethods
|
|
16
|
+
# Determines if the database for this Rails App exists yet. Useful for methods which might be called during
|
|
17
|
+
# rake tasks or initialize where a database not yet being created is not fatal, but should be ignored.
|
|
18
|
+
#
|
|
19
|
+
# @return [Boolean] false if it does not exist.
|
|
20
|
+
def database_exists?
|
|
21
|
+
begin
|
|
22
|
+
connection
|
|
23
|
+
return true
|
|
24
|
+
rescue StandardError # Hopefully this works with MySql, MySql2 and SQLite
|
|
25
|
+
logger.warn "Attempted to establish a connection with the database, but could not do so."
|
|
26
|
+
return false
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
ActiveRecord::Base.send(:include, Cms::Extensions::ActiveRecord::Base)
|
|
35
|
+
ActiveRecord::Base.extend(Cms::Extensions::ActiveRecord::ClassMethods)
|
|
36
|
+
|
|
37
|
+
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
module ActiveRecord
|
|
2
|
+
module ConnectionAdapters # :nodoc:
|
|
3
|
+
module SchemaStatements
|
|
4
|
+
|
|
5
|
+
# Sticks :cms_ in front of a table name.
|
|
6
|
+
def cms_(table_name)
|
|
7
|
+
"cms_#{table_name}"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
# Create a table and its versioned counterpart. Example:
|
|
11
|
+
# create_content_table :cms_events
|
|
12
|
+
# => :cms_events
|
|
13
|
+
# => :cms_event_versions
|
|
14
|
+
#
|
|
15
|
+
# @param table_name [Symbol] The namespaced versioned of the content table (i.e. :cms_events or :bcms_news_articles)
|
|
16
|
+
# @param options
|
|
17
|
+
# @option :versioned [Boolean] false creates a non-versioned table. (Default: true)
|
|
18
|
+
# @option :name [Boolean] Create a :name column in the generated table. (Default: true)
|
|
19
|
+
def create_content_table(table_name, options={}, &block)
|
|
20
|
+
defaults = {
|
|
21
|
+
versioned: true,
|
|
22
|
+
name: true
|
|
23
|
+
}
|
|
24
|
+
options = defaults.merge(options)
|
|
25
|
+
|
|
26
|
+
versioned = options.delete(:versioned)
|
|
27
|
+
named = options.delete(:name)
|
|
28
|
+
|
|
29
|
+
create_table table_name, options, &block
|
|
30
|
+
change_table table_name do |td|
|
|
31
|
+
if versioned
|
|
32
|
+
td.integer :version
|
|
33
|
+
td.integer :lock_version, :default => 0
|
|
34
|
+
end
|
|
35
|
+
td.string :name if !column_exists?(table_name.to_sym, :name) && named
|
|
36
|
+
td.boolean :published, :default => false
|
|
37
|
+
td.boolean :deleted, :default => false
|
|
38
|
+
td.boolean :archived, :default => false
|
|
39
|
+
td.integer :created_by_id
|
|
40
|
+
td.integer :updated_by_id
|
|
41
|
+
td.timestamps unless column_exists?(table_name.to_sym, :created_at)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
if versioned
|
|
45
|
+
table_name_versioned = versioned_(table_name)
|
|
46
|
+
create_table table_name_versioned, options, &block
|
|
47
|
+
change_table table_name_versioned do |vt|
|
|
48
|
+
vt.integer :original_record_id
|
|
49
|
+
vt.integer :version
|
|
50
|
+
vt.string :name if !column_exists?(table_name_versioned, :name) && named
|
|
51
|
+
vt.boolean :published, :default => false
|
|
52
|
+
vt.boolean :deleted, :default => false
|
|
53
|
+
vt.boolean :archived, :default => false
|
|
54
|
+
vt.string :version_comment
|
|
55
|
+
vt.integer :created_by_id
|
|
56
|
+
vt.integer :updated_by_id
|
|
57
|
+
vt.timestamps unless column_exists?(table_name_versioned, :created_at)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def drop_content_table(table_name)
|
|
64
|
+
drop_table versioned_(table_name)
|
|
65
|
+
drop_table table_name
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Rename a column for both its
|
|
69
|
+
def rename_content_column(table_name, old_name, new_name)
|
|
70
|
+
rename_column table_name, old_name, new_name
|
|
71
|
+
rename_column versioned_(table_name), old_name, new_name
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Adds a column to both the primary and versioned table. Save needing two calls.
|
|
75
|
+
# This is only needed if your content block is versioned, otherwise add_column will work just fine.
|
|
76
|
+
def add_content_column(table_name, column_name, type, options={})
|
|
77
|
+
add_column table_name, column_name, type, options
|
|
78
|
+
add_column versioned_(table_name), column_name, type, options
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def remove_content_column(table_name, column_name)
|
|
82
|
+
remove_column table_name, column_name
|
|
83
|
+
remove_column versioned_(table_name), column_name
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
protected
|
|
87
|
+
|
|
88
|
+
def versioned_(table_name)
|
|
89
|
+
"#{table_name.to_s.singularize}_versions".to_sym
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Cms
|
|
2
|
+
module Extensions
|
|
3
|
+
module Integer
|
|
4
|
+
def round_bytes
|
|
5
|
+
if self > 1.megabyte
|
|
6
|
+
"%0.2f MB" % (self.to_f/1.megabyte)
|
|
7
|
+
elsif self > 1.kilobyte
|
|
8
|
+
"%0.2f KB" % (self.to_f/1.kilobyte)
|
|
9
|
+
else
|
|
10
|
+
"#{self} bytes"
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
Integer.send(:include, Cms::Extensions::Integer)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Cms
|
|
2
|
+
module Extensions
|
|
3
|
+
module NilClass
|
|
4
|
+
def round_bytes
|
|
5
|
+
to_i.round_bytes
|
|
6
|
+
end
|
|
7
|
+
def markdown
|
|
8
|
+
nil
|
|
9
|
+
end
|
|
10
|
+
def to_slug
|
|
11
|
+
to_s
|
|
12
|
+
end
|
|
13
|
+
def to_formatted_s(format=nil)
|
|
14
|
+
nil
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
NilClass.send(:include, Cms::Extensions::NilClass)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module Cms
|
|
2
|
+
module Extensions
|
|
3
|
+
module String
|
|
4
|
+
def indent(n=0)
|
|
5
|
+
(" "*n.to_i) + self
|
|
6
|
+
end
|
|
7
|
+
def markdown
|
|
8
|
+
Cms.markdown? ? Markdown.new(self).to_html : "<strong>ERROR</strong>: Markdown Support Not Installed"
|
|
9
|
+
end
|
|
10
|
+
def to_slug
|
|
11
|
+
gsub(/\W+/, ' ').strip.downcase.gsub(/\ +/, '-')
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Allows for conditional pluralization of names where object counts are not singular.
|
|
15
|
+
#
|
|
16
|
+
# @param [Integer] count The number of objects of this string there are.
|
|
17
|
+
# @return [String] Plural of string, unless count == 1
|
|
18
|
+
def pluralize_unless_one(count=nil)
|
|
19
|
+
count == 1 ? self : ActiveSupport::Inflector.pluralize(self)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
String.send(:include, Cms::Extensions::String)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'cms/form_builder/deprecated_inputs'
|
|
2
|
+
|
|
3
|
+
module Cms
|
|
4
|
+
module FormBuilder
|
|
5
|
+
# Adds additional methods to the forms for creating content blocks.
|
|
6
|
+
class ContentBlockFormBuilder < SimpleForm::FormBuilder
|
|
7
|
+
include DeprecatedInputs
|
|
8
|
+
|
|
9
|
+
# Allows editors to add multiple files uploader for attachments.
|
|
10
|
+
# Usage:
|
|
11
|
+
# <%= f.attachment_manager %>
|
|
12
|
+
#
|
|
13
|
+
# Generator: The following will generate an attachments field with an associated attachment manager input.
|
|
14
|
+
# rails generate cms:content_block Widget photos:attachments
|
|
15
|
+
def cms_attachment_manager
|
|
16
|
+
input :attachments, as: :attachments
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Allows editors add a space separated list of tags. Each tag entered will be created if needed as an instance of a Cms::Tag.
|
|
20
|
+
#
|
|
21
|
+
# Usage:
|
|
22
|
+
# <%= f.cms_tag_list %>
|
|
23
|
+
#
|
|
24
|
+
# There is no generator for this field type.
|
|
25
|
+
#
|
|
26
|
+
def cms_tag_list(options={})
|
|
27
|
+
input :tag_list, as: :tag_list, label: "Tags", input_html: {autocomplete: 'off'}, hint: "A space separated list of tags."
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Displays a concise list of error messages. This is may be unnecessary given that simple form will display error inline.
|
|
31
|
+
# Handles 'global' messages that aren't specific to a field.
|
|
32
|
+
def cms_error_messages
|
|
33
|
+
return unless object.respond_to?(:errors) && object.errors.any?
|
|
34
|
+
|
|
35
|
+
errors_list = ""
|
|
36
|
+
errors_list << @template.content_tag(:h2, "#{object.errors.size} error prohibited this #{object_name.humanize} from being saved.".html_safe)
|
|
37
|
+
errors_list << @template.content_tag(:p, "There were problems with the following fields:")
|
|
38
|
+
errors_list << @template.content_tag(:ul, object.errors.full_messages.map { |message| @template.content_tag(:li, message).html_safe }.join("\n").html_safe).html_safe
|
|
39
|
+
|
|
40
|
+
@template.content_tag(:div, errors_list.html_safe, :class => "errorExplanation", :id => "errorExplanation")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|