browsercms 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE.txt +165 -0
- data/README.markdown +56 -0
- data/app/controllers/application_controller.rb +14 -0
- data/app/controllers/cms/application_controller.rb +78 -0
- data/app/controllers/cms/attachments_controller.rb +11 -0
- data/app/controllers/cms/base_controller.rb +13 -0
- data/app/controllers/cms/cache_controller.rb +22 -0
- data/app/controllers/cms/categories_controller.rb +2 -0
- data/app/controllers/cms/category_types_controller.rb +5 -0
- data/app/controllers/cms/connectors_controller.rb +63 -0
- data/app/controllers/cms/content_block_controller.rb +262 -0
- data/app/controllers/cms/content_controller.rb +227 -0
- data/app/controllers/cms/content_types_controller.rb +7 -0
- data/app/controllers/cms/dashboard_controller.rb +9 -0
- data/app/controllers/cms/dynamic_views_controller.rb +65 -0
- data/app/controllers/cms/email_messages_controller.rb +14 -0
- data/app/controllers/cms/error_handling.rb +18 -0
- data/app/controllers/cms/file_blocks_controller.rb +2 -0
- data/app/controllers/cms/groups_controller.rb +26 -0
- data/app/controllers/cms/home_controller.rb +5 -0
- data/app/controllers/cms/html_blocks_controller.rb +2 -0
- data/app/controllers/cms/image_blocks_controller.rb +2 -0
- data/app/controllers/cms/links_controller.rb +65 -0
- data/app/controllers/cms/page_route_conditions_controller.rb +2 -0
- data/app/controllers/cms/page_route_options_controller.rb +56 -0
- data/app/controllers/cms/page_route_requirements_controller.rb +2 -0
- data/app/controllers/cms/page_routes_controller.rb +45 -0
- data/app/controllers/cms/pages_controller.rb +129 -0
- data/app/controllers/cms/portlet_controller.rb +12 -0
- data/app/controllers/cms/portlets_controller.rb +40 -0
- data/app/controllers/cms/redirects_controller.rb +19 -0
- data/app/controllers/cms/resource_controller.rb +108 -0
- data/app/controllers/cms/routes_controller.rb +23 -0
- data/app/controllers/cms/section_nodes_controller.rb +40 -0
- data/app/controllers/cms/sections_controller.rb +125 -0
- data/app/controllers/cms/sessions_controller.rb +64 -0
- data/app/controllers/cms/tags_controller.rb +9 -0
- data/app/controllers/cms/tasks_controller.rb +52 -0
- data/app/controllers/cms/toolbar_controller.rb +12 -0
- data/app/controllers/cms/users_controller.rb +98 -0
- data/app/helpers/application_helper.rb +3 -0
- data/app/helpers/cms/application_helper.rb +190 -0
- data/app/helpers/cms/form_builder.rb +98 -0
- data/app/helpers/cms/form_tag_helper.rb +32 -0
- data/app/helpers/cms/menu_helper.rb +172 -0
- data/app/helpers/cms/page_helper.rb +60 -0
- data/app/helpers/cms/path_helper.rb +48 -0
- data/app/helpers/cms/section_nodes_helper.rb +13 -0
- data/app/models/abstract_file_block.rb +13 -0
- data/app/models/attachment.rb +193 -0
- data/app/models/category.rb +40 -0
- data/app/models/category_type.rb +34 -0
- data/app/models/connector.rb +76 -0
- data/app/models/content_type.rb +95 -0
- data/app/models/content_type_group.rb +3 -0
- data/app/models/dynamic_view.rb +82 -0
- data/app/models/email_message.rb +31 -0
- data/app/models/email_message_mailer.rb +11 -0
- data/app/models/file_block.rb +21 -0
- data/app/models/group.rb +30 -0
- data/app/models/group_permission.rb +7 -0
- data/app/models/group_section.rb +4 -0
- data/app/models/group_type.rb +12 -0
- data/app/models/group_type_permission.rb +4 -0
- data/app/models/guest_user.rb +39 -0
- data/app/models/html_block.rb +40 -0
- data/app/models/image_block.rb +22 -0
- data/app/models/link.rb +35 -0
- data/app/models/page.rb +275 -0
- data/app/models/page_partial.rb +22 -0
- data/app/models/page_route.rb +58 -0
- data/app/models/page_route_condition.rb +2 -0
- data/app/models/page_route_option.rb +3 -0
- data/app/models/page_route_requirement.rb +2 -0
- data/app/models/page_template.rb +48 -0
- data/app/models/permission.rb +10 -0
- data/app/models/portlet.rb +144 -0
- data/app/models/redirect.rb +4 -0
- data/app/models/section.rb +140 -0
- data/app/models/section_node.rb +93 -0
- data/app/models/site.rb +41 -0
- data/app/models/tag.rb +62 -0
- data/app/models/tagging.rb +9 -0
- data/app/models/task.rb +67 -0
- data/app/models/user.rb +125 -0
- data/app/models/user_group_membership.rb +4 -0
- data/app/portlets/dynamic_portlet.rb +7 -0
- data/app/portlets/email_page_portlet.rb +24 -0
- data/app/portlets/login_portlet.rb +10 -0
- data/app/portlets/tag_cloud_portlet.rb +13 -0
- data/app/views/cms/blocks/_hidden_fields.html.erb +10 -0
- data/app/views/cms/blocks/_toolbar.html.erb +9 -0
- data/app/views/cms/blocks/_toolbar_for_collection.html.erb +26 -0
- data/app/views/cms/blocks/_toolbar_for_member.html.erb +38 -0
- data/app/views/cms/blocks/edit.html.erb +25 -0
- data/app/views/cms/blocks/index.html.erb +123 -0
- data/app/views/cms/blocks/new.html.erb +21 -0
- data/app/views/cms/blocks/show.html.erb +40 -0
- data/app/views/cms/blocks/usages.html.erb +34 -0
- data/app/views/cms/blocks/versions.html.erb +90 -0
- data/app/views/cms/cache/show.html.erb +12 -0
- data/app/views/cms/categories/_form.html.erb +36 -0
- data/app/views/cms/category_types/_form.html.erb +1 -0
- data/app/views/cms/connectors/new.html.erb +71 -0
- data/app/views/cms/content/no_page.html.erb +37 -0
- data/app/views/cms/content/show.html.erb +21 -0
- data/app/views/cms/content_types/index.html.erb +14 -0
- data/app/views/cms/dashboard/_page_drafts.html.erb +49 -0
- data/app/views/cms/dashboard/_tasks.html.erb +54 -0
- data/app/views/cms/dashboard/index.html.erb +15 -0
- data/app/views/cms/dynamic_views/_form.html.erb +11 -0
- data/app/views/cms/dynamic_views/edit.html.erb +3 -0
- data/app/views/cms/dynamic_views/index.html.erb +48 -0
- data/app/views/cms/dynamic_views/new.html.erb +3 -0
- data/app/views/cms/email_messages/index.html.erb +41 -0
- data/app/views/cms/email_messages/show.html.erb +57 -0
- data/app/views/cms/file_blocks/_form.html.erb +30 -0
- data/app/views/cms/file_blocks/render.html.erb +5 -0
- data/app/views/cms/form_builder/_cms_date_picker.html.erb +12 -0
- data/app/views/cms/form_builder/_cms_drop_down.html.erb +19 -0
- data/app/views/cms/form_builder/_cms_file_field.html.erb +32 -0
- data/app/views/cms/form_builder/_cms_tag_list.html.erb +15 -0
- data/app/views/cms/form_builder/_cms_text_area.html.erb +13 -0
- data/app/views/cms/form_builder/_cms_text_editor.html.erb +18 -0
- data/app/views/cms/form_builder/_cms_text_field.html.erb +12 -0
- data/app/views/cms/groups/_form.html.erb +45 -0
- data/app/views/cms/groups/_permissions.html.erb +36 -0
- data/app/views/cms/groups/_sections.html.erb +18 -0
- data/app/views/cms/groups/edit.html.erb +4 -0
- data/app/views/cms/groups/index.html.erb +60 -0
- data/app/views/cms/groups/new.html.erb +4 -0
- data/app/views/cms/html_blocks/_form.html.erb +3 -0
- data/app/views/cms/html_blocks/render.html.erb +1 -0
- data/app/views/cms/image_blocks/_form.html.erb +30 -0
- data/app/views/cms/image_blocks/render.html.erb +1 -0
- data/app/views/cms/links/_form.html.erb +13 -0
- data/app/views/cms/links/destroy.js.rjs +2 -0
- data/app/views/cms/links/edit.html.erb +14 -0
- data/app/views/cms/links/new.html.erb +15 -0
- data/app/views/cms/page_routes/_form.html.erb +11 -0
- data/app/views/cms/page_routes/edit.html.erb +3 -0
- data/app/views/cms/page_routes/index.html.erb +50 -0
- data/app/views/cms/page_routes/new.html.erb +3 -0
- data/app/views/cms/page_routes/show.html.erb +14 -0
- data/app/views/cms/pages/_edit_connector.html.erb +16 -0
- data/app/views/cms/pages/_edit_container.html.erb +8 -0
- data/app/views/cms/pages/_form.html.erb +46 -0
- data/app/views/cms/pages/edit.html.erb +23 -0
- data/app/views/cms/pages/new.html.erb +33 -0
- data/app/views/cms/pages/versions.html.erb +91 -0
- data/app/views/cms/redirects/_form.html.erb +15 -0
- data/app/views/cms/redirects/edit.html.erb +3 -0
- data/app/views/cms/redirects/index.html.erb +45 -0
- data/app/views/cms/redirects/new.html.erb +3 -0
- data/app/views/cms/routes/index.html.erb +36 -0
- data/app/views/cms/section_nodes/_link.html.erb +11 -0
- data/app/views/cms/section_nodes/_node.html.erb +34 -0
- data/app/views/cms/section_nodes/_page.html.erb +14 -0
- data/app/views/cms/section_nodes/_section.html.erb +12 -0
- data/app/views/cms/section_nodes/_section_node.html.erb +10 -0
- data/app/views/cms/section_nodes/index.html.erb +31 -0
- data/app/views/cms/sections/_form.html.erb +58 -0
- data/app/views/cms/sections/_page.html.erb +4 -0
- data/app/views/cms/sections/_section.html.erb +8 -0
- data/app/views/cms/sections/destroy.js.rjs +2 -0
- data/app/views/cms/sections/edit.html.erb +10 -0
- data/app/views/cms/sections/file_browser.xml.builder +14 -0
- data/app/views/cms/sections/index.html.erb +23 -0
- data/app/views/cms/sections/new.html.erb +21 -0
- data/app/views/cms/sessions/new.html.erb +32 -0
- data/app/views/cms/shared/_admin_sidebar.html.erb +30 -0
- data/app/views/cms/shared/_exception.html.erb +6 -0
- data/app/views/cms/shared/_pagination.html.erb +31 -0
- data/app/views/cms/shared/_version_conflict_diff.html.erb +11 -0
- data/app/views/cms/shared/_version_conflict_error.html.erb +6 -0
- data/app/views/cms/shared/error.html.erb +40 -0
- data/app/views/cms/tags/_form.html.erb +1 -0
- data/app/views/cms/tags/render.html.erb +53 -0
- data/app/views/cms/tasks/new.html.erb +36 -0
- data/app/views/cms/toolbar/index.html.erb +12 -0
- data/app/views/cms/users/_form.html.erb +12 -0
- data/app/views/cms/users/_groups.html.erb +11 -0
- data/app/views/cms/users/_password.html.erb +8 -0
- data/app/views/cms/users/_toolbar.html.erb +22 -0
- data/app/views/cms/users/_user_fields.html.erb +20 -0
- data/app/views/cms/users/change_password.html.erb +19 -0
- data/app/views/cms/users/edit.html.erb +16 -0
- data/app/views/cms/users/index.html.erb +62 -0
- data/app/views/cms/users/new.html.erb +13 -0
- data/app/views/layouts/_cms_toolbar.html.erb +21 -0
- data/app/views/layouts/_page_toolbar.html.erb +118 -0
- data/app/views/layouts/application.html.erb +11 -0
- data/app/views/layouts/cms/_footer.erb +4 -0
- data/app/views/layouts/cms/_head.html.erb +21 -0
- data/app/views/layouts/cms/administration.html.erb +34 -0
- data/app/views/layouts/cms/application.html.erb +25 -0
- data/app/views/layouts/cms/content_library.html.erb +94 -0
- data/app/views/layouts/cms/dashboard.html.erb +16 -0
- data/app/views/layouts/cms/login.html.erb +30 -0
- data/app/views/layouts/cms/section_nodes.html.erb +20 -0
- data/app/views/layouts/cms/thickbox.html.erb +24 -0
- data/app/views/layouts/cms/toolbar.html.erb +23 -0
- data/app/views/portlets/dynamic/_form.html.erb +3 -0
- data/app/views/portlets/email_page/_form.html.erb +7 -0
- data/app/views/portlets/email_page/render.html.erb +17 -0
- data/app/views/portlets/login/_form.html.erb +6 -0
- data/app/views/portlets/login/render.html.erb +27 -0
- data/app/views/portlets/portlets/_form.html.erb +19 -0
- data/app/views/portlets/tag_cloud/_form.html.erb +4 -0
- data/app/views/portlets/tag_cloud/render.html.erb +5 -0
- data/browsercms.gemspec +929 -0
- data/db/demo/data.rb +96 -0
- data/db/demo/page_partials/_footer.html.erb +6 -0
- data/db/demo/page_partials/_header.html.erb +24 -0
- data/db/demo/page_templates/home_page.html.erb +49 -0
- data/db/demo/page_templates/sub_page.html.erb +37 -0
- data/db/migrate/20080815014337_browsercms_3_0_0.rb +274 -0
- data/db/migrate/20081114172307_load_seed_data.rb +92 -0
- data/lib/acts_as_list.rb +252 -0
- data/lib/browsercms.rb +12 -0
- data/lib/cms/acts/content_block.rb +31 -0
- data/lib/cms/authentication/controller.rb +194 -0
- data/lib/cms/authentication/model.rb +116 -0
- data/lib/cms/behaviors.rb +33 -0
- data/lib/cms/behaviors/archiving.rb +43 -0
- data/lib/cms/behaviors/attaching.rb +184 -0
- data/lib/cms/behaviors/categorizing.rb +31 -0
- data/lib/cms/behaviors/connecting.rb +99 -0
- data/lib/cms/behaviors/dynamic_attributes.rb +367 -0
- data/lib/cms/behaviors/flush_cache_on_change.rb +33 -0
- data/lib/cms/behaviors/hiding.rb +46 -0
- data/lib/cms/behaviors/pagination.rb +209 -0
- data/lib/cms/behaviors/publishing.rb +112 -0
- data/lib/cms/behaviors/rendering.rb +144 -0
- data/lib/cms/behaviors/searching.rb +49 -0
- data/lib/cms/behaviors/soft_deleting.rb +77 -0
- data/lib/cms/behaviors/taggable.rb +56 -0
- data/lib/cms/behaviors/userstamping.rb +37 -0
- data/lib/cms/behaviors/versioning.rb +265 -0
- data/lib/cms/caching.rb +20 -0
- data/lib/cms/data_loader.rb +28 -0
- data/lib/cms/extensions.rb +4 -0
- data/lib/cms/extensions/action_view/base.rb +13 -0
- data/lib/cms/extensions/active_record/base.rb +16 -0
- data/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb +72 -0
- data/lib/cms/extensions/active_record/errors.rb +12 -0
- data/lib/cms/extensions/active_support/cache/file_store.rb +9 -0
- data/lib/cms/extensions/hash.rb +21 -0
- data/lib/cms/extensions/integer.rb +16 -0
- data/lib/cms/extensions/nil.rb +19 -0
- data/lib/cms/extensions/string.rb +19 -0
- data/lib/cms/init.rb +100 -0
- data/lib/cms/routes.rb +129 -0
- data/lib/initial_data.rb +30 -0
- data/lib/sequence.rb +6 -0
- data/lib/tasks/cms.rake +83 -0
- data/lib/tasks/db.rake +67 -0
- data/lib/tasks/dev.rake +20 -0
- data/public/fckeditor/editor/css/behaviors/disablehandles.htc +15 -0
- data/public/fckeditor/editor/css/behaviors/showtableborders.htc +36 -0
- data/public/fckeditor/editor/css/fck_editorarea.css +110 -0
- data/public/fckeditor/editor/css/fck_internal.css +199 -0
- data/public/fckeditor/editor/css/fck_showtableborders_gecko.css +49 -0
- data/public/fckeditor/editor/css/images/block_address.png +0 -0
- data/public/fckeditor/editor/css/images/block_blockquote.png +0 -0
- data/public/fckeditor/editor/css/images/block_div.png +0 -0
- data/public/fckeditor/editor/css/images/block_h1.png +0 -0
- data/public/fckeditor/editor/css/images/block_h2.png +0 -0
- data/public/fckeditor/editor/css/images/block_h3.png +0 -0
- data/public/fckeditor/editor/css/images/block_h4.png +0 -0
- data/public/fckeditor/editor/css/images/block_h5.png +0 -0
- data/public/fckeditor/editor/css/images/block_h6.png +0 -0
- data/public/fckeditor/editor/css/images/block_p.png +0 -0
- data/public/fckeditor/editor/css/images/block_pre.png +0 -0
- data/public/fckeditor/editor/css/images/fck_anchor.gif +0 -0
- data/public/fckeditor/editor/css/images/fck_flashlogo.gif +0 -0
- data/public/fckeditor/editor/css/images/fck_hiddenfield.gif +0 -0
- data/public/fckeditor/editor/css/images/fck_pagebreak.gif +0 -0
- data/public/fckeditor/editor/css/images/fck_plugin.gif +0 -0
- data/public/fckeditor/editor/dialog/common/fck_dialog_common.css +85 -0
- data/public/fckeditor/editor/dialog/common/fck_dialog_common.js +311 -0
- data/public/fckeditor/editor/dialog/common/images/locked.gif +0 -0
- data/public/fckeditor/editor/dialog/common/images/reset.gif +0 -0
- data/public/fckeditor/editor/dialog/common/images/unlocked.gif +0 -0
- data/public/fckeditor/editor/dialog/fck_about.html +161 -0
- data/public/fckeditor/editor/dialog/fck_about/logo_fckeditor.gif +0 -0
- data/public/fckeditor/editor/dialog/fck_about/logo_fredck.gif +0 -0
- data/public/fckeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gif +0 -0
- data/public/fckeditor/editor/dialog/fck_anchor.html +220 -0
- data/public/fckeditor/editor/dialog/fck_button.html +104 -0
- data/public/fckeditor/editor/dialog/fck_checkbox.html +104 -0
- data/public/fckeditor/editor/dialog/fck_colorselector.html +172 -0
- data/public/fckeditor/editor/dialog/fck_div.html +364 -0
- data/public/fckeditor/editor/dialog/fck_docprops.html +600 -0
- data/public/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html +113 -0
- data/public/fckeditor/editor/dialog/fck_flash.html +152 -0
- data/public/fckeditor/editor/dialog/fck_flash/fck_flash.js +300 -0
- data/public/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html +50 -0
- data/public/fckeditor/editor/dialog/fck_form.html +109 -0
- data/public/fckeditor/editor/dialog/fck_hiddenfield.html +115 -0
- data/public/fckeditor/editor/dialog/fck_image.html +258 -0
- data/public/fckeditor/editor/dialog/fck_image/fck_image.js +512 -0
- data/public/fckeditor/editor/dialog/fck_image/fck_image_preview.html +72 -0
- data/public/fckeditor/editor/dialog/fck_link.html +295 -0
- data/public/fckeditor/editor/dialog/fck_link/fck_link.js +893 -0
- data/public/fckeditor/editor/dialog/fck_listprop.html +120 -0
- data/public/fckeditor/editor/dialog/fck_paste.html +346 -0
- data/public/fckeditor/editor/dialog/fck_radiobutton.html +104 -0
- data/public/fckeditor/editor/dialog/fck_replace.html +648 -0
- data/public/fckeditor/editor/dialog/fck_select.html +180 -0
- data/public/fckeditor/editor/dialog/fck_select/fck_select.js +194 -0
- data/public/fckeditor/editor/dialog/fck_smiley.html +111 -0
- data/public/fckeditor/editor/dialog/fck_source.html +68 -0
- data/public/fckeditor/editor/dialog/fck_specialchar.html +121 -0
- data/public/fckeditor/editor/dialog/fck_spellerpages.html +70 -0
- data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/blank.html +0 -0
- data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js +87 -0
- data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html +153 -0
- data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm +148 -0
- data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php +199 -0
- data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl +181 -0
- data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js +461 -0
- data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html +71 -0
- data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css +49 -0
- data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js +272 -0
- data/public/fckeditor/editor/dialog/fck_table.html +298 -0
- data/public/fckeditor/editor/dialog/fck_tablecell.html +257 -0
- data/public/fckeditor/editor/dialog/fck_template.html +242 -0
- data/public/fckeditor/editor/dialog/fck_template/images/template1.gif +0 -0
- data/public/fckeditor/editor/dialog/fck_template/images/template2.gif +0 -0
- data/public/fckeditor/editor/dialog/fck_template/images/template3.gif +0 -0
- data/public/fckeditor/editor/dialog/fck_textarea.html +94 -0
- data/public/fckeditor/editor/dialog/fck_textfield.html +136 -0
- data/public/fckeditor/editor/dtd/fck_dtd_test.html +41 -0
- data/public/fckeditor/editor/dtd/fck_xhtml10strict.js +116 -0
- data/public/fckeditor/editor/dtd/fck_xhtml10transitional.js +140 -0
- data/public/fckeditor/editor/fckdebug.html +153 -0
- data/public/fckeditor/editor/fckdialog.html +812 -0
- data/public/fckeditor/editor/fckeditor.html +317 -0
- data/public/fckeditor/editor/fckeditor.original.html +424 -0
- data/public/fckeditor/editor/filemanager/browser/default/browser.css +87 -0
- data/public/fckeditor/editor/filemanager/browser/default/browser.html +200 -0
- data/public/fckeditor/editor/filemanager/browser/default/frmactualfolder.html +95 -0
- data/public/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html +114 -0
- data/public/fckeditor/editor/filemanager/browser/default/frmfolders.html +198 -0
- data/public/fckeditor/editor/filemanager/browser/default/frmresourceslist.html +169 -0
- data/public/fckeditor/editor/filemanager/browser/default/frmresourcetype.html +68 -0
- data/public/fckeditor/editor/filemanager/browser/default/frmupload.html +115 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/ButtonArrow.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/Folder.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/Folder32.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/FolderOpened.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/FolderOpened32.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/FolderUp.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/ai.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/avi.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/bmp.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/cs.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/default.icon.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/dll.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/doc.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/exe.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/fla.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/gif.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/htm.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/html.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/jpg.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/js.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/mdb.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/mp3.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/pdf.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/png.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/ppt.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/rdp.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/swf.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/swt.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/txt.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/vsd.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/xls.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/xml.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/zip.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/ai.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/avi.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/bmp.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/cs.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/default.icon.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/dll.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/doc.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/exe.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/fla.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/gif.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/htm.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/html.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/jpg.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/js.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/mdb.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/mp3.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/pdf.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/png.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/ppt.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/rdp.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/swf.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/swt.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/txt.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/vsd.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/xls.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/xml.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/icons/zip.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/images/spacer.gif +0 -0
- data/public/fckeditor/editor/filemanager/browser/default/js/common.js +88 -0
- data/public/fckeditor/editor/filemanager/browser/default/js/fckxml.js +147 -0
- data/public/fckeditor/editor/images/anchor.gif +0 -0
- data/public/fckeditor/editor/images/arrow_ltr.gif +0 -0
- data/public/fckeditor/editor/images/arrow_rtl.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/angel_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/angry_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/broken_heart.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/cake.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/confused_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/cry_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/devil_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/embaressed_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/envelope.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/heart.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/kiss.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/lightbulb.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/omg_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/regular_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/sad_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/shades_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/teeth_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/thumbs_down.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/thumbs_up.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/tounge_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif +0 -0
- data/public/fckeditor/editor/images/smiley/msn/wink_smile.gif +0 -0
- data/public/fckeditor/editor/images/spacer.gif +0 -0
- data/public/fckeditor/editor/js/fckadobeair.js +176 -0
- data/public/fckeditor/editor/js/fckeditorcode_gecko.js +108 -0
- data/public/fckeditor/editor/js/fckeditorcode_ie.js +109 -0
- data/public/fckeditor/editor/lang/_translationstatus.txt +78 -0
- data/public/fckeditor/editor/lang/af.js +526 -0
- data/public/fckeditor/editor/lang/ar.js +526 -0
- data/public/fckeditor/editor/lang/bg.js +526 -0
- data/public/fckeditor/editor/lang/bn.js +526 -0
- data/public/fckeditor/editor/lang/bs.js +526 -0
- data/public/fckeditor/editor/lang/ca.js +526 -0
- data/public/fckeditor/editor/lang/cs.js +526 -0
- data/public/fckeditor/editor/lang/da.js +526 -0
- data/public/fckeditor/editor/lang/de.js +526 -0
- data/public/fckeditor/editor/lang/el.js +526 -0
- data/public/fckeditor/editor/lang/en-au.js +526 -0
- data/public/fckeditor/editor/lang/en-ca.js +526 -0
- data/public/fckeditor/editor/lang/en-uk.js +526 -0
- data/public/fckeditor/editor/lang/en.js +526 -0
- data/public/fckeditor/editor/lang/eo.js +526 -0
- data/public/fckeditor/editor/lang/es.js +526 -0
- data/public/fckeditor/editor/lang/et.js +526 -0
- data/public/fckeditor/editor/lang/eu.js +527 -0
- data/public/fckeditor/editor/lang/fa.js +526 -0
- data/public/fckeditor/editor/lang/fi.js +526 -0
- data/public/fckeditor/editor/lang/fo.js +526 -0
- data/public/fckeditor/editor/lang/fr-ca.js +526 -0
- data/public/fckeditor/editor/lang/fr.js +526 -0
- data/public/fckeditor/editor/lang/gl.js +526 -0
- data/public/fckeditor/editor/lang/gu.js +526 -0
- data/public/fckeditor/editor/lang/he.js +526 -0
- data/public/fckeditor/editor/lang/hi.js +526 -0
- data/public/fckeditor/editor/lang/hr.js +526 -0
- data/public/fckeditor/editor/lang/hu.js +526 -0
- data/public/fckeditor/editor/lang/it.js +526 -0
- data/public/fckeditor/editor/lang/ja.js +526 -0
- data/public/fckeditor/editor/lang/km.js +526 -0
- data/public/fckeditor/editor/lang/ko.js +526 -0
- data/public/fckeditor/editor/lang/lt.js +526 -0
- data/public/fckeditor/editor/lang/lv.js +526 -0
- data/public/fckeditor/editor/lang/mn.js +526 -0
- data/public/fckeditor/editor/lang/ms.js +526 -0
- data/public/fckeditor/editor/lang/nb.js +526 -0
- data/public/fckeditor/editor/lang/nl.js +526 -0
- data/public/fckeditor/editor/lang/no.js +526 -0
- data/public/fckeditor/editor/lang/pl.js +526 -0
- data/public/fckeditor/editor/lang/pt-br.js +526 -0
- data/public/fckeditor/editor/lang/pt.js +526 -0
- data/public/fckeditor/editor/lang/ro.js +526 -0
- data/public/fckeditor/editor/lang/ru.js +526 -0
- data/public/fckeditor/editor/lang/sk.js +526 -0
- data/public/fckeditor/editor/lang/sl.js +526 -0
- data/public/fckeditor/editor/lang/sr-latn.js +526 -0
- data/public/fckeditor/editor/lang/sr.js +526 -0
- data/public/fckeditor/editor/lang/sv.js +526 -0
- data/public/fckeditor/editor/lang/th.js +526 -0
- data/public/fckeditor/editor/lang/tr.js +526 -0
- data/public/fckeditor/editor/lang/uk.js +526 -0
- data/public/fckeditor/editor/lang/vi.js +526 -0
- data/public/fckeditor/editor/lang/zh-cn.js +526 -0
- data/public/fckeditor/editor/lang/zh.js +526 -0
- data/public/fckeditor/editor/plugins/autogrow/fckplugin.js +99 -0
- data/public/fckeditor/editor/plugins/bbcode/_sample/sample.config.js +26 -0
- data/public/fckeditor/editor/plugins/bbcode/_sample/sample.html +67 -0
- data/public/fckeditor/editor/plugins/bbcode/fckplugin.js +123 -0
- data/public/fckeditor/editor/plugins/dragresizetable/fckplugin.js +524 -0
- data/public/fckeditor/editor/plugins/placeholder/fck_placeholder.html +105 -0
- data/public/fckeditor/editor/plugins/placeholder/fckplugin.js +187 -0
- data/public/fckeditor/editor/plugins/placeholder/lang/de.js +27 -0
- data/public/fckeditor/editor/plugins/placeholder/lang/en.js +27 -0
- data/public/fckeditor/editor/plugins/placeholder/lang/es.js +27 -0
- data/public/fckeditor/editor/plugins/placeholder/lang/fr.js +27 -0
- data/public/fckeditor/editor/plugins/placeholder/lang/it.js +27 -0
- data/public/fckeditor/editor/plugins/placeholder/lang/pl.js +27 -0
- data/public/fckeditor/editor/plugins/placeholder/placeholder.gif +0 -0
- data/public/fckeditor/editor/plugins/simplecommands/fckplugin.js +29 -0
- data/public/fckeditor/editor/plugins/tablecommands/fckplugin.js +33 -0
- data/public/fckeditor/editor/skins/_fckviewstrips.html +121 -0
- data/public/fckeditor/editor/skins/default/fck_dialog.css +402 -0
- data/public/fckeditor/editor/skins/default/fck_dialog_ie6.js +110 -0
- data/public/fckeditor/editor/skins/default/fck_editor.css +464 -0
- data/public/fckeditor/editor/skins/default/fck_strip.gif +0 -0
- data/public/fckeditor/editor/skins/default/images/dialog.sides.gif +0 -0
- data/public/fckeditor/editor/skins/default/images/dialog.sides.png +0 -0
- data/public/fckeditor/editor/skins/default/images/dialog.sides.rtl.png +0 -0
- data/public/fckeditor/editor/skins/default/images/sprites.gif +0 -0
- data/public/fckeditor/editor/skins/default/images/sprites.png +0 -0
- data/public/fckeditor/editor/skins/default/images/toolbar.arrowright.gif +0 -0
- data/public/fckeditor/editor/skins/default/images/toolbar.buttonarrow.gif +0 -0
- data/public/fckeditor/editor/skins/default/images/toolbar.collapse.gif +0 -0
- data/public/fckeditor/editor/skins/default/images/toolbar.end.gif +0 -0
- data/public/fckeditor/editor/skins/default/images/toolbar.expand.gif +0 -0
- data/public/fckeditor/editor/skins/default/images/toolbar.separator.gif +0 -0
- data/public/fckeditor/editor/skins/default/images/toolbar.start.gif +0 -0
- data/public/fckeditor/editor/skins/office2003/fck_dialog.css +402 -0
- data/public/fckeditor/editor/skins/office2003/fck_dialog_ie6.js +110 -0
- data/public/fckeditor/editor/skins/office2003/fck_editor.css +476 -0
- data/public/fckeditor/editor/skins/office2003/fck_strip.gif +0 -0
- data/public/fckeditor/editor/skins/office2003/images/dialog.sides.gif +0 -0
- data/public/fckeditor/editor/skins/office2003/images/dialog.sides.png +0 -0
- data/public/fckeditor/editor/skins/office2003/images/dialog.sides.rtl.png +0 -0
- data/public/fckeditor/editor/skins/office2003/images/sprites.gif +0 -0
- data/public/fckeditor/editor/skins/office2003/images/sprites.png +0 -0
- data/public/fckeditor/editor/skins/office2003/images/toolbar.arrowright.gif +0 -0
- data/public/fckeditor/editor/skins/office2003/images/toolbar.bg.gif +0 -0
- data/public/fckeditor/editor/skins/office2003/images/toolbar.buttonarrow.gif +0 -0
- data/public/fckeditor/editor/skins/office2003/images/toolbar.collapse.gif +0 -0
- data/public/fckeditor/editor/skins/office2003/images/toolbar.end.gif +0 -0
- data/public/fckeditor/editor/skins/office2003/images/toolbar.expand.gif +0 -0
- data/public/fckeditor/editor/skins/office2003/images/toolbar.separator.gif +0 -0
- data/public/fckeditor/editor/skins/office2003/images/toolbar.start.gif +0 -0
- data/public/fckeditor/editor/skins/silver/fck_dialog.css +402 -0
- data/public/fckeditor/editor/skins/silver/fck_dialog_ie6.js +110 -0
- data/public/fckeditor/editor/skins/silver/fck_editor.css +473 -0
- data/public/fckeditor/editor/skins/silver/fck_strip.gif +0 -0
- data/public/fckeditor/editor/skins/silver/images/dialog.sides.gif +0 -0
- data/public/fckeditor/editor/skins/silver/images/dialog.sides.png +0 -0
- data/public/fckeditor/editor/skins/silver/images/dialog.sides.rtl.png +0 -0
- data/public/fckeditor/editor/skins/silver/images/sprites.gif +0 -0
- data/public/fckeditor/editor/skins/silver/images/sprites.png +0 -0
- data/public/fckeditor/editor/skins/silver/images/toolbar.arrowright.gif +0 -0
- data/public/fckeditor/editor/skins/silver/images/toolbar.buttonarrow.gif +0 -0
- data/public/fckeditor/editor/skins/silver/images/toolbar.buttonbg.gif +0 -0
- data/public/fckeditor/editor/skins/silver/images/toolbar.collapse.gif +0 -0
- data/public/fckeditor/editor/skins/silver/images/toolbar.end.gif +0 -0
- data/public/fckeditor/editor/skins/silver/images/toolbar.expand.gif +0 -0
- data/public/fckeditor/editor/skins/silver/images/toolbar.separator.gif +0 -0
- data/public/fckeditor/editor/skins/silver/images/toolbar.start.gif +0 -0
- data/public/fckeditor/fckconfig.js +364 -0
- data/public/fckeditor/fckdebug.html +153 -0
- data/public/fckeditor/fckdialog.html +812 -0
- data/public/fckeditor/fckeditor.html +317 -0
- data/public/fckeditor/fckeditor.js +328 -0
- data/public/fckeditor/fckeditor.original.html +424 -0
- data/public/fckeditor/fckpackager.xml +262 -0
- data/public/fckeditor/fckstyles.xml +111 -0
- data/public/fckeditor/fcktemplates.xml +103 -0
- data/public/images/cms/administration/user_browser_bg.gif +0 -0
- data/public/images/cms/bg.png +0 -0
- data/public/images/cms/bl_curve.png +0 -0
- data/public/images/cms/bottom_cap.png +0 -0
- data/public/images/cms/bottom_cap_content.png +0 -0
- data/public/images/cms/browse.gif +0 -0
- data/public/images/cms/browser_media_logo.png +0 -0
- data/public/images/cms/browsercms_logo.png +0 -0
- data/public/images/cms/buttons/button.png +0 -0
- data/public/images/cms/buttons/button_bg.png +0 -0
- data/public/images/cms/buttons/button_cap.png +0 -0
- data/public/images/cms/buttons/button_cap_h.png +0 -0
- data/public/images/cms/buttons/button_cap_off.gif +0 -0
- data/public/images/cms/buttons/button_h.png +0 -0
- data/public/images/cms/buttons/button_off.png +0 -0
- data/public/images/cms/buttons/delete_x.png +0 -0
- data/public/images/cms/buttons/delete_x_disabled.png +0 -0
- data/public/images/cms/buttons/delete_x_h.png +0 -0
- data/public/images/cms/buttons/sm_button.gif +0 -0
- data/public/images/cms/buttons/sm_button_2.gif +0 -0
- data/public/images/cms/buttons/sm_button_2_h.gif +0 -0
- data/public/images/cms/buttons/sm_button_h.gif +0 -0
- data/public/images/cms/containers/add.gif +0 -0
- data/public/images/cms/containers/alpha.png +0 -0
- data/public/images/cms/containers/beta.png +0 -0
- data/public/images/cms/containers/delete.gif +0 -0
- data/public/images/cms/containers/down.gif +0 -0
- data/public/images/cms/containers/edit.gif +0 -0
- data/public/images/cms/containers/up.gif +0 -0
- data/public/images/cms/containers/view.gif +0 -0
- data/public/images/cms/content_bg.gif +0 -0
- data/public/images/cms/dashboard/bottom_cap.png +0 -0
- data/public/images/cms/dashboard/bottom_cap_content.png +0 -0
- data/public/images/cms/dashboard/header_bg.gif +0 -0
- data/public/images/cms/dashboard/header_left_bg.gif +0 -0
- data/public/images/cms/dashboard/table_header_bg.gif +0 -0
- data/public/images/cms/dashboard/top_cap.png +0 -0
- data/public/images/cms/dashed.gif +0 -0
- data/public/images/cms/datepicker/clear.gif +0 -0
- data/public/images/cms/datepicker/close.gif +0 -0
- data/public/images/cms/dk_button_l.gif +0 -0
- data/public/images/cms/dk_button_r.gif +0 -0
- data/public/images/cms/dot.png +0 -0
- data/public/images/cms/draft_status.gif +0 -0
- data/public/images/cms/gray_long_bg.gif +0 -0
- data/public/images/cms/icons/actions/add.png +0 -0
- data/public/images/cms/icons/actions/config.png +0 -0
- data/public/images/cms/icons/actions/connect.png +0 -0
- data/public/images/cms/icons/actions/delete.png +0 -0
- data/public/images/cms/icons/actions/down.png +0 -0
- data/public/images/cms/icons/actions/edit.png +0 -0
- data/public/images/cms/icons/actions/folder.png +0 -0
- data/public/images/cms/icons/actions/folder_add.png +0 -0
- data/public/images/cms/icons/actions/folder_delete.png +0 -0
- data/public/images/cms/icons/actions/folder_edit.png +0 -0
- data/public/images/cms/icons/actions/folder_move.png +0 -0
- data/public/images/cms/icons/actions/folder_open.png +0 -0
- data/public/images/cms/icons/actions/history.png +0 -0
- data/public/images/cms/icons/actions/home.png +0 -0
- data/public/images/cms/icons/actions/left.png +0 -0
- data/public/images/cms/icons/actions/link.png +0 -0
- data/public/images/cms/icons/actions/page.png +0 -0
- data/public/images/cms/icons/actions/page_add.png +0 -0
- data/public/images/cms/icons/actions/page_edit.png +0 -0
- data/public/images/cms/icons/actions/page_move.png +0 -0
- data/public/images/cms/icons/actions/redo.png +0 -0
- data/public/images/cms/icons/actions/refresh.png +0 -0
- data/public/images/cms/icons/actions/right.png +0 -0
- data/public/images/cms/icons/actions/root_folder.png +0 -0
- data/public/images/cms/icons/actions/root_link.png +0 -0
- data/public/images/cms/icons/actions/root_page.png +0 -0
- data/public/images/cms/icons/actions/undo.png +0 -0
- data/public/images/cms/icons/actions/up.png +0 -0
- data/public/images/cms/icons/actions/view.png +0 -0
- data/public/images/cms/icons/file_types/doc.png +0 -0
- data/public/images/cms/icons/file_types/file.png +0 -0
- data/public/images/cms/icons/file_types/gif.png +0 -0
- data/public/images/cms/icons/file_types/htm.png +0 -0
- data/public/images/cms/icons/file_types/pdf.png +0 -0
- data/public/images/cms/icons/file_types/ppt.png +0 -0
- data/public/images/cms/icons/file_types/swf.png +0 -0
- data/public/images/cms/icons/file_types/txt.png +0 -0
- data/public/images/cms/icons/file_types/xls.png +0 -0
- data/public/images/cms/icons/file_types/xml.png +0 -0
- data/public/images/cms/icons/file_types/zip.png +0 -0
- data/public/images/cms/icons/status/archived.gif +0 -0
- data/public/images/cms/icons/status/draft.gif +0 -0
- data/public/images/cms/icons/status/hidden.gif +0 -0
- data/public/images/cms/icons/status/locked.gif +0 -0
- data/public/images/cms/icons/status/published.gif +0 -0
- data/public/images/cms/icons/status/unlocked.gif +0 -0
- data/public/images/cms/icons/user.png +0 -0
- data/public/images/cms/login_bg.jpg +0 -0
- data/public/images/cms/login_bottom.jpg +0 -0
- data/public/images/cms/login_top.gif +0 -0
- data/public/images/cms/lt_button_bg.gif +0 -0
- data/public/images/cms/lt_button_l.gif +0 -0
- data/public/images/cms/lt_button_r.gif +0 -0
- data/public/images/cms/menu.png +0 -0
- data/public/images/cms/menu/block_cap_h.gif +0 -0
- data/public/images/cms/menu/bottom_cap.png +0 -0
- data/public/images/cms/menu/bottom_cap_menu.png +0 -0
- data/public/images/cms/menu/bottom_cap_menu_first.png +0 -0
- data/public/images/cms/menu/menu_header_first_bg.gif +0 -0
- data/public/images/cms/menu/selected_block_cap.gif +0 -0
- data/public/images/cms/menu/top_cap.png +0 -0
- data/public/images/cms/menu/top_cap_menu_header.png +0 -0
- data/public/images/cms/menu_h.gif +0 -0
- data/public/images/cms/menu_header.png +0 -0
- data/public/images/cms/menu_open.png +0 -0
- data/public/images/cms/menu_open_bg.gif +0 -0
- data/public/images/cms/nav.png +0 -0
- data/public/images/cms/nav/on_bg.gif +0 -0
- data/public/images/cms/nav_cap.png +0 -0
- data/public/images/cms/nav_cap_h.gif +0 -0
- data/public/images/cms/nav_h.gif +0 -0
- data/public/images/cms/page_toolbar/page_toolbar_bg.gif +0 -0
- data/public/images/cms/page_toolbar/page_toolbar_inset_bg.gif +0 -0
- data/public/images/cms/page_toolbar/page_toolbar_inset_draft_bg.gif +0 -0
- data/public/images/cms/page_toolbar/page_toolbar_inset_draft_l.gif +0 -0
- data/public/images/cms/page_toolbar/page_toolbar_inset_draft_r.gif +0 -0
- data/public/images/cms/page_toolbar/page_toolbar_inset_l.gif +0 -0
- data/public/images/cms/page_toolbar/page_toolbar_inset_published_bg.gif +0 -0
- data/public/images/cms/page_toolbar/page_toolbar_inset_published_l.gif +0 -0
- data/public/images/cms/page_toolbar/page_toolbar_inset_published_r.gif +0 -0
- data/public/images/cms/page_toolbar/page_toolbar_inset_r.gif +0 -0
- data/public/images/cms/page_toolbar/page_toolbar_l.gif +0 -0
- data/public/images/cms/page_toolbar/page_toolbar_r.gif +0 -0
- data/public/images/cms/page_toolbar/status_draft_bg.gif +0 -0
- data/public/images/cms/page_toolbar/status_draft_l.gif +0 -0
- data/public/images/cms/page_toolbar/status_l.gif +0 -0
- data/public/images/cms/page_toolbar/status_published_bg.gif +0 -0
- data/public/images/cms/page_toolbar/status_published_l.gif +0 -0
- data/public/images/cms/page_toolbar/visual_editor_bg.gif +0 -0
- data/public/images/cms/page_toolbar/visual_editor_end.gif +0 -0
- data/public/images/cms/page_toolbar/visual_editor_r.gif +0 -0
- data/public/images/cms/page_toolbar/visual_editor_state_bg.gif +0 -0
- data/public/images/cms/pages/add_connectable.gif +0 -0
- data/public/images/cms/pages/connect_connectable.gif +0 -0
- data/public/images/cms/pages/container_border.gif +0 -0
- data/public/images/cms/pages/container_border_l.gif +0 -0
- data/public/images/cms/pages/container_border_r.gif +0 -0
- data/public/images/cms/pages/delete_connectable.gif +0 -0
- data/public/images/cms/pages/down_connectable.gif +0 -0
- data/public/images/cms/pages/down_connectable_disabled.gif +0 -0
- data/public/images/cms/pages/edit_connectable.gif +0 -0
- data/public/images/cms/pages/edit_connectable_2.gif +0 -0
- data/public/images/cms/pages/show_connectable.gif +0 -0
- data/public/images/cms/pages/up_connectable.gif +0 -0
- data/public/images/cms/pages/up_connectable_disabled.gif +0 -0
- data/public/images/cms/pagination/first.gif +0 -0
- data/public/images/cms/pagination/first_h.gif +0 -0
- data/public/images/cms/pagination/input.gif +0 -0
- data/public/images/cms/pagination/last.gif +0 -0
- data/public/images/cms/pagination/last_h.gif +0 -0
- data/public/images/cms/pagination/next.gif +0 -0
- data/public/images/cms/pagination/next_h.gif +0 -0
- data/public/images/cms/pagination/previous.gif +0 -0
- data/public/images/cms/pagination/previous_h.gif +0 -0
- data/public/images/cms/published_status.gif +0 -0
- data/public/images/cms/search.png +0 -0
- data/public/images/cms/search_submit.gif +0 -0
- data/public/images/cms/search_submit_h.gif +0 -0
- data/public/images/cms/searchbox_gradient.gif +0 -0
- data/public/images/cms/select_bg.gif +0 -0
- data/public/images/cms/select_bg_2.gif +0 -0
- data/public/images/cms/sitemap/bottom_cap.png +0 -0
- data/public/images/cms/sitemap/buffer_caps.png +0 -0
- data/public/images/cms/sitemap/contract.png +0 -0
- data/public/images/cms/sitemap/corners.gif +0 -0
- data/public/images/cms/sitemap/corners_hover.gif +0 -0
- data/public/images/cms/sitemap/divider.gif +0 -0
- data/public/images/cms/sitemap/expand.png +0 -0
- data/public/images/cms/sitemap/gradient.gif +0 -0
- data/public/images/cms/sitemap/gray_contract.png +0 -0
- data/public/images/cms/sitemap/gray_expand.png +0 -0
- data/public/images/cms/sitemap/no_contents.png +0 -0
- data/public/images/cms/sitemap/site_root_cap.png +0 -0
- data/public/images/cms/sitemap/tooltip.gif +0 -0
- data/public/images/cms/sitemap/top_cap_content.png +0 -0
- data/public/images/cms/solid.gif +0 -0
- data/public/images/cms/table/bl.gif +0 -0
- data/public/images/cms/table/br.gif +0 -0
- data/public/images/cms/table/divider.gif +0 -0
- data/public/images/cms/table/td_cap_first_h.gif +0 -0
- data/public/images/cms/table/td_cap_first_s.gif +0 -0
- data/public/images/cms/table/td_cap_last_h.gif +0 -0
- data/public/images/cms/table/td_cap_last_s.gif +0 -0
- data/public/images/cms/table/td_last_bg.gif +0 -0
- data/public/images/cms/table/th_bg.gif +0 -0
- data/public/images/cms/table/th_divider.gif +0 -0
- data/public/images/cms/table/th_last_bg.gif +0 -0
- data/public/images/cms/table/tl.gif +0 -0
- data/public/images/cms/table/tr.gif +0 -0
- data/public/images/cms/table/tr_bg.gif +0 -0
- data/public/images/cms/thickbox/loadingAnimation.gif +0 -0
- data/public/images/cms/thickbox/macFFBgHack.png +0 -0
- data/public/images/cms/toolbar_bg.png +0 -0
- data/public/images/cms/top_cap.png +0 -0
- data/public/images/cms/top_cap_content.png +0 -0
- data/public/images/cms/top_cap_menu_header.png +0 -0
- data/public/images/cms/user_search_submit.gif +0 -0
- data/public/images/cms/usercontrols_bg.png +0 -0
- data/public/images/cms/usercontrols_bg_cap.png +0 -0
- data/public/javascripts/cms/application.js +148 -0
- data/public/javascripts/cms/editor.js +56 -0
- data/public/javascripts/cms/sitemap.js +426 -0
- data/public/javascripts/jquery-ui.js +591 -0
- data/public/javascripts/jquery.contextMenu.js +211 -0
- data/public/javascripts/jquery.cookie.js +96 -0
- data/public/javascripts/jquery.dimensions.js +119 -0
- data/public/javascripts/jquery.js +11 -0
- data/public/javascripts/jquery.selectbox-0.5.js +209 -0
- data/public/javascripts/jquery.taglist.js +136 -0
- data/public/javascripts/jquery.thickbox.js +10 -0
- data/public/site/customconfig.js +1 -0
- data/public/stylesheets/cms/administration.css +91 -0
- data/public/stylesheets/cms/application.css +166 -0
- data/public/stylesheets/cms/block.css +26 -0
- data/public/stylesheets/cms/buttons.css +111 -0
- data/public/stylesheets/cms/content_library.css +138 -0
- data/public/stylesheets/cms/content_types.css +4 -0
- data/public/stylesheets/cms/dashboard.css +118 -0
- data/public/stylesheets/cms/data_table.css +156 -0
- data/public/stylesheets/cms/date_picker.css +73 -0
- data/public/stylesheets/cms/form_layout.css +269 -0
- data/public/stylesheets/cms/jquery.contextMenu.css +61 -0
- data/public/stylesheets/cms/login.css +78 -0
- data/public/stylesheets/cms/menu.css +116 -0
- data/public/stylesheets/cms/nav.css +111 -0
- data/public/stylesheets/cms/page_toolbar.css +135 -0
- data/public/stylesheets/cms/reset.css +46 -0
- data/public/stylesheets/cms/selectbox.css +56 -0
- data/public/stylesheets/cms/sitemap.css +374 -0
- data/public/stylesheets/cms/taglist.css +18 -0
- data/public/stylesheets/cms/thickbox.css +163 -0
- data/public/themes/blue_steel/images/logo.jpg +0 -0
- data/public/themes/blue_steel/images/splash.jpg +0 -0
- data/public/themes/blue_steel/stylesheets/style.css +257 -0
- data/rails/init.rb +3 -0
- data/rails_generators/browser_cms/USAGE +2 -0
- data/rails_generators/browser_cms/browser_cms_generator.rb +35 -0
- data/rails_generators/browser_cms/templates/README +1 -0
- data/rails_generators/browser_cms_demo_site/USAGE +1 -0
- data/rails_generators/browser_cms_demo_site/browser_cms_demo_site_generator.rb +63 -0
- data/rails_generators/browser_cms_demo_site/templates/migration.rb +21 -0
- data/rails_generators/content_block/USAGE +32 -0
- data/rails_generators/content_block/content_block_generator.rb +74 -0
- data/rails_generators/content_block/templates/_form.html.erb +20 -0
- data/rails_generators/content_block/templates/content_block.rb +27 -0
- data/rails_generators/content_block/templates/controller.rb +2 -0
- data/rails_generators/content_block/templates/functional_test.erb +11 -0
- data/rails_generators/content_block/templates/migration.rb +37 -0
- data/rails_generators/content_block/templates/render.html.erb +14 -0
- data/rails_generators/content_block/templates/unit_test.erb +9 -0
- data/rails_generators/portlet/USAGE +37 -0
- data/rails_generators/portlet/portlet_generator.rb +35 -0
- data/rails_generators/portlet/templates/_form.html.erb +5 -0
- data/rails_generators/portlet/templates/portlet.rb +7 -0
- data/rails_generators/portlet/templates/render.html.erb +1 -0
- data/rails_generators/portlet/templates/unit_test.erb +9 -0
- data/test/custom_assertions.rb +68 -0
- data/test/factories.rb +109 -0
- data/test/functional/cms/cache_controller_test.rb +14 -0
- data/test/functional/cms/categories_controller_test.rb +25 -0
- data/test/functional/cms/connectors_controller_test.rb +49 -0
- data/test/functional/cms/content_controller_test.rb +379 -0
- data/test/functional/cms/content_types_controller_test.rb +18 -0
- data/test/functional/cms/dashboard_controller_test.rb +17 -0
- data/test/functional/cms/dynamic_views_controller_test.rb +28 -0
- data/test/functional/cms/file_blocks_controller_test.rb +51 -0
- data/test/functional/cms/groups_controller_test.rb +50 -0
- data/test/functional/cms/home_controller_test.rb +156 -0
- data/test/functional/cms/html_blocks_controller_test.rb +163 -0
- data/test/functional/cms/image_blocks_controller_test.rb +75 -0
- data/test/functional/cms/links_controller_test.rb +60 -0
- data/test/functional/cms/pages_controller_test.rb +89 -0
- data/test/functional/cms/portlets_controller_test.rb +57 -0
- data/test/functional/cms/section_nodes_controller_test.rb +44 -0
- data/test/functional/cms/sections_controller_test.rb +78 -0
- data/test/functional/cms/sessions_controller_test.rb +52 -0
- data/test/functional/cms/toolbar_controller_test.rb +64 -0
- data/test/functional/cms/users_controller_test.rb +184 -0
- data/test/integration/login_test.rb +14 -0
- data/test/test_helper.rb +159 -0
- data/test/test_logging.rb +67 -0
- data/test/unit/behaviors/attaching_test.rb +333 -0
- data/test/unit/behaviors/dynamic_attributes_test.rb +38 -0
- data/test/unit/behaviors/publishable_test.rb +53 -0
- data/test/unit/behaviors/searching_test.rb +102 -0
- data/test/unit/behaviors/taggable_test.rb +90 -0
- data/test/unit/extensions/active_record/base_test.rb +10 -0
- data/test/unit/extensions/hash_test.rb +17 -0
- data/test/unit/extensions/integer_test.rb +10 -0
- data/test/unit/helpers/application_helper_test.rb +29 -0
- data/test/unit/helpers/form_builder_test.rb +17 -0
- data/test/unit/helpers/menu_helper_test.rb +306 -0
- data/test/unit/helpers/page_helper_test.rb +57 -0
- data/test/unit/helpers/path_helper_test.rb +57 -0
- data/test/unit/lib/content_block_test.rb +166 -0
- data/test/unit/lib/generators_test.rb +22 -0
- data/test/unit/models/attachment_test.rb +96 -0
- data/test/unit/models/category_test.rb +40 -0
- data/test/unit/models/category_type_test.rb +8 -0
- data/test/unit/models/connector_test.rb +136 -0
- data/test/unit/models/content_type_test.rb +23 -0
- data/test/unit/models/email_page_portlet_test.rb +14 -0
- data/test/unit/models/file_block_test.rb +211 -0
- data/test/unit/models/group_test.rb +7 -0
- data/test/unit/models/html_block_test.rb +102 -0
- data/test/unit/models/link_test.rb +8 -0
- data/test/unit/models/page_partial_test.rb +29 -0
- data/test/unit/models/page_route_test.rb +29 -0
- data/test/unit/models/page_template_test.rb +37 -0
- data/test/unit/models/page_test.rb +726 -0
- data/test/unit/models/permission_test.rb +10 -0
- data/test/unit/models/portlet_test.rb +21 -0
- data/test/unit/models/section_node_test.rb +92 -0
- data/test/unit/models/sections_test.rb +121 -0
- data/test/unit/models/site_test.rb +50 -0
- data/test/unit/models/task_test.rb +126 -0
- data/test/unit/models/user_test.rb +130 -0
- metadata +947 -0
@@ -0,0 +1,92 @@
|
|
1
|
+
class LoadSeedData < ActiveRecord::Migration
|
2
|
+
extend Cms::DataLoader
|
3
|
+
def self.up
|
4
|
+
if %w[development test dev local].include?(Rails.env)
|
5
|
+
pwd = "cmsadmin"
|
6
|
+
else
|
7
|
+
pwd = (0..8).inject(""){|s,i| s << (('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a).rand}
|
8
|
+
end
|
9
|
+
User.current = create_user(:cmsadmin, :login => "cmsadmin", :first_name => "CMS", :last_name => "Administrator", :email => "cmsadmin@example.com", :password => pwd, :password_confirmation => pwd)
|
10
|
+
|
11
|
+
create_permission(:administrate, :name => "administrate", :full_name => "Administer CMS" , :description => "Allows users to administer the CMS, including adding users and groups.")
|
12
|
+
create_permission(:edit_content, :name => "edit_content", :full_name => "Edit Content" , :description => "Allows users to Add, Edit and Delete both Pages and Blocks. Can Save (but not Publish) and Assign them as well.")
|
13
|
+
create_permission(:publish_content, :name => "publish_content", :full_name => "Publish Content" , :description => "Allows users to Save and Publish, Hide and Archive both Pages and Blocks.")
|
14
|
+
|
15
|
+
create_group_type(:guest_group_type, :name => "Guest", :guest => true)
|
16
|
+
create_group_type(:registered_public_user, :name => "Registered Public User")
|
17
|
+
create_group_type(:cms_user, :name => "CMS User", :cms_access => true)
|
18
|
+
group_types(:cms_user).permissions<<permissions(:edit_content)
|
19
|
+
group_types(:cms_user).permissions<<permissions(:publish_content)
|
20
|
+
|
21
|
+
create_group(:guest, :name => 'Guest', :code => 'guest', :group_type => group_types(:guest_group_type))
|
22
|
+
create_group(:content_admin, :name => 'Cms Administrators', :code => 'cms-admin', :group_type => group_types(:cms_user))
|
23
|
+
create_group(:content_editor, :name => 'Content Editors', :code => 'content-editor', :group_type => group_types(:cms_user))
|
24
|
+
users(:cmsadmin).groups << groups(:content_admin)
|
25
|
+
users(:cmsadmin).groups << groups(:content_editor)
|
26
|
+
|
27
|
+
groups(:content_admin).permissions<<permissions(:administrate)
|
28
|
+
groups(:content_editor).permissions<<permissions(:edit_content)
|
29
|
+
groups(:content_editor).permissions<<permissions(:publish_content)
|
30
|
+
|
31
|
+
create_site(:default, :name => "Default", :domain => "example.com")
|
32
|
+
create_section(:root, :name => "My Site", :path => "/", :root => true)
|
33
|
+
create_section(:system, :name => "system", :parent => sections(:root), :path => "/system", :hidden => true)
|
34
|
+
|
35
|
+
Group.all.each{|g| g.sections = Section.all }
|
36
|
+
|
37
|
+
create_page(:home, :name => "Home", :path => "/", :section => sections(:root), :template_file_name => "default.html.erb", :cacheable => true)
|
38
|
+
create_page(:not_found, :name => "Page Not Found", :path => "/system/not_found", :section => sections(:system), :template_file_name => "default.html.erb", :publish_on_save => true, :hidden => true, :cacheable => true)
|
39
|
+
create_page(:access_denied, :name => "Access Denied", :path => "/system/access_denied", :section => sections(:system), :template_file_name => "default.html.erb", :publish_on_save => true, :hidden => true, :cacheable => true)
|
40
|
+
create_page(:server_error, :name => "Server Error", :path => "/system/server_error", :section => sections(:system), :template_file_name => "default.html.erb", :publish_on_save => true, :hidden => true, :cacheable => true)
|
41
|
+
|
42
|
+
create_html_block(:page_not_found, :name => "Page Not Found", :content => "<p>The page you tried to access does not exist on this server.</p>", :publish_on_save => true)
|
43
|
+
pages(:not_found).create_connector(html_blocks(:page_not_found), "main")
|
44
|
+
pages(:not_found).publish!
|
45
|
+
|
46
|
+
create_html_block(:access_denied, :name => "Access Denied", :content => "<p>You have tried to reach a resource or page which you do not have permission to view.</p>", :publish_on_save => true)
|
47
|
+
pages(:access_denied).create_connector(html_blocks(:access_denied), "main")
|
48
|
+
pages(:access_denied).publish!
|
49
|
+
|
50
|
+
create_html_block(:server_error, :name => "Server Error", :content => "<p>The server encountered an unexpected condition that prevented it from fulfilling the request.</p>", :publish_on_save => true)
|
51
|
+
pages(:server_error).create_connector(html_blocks(:server_error), "main")
|
52
|
+
pages(:server_error).publish!
|
53
|
+
|
54
|
+
create_page_template(:default,
|
55
|
+
:name => "default", :format => "html", :handler => "erb",
|
56
|
+
:body => <<-HTML
|
57
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
58
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
59
|
+
<head>
|
60
|
+
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
61
|
+
<title><%= page_title %></title>
|
62
|
+
<%= yield :html_head %>
|
63
|
+
</head>
|
64
|
+
<body style="margin: 0; padding: 0; text-align: center;">
|
65
|
+
<%= cms_toolbar %>
|
66
|
+
<div id="wrapper" style="width: 700px; margin: 0 auto; text-align: left; padding: 30px">
|
67
|
+
Breadcrumbs: <%= render_breadcrumbs %>
|
68
|
+
Main Menu: <%= render_menu %>
|
69
|
+
<h1><%= @page_title %></h1>
|
70
|
+
<p>BrowserCMS has been installed successfully.</p>
|
71
|
+
|
72
|
+
<h2>Getting Started</h2>
|
73
|
+
<p>To start building your site, you can either <%= link_to "alter this template", edit_cms_page_template_path(PageTemplate.find_by_file_name("default.html.erb")) %> or <%= link_to "create a new one", new_cms_page_template_path %>. You will be prompted to login with the credentials provided during the install process. To change which template the pages use, you can click the 'Edit Properties' button above, and choose a different template. After all pages in the site, use the new template, you can safely delete this one.</p>
|
74
|
+
|
75
|
+
<%= container :main %>
|
76
|
+
</div>
|
77
|
+
</body>
|
78
|
+
</html>
|
79
|
+
HTML
|
80
|
+
)
|
81
|
+
|
82
|
+
pages(:home).publish!
|
83
|
+
|
84
|
+
puts "*************************************************"
|
85
|
+
puts "* YOUR CMS username/password is: cmsadmin/#{pwd}"
|
86
|
+
puts "*************************************************"
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
def self.down
|
91
|
+
end
|
92
|
+
end
|
data/lib/acts_as_list.rb
ADDED
@@ -0,0 +1,252 @@
|
|
1
|
+
module ActsAsList
|
2
|
+
def self.included(base)
|
3
|
+
base.extend(ClassMethods)
|
4
|
+
end
|
5
|
+
|
6
|
+
# This +acts_as+ extension provides the capabilities for sorting and reordering a number of objects in a list.
|
7
|
+
# The class that has this specified needs to have a +position+ column defined as an integer on
|
8
|
+
# the mapped database table.
|
9
|
+
#
|
10
|
+
# Todo list example:
|
11
|
+
#
|
12
|
+
# class TodoList < ActiveRecord::Base
|
13
|
+
# has_many :todo_items, :order => "position"
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
# class TodoItem < ActiveRecord::Base
|
17
|
+
# belongs_to :todo_list
|
18
|
+
# acts_as_list :scope => :todo_list
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
# todo_list.first.move_to_bottom
|
22
|
+
# todo_list.last.move_higher
|
23
|
+
module ClassMethods
|
24
|
+
# Configuration options are:
|
25
|
+
#
|
26
|
+
# * +column+ - specifies the column name to use for keeping the position integer (default: +position+)
|
27
|
+
# * +scope+ - restricts what is to be considered a list. Given a symbol, it'll attach <tt>_id</tt>
|
28
|
+
# (if it hasn't already been added) and use that as the foreign key restriction. It's also possible
|
29
|
+
# to give it an entire string that is interpolated if you need a tighter scope than just a foreign key.
|
30
|
+
# Example: <tt>acts_as_list :scope => 'todo_list_id = #{todo_list_id} AND completed = 0'</tt>
|
31
|
+
def acts_as_list(options = {})
|
32
|
+
configuration = { :column => "position", :scope => "1 = 1" }
|
33
|
+
configuration.update(options) if options.is_a?(Hash)
|
34
|
+
|
35
|
+
configuration[:scope] = "#{configuration[:scope]}_id".intern if configuration[:scope].is_a?(Symbol) && configuration[:scope].to_s !~ /_id$/
|
36
|
+
|
37
|
+
if configuration[:scope].is_a?(Symbol)
|
38
|
+
scope_condition_method = %(
|
39
|
+
def scope_condition
|
40
|
+
if #{configuration[:scope].to_s}.nil?
|
41
|
+
"#{configuration[:scope].to_s} IS NULL"
|
42
|
+
else
|
43
|
+
"#{configuration[:scope].to_s} = \#{#{configuration[:scope].to_s}}"
|
44
|
+
end
|
45
|
+
end
|
46
|
+
)
|
47
|
+
else
|
48
|
+
scope_condition_method = "def scope_condition() \"#{configuration[:scope]}\" end"
|
49
|
+
end
|
50
|
+
|
51
|
+
class_eval <<-EOV
|
52
|
+
include ActsAsList::InstanceMethods
|
53
|
+
|
54
|
+
def acts_as_list_class
|
55
|
+
::#{self.name}
|
56
|
+
end
|
57
|
+
|
58
|
+
def position_column
|
59
|
+
'#{configuration[:column]}'
|
60
|
+
end
|
61
|
+
|
62
|
+
#{scope_condition_method}
|
63
|
+
|
64
|
+
before_destroy :remove_from_list
|
65
|
+
before_create :add_to_list_bottom
|
66
|
+
EOV
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
# All the methods available to a record that has had <tt>acts_as_list</tt> specified. Each method works
|
71
|
+
# by assuming the object to be the item in the list, so <tt>chapter.move_lower</tt> would move that chapter
|
72
|
+
# lower in the list of all chapters. Likewise, <tt>chapter.first?</tt> would return +true+ if that chapter is
|
73
|
+
# the first in the list of all chapters.
|
74
|
+
module InstanceMethods
|
75
|
+
# Insert the item at the given position (defaults to the top position of 1).
|
76
|
+
def insert_at(position = 1)
|
77
|
+
insert_at_position(position)
|
78
|
+
end
|
79
|
+
|
80
|
+
# Swap positions with the next lower item, if one exists.
|
81
|
+
def move_lower
|
82
|
+
lower = lower_item
|
83
|
+
return unless lower
|
84
|
+
acts_as_list_class.transaction do
|
85
|
+
self.update_attribute(position_column, lower.send(position_column))
|
86
|
+
lower.decrement_position
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# Swap positions with the next higher item, if one exists.
|
91
|
+
def move_higher
|
92
|
+
higher = higher_item
|
93
|
+
return unless higher
|
94
|
+
acts_as_list_class.transaction do
|
95
|
+
self.update_attribute(position_column, higher.send(position_column))
|
96
|
+
higher.increment_position
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# Move to the bottom of the list. If the item is already in the list, the items below it have their
|
101
|
+
# position adjusted accordingly.
|
102
|
+
def move_to_bottom
|
103
|
+
return unless in_list?
|
104
|
+
acts_as_list_class.transaction do
|
105
|
+
decrement_positions_on_lower_items
|
106
|
+
assume_bottom_position
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
# Move to the top of the list. If the item is already in the list, the items above it have their
|
111
|
+
# position adjusted accordingly.
|
112
|
+
def move_to_top
|
113
|
+
return unless in_list?
|
114
|
+
acts_as_list_class.transaction do
|
115
|
+
increment_positions_on_higher_items
|
116
|
+
assume_top_position
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
# Removes the item from the list.
|
121
|
+
def remove_from_list
|
122
|
+
if in_list?
|
123
|
+
decrement_positions_on_lower_items
|
124
|
+
update_attribute position_column, nil
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
# Increase the position of this item without adjusting the rest of the list.
|
129
|
+
def increment_position
|
130
|
+
return unless in_list?
|
131
|
+
update_attribute position_column, self.send(position_column).to_i + 1
|
132
|
+
end
|
133
|
+
|
134
|
+
# Decrease the position of this item without adjusting the rest of the list.
|
135
|
+
def decrement_position
|
136
|
+
return unless in_list?
|
137
|
+
update_attribute position_column, self.send(position_column).to_i - 1
|
138
|
+
end
|
139
|
+
|
140
|
+
# Return +true+ if this object is the first in the list.
|
141
|
+
def first?
|
142
|
+
return false unless in_list?
|
143
|
+
self.send(position_column) == 1
|
144
|
+
end
|
145
|
+
|
146
|
+
# Return +true+ if this object is the last in the list.
|
147
|
+
def last?
|
148
|
+
return false unless in_list?
|
149
|
+
self.send(position_column) == bottom_position_in_list
|
150
|
+
end
|
151
|
+
|
152
|
+
# Return the next higher item in the list.
|
153
|
+
def higher_item
|
154
|
+
return nil unless in_list?
|
155
|
+
acts_as_list_class.find(:first, :conditions =>
|
156
|
+
"#{scope_condition} AND #{position_column} < #{send(position_column).to_s}", :order => "#{position_column} DESC"
|
157
|
+
)
|
158
|
+
end
|
159
|
+
|
160
|
+
# Return the next lower item in the list.
|
161
|
+
def lower_item
|
162
|
+
return nil unless in_list?
|
163
|
+
acts_as_list_class.find(:first, :conditions =>
|
164
|
+
"#{scope_condition} AND #{position_column} > #{send(position_column).to_s}", :order => "#{position_column} ASC"
|
165
|
+
)
|
166
|
+
end
|
167
|
+
|
168
|
+
# Test if this record is in a list
|
169
|
+
def in_list?
|
170
|
+
!send(position_column).nil?
|
171
|
+
end
|
172
|
+
|
173
|
+
private
|
174
|
+
def add_to_list_top
|
175
|
+
increment_positions_on_all_items
|
176
|
+
end
|
177
|
+
|
178
|
+
def add_to_list_bottom
|
179
|
+
self[position_column] = bottom_position_in_list.to_i + 1
|
180
|
+
end
|
181
|
+
|
182
|
+
# Overwrite this method to define the scope of the list changes
|
183
|
+
def scope_condition() "1" end
|
184
|
+
|
185
|
+
# Returns the bottom position number in the list.
|
186
|
+
# bottom_position_in_list # => 2
|
187
|
+
def bottom_position_in_list(except = nil)
|
188
|
+
item = bottom_item(except)
|
189
|
+
item ? item.send(position_column) : 0
|
190
|
+
end
|
191
|
+
|
192
|
+
# Returns the bottom item
|
193
|
+
def bottom_item(except = nil)
|
194
|
+
conditions = scope_condition
|
195
|
+
conditions = "#{conditions} AND #{self.class.primary_key} != #{except.id}" if except
|
196
|
+
acts_as_list_class.find(:first, :conditions => conditions, :order => "#{position_column} DESC")
|
197
|
+
end
|
198
|
+
|
199
|
+
# Forces item to assume the bottom position in the list.
|
200
|
+
def assume_bottom_position
|
201
|
+
update_attribute(position_column, bottom_position_in_list(self).to_i + 1)
|
202
|
+
end
|
203
|
+
|
204
|
+
# Forces item to assume the top position in the list.
|
205
|
+
def assume_top_position
|
206
|
+
update_attribute(position_column, 1)
|
207
|
+
end
|
208
|
+
|
209
|
+
# This has the effect of moving all the higher items up one.
|
210
|
+
def decrement_positions_on_higher_items(position)
|
211
|
+
acts_as_list_class.update_all(
|
212
|
+
"#{position_column} = (#{position_column} - 1)", "#{scope_condition} AND #{position_column} <= #{position}"
|
213
|
+
)
|
214
|
+
end
|
215
|
+
|
216
|
+
# This has the effect of moving all the lower items up one.
|
217
|
+
def decrement_positions_on_lower_items
|
218
|
+
return unless in_list?
|
219
|
+
acts_as_list_class.update_all(
|
220
|
+
"#{position_column} = (#{position_column} - 1)", "#{scope_condition} AND #{position_column} > #{send(position_column).to_i}"
|
221
|
+
)
|
222
|
+
end
|
223
|
+
|
224
|
+
# This has the effect of moving all the higher items down one.
|
225
|
+
def increment_positions_on_higher_items
|
226
|
+
return unless in_list?
|
227
|
+
acts_as_list_class.update_all(
|
228
|
+
"#{position_column} = (#{position_column} + 1)", "#{scope_condition} AND #{position_column} < #{send(position_column).to_i}"
|
229
|
+
)
|
230
|
+
end
|
231
|
+
|
232
|
+
# This has the effect of moving all the lower items down one.
|
233
|
+
def increment_positions_on_lower_items(position)
|
234
|
+
acts_as_list_class.update_all(
|
235
|
+
"#{position_column} = (#{position_column} + 1)", "#{scope_condition} AND #{position_column} >= #{position}"
|
236
|
+
)
|
237
|
+
end
|
238
|
+
|
239
|
+
# Increments position (<tt>position_column</tt>) of all items in the list.
|
240
|
+
def increment_positions_on_all_items
|
241
|
+
acts_as_list_class.update_all(
|
242
|
+
"#{position_column} = (#{position_column} + 1)", "#{scope_condition}"
|
243
|
+
)
|
244
|
+
end
|
245
|
+
|
246
|
+
def insert_at_position(position)
|
247
|
+
remove_from_list
|
248
|
+
increment_positions_on_lower_items(position)
|
249
|
+
self.update_attribute(position_column, position)
|
250
|
+
end
|
251
|
+
end
|
252
|
+
end
|
data/lib/browsercms.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'cms/extensions'
|
2
|
+
require 'cms/init'
|
3
|
+
require 'cms/routes'
|
4
|
+
require 'cms/caching'
|
5
|
+
|
6
|
+
#Load libraries that are included with CMS
|
7
|
+
require 'acts_as_list'
|
8
|
+
ActiveRecord::Base.send(:include, ActsAsList)
|
9
|
+
|
10
|
+
#Include CMS Behaviors
|
11
|
+
ActiveRecord::Base.send(:include, Cms::Acts::ContentBlock)
|
12
|
+
require 'cms/behaviors'
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Cms
|
2
|
+
module Acts
|
3
|
+
module ContentBlock
|
4
|
+
def self.included(model_class)
|
5
|
+
model_class.extend(MacroMethods)
|
6
|
+
end
|
7
|
+
module MacroMethods
|
8
|
+
def acts_as_content_block(options={})
|
9
|
+
belongs_to_attachment(options[:belongs_to_attachment].is_a?(Hash) ? options[:belongs_to_attachment] : {}) if options[:belongs_to_attachment]
|
10
|
+
is_archivable(options[:archiveable].is_a?(Hash) ? options[:archiveable] : {}) unless options[:archiveable] == false
|
11
|
+
is_connectable(options[:connectable].is_a?(Hash) ? options[:connectable] : {}) unless options[:connectable] == false
|
12
|
+
flush_cache_on_change(options[:flush_cache_on_change].is_a?(Hash) ? options[:flush_cache_on_change] : {}) unless options[:flush_cache_on_change] == false
|
13
|
+
is_renderable({:instance_variable_name_for_view => "@content_block"}.merge(options[:renderable].is_a?(Hash) ? options[:renderable] : {})) unless options[:renderable] == false
|
14
|
+
is_publishable(options[:publishable].is_a?(Hash) ? options[:publishable] : {}) unless options[:publishable] == false
|
15
|
+
is_searchable(options[:searchable].is_a?(Hash) ? options[:searchable] : {}) unless options[:searchable] == false
|
16
|
+
uses_soft_delete(options[:soft_delete].is_a?(Hash) ? options[:soft_delete] : {}) unless options[:soft_delete] == false
|
17
|
+
is_taggable(options[:taggable].is_a?(Hash) ? options[:taggable] : {}) if options[:taggable]
|
18
|
+
is_userstamped(options[:userstamped].is_a?(Hash) ? options[:userstamped] : {}) unless options[:userstamped] == false
|
19
|
+
is_versioned(options[:versioned].is_a?(Hash) ? options[:versioned] : {}) unless options[:versioned] == false
|
20
|
+
|
21
|
+
include InstanceMethods
|
22
|
+
end
|
23
|
+
module InstanceMethods
|
24
|
+
def to_s
|
25
|
+
"#{self.class.name.titleize} '#{name}'"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,194 @@
|
|
1
|
+
module Cms
|
2
|
+
module Authentication
|
3
|
+
module Controller
|
4
|
+
protected
|
5
|
+
# Returns true or false if the user is logged in.
|
6
|
+
# Preloads User.current with the user model if they're logged in.
|
7
|
+
def logged_in?
|
8
|
+
!current_user.nil? && !current_user.guest?
|
9
|
+
end
|
10
|
+
|
11
|
+
# Accesses the current user from the session.
|
12
|
+
# If the user is not logged in, this will be set to the guest user
|
13
|
+
def current_user
|
14
|
+
@current_user ||= begin
|
15
|
+
User.current = (login_from_session || login_from_cookie || User.guest)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# Store the given user id in the session.
|
20
|
+
def current_user=(new_user)
|
21
|
+
session[:user_id] = new_user ? new_user.id : nil
|
22
|
+
@current_user = new_user || false
|
23
|
+
@current_user = User.current
|
24
|
+
end
|
25
|
+
|
26
|
+
# Check if the user is authorized
|
27
|
+
#
|
28
|
+
# Override this method in your controllers if you want to restrict access
|
29
|
+
# to only a few actions or if you want to check if the user
|
30
|
+
# has the correct rights.
|
31
|
+
#
|
32
|
+
# Example:
|
33
|
+
#
|
34
|
+
# # only allow nonbobs
|
35
|
+
# def authorized?
|
36
|
+
# current_user.login != "bob"
|
37
|
+
# end
|
38
|
+
#
|
39
|
+
def authorized?(action=nil, resource=nil, *args)
|
40
|
+
logged_in?
|
41
|
+
end
|
42
|
+
|
43
|
+
# Filter method to enforce a login requirement.
|
44
|
+
#
|
45
|
+
# To require logins for all actions, use this in your controllers:
|
46
|
+
#
|
47
|
+
# before_filter :login_required
|
48
|
+
#
|
49
|
+
# To require logins for specific actions, use this in your controllers:
|
50
|
+
#
|
51
|
+
# before_filter :login_required, :only => [ :edit, :update ]
|
52
|
+
#
|
53
|
+
# To skip this in a subclassed controller:
|
54
|
+
#
|
55
|
+
# skip_before_filter :login_required
|
56
|
+
#
|
57
|
+
def login_required
|
58
|
+
authorized? || access_denied
|
59
|
+
end
|
60
|
+
|
61
|
+
# Redirect as appropriate when an access request fails.
|
62
|
+
#
|
63
|
+
# The default action is to redirect to the login screen.
|
64
|
+
#
|
65
|
+
# Override this method in your controllers if you want to have special
|
66
|
+
# behavior in case the user is not authorized
|
67
|
+
# to access the requested action. For example, a popup window might
|
68
|
+
# simply close itself.
|
69
|
+
def access_denied
|
70
|
+
respond_to do |format|
|
71
|
+
format.html do
|
72
|
+
store_location
|
73
|
+
redirect_to cms_login_path
|
74
|
+
end
|
75
|
+
# format.any doesn't work in rails version < http://dev.rubyonrails.org/changeset/8987
|
76
|
+
# you may want to change format.any to e.g. format.any(:js, :xml)
|
77
|
+
# format.any do
|
78
|
+
# request_http_basic_authentication 'Web Password'
|
79
|
+
# end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# Store the URI of the current request in the session.
|
84
|
+
#
|
85
|
+
# We can return to this location by calling #redirect_back_or_default.
|
86
|
+
def store_location
|
87
|
+
session[:return_to] = request.request_uri
|
88
|
+
end
|
89
|
+
|
90
|
+
# Redirect to the URI stored by the most recent store_location call or
|
91
|
+
# to the passed default. Set an appropriately modified
|
92
|
+
# after_filter :store_location, :only => [:index, :new, :show, :edit]
|
93
|
+
# for any controller you want to be bounce-backable.
|
94
|
+
def redirect_back_or_default(default)
|
95
|
+
redirect_to(session[:return_to] || default)
|
96
|
+
session[:return_to] = nil
|
97
|
+
end
|
98
|
+
|
99
|
+
# Inclusion hook to make #current_user and #logged_in?
|
100
|
+
# available as ActionView helper methods.
|
101
|
+
def self.included(base)
|
102
|
+
base.send :helper_method, :current_user, :logged_in?, :authorized? if base.respond_to? :helper_method
|
103
|
+
end
|
104
|
+
|
105
|
+
#
|
106
|
+
# Login
|
107
|
+
#
|
108
|
+
|
109
|
+
# Called from #current_user. First attempt to login by the user id stored in the session.
|
110
|
+
def login_from_session
|
111
|
+
self.current_user = User.find_by_id(session[:user_id]) if session[:user_id]
|
112
|
+
end
|
113
|
+
|
114
|
+
# Called from #current_user. Now, attempt to login by basic authentication information.
|
115
|
+
def login_from_basic_auth
|
116
|
+
authenticate_with_http_basic do |login, password|
|
117
|
+
self.current_user = User.authenticate(login, password)
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
#
|
122
|
+
# Logout
|
123
|
+
#
|
124
|
+
|
125
|
+
# Called from #current_user. Finaly, attempt to login by an expiring token in the cookie.
|
126
|
+
# for the paranoid: we _should_ be storing user_token = hash(cookie_token, request IP)
|
127
|
+
def login_from_cookie
|
128
|
+
user = cookies[:auth_token] && User.find_by_remember_token(cookies[:auth_token])
|
129
|
+
if user && user.remember_token?
|
130
|
+
self.current_user = user
|
131
|
+
handle_remember_cookie! false # freshen cookie token (keeping date)
|
132
|
+
self.current_user
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
# This is ususally what you want; resetting the session willy-nilly wreaks
|
137
|
+
# havoc with forgery protection, and is only strictly necessary on login.
|
138
|
+
# However, **all session state variables should be unset here**.
|
139
|
+
def logout_keeping_session!
|
140
|
+
# Kill server-side auth cookie
|
141
|
+
User.current.forget_me if User.current.is_a? User
|
142
|
+
User.current = false # not logged in, and don't do it for me
|
143
|
+
kill_remember_cookie! # Kill client-side auth cookie
|
144
|
+
session[:user_id] = nil # keeps the session but kill our variable
|
145
|
+
# explicitly kill any other session variables you set
|
146
|
+
end
|
147
|
+
|
148
|
+
# The session should only be reset at the tail end of a form POST --
|
149
|
+
# otherwise the request forgery protection fails. It's only really necessary
|
150
|
+
# when you cross quarantine (logged-out to logged-in).
|
151
|
+
def logout_killing_session!
|
152
|
+
logout_keeping_session!
|
153
|
+
reset_session
|
154
|
+
end
|
155
|
+
|
156
|
+
#
|
157
|
+
# Remember_me Tokens
|
158
|
+
#
|
159
|
+
# Cookies shouldn't be allowed to persist past their freshness date,
|
160
|
+
# and they should be changed at each login
|
161
|
+
|
162
|
+
# Cookies shouldn't be allowed to persist past their freshness date,
|
163
|
+
# and they should be changed at each login
|
164
|
+
|
165
|
+
def valid_remember_cookie?
|
166
|
+
return nil unless User.current
|
167
|
+
(User.current.remember_token?) &&
|
168
|
+
(cookies[:auth_token] == User.current.remember_token)
|
169
|
+
end
|
170
|
+
|
171
|
+
# Refresh the cookie auth token if it exists, create it otherwise
|
172
|
+
def handle_remember_cookie! new_cookie_flag
|
173
|
+
return unless User.current
|
174
|
+
case
|
175
|
+
when valid_remember_cookie? then User.current.refresh_token # keeping same expiry date
|
176
|
+
when new_cookie_flag then User.current.remember_me
|
177
|
+
else User.current.forget_me
|
178
|
+
end
|
179
|
+
send_remember_cookie!
|
180
|
+
end
|
181
|
+
|
182
|
+
def kill_remember_cookie!
|
183
|
+
cookies.delete :auth_token
|
184
|
+
end
|
185
|
+
|
186
|
+
def send_remember_cookie!
|
187
|
+
cookies[:auth_token] = {
|
188
|
+
:value => User.current.remember_token,
|
189
|
+
:expires => User.current.remember_token_expires_at }
|
190
|
+
end
|
191
|
+
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|