browsercms 3.5.7 → 4.0.0.alpha
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -0,0 +1,90 @@
|
|
1
|
+
class Browsercms400 < ActiveRecord::Migration
|
2
|
+
|
3
|
+
def up
|
4
|
+
apply_cms_namespace_to_all_core_tables
|
5
|
+
|
6
|
+
add_column :cms_section_nodes, :slug, :string
|
7
|
+
add_content_column :cms_dynamic_views, :path, :string
|
8
|
+
add_content_column :cms_dynamic_views, :locale, :string, default: 'en'
|
9
|
+
add_content_column :cms_dynamic_views, :partial, :boolean, default: false
|
10
|
+
|
11
|
+
Cms::PageTemplate.all.find_each do |pt|
|
12
|
+
pt.path = "layout/templates/#{pt.name}"
|
13
|
+
pt.locale = "en"
|
14
|
+
pt.save!
|
15
|
+
end
|
16
|
+
|
17
|
+
Cms::PagePartial.all.find_each do |pp|
|
18
|
+
pp.path = "partials/#{pp.name}"
|
19
|
+
pp.locale = "en"
|
20
|
+
pp.partial = true
|
21
|
+
pp.save!
|
22
|
+
end
|
23
|
+
|
24
|
+
drop_table :cms_content_type_groups
|
25
|
+
drop_table :cms_content_types
|
26
|
+
|
27
|
+
create_content_table :cms_forms do |t|
|
28
|
+
t.string :name
|
29
|
+
t.text :description
|
30
|
+
t.string :confirmation_behavior
|
31
|
+
t.text :confirmation_text
|
32
|
+
t.string :confirmation_redirect
|
33
|
+
t.string :notification_email
|
34
|
+
end
|
35
|
+
|
36
|
+
create_table :cms_form_fields do |t|
|
37
|
+
t.integer :form_id
|
38
|
+
t.string :label
|
39
|
+
t.string :name
|
40
|
+
t.string :field_type
|
41
|
+
t.boolean :required
|
42
|
+
t.integer :position
|
43
|
+
t.text :instructions
|
44
|
+
t.text :default_value
|
45
|
+
t.text :choices
|
46
|
+
t.timestamps
|
47
|
+
end
|
48
|
+
|
49
|
+
# Field names should be unique per form
|
50
|
+
add_index :cms_form_fields, [:form_id, :name], :unique => true
|
51
|
+
|
52
|
+
create_table :cms_form_entries do |t|
|
53
|
+
t.text :data_columns
|
54
|
+
t.integer :form_id
|
55
|
+
t.timestamps
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
# In 4.x, all core tables MUST start with cms_. See https://github.com/browsermedia/browsercms/issues/639
|
63
|
+
def apply_cms_namespace_to_all_core_tables
|
64
|
+
unversioned_tables.each do |table_name|
|
65
|
+
if (needs_namespacing(table_name))
|
66
|
+
rename_table table_name, cms_(table_name)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
versioned_tables.each do |table_name|
|
71
|
+
if (needs_namespacing(table_name))
|
72
|
+
rename_table table_name, cms_(table_name)
|
73
|
+
rename_table versioned_(table_name), cms_(versioned_(table_name))
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# All tables that aren't versioned. (I.e. two tables)
|
79
|
+
def unversioned_tables
|
80
|
+
[:categories, :category_types, :connectors, :content_types, :content_type_groups, :email_messages, :group_permissions, :group_sections, :group_type_permissions, :group_types, :groups, :page_route_options, :page_routes, :permissions, :portlet_attributes, :portlets, :redirects, :section_nodes, :sections, :sites, :taggings, :tags, :tasks, :user_group_memberships, :users]
|
81
|
+
end
|
82
|
+
|
83
|
+
def versioned_tables
|
84
|
+
[:attachments, :dynamic_views, :file_blocks, :html_blocks, :links, :pages]
|
85
|
+
end
|
86
|
+
|
87
|
+
def needs_namespacing(table_name)
|
88
|
+
table_exists?(table_name) && !table_exists?(cms_(table_name))
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
class DeviseCreateUsers < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
change_table(:cms_users) do |t|
|
4
|
+
## Database authenticatable
|
5
|
+
#t.string :email, :null => false, :default => ""
|
6
|
+
t.string :encrypted_password, :null => false, :default => ""
|
7
|
+
|
8
|
+
## Recoverable
|
9
|
+
t.rename :reset_token, :reset_password_token
|
10
|
+
t.datetime :reset_password_sent_at
|
11
|
+
|
12
|
+
## Rememberable
|
13
|
+
t.rename :remember_token_expires_at, :remember_created_at
|
14
|
+
t.remove :remember_token # Not needed by devise.
|
15
|
+
|
16
|
+
# Remove old SHA based encrypted passwords.
|
17
|
+
# Comment out the following line if you have a strong need to preserve old hashed passwords
|
18
|
+
t.remove :crypted_password
|
19
|
+
|
20
|
+
## Trackable
|
21
|
+
#t.integer :sign_in_count, :default => 0, :null => false
|
22
|
+
#t.datetime :current_sign_in_at
|
23
|
+
#t.datetime :last_sign_in_at
|
24
|
+
#t.string :current_sign_in_ip
|
25
|
+
#t.string :last_sign_in_ip
|
26
|
+
|
27
|
+
## Confirmable
|
28
|
+
# t.string :confirmation_token
|
29
|
+
# t.datetime :confirmed_at
|
30
|
+
# t.datetime :confirmation_sent_at
|
31
|
+
# t.string :unconfirmed_email # Only if using reconfirmable
|
32
|
+
|
33
|
+
## Lockable
|
34
|
+
# t.integer :failed_attempts, :default => 0, :null => false # Only if lock strategy is :failed_attempts
|
35
|
+
# t.string :unlock_token # Only if unlock strategy is :email or :both
|
36
|
+
# t.datetime :locked_at
|
37
|
+
|
38
|
+
|
39
|
+
#t.timestamps
|
40
|
+
end
|
41
|
+
|
42
|
+
add_index :cms_users, :email, :unique => true
|
43
|
+
add_index :cms_users, :reset_password_token, :unique => true
|
44
|
+
# add_index :users, :confirmation_token, :unique => true
|
45
|
+
# add_index :users, :unlock_token, :unique => true
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# Design Integration
|
2
|
+
|
3
|
+
This covers some of the remaining design issues that we need to resolve before the beta/final 4.0 release.
|
4
|
+
|
5
|
+
## [Ask Kyle]
|
6
|
+
|
7
|
+
* Fonts for Dashboard table headers/menus are just less bold than in design.
|
8
|
+
* Icons for:
|
9
|
+
- Edit button (Pencil) for content
|
10
|
+
- Links
|
11
|
+
- Portlets - Should use 'list' icon
|
12
|
+
- Other Content Types (Product, Catalog, Generic Document) - Ideas: Book? Newspaper? Full page?
|
13
|
+
- Visual Indicator for a section/page can't be edited. (Currently just removing the buttons)
|
14
|
+
- Up and down sorting icons (caret is always down)
|
15
|
+
* Need style for Checkbox groups that are labeled. See Add User.
|
16
|
+
* Tables that are too wide (/cms/routes)
|
17
|
+
* JQuery Date picker - Has no styling.
|
18
|
+
* Styling for CKEditor 'selector'.
|
19
|
+
* Need help styling 'path' element.
|
20
|
+
* Errors - Review the placement of errors on the form.
|
21
|
+
* Products
|
22
|
+
- Photo 2 is wrapping unnecessarily (Does it without photo 1)
|
23
|
+
- Slug path needs styling.
|
24
|
+
|
25
|
+
## IA Questions
|
26
|
+
|
27
|
+
* What Label for first element under Assets? (Assets? Asset library). Or just make Text first.
|
28
|
+
* Selecting a section always toggles. Might want to select an open section to add content to it, but not close it.
|
29
|
+
* Where should "Settings" link take user to.
|
30
|
+
|
31
|
+
## Implied Features by Design
|
32
|
+
|
33
|
+
Features in the original design/IA that didn't get implemented.
|
34
|
+
|
35
|
+
* Make 'Assign' on Edit page work.
|
36
|
+
* Sitemap filters
|
37
|
+
* Sitemap Hide/Archive/Publish
|
38
|
+
* Dashboard Activity / My and All
|
39
|
+
* [Assets] Filter by publish/notpublished
|
40
|
+
* [Assets] Infinite scrolling
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# [#644] External User
|
2
|
+
|
3
|
+
Support a built in way to authenticate external users and store their information in the database. These users could be from any system (CRM, AMS, Facebook) and they would be authenticated using credentials from those services. Each external user would be given a record in the user table and would be marked as an external user.
|
4
|
+
|
5
|
+
* Permission: Groups would be dynamically assigned on login and recorded as an association with that user until they reauthentice.
|
6
|
+
* External Data: Third Party APIs often provide extra information. Provide an easy way to store this information on the user record without needing new columns.
|
7
|
+
* Subclasses: Projects/Engines should be able to subclass ExternalUser to provide additional behavior.
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# Form Builder
|
2
|
+
|
3
|
+
Allow content editors to create new form via the interface.
|
4
|
+
|
5
|
+
## Remain issues/features
|
6
|
+
|
7
|
+
* [MINOR] Unique icon for forms (i.e. custom) for sitemap
|
8
|
+
* [Improvement] Captcha?
|
9
|
+
* [FEATURE] Allow sorting/reporting.
|
10
|
+
* [BUG] Preview for dropdowns is inaccurate (doesn't change after updates). To fix, would need to refactor to have HTML returned rather than JSON.
|
11
|
+
* [BUG] 500 errors when posting forms within CMS shows errors within double nested toolbar.
|
12
|
+
* [Improvement] Default Forms just uses bootstrap, which is probably not a valid option. Need a way to pare it down to avoid changing styles for existing designes.
|
13
|
+
* [BUG] After adding a field, it clears but does not correctly show the 'blank' value.
|
14
|
+
* [BUG] Addressable content types (product, forms, etc) do not/cannot appear in menus without manually creating a link.
|
15
|
+
|
16
|
+
## Documentation
|
17
|
+
|
18
|
+
## Forms
|
19
|
+
|
20
|
+
* Can notify staff when a form is submitted.
|
21
|
+
* Email mailbot can be configured in application.rb
|
22
|
+
|
23
|
+
### Configuration
|
24
|
+
|
25
|
+
In config/application.rb, to change which CSS stylesheet is applied to Form pages, update the following:
|
26
|
+
|
27
|
+
```
|
28
|
+
# Default is 'cms/default-forms'
|
29
|
+
config.cms.form_builder_css = 'my-forms' # Returns /assets/my-forms.css
|
30
|
+
```
|
31
|
+
|
32
|
+
# New Namespacing
|
33
|
+
|
34
|
+
When upgrading, Content Models should be moved under application namespace. Basis steps:
|
35
|
+
|
36
|
+
Custom models should have the following added to them:
|
37
|
+
Create a directory in the project named app/models/cms
|
38
|
+
Move any Content Blocks into that directory.
|
39
|
+
Rename from Widget to *Cms::*Widget
|
40
|
+
Add self.table_name = :widgets (or migrate the table from widgets to cms_widgets)
|
@@ -0,0 +1,60 @@
|
|
1
|
+
[#623] Refactor CMS forms to use SimpleForm
|
2
|
+
|
3
|
+
Converted all the internal forms to use SimpleForm rather than our own custom form builder. This provides better consistency with bootstrap forms, as well as well tested API for defining new form inputs. This will primarily affect developers when they create content blocks. New content will be generated using simple_form syntax like so:
|
4
|
+
|
5
|
+
<%= f.input :photo, as: :file_picker %>
|
6
|
+
|
7
|
+
rather than the older syntax that looks like this:
|
8
|
+
|
9
|
+
<%= f.cms_file_field :photo %>
|
10
|
+
|
11
|
+
The old form_builder methods like cms_text_field and cms_file_field have been deprecated and will generate warnings when used. These methods are scheduled for removal in BrowserCMS 4.1. It's recommended that custom content blocks be upgraded to use the new syntax when feasible. The deprecation warnings should provide some guideance, but also look at simple_forms documentation http://simple-form.plataformatec.com.br for help.
|
12
|
+
|
13
|
+
## Available Input Types
|
14
|
+
|
15
|
+
All of the existing simple_form input mappings are available. See http://simple-form.plataformatec.com.br/#mappings-inputs-available for the reference. BrowserCMS adds some additional input types for specific CMS features.
|
16
|
+
|
17
|
+
|# Mapping | Input | Purpose/column type #|
|
18
|
+
| file_picker | File Upload | A single attachment with section/path selectors |
|
19
|
+
| cms_text_area | text area | Like :text but with a :default |
|
20
|
+
| cms_text_field | text field | Like :string with optional path generator (for addressable content types)|
|
21
|
+
| date_picker | jquery date select | date |
|
22
|
+
| path | text field | A slug/path for addressable content (works with cms_text_field to automatically generate names) |
|
23
|
+
| template_editor | text area | For editing templates via ERB or other permitted template languages. |
|
24
|
+
| text_editor | WYSIWYG editor | For editing HTML content (has toggle to use a text area |
|
25
|
+
| attachments | Multiple File Uploads | Unlimited # of attachments. |
|
26
|
+
| tag_list| text field | has_many with :tags |
|
27
|
+
|
28
|
+
### Usage
|
29
|
+
|
30
|
+
Here are some examples showing how to use the CMS specific inputs.
|
31
|
+
|
32
|
+
```
|
33
|
+
<%= f.input :name, as: :cms_text_field, default: "Some Value" %>
|
34
|
+
```
|
35
|
+
|
36
|
+
Generates the 'name' field, and a :path input if the content block is addressable. Can supply a default value that will be used when creating a new record.
|
37
|
+
|
38
|
+
```
|
39
|
+
<%= f.input :expires_on, as: :date_picker %>
|
40
|
+
```
|
41
|
+
|
42
|
+
Renders a text_field that can be left blank or have a date entered into it as text. Clicking on it will bring up a JQuery Date Picker to select the date.
|
43
|
+
|
44
|
+
```
|
45
|
+
<%= f.input :template, as: :template_editor %>
|
46
|
+
```
|
47
|
+
|
48
|
+
Renders a template editor (if the content block has enabled template editing). The default template body for the model will be used when creating a new record.
|
49
|
+
|
50
|
+
|
51
|
+
### Usage Exceptions
|
52
|
+
|
53
|
+
Several of the input types above are not used directly, but rather via methods like this that hide some of their complexity:
|
54
|
+
|
55
|
+
```
|
56
|
+
<%= f.cms_attachment_manager %>
|
57
|
+
<%= f.cms_tag_list %>
|
58
|
+
```
|
59
|
+
|
60
|
+
|
data/doc/release_notes.md
CHANGED
@@ -1,17 +1,231 @@
|
|
1
|
-
|
1
|
+
# v4.0
|
2
|
+
|
3
|
+
|
4
|
+
## Major Features
|
5
|
+
|
6
|
+
This release includes the following major features:
|
7
|
+
|
8
|
+
* User Interface Redesign - User interface has been complete redesigned from the ground up. The new UI is based on Twitter Bootstrap, has usability enhancements as well as an improved design.
|
9
|
+
* True In Context Editing [#566] - Editors can directly edit Html content and page titles using CKEditor's inline capability.
|
10
|
+
* Rails 4 Upgrade [#617] - BrowserCMS is now designed to work with Rail 4.0.
|
11
|
+
* Ruby 2.0 [#651] - BrowserCMS is now designed to work with Ruby 2, matching the recommended specs for Rails 4. Ruby 1.9.3 and 1.9.2 may still work.
|
12
|
+
* Form Builder [#124] - Allow editors to create form pages that can be used to collect information from visitors
|
13
|
+
* Addressable Content [#588] - Custom content blocks (i.e. Product, Event, News Articles) can be created directly as pages in the sitemap.
|
14
|
+
* Improved Template Storage [#608] - Database managed templates are no longer written out to the file system. Sites should have less permission related issued during deployments. Using Heroku to host sites should be easier as well.
|
15
|
+
* Devise Integration [#641] - Devise is now used as standard authentication tool. Upgrading projects will have passwords reset (See upgrade notes for more details).
|
16
|
+
* External Users [#644] - Better support for authenticating/authorizing users from external data sources rather than using additional solutions like CAS.
|
17
|
+
|
18
|
+
## Other Features/Improvements
|
19
|
+
|
20
|
+
In addition to the other major features above, here are some improvements/features of note.
|
21
|
+
|
22
|
+
* Portlet Descriptions [#619] - Portlets can now have a description that will be used to provide additional context when users are building/placing them.
|
23
|
+
* No need to register Content Types [#621] - Content Blocks will automatically appear in the menus without needing to add them to the database.
|
24
|
+
* Using SimpleForm [#623] Reworked all forms to use simple_form (https://github.com/plataformatec/simple_form).
|
25
|
+
* Migration Cleanup [#594] Migrations for previous versions have been compressed. This has implications for upgrading, but should make new project cleaner.
|
26
|
+
* Consistent table prefixes [#639] All core cms tables will now start with cms_ rather than being configurable.
|
27
|
+
* Content Blacklisting - Portlets can be blacklisted via configuration so that they can't be created. Several previously stock types are blacklisted.
|
28
|
+
* Refined Content API [#256] [#582][#584] - Make content blocks closer in behavior to ActiveRecord.
|
29
|
+
|
30
|
+
## UI Redesign
|
31
|
+
|
32
|
+
The entire UI has been reworked to be more streamlined and lightweight. It is now built using Twitter Bootstrap, and makes better use of global menus and toolbars. Here are the notable changes.
|
33
|
+
|
34
|
+
1. Global Menu - Many commons functions can now be invoked directly from the main menu, including adding new content or users.
|
35
|
+
1. Smart 'New' button - Users can add content from any page in the CMS. The "New" button is a split button that can either add a specific type of content, or will 'guess' based on where a user is in the site.
|
36
|
+
1. Sitemap - Each row now has hover buttons to edit/remove content rather than needing to select a row then click a button menu.
|
37
|
+
1. Assets/Asset Library - The content library has been renamed to be called assets.
|
38
|
+
|
39
|
+
## In Context Editing
|
40
|
+
|
41
|
+
Users can now edit most HTML content directly in the page. Icons indicate the area of the pages that are editable. Here are some of the highlights:
|
42
|
+
|
43
|
+
1. No need to toggle the editor on/off. Just click the area of the page you want to edit.
|
44
|
+
1. Full Edit - Click to edit in full text editor. Any changes made will be saved before going to the full editor. There is also a edit button on each block in the upper right hand corner.
|
45
|
+
1. Remove blocks from page - Editors can select a block then remove it from the page via a button on the editor. Users will be prompted before its removed.
|
46
|
+
1. Reorder content - Can move content blocks up or down within a page. Page will refresh after moving.
|
47
|
+
1. Editable Page titles - Page title can be edited directly from the header.
|
48
|
+
1. Preview Page - Editors can now preview the page without a toolbar or editing controls.
|
49
|
+
1. Non-incontext Content - Not all content makes sense to be inline editable (for example portlets). For these content types, the previous move/remove/edit links now float in the upper right hand corner of the content block.
|
50
|
+
|
51
|
+
## Addressable Content Blocks
|
52
|
+
|
53
|
+
Content blocks can created with as their own pages. To make a block addressable, a developer must do the following:
|
54
|
+
|
55
|
+
1. Add is_addressable to the model. This will automatically generate a :slug form field when creating/editing instances.
|
56
|
+
2. Set the Page Template that should be used (defaults to 'default').
|
57
|
+
|
58
|
+
```
|
59
|
+
class Product < ActiveRecord::Base
|
60
|
+
is_addressable path: "/products", template: "product"
|
61
|
+
end
|
62
|
+
```
|
63
|
+
|
64
|
+
3. Add the following field to the _form.html.erb.
|
65
|
+
|
66
|
+
```
|
67
|
+
<%= f.input :slug, as: :path %>
|
68
|
+
```
|
69
|
+
|
70
|
+
## Form Builder
|
71
|
+
|
72
|
+
Allow editors to create form pages that can be used to collect information from visitors (i.e. Contact Us, Support requests, etc). Basically, any quick collect a few fields using a consistent form styling.
|
73
|
+
|
74
|
+
### Features include:
|
75
|
+
|
76
|
+
1. Forms can have multiple fields which can be text fields, textareas or multiple choice dropdowns. Field management is done via AJAX and fields can be added/reordered/removed without leaving the page.
|
77
|
+
2. Fields can be required, have instructions and default values. Choices are added as lines of text for each dropdown field. Dropdowns use the first value as the default.
|
78
|
+
3. Entries are stored in the database and can optionally notify someone via email when new submissions are created.
|
79
|
+
4. Editors can manage entries via the admin (CRUD)
|
80
|
+
5. Visitors can be redirected to another URL after submitting their entry or display a customizable 'success' message.
|
81
|
+
6. Forms generate the HTML display using bootstrap's CSS by default. Projects can customize this in the application.rb with config.cms.form_builder_css
|
82
|
+
|
83
|
+
## Refined Content API
|
84
|
+
|
85
|
+
1. .save now works identically between ActiveRecord and Content Blocks
|
86
|
+
|
87
|
+
Previously, calling .save on a block would save a draft copy, rather then updating the record in place. This has been changed. To save a draft, you can do either:
|
88
|
+
|
89
|
+
@block.publish_on_save
|
90
|
+
@block.save
|
91
|
+
# or
|
92
|
+
@block.save_draft
|
93
|
+
|
94
|
+
|
95
|
+
## Registering Content Types
|
96
|
+
|
97
|
+
Content blocks no longer need to have a separate registration in the database to appear in menus.
|
98
|
+
|
99
|
+
Defining a new content model should be sufficient to have it appear in the content library. To specify which module it should appear in, you can configure it like so:
|
100
|
+
|
101
|
+
class Widget < ActiveRecord::Base
|
102
|
+
acts_as_content_block
|
103
|
+
content_module :acme
|
104
|
+
end
|
105
|
+
|
106
|
+
The content_types and content_type_groups tables have been removed as they are no longer necessary. If you don't want a block to appear in the menus, you can specify this via:
|
107
|
+
|
108
|
+
class Widget < ActiveRecord::Base
|
109
|
+
acts_as_content_block content_module: false
|
110
|
+
end
|
111
|
+
|
112
|
+
## Refactor to use SimpleForm
|
113
|
+
|
114
|
+
Converted all the internal forms to use SimpleForm rather than our own custom form builder. This provides better consistency with bootstrap forms, as well as well tested API for defining new form inputs. This will primarily affect developers when they create content blocks. New content will be generated using simple_form syntax like so:
|
115
|
+
|
116
|
+
```
|
117
|
+
<%= f.input :photo, as: :file_picker %>
|
118
|
+
```
|
119
|
+
|
120
|
+
rather than the older syntax that looks like this:
|
121
|
+
|
122
|
+
```
|
123
|
+
<%= f.cms_file_field :photo %>
|
124
|
+
```
|
125
|
+
|
126
|
+
The old form_builder methods like cms_text_field and cms_file_field have been deprecated and will generate warnings when used. These methods are scheduled for removal in BrowserCMS 4.1. It's recommended that custom content blocks be upgraded to use the new syntax when feasible. The deprecation warnings should provide some guideance, but also look at simple_forms documentation http://simple-form.plataformatec.com.br for help.
|
127
|
+
|
128
|
+
## Portlet Blacklists
|
129
|
+
|
130
|
+
Portlets can be blacklisted so that new instances cannot be created. This can be used to turn off some portlets for security, convience or otherwise. By default, the following portlet types are blacklisted (as 'deprecated').
|
131
|
+
|
132
|
+
* LoginPortlet (:login_portlet)
|
133
|
+
* DynamicPortlet (:dynamic_portlet)
|
134
|
+
* ForgotPasswordPortlet (:forgot_password_portlet)
|
135
|
+
|
136
|
+
### Modifying the blacklist
|
137
|
+
|
138
|
+
```
|
139
|
+
# Prevention creation
|
140
|
+
config.cms.content_types.blacklist += [:email_page_portlet]
|
141
|
+
|
142
|
+
# Allowing creation
|
143
|
+
config.cms.content_types.blacklist -= [:login_portlet]
|
144
|
+
```
|
145
|
+
|
146
|
+
## Devise Integration
|
147
|
+
|
148
|
+
Devise is now the standard authentication mechanism for BrowserCMS. This adds some new (and improved) authentication features including:
|
149
|
+
|
150
|
+
* Reset Password - Admin users have a link to reset passwords.
|
151
|
+
* Strong Password storage - Passwords are now encrypted using bcrypt which is a safer method (http://codahale.com/how-to-safely-store-a-password/)
|
152
|
+
* Remember Me - Allows users to stay logged in for up to two weeks.
|
153
|
+
* Devise/Warden APIs - Developers can use Devise and/or Warden's APIs to customize how authenication works. The previous RESTful Authentication based solution was not really pluggable.
|
154
|
+
|
155
|
+
### [Warning] Upgrading/Password Reset
|
156
|
+
|
157
|
+
Upgrading to 4.0 means all user passwords will need to be reset. This doesn't apply where external user databases are used (i.e. CAS) for authentication. Just user accounts stored in the CMS itself.
|
158
|
+
|
159
|
+
This reset is a side effect of using a more secure password encryption algorithm (bcrypt). When users try to log in, they will have to request a password reset. This feature is provided on /cms/login as a standard feature. Users will need to provide an email, and a link for reseting their password will be sent to them. Alternatively, developers may choose to change passwords via the admin interface (or rails console) before turning over sites to the site maintainers.
|
160
|
+
|
161
|
+
### Avoiding a reset
|
162
|
+
|
163
|
+
For most sites, the number of admin users is likely limited and part of a cohesive team. So forcing a reset shouldn't be an issue. In the case of sites that have large user databases, a migration strategy to mass update or possibly creating a new Warden/Devise strategy based on the 3.5.x encryption strategy. These two are coding exercises left to the developers working on the project.
|
164
|
+
|
165
|
+
For sites that need to keep a record of the old encrypted passwords, remove/comment out the following line from the browsercms400 migration which will preserve the old encrypted passwords.
|
166
|
+
|
167
|
+
```
|
168
|
+
t.remove :crypted_password
|
169
|
+
```
|
170
|
+
|
171
|
+
Note that preserving the old password data is just the first step. The new encryption strategy will still be used unless modifications are made to the project.
|
172
|
+
|
173
|
+
### Forgot Password
|
174
|
+
|
175
|
+
Users can reset their password via the admin UI. On /cms/login, a link to 'Forgot Password' is available. Users can enter an email and have the reset link mailed to them.
|
176
|
+
|
177
|
+
Configuration: For Forgot Password to work, need to ensure the following is present for mailer in BrowserCMS setups.
|
178
|
+
* config.action_mailer.default_url_options = { :host => "yourhost" }
|
179
|
+
|
180
|
+
The core 'ForgotPassword' portlet has been reworked and is probably 100% unnecessary on most sites. It is now blacklisted by default. The portlet now just renders the stock /forgot-password view and isn't editable. Use /forgot-password instead.
|
181
|
+
|
182
|
+
## External User API [#644]
|
183
|
+
|
184
|
+
There is now a core API for handling users that are authenticated/authorized against external data sources. There is a new class (Cms::ExternalUser) which represents a user which has been authenticated using some source other than the Core CMS. This user can have extra information retained as attribute and can be authorized to be part of a specific group(s).
|
185
|
+
|
186
|
+
A sample implementation of an authentication strategy can be found in lib/cms/authentication/test_password_strategy. Strategies are implemented as Devise Strategies and should either login or pass to the next strategy.
|
187
|
+
|
188
|
+
This implementation is intended to replace CAS based strategies used in BrowserCMS 3.x. It provides the ability to style the login page directly, and avoid having an external CAS server software.
|
189
|
+
|
190
|
+
## Upgrading
|
191
|
+
|
192
|
+
1. Editable Page Titles: In order to take advantage of the editable pages titles, templates need to use the new Template API Method: page_header(). Used rather that <%= page_title %> within h1/h2 etc, this will output an editable page title element for logging in users.
|
193
|
+
2. match -> get: Update your config/routes.rb to change any use of 'match' to get or post for your controller.
|
194
|
+
3. Install the deprecated finders and other gems to help with upgrade. Once you get rid of the deprecation warnings you can remove the gem.
|
195
|
+
4. Content Types - If you have defined content blocks in custom group names, you should edit them to specify the module name. See 'Registering Content Types' above for details. You can delete any seeds that create content types. There will be a deprecation warning if you call save! or create! on ContentTypes.
|
196
|
+
5. Forms - Rework existing form fields in content blocks to use SimpleForm.
|
197
|
+
6. Table Prefixing - In config/initializers/browsercms.rb remove the `Cms.table_prefix = 'cms_' line, which generated deprecation warnings.
|
198
|
+
7. Password Reset - Users will need to reset their password after the upgrade. See Devise Integration/Avoiding a reset if this is concern.
|
199
|
+
8. Forgot Password - Consider removing any existing ForgotPassword portlets and just use /forgot-password controller. Creation is disabled by default.
|
200
|
+
9. Reset Password Portlet - These have been removed as they were no longer necessary. Any remaining instances have been converted to 'DeprecatedPlaceholders'. Find and remove these portlets (and the page they were on) from your site.
|
201
|
+
10. Login Portlet - Consider removing these and using the built in /login route. Creation is disabled by default.
|
202
|
+
|
203
|
+
### Migration Cleanup
|
204
|
+
|
205
|
+
Projects using versions older than 3.5.4 must first upgrade to the latest 3.5.x version. This is because we have compressed the migrations from 3.0.0 up to 4.0.0 into a single migration (browsercms300). Migrations, especially those that alter data get hard to maintain over time. And new projects don't care when they start with fresh data.
|
206
|
+
|
207
|
+
After migrating your production environment to 3.5.7 do the following:
|
208
|
+
|
209
|
+
1. Record the timestamp for the existing 3_0_0 migration (i.e. 20080815014337).
|
210
|
+
2. Delete all the BrowserCMS migrations (3_0_0, 314, etc) from the project.
|
211
|
+
3. Add the migrations for 4.0.0.
|
212
|
+
4. Change the name of the new browsercms300 migration so it matches the old timestamp of browsercms3_0_0. This will prevent the new migration from running.
|
213
|
+
|
214
|
+
|
215
|
+
## Deprecations
|
216
|
+
|
217
|
+
* page_title("Some Name") is deprecated in favor of use_page_title("Some Name") for overriding a page title. This will be remove in 4.1. This probably will probably only effect changes make in modules or customizations to the core.
|
218
|
+
|
219
|
+
v3.5.6
|
2
220
|
======
|
3
221
|
|
4
|
-
|
222
|
+
* [#591] Error pages do not render mobile templates
|
223
|
+
|
224
|
+
v3.5.5
|
225
|
+
======
|
5
226
|
|
6
|
-
*
|
7
|
-
* [#557] Fix extra column on blocks index page (Thanks metalon)
|
8
|
-
* [#543] Allow cms_file_field to use default label (Thanks josiahivey)
|
9
|
-
* [#563] Continuous Integration - Get Travis CI up and working for the project.
|
10
|
-
* [#539] Fix missing assets on CMS Login page (Thanks korin)
|
11
|
-
* [#537] Better support core contributions by removing database.yml from checkin. Run `rake project:setup[mysql]` to create a database.yml for your local database. (Thanks josiahivey)
|
12
|
-
* [#564] Update to Rails 3.2.12 - Ensure tests to pass (there appeared to be some changes in inflection and html_safe between 3.2.5 and 3.2.8)
|
227
|
+
* Update to Rails 3.2.8 - Ensure tests to pass (there appeared to be some changes in inflection and html_safe between 3.2.5 and 3.2.8)
|
13
228
|
|
14
|
-
See https://github.com/browsermedia/browsercms/issues?milestone=18&page=1&state=closed for more details.
|
15
229
|
|
16
230
|
v3.5.4
|
17
231
|
======
|