├── .gitignore ├── .ruby-gemset ├── .travis.yml ├── .yardopts ├── COPYRIGHT.txt ├── GPL.txt ├── Gemfile ├── Gemfile.lock ├── LICENSE.txt ├── README.markdown ├── Rakefile ├── app ├── assets │ ├── fonts │ │ ├── icomoon.dev.svg │ │ ├── icomoon.eot │ │ ├── icomoon.svg │ │ ├── icomoon.ttf │ │ └── icomoon.woff │ ├── images │ │ ├── ckeditor │ │ │ └── plugins │ │ │ │ ├── delete_content │ │ │ │ └── icons │ │ │ │ │ └── deletecontent.png │ │ │ │ ├── edit_content │ │ │ │ └── icons │ │ │ │ │ └── editcontent.png │ │ │ │ └── move_content │ │ │ │ └── icons │ │ │ │ ├── movecontentdown.png │ │ │ │ └── movecontentup.png │ │ └── cms │ │ │ ├── administration │ │ │ └── user_browser_bg.gif │ │ │ ├── arrow-down.png │ │ │ ├── arrow-up.png │ │ │ ├── bg.png │ │ │ ├── bl_curve.png │ │ │ ├── bottom_cap.png │ │ │ ├── bottom_cap_content.png │ │ │ ├── browse.gif │ │ │ ├── browser_media_logo.png │ │ │ ├── browsercms_logo.png │ │ │ ├── buttons │ │ │ ├── button.png │ │ │ ├── button_bg.png │ │ │ ├── button_cap.png │ │ │ ├── button_cap_h.png │ │ │ ├── button_cap_off.gif │ │ │ ├── button_cap_off_middle.gif │ │ │ ├── button_h.png │ │ │ ├── button_left_bg.png │ │ │ ├── button_off.png │ │ │ ├── button_off_middle.png │ │ │ ├── delete_x.png │ │ │ ├── delete_x_disabled.png │ │ │ ├── delete_x_h.png │ │ │ ├── sm_button.gif │ │ │ ├── sm_button_2.gif │ │ │ ├── sm_button_2_h.gif │ │ │ └── sm_button_h.gif │ │ │ ├── cogs.png │ │ │ ├── containers │ │ │ ├── add.gif │ │ │ ├── alpha.png │ │ │ ├── beta.png │ │ │ ├── delete.gif │ │ │ ├── down.gif │ │ │ ├── edit.gif │ │ │ ├── up.gif │ │ │ └── view.gif │ │ │ ├── content_bg.gif │ │ │ ├── dashboard │ │ │ ├── bottom_cap.png │ │ │ ├── bottom_cap_content.png │ │ │ ├── header_bg.gif │ │ │ ├── header_left_bg.gif │ │ │ ├── home.png │ │ │ ├── table_header_bg.gif │ │ │ └── top_cap.png │ │ │ ├── dashed.gif │ │ │ ├── datepicker │ │ │ ├── clear.gif │ │ │ └── close.gif │ │ │ ├── dk_button_l.gif │ │ │ ├── dk_button_r.gif │ │ │ ├── dot.png │ │ │ ├── draft_status.gif │ │ │ ├── file-uploading.gif │ │ │ ├── gray_long_bg.gif │ │ │ ├── home.png │ │ │ ├── icons │ │ │ ├── actions │ │ │ │ ├── add.png │ │ │ │ ├── config.png │ │ │ │ ├── connect.png │ │ │ │ ├── delete.png │ │ │ │ ├── down.png │ │ │ │ ├── edit.png │ │ │ │ ├── folder.png │ │ │ │ ├── folder_add.png │ │ │ │ ├── folder_delete.png │ │ │ │ ├── folder_edit.png │ │ │ │ ├── folder_move.png │ │ │ │ ├── folder_open.png │ │ │ │ ├── history.png │ │ │ │ ├── home.png │ │ │ │ ├── left.png │ │ │ │ ├── link.png │ │ │ │ ├── page.png │ │ │ │ ├── page_add.png │ │ │ │ ├── page_edit.png │ │ │ │ ├── page_move.png │ │ │ │ ├── redo.png │ │ │ │ ├── refresh.png │ │ │ │ ├── right.png │ │ │ │ ├── root_folder.png │ │ │ │ ├── root_link.png │ │ │ │ ├── root_page.png │ │ │ │ ├── undo.png │ │ │ │ ├── up.png │ │ │ │ └── view.png │ │ │ ├── file_types │ │ │ │ ├── doc.png │ │ │ │ ├── file.png │ │ │ │ ├── gif.png │ │ │ │ ├── htm.png │ │ │ │ ├── pdf.png │ │ │ │ ├── ppt.png │ │ │ │ ├── swf.png │ │ │ │ ├── txt.png │ │ │ │ ├── xls.png │ │ │ │ ├── xml.png │ │ │ │ └── zip.png │ │ │ ├── status │ │ │ │ ├── archived.gif │ │ │ │ ├── draft.gif │ │ │ │ ├── hidden.gif │ │ │ │ ├── locked.gif │ │ │ │ ├── published.gif │ │ │ │ └── unlocked.gif │ │ │ └── user.png │ │ │ ├── login_bg.jpg │ │ │ ├── login_bottom.jpg │ │ │ ├── login_top.gif │ │ │ ├── logo.png │ │ │ ├── lt_button_bg.gif │ │ │ ├── lt_button_l.gif │ │ │ ├── lt_button_r.gif │ │ │ ├── menu.png │ │ │ ├── menu │ │ │ ├── block_cap_h.gif │ │ │ ├── bottom_cap.png │ │ │ ├── bottom_cap_menu.png │ │ │ ├── bottom_cap_menu_first.png │ │ │ ├── menu_header_first_bg.gif │ │ │ ├── selected_block_cap.gif │ │ │ ├── top_cap.png │ │ │ └── top_cap_menu_header.png │ │ │ ├── menu_h.gif │ │ │ ├── menu_header.png │ │ │ ├── menu_open.png │ │ │ ├── menu_open_bg.gif │ │ │ ├── nav.png │ │ │ ├── nav │ │ │ └── on_bg.gif │ │ │ ├── nav_admin.gif │ │ │ ├── nav_admin_h.gif │ │ │ ├── nav_admin_on.gif │ │ │ ├── nav_cap.png │ │ │ ├── nav_cap_h.gif │ │ │ ├── nav_content_library.gif │ │ │ ├── nav_content_library_h.gif │ │ │ ├── nav_content_library_on.gif │ │ │ ├── nav_dash.gif │ │ │ ├── nav_dash_h.gif │ │ │ ├── nav_dash_on.gif │ │ │ ├── nav_h.gif │ │ │ ├── nav_sitemap.gif │ │ │ ├── nav_sitemap_h.gif │ │ │ ├── nav_sitemap_on.gif │ │ │ ├── page_toolbar │ │ │ ├── page_toolbar_bg.gif │ │ │ ├── page_toolbar_inset_bg.gif │ │ │ ├── page_toolbar_inset_draft_bg.gif │ │ │ ├── page_toolbar_inset_draft_l.gif │ │ │ ├── page_toolbar_inset_draft_r.gif │ │ │ ├── page_toolbar_inset_l.gif │ │ │ ├── page_toolbar_inset_published_bg.gif │ │ │ ├── page_toolbar_inset_published_l.gif │ │ │ ├── page_toolbar_inset_published_r.gif │ │ │ ├── page_toolbar_inset_r.gif │ │ │ ├── page_toolbar_l.gif │ │ │ ├── page_toolbar_r.gif │ │ │ ├── status_draft_bg.gif │ │ │ ├── status_draft_l.gif │ │ │ ├── status_l.gif │ │ │ ├── status_published_bg.gif │ │ │ ├── status_published_l.gif │ │ │ ├── visual_editor_bg.gif │ │ │ ├── visual_editor_end.gif │ │ │ ├── visual_editor_r.gif │ │ │ └── visual_editor_state_bg.gif │ │ │ ├── pages │ │ │ ├── add_connectable.gif │ │ │ ├── connect_connectable.gif │ │ │ ├── container_border.gif │ │ │ ├── container_border_l.gif │ │ │ ├── container_border_r.gif │ │ │ ├── delete_connectable.gif │ │ │ ├── down_connectable.gif │ │ │ ├── down_connectable_disabled.gif │ │ │ ├── edit_connectable.gif │ │ │ ├── edit_connectable_2.gif │ │ │ ├── show_connectable.gif │ │ │ ├── up_connectable.gif │ │ │ └── up_connectable_disabled.gif │ │ │ ├── pagination │ │ │ ├── first.gif │ │ │ ├── first_h.gif │ │ │ ├── input.gif │ │ │ ├── last.gif │ │ │ ├── last_h.gif │ │ │ ├── next.gif │ │ │ ├── next_h.gif │ │ │ ├── previous.gif │ │ │ └── previous_h.gif │ │ │ ├── pencil.png │ │ │ ├── plus.png │ │ │ ├── published_status.gif │ │ │ ├── search.png │ │ │ ├── search_submit.gif │ │ │ ├── search_submit_h.gif │ │ │ ├── searchbox_gradient.gif │ │ │ ├── select_bg.gif │ │ │ ├── select_bg_2.gif │ │ │ ├── sitemap │ │ │ ├── bottom_cap.png │ │ │ ├── buffer_caps.png │ │ │ ├── contract.png │ │ │ ├── corners.gif │ │ │ ├── corners_hover.gif │ │ │ ├── divider.gif │ │ │ ├── expand.png │ │ │ ├── gradient.gif │ │ │ ├── gray_contract.png │ │ │ ├── gray_expand.png │ │ │ ├── no_contents.png │ │ │ ├── site_root_cap.png │ │ │ ├── tooltip.gif │ │ │ └── top_cap_content.png │ │ │ ├── solid.gif │ │ │ ├── table │ │ │ ├── bl.gif │ │ │ ├── br.gif │ │ │ ├── divider.gif │ │ │ ├── td_cap_first_h.gif │ │ │ ├── td_cap_first_s.gif │ │ │ ├── td_cap_last_h.gif │ │ │ ├── td_cap_last_s.gif │ │ │ ├── td_last_bg.gif │ │ │ ├── th_bg.gif │ │ │ ├── th_divider.gif │ │ │ ├── th_last_bg.gif │ │ │ ├── tl.gif │ │ │ ├── tr.gif │ │ │ └── tr_bg.gif │ │ │ ├── toolbar_bg.png │ │ │ ├── top_cap.png │ │ │ ├── top_cap_content.png │ │ │ ├── top_cap_menu_header.png │ │ │ ├── user.png │ │ │ ├── user_search_submit.gif │ │ │ ├── usercontrols_bg.png │ │ │ └── usercontrols_bg_cap.png │ ├── javascripts │ │ ├── bcms │ │ │ ├── ckeditor.js │ │ │ ├── ckeditor_inline.js │ │ │ ├── ckeditor_load.js │ │ │ └── ckeditor_standard_config.js │ │ ├── ckeditor │ │ │ └── plugins │ │ │ │ ├── delete_content │ │ │ │ └── plugin.js │ │ │ │ ├── edit_content │ │ │ │ └── plugin.js │ │ │ │ └── move_content │ │ │ │ └── plugin.js │ │ ├── cms │ │ │ ├── ajax.js │ │ │ ├── application.js │ │ │ ├── attachment_manager.js │ │ │ ├── content_library.js │ │ │ ├── content_types.js │ │ │ ├── core_library.js.erb │ │ │ ├── form_builder.js │ │ │ ├── namespace.js │ │ │ ├── new_content_button.js │ │ │ ├── page_editor.js │ │ │ ├── page_toolbar.js │ │ │ ├── site.js │ │ │ ├── sitemap.js │ │ │ ├── toolbar.js │ │ │ └── user.js │ │ ├── jquery.exists.js │ │ └── jquery.taglist.js │ └── stylesheets │ │ └── cms │ │ ├── _assets.scss │ │ ├── _base.scss │ │ ├── _cms-buttons.scss │ │ ├── _cms-forms.scss │ │ ├── _colors.scss │ │ ├── _dashboard.scss │ │ ├── _glyph.scss │ │ ├── _main-area.scss │ │ ├── _nav.scss │ │ ├── _sidebar.scss │ │ ├── _sitemap.scss │ │ ├── _submenu.scss │ │ ├── application.scss │ │ ├── core.scss │ │ ├── default-forms.scss │ │ ├── includes │ │ ├── _animation.scss │ │ ├── _rem.scss │ │ └── animation │ │ │ ├── _animate.scss │ │ │ ├── _core.scss │ │ │ ├── _shared.scss │ │ │ └── animate │ │ │ ├── _attention-seekers.scss │ │ │ ├── _bouncing.scss │ │ │ ├── _classes.scss │ │ │ ├── _fading.scss │ │ │ ├── _flippers.scss │ │ │ ├── _lightspeed.scss │ │ │ ├── _rotating.scss │ │ │ ├── _specials.scss │ │ │ ├── bouncing │ │ │ ├── _bouncing-entrances.scss │ │ │ └── _bouncing-exits.scss │ │ │ ├── fading │ │ │ ├── _fading-entrances.scss │ │ │ └── _fading-exits.scss │ │ │ └── rotating │ │ │ ├── _rotating-entrances.scss │ │ │ └── _rotating-exits.scss │ │ ├── page_content_editing.scss │ │ ├── page_editor.scss │ │ ├── style.scss │ │ └── styles │ │ ├── _alerts.scss │ │ ├── _base-grid.scss │ │ ├── _buttons.scss │ │ ├── _dropdown.scss │ │ ├── _forms.scss │ │ ├── _glyph.scss │ │ ├── _images.scss │ │ ├── _lists.scss │ │ ├── _modal.scss │ │ ├── _progress.scss │ │ ├── _tables.scss │ │ └── _text.scss ├── controllers │ ├── cms │ │ ├── application_controller.rb │ │ ├── attachments_controller.rb │ │ ├── base_controller.rb │ │ ├── cache_controller.rb │ │ ├── categories_controller.rb │ │ ├── category_types_controller.rb │ │ ├── connectors_controller.rb │ │ ├── content_block_controller.rb │ │ ├── content_controller.rb │ │ ├── content_types_controller.rb │ │ ├── dashboard_controller.rb │ │ ├── dynamic_views_controller.rb │ │ ├── email_messages_controller.rb │ │ ├── file_blocks_controller.rb │ │ ├── form_entries_controller.rb │ │ ├── form_fields_controller.rb │ │ ├── forms_controller.rb │ │ ├── groups_controller.rb │ │ ├── home_controller.rb │ │ ├── html_blocks_controller.rb │ │ ├── image_blocks_controller.rb │ │ ├── inline_content_controller.rb │ │ ├── links_controller.rb │ │ ├── page_components_controller.rb │ │ ├── page_route_conditions_controller.rb │ │ ├── page_route_options_controller.rb │ │ ├── page_route_requirements_controller.rb │ │ ├── page_routes_controller.rb │ │ ├── pages_controller.rb │ │ ├── passwords_controller.rb │ │ ├── portlet_controller.rb │ │ ├── portlets_controller.rb │ │ ├── redirects_controller.rb │ │ ├── resource_controller.rb │ │ ├── routes_controller.rb │ │ ├── section_nodes_controller.rb │ │ ├── sections_controller.rb │ │ ├── sessions_controller.rb │ │ ├── sites │ │ │ ├── passwords_controller.rb │ │ │ └── sessions_controller.rb │ │ ├── tags_controller.rb │ │ ├── tasks_controller.rb │ │ ├── toolbar_controller.rb │ │ ├── user_controller.rb │ │ └── users_controller.rb │ └── tests │ │ └── pretend_controller.rb ├── helpers │ ├── cms │ │ ├── application_helper.rb │ │ ├── content_block_helper.rb │ │ ├── content_types_helper.rb │ │ ├── form_tag_helper.rb │ │ ├── menu_helper.rb │ │ ├── mobile_helper.rb │ │ ├── nav_menu_helper.rb │ │ ├── page_helper.rb │ │ ├── path_helper.rb │ │ ├── rendering_helper.rb │ │ ├── section_nodes_helper.rb │ │ ├── sites │ │ │ ├── authentication_helper.rb │ │ │ └── devise_shim_helper.rb │ │ ├── template_support.rb │ │ └── ui_elements_helper.rb │ ├── forgot_password_portlet_helper.rb │ └── login_portlet_helper.rb ├── inputs │ ├── attachments_input.rb │ ├── cms_text_area_input.rb │ ├── date_picker_input.rb │ ├── file_picker_input.rb │ ├── name_input.rb │ ├── path_input.rb │ ├── tag_list_input.rb │ ├── template_editor_input.rb │ └── text_editor_input.rb ├── models │ └── cms │ │ ├── abstract_file_block.rb │ │ ├── attachment.rb │ │ ├── category.rb │ │ ├── category_type.rb │ │ ├── connector.rb │ │ ├── content.rb │ │ ├── content_type.rb │ │ ├── dynamic_view.rb │ │ ├── email_message.rb │ │ ├── email_message_mailer.rb │ │ ├── external_user.rb │ │ ├── file_block.rb │ │ ├── form.rb │ │ ├── form_entry.rb │ │ ├── form_field.rb │ │ ├── group.rb │ │ ├── group_permission.rb │ │ ├── group_section.rb │ │ ├── group_type.rb │ │ ├── group_type_permission.rb │ │ ├── guest_user.rb │ │ ├── html_block.rb │ │ ├── image_block.rb │ │ ├── link.rb │ │ ├── page.rb │ │ ├── page_component.rb │ │ ├── page_partial.rb │ │ ├── page_route.rb │ │ ├── page_route_condition.rb │ │ ├── page_route_option.rb │ │ ├── page_route_requirement.rb │ │ ├── page_template.rb │ │ ├── permission.rb │ │ ├── persistent_user.rb │ │ ├── portlet.rb │ │ ├── redirect.rb │ │ ├── search_filter.rb │ │ ├── section.rb │ │ ├── section_node.rb │ │ ├── site.rb │ │ ├── tag.rb │ │ ├── tagging.rb │ │ ├── task.rb │ │ ├── templates.rb │ │ ├── user.rb │ │ ├── user_group_membership.rb │ │ └── view_context.rb ├── portlets │ ├── deprecated_placeholder.rb │ ├── dynamic_portlet.rb │ ├── email_page_portlet.rb │ ├── forgot_password_portlet.rb │ ├── helpers │ │ └── cms │ │ │ └── list_portlet_helper.rb │ ├── list_portlet.rb │ ├── login_portlet.rb │ └── tag_cloud_portlet.rb ├── presenters │ └── cms │ │ └── user_presenter.rb └── views │ ├── cms │ ├── application │ │ ├── _add_content_modal.html.erb │ │ ├── _buttons.html.erb │ │ ├── _exception.html.erb │ │ ├── _form_errors.html.erb │ │ ├── _form_with_buttons.html.erb │ │ ├── _main_content.html.erb │ │ ├── _main_with_sidebar.html.erb │ │ ├── _mobile_toolbar.html.erb │ │ ├── _page_title.html.erb │ │ ├── _pagination.html.erb │ │ ├── _row.html.erb │ │ ├── _save_buttons.html.erb │ │ ├── _sidebar_layout.html.erb │ │ ├── _version.html.erb │ │ ├── _version_conflict_diff.html.erb │ │ └── _version_conflict_error.html.erb │ ├── attachments │ │ ├── _attachment.html.erb │ │ ├── _attachment_manager.html.erb │ │ ├── _attachment_table.html.erb │ │ ├── _attachment_wrapper.html.erb │ │ └── _no_attachments_defined.html.erb │ ├── cache │ │ └── show.html.erb │ ├── categories │ │ └── _form.html.erb │ ├── category_types │ │ └── _form.html.erb │ ├── connectors │ │ └── new.html.erb │ ├── content │ │ ├── editing_frame.html.erb │ │ ├── no_page.html.erb │ │ └── show.html.erb │ ├── content_block │ │ ├── _block_form.html.erb │ │ ├── _buttonbar.html.erb │ │ ├── _buttons.html.erb │ │ ├── _hidden_fields.html.erb │ │ ├── _sidebar.html.erb │ │ ├── edit.html.erb │ │ ├── index.html.erb │ │ ├── new.html.erb │ │ ├── render_block_in_main_container.html.erb │ │ ├── show.html.erb │ │ ├── show_in_isolation.html.erb │ │ └── versions.html.erb │ ├── content_types │ │ ├── _order_field.html.erb │ │ └── index.html.erb │ ├── dashboard │ │ ├── _page_drafts.html.erb │ │ ├── _tasks.html.erb │ │ └── index.html.erb │ ├── dynamic_views │ │ ├── _form.html.erb │ │ ├── edit.html.erb │ │ ├── index.html.erb │ │ └── new.html.erb │ ├── email_messages │ │ ├── index.html.erb │ │ └── show.html.erb │ ├── file_blocks │ │ ├── _form.html.erb │ │ ├── _section_selector.html.erb │ │ └── render.html.erb │ ├── forgot_password_mailer │ │ ├── reset_password.text.html.erb │ │ └── reset_password.text.plain.erb │ ├── form_entries │ │ ├── _buttons.html.erb │ │ ├── _form.html.erb │ │ ├── _internal_form.html.erb │ │ ├── edit.html.erb │ │ ├── error.html.erb │ │ ├── index.html.erb │ │ ├── new.html.erb │ │ ├── show.html.erb │ │ └── submit.html.erb │ ├── form_fields │ │ ├── _form.html.erb │ │ ├── _select.html.erb │ │ ├── _text_area.html.erb │ │ ├── _text_field.html.erb │ │ ├── edit.html.erb │ │ ├── new.html.erb │ │ └── preview.html.erb │ ├── forms │ │ ├── _form.html.erb │ │ ├── render.html.erb │ │ └── show.html.erb │ ├── groups │ │ ├── _form.html.erb │ │ ├── _permissions.html.erb │ │ ├── _sections.html.erb │ │ ├── edit.html.erb │ │ ├── index.html.erb │ │ └── new.html.erb │ ├── html_blocks │ │ ├── _form.html.erb │ │ └── render.html.erb │ ├── image_blocks │ │ ├── _form.html.erb │ │ └── render.html.erb │ ├── links │ │ ├── _form.html.erb │ │ ├── edit.html.erb │ │ └── new.html.erb │ ├── menus │ │ ├── _menu.html.erb │ │ └── _menu_item.html.erb │ ├── page_components │ │ ├── _content.html.erb │ │ └── new.html.erb │ ├── page_routes │ │ ├── _form.html.erb │ │ ├── edit.html.erb │ │ ├── index.html.erb │ │ └── new.html.erb │ ├── pages │ │ ├── _edit_content.html.erb │ │ ├── _form.html.erb │ │ ├── _main_form.html.erb │ │ ├── _simple_container.html.erb │ │ ├── edit.html.erb │ │ ├── new.html.erb │ │ └── versions.html.erb │ ├── passwords │ │ └── new.html.erb │ ├── redirects │ │ ├── _form.html.erb │ │ ├── edit.html.erb │ │ ├── index.html.erb │ │ └── new.html.erb │ ├── routes │ │ └── index.html.erb │ ├── section_nodes │ │ ├── _children.html.erb │ │ ├── _row_buttons.html.erb │ │ ├── _section_node.html.erb │ │ ├── _sitemap_buttons.html.erb │ │ ├── _status.html.erb │ │ └── show.html.erb │ ├── sections │ │ ├── _buttons.html.erb │ │ ├── _form.html.erb │ │ ├── edit.html.erb │ │ └── new.html.erb │ ├── sessions │ │ └── new.html.erb │ ├── shared │ │ ├── access_denied.html.erb │ │ ├── error.html.erb │ │ └── error.xml.erb │ ├── sites │ │ ├── _flash.html.erb │ │ ├── passwords │ │ │ └── new.html.erb │ │ └── sessions │ │ │ └── new.html.erb │ ├── tags │ │ ├── _form.html.erb │ │ └── render.html.erb │ ├── tasks │ │ └── new.html.erb │ ├── toolbar │ │ └── _new_pages_menu.html.erb │ └── users │ │ ├── _form.html.erb │ │ ├── _password.html.erb │ │ ├── _user_fields.html.erb │ │ ├── change_password.html.erb │ │ ├── edit.html.erb │ │ ├── index.html.erb │ │ └── new.html.erb │ ├── devise │ ├── confirmations │ │ └── new.html.erb │ ├── mailer │ │ ├── confirmation_instructions.html.erb │ │ ├── reset_password_instructions.html.erb │ │ └── unlock_instructions.html.erb │ ├── passwords │ │ ├── edit.html.erb │ │ └── new.html.erb │ ├── registrations │ │ ├── edit.html.erb │ │ └── new.html.erb │ ├── shared │ │ └── _links.erb │ └── unlocks │ │ └── new.html.erb │ ├── layouts │ └── cms │ │ ├── _content_types.html.erb │ │ ├── _footer.erb │ │ ├── _head.html.erb │ │ ├── _main_menu.html.erb │ │ ├── application.html.erb │ │ ├── content_page.html.erb │ │ └── page_editor.html.erb │ ├── portlets │ ├── deprecated_placeholders │ │ ├── _form.html.erb │ │ └── render.html.erb │ ├── dynamic │ │ └── _form.html.erb │ ├── email_page │ │ ├── _form.html.erb │ │ └── render.html.erb │ ├── forgot_password │ │ ├── _form.html.erb │ │ └── render.html.erb │ ├── list │ │ ├── _form.html.erb │ │ ├── _list.html.erb │ │ ├── _table.html.erb │ │ └── render.html.erb │ ├── login │ │ ├── _form.html.erb │ │ └── render.html.erb │ ├── portlets │ │ └── _form.html.erb │ └── tag_cloud │ │ ├── _form.html.erb │ │ └── render.html.erb │ └── tests │ └── pretend │ └── open_with_layout.html.erb ├── bin ├── bcms └── browsercms ├── browsercms.gemspec ├── config ├── cucumber.yml ├── locales │ ├── devise.en.yml │ ├── en.yml │ └── simple_form.en.yml └── routes.rb ├── db ├── browsercms.seeds.rb ├── migrate │ ├── 20080815014337_browsercms300.rb │ └── 20130327184912_browsercms400.rb └── seeds.rb ├── doc ├── README_FOR_APP ├── design │ ├── blue_button.psd │ ├── gray_box.psd │ └── main_nav.psd ├── features │ ├── design_integration.md │ ├── external_user.md │ ├── form_builder.md │ └── simple_form_refactor.md ├── performance_tuning_notes.md ├── release_notes.md └── test_procedure.txt ├── features ├── acts_as_content_page.feature ├── add_content_to_pages.feature ├── authentication │ ├── external_users.feature │ ├── manage_users.feature │ └── user_self_service.feature ├── caching.feature ├── ckeditor.feature ├── commands │ ├── confirm_aruba_works.feature │ ├── generate_module.feature │ ├── install_browsercms.feature │ ├── new_demo_project.feature │ └── new_projects.feature ├── content_blocks │ ├── add_images.feature │ ├── deprecated_form_inputs.feature │ ├── file_blocks.feature │ ├── form_controls.feature │ ├── forms.feature │ ├── manage_custom_blocks.feature │ ├── manage_html_blocks.feature │ ├── manage_images.feature │ ├── manage_pages.feature │ └── multiple_attachments.feature ├── content_files.feature ├── content_pages.feature ├── email_messages.feature ├── generators │ ├── attachments.feature │ ├── content_blocks_for_modules.feature │ ├── content_blocks_for_projects.feature │ ├── portlets.feature │ └── templates.feature ├── install_content.feature ├── jquery-testplan.txt ├── manage_groups.feature ├── manage_page_routes.feature ├── manage_redirects.feature ├── manage_sections.feature ├── manage_tasks.feature ├── mobile_templates.feature ├── navigation_menu │ └── new_button.feature ├── page_routes.feature ├── page_templates.feature ├── portlets │ ├── email_friend_portlet.feature │ ├── portlet_helpers.feature │ ├── portlets.feature │ ├── portlets_with_params.feature │ └── tag_cloud_portlet.feature ├── sitemap │ ├── manage_links.feature │ ├── pages.feature │ └── sitemap.feature ├── step_definitions │ ├── .gitkeep │ ├── cms_steps.rb │ ├── command_line_steps.rb │ ├── content_pages_steps.rb │ ├── data_steps.rb │ ├── deprecated.rb │ ├── edit_page_templates_steps.rb │ ├── form_control_steps.rb │ ├── html_blocks_steps.rb │ ├── image_steps.rb │ ├── manage_content_blocks_steps.rb │ ├── manage_sections_steps.rb │ ├── mobile_steps.rb │ ├── more_custom_block_steps.rb │ ├── new_button_steps.rb │ ├── page_route_steps.rb │ ├── page_template_steps.rb │ ├── permissions_steps.rb │ ├── portlets_steps.rb │ ├── redirect_steps.rb │ ├── sitemap_steps.rb │ ├── tag_cloud_steps.rb │ ├── task_steps.rb │ ├── taxonomy_steps.rb │ ├── upgrade_module_steps.rb │ ├── user_steps.rb │ └── web_steps.rb ├── support │ ├── async_support.rb │ ├── capybara_rails_links.rb │ ├── cms_api.rb │ ├── command_line_helpers.rb │ ├── debug_formatter.rb │ ├── env.rb │ ├── factories.rb │ ├── file_operations.rb │ ├── git_api.rb │ ├── long_scenarios.rb │ ├── minitest.rb │ ├── minitest_disable.rb │ ├── mobile_user_agents.rb │ ├── open_on_first_failure.rb │ ├── page_caching_support.rb │ ├── page_inspector.rb │ ├── paths.rb │ ├── rails_api.rb │ ├── selectors.rb │ ├── slowest_scenarios.rb │ └── transforms.rb └── taxonomy │ ├── add_content_with_category.feature │ ├── manage_categories.feature │ ├── manage_category_types.feature │ └── tags.feature ├── gemfilebck.lock ├── lib ├── acts_as_list.rb ├── browsercms.rb ├── cms │ ├── acts.rb │ ├── acts │ │ ├── cms_user.rb │ │ ├── content_block.rb │ │ └── content_page.rb │ ├── admin_tab.rb │ ├── attachments │ │ ├── attachment_serving.rb │ │ └── configuration.rb │ ├── authentication.rb │ ├── authentication │ │ ├── controller.rb │ │ └── test_password_strategy.rb │ ├── authoring.rb │ ├── behaviors.rb │ ├── behaviors │ │ ├── archiving.rb │ │ ├── attaching.rb │ │ ├── categorizing.rb │ │ ├── connecting.rb │ │ ├── dynamic_attributes.rb │ │ ├── flush_cache_on_change.rb │ │ ├── hiding.rb │ │ ├── namespacing.rb │ │ ├── naming.rb │ │ ├── publishing.rb │ │ ├── rendering.rb │ │ ├── searching.rb │ │ ├── soft_deleting.rb │ │ ├── taggable.rb │ │ ├── userstamping.rb │ │ └── versioning.rb │ ├── caching.rb │ ├── commands │ │ ├── actions.rb │ │ └── to_version400.rb │ ├── concerns.rb │ ├── concerns │ │ ├── can_be_addressable.rb │ │ ├── has_content_type.rb │ │ └── ignores_publishing.rb │ ├── configuration.rb │ ├── configuration │ │ ├── configurable_template.rb │ │ └── devise.rb │ ├── configure_simple_form.rb │ ├── configure_simple_form_bootstrap.rb │ ├── content_filter.rb │ ├── content_page.rb │ ├── content_rendering_support.rb │ ├── controllers │ │ └── admin_controller.rb │ ├── data_loader.rb │ ├── date_picker.rb │ ├── default_accessible.rb │ ├── domain_support.rb │ ├── engine.rb │ ├── engine_helper.rb │ ├── error_handling.rb │ ├── error_pages.rb │ ├── extensions.rb │ ├── extensions │ │ ├── action_view │ │ │ └── base.rb │ │ ├── active_model │ │ │ └── name.rb │ │ ├── active_record │ │ │ ├── base.rb │ │ │ ├── connection_adapters │ │ │ │ └── abstract │ │ │ │ │ └── schema_statements.rb │ │ │ └── errors.rb │ │ ├── active_support │ │ │ └── cache │ │ │ │ └── file_store.rb │ │ ├── hash.rb │ │ ├── integer.rb │ │ ├── nil.rb │ │ └── string.rb │ ├── form_builder │ │ ├── content_block_form_builder.rb │ │ ├── default_input.rb │ │ ├── deprecated_inputs.rb │ │ └── workflow_buttons.rb │ ├── installation_actions.rb │ ├── mobile_aware.rb │ ├── module.rb │ ├── module_installation.rb │ ├── polymorphic_single_table_inheritance.rb │ ├── publish_workflow.rb │ ├── responders │ │ └── content_responder.rb │ ├── route_extensions.rb │ └── version.rb ├── command_line.rb ├── generators │ ├── browser_cms.rb │ ├── browser_cms │ │ └── demo_site │ │ │ ├── USAGE │ │ │ └── templates │ │ │ ├── demo.seeds.rb │ │ │ ├── demo_site.rake │ │ │ ├── logo.jpg │ │ │ ├── splash.jpg │ │ │ └── style.css │ └── cms │ │ ├── content_block │ │ ├── USAGE │ │ ├── content_block_generator.rb │ │ └── templates │ │ │ ├── _form.html.erb │ │ │ ├── application_controller.rb.erb │ │ │ └── render.html.erb │ │ ├── install │ │ ├── USAGE │ │ └── install_generator.rb │ │ ├── portlet │ │ ├── USAGE │ │ ├── portlet_generator.rb │ │ └── templates │ │ │ ├── _form.html.erb │ │ │ ├── portlet.rb │ │ │ ├── portlet_helper.rb │ │ │ ├── render.html.erb │ │ │ └── unit_test.erb │ │ ├── project │ │ ├── USAGE │ │ └── templates │ │ │ ├── COPYRIGHT.txt │ │ │ ├── GPL.txt │ │ │ ├── LICENSE.txt │ │ │ ├── USAGE │ │ │ ├── devise.rb.erb │ │ │ ├── gitignore.erb │ │ │ ├── install_generator.erb │ │ │ └── module_tasks.rake │ │ └── template │ │ ├── USAGE │ │ ├── template_generator.rb │ │ └── templates │ │ └── template.erb ├── sequence.rb ├── tasks │ ├── cms.rake │ ├── core_tasks.rake │ ├── cucumber.rake │ ├── cucumberrake.txt │ └── data.rake └── templates │ └── active_record │ └── model │ └── model.rb ├── script ├── cucumber └── rails ├── spec ├── cms │ ├── authentication │ │ └── test_password_strategy.rb │ ├── content_page_spec.rb │ ├── content_type_spec.rb │ ├── email_message_spec.rb │ ├── external_user_spec.rb │ ├── form_entry_spec.rb │ ├── form_fields_spec.rb │ ├── form_spec.rb │ ├── presenters │ │ └── user_presenter_spec.rb │ └── user_spec.rb ├── concerns │ └── addressable_spec.rb ├── dummy │ └── product_mini_test.rb ├── inputs │ └── name_input_spec.rb └── minitest_helper.rb ├── test ├── assumptions_test.rb ├── console_helper.rb ├── custom_assertions.rb ├── dummy │ ├── Rakefile │ ├── app │ │ ├── assets │ │ │ ├── javascripts │ │ │ │ ├── application.js │ │ │ │ ├── cms │ │ │ │ │ └── catalogs.js │ │ │ │ └── design.js │ │ │ └── stylesheets │ │ │ │ ├── application.css │ │ │ │ ├── custom-forms.css.scss │ │ │ │ └── theme.css │ │ ├── controllers │ │ │ ├── application_controller.rb │ │ │ ├── content_page_controller.rb │ │ │ ├── design_controller.rb │ │ │ └── dummy │ │ │ │ ├── catalogs_controller.rb │ │ │ │ ├── deprecated_inputs_controller.rb │ │ │ │ ├── products_controller.rb │ │ │ │ └── sample_blocks_controller.rb │ │ ├── helpers │ │ │ ├── application_helper.rb │ │ │ ├── cms │ │ │ │ └── catalogs_helper.rb │ │ │ ├── content_page_helper.rb │ │ │ └── design_helper.rb │ │ ├── mailers │ │ │ └── .gitkeep │ │ ├── models │ │ │ └── dummy │ │ │ │ ├── catalog.rb │ │ │ │ ├── deprecated_input.rb │ │ │ │ ├── product.rb │ │ │ │ └── sample_block.rb │ │ ├── portlets │ │ │ ├── aaa_portlet.rb │ │ │ ├── find_category_portlet.rb │ │ │ ├── helpers │ │ │ │ ├── find_category_portlet_helper.rb │ │ │ │ └── uses_helper_portlet_helper.rb │ │ │ ├── product_catalog_portlet.rb │ │ │ └── uses_helper_portlet.rb │ │ └── views │ │ │ ├── content_page │ │ │ ├── custom_page.html.erb │ │ │ └── index.html.erb │ │ │ ├── design │ │ │ ├── add-new-page.html.erb │ │ │ ├── assets.html.erb │ │ │ ├── dashboard.html.erb │ │ │ ├── modal.html.erb │ │ │ ├── sitemap.html.erb │ │ │ └── submenu.html.erb │ │ │ ├── devise_tests │ │ │ └── show.html.erb │ │ │ ├── dummy │ │ │ ├── catalogs │ │ │ │ ├── _form.html.erb │ │ │ │ └── render.html.erb │ │ │ ├── deprecated_inputs │ │ │ │ ├── _form.html.erb │ │ │ │ └── render.html.erb │ │ │ └── products │ │ │ │ ├── _form.html.erb │ │ │ │ ├── render.html.erb │ │ │ │ └── view.html.erb │ │ │ ├── layouts │ │ │ ├── application.html.erb │ │ │ ├── design_layout.html.erb │ │ │ ├── mobile │ │ │ │ └── mobile-ready.html.erb │ │ │ └── templates │ │ │ │ ├── default.html.erb │ │ │ │ ├── desktop-only.html.erb │ │ │ │ ├── homepage.html.erb │ │ │ │ ├── mobile-ready.html.erb │ │ │ │ ├── product.html.erb │ │ │ │ └── subpage.html.erb │ │ │ ├── partials │ │ │ ├── _footer.html.erb │ │ │ └── _header.html.erb │ │ │ ├── portlets │ │ │ ├── find_category │ │ │ │ ├── _form.html.erb │ │ │ │ └── render.html.erb │ │ │ ├── list │ │ │ │ └── all_products │ │ │ │ │ └── _list.html.erb │ │ │ ├── product_catalog │ │ │ │ ├── _form.html.erb │ │ │ │ └── render.html.erb │ │ │ └── uses_helper │ │ │ │ ├── _form.html.erb │ │ │ │ └── render.html.erb │ │ │ └── test_route │ │ │ └── index.html.erb │ ├── config.ru │ ├── config │ │ ├── application.rb │ │ ├── boot.rb │ │ ├── database.jdbcmysql.yml │ │ ├── database.mysql.yml │ │ ├── database.postgres.yml │ │ ├── database.sqlite3.yml │ │ ├── environment.rb │ │ ├── environments │ │ │ ├── development.rb │ │ │ ├── production.rb │ │ │ └── test.rb │ │ ├── initializers │ │ │ ├── backtrace_silencers.rb │ │ │ ├── devise.rb │ │ │ ├── inflections.rb │ │ │ ├── mime_types.rb │ │ │ ├── secret_token.rb │ │ │ ├── session_store.rb │ │ │ └── wrap_parameters.rb │ │ └── routes.rb │ ├── db │ │ ├── migrate │ │ │ ├── 20111228141250_create_products.rb │ │ │ ├── 20120419183855_create_catalogs.rb │ │ │ └── 20130924162315_create_deprecated_inputs.rb │ │ ├── schema.rb │ │ └── seeds.rb │ ├── lib │ │ ├── assets │ │ │ └── .gitkeep │ │ └── templates │ │ │ └── erb │ │ │ └── scaffold │ │ │ └── _form.html.erb │ ├── public │ │ ├── 404.html │ │ ├── 422.html │ │ ├── 500.html │ │ ├── design │ │ │ ├── FONTS │ │ │ │ ├── icomoon (Brookes-MacBook-Pro-Home's conflicted copy 2013-10-15).eot │ │ │ │ ├── icomoon (Brookes-MacBook-Pro-Home's conflicted copy 2013-10-15).ttf │ │ │ │ ├── icomoon (Brookes-MacBook-Pro-Home's conflicted copy 2013-10-15).woff │ │ │ │ ├── icomoon.dev.svg │ │ │ │ ├── icomoon.eot │ │ │ │ ├── icomoon.svg │ │ │ │ ├── icomoon.ttf │ │ │ │ └── icomoon.woff │ │ │ ├── IMG │ │ │ │ ├── logo.png │ │ │ │ └── search.png │ │ │ ├── JS │ │ │ │ ├── bootstrap-dropdown.js │ │ │ │ ├── bootstrap.min.js │ │ │ │ ├── css3-mediaqueries.js │ │ │ │ ├── headload.js │ │ │ │ ├── html5shiv.js │ │ │ │ ├── infieldLabel.js │ │ │ │ └── selectivizr.js │ │ │ └── config.rb │ │ └── favicon.ico │ ├── script │ │ └── rails │ └── test │ │ ├── controllers │ │ └── design_controller_test.rb │ │ ├── functional │ │ ├── cms │ │ │ └── catalogs_controller_test.rb │ │ └── content_page_controller_test.rb │ │ ├── helpers │ │ └── design_helper_test.rb │ │ ├── models │ │ └── deprecated_input_test.rb │ │ └── unit │ │ ├── helpers │ │ └── content_page_helper_test.rb │ │ └── portlets │ │ ├── find_category_portlet_test.rb │ │ └── uses_helper_portlet_test.rb ├── factories │ ├── attachable_factories.rb │ └── factories.rb ├── fixtures │ ├── giraffe.jpeg │ ├── hurricane.jpeg │ ├── multipart │ │ ├── foo.jpg │ │ ├── sample_upload.txt │ │ ├── second_upload.txt │ │ ├── test.jpg │ │ ├── version1.txt │ │ └── version2.txt │ └── perspective.pdf ├── functional │ └── cms │ │ ├── cache_controller_test.rb │ │ ├── content_block_controller_test.rb │ │ ├── content_controller_test.rb │ │ ├── file_blocks_controller_test.rb │ │ ├── home_controller_test.rb │ │ ├── html_blocks_controller_test.rb │ │ ├── inline_controller_test.rb │ │ ├── links_controller_test.rb │ │ ├── log │ │ └── test.log │ │ ├── pages_controller_test.rb │ │ ├── sections_controller_test.rb │ │ └── tasks_controller_test.rb ├── helpers │ └── cms │ │ └── content_types_helper_test.rb ├── minitest_helper.rb ├── mock_file.rb ├── support │ ├── database_helpers.rb │ ├── engine_controller_hacks.rb │ ├── factory_helpers.rb │ └── mini_test_matchers.rb ├── test_helper.rb ├── test_logging.rb └── unit │ ├── active_record_callbacks.rb │ ├── behaviors │ ├── attaching_test.rb │ ├── attaching_version_history_test.rb │ ├── cms_user_test.rb │ ├── connectable_test.rb │ ├── connecting_test.rb │ ├── content_api_test.rb │ ├── dynamic_attributes_test.rb │ ├── mercury_editor_test.rb │ ├── naming_test.rb │ ├── publishable_test.rb │ ├── publishing_mini_test.rb │ ├── rendering_test.rb │ ├── searching_test.rb │ ├── taggable_test.rb │ ├── userstamping_test.rb │ └── versioning_test.rb │ ├── extensions │ ├── active_record │ │ └── base_test.rb │ ├── hash_test.rb │ ├── integer_test.rb │ └── string_test.rb │ ├── factories_test.rb │ ├── generators │ └── install_generator_test.rb │ ├── helpers │ ├── application_helper_test.rb │ ├── date_picker_test.rb │ ├── menu_helper_test.rb │ ├── page_helper_test.rb │ └── rendering_helper_test.rb │ ├── lib │ ├── acts_as_content_page_test.rb │ ├── cms │ │ ├── commands_actions_test.rb │ │ ├── content_filter_test.rb │ │ ├── data_loader_test.rb │ │ ├── default_accessible_test.rb │ │ ├── domain_support_test.rb │ │ ├── engine_configuration_test.rb │ │ ├── engine_helper_test.rb │ │ ├── i18n_test.rb │ │ ├── page_components_test.rb │ │ └── sitemap_test.rb │ ├── cms_domain_support_test.rb │ ├── command_line_test.rb │ ├── content_block_test.rb │ ├── content_rendering_support_test.rb │ └── routes_extensions_test.rb │ ├── mock_file_test.rb │ ├── models │ ├── attachment_test.rb │ ├── category_test.rb │ ├── category_type_test.rb │ ├── connector_test.rb │ ├── content_test.rb │ ├── content_type_test.rb │ ├── dynamic_views_test.rb │ ├── email_page_portlet_test.rb │ ├── file_block_test.rb │ ├── group_test.rb │ ├── html_block_test.rb │ ├── image_block_test.rb │ ├── link_test.rb │ ├── namespaces_test.rb │ ├── page_mini_test.rb │ ├── page_partial_test.rb │ ├── page_route_test.rb │ ├── page_template_test.rb │ ├── page_test.rb │ ├── permission_test.rb │ ├── portlet_test.rb │ ├── sections_test.rb │ ├── site_test.rb │ ├── task_test.rb │ └── user_test.rb │ ├── portlets │ └── list_portlet_test.rb │ └── schema_statements_test.rb └── vendor └── assets └── javascripts ├── jquery.cookie.js └── jquery.selectbox.js /.ruby-gemset: -------------------------------------------------------------------------------- 1 | browsercms 2 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: ruby 2 | rvm: 3 | - "2.3.0" 4 | # - "1.9.2" 5 | # uncomment this line if your project needs to run something other than `rake`: 6 | # script: bundle exec rspec spec 7 | before_script: 8 | - mysql -e 'create database browsercms_test;' -------------------------------------------------------------------------------- /.yardopts: -------------------------------------------------------------------------------- 1 | --no-private 2 | --exclude lib/generators/cms/portlet/templates/* 3 | --exclude lib/generators/cms/content_block/templates/* 4 | app/**/*.rb 5 | lib/**/*.rb -------------------------------------------------------------------------------- /app/assets/fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/fonts/icomoon.eot -------------------------------------------------------------------------------- /app/assets/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/fonts/icomoon.ttf -------------------------------------------------------------------------------- /app/assets/fonts/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/fonts/icomoon.woff -------------------------------------------------------------------------------- /app/assets/images/ckeditor/plugins/delete_content/icons/deletecontent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/ckeditor/plugins/delete_content/icons/deletecontent.png -------------------------------------------------------------------------------- /app/assets/images/ckeditor/plugins/edit_content/icons/editcontent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/ckeditor/plugins/edit_content/icons/editcontent.png -------------------------------------------------------------------------------- /app/assets/images/ckeditor/plugins/move_content/icons/movecontentdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/ckeditor/plugins/move_content/icons/movecontentdown.png -------------------------------------------------------------------------------- /app/assets/images/ckeditor/plugins/move_content/icons/movecontentup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/ckeditor/plugins/move_content/icons/movecontentup.png -------------------------------------------------------------------------------- /app/assets/images/cms/administration/user_browser_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/administration/user_browser_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/arrow-down.png -------------------------------------------------------------------------------- /app/assets/images/cms/arrow-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/arrow-up.png -------------------------------------------------------------------------------- /app/assets/images/cms/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/bg.png -------------------------------------------------------------------------------- /app/assets/images/cms/bl_curve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/bl_curve.png -------------------------------------------------------------------------------- /app/assets/images/cms/bottom_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/bottom_cap.png -------------------------------------------------------------------------------- /app/assets/images/cms/bottom_cap_content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/bottom_cap_content.png -------------------------------------------------------------------------------- /app/assets/images/cms/browse.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/browse.gif -------------------------------------------------------------------------------- /app/assets/images/cms/browser_media_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/browser_media_logo.png -------------------------------------------------------------------------------- /app/assets/images/cms/browsercms_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/browsercms_logo.png -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/button.png -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/button_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/button_bg.png -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/button_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/button_cap.png -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/button_cap_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/button_cap_h.png -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/button_cap_off.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/button_cap_off.gif -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/button_cap_off_middle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/button_cap_off_middle.gif -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/button_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/button_h.png -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/button_left_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/button_left_bg.png -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/button_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/button_off.png -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/button_off_middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/button_off_middle.png -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/delete_x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/delete_x.png -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/delete_x_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/delete_x_disabled.png -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/delete_x_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/delete_x_h.png -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/sm_button.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/sm_button.gif -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/sm_button_2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/sm_button_2.gif -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/sm_button_2_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/sm_button_2_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/buttons/sm_button_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/buttons/sm_button_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/cogs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/cogs.png -------------------------------------------------------------------------------- /app/assets/images/cms/containers/add.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/containers/add.gif -------------------------------------------------------------------------------- /app/assets/images/cms/containers/alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/containers/alpha.png -------------------------------------------------------------------------------- /app/assets/images/cms/containers/beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/containers/beta.png -------------------------------------------------------------------------------- /app/assets/images/cms/containers/delete.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/containers/delete.gif -------------------------------------------------------------------------------- /app/assets/images/cms/containers/down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/containers/down.gif -------------------------------------------------------------------------------- /app/assets/images/cms/containers/edit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/containers/edit.gif -------------------------------------------------------------------------------- /app/assets/images/cms/containers/up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/containers/up.gif -------------------------------------------------------------------------------- /app/assets/images/cms/containers/view.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/containers/view.gif -------------------------------------------------------------------------------- /app/assets/images/cms/content_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/content_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/dashboard/bottom_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/dashboard/bottom_cap.png -------------------------------------------------------------------------------- /app/assets/images/cms/dashboard/bottom_cap_content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/dashboard/bottom_cap_content.png -------------------------------------------------------------------------------- /app/assets/images/cms/dashboard/header_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/dashboard/header_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/dashboard/header_left_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/dashboard/header_left_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/dashboard/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/dashboard/home.png -------------------------------------------------------------------------------- /app/assets/images/cms/dashboard/table_header_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/dashboard/table_header_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/dashboard/top_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/dashboard/top_cap.png -------------------------------------------------------------------------------- /app/assets/images/cms/dashed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/dashed.gif -------------------------------------------------------------------------------- /app/assets/images/cms/datepicker/clear.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/datepicker/clear.gif -------------------------------------------------------------------------------- /app/assets/images/cms/datepicker/close.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/datepicker/close.gif -------------------------------------------------------------------------------- /app/assets/images/cms/dk_button_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/dk_button_l.gif -------------------------------------------------------------------------------- /app/assets/images/cms/dk_button_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/dk_button_r.gif -------------------------------------------------------------------------------- /app/assets/images/cms/dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/dot.png -------------------------------------------------------------------------------- /app/assets/images/cms/draft_status.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/draft_status.gif -------------------------------------------------------------------------------- /app/assets/images/cms/file-uploading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/file-uploading.gif -------------------------------------------------------------------------------- /app/assets/images/cms/gray_long_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/gray_long_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/home.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/add.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/config.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/connect.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/delete.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/down.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/edit.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/folder.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/folder_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/folder_add.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/folder_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/folder_delete.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/folder_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/folder_edit.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/folder_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/folder_move.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/folder_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/folder_open.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/history.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/home.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/left.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/link.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/page.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/page_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/page_add.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/page_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/page_edit.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/page_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/page_move.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/redo.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/refresh.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/right.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/root_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/root_folder.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/root_link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/root_link.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/root_page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/root_page.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/undo.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/up.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/actions/view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/actions/view.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/file_types/doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/file_types/doc.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/file_types/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/file_types/file.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/file_types/gif.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/file_types/gif.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/file_types/htm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/file_types/htm.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/file_types/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/file_types/pdf.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/file_types/ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/file_types/ppt.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/file_types/swf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/file_types/swf.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/file_types/txt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/file_types/txt.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/file_types/xls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/file_types/xls.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/file_types/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/file_types/xml.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/file_types/zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/file_types/zip.png -------------------------------------------------------------------------------- /app/assets/images/cms/icons/status/archived.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/status/archived.gif -------------------------------------------------------------------------------- /app/assets/images/cms/icons/status/draft.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/status/draft.gif -------------------------------------------------------------------------------- /app/assets/images/cms/icons/status/hidden.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/status/hidden.gif -------------------------------------------------------------------------------- /app/assets/images/cms/icons/status/locked.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/status/locked.gif -------------------------------------------------------------------------------- /app/assets/images/cms/icons/status/published.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/status/published.gif -------------------------------------------------------------------------------- /app/assets/images/cms/icons/status/unlocked.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/status/unlocked.gif -------------------------------------------------------------------------------- /app/assets/images/cms/icons/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/icons/user.png -------------------------------------------------------------------------------- /app/assets/images/cms/login_bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/login_bg.jpg -------------------------------------------------------------------------------- /app/assets/images/cms/login_bottom.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/login_bottom.jpg -------------------------------------------------------------------------------- /app/assets/images/cms/login_top.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/login_top.gif -------------------------------------------------------------------------------- /app/assets/images/cms/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/logo.png -------------------------------------------------------------------------------- /app/assets/images/cms/lt_button_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/lt_button_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/lt_button_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/lt_button_l.gif -------------------------------------------------------------------------------- /app/assets/images/cms/lt_button_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/lt_button_r.gif -------------------------------------------------------------------------------- /app/assets/images/cms/menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu.png -------------------------------------------------------------------------------- /app/assets/images/cms/menu/block_cap_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu/block_cap_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/menu/bottom_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu/bottom_cap.png -------------------------------------------------------------------------------- /app/assets/images/cms/menu/bottom_cap_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu/bottom_cap_menu.png -------------------------------------------------------------------------------- /app/assets/images/cms/menu/bottom_cap_menu_first.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu/bottom_cap_menu_first.png -------------------------------------------------------------------------------- /app/assets/images/cms/menu/menu_header_first_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu/menu_header_first_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/menu/selected_block_cap.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu/selected_block_cap.gif -------------------------------------------------------------------------------- /app/assets/images/cms/menu/top_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu/top_cap.png -------------------------------------------------------------------------------- /app/assets/images/cms/menu/top_cap_menu_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu/top_cap_menu_header.png -------------------------------------------------------------------------------- /app/assets/images/cms/menu_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/menu_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu_header.png -------------------------------------------------------------------------------- /app/assets/images/cms/menu_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu_open.png -------------------------------------------------------------------------------- /app/assets/images/cms/menu_open_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/menu_open_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav.png -------------------------------------------------------------------------------- /app/assets/images/cms/nav/on_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav/on_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_admin.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_admin.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_admin_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_admin_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_admin_on.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_admin_on.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_cap.png -------------------------------------------------------------------------------- /app/assets/images/cms/nav_cap_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_cap_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_content_library.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_content_library.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_content_library_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_content_library_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_content_library_on.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_content_library_on.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_dash.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_dash.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_dash_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_dash_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_dash_on.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_dash_on.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_sitemap.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_sitemap.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_sitemap_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_sitemap_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/nav_sitemap_on.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/nav_sitemap_on.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/page_toolbar_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/page_toolbar_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/page_toolbar_inset_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/page_toolbar_inset_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/page_toolbar_inset_draft_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/page_toolbar_inset_draft_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/page_toolbar_inset_draft_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/page_toolbar_inset_draft_l.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/page_toolbar_inset_draft_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/page_toolbar_inset_draft_r.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/page_toolbar_inset_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/page_toolbar_inset_l.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/page_toolbar_inset_published_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/page_toolbar_inset_published_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/page_toolbar_inset_published_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/page_toolbar_inset_published_l.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/page_toolbar_inset_published_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/page_toolbar_inset_published_r.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/page_toolbar_inset_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/page_toolbar_inset_r.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/page_toolbar_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/page_toolbar_l.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/page_toolbar_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/page_toolbar_r.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/status_draft_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/status_draft_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/status_draft_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/status_draft_l.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/status_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/status_l.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/status_published_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/status_published_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/status_published_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/status_published_l.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/visual_editor_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/visual_editor_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/visual_editor_end.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/visual_editor_end.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/visual_editor_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/visual_editor_r.gif -------------------------------------------------------------------------------- /app/assets/images/cms/page_toolbar/visual_editor_state_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/page_toolbar/visual_editor_state_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/add_connectable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/add_connectable.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/connect_connectable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/connect_connectable.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/container_border.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/container_border.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/container_border_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/container_border_l.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/container_border_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/container_border_r.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/delete_connectable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/delete_connectable.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/down_connectable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/down_connectable.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/down_connectable_disabled.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/down_connectable_disabled.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/edit_connectable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/edit_connectable.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/edit_connectable_2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/edit_connectable_2.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/show_connectable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/show_connectable.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/up_connectable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/up_connectable.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pages/up_connectable_disabled.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pages/up_connectable_disabled.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pagination/first.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pagination/first.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pagination/first_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pagination/first_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pagination/input.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pagination/input.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pagination/last.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pagination/last.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pagination/last_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pagination/last_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pagination/next.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pagination/next.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pagination/next_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pagination/next_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pagination/previous.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pagination/previous.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pagination/previous_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pagination/previous_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/pencil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/pencil.png -------------------------------------------------------------------------------- /app/assets/images/cms/plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/plus.png -------------------------------------------------------------------------------- /app/assets/images/cms/published_status.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/published_status.gif -------------------------------------------------------------------------------- /app/assets/images/cms/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/search.png -------------------------------------------------------------------------------- /app/assets/images/cms/search_submit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/search_submit.gif -------------------------------------------------------------------------------- /app/assets/images/cms/search_submit_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/search_submit_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/searchbox_gradient.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/searchbox_gradient.gif -------------------------------------------------------------------------------- /app/assets/images/cms/select_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/select_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/select_bg_2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/select_bg_2.gif -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/bottom_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/bottom_cap.png -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/buffer_caps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/buffer_caps.png -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/contract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/contract.png -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/corners.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/corners.gif -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/corners_hover.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/corners_hover.gif -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/divider.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/divider.gif -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/expand.png -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/gradient.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/gradient.gif -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/gray_contract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/gray_contract.png -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/gray_expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/gray_expand.png -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/no_contents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/no_contents.png -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/site_root_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/site_root_cap.png -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/tooltip.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/tooltip.gif -------------------------------------------------------------------------------- /app/assets/images/cms/sitemap/top_cap_content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/sitemap/top_cap_content.png -------------------------------------------------------------------------------- /app/assets/images/cms/solid.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/solid.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/bl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/bl.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/br.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/br.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/divider.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/divider.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/td_cap_first_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/td_cap_first_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/td_cap_first_s.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/td_cap_first_s.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/td_cap_last_h.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/td_cap_last_h.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/td_cap_last_s.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/td_cap_last_s.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/td_last_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/td_last_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/th_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/th_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/th_divider.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/th_divider.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/th_last_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/th_last_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/tl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/tl.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/tr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/tr.gif -------------------------------------------------------------------------------- /app/assets/images/cms/table/tr_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/table/tr_bg.gif -------------------------------------------------------------------------------- /app/assets/images/cms/toolbar_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/toolbar_bg.png -------------------------------------------------------------------------------- /app/assets/images/cms/top_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/top_cap.png -------------------------------------------------------------------------------- /app/assets/images/cms/top_cap_content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/top_cap_content.png -------------------------------------------------------------------------------- /app/assets/images/cms/top_cap_menu_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/top_cap_menu_header.png -------------------------------------------------------------------------------- /app/assets/images/cms/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/user.png -------------------------------------------------------------------------------- /app/assets/images/cms/user_search_submit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/user_search_submit.gif -------------------------------------------------------------------------------- /app/assets/images/cms/usercontrols_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/usercontrols_bg.png -------------------------------------------------------------------------------- /app/assets/images/cms/usercontrols_bg_cap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/assets/images/cms/usercontrols_bg_cap.png -------------------------------------------------------------------------------- /app/assets/javascripts/bcms/ckeditor.js: -------------------------------------------------------------------------------- 1 | // 2 | // Manifest file for loading the CKeditor JS. Loads it from ckeditor-rails gem. 3 | // See /assets/ckeditor/config.js for default configuration. 4 | // 5 | //= require ckeditor-jquery 6 | //= require bcms/ckeditor_load 7 | //= require bcms/ckeditor_standard_config 8 | 9 | -------------------------------------------------------------------------------- /app/assets/javascripts/cms/application.js: -------------------------------------------------------------------------------- 1 | // 2 | // Javascript libraries required for the Admin area of the CMS. 3 | // 4 | //= require jquery 5 | //= require jquery_ujs 6 | //= require jquery.cookie 7 | //= require jquery.selectbox 8 | //= require jquery.exists 9 | //= require jquery.taglist 10 | //= require jquery.ui.all 11 | //= require cms/core_library 12 | //= require cms/content_types 13 | //= require cms/attachment_manager 14 | //= require cms/form_builder 15 | //= require cms/sitemap 16 | //= require bootstrap 17 | // 18 | 19 | -------------------------------------------------------------------------------- /app/assets/javascripts/cms/content_types.js: -------------------------------------------------------------------------------- 1 | // Adds AJAX behavior primarily for List Portlet 2 | 3 | jQuery(function($){ 4 | var select_tag = $('*[data-role="content_type_selector"]'); 5 | var order_field = $('*[data-role="order-fields"]'); 6 | if(select_tag.exists()){ 7 | select_tag.on('change', function(){ 8 | var selected_option = $( this ).val(); 9 | console.log("Changed to", selected_option ); 10 | order_field.load( '/cms/content_types.js .load > .select', { "content_type": selected_option } ) 11 | }); 12 | } 13 | }); -------------------------------------------------------------------------------- /app/assets/javascripts/cms/namespace.js: -------------------------------------------------------------------------------- 1 | // Sets up the Cms namespace for other modules. 2 | var Cms = Cms || {}; -------------------------------------------------------------------------------- /app/assets/javascripts/cms/page_toolbar.js: -------------------------------------------------------------------------------- 1 | // 2 | // Required javascript for editing pages. Similar to toolbar.js, but adds additional features. 3 | // 4 | //= require jquery 5 | //= require jquery.ui.all 6 | //= require jquery.cookie 7 | //= require jquery.selectbox 8 | //= require jquery.exists 9 | //= require jquery.taglist 10 | //= require cms/core_library 11 | //= require cms/attachment_manager 12 | //= require bootstrap 13 | //= require cms/toolbar 14 | -------------------------------------------------------------------------------- /app/assets/javascripts/cms/site.js: -------------------------------------------------------------------------------- 1 | // The public javascript functions that must be available to guest users. 2 | //= require 'cms/user' -------------------------------------------------------------------------------- /app/assets/javascripts/jquery.exists.js: -------------------------------------------------------------------------------- 1 | // Determine if an element exists. 2 | // i.e. if($('.some-class').exists()){ // do something } 3 | jQuery.fn.exists = function() { 4 | return this.length > 0; 5 | }; -------------------------------------------------------------------------------- /app/assets/stylesheets/cms/_colors.scss: -------------------------------------------------------------------------------- 1 | /* COLORS */ 2 | .color-block { 3 | @include rem(height,9rem); 4 | @include border-radius(4px); 5 | } 6 | .primary-back { 7 | background-color: $primary; 8 | } 9 | .secondary-back { 10 | background-color: $secondary; 11 | } 12 | .dark-back { 13 | background-color: $dark; 14 | } 15 | .gray-back { 16 | background-color: $gray; 17 | } 18 | .light-back { 19 | background-color: $light; 20 | } -------------------------------------------------------------------------------- /app/assets/stylesheets/cms/_dashboard.scss: -------------------------------------------------------------------------------- 1 | /* DASHBOARD */ 2 | .dashboard { 3 | .draft { 4 | color: white; 5 | text-transform: uppercase; 6 | background: $danger; 7 | font-weight: 700; 8 | padding: 2px 5px; 9 | @include border-radius(2px); 10 | @include rem(font-size,0.875rem); 11 | -webkit-font-smoothing: antialiased; 12 | display: inline-block; 13 | vertical-align: top; 14 | float: right; 15 | } 16 | 17 | tbody { 18 | tr { 19 | &:hover { 20 | background: rgba($gray,0.175); 21 | cursor:pointer; 22 | } 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /app/assets/stylesheets/cms/default-forms.scss: -------------------------------------------------------------------------------- 1 | // Default styles for public CMS Forms (built via the forms module. 2 | 3 | @import "bootstrap"; 4 | -------------------------------------------------------------------------------- /app/assets/stylesheets/cms/includes/_animation.scss: -------------------------------------------------------------------------------- 1 | // Core imported by default. You can also import 'animate' for predefined animations. 2 | @import "animation/core"; 3 | -------------------------------------------------------------------------------- /app/assets/stylesheets/cms/includes/animation/animate/_bouncing.scss: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | @import "bouncing/bouncing-exits"; 3 | @import "bouncing/bouncing-entrances"; -------------------------------------------------------------------------------- /app/assets/stylesheets/cms/includes/animation/animate/_fading.scss: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | @import "fading/fading-exits"; 3 | @import "fading/fading-entrances"; -------------------------------------------------------------------------------- /app/assets/stylesheets/cms/includes/animation/animate/_rotating.scss: -------------------------------------------------------------------------------- 1 | // --------------------------------------------------------------------------- 2 | @import "rotating/rotating-exits"; 3 | @import "rotating/rotating-entrances"; 4 | -------------------------------------------------------------------------------- /app/assets/stylesheets/cms/page_content_editing.scss: -------------------------------------------------------------------------------- 1 | // Minimalist styles for page editing controls that are added to CMS pages in edit mode. 2 | 3 | // Need to style 'EDIT'/Pencil button so it floats right and over elements for a content block 4 | // Need to style 'PLUS' so it fits in the center of a space. 5 | -------------------------------------------------------------------------------- /app/assets/stylesheets/cms/page_editor.scss: -------------------------------------------------------------------------------- 1 | // Added to the page editing frame 2 | html, body { 3 | height: 100% 4 | } -------------------------------------------------------------------------------- /app/controllers/cms/application_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class ApplicationController < ::ApplicationController 3 | include Cms::AdminController 4 | 5 | before_action :no_browser_caching 6 | 7 | def no_browser_caching 8 | expires_now 9 | end 10 | end 11 | end -------------------------------------------------------------------------------- /app/controllers/cms/cache_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class CacheController < Cms::BaseController 3 | 4 | include Cms::AdminTab 5 | check_permissions :administrate 6 | 7 | def show 8 | 9 | end 10 | 11 | def destroy 12 | Cms::Cache.flush 13 | flash[:notice] = "Page Cache Flushed" 14 | redirect_to :action => "show" 15 | end 16 | 17 | private 18 | def set_menu_section 19 | @menu_section = 'caching' 20 | end 21 | 22 | end 23 | end -------------------------------------------------------------------------------- /app/controllers/cms/categories_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class CategoriesController < Cms::ContentBlockController 3 | def show 4 | redirect_to categories_path 5 | end 6 | end 7 | end -------------------------------------------------------------------------------- /app/controllers/cms/category_types_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class CategoryTypesController < Cms::ContentBlockController 3 | def show 4 | redirect_to edit_category_type_path(id: params[:id]) 5 | end 6 | 7 | def create 8 | params[:_redirect_to] = category_types_path 9 | super 10 | end 11 | end 12 | end -------------------------------------------------------------------------------- /app/controllers/cms/content_types_controller.rb: -------------------------------------------------------------------------------- 1 | require_dependency "cms/application_controller" 2 | 3 | module Cms 4 | class ContentTypesController < ApplicationController 5 | 6 | def index 7 | content_type = ContentType.named(params[:content_type]).first 8 | @attributes = content_type.orderable_attributes.sort() 9 | respond_to do |format| 10 | format.js { render :layout => false } 11 | end 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /app/controllers/cms/dashboard_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class DashboardController < Cms::BaseController 3 | 4 | def index 5 | @unpublished_pages = Page.unpublished.order("updated_at desc") 6 | @unpublished_pages = @unpublished_pages.select { |page| current_user.able_to_publish?(page) } 7 | @incomplete_tasks = current_user.tasks.incomplete. 8 | includes(:page). 9 | order("#{Task.table_name}.due_date desc, #{Page.table_name}.name"). 10 | references(:page) 11 | end 12 | end 13 | end -------------------------------------------------------------------------------- /app/controllers/cms/email_messages_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class EmailMessagesController < Cms::BaseController 3 | 4 | include Cms::AdminTab 5 | 6 | check_permissions :administrate 7 | 8 | def index 9 | @messages = EmailMessage.paginate(:page => params[:page]) 10 | end 11 | 12 | def show 13 | @message = EmailMessage.find(params[:id]) 14 | end 15 | 16 | private 17 | def set_menu_section 18 | @menu_section = 'email_messages' 19 | end 20 | end 21 | end -------------------------------------------------------------------------------- /app/controllers/cms/file_blocks_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class FileBlocksController < Cms::ContentBlockController 3 | end 4 | end -------------------------------------------------------------------------------- /app/controllers/cms/home_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class HomeController < Cms::BaseController 3 | 4 | # Only occurs if somebody goes to /cms, they get redirected to / 5 | # However, based on whether they are an admin or not, it will determine where they get sent. 6 | def index 7 | redirect_to '/' 8 | end 9 | end 10 | end -------------------------------------------------------------------------------- /app/controllers/cms/html_blocks_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class HtmlBlocksController < Cms::ContentBlockController 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /app/controllers/cms/image_blocks_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class ImageBlocksController < Cms::ContentBlockController 3 | end 4 | end -------------------------------------------------------------------------------- /app/controllers/cms/page_route_conditions_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class PageRouteConditionsController < Cms::PageRouteOptionsController 3 | end 4 | end -------------------------------------------------------------------------------- /app/controllers/cms/page_route_requirements_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class PageRouteRequirementsController < Cms::PageRouteOptionsController 3 | end 4 | end -------------------------------------------------------------------------------- /app/controllers/cms/passwords_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class PasswordsController < Devise::PasswordsController 3 | include Cms::AdminController 4 | layout 'cms/application' 5 | 6 | def new 7 | use_page_title('Forgot Password') 8 | super 9 | end 10 | 11 | def create 12 | use_page_title('Forgot Password') 13 | super 14 | end 15 | 16 | def edit 17 | use_page_title('Change Password') 18 | super 19 | end 20 | 21 | end 22 | end -------------------------------------------------------------------------------- /app/controllers/cms/redirects_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class RedirectsController < Cms::ResourceController 3 | include Cms::AdminTab 4 | check_permissions :administrate 5 | 6 | def new_button_path 7 | new_redirect_path 8 | end 9 | 10 | protected 11 | def show_url 12 | index_url 13 | end 14 | 15 | def order_by_column 16 | "from_path, to_path" 17 | end 18 | 19 | private 20 | def set_menu_section 21 | @menu_section = 'redirects' 22 | end 23 | 24 | end 25 | end -------------------------------------------------------------------------------- /app/controllers/cms/sessions_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | # Handles the login/logout function of the site. 3 | class SessionsController < Devise::SessionsController 4 | include Cms::AdminController 5 | before_action :redirect_to_cms_site, :only => [:new] 6 | 7 | layout 'cms/application' 8 | 9 | def new 10 | use_page_title 'Login' 11 | super 12 | end 13 | 14 | end 15 | end -------------------------------------------------------------------------------- /app/controllers/cms/sites/sessions_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module Sites 3 | 4 | # Handles Sign In/Out for public site. 5 | class SessionsController < Devise::SessionsController 6 | include Cms::ContentPage 7 | helper AuthenticationHelper 8 | helper UiElementsHelper 9 | 10 | template :default 11 | 12 | def new 13 | use_page_title 'Login' 14 | super 15 | end 16 | 17 | 18 | end 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /app/controllers/cms/tags_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class TagsController < Cms::ContentBlockController 3 | def index 4 | load_blocks 5 | respond_to do |format| 6 | format.html 7 | format.json { render :inline => @blocks.map { |e| e.name }.to_json } 8 | end 9 | end 10 | 11 | def show 12 | redirect_to tags_path 13 | end 14 | 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /app/controllers/cms/toolbar_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class ToolbarController < Cms::BaseController 3 | 4 | layout "cms/toolbar" 5 | 6 | helper Cms::MobileHelper 7 | 8 | def index 9 | if params[:page_toolbar] != "0" 10 | @mode = params[:mode] 11 | @page_toolbar_enabled = true 12 | end 13 | @page_version = params[:page_version] 14 | @page = Page.find(params[:page_id]).as_of_version(params[:page_version]) if params[:page_id] 15 | end 16 | 17 | end 18 | end -------------------------------------------------------------------------------- /app/controllers/cms/user_controller.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class UserController < Cms::ApplicationController 3 | # Return information about the current user as json. Can be used by cached html pages do create interactive elements. 4 | def show 5 | render json: Cms::UserPresenter.new(current_user) 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /app/helpers/cms/content_types_helper.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module ContentTypesHelper 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /app/helpers/cms/template_support.rb: -------------------------------------------------------------------------------- 1 | # This is a module, not a helper, that is meant to be included 2 | # into controllers that want to use page templates for their layout 3 | module Cms 4 | module TemplateSupport 5 | def self.included(controller) 6 | controller.class_eval do 7 | include Cms::Authentication::Controller 8 | include Cms::ErrorHandling 9 | 10 | helper Cms::PageHelper 11 | helper Cms::MenuHelper 12 | helper Cms::RenderingHelper 13 | 14 | end 15 | end 16 | end 17 | 18 | end 19 | -------------------------------------------------------------------------------- /app/helpers/forgot_password_portlet_helper.rb: -------------------------------------------------------------------------------- 1 | module ForgotPasswordPortletHelper 2 | 3 | # Acts like this is Cms::Sites::PasswordsController 4 | def controller_name 5 | 'passwords' 6 | end 7 | 8 | include Cms::Sites::DeviseShimHelper 9 | end -------------------------------------------------------------------------------- /app/helpers/login_portlet_helper.rb: -------------------------------------------------------------------------------- 1 | module LoginPortletHelper 2 | 3 | 4 | # Acts like this is Cms::Sites::SessionsController 5 | def controller_name 6 | 'sessions' 7 | end 8 | 9 | include Cms::Sites::DeviseShimHelper 10 | end -------------------------------------------------------------------------------- /app/inputs/cms_text_area_input.rb: -------------------------------------------------------------------------------- 1 | # Adds additional options to the TextArea 2 | # @option [String] :default A default value 3 | class CmsTextAreaInput < SimpleForm::Inputs::TextInput 4 | 5 | include Cms::FormBuilder::DefaultInput 6 | def input(wrapper_options) 7 | extract_default 8 | @builder.text_area(attribute_name, input_html_options).html_safe 9 | end 10 | end -------------------------------------------------------------------------------- /app/inputs/date_picker_input.rb: -------------------------------------------------------------------------------- 1 | # Displays a text field with a JQuery DatePicker widget. 2 | # 1. Allows for empty dates (i.e. no date) 3 | class DatePickerInput < SimpleForm::Inputs::TextInput 4 | 5 | def input(wrapper_options) 6 | @builder.text_field(attribute_name, input_html_options).html_safe 7 | end 8 | end -------------------------------------------------------------------------------- /app/inputs/tag_list_input.rb: -------------------------------------------------------------------------------- 1 | class TagListInput < SimpleForm::Inputs::StringInput 2 | 3 | end -------------------------------------------------------------------------------- /app/models/cms/email_message_mailer.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class EmailMessageMailer < ActionMailer::Base 3 | 4 | 5 | def email_message(message) 6 | email = {:to=>message.recipients, :from=>message.sender, :subject => message.subject, :body =>message.body} 7 | email[:content_type] = message.content_type if message.content_type 8 | mail email 9 | end 10 | 11 | end 12 | end -------------------------------------------------------------------------------- /app/models/cms/file_block.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class FileBlock < Cms::AbstractFileBlock 3 | 4 | acts_as_content_block :taggable => true 5 | content_module :core 6 | 7 | has_attachment :file 8 | validates_attachment_presence :file, :message => "You must upload a file" 9 | 10 | def self.display_name 11 | "File" 12 | end 13 | 14 | # Override default behavior to handle STI class when looking up other versions of attachments. 15 | def attachable_type 16 | Cms::Attachment::FILE_BLOCKS 17 | end 18 | end 19 | end 20 | -------------------------------------------------------------------------------- /app/models/cms/group_permission.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class GroupPermission < ActiveRecord::Base 3 | 4 | extend DefaultAccessible 5 | 6 | belongs_to :group, :class_name => 'Cms::Group' 7 | belongs_to :permission, :class_name => 'Cms::Permission' 8 | 9 | validates_uniqueness_of :permission_id, :scope => :group_id 10 | 11 | end 12 | end -------------------------------------------------------------------------------- /app/models/cms/group_section.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class GroupSection < ActiveRecord::Base 3 | 4 | extend DefaultAccessible 5 | 6 | belongs_to :group, :class_name => 'Cms::Group' 7 | belongs_to :section, :class_name => 'Cms::Section' 8 | end 9 | end -------------------------------------------------------------------------------- /app/models/cms/group_type_permission.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class GroupTypePermission < ActiveRecord::Base 3 | belongs_to :group_type, :class_name => 'Cms::GroupType' 4 | belongs_to :permission, :class_name => 'Cms::Permission' 5 | 6 | extend DefaultAccessible 7 | end 8 | end -------------------------------------------------------------------------------- /app/models/cms/link.rb: -------------------------------------------------------------------------------- 1 | class Cms::Link < ActiveRecord::Base 2 | acts_as_content_block connectable: false, content_module: false 3 | 4 | scope :named, lambda { |name| {:conditions => ["#{table_name}.name = ?", name]} } 5 | 6 | validates_presence_of :name 7 | 8 | is_addressable 9 | include Cms::Concerns::Addressable::DeprecatedPageAccessors 10 | 11 | #needed by menu_helper 12 | def path 13 | url 14 | end 15 | 16 | # @override 17 | def self.permitted_params 18 | super + [:publish_on_save] 19 | end 20 | end 21 | -------------------------------------------------------------------------------- /app/models/cms/page_route_condition.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class PageRouteCondition < Cms::PageRouteOption 3 | extend DefaultAccessible 4 | end 5 | end -------------------------------------------------------------------------------- /app/models/cms/page_route_option.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class PageRouteOption < ActiveRecord::Base 3 | belongs_to :page_route, :class_name => 'Cms::PageRoute' 4 | 5 | extend DefaultAccessible 6 | end 7 | end -------------------------------------------------------------------------------- /app/models/cms/page_route_requirement.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class PageRouteRequirement < Cms::PageRouteOption 3 | extend DefaultAccessible 4 | end 5 | end -------------------------------------------------------------------------------- /app/models/cms/permission.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class Permission < ActiveRecord::Base 3 | 4 | #attr_accessible :name, :full_name, :description 5 | 6 | has_many :group_permissions, :class_name => 'Cms::GroupPermission' 7 | has_many :groups, :through => :group_permissions, :class_name => 'Cms::Group' 8 | 9 | validates_presence_of :name 10 | validates_uniqueness_of :name 11 | 12 | def self.named(name) 13 | where(name: name) 14 | end 15 | 16 | end 17 | end -------------------------------------------------------------------------------- /app/models/cms/redirect.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class Redirect < ActiveRecord::Base 3 | validates_presence_of :from_path, :to_path 4 | validates_uniqueness_of :from_path 5 | 6 | def self.from(path) 7 | where(:from_path => path).first 8 | end 9 | 10 | extend DefaultAccessible 11 | end 12 | end -------------------------------------------------------------------------------- /app/models/cms/search_filter.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | # Captures values for the search form. 3 | class SearchFilter 4 | include ::ActiveModel::Model 5 | 6 | attr_accessor :model_class, :term 7 | def self.build(params_hash, model_class) 8 | model = self.new(params_hash) 9 | model.model_class = model_class 10 | model 11 | end 12 | 13 | def path 14 | model_class 15 | end 16 | end 17 | end -------------------------------------------------------------------------------- /app/models/cms/tagging.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class Tagging < ActiveRecord::Base 3 | belongs_to :tag, :class_name => 'Cms::Tag' 4 | belongs_to :taggable, :polymorphic => true, :class_name => 'Cms::Taggable', :foreign_type => 'taggable_type' 5 | 6 | extend DefaultAccessible 7 | #attr_accessible :tag, :taggable 8 | 9 | def content_type 10 | Cms::ContentType.first(:conditions => {:name => taggable_type}) 11 | end 12 | 13 | end 14 | end -------------------------------------------------------------------------------- /app/models/cms/user_group_membership.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class UserGroupMembership < ActiveRecord::Base 3 | 4 | extend Cms::DefaultAccessible 5 | 6 | belongs_to :group, :class_name => 'Cms::Group' 7 | belongs_to :user, :class_name => 'Cms::PersistentUser' 8 | end 9 | end -------------------------------------------------------------------------------- /app/portlets/deprecated_placeholder.rb: -------------------------------------------------------------------------------- 1 | # A portlet type that can be used to deprecate and remove old portlets. 2 | # During migrations, change existing portlet types with this and remove the old classes. 3 | # 4 | # This will not appear as a selectable portlet type, but can render itself 5 | class DeprecatedPlaceholder < Cms::Portlet 6 | 7 | enable_template_editor false 8 | 9 | def render 10 | 11 | end 12 | end -------------------------------------------------------------------------------- /app/portlets/dynamic_portlet.rb: -------------------------------------------------------------------------------- 1 | class DynamicPortlet < Cms::Portlet 2 | description "Allows user to create custom logic via the user interface. Require ruby/erb to define the controller and view." 3 | def render 4 | eval(@portlet.code) unless @portlet.code.blank? 5 | end 6 | 7 | def attributes=(new_attributes, guard_protected_attributes = true) 8 | self.assign_attributes(new_attributes) 9 | end 10 | 11 | end 12 | -------------------------------------------------------------------------------- /app/portlets/helpers/cms/list_portlet_helper.rb: -------------------------------------------------------------------------------- 1 | ## 2 | # All methods from this helper will be available in the render.html.erb for ListPortlet 3 | module ListPortletHelper 4 | 5 | end 6 | -------------------------------------------------------------------------------- /app/portlets/login_portlet.rb: -------------------------------------------------------------------------------- 1 | # Shows a 'Login' form. 2 | # 3 | # This portlet should not typically necessary in CMS 4.0 or later since there is a built 4 | # in /login route built in. 5 | class LoginPortlet < Cms::Portlet 6 | 7 | enable_template_editor false 8 | description "Display a login form (Consider using /login instead)." 9 | 10 | def render 11 | end 12 | 13 | end 14 | -------------------------------------------------------------------------------- /app/portlets/tag_cloud_portlet.rb: -------------------------------------------------------------------------------- 1 | class TagCloudPortlet < Cms::Portlet 2 | 3 | description "Generates a Tag cloud by based the tags used on content blocks." 4 | 5 | def self.default_sizes 6 | (0..4).map{|n| "size-#{n}" }.join(" ") 7 | end 8 | 9 | def render 10 | @sizes = self.sizes.blank? ? self.class.default_sizes : self.sizes 11 | @limit = self.limit.blank? ? 50 : self.limit 12 | @cloud = Cms::Tag.cloud(:sizes => @sizes.size, :limit => @limit) 13 | end 14 | 15 | end 16 | -------------------------------------------------------------------------------- /app/presenters/cms/user_presenter.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | 3 | # Wrap User for JSON formatting. 4 | class UserPresenter 5 | 6 | attr_reader :resource 7 | 8 | def initialize(user) 9 | @resource = user 10 | end 11 | 12 | def as_json(options) 13 | hash = resource.as_json( 14 | :only => [:id, :email, :login, :first_name, :last_name], 15 | :methods => [:full_name]) 16 | hash[:is_logged_in] = logged_in? 17 | hash 18 | end 19 | 20 | def logged_in? 21 | !@resource.guest? 22 | end 23 | end 24 | end -------------------------------------------------------------------------------- /app/views/cms/application/_add_content_modal.html.erb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/cms/application/_buttons.html.erb: -------------------------------------------------------------------------------- 1 | <%= button_menu location do %> 2 | <%= f.button :publish, location: location %> 3 |
4 | <%= cancel_button location %> 5 | <%= f.button :save_draft, location: location %> 6 |
7 | <% end %> -------------------------------------------------------------------------------- /app/views/cms/application/_exception.html.erb: -------------------------------------------------------------------------------- 1 |
2 |

An Error Occurred

3 | 6 |
7 | -------------------------------------------------------------------------------- /app/views/cms/application/_form_errors.html.erb: -------------------------------------------------------------------------------- 1 | <%# Shows error message and any errors on the base model. Can be included in any CMS form view. %> 2 |
3 | <%= form.error_notification %> 4 | 5 | <%= form.error :base %> 6 | 7 |
8 | -------------------------------------------------------------------------------- /app/views/cms/application/_form_with_buttons.html.erb: -------------------------------------------------------------------------------- 1 | <%= page_title_with_buttons(f, yield(:buttons)) %> 2 |
3 |
4 | <%= yield %> 5 |
6 |
7 | <%= yield :sidebar %> 8 |
9 |
10 | <%= bottom_buttons f, yield(:buttons) %> 11 | -------------------------------------------------------------------------------- /app/views/cms/application/_main_content.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= yield %> 3 |
4 | -------------------------------------------------------------------------------- /app/views/cms/application/_main_with_sidebar.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%= yield %> 4 |
5 |
6 | <%= yield :sidebar %> 7 |
8 |
-------------------------------------------------------------------------------- /app/views/cms/application/_page_title.html.erb: -------------------------------------------------------------------------------- 1 | <% span = 'span6' unless local_assigns.has_key? :span %> 2 |
3 |

<%= page_title %>

4 | <%= yield %> 5 |
-------------------------------------------------------------------------------- /app/views/cms/application/_row.html.erb: -------------------------------------------------------------------------------- 1 |
<%= yield %>
-------------------------------------------------------------------------------- /app/views/cms/application/_save_buttons.html.erb: -------------------------------------------------------------------------------- 1 | <%# Generic Save/Cancel used by a number of views. %> 2 | <%= button_menu location do %> 3 | <%= f.button :save, location: location %> 4 |
5 | <%= cancel_button location %> 6 |
7 | <% end %> -------------------------------------------------------------------------------- /app/views/cms/application/_sidebar_layout.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= yield %> 3 |
-------------------------------------------------------------------------------- /app/views/cms/application/_version_conflict_diff.html.erb: -------------------------------------------------------------------------------- 1 |

Their Version (v<%= other_version.version %>)

2 | 3 | 4 | 5 | 6 | 7 | <% other_version.attributes.to_a.reject{|e| ['id', 'deleted','version','lock_version','created_at','updated_by_id','updated_at','version_comment', 'published','hidden','archived'].include?(e.first) }.sort_by(&:first).each do |field, value| %> 8 | 9 | 10 | <% end %> 11 |
FieldValue
<%=h field %><%=h value %>
-------------------------------------------------------------------------------- /app/views/cms/attachments/_attachment_wrapper.html.erb: -------------------------------------------------------------------------------- 1 | 2 | <%= render @attachment %> 3 |
4 | <%= attachment.id %> 5 | -------------------------------------------------------------------------------- /app/views/cms/attachments/_no_attachments_defined.html.erb: -------------------------------------------------------------------------------- 1 |

Error: This content type (<%= object.class.name %>) is not configured to use attachments.

-------------------------------------------------------------------------------- /app/views/cms/cache/show.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Page Cache" %> 2 | <%= render layout: 'page_title' do %> 3 | <%= link_to "Clear", cache_path, class: 'btn btn-primary right http_delete', :rel=>'clear-cache' %> 4 | <% end %> 5 | <%= render layout: 'main_content' do %> 6 |

The CMS caches pages which are frequently accessed by guest users to increase throughput. If a page appears stale, you may manually clear this page cache.

7 | <% end %> 8 | -------------------------------------------------------------------------------- /app/views/cms/category_types/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | -------------------------------------------------------------------------------- /app/views/cms/content/editing_frame.html.erb: -------------------------------------------------------------------------------- 1 | <%= page_content_iframe(@edit_page_path) %> -------------------------------------------------------------------------------- /app/views/cms/content_block/_buttons.html.erb: -------------------------------------------------------------------------------- 1 | <%# Buttons for blocks need to be aware of whether the underlying block is publishable or not. %> 2 | <%= button_menu location do %> 3 | <% if @block.class.publishable? %> 4 | <%= f.button :publish, location: location %> 5 | <% else %> 6 | <%= f.button :save, location: location %> 7 | <% end %> 8 | 9 |
10 | <%= cancel_button location %> 11 | <%= f.button :save_draft, location: location if @block.class.publishable? %> 12 |
13 | <% end %> -------------------------------------------------------------------------------- /app/views/cms/content_block/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Edit #{content_type.display_name}" %> 2 | <%= render 'block_form' %> 3 | 4 | -------------------------------------------------------------------------------- /app/views/cms/content_block/new.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Add a New #{content_type.display_name}" %> 2 | <%= render 'block_form' %> 3 | 4 | -------------------------------------------------------------------------------- /app/views/cms/content_block/render_block_in_main_container.html.erb: -------------------------------------------------------------------------------- 1 | <% if current_user.able_to_edit?(@block) %> 2 | <% content_for :html_head do %> 3 | <%= javascript_include_tag 'cms/page_editor' %> 4 | <%= stylesheet_link_tag 'cms/page_content_editing' %> 5 | <%= csrf_meta_tags %> 6 | <% end %> 7 | <% end %> 8 | <% content_for :main do %> 9 | <%= render file: @block.class.template_path %> 10 | <% end %> -------------------------------------------------------------------------------- /app/views/cms/content_block/show.html.erb: -------------------------------------------------------------------------------- 1 | <%= page_content_iframe(url_for engine_aware_path(@block, :inline)) %> -------------------------------------------------------------------------------- /app/views/cms/content_types/_order_field.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :order, 2 | collection: collection, 3 | label_method: :humanize, 4 | include_blank: false, 5 | wrapper_html: {'data-role' => "order-fields", class: 'load'} %> -------------------------------------------------------------------------------- /app/views/cms/content_types/index.html.erb: -------------------------------------------------------------------------------- 1 | <%= simple_form_for ListPortlet.new(order: "name") do |f| %> 2 | <%= render partial: 'cms/content_types/order_field', locals: { f: f, collection: @attributes} %> 3 | <% end %> -------------------------------------------------------------------------------- /app/views/cms/dashboard/index.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Dashboard" %> 2 | 3 |
4 |

Dashboard

5 |
6 |
7 | <%= render :partial => 'tasks' %> 8 |
9 |
10 | <%= render :partial => 'page_drafts' %> 11 |
12 |
13 |
14 | -------------------------------------------------------------------------------- /app/views/cms/dynamic_views/_form.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :buttons, 'save_buttons' %> 2 | <%= simple_form_for(@view) do |f| %> 3 | <%= render layout: 'form_with_buttons', locals: {f: f} do %> 4 | <%= f.input :name, hint: @view.hint, placeholder: @view.placeholder %> 5 | <%= f.input :format %> 6 | <%= f.input :handler, collection: ActionView::Template.template_handler_extensions, default: "erb" %> 7 | <%= f.input :body, as: :text, input_html: {:style => "height: 500px", :cols => 80} %> 8 | <% end %> 9 | <% end %> 10 | -------------------------------------------------------------------------------- /app/views/cms/dynamic_views/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Edit '#{@view.name}' #{dynamic_view_type.title}" %> 2 | <%= render 'form' %> -------------------------------------------------------------------------------- /app/views/cms/dynamic_views/new.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "New #{dynamic_view_type.title}" %> 2 | <%= render 'form' %> -------------------------------------------------------------------------------- /app/views/cms/file_blocks/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | <%= f.input :file, hint: "Select a file to upload.", as: :file_picker %> 3 | <%= f.cms_tag_list %> 4 | -------------------------------------------------------------------------------- /app/views/cms/file_blocks/_section_selector.html.erb: -------------------------------------------------------------------------------- 1 | <% 2 | root = Cms::Section.root.first 3 | root.full_path = root.name 4 | @sections = [] 5 | @sections << root 6 | @sections += root.master_section_list 7 | @sections.each {|s| s.full_path = "/" + s.full_path unless s == root } 8 | %> 9 | 10 | <% @sections.each do |s| -%> 11 | <%= tag :span, :class=>"section_id_map", :data=>{:id=> s.id, :path => s.prependable_path} %> 12 | <% end %> 13 | -------------------------------------------------------------------------------- /app/views/cms/file_blocks/render.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= image_tag "cms/icons/file_types/#{@content_block.file.icon}.png", :style => "width:18px;height:18px;", :alt=>@content_block.file.icon %> 3 | <%= link_to @content_block.name, attachment_path_for(@content_block.file) %> 4 | <%= @content_block.file_size %> 5 |
6 | -------------------------------------------------------------------------------- /app/views/cms/forgot_password_mailer/reset_password.text.html.erb: -------------------------------------------------------------------------------- 1 | This email is in response to your request to reset your password. Please follow the link below and fill in the password fields to the new credentials you wish to use to authenticate yourself. 2 | 3 | <%= @url %> 4 | -------------------------------------------------------------------------------- /app/views/cms/forgot_password_mailer/reset_password.text.plain.erb: -------------------------------------------------------------------------------- 1 | This email is in response to your request to reset your password. Please copy and paste the link into your browser and fill in the password fields to the new credentials you wish to use to authenticate yourself. 2 | 3 | <%= @url %> 4 | -------------------------------------------------------------------------------- /app/views/cms/form_entries/_buttons.html.erb: -------------------------------------------------------------------------------- 1 | <%= link_to("#{@entry.form.name} form", form_path(@entry.form), class: "btn btn-small right ") %> 2 | <%= link_to("New Entry", new_form_entry_path(form_id: @entry.form), class: "btn btn-small btn-primary right") %> -------------------------------------------------------------------------------- /app/views/cms/form_entries/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= simple_form_for(model, as: :form_entry, url: url) do |f| %> 2 | <%= hidden_field_tag :form_id, model.form.id %> 3 | <% model.form.fields.each do |field| %> 4 | <%= f.input field.name, field.options(entry: model) %> 5 | <% end %> 6 | <%= f.button :submit, "Submit" %> 7 | <% end %> -------------------------------------------------------------------------------- /app/views/cms/form_entries/_internal_form.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :buttons, 'save_buttons' %> 2 | <%= simple_form_for(model, as: :form_entry, url: url) do |f| %> 3 | <%= render layout: 'form_with_buttons', locals: {f: f} do %> 4 | <%= hidden_field_tag :form_id, model.form.id %> 5 | <% model.form.fields.each do |field| %> 6 | <%= f.input field.name, field.options(entry: model) %> 7 | <% end %> 8 | <% end %> 9 | <% end %> -------------------------------------------------------------------------------- /app/views/cms/form_entries/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Edit Entry" %> 2 | <%= render partial: 'internal_form', 3 | locals: {model: @entry, 4 | url: cms.form_entry_path(@entry)} 5 | %> 6 | -------------------------------------------------------------------------------- /app/views/cms/form_entries/error.html.erb: -------------------------------------------------------------------------------- 1 | <%= content_for :main do %> 2 | <%= render file: 'cms/forms/render' %> 3 | <% end %> -------------------------------------------------------------------------------- /app/views/cms/form_entries/index.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :bulk_actions do %> 2 | <%= render 'buttons' %> 3 | <%= hidden_field_tag :form_id, @form.id %> 4 | <% end %> 5 | <%= render file: 'cms/content_block/index' %> 6 | -------------------------------------------------------------------------------- /app/views/cms/form_entries/new.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "New Entry for #{@entry.form.name}" %> 2 | <%= render partial: 'internal_form', 3 | locals: {model: @entry, 4 | url: form_entries_path(@entry)} 5 | %> 6 | -------------------------------------------------------------------------------- /app/views/cms/form_entries/show.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "View Entry" %> 2 | 3 | <%= render partial: 'buttons', layout: 'page_title' %> 4 | 5 | 6 | <%= render layout: 'main_with_sidebar' do %> 7 |
8 | <% @entry.form.fields.each do |field| %> 9 |
<%= field.label %>
10 |
<%= @entry.data_columns[field.name] %>
11 | <% end %> 12 |
13 | <% end %> -------------------------------------------------------------------------------- /app/views/cms/form_entries/submit.html.erb: -------------------------------------------------------------------------------- 1 | <%= content_for :main , @form.confirmation_text.html_safe %> -------------------------------------------------------------------------------- /app/views/cms/form_fields/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input field.name, 2 | label: field.label, 3 | hint: field.instructions, 4 | wrapper: :append do %> 5 | <%= f.input_field field.name, field.options(disabled: true).merge({data: {id: field.id}}) %> 6 | <%= link_to("Edit", "#", data: {edit_path: edit_path}, class: "btn edit_form_button") %> 7 | <%= link_to("Delete", "#", data: {path: delete_path}, class: "btn delete_field_button") %> 8 | <% end %> 9 | -------------------------------------------------------------------------------- /app/views/cms/form_fields/_select.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :choices, hint: "Enter each choice on a separate line." %> 2 | <%= f.input :required, hint: "Required fields will show the first option a preselected." %> 3 | <%= f.input :instructions, as: :text %> 4 | -------------------------------------------------------------------------------- /app/views/cms/form_fields/_text_area.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :required %> 2 | <%= f.input :instructions, as: :text %> 3 | <%= f.input :default_value %> -------------------------------------------------------------------------------- /app/views/cms/form_fields/_text_field.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :required %> 2 | <%= f.input :instructions, as: :text %> 3 | <%= f.input :default_value %> -------------------------------------------------------------------------------- /app/views/cms/form_fields/edit.html.erb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/app/views/cms/form_fields/edit.html.erb -------------------------------------------------------------------------------- /app/views/cms/forms/render.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :html_head do %> 2 | <%= stylesheet_link_tag Rails.application.config.cms.form_builder_css %> 3 | <% end %> 4 |

<%= @content_block.name %>

5 |

6 | <%= @content_block.description %> 7 |

8 | <% 9 | unless @entry 10 | @entry = Cms::FormEntry.for(@content_block) 11 | end 12 | %> 13 | <%= render partial: 'cms/form_entries/form', locals: {model: @entry, url: cms.submit_form_entries_path, form: @content_block} %> 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/views/cms/forms/show.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :page_buttons do %> 2 |
3 | <%= link_to("Entries", cms.entries_path(@block), class: "btn btn-small") %> 4 |
5 | <% end %> 6 | <%= render file: 'cms/content_block/show' %> -------------------------------------------------------------------------------- /app/views/cms/groups/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Edit Group" %> 2 | <%= render :partial => 'form' %> 3 | -------------------------------------------------------------------------------- /app/views/cms/groups/new.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Add a New Group" %> 2 | <%= render 'form' %> 3 | -------------------------------------------------------------------------------- /app/views/cms/html_blocks/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | <%= f.input :content, as: :text_editor %> 3 | <%= f.cms_tag_list %> -------------------------------------------------------------------------------- /app/views/cms/html_blocks/render.html.erb: -------------------------------------------------------------------------------- 1 | <%= show :content %> 2 | -------------------------------------------------------------------------------- /app/views/cms/image_blocks/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | <%= f.input :file, label: "Image", hint: "Select a file to upload.", as: :file_picker %> 3 | <%= f.cms_tag_list %> -------------------------------------------------------------------------------- /app/views/cms/image_blocks/render.html.erb: -------------------------------------------------------------------------------- 1 | <%= tag :img, 2 | :src => attachment_path_for(@content_block.file), 3 | :alt => h(@content_block.name), 4 | :data => { :type => "image_block" } %> 5 | -------------------------------------------------------------------------------- /app/views/cms/links/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= page_title_with_buttons f %> 2 |
3 | <%= f.input :name %> 4 | <%= f.input :url %> 5 | <%= f.input :new_window, label: "Open In New Window?" %> 6 |
7 | <%= bottom_buttons f %> 8 | 9 | -------------------------------------------------------------------------------- /app/views/cms/links/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Edit Link" %> 2 | <%= simple_form_for(@link) do |f| %> 3 | <%= render :partial => 'form', :locals => {:f => f, title: 'Edit Link'} %> 4 | <% end %> 5 | -------------------------------------------------------------------------------- /app/views/cms/links/new.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Add a New Link" %> 2 | <%= simple_form_for(@link) do |f| %> 3 | <%= hidden_field_tag :section_id, @link.section_id %> 4 | <%= render :partial => 'form', :locals => {:f => f, title: 'Add a New Link'} %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /app/views/cms/menus/_menu.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <% unless items.empty? 3 | %> 8 | <% end 9 | %>
10 | -------------------------------------------------------------------------------- /app/views/cms/page_routes/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Edit Page Route" %> 2 | <%= render 'form' %> -------------------------------------------------------------------------------- /app/views/cms/page_routes/new.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Add a New Page Route" %> 2 | <%= render 'form' %> -------------------------------------------------------------------------------- /app/views/cms/pages/_simple_container.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= content %> 3 | <%= image_tag "cms/plus.png", 4 | :class => 'cms-add-content', 5 | :data => {:remote => cms.new_page_component_path(:connect_to_page_id => @page, :connect_to_container => name)} 6 | %> 7 |
8 | 9 | -------------------------------------------------------------------------------- /app/views/cms/pages/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Configure Page" %> 2 | <%= render 'form' %> 3 | -------------------------------------------------------------------------------- /app/views/cms/redirects/_form.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :buttons, 'save_buttons' %> 2 | <%= simple_form_for(@redirect) do |f| %> 3 | <%= render layout: 'form_with_buttons', locals: {f: f} do %> 4 | <%= f.input :from_path, label: "From" %> 5 | <%= f.input :to_path, label: "To" %> 6 | <% end %> 7 | <% end %> 8 | -------------------------------------------------------------------------------- /app/views/cms/redirects/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Edit Redirect" %> 2 | <%= render 'form' %> 3 | -------------------------------------------------------------------------------- /app/views/cms/redirects/new.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Add a New Redirect" %> 2 | <%= render 'form' %> 3 | -------------------------------------------------------------------------------- /app/views/cms/section_nodes/_children.html.erb: -------------------------------------------------------------------------------- 1 | 2 | <% children.keys.each do |section_node| %> 3 | <%= render partial: 'section_node', locals: {section_node: section_node, parent: parent, children: children[section_node]} %> 4 | <% end %> 5 | 6 | -------------------------------------------------------------------------------- /app/views/cms/section_nodes/_status.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= draft_icon_tag(content) %> 3 | <%= hidden_icon_tag(content) %> 4 | <%= guest_accessible_icon_tag(parent, content) %> 5 |
-------------------------------------------------------------------------------- /app/views/cms/section_nodes/show.html.erb: -------------------------------------------------------------------------------- 1 | <%= render 'sitemap_buttons' %> 2 |
3 |
4 | <%= render partial: 'section_node', locals: {section_node: @root_section_node, 5 | parent: nil, 6 | children: @sitemap[@root_section_node]} %> 7 |
8 |
9 | 10 | -------------------------------------------------------------------------------- /app/views/cms/sections/_buttons.html.erb: -------------------------------------------------------------------------------- 1 | <%= button_menu location do %> 2 | <%= f.button :save, location: location %> 3 |
4 | <%= cancel_button location %> 5 |
6 | <% end %> -------------------------------------------------------------------------------- /app/views/cms/sections/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Edit Section" %> 2 | <%= simple_form_for(@section) do |f| %> 3 | <%= render :partial => 'form', :locals => {:f => f, :parent => @section.parent, title: 'Edit Section'} %> 4 | <% end %> 5 | -------------------------------------------------------------------------------- /app/views/cms/sections/new.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Add a New Section" %> 2 | <%= simple_form_for(@section, :id => 'section_form') do |f| %> 3 | <%= hidden_field_tag :section_id, @parent.id %> 4 | <%= render :partial => 'form', :locals => {:f => f, :parent => @parent, title: 'Add a New Section'} %> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /app/views/cms/shared/access_denied.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Access Denied" %> 2 |

Sorry, you do not have permission to access this page.

3 | -------------------------------------------------------------------------------- /app/views/cms/shared/error.xml.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%=h exception.message %> 4 | 5 | Stacktrace 6 |
<%=h exception.backtrace.join("
") %>
7 |
8 |
-------------------------------------------------------------------------------- /app/views/cms/sites/_flash.html.erb: -------------------------------------------------------------------------------- 1 | <% 2 | flash.each do |name, msg| 3 | %> 4 | <%= content_tag :div, class: 'flash-message' do %> 5 | 6 | <%= msg %> 7 | <% end %> 8 | <% end -%> 9 | -------------------------------------------------------------------------------- /app/views/cms/sites/passwords/new.html.erb: -------------------------------------------------------------------------------- 1 | <%= render 'cms/sites/flash' %> 2 | <%= render file: 'devise/passwords/new' %> -------------------------------------------------------------------------------- /app/views/cms/sites/sessions/new.html.erb: -------------------------------------------------------------------------------- 1 | <%= render 'cms/sites/flash' %> 2 | <%= render file: 'cms/sessions/new' %> -------------------------------------------------------------------------------- /app/views/cms/tags/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | -------------------------------------------------------------------------------- /app/views/cms/toolbar/_new_pages_menu.html.erb: -------------------------------------------------------------------------------- 1 | <% 2 | # Allows Sitemap menu to have 'New Page' while New menu has no prefix. 3 | unless defined?(prefix) 4 | prefix = "" 5 | end 6 | %> 7 | <%= nav_link_to "#{prefix}Page", cms.new_section_page_path(target_section), class: 'add-page-button' %> 8 | <%= nav_link_to "#{prefix}Link", cms.new_section_link_path(target_section), class: 'add-section-button' %> 9 | <%= nav_link_to "#{prefix}Section", cms.new_section_path(:section_id => target_section.id), class: 'add-link-button' %> 10 | <%= divider_tag %> -------------------------------------------------------------------------------- /app/views/cms/users/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= simple_form_for(@user.becomes(Cms::User), html: {autocomplete: 'off'}) do |f| %> 2 | <%= page_title_with_buttons(f, 'save_buttons') %> 3 | <%= render layout: 'main_with_sidebar' do %> 4 | <%= render :partial => 'user_fields', :locals => {:f => f} unless @change_password %> 5 | <%= render :partial => 'password', :locals => {:f => f} if @user.new_record? %> 6 | <%= f.association :groups, as: :check_boxes %> 7 | <% end %> 8 | <%= bottom_buttons(f, 'save_buttons') %> 9 | <% end %> 10 | -------------------------------------------------------------------------------- /app/views/cms/users/_password.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :password, required: true %> 2 | <%= f.input :password_confirmation, label: "Confirm Password", required: true %> 3 | -------------------------------------------------------------------------------- /app/views/cms/users/_user_fields.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :login, label: 'Username' %> 2 | <%= f.input :email, required: true %> 3 | <%= f.input :first_name, label: 'First Name' %> 4 | <%= f.input :last_name, label: 'Last Name' %> 5 | <%= f.input :expires_at, label: 'Expiration Date', as: :date_picker %> 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/views/cms/users/edit.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "Edit User" %> 2 | <%= render :partial => 'form' %> 3 | -------------------------------------------------------------------------------- /app/views/cms/users/new.html.erb: -------------------------------------------------------------------------------- 1 | <% use_page_title "New User" %> 2 | <%= render :partial => 'form' %> 3 | -------------------------------------------------------------------------------- /app/views/devise/mailer/confirmation_instructions.html.erb: -------------------------------------------------------------------------------- 1 |

Welcome <%= @email %>!

2 | 3 |

You can confirm your account email through the link below:

4 | 5 |

<%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @token) %>

6 | -------------------------------------------------------------------------------- /app/views/devise/mailer/reset_password_instructions.html.erb: -------------------------------------------------------------------------------- 1 |

Hello <%= @resource.email %>!

2 | 3 |

Someone has requested a link to change your password. You can do this through the link below.

4 | 5 |

<%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @token) %>

6 | 7 |

If you didn't request this, please ignore this email.

8 |

Your password won't change until you access the link above and create a new one.

9 | -------------------------------------------------------------------------------- /app/views/devise/mailer/unlock_instructions.html.erb: -------------------------------------------------------------------------------- 1 |

Hello <%= @resource.email %>!

2 | 3 |

Your account has been locked due to an excessive number of unsuccessful sign in attempts.

4 | 5 |

Click the link below to unlock your account:

6 | 7 |

<%= link_to 'Unlock my account', unlock_url(@resource, :unlock_token => @token) %>

8 | -------------------------------------------------------------------------------- /app/views/devise/passwords/new.html.erb: -------------------------------------------------------------------------------- 1 |

Forgot your password?

2 | 3 | <%= simple_form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f| %> 4 | <%= f.error_notification %> 5 | 6 |
7 | <%= f.input :email, :required => true, :autofocus => true %> 8 |
9 | 10 |
11 | <%= f.button :submit, "Send me reset password instructions" %> 12 |
13 | <% end %> 14 | 15 | <%= render "devise/shared/links" %> 16 | -------------------------------------------------------------------------------- /app/views/devise/unlocks/new.html.erb: -------------------------------------------------------------------------------- 1 |

Resend unlock instructions

2 | 3 | <%= simple_form_for(resource, :as => resource_name, :url => unlock_path(resource_name), :html => { :method => :post }) do |f| %> 4 | <%= f.error_notification %> 5 | <%= f.full_error :unlock_token %> 6 | 7 |
8 | <%= f.input :email, :required => true, :autofocus => true %> 9 |
10 | 11 |
12 | <%= f.button :submit, "Resend unlock instructions" %> 13 |
14 | <% end %> 15 | 16 | <%= render "devise/shared/links" %> 17 | -------------------------------------------------------------------------------- /app/views/layouts/cms/_content_types.html.erb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/layouts/cms/_footer.erb: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/layouts/cms/content_page.html.erb: -------------------------------------------------------------------------------- 1 | <%# Sub-layout 2 | Wraps a view so it will display in the :main container of a page without needing to call content_for(:main) 3 | %> 4 | <% content_for :main do %><%= yield %><% end %> 5 | <%= render template: cms_template %> -------------------------------------------------------------------------------- /app/views/portlets/deprecated_placeholders/_form.html.erb: -------------------------------------------------------------------------------- 1 | Remove this portlet from any pages its on, delete it and consider removing the page if appropriate. -------------------------------------------------------------------------------- /app/views/portlets/deprecated_placeholders/render.html.erb: -------------------------------------------------------------------------------- 1 | This portlet type '<%= @portlet.name %>' has been deprecated. 2 | 3 |

Next Steps:

4 |
    5 |
  1. Remove this portlet from any pages it was placed on.
  2. 6 |
  3. Delete it from the content library.
  4. 7 |
  5. If it makes sense, remove any pages they were previously placed on.
  6. 8 |
-------------------------------------------------------------------------------- /app/views/portlets/dynamic/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | <%= f.input :code, as: :text %> 3 | <%= f.input :template, as: :text %> 4 | -------------------------------------------------------------------------------- /app/views/portlets/email_page/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | <%= f.input :sender, hint: "Enter the email for the 'from' field on any emails sent out." %> 3 | <%= f.input :subject, input_html: { value: f.object.subject || "A link you might be interested in" } %> 4 | <%= f.input :success_url, hint: "Leave blank to return the same page" %> 5 | <%= f.input :template, as: :template_editor %> 6 | -------------------------------------------------------------------------------- /app/views/portlets/forgot_password/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | <%= f.input :template, as: :template_editor %> 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/views/portlets/forgot_password/render.html.erb: -------------------------------------------------------------------------------- 1 | <%= render 'cms/sites/flash' %> 2 | <%= render file: 'devise/passwords/new' %> 3 | -------------------------------------------------------------------------------- /app/views/portlets/list/_list.html.erb: -------------------------------------------------------------------------------- 1 |

<%= @portlet.name %>

2 | -------------------------------------------------------------------------------- /app/views/portlets/list/_table.html.erb: -------------------------------------------------------------------------------- 1 |

<%= @portlet.name %>

2 | 3 | 4 | 5 | 6 | 7 | 8 | <% collection.each do |content| %> 9 | 10 | 11 | 12 | <% end %> 13 |
Name
<%= link_to_addressable_content(content.name, content) %>
-------------------------------------------------------------------------------- /app/views/portlets/list/render.html.erb: -------------------------------------------------------------------------------- 1 | <%= render file: @portlet.view_as_full_path, locals: {collection: @content_blocks} %> 2 | -------------------------------------------------------------------------------- /app/views/portlets/login/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | <%= f.input :success_url, hint: "Leave blank to send the user to the page they were trying to access" %> 3 | <%= f.input :failure_url, hint: "Leave blank to send the user to the page they tried to login from" %> 4 | <%= f.input :template, as: :template_editor %> 5 | -------------------------------------------------------------------------------- /app/views/portlets/login/render.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= render 'cms/sites/flash' %> 3 | 7 | 8 | <%= render file: 'cms/sessions/new' %> 9 | 10 |
-------------------------------------------------------------------------------- /app/views/portlets/tag_cloud/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | <%= f.input :limit, :size => 4 %> 3 | <%= f.input :sizes, input_html: { value: f.object.sizes || TagCloudPortlet.default_sizes } %> 4 | <%= f.input :template, as: :template_editor %> 5 | -------------------------------------------------------------------------------- /app/views/portlets/tag_cloud/render.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <% for tag in @cloud %> 3 | <%= link_to h(tag.name), "/tags/#{tag.name.to_slug}", :class => @sizes.split(" ")[tag.size] %> 4 | <% end %> 5 |
-------------------------------------------------------------------------------- /app/views/tests/pretend/open_with_layout.html.erb: -------------------------------------------------------------------------------- 1 | <%# This view is for testing the dummy layouts for browsercms. It should never be used/included in a project that 2 | uses BrowserCMS as gem. 3 | %> 4 | <% page_title = 'Open With Layout' %> 5 | <%= content_for :main do %>hello<% end %> -------------------------------------------------------------------------------- /bin/browsercms: -------------------------------------------------------------------------------- 1 | ##!/usr/bin/env ruby 2 | 3 | # Alias to bcms CLI 4 | load File.join(File.dirname(__FILE__), 'bcms') 5 | -------------------------------------------------------------------------------- /config/cucumber.yml: -------------------------------------------------------------------------------- 1 | <% 2 | rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : "" 3 | rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}" 4 | std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip" 5 | %> 6 | default: <%= std_opts %> features 7 | wip: --tags @wip:3 --wip features 8 | rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip 9 | -------------------------------------------------------------------------------- /config/locales/en.yml: -------------------------------------------------------------------------------- 1 | en: 2 | activerecord: 3 | attributes: 4 | attachments: 5 | data_file_path: Path 6 | cms/file_block: 7 | attachments: 8 | one: The attached file 9 | other: An attached file 10 | cms/form_field: 11 | name: Labels 12 | -------------------------------------------------------------------------------- /db/seeds.rb: -------------------------------------------------------------------------------- 1 | load File.expand_path('../browsercms.seeds.rb', __FILE__) -------------------------------------------------------------------------------- /doc/README_FOR_APP: -------------------------------------------------------------------------------- 1 | == BrowserCMS 2 | 3 | BrowserCMS is a general purpose, open source Web Content Management System (CMS), written in Ruby on Rails. See the Getting Started guide (https://github.com/browsermedia/browsercms/wiki/Getting-Started) for how to install and start a BrowserCMS project. 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /doc/design/blue_button.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/doc/design/blue_button.psd -------------------------------------------------------------------------------- /doc/design/gray_box.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/doc/design/gray_box.psd -------------------------------------------------------------------------------- /doc/design/main_nav.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/doc/design/main_nav.psd -------------------------------------------------------------------------------- /features/caching.feature: -------------------------------------------------------------------------------- 1 | Feature: Caching 2 | In order for the site to scale there should be caching in place for pages. 3 | 4 | Background: 5 | Given I am logged in as a Content Editor 6 | 7 | Scenario: Clear Page Cache 8 | When I request /cms/cache 9 | Then I should see a page named "Page Cache" 10 | When I clear the page cache 11 | Then I should see a page named "Page Cache" 12 | 13 | -------------------------------------------------------------------------------- /features/ckeditor.feature: -------------------------------------------------------------------------------- 1 | Feature: CKEditor 2 | In order to allow non-technical users to edit HTML content 3 | the open source CKEditor (WYSIWYG) will be used for content that is HTML 4 | 5 | Scenario: Editing an Html Block 6 | Given I am logged in as a Content Editor 7 | When I request /cms/content_library 8 | And I click on "create_new_html_block" 9 | Then I should see a widget to select which editor to use 10 | -------------------------------------------------------------------------------- /features/email_messages.feature: -------------------------------------------------------------------------------- 1 | Feature: Email Messages 2 | CMS Admins should be able to see sent email messages in the UI 3 | 4 | Background: 5 | Given I am logged in as a Content Editor 6 | 7 | 8 | Scenario: Multiple Pages 9 | Given there are 20 send email messages 10 | When I am at /cms/email_messages 11 | Then I should see "Displaying 1 - 15 of 20" 12 | When I click on "next_page_link" 13 | Then I should see "Displaying 16 - 20 of 20" 14 | 15 | 16 | -------------------------------------------------------------------------------- /features/manage_sections.feature: -------------------------------------------------------------------------------- 1 | Feature: Manage Sections 2 | Content Editors should be able to create sections from the sitemap in order to organize site content. 3 | 4 | Background: 5 | Given I am logged in as a Content Editor 6 | 7 | Scenario: Create Section 8 | Given I am adding a section to the root section 9 | When I create a public section 10 | Then I should see a page named "Sitemap" 11 | And the new section should be accessible to everyone -------------------------------------------------------------------------------- /features/page_routes.feature: -------------------------------------------------------------------------------- 1 | Feature: 2 | Users should be able to access CMS pages using user friendly routes, even when they have parameters. 3 | Page Routes allow for arbitrary URLs to be mapped to CMS pages. 4 | 5 | Background: 6 | Given I am logged in as a Content Editor 7 | 8 | Scenario: Multiple Pages 9 | Given there are 20 page routes 10 | When I am at /cms/page_routes 11 | Then I should see "Displaying 1 - 15 of 20" 12 | When I click on "next_page_link" 13 | Then I should see "Displaying 16 - 20 of 20" 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /features/portlets/portlet_helpers.feature: -------------------------------------------------------------------------------- 1 | Feature: Portlet Helpers 2 | Portlets should automatically include their helpers as part of their view. 3 | 4 | Background: 5 | Given I am visiting as a guest 6 | 7 | Scenario: Render Portlet Helpers 8 | Given there is a portlet that uses a helper 9 | When I view that page 10 | Then I should see the portlet helper rendered in the view -------------------------------------------------------------------------------- /features/step_definitions/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/features/step_definitions/.gitkeep -------------------------------------------------------------------------------- /features/step_definitions/html_blocks_steps.rb: -------------------------------------------------------------------------------- 1 | # i.e. | id | name | 2 | # | 1 | A | 3 | Given /^the following Html blocks exist:$/ do |table| 4 | table.hashes.each do |row| 5 | b = Cms::HtmlBlock.new(row) 6 | b.id = row['id'] 7 | b.save! 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /features/step_definitions/page_template_steps.rb: -------------------------------------------------------------------------------- 1 | Given /^there are (\d+) page templates$/ do |count| 2 | count.to_i.times do |i| 3 | create(:page_template) 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /features/step_definitions/permissions_steps.rb: -------------------------------------------------------------------------------- 1 | When /^the new group should have edit and publish permissions$/ do 2 | group = Cms::Group.last 3 | assert_equal 2, group.permissions.count 4 | assert group.has_permission?(:edit_content) 5 | assert group.has_permission?(:publish_content) 6 | end 7 | 8 | When /^the new group should have neither edit nor publish permissions$/ do 9 | group = Cms::Group.last 10 | assert_equal 0, group.permissions.count 11 | assert !group.has_permission?(:edit_content) 12 | assert !group.has_permission?(:publish_content) 13 | end 14 | -------------------------------------------------------------------------------- /features/step_definitions/tag_cloud_steps.rb: -------------------------------------------------------------------------------- 1 | When /^the a block exist that are tagged with "([^"]*)"$/ do |tag| 2 | block = create(:html_block) 3 | block.tags << Cms::Tag.named(tag).first 4 | block.save! 5 | end 6 | 7 | When /^the following tags exist:$/ do |table| 8 | table.hashes.each do |row| 9 | Cms::Tag.create!(row) 10 | end 11 | end -------------------------------------------------------------------------------- /features/step_definitions/task_steps.rb: -------------------------------------------------------------------------------- 1 | When /^I assign the home page as a task$/ do 2 | home_page = Cms::Page.with_path("/").first 3 | visit "/cms/pages/#{home_page.id}/tasks/new" 4 | end -------------------------------------------------------------------------------- /features/support/async_support.rb: -------------------------------------------------------------------------------- 1 | module AsyncSupport 2 | def eventually 3 | timeout = 5 4 | polling_interval = 0.1 5 | time_limit = Time.now + timeout 6 | loop do 7 | begin 8 | yield 9 | rescue StandardError => error 10 | end 11 | return if error.nil? 12 | raise error if Time.now >= time_limit 13 | sleep polling_interval 14 | end 15 | end 16 | end 17 | World(AsyncSupport) -------------------------------------------------------------------------------- /features/support/debug_formatter.rb: -------------------------------------------------------------------------------- 1 | require 'cucumber/formatter/pretty' 2 | 3 | module Debug 4 | class Formatter < Cucumber::Formatter::Pretty 5 | 6 | end 7 | end -------------------------------------------------------------------------------- /features/support/git_api.rb: -------------------------------------------------------------------------------- 1 | module GitAPI 2 | 3 | def create_git_project 4 | run_simple "git init" 5 | run_simple "git add ." 6 | run_simple "git commit -m 'First commit'" 7 | end 8 | end 9 | World(GitAPI) 10 | -------------------------------------------------------------------------------- /features/support/long_scenarios.rb: -------------------------------------------------------------------------------- 1 | # Some CLI scenarios run bundler, which can take a while. 2 | Before('@long-scenario') do 3 | @aruba_timeout_seconds = 60 4 | end -------------------------------------------------------------------------------- /features/support/minitest.rb: -------------------------------------------------------------------------------- 1 | require 'minitest/unit' 2 | World(MiniTest::Assertions) -------------------------------------------------------------------------------- /features/support/minitest_disable.rb: -------------------------------------------------------------------------------- 1 | require 'multi_test' 2 | MultiTest.disable_autorun -------------------------------------------------------------------------------- /features/support/page_caching_support.rb: -------------------------------------------------------------------------------- 1 | # For scenarios that need to behave under a 'production' environment 2 | # where page caching is on, we need to clean up and make sure we reset and clean up page cache after each scenario. 3 | Around('@page-caching') do |scenario, block| 4 | ActionController::Base.perform_caching = true 5 | begin 6 | block.call 7 | ensure 8 | Cms::Cache.flush 9 | ActionController::Base.perform_caching = false 10 | end 11 | end -------------------------------------------------------------------------------- /features/support/rails_api.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module RailsApi 3 | def create_rails_project(name) 4 | run_simple "rails new #{name} --skip-bundle" 5 | end 6 | end 7 | end 8 | World(Cms::RailsApi) 9 | -------------------------------------------------------------------------------- /features/taxonomy/manage_category_types.feature: -------------------------------------------------------------------------------- 1 | Feature: Manage Category Types 2 | Content editors should be able to add/edit/delete category types from the user interface. 3 | 4 | Background: 5 | Given I am logged in as a Content Editor 6 | 7 | Scenario: Add New Category Type 8 | Given I visit /cms/category_types/new 9 | And I fill in "Name" with "Product" 10 | And I click the Save button 11 | Then I should be returned to the Assets page for "Category Types" 12 | And I should see "Product" 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /features/taxonomy/tags.feature: -------------------------------------------------------------------------------- 1 | Feature: Tags 2 | Content editors should be able to add/edit/delete tags from the user interface. 3 | 4 | Background: 5 | Given I am logged in as a Content Editor 6 | 7 | Scenario: Add New Tag 8 | Given I am adding a new tag 9 | When I fill in "Name" with "red" 10 | And I click the Save button 11 | Then I should be returned to the Assets page for "Tags" 12 | And I should see "red" 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /lib/cms/acts.rb: -------------------------------------------------------------------------------- 1 | # Requires all files in the Acts As directory 2 | # 3 | # This adds the ContentBlock behavior to all Active Record objects. 4 | Dir["#{File.dirname(__FILE__)}/acts/*.rb"].each do |b| 5 | require File.join("cms", "acts", File.basename(b, ".rb")) 6 | end 7 | ActiveRecord::Base.send(:include, Cms::Acts::ContentBlock) 8 | -------------------------------------------------------------------------------- /lib/cms/admin_tab.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | 3 | # Any controller that is considered to be on the 'Admin' tab should include this. 4 | module AdminTab 5 | extend ActiveSupport::Concern 6 | 7 | included do 8 | before_action :set_menu_section 9 | end 10 | 11 | def new_button_path 12 | cms.new_user_path 13 | end 14 | end 15 | end -------------------------------------------------------------------------------- /lib/cms/authentication.rb: -------------------------------------------------------------------------------- 1 | # Require all files in the cms/authentication directory 2 | Dir["#{File.dirname(__FILE__)}/authentication/*.rb"].each do |b| 3 | require File.join("cms", "authentication", File.basename(b, ".rb")) 4 | end -------------------------------------------------------------------------------- /lib/cms/authoring.rb: -------------------------------------------------------------------------------- 1 | module Cms::Authoring 2 | 3 | # Represents the common permissions that are common for CMS operations. 4 | PERMISSIONS = [:edit_content, :administrate, :publish_content] 5 | 6 | # A full fledged editor can do these things. 7 | EDITOR_PERMISSIONS = [:edit_content, :publish_content] 8 | 9 | end -------------------------------------------------------------------------------- /lib/cms/behaviors/namespacing.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | 3 | # @deprecated To be removed in BrowserCMS 4.1 or later. 4 | def self.table_prefix=(prefix) 5 | message = "Calling Cms.table_prefix('#{prefix}') is no longer necessary and can be removed from your project. See https://github.com/browsermedia/browsercms/issues/639" 6 | ActiveSupport::Deprecation.warn(message, caller(1)) 7 | end 8 | 9 | module Behaviors 10 | module Namespacing 11 | 12 | 13 | end 14 | end 15 | end -------------------------------------------------------------------------------- /lib/cms/behaviors/naming.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module Behaviors 3 | # Assumes the 'extended' class is an instance of ActiveModel 4 | module Naming 5 | 6 | # Returns the name of this content block as it will appear in paths. 7 | # 8 | # Examples: 9 | # HtmlBlock -> html_blocks 10 | # Thing -> things 11 | def path_name 12 | model_name.element.pluralize 13 | end 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /lib/cms/commands/to_version400.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module Commands 3 | module ToVersion400 4 | 5 | def generate_devise_configuration 6 | template 'devise.rb.erb', 'config/initializers/devise.rb' 7 | end 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /lib/cms/concerns.rb: -------------------------------------------------------------------------------- 1 | # Each concern should be automatically added to each ActiveRecord class using extend. 2 | module Cms::Concerns; end 3 | 4 | Dir["#{File.dirname(__FILE__)}/concerns/*.rb"].each do |b| 5 | require File.join("cms", "concerns", File.basename(b, ".rb")) 6 | ActiveRecord::Base.extend "Cms::Concerns::#{File.basename(b, ".rb").camelize}".constantize 7 | end -------------------------------------------------------------------------------- /lib/cms/concerns/ignores_publishing.rb: -------------------------------------------------------------------------------- 1 | # Allows content types (like Category) to be handled as blocks. 2 | # Intended as temporary 3 | module Cms::Concerns::IgnoresPublishing 4 | 5 | # Needs due to content controller automatically setting a default 'publish_on_save: false' when creating content. 6 | def self.included(klass) 7 | klass.send :attr_accessor, :publish_on_save 8 | end 9 | end -------------------------------------------------------------------------------- /lib/cms/default_accessible.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module DefaultAccessible 3 | 4 | def permitted_params 5 | attribute_names.map{|string| string.to_sym} - non_permitted_params 6 | end 7 | 8 | def non_permitted_params 9 | [:id, :type, :created_by_id, :updated_by_id, :created_at, :updated_at] 10 | end 11 | 12 | end 13 | end -------------------------------------------------------------------------------- /lib/cms/error_pages.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module ErrorPages 3 | 4 | NOT_FOUND_PATH = '/system/not_found' 5 | FORBIDDEN_PATH = '/system/access_denied' 6 | SERVER_ERROR_PATH = '/system/server_error' 7 | end 8 | end -------------------------------------------------------------------------------- /lib/cms/extensions.rb: -------------------------------------------------------------------------------- 1 | # All files in cms/extensions will automatically be loaded. 2 | Dir["#{File.join(File.dirname(__FILE__), "extensions")}/**/*.rb"].each do |f| 3 | Rails.logger.info "~~ Loading extensions from #{f}" if Rails.logger 4 | require f 5 | end 6 | -------------------------------------------------------------------------------- /lib/cms/extensions/action_view/base.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module Extensions 3 | module ActionView 4 | module Base 5 | def next_tabindex 6 | @tabindex ||= 0 7 | @tabindex += 1 8 | end 9 | end 10 | end 11 | end 12 | end 13 | ActionView::Base.send(:include, Cms::Extensions::ActionView::Base) -------------------------------------------------------------------------------- /lib/cms/extensions/active_model/name.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module ActiveModel 3 | module Name 4 | 5 | # Provide backwards capablity with Rails 3.2.x method. 6 | # Hopefully only has_dynamic_attributes requires this. 7 | def foreign_key 8 | "#{self.param_key}_id" 9 | end 10 | end 11 | end 12 | end 13 | ActiveModel::Name.send(:include, Cms::ActiveModel::Name) -------------------------------------------------------------------------------- /lib/cms/extensions/active_record/errors.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module Extensions 3 | module ActiveModel 4 | module Errors 5 | def add_from_hash(errors) 6 | errors.each{|k,v| add(k, v) } unless errors.blank? 7 | end 8 | end 9 | end 10 | end 11 | end 12 | ActiveModel::Errors.send(:include, Cms::Extensions::ActiveModel::Errors) 13 | -------------------------------------------------------------------------------- /lib/cms/extensions/active_support/cache/file_store.rb: -------------------------------------------------------------------------------- 1 | module ActiveSupport 2 | module Cache 3 | class FileStore 4 | def flush 5 | FileUtils.rm_rf cache_path if File.exist?(cache_path) 6 | end 7 | end 8 | end 9 | end -------------------------------------------------------------------------------- /lib/cms/extensions/hash.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module Extensions 3 | module Hash 4 | #Returns a copy of the hash without the keys passed as arguments 5 | def except(*args) 6 | reject {|k,v| args.include?(k) } 7 | end 8 | end 9 | end 10 | end 11 | Hash.send(:include, Cms::Extensions::Hash) -------------------------------------------------------------------------------- /lib/cms/extensions/integer.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module Extensions 3 | module Integer 4 | def round_bytes 5 | if self > 1.megabyte 6 | "%0.2f MB" % (self.to_f/1.megabyte) 7 | elsif self > 1.kilobyte 8 | "%0.2f KB" % (self.to_f/1.kilobyte) 9 | else 10 | "#{self} bytes" 11 | end 12 | end 13 | end 14 | end 15 | end 16 | Integer.send(:include, Cms::Extensions::Integer) -------------------------------------------------------------------------------- /lib/cms/extensions/nil.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module Extensions 3 | module NilClass 4 | def round_bytes 5 | to_i.round_bytes 6 | end 7 | def markdown 8 | nil 9 | end 10 | def to_slug 11 | to_s 12 | end 13 | def to_formatted_s(format=nil) 14 | nil 15 | end 16 | end 17 | end 18 | end 19 | NilClass.send(:include, Cms::Extensions::NilClass) -------------------------------------------------------------------------------- /lib/cms/form_builder/default_input.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module FormBuilder 3 | module DefaultInput 4 | 5 | # Use a default value if there isn't one specfied already. 6 | def extract_default 7 | if options[:default] && object.new_record? && object.send(attribute_name).blank? 8 | input_html_options[:value] = options[:default] 9 | end 10 | end 11 | end 12 | end 13 | end -------------------------------------------------------------------------------- /lib/cms/installation_actions.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | module InstallationActions 3 | 4 | def default_engine_path(module_name, path=nil) 5 | "/#{module_name.name.underscore}" 6 | end 7 | end 8 | end -------------------------------------------------------------------------------- /lib/cms/responders/content_responder.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | class ContentResponder < ActionController::Responder 3 | 4 | def initialize(controller, resources, options={}) 5 | @page = resources[0] 6 | @page_layout = resources[1] 7 | super(controller, resources, options) 8 | end 9 | 10 | def to_html 11 | render :layout => @page_layout, :action => 'show' 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /lib/cms/version.rb: -------------------------------------------------------------------------------- 1 | ## 2 | # Allows the precise version of BrowserCMS to be determined programatically. 3 | # 4 | module Cms 5 | VERSION = "5.0.2.rc1" 6 | 7 | # Return the current version of the CMS. 8 | def self.version 9 | VERSION 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /lib/generators/browser_cms.rb: -------------------------------------------------------------------------------- 1 | require 'rails/generators/base' 2 | 3 | module BrowserCms 4 | module Generators 5 | # Base class for generators that work on copying files out of the Gem into projects. 6 | class Base < Rails::Generators::Base 7 | def self.source_root 8 | @_browsercms_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), '../../')) 9 | end 10 | end 11 | end 12 | end -------------------------------------------------------------------------------- /lib/generators/browser_cms/demo_site/USAGE: -------------------------------------------------------------------------------- 1 | This directory holds template files for generating 'demo' projects, used the `bcms demo` tool. 2 | 3 | This is a 'faux' generator which won't appear in a browserCMS project. -------------------------------------------------------------------------------- /lib/generators/browser_cms/demo_site/templates/demo_site.rake: -------------------------------------------------------------------------------- 1 | require 'find' 2 | 3 | namespace :db do 4 | 5 | desc 'Override db:install to include demo seed data.' 6 | task :install => ["db:create", "db:migrate", "db:seed", 'db:seed_demo_site'] 7 | 8 | desc 'Load the demo site seed data from db/seeds.rb' 9 | task :seed_demo_site => 'db:abort_if_pending_migrations' do 10 | demo_seed_file = File.join(Rails.root, 'db', 'demo_site_seeds.rb') 11 | load(demo_seed_file) if File.exist?(demo_seed_file) 12 | end 13 | 14 | end -------------------------------------------------------------------------------- /lib/generators/browser_cms/demo_site/templates/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/lib/generators/browser_cms/demo_site/templates/logo.jpg -------------------------------------------------------------------------------- /lib/generators/browser_cms/demo_site/templates/splash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/lib/generators/browser_cms/demo_site/templates/splash.jpg -------------------------------------------------------------------------------- /lib/generators/cms/content_block/templates/application_controller.rb.erb: -------------------------------------------------------------------------------- 1 | module <%= namespace %> 2 | class ApplicationController < ActionController::Base 3 | end 4 | end -------------------------------------------------------------------------------- /lib/generators/cms/install/USAGE: -------------------------------------------------------------------------------- 1 | Description: 2 | Installs the given module into your current browsercms project. 3 | 4 | Example: 5 | rails generate cms:install_module bcms_name_of_module 6 | 7 | This will create: 8 | what/will/it/create 9 | -------------------------------------------------------------------------------- /lib/generators/cms/install/install_generator.rb: -------------------------------------------------------------------------------- 1 | module Cms 2 | 3 | # A generic generator for installing BrowserCMS modules into a project. This will do the following: 4 | # 5 | # 1. Add the Gem to your Gemfile 6 | # 2. Call the name_of_module:install generator for that gem. 7 | class InstallGenerator < Rails::Generators::NamedBase 8 | source_root File.expand_path('../templates', __FILE__) 9 | 10 | def add_and_install_module 11 | gem name 12 | generate("#{name}:install") 13 | end 14 | 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /lib/generators/cms/portlet/templates/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%%= f.input :name %> 2 | <% for attribute in attributes -%> 3 | <%%= f.input :<%= attribute.name %> %> 4 | <% end -%> 5 | <%%= f.input :template, as: :template_editor %> -------------------------------------------------------------------------------- /lib/generators/cms/portlet/templates/portlet.rb: -------------------------------------------------------------------------------- 1 | class <%= class_name %>Portlet < Cms::Portlet 2 | 3 | description "TODO: Provide a suitable description for this portlet." 4 | 5 | # Mark this as 'true' to allow the portlet's template to be editable via the CMS admin UI. 6 | enable_template_editor false 7 | 8 | def render 9 | # Your Code Goes Here 10 | end 11 | 12 | end -------------------------------------------------------------------------------- /lib/generators/cms/portlet/templates/portlet_helper.rb: -------------------------------------------------------------------------------- 1 | ## 2 | # All methods from this helper will be available in the render.html.erb for <%= class_name %>Portlet 3 | module <%= class_name %>PortletHelper 4 | 5 | end 6 | -------------------------------------------------------------------------------- /lib/generators/cms/portlet/templates/render.html.erb: -------------------------------------------------------------------------------- 1 | <%%=h @portlet.name %> -------------------------------------------------------------------------------- /lib/generators/cms/portlet/templates/unit_test.erb: -------------------------------------------------------------------------------- 1 | require File.join(File.dirname(__FILE__), '/../../test_helper') 2 | 3 | class <%= class_name %>Test < ActiveSupport::TestCase 4 | 5 | test "Should be able to create new instance of a portlet" do 6 | assert <%= class_name %>Portlet.create!(:name => "New Portlet") 7 | end 8 | 9 | end -------------------------------------------------------------------------------- /lib/generators/cms/project/USAGE: -------------------------------------------------------------------------------- 1 | This isn't a real generator, but a place for bcms/bcms-upgrade to keep files that can be used as templates, since those two tools are basically generators. -------------------------------------------------------------------------------- /lib/generators/cms/project/templates/USAGE: -------------------------------------------------------------------------------- 1 | Installs <%= current_project %> into a project. Typically invoked indirectly via: 2 | 3 | rails generate cms:install <%= current_project %> -------------------------------------------------------------------------------- /lib/generators/cms/project/templates/devise.rb.erb: -------------------------------------------------------------------------------- 1 | # Configuration for Devise specific to your project. 2 | # BrowserCMS has configured defaults for most other values. 3 | Devise.setup do |config| 4 | 5 | config.secret_key = '<%= SecureRandom.hex(64) %>' 6 | 7 | end -------------------------------------------------------------------------------- /lib/generators/cms/project/templates/gitignore.erb: -------------------------------------------------------------------------------- 1 | coverage/**/* 2 | .DS_Store 3 | log/*.log 4 | tmp/**/* 5 | db/*.sqlite3 6 | db/schema.rb 7 | *.gem 8 | .dotest 9 | tmp/restart.txt 10 | public/cache 11 | Gemfile.lock -------------------------------------------------------------------------------- /lib/generators/cms/project/templates/module_tasks.rake: -------------------------------------------------------------------------------- 1 | # Provides tasks to make developing BrowserCMS modules easier. 2 | # Should not be packaged with the gem. 3 | namespace :db do 4 | 5 | # This copy of the core CMS task is necessary because Engines push all existing Rails tasks under app:db:install 6 | desc 'Creates and populates the initial BrowserCMS database for a new project.' 7 | task :install => %w{ db:create db:migrate db:seed } 8 | 9 | 10 | end -------------------------------------------------------------------------------- /lib/generators/cms/template/USAGE: -------------------------------------------------------------------------------- 1 | Description: 2 | Generates a basic page template in the project. 3 | 4 | Example: 5 | `rails generate template subpage` 6 | 7 | A page template in html format using erb. 8 | Template: app/views/layouts/templates/subpage.html.erb 9 | 10 | 11 | -------------------------------------------------------------------------------- /lib/generators/cms/template/templates/template.erb: -------------------------------------------------------------------------------- 1 | <% require 'cms/templates' -%> 2 | <%= Cms::Templates.default_body %> -------------------------------------------------------------------------------- /lib/sequence.rb: -------------------------------------------------------------------------------- 1 | class Sequence 2 | @current_value = 0 3 | def self.next 4 | @current_value += 1 5 | end 6 | end -------------------------------------------------------------------------------- /script/cucumber: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | vendored_cucumber_bin = Dir["#{File.dirname(__FILE__)}/../vendor/{gems,plugins}/cucumber*/bin/cucumber"].first 4 | if vendored_cucumber_bin 5 | load File.expand_path(vendored_cucumber_bin) 6 | else 7 | require 'rubygems' unless ENV['NO_RUBYGEMS'] 8 | require 'cucumber' 9 | load Cucumber::BINARY 10 | end 11 | -------------------------------------------------------------------------------- /spec/cms/authentication/test_password_strategy.rb: -------------------------------------------------------------------------------- 1 | require "minitest_helper" 2 | 3 | describe Cms::Authencation::TestPasswordStrategy do 4 | describe 'method-name' do 5 | it 'should ' do 6 | 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/cms/presenters/user_presenter_spec.rb: -------------------------------------------------------------------------------- 1 | require "minitest_helper" 2 | 3 | describe Cms::UserPresenter do 4 | describe '#logged_in?' do 5 | it "should be false for guests" do 6 | Cms::UserPresenter.new(Cms::GuestUser.new).logged_in?.must_equal false 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /spec/dummy/product_mini_test.rb: -------------------------------------------------------------------------------- 1 | require "minitest_helper" 2 | 3 | describe Dummy::Product do 4 | describe 'Factory' do 5 | it 'should ' do 6 | p = FactoryGirl.create(:product) 7 | p.wont_be_nil 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /test/assumptions_test.rb: -------------------------------------------------------------------------------- 1 | require "test_helper" 2 | 3 | module Cms 4 | 5 | # To avoid hard to debug errors associated with testing, 6 | # we verify some assumptions here about the state of the database and other things. 7 | class AssumptionsTest < ActiveSupport::TestCase 8 | 9 | test "tests assume there is no data in the database before starting" do 10 | assert_equal 0, Section.count 11 | assert_equal 0, Page.count 12 | assert_equal 0, Permission.count 13 | end 14 | end 15 | end -------------------------------------------------------------------------------- /test/console_helper.rb: -------------------------------------------------------------------------------- 1 | # Used to expose behavior to the console in a single statement... 2 | # require 'test/console_helper' 3 | # 4 | require 'test/test_file' 5 | Cms.activate_logging -------------------------------------------------------------------------------- /test/dummy/Rakefile: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env rake 2 | # Add your own tasks in files placed in lib/tasks ending in .rake, 3 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 4 | 5 | require File.expand_path('../config/application', __FILE__) 6 | 7 | Dummy::Application.load_tasks 8 | -------------------------------------------------------------------------------- /test/dummy/app/assets/javascripts/application.js: -------------------------------------------------------------------------------- 1 | // This is a manifest file that'll be compiled into including all the files listed below. 2 | // Add new JavaScript/Coffee code in separate files in this directory and they'll automatically 3 | // be included in the compiled file accessible from http://example.com/assets/application.js 4 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 5 | // the compiled file. 6 | // 7 | //= require jquery 8 | //= require jquery_ujs 9 | //= require_tree . 10 | -------------------------------------------------------------------------------- /test/dummy/app/assets/javascripts/cms/catalogs.js: -------------------------------------------------------------------------------- 1 | // Place all the behaviors and hooks related to the matching controller here. 2 | // All this logic will automatically be available in application.js. 3 | -------------------------------------------------------------------------------- /test/dummy/app/assets/javascripts/design.js: -------------------------------------------------------------------------------- 1 | // Place all the behaviors and hooks related to the matching controller here. 2 | // All this logic will automatically be available in application.js. 3 | -------------------------------------------------------------------------------- /test/dummy/app/assets/stylesheets/application.css: -------------------------------------------------------------------------------- 1 | /* 2 | * This is a manifest file that'll automatically include all the stylesheets available in this directory 3 | * and any sub-directories. You're free to add application-wide styles to this file and they'll appear at 4 | * the top of the compiled file, but it's generally better to create a new file per style scope. 5 | *= require_self 6 | *= require_tree . 7 | */ -------------------------------------------------------------------------------- /test/dummy/app/assets/stylesheets/custom-forms.css.scss: -------------------------------------------------------------------------------- 1 | @import 'bootstrap'; 2 | -------------------------------------------------------------------------------- /test/dummy/app/controllers/application_controller.rb: -------------------------------------------------------------------------------- 1 | class ApplicationController < ActionController::Base 2 | protect_from_forgery 3 | end 4 | -------------------------------------------------------------------------------- /test/dummy/app/controllers/content_page_controller.rb: -------------------------------------------------------------------------------- 1 | class ContentPageController < ApplicationController 2 | 3 | include Cms::Acts::ContentPage 4 | layout 'templates/subpage' 5 | 6 | def index 7 | 8 | end 9 | 10 | def custom_page 11 | self.page_title = "My Custom Page" 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /test/dummy/app/controllers/design_controller.rb: -------------------------------------------------------------------------------- 1 | # Can be removed after design integration is completed. 2 | class DesignController < ApplicationController 3 | def show 4 | render params[:page], layout: 'design_layout' 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /test/dummy/app/controllers/dummy/catalogs_controller.rb: -------------------------------------------------------------------------------- 1 | class Dummy::CatalogsController < Cms::ContentBlockController 2 | end 3 | -------------------------------------------------------------------------------- /test/dummy/app/controllers/dummy/deprecated_inputs_controller.rb: -------------------------------------------------------------------------------- 1 | class Dummy::DeprecatedInputsController < Cms::ContentBlockController 2 | end 3 | -------------------------------------------------------------------------------- /test/dummy/app/controllers/dummy/products_controller.rb: -------------------------------------------------------------------------------- 1 | module Dummy 2 | class ProductsController < Cms::ContentBlockController 3 | 4 | 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /test/dummy/app/controllers/dummy/sample_blocks_controller.rb: -------------------------------------------------------------------------------- 1 | # This exists only for testing 2 | class Dummy::SampleBlocksController < Cms::ContentBlockController 3 | end -------------------------------------------------------------------------------- /test/dummy/app/helpers/application_helper.rb: -------------------------------------------------------------------------------- 1 | module ApplicationHelper 2 | end 3 | -------------------------------------------------------------------------------- /test/dummy/app/helpers/cms/catalogs_helper.rb: -------------------------------------------------------------------------------- 1 | module Cms::CatalogsHelper 2 | end 3 | -------------------------------------------------------------------------------- /test/dummy/app/helpers/content_page_helper.rb: -------------------------------------------------------------------------------- 1 | module ContentPageHelper 2 | end 3 | -------------------------------------------------------------------------------- /test/dummy/app/helpers/design_helper.rb: -------------------------------------------------------------------------------- 1 | module DesignHelper 2 | end 3 | -------------------------------------------------------------------------------- /test/dummy/app/mailers/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/dummy/app/mailers/.gitkeep -------------------------------------------------------------------------------- /test/dummy/app/models/dummy/catalog.rb: -------------------------------------------------------------------------------- 1 | class Dummy::Catalog < ActiveRecord::Base 2 | acts_as_content_block 3 | content_module :testing 4 | self.table_name = :catalogs 5 | is_addressable path: "/catalogs" 6 | 7 | has_many_attachments :photos, :styles => { :thumbnail => "50x50" } 8 | end 9 | -------------------------------------------------------------------------------- /test/dummy/app/models/dummy/product.rb: -------------------------------------------------------------------------------- 1 | # This is a sample content type that mimics how content blocks are generated with project status. 2 | class Dummy::Product < ActiveRecord::Base 3 | acts_as_content_block 4 | content_module :testing 5 | 6 | belongs_to_category 7 | 8 | is_addressable path: '/products', template: 'subpage' 9 | 10 | has_attachment :photo_1 11 | has_attachment :photo_2 12 | 13 | end 14 | -------------------------------------------------------------------------------- /test/dummy/app/models/dummy/sample_block.rb: -------------------------------------------------------------------------------- 1 | module Dummy 2 | class SampleBlock 3 | extend ::ActiveModel::Naming 4 | 5 | def self.versioned?; 6 | true; 7 | end 8 | 9 | def self.publishable?; 10 | true; 11 | end 12 | 13 | def self.connectable?; 14 | true; 15 | end 16 | 17 | def self.searchable?; 18 | false; 19 | end 20 | 21 | end 22 | end -------------------------------------------------------------------------------- /test/dummy/app/portlets/aaa_portlet.rb: -------------------------------------------------------------------------------- 1 | # For verification that portlets are ordered alphabetically. 2 | class AaaPortlet < Cms::Portlet 3 | 4 | description '[TEST] Verifies alphabetical listing of portlets.' 5 | end -------------------------------------------------------------------------------- /test/dummy/app/portlets/find_category_portlet.rb: -------------------------------------------------------------------------------- 1 | class FindCategoryPortlet < Cms::Portlet 2 | 3 | description "[TEST] Verify that portlets can read parameters." 4 | 5 | # Mark this as 'true' to allow the portlet's template to be editable via the CMS admin UI. 6 | enable_template_editor false 7 | 8 | def render 9 | @expected_parameter = params[:category_id] 10 | if @expected_parameter 11 | @category = Cms::Category.where(id: @expected_parameter).first # Explicitly want to return nil rather than NotFound 12 | end 13 | end 14 | 15 | end -------------------------------------------------------------------------------- /test/dummy/app/portlets/helpers/find_category_portlet_helper.rb: -------------------------------------------------------------------------------- 1 | ## 2 | # All methods from this helper will be available in the render.html.erb for FindCategoryPortlet 3 | module FindCategoryPortletHelper 4 | 5 | end 6 | -------------------------------------------------------------------------------- /test/dummy/app/portlets/helpers/uses_helper_portlet_helper.rb: -------------------------------------------------------------------------------- 1 | # For testing portlet behavior 2 | module UsesHelperPortletHelper 3 | 4 | EXPECTED_CONTENT = "PortletHelper Output" 5 | def content_from_helper 6 | EXPECTED_CONTENT 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /test/dummy/app/portlets/product_catalog_portlet.rb: -------------------------------------------------------------------------------- 1 | class ProductCatalogPortlet < Cms::Portlet 2 | 3 | # Mark this as 'true' to allow the portlet's template to be editable via the CMS admin UI. 4 | enable_template_editor false 5 | 6 | description '[TEST] Return list of all product catalogs.' 7 | def render 8 | # Your Code Goes Here 9 | end 10 | 11 | end -------------------------------------------------------------------------------- /test/dummy/app/portlets/uses_helper_portlet.rb: -------------------------------------------------------------------------------- 1 | class UsesHelperPortlet < Cms::Portlet 2 | 3 | # Mark this as 'true' to allow the portlet's template to be editable via the CMS admin UI. 4 | enable_template_editor false 5 | description "[TEST] Exists only to test helper functionality in BrowserCMS." 6 | 7 | def render 8 | page_title "A Custom Title" 9 | end 10 | 11 | end -------------------------------------------------------------------------------- /test/dummy/app/views/content_page/custom_page.html.erb: -------------------------------------------------------------------------------- 1 | <%= content_for :main do %> 2 | Some Custom Content 3 | <% end %> -------------------------------------------------------------------------------- /test/dummy/app/views/content_page/index.html.erb: -------------------------------------------------------------------------------- 1 |

ContentPage#index

2 |

Find me in app/views/content_page/index.html.erb

3 | -------------------------------------------------------------------------------- /test/dummy/app/views/devise_tests/show.html.erb: -------------------------------------------------------------------------------- 1 | Devise Test
2 | 3 |

Old

4 | Current User: <%= current_user.inspect %>
5 | Thread Local: <%= Cms::User.current.inspect %>
6 | Logged in? <%= logged_in? %>
7 | 8 |

New

9 | Current Cms User: <%= current_cms_user.inspect %>
10 | Signed In <%= cms_user_signed_in? %> -------------------------------------------------------------------------------- /test/dummy/app/views/dummy/catalogs/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name, as: :name %> 2 | <%= f.input :slug, as: :path %> 3 | <%= f.input :attachments, as: :attachments %> -------------------------------------------------------------------------------- /test/dummy/app/views/dummy/catalogs/render.html.erb: -------------------------------------------------------------------------------- 1 | 2 |

Name: <%= @content_block.name %>

3 |

Attachments: <%= attachment_viewer @content_block %>

4 | -------------------------------------------------------------------------------- /test/dummy/app/views/dummy/deprecated_inputs/render.html.erb: -------------------------------------------------------------------------------- 1 | 2 |

Name: <%= @content_block.name %>

3 |

Content: <%= @content_block.content %>

4 |

Cover Photo: <%= link_to "Cover Photo", attachment_path_for(@content_block.cover_photo) %>

5 |

Attachments: <%= attachment_viewer @content_block %>

6 |

Category: <%= @content_block.category_name %>

7 |

Tags: <%= @content_block.tags.map {|t| t.name }.join(", ") %>

8 | -------------------------------------------------------------------------------- /test/dummy/app/views/dummy/products/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name, as: :name %> 2 | <%= f.input :slug, as: :path %> 3 | <%= f.input :price %> 4 | <%= f.input :on_special %> 5 | 6 | <%= f.input :photo_1, as: :file_picker %> 7 | <%= f.input :photo_2, as: :file_picker %> 8 | 9 | <%# The following should be exactly what is generated by cms:content_block category:category %> 10 | <%= f.association :category, collection: categories_for('Product') %> 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/dummy/app/views/dummy/products/view.html.erb: -------------------------------------------------------------------------------- 1 | <% content_for :main do %> 2 | This is the public view of a Product.
3 | 4 | <%= @block.name %> 5 | <% end %> -------------------------------------------------------------------------------- /test/dummy/app/views/layouts/application.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Dummy 5 | <%= stylesheet_link_tag "application" %> 6 | <%= javascript_include_tag "application" %> 7 | <%= csrf_meta_tags %> 8 | 9 | 10 | 11 | <%= yield %> 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test/dummy/app/views/layouts/templates/product.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <%= page_title %> 5 | <%= yield :html_head %> 6 | 7 | 8 |
9 | This is the special product's template. 10 |

<%= page_header %>

11 | <%= container :main %> 12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /test/dummy/app/views/portlets/find_category/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | <%= f.input :template, as: :template_editor %> -------------------------------------------------------------------------------- /test/dummy/app/views/portlets/find_category/render.html.erb: -------------------------------------------------------------------------------- 1 | <% if @category %> 2 | Pass. Found category <%= @category.name %> 3 | <% elsif @expected_parameter.blank? %> 4 | Fail. param[:category_id] is missing. 5 | <% else %> 6 | Fail. Could not find category with param[:category_id] = <%= @expected_parameter %> 7 | <% end %> -------------------------------------------------------------------------------- /test/dummy/app/views/portlets/list/all_products/_list.html.erb: -------------------------------------------------------------------------------- 1 |

My special list:

2 | -------------------------------------------------------------------------------- /test/dummy/app/views/portlets/product_catalog/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | <%= f.input :template, as: :template_editor%> -------------------------------------------------------------------------------- /test/dummy/app/views/portlets/product_catalog/render.html.erb: -------------------------------------------------------------------------------- 1 | Product Catalog 2 | 3 | We have: <%= Dummy::Product.all.size %> products.
4 | <% Dummy::Product.all.each do |p| %> 5 | <%= link_to "View #{p.name}", product_path(:id => p.id) %>
6 | <% end %> -------------------------------------------------------------------------------- /test/dummy/app/views/portlets/uses_helper/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= f.input :name %> 2 | <%= f.input :template, as: :template_editor %> -------------------------------------------------------------------------------- /test/dummy/app/views/portlets/uses_helper/render.html.erb: -------------------------------------------------------------------------------- 1 | <%= content_from_helper %> -------------------------------------------------------------------------------- /test/dummy/config.ru: -------------------------------------------------------------------------------- 1 | # This file is used by Rack-based servers to start the application. 2 | 3 | require ::File.expand_path('../config/environment', __FILE__) 4 | run Dummy::Application 5 | -------------------------------------------------------------------------------- /test/dummy/config/boot.rb: -------------------------------------------------------------------------------- 1 | # Loads the Gemfile from the root of the project itself, rather than a typical rails app. 2 | 3 | require 'rubygems' 4 | gemfile = File.expand_path('../../../../Gemfile', __FILE__) 5 | 6 | if File.exist?(gemfile) 7 | ENV['BUNDLE_GEMFILE'] = gemfile 8 | require 'bundler' 9 | Bundler.setup 10 | end 11 | 12 | $:.unshift File.expand_path('../../../../lib', __FILE__) -------------------------------------------------------------------------------- /test/dummy/config/database.sqlite3.yml: -------------------------------------------------------------------------------- 1 | # Do not edit the database.yml file directory. BrowserCMS test suites run against multiple databases, so 2 | # make changes to the correct 'source' db file. In this case, edit: config/database.sqlite3.yml instead. 3 | development: 4 | adapter: sqlite3 5 | database: ":memory:" 6 | 7 | 8 | test: 9 | adapter: sqlite3 10 | database: "db/test.sqlite3" 11 | 12 | -------------------------------------------------------------------------------- /test/dummy/config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the rails application 2 | require File.expand_path('../application', __FILE__) 3 | 4 | # Initialize the rails application 5 | Dummy::Application.initialize! 6 | -------------------------------------------------------------------------------- /test/dummy/config/initializers/backtrace_silencers.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. 4 | # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } 5 | 6 | # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. 7 | # Rails.backtrace_cleaner.remove_silencers! 8 | -------------------------------------------------------------------------------- /test/dummy/config/initializers/mime_types.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Add new mime types for use in respond_to blocks: 4 | # Mime::Type.register "text/richtext", :rtf 5 | # Mime::Type.register_alias "text/html", :iphone 6 | -------------------------------------------------------------------------------- /test/dummy/config/initializers/secret_token.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Your secret key for verifying the integrity of signed cookies. 4 | # If you change this key, all old signed cookies will become invalid! 5 | # Make sure the secret is at least 30 characters and all random, 6 | # no regular words or you'll be exposed to dictionary attacks. 7 | Dummy::Application.config.secret_token = 'd1ce8ef2495760baca07ee33778cd7ccd2274619ae0698939b990952da242a9cd094ab47fbc4295ed04ddf30b9077e1cb16fd97c9a03237a16a99f037bb44c43' 8 | -------------------------------------------------------------------------------- /test/dummy/config/initializers/session_store.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Dummy::Application.config.session_store :cookie_store, key: '_dummy_session' 4 | 5 | # Use the database for sessions instead of the cookie-based default, 6 | # which shouldn't be used to store highly confidential information 7 | # (create the session table with "rails generate session_migration") 8 | # Dummy::Application.config.session_store :active_record_store 9 | -------------------------------------------------------------------------------- /test/dummy/config/initializers/wrap_parameters.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | # 3 | # This file contains settings for ActionController::ParamsWrapper which 4 | # is enabled by default. 5 | 6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. 7 | ActiveSupport.on_load(:action_controller) do 8 | wrap_parameters format: [:json] 9 | end 10 | 11 | # Disable root element in JSON by default. 12 | ActiveSupport.on_load(:active_record) do 13 | self.include_root_in_json = false 14 | end 15 | -------------------------------------------------------------------------------- /test/dummy/db/migrate/20111228141250_create_products.rb: -------------------------------------------------------------------------------- 1 | class CreateProducts < ActiveRecord::Migration 2 | def change 3 | create_content_table :products do |t| 4 | t.string :name 5 | t.integer :price 6 | t.integer :category_id 7 | t.boolean :on_special 8 | t.timestamps null: false 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /test/dummy/db/migrate/20120419183855_create_catalogs.rb: -------------------------------------------------------------------------------- 1 | class CreateCatalogs < ActiveRecord::Migration 2 | def change 3 | create_content_table :catalogs do |t| 4 | t.string :name 5 | 6 | t.timestamps null: false 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /test/dummy/db/migrate/20130924162315_create_deprecated_inputs.rb: -------------------------------------------------------------------------------- 1 | class CreateDeprecatedInputs < ActiveRecord::Migration 2 | def change 3 | create_content_table :deprecated_inputs do |t| 4 | t.string :name 5 | t.text :content, :size => (64.kilobytes + 1) 6 | t.text :template, :size => (64.kilobytes + 1) 7 | t.string :template_handler 8 | t.belongs_to :category 9 | t.timestamps null: false 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /test/dummy/db/seeds.rb: -------------------------------------------------------------------------------- 1 | load File.expand_path('../../../../db/browsercms.seeds.rb', __FILE__) 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/dummy/lib/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/dummy/lib/assets/.gitkeep -------------------------------------------------------------------------------- /test/dummy/lib/templates/erb/scaffold/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%%= simple_form_for(@<%= singular_table_name %>) do |f| %> 2 | <%%= f.error_notification %> 3 | 4 |
5 | <%- attributes.each do |attribute| -%> 6 | <%%= f.<%= attribute.reference? ? :association : :input %> :<%= attribute.name %> %> 7 | <%- end -%> 8 |
9 | 10 |
11 | <%%= f.button :submit %> 12 |
13 | <%% end %> 14 | -------------------------------------------------------------------------------- /test/dummy/public/design/FONTS/icomoon (Brookes-MacBook-Pro-Home's conflicted copy 2013-10-15).eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/dummy/public/design/FONTS/icomoon (Brookes-MacBook-Pro-Home's conflicted copy 2013-10-15).eot -------------------------------------------------------------------------------- /test/dummy/public/design/FONTS/icomoon (Brookes-MacBook-Pro-Home's conflicted copy 2013-10-15).ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/dummy/public/design/FONTS/icomoon (Brookes-MacBook-Pro-Home's conflicted copy 2013-10-15).ttf -------------------------------------------------------------------------------- /test/dummy/public/design/FONTS/icomoon (Brookes-MacBook-Pro-Home's conflicted copy 2013-10-15).woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/dummy/public/design/FONTS/icomoon (Brookes-MacBook-Pro-Home's conflicted copy 2013-10-15).woff -------------------------------------------------------------------------------- /test/dummy/public/design/FONTS/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/dummy/public/design/FONTS/icomoon.eot -------------------------------------------------------------------------------- /test/dummy/public/design/FONTS/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/dummy/public/design/FONTS/icomoon.ttf -------------------------------------------------------------------------------- /test/dummy/public/design/FONTS/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/dummy/public/design/FONTS/icomoon.woff -------------------------------------------------------------------------------- /test/dummy/public/design/IMG/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/dummy/public/design/IMG/logo.png -------------------------------------------------------------------------------- /test/dummy/public/design/IMG/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/dummy/public/design/IMG/search.png -------------------------------------------------------------------------------- /test/dummy/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/dummy/public/favicon.ico -------------------------------------------------------------------------------- /test/dummy/script/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application. 3 | 4 | APP_PATH = File.expand_path('../../config/application', __FILE__) 5 | require File.expand_path('../../config/boot', __FILE__) 6 | require 'rails/commands' 7 | -------------------------------------------------------------------------------- /test/dummy/test/controllers/design_controller_test.rb: -------------------------------------------------------------------------------- 1 | require "test_helper" 2 | 3 | class DesignControllerTest < ActionController::TestCase 4 | test "should get show" do 5 | get :show 6 | assert_response :success 7 | end 8 | 9 | end 10 | -------------------------------------------------------------------------------- /test/dummy/test/functional/cms/catalogs_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class Cms::CatalogsControllerTest < ActionController::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/dummy/test/functional/content_page_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class ContentPageControllerTest < ActionController::TestCase 4 | test "should get index" do 5 | get :index 6 | assert_response :success 7 | end 8 | 9 | end 10 | -------------------------------------------------------------------------------- /test/dummy/test/helpers/design_helper_test.rb: -------------------------------------------------------------------------------- 1 | require "test_helper" 2 | 3 | class DesignHelperTest < ActionView::TestCase 4 | 5 | def test_sanity 6 | assert true 7 | end 8 | 9 | end 10 | -------------------------------------------------------------------------------- /test/dummy/test/models/deprecated_input_test.rb: -------------------------------------------------------------------------------- 1 | require "test_helper" 2 | 3 | module Dummy 4 | class DeprecatedInputTest < ActiveSupport::TestCase 5 | 6 | test "#model_form_name should use full model name" do 7 | assert_equal "dummy_deprecated_input", DeprecatedInput.content_type.param_key 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /test/dummy/test/unit/helpers/content_page_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class ContentPageHelperTest < ActionView::TestCase 4 | end 5 | -------------------------------------------------------------------------------- /test/dummy/test/unit/portlets/find_category_portlet_test.rb: -------------------------------------------------------------------------------- 1 | require File.join(File.dirname(__FILE__), '/../../test_helper') 2 | 3 | class FindCategoryTest < ActiveSupport::TestCase 4 | 5 | test "Should be able to create new instance of a portlet" do 6 | assert FindCategoryPortlet.create!(:name => "New Portlet") 7 | end 8 | 9 | end -------------------------------------------------------------------------------- /test/dummy/test/unit/portlets/uses_helper_portlet_test.rb: -------------------------------------------------------------------------------- 1 | require File.join(File.dirname(__FILE__), '/../../test_helper') 2 | 3 | class UsesHelperTest < ActiveSupport::TestCase 4 | 5 | test "Should be able to create new instance of a portlet" do 6 | assert UsesHelperPortlet.create!(:name => "New Portlet") 7 | end 8 | 9 | end -------------------------------------------------------------------------------- /test/fixtures/giraffe.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/fixtures/giraffe.jpeg -------------------------------------------------------------------------------- /test/fixtures/hurricane.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/fixtures/hurricane.jpeg -------------------------------------------------------------------------------- /test/fixtures/multipart/foo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/fixtures/multipart/foo.jpg -------------------------------------------------------------------------------- /test/fixtures/multipart/sample_upload.txt: -------------------------------------------------------------------------------- 1 | This is a file. -------------------------------------------------------------------------------- /test/fixtures/multipart/second_upload.txt: -------------------------------------------------------------------------------- 1 | This is a second file. -------------------------------------------------------------------------------- /test/fixtures/multipart/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/fixtures/multipart/test.jpg -------------------------------------------------------------------------------- /test/fixtures/multipart/version1.txt: -------------------------------------------------------------------------------- 1 | v1 -------------------------------------------------------------------------------- /test/fixtures/multipart/version2.txt: -------------------------------------------------------------------------------- 1 | v2 -------------------------------------------------------------------------------- /test/fixtures/perspective.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/fixtures/perspective.pdf -------------------------------------------------------------------------------- /test/functional/cms/cache_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | module Cms 4 | class CacheControllerTest < ActionController::TestCase 5 | include Cms::ControllerTestHelper 6 | 7 | def setup 8 | login_as_cms_admin 9 | end 10 | 11 | def test_expire_cache 12 | #TODO: Implement Cache Expiration 13 | end 14 | 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /test/functional/cms/inline_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | module Cms 4 | class InlineContentControllerTest < ActionController::TestCase 5 | 6 | test "filter html from page_title" do 7 | assert_equal "Remove", ActionView::Base.full_sanitizer.sanitize("

Remove

") 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /test/functional/cms/log/test.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/browsermedia/browsercms/0a7fb9219f6e24cce4271b420c2ea07febd1b748/test/functional/cms/log/test.log -------------------------------------------------------------------------------- /test/helpers/cms/content_types_helper_test.rb: -------------------------------------------------------------------------------- 1 | require "test_helper" 2 | 3 | describe ContentTypesHelper do 4 | 5 | it "must be a real test" do 6 | flunk "Need real tests" 7 | end 8 | 9 | end 10 | -------------------------------------------------------------------------------- /test/support/database_helpers.rb: -------------------------------------------------------------------------------- 1 | module DatabaseHelpers 2 | 3 | # Drops and recreates the tables for a content type 4 | # @param [Symbol] name The name of the content table to drop/recreate. 5 | def self.ensure_content_table_exists(name) 6 | ActiveRecord::Base.connection.instance_eval do 7 | drop_table(name) rescue nil 8 | drop_table("#{name.to_s.singularize}_versions".to_sym) rescue nil 9 | create_content_table(name) do |t| 10 | t.string :name 11 | t.timestamps null: false 12 | end 13 | end 14 | end 15 | end 16 | 17 | -------------------------------------------------------------------------------- /test/support/mini_test_matchers.rb: -------------------------------------------------------------------------------- 1 | require 'minitest/autorun' 2 | module MiniTest::Assertions 3 | def assert_is_published(block) 4 | assert block.published?, "Expected #{block} to be published." 5 | klass = block.class 6 | most_recent_entity = klass.find(block.id) 7 | assert most_recent_entity.published?, "Expected most recent version '#{most_recent_entity}' to be published." 8 | end 9 | end 10 | Cms::Behaviors::Publishing.infect_an_assertion :assert_is_published, :must_be_published, :only_one_argument 11 | -------------------------------------------------------------------------------- /test/unit/behaviors/content_api_test.rb: -------------------------------------------------------------------------------- 1 | require "minitest_helper" 2 | 3 | describe "ContentApi" do 4 | 5 | let(:html_block){ Cms::HtmlBlock.new } 6 | 7 | describe '#content_name' do 8 | it "should generate a readable key" do 9 | html_block.content_name.must_equal "html_block" 10 | end 11 | 12 | it "should properly namespace non-core blocks" do 13 | Dummy::Product.new.content_name.must_equal "dummy/product" 14 | end 15 | end 16 | 17 | 18 | end 19 | -------------------------------------------------------------------------------- /test/unit/extensions/hash_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class HashTest < ActiveSupport::TestCase 4 | def test_except 5 | x = {:a => 1, :b => 2} 6 | assert_equal({:b => 2}, x.except(:a)) 7 | assert_equal({:a => 1, :b => 2}, x) 8 | end 9 | 10 | # Confirms ActiveSupport::Hash#extract! behavior works as we expect. 11 | def test_extract! 12 | x = {:a => 1, :b => 2} 13 | y = x.extract!(:b, :c) 14 | assert_equal({:b => 2}, y) 15 | assert_equal({:a => 1}, x) 16 | 17 | end 18 | 19 | 20 | 21 | end -------------------------------------------------------------------------------- /test/unit/extensions/integer_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class IntegerTest < ActiveSupport::TestCase 4 | def test_round_bytes 5 | assert_equal "99.44 MB", (99.megabytes + 450.kilobytes).round_bytes 6 | assert_equal "12.04 KB", (12.kilobytes + 45).round_bytes 7 | assert_equal "999 bytes", 999.round_bytes 8 | assert_equal "0 bytes", nil.round_bytes 9 | end 10 | end -------------------------------------------------------------------------------- /test/unit/extensions/string_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | # Tests the BrowserCMS extentions to the String class 4 | class StringTest < ActiveSupport::TestCase 5 | 6 | test "string should be pluralizes unless there is one" do 7 | assert_equal "posts", "post".pluralize_unless_one(0) 8 | assert_equal "posts", "post".pluralize_unless_one(2) 9 | end 10 | 11 | test "string shouldn't be pluralized if there is one" do 12 | assert_equal "post", "post".pluralize_unless_one(1) 13 | end 14 | end -------------------------------------------------------------------------------- /test/unit/generators/install_generator_test.rb: -------------------------------------------------------------------------------- 1 | require "test_helper" 2 | require 'cms/installation_actions' 3 | 4 | module BcmsWidget 5 | end 6 | 7 | class InstallGeneratorTest < ActiveSupport::TestCase 8 | 9 | include Cms::InstallationActions 10 | 11 | test "generate default name" do 12 | assert_equal "/bcms_widget", default_engine_path(BcmsWidget) 13 | end 14 | 15 | end -------------------------------------------------------------------------------- /test/unit/helpers/date_picker_test.rb: -------------------------------------------------------------------------------- 1 | require "test_helper" 2 | 3 | class DatePickerTest < ActiveSupport::TestCase 4 | 5 | test "DatePicker Formatting" do 6 | assert_equal "yy/mm/dd", Cms::DatePicker.jquery_format 7 | end 8 | 9 | test "Formats date for UI output" do 10 | date = DateTime.new(2011, 3, 14) 11 | assert_equal "2011/03/14", Cms::DatePicker.format_for_ui(date) 12 | end 13 | 14 | test "Formatting of nil dates" do 15 | assert_nil(Cms::DatePicker.format_for_ui(nil)) 16 | end 17 | end -------------------------------------------------------------------------------- /test/unit/helpers/rendering_helper_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class Cms::RenderingHelperTest < ActionView::TestCase 4 | 5 | def test_nothing 6 | end 7 | 8 | end -------------------------------------------------------------------------------- /test/unit/lib/cms/default_accessible_test.rb: -------------------------------------------------------------------------------- 1 | require "test_helper" 2 | 3 | 4 | describe Cms::DefaultAccessible do 5 | describe '#permitted_params' do 6 | it 'should return most attributes' do 7 | permitted.must_include :name 8 | permitted.wont_include :id 9 | end 10 | end 11 | 12 | def permitted 13 | @permitted ||= Cms::HtmlBlock.permitted_params 14 | end 15 | 16 | end 17 | -------------------------------------------------------------------------------- /test/unit/lib/cms/engine_configuration_test.rb: -------------------------------------------------------------------------------- 1 | require "test_helper" 2 | 3 | class EngineConfigurationTest < ActiveSupport::TestCase 4 | 5 | test "site_domain" do 6 | assert_equal "localhost:3000", Rails.configuration.cms.site_domain 7 | end 8 | end -------------------------------------------------------------------------------- /test/unit/mock_file_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class MockFileTest < ActiveSupport::TestCase 4 | 5 | def setup 6 | 7 | end 8 | 9 | def teardown 10 | 11 | end 12 | 13 | 14 | test "mock files can have data read from them" do 15 | file = mock_file(:original_filename=>"version1.txt") 16 | assert_not_nil file.path 17 | assert_equal "v1", open(file.path) { |f| f.read } 18 | end 19 | end -------------------------------------------------------------------------------- /test/unit/models/permission_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class PermissionTest < ActiveSupport::TestCase 4 | def test_create 5 | perm = create(:permission, :name => "test") 6 | assert !build(:permission, :name => "").valid? 7 | assert !build(:permission, :name => "test").valid? 8 | assert_equal perm, Cms::Permission.named("test").first 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /test/unit/portlets/list_portlet_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class ListTest < ActiveSupport::TestCase 4 | 5 | test "Should be able to create new instance of a portlet" do 6 | assert ListPortlet.create!(:name => "New Portlet") 7 | end 8 | 9 | end --------------------------------------------------------------------------------