browsercms 3.5.7 → 4.0.0.alpha
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/COPYRIGHT.txt +2 -1
- data/README.markdown +3 -3
- 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/arrow-down.png +0 -0
- data/app/assets/images/cms/arrow-up.png +0 -0
- data/app/assets/images/cms/cogs.png +0 -0
- data/app/assets/images/cms/dashboard/home.png +0 -0
- data/app/assets/images/cms/home.png +0 -0
- data/app/assets/images/cms/logo.png +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/user.png +0 -0
- data/app/assets/javascripts/bcms/ckeditor_inline.js +23 -0
- data/app/assets/javascripts/bcms/ckeditor_standard_config.js +1 -1
- 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 +6 -1
- data/app/assets/javascripts/cms/attachment_manager.js.erb +3 -10
- data/app/assets/javascripts/cms/content_library.js +31 -12
- data/app/assets/javascripts/cms/core_library.js.erb +68 -36
- 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 +188 -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 +17 -1
- 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 +37 -23
- data/app/assets/stylesheets/cms/_assets.css.scss +55 -0
- data/app/assets/stylesheets/cms/_base.css.scss +42 -0
- data/app/assets/stylesheets/cms/_cms-buttons.css.scss +73 -0
- data/app/assets/stylesheets/cms/_cms-forms.css.scss +70 -0
- data/app/assets/stylesheets/cms/_colors.css.scss +20 -0
- data/app/assets/stylesheets/cms/_dashboard.css.scss +25 -0
- data/app/assets/stylesheets/cms/_glyph.css.scss +60 -0
- data/app/assets/stylesheets/cms/_main-area.css.scss +62 -0
- data/app/assets/stylesheets/cms/_nav.css.scss +197 -0
- data/app/assets/stylesheets/cms/_sidebar.css.scss +64 -0
- data/app/assets/stylesheets/cms/_sitemap.css.scss +196 -0
- data/app/assets/stylesheets/cms/_submenu.css.scss +48 -0
- data/app/assets/stylesheets/cms/application.css.scss +49 -0
- data/app/assets/stylesheets/cms/core.css.scss +96 -0
- data/app/assets/stylesheets/cms/default-forms.css.scss +3 -0
- data/app/assets/stylesheets/cms/includes/_animation.css.scss +2 -0
- data/app/assets/stylesheets/cms/includes/_rem.css.scss +120 -0
- data/app/assets/stylesheets/cms/includes/animation/_animate.css.scss +31 -0
- data/app/assets/stylesheets/cms/includes/animation/_core.css.scss +127 -0
- data/app/assets/stylesheets/cms/includes/animation/_shared.css.scss +22 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_attention-seekers.css.scss +152 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_bouncing.css.scss +3 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_classes.css.scss +21 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_fading.css.scss +3 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_flippers.css.scss +87 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_lightspeed.css.scss +24 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_rotating.css.scss +3 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/_specials.css.scss +42 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/bouncing/_bouncing-entrances.css.scss +68 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/bouncing/_bouncing-exits.css.scss +60 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/fading/_fading-entrances.css.scss +86 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/fading/_fading-exits.css.scss +86 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/rotating/_rotating-entrances.css.scss +58 -0
- data/app/assets/stylesheets/cms/includes/animation/animate/rotating/_rotating-exits.css.scss +58 -0
- data/app/assets/stylesheets/cms/page_content_editing.css.scss +4 -0
- data/app/assets/stylesheets/cms/page_editor.css.scss +4 -0
- data/app/assets/stylesheets/cms/style.css.scss +138 -0
- data/app/assets/stylesheets/cms/styles/_alerts.css.scss +150 -0
- data/app/assets/stylesheets/cms/styles/_base-grid.css.scss +299 -0
- data/app/assets/stylesheets/cms/styles/_buttons.css.scss +247 -0
- data/app/assets/stylesheets/cms/styles/_dropdown.css.scss +155 -0
- data/app/assets/stylesheets/cms/styles/_forms.css.scss +728 -0
- data/app/assets/stylesheets/cms/styles/_glyph.css.scss +86 -0
- data/app/assets/stylesheets/cms/styles/_images.css.scss +75 -0
- data/app/assets/stylesheets/cms/styles/_lists.css.scss +115 -0
- data/app/assets/stylesheets/cms/styles/_modal.css.scss +174 -0
- data/app/assets/stylesheets/cms/styles/_progress.css.scss +43 -0
- data/app/assets/stylesheets/cms/styles/_tables.css.scss +141 -0
- data/app/assets/stylesheets/cms/styles/_text.css.scss +134 -0
- data/app/controllers/cms/application_controller.rb +3 -68
- data/app/controllers/cms/attachments_controller.rb +5 -5
- data/app/controllers/cms/base_controller.rb +20 -13
- data/app/controllers/cms/cache_controller.rb +16 -17
- data/app/controllers/cms/category_types_controller.rb +6 -1
- data/app/controllers/cms/connectors_controller.rb +12 -7
- data/app/controllers/cms/content_block_controller.rb +128 -71
- data/app/controllers/cms/content_controller.rb +54 -56
- data/app/controllers/cms/dashboard_controller.rb +5 -6
- data/app/controllers/cms/dynamic_views_controller.rb +12 -9
- data/app/controllers/cms/email_messages_controller.rb +18 -13
- data/app/controllers/cms/form_entries_controller.rb +119 -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 +13 -16
- data/app/controllers/cms/html_blocks_controller.rb +2 -2
- data/app/controllers/cms/inline_content_controller.rb +48 -0
- data/app/controllers/cms/links_controller.rb +58 -46
- data/app/controllers/cms/page_components_controller.rb +20 -0
- data/app/controllers/cms/page_routes_controller.rb +44 -40
- data/app/controllers/cms/pages_controller.rb +111 -97
- data/app/controllers/cms/passwords_controller.rb +17 -0
- data/app/controllers/cms/portlet_controller.rb +0 -1
- data/app/controllers/cms/portlets_controller.rb +20 -27
- data/app/controllers/cms/redirects_controller.rb +13 -9
- data/app/controllers/cms/resource_controller.rb +15 -4
- data/app/controllers/cms/routes_controller.rb +2 -4
- data/app/controllers/cms/section_nodes_controller.rb +6 -37
- data/app/controllers/cms/sections_controller.rb +13 -8
- data/app/controllers/cms/sessions_controller.rb +8 -66
- data/app/controllers/cms/sites/passwords_controller.rb +27 -0
- data/app/controllers/cms/sites/sessions_controller.rb +20 -0
- data/app/controllers/cms/tags_controller.rb +12 -12
- data/app/controllers/cms/tasks_controller.rb +45 -46
- data/app/controllers/cms/user_controller.rb +8 -0
- data/app/controllers/cms/users_controller.rb +91 -68
- data/app/helpers/cms/application_helper.rb +58 -52
- data/app/helpers/cms/content_block_helper.rb +8 -7
- data/app/helpers/cms/form_tag_helper.rb +21 -25
- data/app/helpers/cms/menu_helper.rb +1 -3
- data/app/helpers/cms/mobile_helper.rb +12 -2
- data/app/helpers/cms/nav_menu_helper.rb +23 -0
- data/app/helpers/cms/page_helper.rb +72 -30
- data/app/helpers/cms/path_helper.rb +46 -70
- data/app/helpers/cms/rendering_helper.rb +68 -12
- data/app/helpers/cms/section_nodes_helper.rb +92 -31
- 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 +1 -7
- data/app/helpers/cms/ui_elements_helper.rb +147 -6
- 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/cms_text_field_input.rb +29 -0
- data/app/inputs/date_picker_input.rb +8 -0
- data/app/inputs/file_picker_input.rb +75 -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 +10 -6
- data/app/models/cms/attachment.rb +20 -27
- data/app/models/cms/category.rb +17 -7
- data/app/models/cms/category_type.rb +8 -4
- data/app/models/cms/connector.rb +32 -20
- data/app/models/cms/content.rb +31 -0
- data/app/models/cms/content_type.rb +114 -62
- data/app/models/cms/dynamic_view.rb +19 -45
- data/app/models/cms/email_message.rb +32 -2
- data/app/models/cms/external_user.rb +60 -0
- data/app/models/cms/file_block.rb +1 -0
- data/app/models/cms/form.rb +47 -0
- data/app/models/cms/form_entry.rb +71 -0
- data/app/models/cms/form_field.rb +78 -0
- data/app/models/cms/group.rb +19 -9
- data/app/models/cms/group_permission.rb +1 -1
- data/app/models/cms/group_section.rb +1 -1
- data/app/models/cms/group_type.rb +5 -5
- data/app/models/cms/group_type_permission.rb +1 -1
- data/app/models/cms/html_block.rb +14 -19
- data/app/models/cms/image_block.rb +1 -0
- data/app/models/cms/link.rb +8 -6
- data/app/models/cms/page.rb +156 -59
- data/app/models/cms/page_component.rb +43 -0
- data/app/models/cms/page_partial.rb +16 -8
- data/app/models/cms/page_route.rb +1 -1
- data/app/models/cms/page_route_condition.rb +1 -1
- data/app/models/cms/page_route_option.rb +1 -1
- data/app/models/cms/page_route_requirement.rb +1 -1
- data/app/models/cms/page_template.rb +14 -9
- data/app/models/cms/permission.rb +4 -2
- data/app/models/cms/persistent_user.rb +208 -0
- data/app/models/cms/portlet.rb +56 -9
- data/app/models/cms/redirect.rb +1 -1
- data/app/models/cms/search_filter.rb +18 -0
- data/app/models/cms/section.rb +39 -28
- data/app/models/cms/section_node.rb +32 -5
- data/app/models/cms/site.rb +3 -3
- data/app/models/cms/tag.rb +14 -12
- data/app/models/cms/tagging.rb +2 -2
- data/app/models/cms/task.rb +14 -21
- data/app/models/cms/templates.rb +1 -2
- data/app/models/cms/user.rb +21 -160
- data/app/models/cms/user_group_membership.rb +2 -2
- data/app/portlets/deprecated_placeholder.rb +12 -0
- data/app/portlets/dynamic_portlet.rb +1 -1
- data/app/portlets/email_page_portlet.rb +10 -3
- data/app/portlets/forgot_password_portlet.rb +9 -28
- data/app/portlets/login_portlet.rb +8 -5
- data/app/portlets/tag_cloud_portlet.rb +3 -1
- data/app/presenters/cms/user_presenter.rb +24 -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/{shared → application}/_exception.html.erb +0 -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/{shared → application}/_version_conflict_diff.html.erb +0 -0
- data/app/views/cms/{shared → application}/_version_conflict_error.html.erb +0 -0
- data/app/views/cms/attachments/_attachment_manager.html.erb +22 -0
- data/app/views/cms/attachments/_no_attachments_defined.html.erb +1 -0
- data/app/views/cms/cache/show.html.erb +5 -10
- data/app/views/cms/categories/_form.html.erb +15 -24
- data/app/views/cms/category_types/_form.html.erb +1 -1
- data/app/views/cms/connectors/new.html.erb +33 -64
- data/app/views/cms/content/editing_frame.html.erb +1 -0
- data/app/views/cms/content/no_page.html.erb +9 -27
- data/app/views/cms/content/show.html.erb +14 -15
- 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 +35 -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/dashboard/_page_drafts.html.erb +12 -22
- data/app/views/cms/dashboard/_tasks.html.erb +32 -45
- data/app/views/cms/dashboard/index.html.erb +11 -13
- data/app/views/cms/dynamic_views/_form.html.erb +8 -10
- data/app/views/cms/dynamic_views/edit.html.erb +2 -3
- data/app/views/cms/dynamic_views/index.html.erb +22 -44
- data/app/views/cms/dynamic_views/new.html.erb +2 -3
- data/app/views/cms/email_messages/index.html.erb +31 -34
- data/app/views/cms/email_messages/show.html.erb +45 -52
- data/app/views/cms/file_blocks/_form.html.erb +2 -4
- 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 +4 -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 +66 -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 +32 -38
- data/app/views/cms/groups/_permissions.html.erb +11 -34
- data/app/views/cms/groups/_sections.html.erb +11 -17
- data/app/views/cms/groups/edit.html.erb +1 -3
- data/app/views/cms/groups/index.html.erb +10 -32
- data/app/views/cms/groups/new.html.erb +2 -4
- data/app/views/cms/html_blocks/_form.html.erb +2 -2
- data/app/views/cms/html_blocks/render.html.erb +1 -1
- data/app/views/cms/image_blocks/_form.html.erb +3 -3
- data/app/views/cms/links/_form.html.erb +6 -11
- data/app/views/cms/links/edit.html.erb +3 -12
- data/app/views/cms/links/new.html.erb +4 -13
- 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 +11 -10
- data/app/views/cms/page_routes/edit.html.erb +2 -3
- data/app/views/cms/page_routes/index.html.erb +25 -48
- data/app/views/cms/page_routes/new.html.erb +2 -3
- data/app/views/cms/pages/_edit_content.html.erb +28 -0
- data/app/views/cms/pages/_form.html.erb +20 -37
- 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 -23
- data/app/views/cms/pages/new.html.erb +2 -16
- data/app/views/cms/pages/versions.html.erb +18 -87
- data/app/views/cms/redirects/_form.html.erb +6 -14
- data/app/views/cms/redirects/edit.html.erb +2 -3
- data/app/views/cms/redirects/index.html.erb +24 -50
- data/app/views/cms/redirects/new.html.erb +2 -3
- data/app/views/cms/routes/index.html.erb +15 -20
- data/app/views/cms/section_nodes/_children.html.erb +3 -0
- data/app/views/cms/section_nodes/_row_buttons.html.erb +11 -0
- data/app/views/cms/section_nodes/_section_node.html.erb +24 -10
- 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 +22 -49
- data/app/views/cms/sections/edit.html.erb +3 -8
- data/app/views/cms/sections/new.html.erb +4 -20
- data/app/views/cms/sessions/new.html.erb +16 -31
- data/app/views/cms/shared/access_denied.html.erb +1 -2
- data/app/views/cms/shared/error.html.erb +5 -5
- 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 -1
- data/app/views/cms/tags/render.html.erb +0 -1
- data/app/views/cms/tasks/new.html.erb +18 -32
- data/app/views/cms/toolbar/_new_pages_menu.html.erb +10 -0
- data/app/views/cms/users/_form.html.erb +8 -11
- data/app/views/cms/users/_password.html.erb +2 -8
- data/app/views/cms/users/_user_fields.html.erb +7 -20
- data/app/views/cms/users/change_password.html.erb +12 -21
- data/app/views/cms/users/edit.html.erb +1 -15
- data/app/views/cms/users/index.html.erb +61 -58
- data/app/views/cms/users/new.html.erb +1 -12
- 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 +2 -2
- data/app/views/layouts/cms/_head.html.erb +8 -18
- data/app/views/layouts/cms/_main_menu.html.erb +78 -0
- data/app/views/layouts/cms/application.html.erb +19 -24
- 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 -3
- data/app/views/portlets/email_page/_form.html.erb +5 -6
- data/app/views/portlets/forgot_password/_form.html.erb +2 -3
- data/app/views/portlets/forgot_password/render.html.erb +2 -14
- data/app/views/portlets/login/_form.html.erb +4 -6
- data/app/views/portlets/login/render.html.erb +8 -27
- data/app/views/portlets/portlets/_form.html.erb +7 -6
- data/app/views/portlets/tag_cloud/_form.html.erb +4 -4
- data/app/views/tests/pretend/open_with_layout.html.erb +1 -1
- data/bin/bcms +13 -16
- data/config/routes.rb +58 -29
- data/db/browsercms.seeds.rb +0 -6
- data/db/migrate/{20080815014337_browsercms_3_0_0.rb → 20080815014337_browsercms300.rb} +94 -73
- data/db/migrate/20130327184912_browsercms400.rb +90 -0
- data/db/migrate/20131206214021_devise_create_users.rb +47 -0
- data/db/migrate/20131211223908_kill_reset_password.rb +5 -0
- data/db/migrate/20131218222005_create_cms_external_users.rb +10 -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/release_notes.md +224 -10
- data/lib/acts_as_list.rb +72 -71
- data/lib/browsercms.rb +41 -1
- data/lib/cms/acts/content_block.rb +12 -2
- data/lib/cms/acts/content_page.rb +3 -4
- data/lib/cms/admin_tab.rb +15 -0
- data/lib/cms/attachments/configuration.rb +1 -1
- data/lib/cms/authentication/controller.rb +83 -177
- data/lib/cms/authentication/test_password_strategy.rb +19 -0
- data/lib/cms/behaviors.rb +1 -0
- data/lib/cms/behaviors/archiving.rb +2 -2
- data/lib/cms/behaviors/attaching.rb +21 -45
- data/lib/cms/behaviors/connecting.rb +14 -4
- data/lib/cms/behaviors/dynamic_attributes.rb +3 -3
- data/lib/cms/behaviors/hiding.rb +2 -2
- data/lib/cms/behaviors/namespacing.rb +6 -36
- data/lib/cms/behaviors/publishing.rb +92 -45
- data/lib/cms/behaviors/rendering.rb +15 -7
- data/lib/cms/behaviors/searching.rb +5 -4
- data/lib/cms/behaviors/soft_deleting.rb +13 -16
- data/lib/cms/behaviors/taggable.rb +17 -10
- data/lib/cms/behaviors/versioning.rb +12 -16
- data/lib/cms/commands/to_version400.rb +10 -0
- data/lib/cms/concerns.rb +7 -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/configuration.rb +14 -4
- data/lib/cms/configuration/configurable_template.rb +24 -0
- data/lib/cms/configuration/devise.rb +256 -0
- data/lib/cms/configure_simple_form.rb +142 -0
- data/lib/cms/configure_simple_form_bootstrap.rb +49 -0
- data/lib/cms/content_filter.rb +18 -0
- data/lib/cms/content_page.rb +77 -0
- data/lib/cms/content_rendering_support.rb +25 -16
- data/lib/cms/controllers/admin_controller.rb +78 -0
- data/lib/cms/data_loader.rb +30 -11
- data/lib/cms/default_accessible.rb +6 -6
- data/lib/cms/domain_support.rb +0 -4
- data/lib/cms/engine.rb +52 -20
- data/lib/cms/engine_helper.rb +41 -51
- data/{app/controllers → lib}/cms/error_handling.rb +11 -5
- data/lib/cms/extensions.rb +2 -1
- data/lib/cms/extensions/active_model/name.rb +13 -0
- data/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb +49 -89
- data/lib/cms/extensions/hash.rb +0 -12
- 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/module.rb +1 -7
- 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 +112 -20
- data/lib/cms/version.rb +1 -1
- data/lib/generators/browser_cms/demo_site/templates/demo.seeds.rb +0 -2
- data/lib/generators/cms/content_block/content_block_generator.rb +19 -46
- data/lib/generators/cms/content_block/templates/_form.html.erb +22 -28
- data/lib/generators/cms/project/templates/devise.rb.erb +7 -0
- metadata +383 -150
- data/app/assets/javascripts/cms/sitemap.js.erb +0 -464
- data/app/assets/stylesheets/browsercms/application.css +0 -7
- data/app/assets/stylesheets/cms/administration.css.erb +0 -91
- data/app/assets/stylesheets/cms/application.css.erb +0 -171
- data/app/assets/stylesheets/cms/attachment_manager.css.scss +0 -28
- data/app/assets/stylesheets/cms/block.css +0 -26
- data/app/assets/stylesheets/cms/buttons.css.erb +0 -120
- data/app/assets/stylesheets/cms/content_library.css.erb +0 -139
- data/app/assets/stylesheets/cms/content_types.css +0 -4
- data/app/assets/stylesheets/cms/dashboard.css.erb +0 -118
- data/app/assets/stylesheets/cms/data_table.css.erb.erb +0 -156
- data/app/assets/stylesheets/cms/date_picker.css.erb +0 -82
- data/app/assets/stylesheets/cms/form_layout.css.erb +0 -282
- data/app/assets/stylesheets/cms/login.css.erb +0 -78
- data/app/assets/stylesheets/cms/menu.css.erb +0 -116
- data/app/assets/stylesheets/cms/nav.css.erb +0 -99
- data/app/assets/stylesheets/cms/page_toolbar.css.erb +0 -135
- data/app/assets/stylesheets/cms/reset.css +0 -46
- data/app/assets/stylesheets/cms/selectbox.css.erb +0 -56
- data/app/assets/stylesheets/cms/sitemap.css.erb +0 -390
- data/app/assets/stylesheets/cms/taglist.css +0 -18
- data/app/controllers/application_controller.rb +0 -14
- data/app/controllers/cms/content_types_controller.rb +0 -9
- data/app/helpers/application_helper.rb +0 -5
- data/app/helpers/cms/form_builder.rb +0 -241
- data/app/models/cms/content_type_group.rb +0 -15
- data/app/models/cms/forgot_password_mailer.rb +0 -14
- data/app/portlets/reset_password_portlet.rb +0 -28
- data/app/views/cms/blocks/_hidden_fields.html.erb +0 -10
- data/app/views/cms/blocks/_toolbar.html.erb +0 -9
- data/app/views/cms/blocks/_toolbar_for_collection.html.erb +0 -23
- data/app/views/cms/blocks/_toolbar_for_member.html.erb +0 -36
- data/app/views/cms/blocks/edit.html.erb +0 -28
- data/app/views/cms/blocks/index.html.erb +0 -86
- data/app/views/cms/blocks/new.html.erb +0 -19
- data/app/views/cms/blocks/show.html.erb +0 -43
- data/app/views/cms/blocks/usages.html.erb +0 -44
- data/app/views/cms/blocks/versions.html.erb +0 -90
- data/app/views/cms/content_types/index.html.erb +0 -14
- data/app/views/cms/form_builder/_cms_attachment_manager.html.erb +0 -27
- data/app/views/cms/form_builder/_cms_check_box.html.erb +0 -7
- data/app/views/cms/form_builder/_cms_date_picker.html.erb +0 -12
- data/app/views/cms/form_builder/_cms_datetime_select.html.erb +0 -12
- data/app/views/cms/form_builder/_cms_drop_down.html.erb +0 -12
- data/app/views/cms/form_builder/_cms_fancy_drop_down.html.erb +0 -9
- data/app/views/cms/form_builder/_cms_file_field.html.erb +0 -28
- data/app/views/cms/form_builder/_cms_instructions.html.erb +0 -4
- data/app/views/cms/form_builder/_cms_tag_list.html.erb +0 -15
- data/app/views/cms/form_builder/_cms_template_editor.html.erb +0 -9
- data/app/views/cms/form_builder/_cms_text_area.html.erb +0 -10
- data/app/views/cms/form_builder/_cms_text_editor.html.erb +0 -19
- data/app/views/cms/form_builder/_cms_text_field.html.erb +0 -12
- data/app/views/cms/links/destroy.js.rjs +0 -2
- data/app/views/cms/page_routes/show.html.erb +0 -10
- data/app/views/cms/pages/_edit_connector.html.erb +0 -19
- data/app/views/cms/pages/_edit_container.html.erb +0 -11
- data/app/views/cms/section_nodes/_link.html.erb +0 -14
- data/app/views/cms/section_nodes/_node.html.erb +0 -44
- data/app/views/cms/section_nodes/_page.html.erb +0 -20
- data/app/views/cms/section_nodes/_section.html.erb +0 -28
- data/app/views/cms/section_nodes/index.html.erb +0 -43
- data/app/views/cms/sections/_page.html.erb +0 -4
- data/app/views/cms/sections/_section.html.erb +0 -8
- data/app/views/cms/sections/destroy.js.rjs +0 -2
- data/app/views/cms/sections/index.html.erb +0 -23
- data/app/views/cms/shared/_admin_sidebar.html.erb +0 -36
- data/app/views/cms/shared/_pagination.html.erb +0 -31
- data/app/views/cms/toolbar/_mobile_toggle.html.erb +0 -33
- data/app/views/cms/toolbar/index.html.erb +0 -1
- data/app/views/cms/users/_groups.html.erb +0 -12
- data/app/views/cms/users/_toolbar.html.erb +0 -24
- data/app/views/cms/users/show.html.erb +0 -50
- data/app/views/layouts/_cms_toolbar.html.erb +0 -54
- data/app/views/layouts/_page_toolbar.html.erb +0 -119
- data/app/views/layouts/cms/administration.html.erb +0 -51
- data/app/views/layouts/cms/content_library.html.erb +0 -96
- data/app/views/layouts/cms/dashboard.html.erb +0 -16
- data/app/views/layouts/cms/login.html.erb +0 -31
- data/app/views/layouts/cms/section_nodes.html.erb +0 -20
- data/app/views/layouts/cms/toolbar.html.erb +0 -23
- data/app/views/portlets/reset_password/_form.html.erb +0 -3
- data/app/views/portlets/reset_password/render.html.erb +0 -22
- data/bin/bcms-upgrade +0 -332
- data/db/migrate/20091109175123_browsercms_3_0_5.rb +0 -9
- data/db/migrate/20100117144038_browsercms314.rb +0 -20
- data/db/migrate/20100117144039_browsercms315.rb +0 -95
- data/db/migrate/20100705083859_browsercms_3_3_0.rb +0 -56
- data/db/migrate/20111130221145_browsercms340.rb +0 -56
- data/db/migrate/20120329144406_browsercms350.rb +0 -32
- data/db/migrate/20120717182827_browsercms353.rb +0 -19
- data/db/migrate/20120813180110_browsercms354.rb +0 -9
- data/lib/cms/addressable.rb +0 -93
- data/lib/cms/authentication/model.rb +0 -116
- data/lib/cms/behaviors/pagination.rb +0 -212
- data/lib/cms/upgrades/v3_4_0.rb +0 -31
- data/lib/cms/upgrades/v3_5_0.rb +0 -227
|
@@ -32,18 +32,19 @@ module Cms
|
|
|
32
32
|
|
|
33
33
|
options = {}
|
|
34
34
|
data = options[:data] = {}
|
|
35
|
-
data[:status] = block.class.publishable? && !block.published? ? '
|
|
35
|
+
data[:status] = block.class.publishable? && !block.published? ? 'draft' : 'published'
|
|
36
36
|
|
|
37
37
|
options[:id] = "#{cname}_#{block.id}"
|
|
38
38
|
options[:class] = [cname]
|
|
39
39
|
options[:class] << 'non-editable' unless can_modify && current_user.able_to?(:edit_content)
|
|
40
40
|
options[:class] << 'non-publishable' unless can_modify && current_user.able_to?(:publish_content)
|
|
41
|
-
options['data-new_path'] = url_for(
|
|
42
|
-
options['data-view_path'] = url_for(
|
|
43
|
-
options['data-edit_path'] = url_for(
|
|
44
|
-
options['data-
|
|
45
|
-
options['data-
|
|
46
|
-
options['data-
|
|
41
|
+
options['data-new_path'] = url_for(new_engine_aware_path(block))
|
|
42
|
+
options['data-view_path'] = url_for(engine_aware_path(block, nil))
|
|
43
|
+
options['data-edit_path'] = url_for(edit_engine_aware_path(block))
|
|
44
|
+
options['data-preview_path'] = block.path if block.class.addressable?
|
|
45
|
+
options['data-versions_path'] = engine(block).polymorphic_path(block, action: :versions) if block.class.versioned?
|
|
46
|
+
options['data-delete_path'] = url_for(engine_aware_path(block))
|
|
47
|
+
options['data-publish_path'] = engine(block).polymorphic_path([:publish, block]) if block.class.publishable?
|
|
47
48
|
tag "tr", options, true
|
|
48
49
|
end
|
|
49
50
|
|
|
@@ -1,32 +1,28 @@
|
|
|
1
1
|
module Cms
|
|
2
2
|
module FormTagHelper
|
|
3
|
-
|
|
4
|
-
#
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
|
|
4
|
+
# Generates a form (i.e. Rails form_for) for creating/updating content blocks. Exposes additional methods to
|
|
5
|
+
# to create inputs. Implements a superset of SimpleForm behavior (i.e. simple_form_for).
|
|
6
|
+
#
|
|
7
|
+
# This also includes deprecated methods from pre-4.0 form building (like f.cms_text_field) for backwards compatiable
|
|
8
|
+
# support.
|
|
9
|
+
def content_block_form_for(object, *args, &block)
|
|
10
|
+
options = args.extract_options!
|
|
11
|
+
simple_form_for(engine_aware_path(object), *(args << options.merge(builder: Cms::FormBuilder::ContentBlockFormBuilder)), &block)
|
|
8
12
|
end
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def forecasting_a_new_section?(form_object)
|
|
16
|
+
Cms::Section.with_path(form_object.object.class.path).first.nil?
|
|
12
17
|
end
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
opts
|
|
18
|
+
|
|
19
|
+
def slug_source_if(boolean)
|
|
20
|
+
if boolean
|
|
21
|
+
{input_html: {class: 'slug-source'}}
|
|
22
|
+
else
|
|
23
|
+
{}
|
|
24
|
+
end
|
|
21
25
|
end
|
|
22
|
-
|
|
23
|
-
def text_editor_tag(name, content = nil, options = {})
|
|
24
|
-
text_area_tag(name, content, text_editor_options(options))
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def text_editor(object_name, method, options = {})
|
|
28
|
-
text_area(object_name, method, text_editor_options(options))
|
|
29
|
-
end
|
|
30
|
-
|
|
26
|
+
|
|
31
27
|
end
|
|
32
28
|
end
|
|
@@ -131,7 +131,7 @@ module Cms
|
|
|
131
131
|
|
|
132
132
|
item = {}
|
|
133
133
|
item[:id] = "#{section_node.node_type.gsub("::","_").underscore}_#{section_node.node_id}"
|
|
134
|
-
|
|
134
|
+
|
|
135
135
|
# If we are showing a section item, we want to use the path for the first page
|
|
136
136
|
page_or_link = section_node.section? ? node.first_page_or_link : node
|
|
137
137
|
if section_node.section? && page_or_link
|
|
@@ -139,7 +139,6 @@ module Cms
|
|
|
139
139
|
else
|
|
140
140
|
item[:selected] = true if selected_page == page_or_link
|
|
141
141
|
end
|
|
142
|
-
|
|
143
142
|
item[:url] = page_or_link.try(:path) || '#'
|
|
144
143
|
item[:name] = node.name
|
|
145
144
|
item[:target] = "_blank" if page_or_link.respond_to?(:new_window?) && page_or_link.new_window?
|
|
@@ -154,7 +153,6 @@ module Cms
|
|
|
154
153
|
!node.visible_child_nodes.empty?
|
|
155
154
|
item[:children] = fn.call(node.visible_child_nodes, current_depth + 1)
|
|
156
155
|
end
|
|
157
|
-
|
|
158
156
|
item
|
|
159
157
|
end
|
|
160
158
|
end
|
|
@@ -2,11 +2,21 @@ module Cms
|
|
|
2
2
|
module MobileHelper
|
|
3
3
|
|
|
4
4
|
def full_site_url
|
|
5
|
-
|
|
5
|
+
options = {
|
|
6
|
+
:host => Rails.configuration.cms.site_domain,
|
|
7
|
+
path: current_page.path,
|
|
8
|
+
params: {:prefer_full_site => true}
|
|
9
|
+
}
|
|
10
|
+
ActionDispatch::Http::URL.url_for(options)
|
|
6
11
|
end
|
|
7
12
|
|
|
8
13
|
def mobile_site_url
|
|
9
|
-
|
|
14
|
+
options = {
|
|
15
|
+
:host => Rails.configuration.cms.site_domain,
|
|
16
|
+
path: current_page.path,
|
|
17
|
+
params: {:prefer_mobile_site => true}
|
|
18
|
+
}
|
|
19
|
+
ActionDispatch::Http::URL.url_for(options)
|
|
10
20
|
end
|
|
11
21
|
|
|
12
22
|
# Determines if the mobile template exists for a given page.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Cms
|
|
2
|
+
module NavMenuHelper
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
|
|
5
|
+
included do
|
|
6
|
+
helper_method :new_button_path, :target_section
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# In most cases, the 'New' button should go to create a new page.
|
|
10
|
+
def new_button_path
|
|
11
|
+
cms.new_section_page_path(target_section)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Used to determine which section a New Page should go in, based on the current context.
|
|
15
|
+
def target_section
|
|
16
|
+
if @page && @page.parent
|
|
17
|
+
@page.parent
|
|
18
|
+
else
|
|
19
|
+
Cms::Section.first
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
module Cms
|
|
2
|
+
|
|
3
|
+
# Deprecated in 4.0. Remove in 4.1
|
|
4
|
+
module DeprecatedBehavior
|
|
5
|
+
|
|
6
|
+
# Add the code to render the CMS toolbar.
|
|
7
|
+
# @deprecated This method is no longer required for BrowserCMS templates.
|
|
8
|
+
def cms_toolbar
|
|
9
|
+
ActiveSupport::Deprecation.warn "The cms_toolbar helper is deprecated and no longer necessary. You can safely remove <%= cms_toolbar %> from templates.", caller
|
|
10
|
+
return ""
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def deprecated_set_page_title_usage(args)
|
|
14
|
+
ActiveSupport::Deprecation.warn "Calling page_title('#{args.first}') is deprecated and will be remove in 4.1. Call use_page_title('#{args.first}') instead.", caller
|
|
15
|
+
use_page_title args.first
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
2
19
|
module PageHelper
|
|
20
|
+
include Cms::DeprecatedBehavior
|
|
21
|
+
|
|
22
|
+
# Keep this taller until we reverse the iframes (so menus will work)
|
|
23
|
+
PAGE_TOOLBAR_HEIGHT = 159
|
|
24
|
+
TOOLBAR_HEIGHT = 100
|
|
3
25
|
|
|
4
26
|
# Return the JS file to load the configured default WYSIWYG editor
|
|
5
27
|
#
|
|
@@ -13,20 +35,45 @@ module Cms
|
|
|
13
35
|
end
|
|
14
36
|
end
|
|
15
37
|
|
|
16
|
-
# Outputs the title for this page. Used by both internal CMS pages, as well as page templates.
|
|
17
|
-
#
|
|
38
|
+
# Outputs the title for this page. Used by both internal CMS pages, as well as page templates. Call use_page_title to
|
|
39
|
+
# change this value.
|
|
18
40
|
#
|
|
19
|
-
# @param [String]
|
|
41
|
+
# @param [String] If provided, this is the name of the page to set. (This usage is deprecated in 4.0 and will be removed in 4.1)
|
|
20
42
|
# @return [String] The title of the page.
|
|
21
43
|
def page_title(*args)
|
|
22
44
|
if args.first
|
|
23
|
-
|
|
24
|
-
|
|
45
|
+
deprecated_set_page_title_usage(args)
|
|
46
|
+
else
|
|
47
|
+
if @page_title
|
|
48
|
+
@page_title
|
|
49
|
+
elsif current_page
|
|
50
|
+
current_page.page_title
|
|
51
|
+
else
|
|
52
|
+
"Untitled"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Returns the Page title in an In Context editable area.
|
|
58
|
+
#
|
|
59
|
+
# Use for h1/h2 elements. Use page_title for title elements.
|
|
60
|
+
def page_header()
|
|
61
|
+
if (is_current_user_able_to_edit_this_content?(current_page))
|
|
62
|
+
options = {id: 'page_title', contenteditable: true, data: {attribute: "title", content_name: "page", id: current_page.id, page_id: current_page.id}}
|
|
63
|
+
content_tag "div", page_title, options
|
|
25
64
|
else
|
|
26
|
-
|
|
65
|
+
page_title
|
|
27
66
|
end
|
|
28
|
-
end
|
|
29
|
-
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Allows Views to set what will be displayed as the <title> element for Page Templates (and Cms admin pages.)
|
|
70
|
+
#
|
|
71
|
+
def use_page_title(title)
|
|
72
|
+
# Implementation note: This method is named use_page_title rather than page_title= because ruby will create a
|
|
73
|
+
# local variable if you call <%= page_title = "A New Page Name" %>
|
|
74
|
+
@page_title = title
|
|
75
|
+
end
|
|
76
|
+
|
|
30
77
|
def current_page
|
|
31
78
|
@page
|
|
32
79
|
end
|
|
@@ -37,12 +84,13 @@ module Cms
|
|
|
37
84
|
# @return [String] The HTML content for the container.
|
|
38
85
|
def container(name)
|
|
39
86
|
content = content_for(name)
|
|
40
|
-
if
|
|
41
|
-
render :partial => 'cms/pages/
|
|
87
|
+
if is_current_user_able_to_edit_this_content?(@page)
|
|
88
|
+
render :partial => 'cms/pages/simple_container', :locals => {:name => name, :content => content, :container => name}
|
|
42
89
|
else
|
|
43
90
|
content
|
|
44
91
|
end
|
|
45
|
-
end
|
|
92
|
+
end
|
|
93
|
+
|
|
46
94
|
# Determine if a given container has any blocks within it. Useful for determine if markup should be conditionally included
|
|
47
95
|
# when a block is present, but not shown if no block was added. For example:
|
|
48
96
|
#
|
|
@@ -56,7 +104,7 @@ module Cms
|
|
|
56
104
|
# @param [Proc] block
|
|
57
105
|
# @return [Boolean] True if the container has one or more blocks, or if we are in edit mode. False otherwise.
|
|
58
106
|
def container_has_block?(name, &block)
|
|
59
|
-
has_block = (
|
|
107
|
+
has_block = (edit_mode?) || current_page.connectable_count_for_container(name) > 0
|
|
60
108
|
logger.info "mode = #{@mode}, has_block = #{has_block}"
|
|
61
109
|
if block_given?
|
|
62
110
|
concat(capture(&block)) if has_block
|
|
@@ -65,16 +113,6 @@ module Cms
|
|
|
65
113
|
end
|
|
66
114
|
end
|
|
67
115
|
|
|
68
|
-
# Add the code to render the CMS toolbar.
|
|
69
|
-
def cms_toolbar
|
|
70
|
-
toolbar = <<HTML
|
|
71
|
-
<iframe src="#{cms.toolbar_path(:page_id => @page.id, :page_version => @page.version, :mode => @mode, :page_toolbar => @show_page_toolbar ? 1 : 0) }" width="100%" height="#{@show_page_toolbar ? 159 : 100 }px" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" name="cms_toolbar"></iframe>
|
|
72
|
-
HTML
|
|
73
|
-
toolbar.html_safe if @show_toolbar
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
116
|
# Renders breadcrumbs based on the current_page. This will generate an unordered list representing the
|
|
79
117
|
# current page and all it's ancestors including the root name of of the site. The UL can be styled via CSS for
|
|
80
118
|
# layout purposes. Each breadcrumb except the last will be linked to the page in question.
|
|
@@ -98,24 +136,24 @@ HTML
|
|
|
98
136
|
show_parent = options[:show_parent].nil? ? false : options[:show_parent]
|
|
99
137
|
ancestors = current_page.ancestors
|
|
100
138
|
items = []
|
|
101
|
-
ancestors[start..ancestors.size].each_with_index do |sec,i|
|
|
102
|
-
items << content_tag(:li,
|
|
103
|
-
|
|
139
|
+
ancestors[start..ancestors.size].each_with_index do |sec, i|
|
|
140
|
+
items << content_tag(:li,
|
|
141
|
+
link_to(sec.name, sec.actual_path), (i == 0 ? {:class => "first"} : {}))
|
|
104
142
|
end
|
|
105
|
-
if !show_parent && current_page.
|
|
106
|
-
items[items.size-1] = content_tag(:li, current_page.
|
|
143
|
+
if !show_parent && current_page.landing_page?
|
|
144
|
+
items[items.size-1] = content_tag(:li, current_page.parent.name)
|
|
107
145
|
else
|
|
108
146
|
items << content_tag(:li, current_page.page_title)
|
|
109
147
|
end
|
|
110
148
|
content_tag(:ul, "\n #{items.join("\n ")}\n".html_safe, :class => "breadcrumbs")
|
|
111
149
|
end
|
|
112
|
-
|
|
150
|
+
|
|
113
151
|
def render_portlet(name)
|
|
114
152
|
portlets = Portlet.all(:conditions => ["name = ?", name.to_s])
|
|
115
153
|
if portlets.size > 1
|
|
116
|
-
|
|
154
|
+
edit_mode? ? "ERROR: Multiple Portlets with name '#{name}'" : nil
|
|
117
155
|
elsif portlets.empty?
|
|
118
|
-
|
|
156
|
+
edit_mode? ? "ERROR: No Portlet with name '#{name}'" : nil
|
|
119
157
|
else
|
|
120
158
|
render_connectable(portlets.first)
|
|
121
159
|
end
|
|
@@ -127,5 +165,9 @@ HTML
|
|
|
127
165
|
return ''
|
|
128
166
|
end
|
|
129
167
|
|
|
168
|
+
# Determines whether this page is in edit mode or not.
|
|
169
|
+
def edit_mode?()
|
|
170
|
+
@mode == "edit"
|
|
171
|
+
end
|
|
130
172
|
end
|
|
131
173
|
end
|
|
@@ -20,54 +20,12 @@ module Cms
|
|
|
20
20
|
#
|
|
21
21
|
# @param [Cms::ContentType] content_type
|
|
22
22
|
# @param [String] column_to_sort The name of the column to sort on.
|
|
23
|
-
def
|
|
23
|
+
def sortable_column_path(content_type, column_to_sort)
|
|
24
24
|
filtered_params = params.clone
|
|
25
25
|
filtered_params.delete(:action)
|
|
26
26
|
filtered_params.delete(:controller)
|
|
27
27
|
filtered_params.merge!(:order => determine_order(filtered_params[:order], column_to_sort))
|
|
28
|
-
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# @deprecated Use cms_connectable_path instead.
|
|
32
|
-
def cms_index_path_for(resource, options={})
|
|
33
|
-
polymorphic_path(build_path_for(resource), options)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# @deprecated Remove all usages of this in favor of cms_index_path_for ()
|
|
37
|
-
def cms_index_url_for(resource, options={})
|
|
38
|
-
send("#{resource_collection_name(resource).underscore.pluralize.gsub('/', '_')}_url", options)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def cms_new_path_for(resource, options={})
|
|
42
|
-
new_polymorphic_path(build_path_for(resource), options)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# @deprecated Remove all usages of this in favor of cms_new_path_for ()
|
|
46
|
-
def cms_new_url_for(resource, options={})
|
|
47
|
-
send("new_#{resource_collection_name(resource).underscore.gsub('/', '_')}_url", options)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# @param [Class, String] connectable The model class (i.e. HtmlBlock) or plural collection name (html_blocks) to link to
|
|
51
|
-
# @param [Hash] options Passed to polymorphic_path
|
|
52
|
-
#
|
|
53
|
-
# @return [String] path suitable to give to link_to
|
|
54
|
-
def cms_connectable_path(connectable, options={})
|
|
55
|
-
if Portlet === connectable
|
|
56
|
-
cms.portlet_path(connectable)
|
|
57
|
-
else
|
|
58
|
-
polymorphic_path(build_path_for(connectable), options)
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# @todo Really needs to be renamed to match conventions for Engines.
|
|
63
|
-
# In CMS::Engine, should be edit_connectable_path
|
|
64
|
-
# From app, should be cms.edit_connectable_path
|
|
65
|
-
def edit_cms_connectable_path(connectable, options={})
|
|
66
|
-
if Portlet === connectable
|
|
67
|
-
edit_portlet_path(connectable, options)
|
|
68
|
-
else
|
|
69
|
-
edit_polymorphic_path(build_path_for(connectable), options)
|
|
70
|
-
end
|
|
28
|
+
polymorphic_path(engine_aware_path(content_type.model_class), filtered_params)
|
|
71
29
|
end
|
|
72
30
|
|
|
73
31
|
def link_to_usages(block)
|
|
@@ -80,7 +38,7 @@ module Cms
|
|
|
80
38
|
p = []
|
|
81
39
|
p << engine_for(block)
|
|
82
40
|
p << :usages
|
|
83
|
-
p
|
|
41
|
+
p << block
|
|
84
42
|
p
|
|
85
43
|
end
|
|
86
44
|
link_to count, path, :id => block.id, :block_type => block.content_block_type
|
|
@@ -89,40 +47,58 @@ module Cms
|
|
|
89
47
|
end
|
|
90
48
|
end
|
|
91
49
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
50
|
+
|
|
51
|
+
# Returns the route proxy (aka engine) for a given resource, which can then have named paths called on it.
|
|
52
|
+
# I.e. engine(@block).polymorphic_path([@block, :preview])
|
|
53
|
+
#
|
|
54
|
+
# @param [ActiveRecord::Base] resource
|
|
55
|
+
# @return [ActionDispatch::Routing::RoutesProxy]
|
|
56
|
+
def engine(resource)
|
|
57
|
+
name = EngineAwarePathBuilder.new(resource).engine_name
|
|
58
|
+
send(name)
|
|
96
59
|
end
|
|
97
60
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
61
|
+
# @deprecated
|
|
62
|
+
alias :engine_for :engine
|
|
63
|
+
|
|
64
|
+
# Return the path for a given resource. Determines the relevant engine, and the result can be passed to polymporhic_path
|
|
65
|
+
#
|
|
66
|
+
# @param [Object] model_or_class_or_content_type A content block, class or content type.
|
|
67
|
+
# @param [String] action (Optional) i.e. :edit
|
|
68
|
+
# @return [Array] An array of argument suitable to be passed to url_for or link_to helpers. This will be something like:
|
|
69
|
+
# [main_app, :dummy_products, @block, :edit]
|
|
70
|
+
# or [cms, :html_blocks, @block]
|
|
71
|
+
#
|
|
72
|
+
# This will work whether the block is:
|
|
73
|
+
# 1. A block in a project (namespaced to the project) (i.e. Dummy::Product)
|
|
74
|
+
# 2. A core CMS block (i.e. Cms::Portlet)
|
|
75
|
+
# 3. A block in a module (i.e. BcmsNews::NewsArticle)
|
|
76
|
+
# e.g.
|
|
77
|
+
# engine_aware_path(Dummy::Product.find(1)) => /dummy/products/1
|
|
78
|
+
# engine_aware_path(Cms::HtmlBlock.find(1)) => /cms/html_blocks/1
|
|
79
|
+
# engine_aware_path(BcmsNews::NewsArticle.find(1)) => /bcms_news/news_articles/1
|
|
80
|
+
#
|
|
81
|
+
def engine_aware_path(model_or_class_or_content_type, action = false)
|
|
82
|
+
elements = build_path_for(model_or_class_or_content_type)
|
|
83
|
+
elements << action if action
|
|
84
|
+
elements
|
|
101
85
|
end
|
|
102
86
|
|
|
103
|
-
|
|
87
|
+
# Wrappers edit_polymorphic_path to be engine aware.
|
|
88
|
+
def edit_engine_aware_path(model_or_class_or_content_type, options={})
|
|
89
|
+
edit_polymorphic_path(build_path_for(model_or_class_or_content_type), options)
|
|
90
|
+
end
|
|
104
91
|
|
|
92
|
+
# Wrappers new_polymorphic_path to be engine aware.
|
|
93
|
+
def new_engine_aware_path(subject, options={})
|
|
94
|
+
new_polymorphic_path(build_path_for(subject), options)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
private
|
|
105
98
|
|
|
106
99
|
def build_path_for(model_or_class_or_content_type)
|
|
107
100
|
Cms::EngineAwarePathBuilder.new(model_or_class_or_content_type).build(self)
|
|
108
101
|
end
|
|
109
102
|
|
|
110
|
-
# Returns the name of the collection that this resource belongs to
|
|
111
|
-
# the resource can be a ContentType, ActiveRecord::Base instance
|
|
112
|
-
# or just a string or symbol
|
|
113
|
-
def resource_collection_name(resource)
|
|
114
|
-
if resource.respond_to?(:resource_collection_name)
|
|
115
|
-
return resource.resource_collection_name
|
|
116
|
-
end
|
|
117
|
-
case resource
|
|
118
|
-
when ContentType then
|
|
119
|
-
resource.route_name
|
|
120
|
-
when ActiveRecord::Base then
|
|
121
|
-
resource.class.model_name.demodulize
|
|
122
|
-
else
|
|
123
|
-
resource.to_s
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
|
|
127
103
|
end
|
|
128
104
|
end
|