browsercms 3.1.5 → 3.3.0.beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/app/controllers/cms/base_controller.rb +3 -3
- data/app/controllers/cms/content_block_controller.rb +2 -2
- data/app/controllers/cms/content_controller.rb +5 -4
- data/app/controllers/cms/error_handling.rb +1 -1
- data/app/controllers/cms/routes_controller.rb +4 -5
- data/app/controllers/cms/section_nodes_controller.rb +1 -6
- data/app/controllers/cms/sections_controller.rb +2 -3
- data/app/controllers/cms/tasks_controller.rb +3 -0
- data/app/controllers/cms/users_controller.rb +1 -1
- data/app/helpers/cms/application_helper.rb +137 -34
- data/app/helpers/cms/form_builder.rb +33 -21
- data/app/helpers/cms/page_helper.rb +43 -10
- data/app/helpers/cms/path_helper.rb +1 -1
- data/app/helpers/cms/rendering_helper.rb +3 -4
- data/app/helpers/cms/section_nodes_helper.rb +5 -43
- data/app/models/abstract_file_block.rb +1 -16
- data/app/models/attachment.rb +57 -22
- data/app/models/category.rb +4 -4
- data/app/models/category_type.rb +2 -2
- data/app/models/cms/view_context.rb +46 -0
- data/app/models/connector.rb +7 -6
- data/app/models/content_type.rb +3 -3
- data/app/models/dynamic_view.rb +1 -1
- data/app/models/email_message.rb +2 -2
- data/app/models/file_block.rb +12 -0
- data/app/models/group.rb +4 -4
- data/app/models/group_type.rb +4 -4
- data/app/models/html_block.rb +1 -1
- data/app/models/image_block.rb +12 -0
- data/app/models/link.rb +22 -5
- data/app/models/page.rb +87 -46
- data/app/models/page_route.rb +61 -6
- data/app/models/permission.rb +1 -1
- data/app/models/portlet.rb +14 -4
- data/app/models/section.rb +48 -86
- data/app/models/section_node.rb +25 -40
- data/app/models/site.rb +1 -1
- data/app/models/tag.rb +1 -1
- data/app/models/task.rb +8 -7
- data/app/models/user.rb +2 -7
- data/app/portlets/forgot_password_portlet.rb +6 -2
- data/app/portlets/reset_password_portlet.rb +1 -1
- data/app/views/cms/blocks/_toolbar.html.erb +1 -1
- data/app/views/cms/blocks/_toolbar_for_collection.html.erb +3 -6
- data/app/views/cms/blocks/_toolbar_for_member.html.erb +3 -5
- data/app/views/cms/blocks/edit.html.erb +4 -4
- data/app/views/cms/blocks/index.html.erb +7 -7
- data/app/views/cms/blocks/new.html.erb +4 -4
- data/app/views/cms/blocks/show.html.erb +2 -2
- data/app/views/cms/blocks/usages.html.erb +2 -2
- data/app/views/cms/blocks/versions.html.erb +4 -4
- data/app/views/cms/cache/show.html.erb +2 -2
- data/app/views/cms/categories/_form.html.erb +2 -2
- data/app/views/cms/connectors/new.html.erb +6 -8
- data/app/views/cms/content/no_page.html.erb +1 -1
- data/app/views/cms/content/show.html.erb +2 -7
- data/app/views/cms/dashboard/_page_drafts.html.erb +1 -1
- data/app/views/cms/dashboard/_tasks.html.erb +1 -1
- data/app/views/cms/dashboard/index.html.erb +1 -1
- data/app/views/cms/dynamic_views/_form.html.erb +2 -2
- data/app/views/cms/dynamic_views/index.html.erb +7 -10
- data/app/views/cms/email_messages/show.html.erb +2 -2
- data/app/views/cms/file_blocks/_form.html.erb +4 -4
- data/app/views/cms/form_builder/_cms_fancy_drop_down.html.erb +2 -2
- data/app/views/cms/form_builder/_cms_file_field.html.erb +2 -2
- data/app/views/cms/form_builder/_cms_tag_list.html.erb +2 -2
- data/app/views/cms/form_builder/_cms_text_editor.html.erb +2 -2
- data/app/views/cms/groups/_form.html.erb +5 -5
- data/app/views/cms/groups/_permissions.html.erb +4 -4
- data/app/views/cms/groups/_sections.html.erb +1 -2
- data/app/views/cms/groups/index.html.erb +1 -1
- data/app/views/cms/html_blocks/render.html.erb +1 -1
- data/app/views/cms/image_blocks/_form.html.erb +4 -5
- data/app/views/cms/links/_form.html.erb +1 -1
- data/app/views/cms/links/edit.html.erb +2 -2
- data/app/views/cms/links/new.html.erb +2 -2
- data/app/views/cms/page_routes/_form.html.erb +2 -2
- data/app/views/cms/page_routes/index.html.erb +6 -9
- data/app/views/cms/page_routes/show.html.erb +5 -8
- data/app/views/cms/pages/_edit_connector.html.erb +1 -1
- data/app/views/cms/pages/_form.html.erb +3 -3
- data/app/views/cms/pages/edit.html.erb +2 -2
- data/app/views/cms/pages/new.html.erb +7 -7
- data/app/views/cms/pages/versions.html.erb +4 -4
- data/app/views/cms/redirects/_form.html.erb +2 -2
- data/app/views/cms/redirects/index.html.erb +8 -7
- data/app/views/cms/routes/index.html.erb +2 -2
- data/app/views/cms/section_nodes/_link.html.erb +3 -6
- data/app/views/cms/section_nodes/_node.html.erb +4 -13
- data/app/views/cms/section_nodes/_page.html.erb +7 -13
- data/app/views/cms/section_nodes/_section.html.erb +8 -24
- data/app/views/cms/section_nodes/_section_node.html.erb +10 -0
- data/app/views/cms/section_nodes/index.html.erb +18 -30
- data/app/views/cms/sections/_form.html.erb +4 -6
- data/app/views/cms/sections/edit.html.erb +2 -2
- data/app/views/cms/sections/index.html.erb +3 -3
- data/app/views/cms/sections/new.html.erb +3 -3
- data/app/views/cms/sessions/new.html.erb +3 -3
- data/app/views/cms/shared/_pagination.html.erb +1 -1
- data/app/views/cms/shared/error.html.erb +1 -1
- data/app/views/cms/tags/render.html.erb +2 -2
- data/app/views/cms/tasks/new.html.erb +4 -4
- data/app/views/cms/users/_form.html.erb +3 -3
- data/app/views/cms/users/_toolbar.html.erb +3 -3
- data/app/views/cms/users/change_password.html.erb +5 -5
- data/app/views/cms/users/edit.html.erb +2 -2
- data/app/views/cms/users/index.html.erb +4 -4
- data/app/views/cms/users/new.html.erb +2 -2
- data/app/views/cms/users/show.html.erb +16 -16
- data/app/views/layouts/_cms_toolbar.html.erb +5 -5
- data/app/views/layouts/_page_toolbar.html.erb +11 -11
- data/app/views/layouts/cms/_footer.erb +1 -1
- data/app/views/layouts/cms/_head.html.erb +2 -6
- data/app/views/layouts/cms/administration.html.erb +32 -32
- data/app/views/layouts/cms/content_library.html.erb +5 -5
- data/app/views/layouts/cms/toolbar.html.erb +1 -1
- data/app/views/portlets/email_page/render.html.erb +2 -2
- data/app/views/portlets/forgot_password/render.html.erb +1 -1
- data/app/views/portlets/login/render.html.erb +4 -2
- data/app/views/portlets/reset_password/render.html.erb +1 -1
- data/app/views/tests/pretend/open_with_layout.html.erb +1 -1
- data/bin/bcms +0 -0
- data/bin/bcms-upgrade +232 -0
- data/bin/browsercms +2 -2
- data/browsercms.gemspec +16 -14
- data/db/migrate/20100705083859_browsercms_3_3_0.rb +56 -0
- data/db/seeds.rb +58 -0
- data/doc/guides/html/authentication.html +448 -192
- data/doc/guides/html/build_it_yourself.html +454 -175
- data/doc/guides/html/building_modules.html +451 -220
- data/doc/guides/html/building_templates.html +448 -498
- data/doc/guides/html/content_blocks.html +450 -470
- data/doc/guides/html/customizing_browsercms.html +453 -169
- data/doc/guides/html/deployment_guide.html +443 -82
- data/doc/guides/html/files/bcmsorg.js +28 -0
- data/doc/guides/html/files/clearfix.css +8 -0
- data/doc/guides/html/files/cufon.js +7 -0
- data/doc/guides/html/files/global.css +190 -0
- data/doc/guides/html/files/helvetica.js +91 -0
- data/doc/guides/html/files/jquery.js +11 -0
- data/doc/guides/html/getting_started.html +454 -213
- data/doc/guides/html/index.html +454 -174
- data/doc/guides/html/installing_modules.html +454 -186
- data/doc/guides/html/portlets.html +451 -232
- data/doc/guides/html/user_guide.html +452 -270
- data/doc/guides/html/writing_guides.html +454 -161
- data/lib/acts_as_list.rb +1 -1
- data/lib/browsercms.rb +10 -6
- data/lib/cms/acts.rb +7 -0
- data/lib/cms/authentication.rb +4 -0
- data/lib/cms/authentication/controller.rb +1 -1
- data/lib/cms/behaviors.rb +1 -1
- data/lib/cms/behaviors/archiving.rb +2 -2
- data/lib/cms/behaviors/attaching.rb +28 -43
- data/lib/cms/behaviors/categorizing.rb +1 -1
- data/lib/cms/behaviors/connecting.rb +27 -12
- data/lib/cms/behaviors/dynamic_attributes.rb +8 -5
- data/lib/cms/behaviors/hiding.rb +2 -2
- data/lib/cms/behaviors/publishing.rb +32 -22
- data/lib/cms/behaviors/rendering.rb +41 -18
- data/lib/cms/behaviors/searching.rb +1 -1
- data/lib/cms/behaviors/soft_deleting.rb +58 -29
- data/lib/cms/behaviors/taggable.rb +1 -1
- data/lib/cms/behaviors/userstamping.rb +5 -4
- data/lib/cms/behaviors/versioning.rb +192 -111
- data/lib/cms/content_rendering_support.rb +3 -3
- data/lib/cms/date_picker.rb +23 -0
- data/lib/cms/engine.rb +46 -0
- data/lib/cms/extensions.rb +1 -1
- data/lib/cms/extensions/active_record/errors.rb +2 -2
- data/lib/cms/extensions/hash.rb +4 -2
- data/lib/cms/extensions/string.rb +7 -2
- data/lib/cms/init.rb +32 -21
- data/lib/cms/module.rb +22 -0
- data/lib/cms/module_installation.rb +38 -0
- data/lib/cms/routes.rb +127 -115
- data/lib/cms/version.rb +2 -2
- data/lib/generators/browser_cms.rb +12 -0
- data/lib/generators/browser_cms/cms/USAGE +2 -0
- data/lib/generators/browser_cms/cms/cms_generator.rb +36 -0
- data/{rails_generators/browser_cms → lib/generators/browser_cms/cms}/templates/README +0 -0
- data/{rails_generators/browser_cms_demo_site → lib/generators/browser_cms/demo_site}/USAGE +0 -0
- data/lib/generators/browser_cms/demo_site/demo_site_generator.rb +138 -0
- data/lib/generators/browser_cms/demo_site/templates/demo_site.rake +11 -0
- data/{rails_generators/browser_cms_demo_site/templates/migration.rb → lib/generators/browser_cms/demo_site/templates/migration.erb} +2 -8
- data/lib/generators/cms/content_block/USAGE +22 -0
- data/lib/generators/cms/content_block/content_block_generator.rb +55 -0
- data/{rails_generators → lib/generators/cms}/content_block/templates/_form.html.erb +0 -0
- data/{rails_generators → lib/generators/cms}/content_block/templates/content_block.rb +0 -0
- data/{rails_generators → lib/generators/cms}/content_block/templates/controller.rb +0 -0
- data/{rails_generators → lib/generators/cms}/content_block/templates/functional_test.erb +0 -0
- data/{rails_generators/content_block/templates/migration.rb → lib/generators/cms/content_block/templates/migration.erb} +1 -1
- data/{rails_generators → lib/generators/cms}/content_block/templates/render.html.erb +0 -0
- data/{rails_generators → lib/generators/cms}/content_block/templates/unit_test.erb +0 -0
- data/lib/generators/cms/install/USAGE +8 -0
- data/lib/generators/cms/install/install_generator.rb +20 -0
- data/{rails_generators → lib/generators/cms}/portlet/USAGE +3 -16
- data/lib/generators/cms/portlet/portlet_generator.rb +38 -0
- data/{rails_generators → lib/generators/cms}/portlet/templates/_form.html.erb +0 -0
- data/{rails_generators → lib/generators/cms}/portlet/templates/portlet.rb +0 -0
- data/{rails_generators → lib/generators/cms}/portlet/templates/portlet_helper.rb +0 -0
- data/{rails_generators → lib/generators/cms}/portlet/templates/render.html.erb +0 -0
- data/{rails_generators → lib/generators/cms}/portlet/templates/unit_test.erb +0 -0
- data/{rails_generators → lib/generators/cms}/template/USAGE +1 -1
- data/lib/generators/cms/template/template_generator.rb +18 -0
- data/lib/generators/cms/template/templates/template.erb +2 -0
- data/lib/generators/cms/upgrade_module/README.txt +3 -0
- data/lib/generators/cms/upgrade_module/templates/20100705083859_browsercms_3_3_0.rb +56 -0
- data/lib/generators/cms/upgrade_module/templates/README +1 -0
- data/lib/generators/cms/upgrade_module/templates/USAGE.erb +10 -0
- data/lib/generators/cms/upgrade_module/templates/build_gem.rake +5 -0
- data/lib/generators/cms/upgrade_module/templates/engine.erb +7 -0
- data/lib/generators/cms/upgrade_module/templates/gemspec.erb +25 -0
- data/lib/generators/cms/upgrade_module/templates/gitignore.erb +11 -0
- data/lib/generators/cms/upgrade_module/templates/install.erb +9 -0
- data/lib/generators/cms/upgrade_module/templates/module_file.erb +3 -0
- data/lib/generators/cms/upgrade_module/templates/routes.erb +7 -0
- data/lib/generators/cms/upgrade_module/upgrade_module_generator.rb +61 -0
- data/lib/tasks/build_gem.rake +1 -0
- data/lib/tasks/cms.rake +34 -6
- data/lib/tasks/cucumber.rake +53 -0
- data/lib/tasks/db.rake +2 -2
- data/public/javascripts/cms/application.js +144 -135
- data/public/javascripts/cms/sitemap.js +383 -357
- data/public/javascripts/jquery-ui.js +782 -591
- data/public/javascripts/jquery.cookie.js +38 -43
- data/public/javascripts/jquery.js +13 -8
- data/public/javascripts/jquery.taglist.js +7 -0
- data/public/stylesheets/cms/date_picker.css +49 -40
- data/rails/init.rb +2 -3
- data/templates/blank.rb +13 -7
- data/templates/demo.rb +15 -7
- data/templates/module.rb +12 -75
- metadata +87 -407
- data/app/helpers/cms/content_block_helper.rb +0 -27
- data/app/views/layouts/cms/thickbox.html.erb +0 -24
- data/db/migrate/20120117144039_browsercms315.rb +0 -94
- data/db/migrate/20121114172307_load_seeds.rb +0 -70
- data/lib/cms/addressable.rb +0 -83
- data/lib/cms/error_pages.rb +0 -8
- data/public/images/cms/thickbox/loadingAnimation.gif +0 -0
- data/public/images/cms/thickbox/macFFBgHack.png +0 -0
- data/public/javascripts/jquery.contextMenu.js +0 -211
- data/public/javascripts/jquery.dimensions.js +0 -119
- data/public/javascripts/jquery.thickbox.js +0 -10
- data/public/stylesheets/cms/jquery.contextMenu.css +0 -61
- data/public/stylesheets/cms/thickbox.css +0 -163
- data/rails_generators/browser_cms/USAGE +0 -2
- data/rails_generators/browser_cms/browser_cms_generator.rb +0 -35
- data/rails_generators/browser_cms_demo_site/browser_cms_demo_site_generator.rb +0 -63
- data/rails_generators/content_block/USAGE +0 -32
- data/rails_generators/content_block/content_block_generator.rb +0 -69
- data/rails_generators/portlet/portlet_generator.rb +0 -35
- data/rails_generators/template/template_generator.rb +0 -18
- data/rails_generators/template/templates/template.erb +0 -3
- data/test/custom_assertions.rb +0 -74
- data/test/factories.rb +0 -111
- data/test/factories/sitemap_factories.rb +0 -28
- data/test/fixtures/connectors.yml +0 -97
- data/test/fixtures/content_type_groups.yml +0 -13
- data/test/fixtures/content_types.yml +0 -50
- data/test/fixtures/dynamic_view_versions.yml +0 -26
- data/test/fixtures/dynamic_views.yml +0 -26
- data/test/fixtures/group_permissions.yml +0 -16
- data/test/fixtures/group_sections.yml +0 -31
- data/test/fixtures/group_type_permissions.yml +0 -11
- data/test/fixtures/group_types.yml +0 -25
- data/test/fixtures/groups.yml +0 -25
- data/test/fixtures/html_block_versions.yml +0 -67
- data/test/fixtures/html_blocks.yml +0 -63
- data/test/fixtures/page_versions.yml +0 -265
- data/test/fixtures/pages.yml +0 -85
- data/test/fixtures/permissions.yml +0 -28
- data/test/fixtures/section_nodes.yml +0 -46
- data/test/fixtures/sections.yml +0 -19
- data/test/fixtures/sites.yml +0 -9
- data/test/fixtures/user_group_memberships.yml +0 -11
- data/test/fixtures/users.yml +0 -15
- data/test/functional/cms/cache_controller_test.rb +0 -14
- data/test/functional/cms/categories_controller_test.rb +0 -25
- data/test/functional/cms/connectors_controller_test.rb +0 -60
- data/test/functional/cms/content_block_controller_test.rb +0 -120
- data/test/functional/cms/content_controller_test.rb +0 -439
- data/test/functional/cms/content_types_controller_test.rb +0 -18
- data/test/functional/cms/dashboard_controller_test.rb +0 -16
- data/test/functional/cms/dynamic_views_controller_test.rb +0 -52
- data/test/functional/cms/file_blocks_controller_test.rb +0 -52
- data/test/functional/cms/groups_controller_test.rb +0 -50
- data/test/functional/cms/home_controller_test.rb +0 -156
- data/test/functional/cms/html_blocks_controller_test.rb +0 -164
- data/test/functional/cms/image_blocks_controller_test.rb +0 -82
- data/test/functional/cms/links_controller_test.rb +0 -148
- data/test/functional/cms/pages_controller_test.rb +0 -227
- data/test/functional/cms/portlets_controller_test.rb +0 -67
- data/test/functional/cms/section_nodes_controller_test.rb +0 -112
- data/test/functional/cms/sections_controller_test.rb +0 -227
- data/test/functional/cms/sessions_controller_test.rb +0 -76
- data/test/functional/cms/toolbar_controller_test.rb +0 -64
- data/test/functional/cms/users_controller_test.rb +0 -231
- data/test/functional/tests/pretend_controller_test.rb +0 -57
- data/test/integration/cms/ckeditor_test.rb +0 -30
- data/test/integration/cms/password_management_test.rb +0 -56
- data/test/integration/login_test.rb +0 -14
- data/test/integration/sitemap_performance_test.rb +0 -26
- data/test/selenium-core/Blank.html +0 -7
- data/test/selenium-core/InjectedRemoteRunner.html +0 -8
- data/test/selenium-core/RemoteRunner.html +0 -110
- data/test/selenium-core/SeleniumLog.html +0 -109
- data/test/selenium-core/TestPrompt.html +0 -145
- data/test/selenium-core/TestRunner-splash.html +0 -55
- data/test/selenium-core/TestRunner.hta +0 -176
- data/test/selenium-core/TestRunner.html +0 -176
- data/test/selenium-core/domviewer/butmin.gif +0 -0
- data/test/selenium-core/domviewer/butplus.gif +0 -0
- data/test/selenium-core/domviewer/domviewer.css +0 -298
- data/test/selenium-core/domviewer/domviewer.html +0 -16
- data/test/selenium-core/domviewer/selenium-domviewer.js +0 -205
- data/test/selenium-core/icons/all.png +0 -0
- data/test/selenium-core/icons/continue.png +0 -0
- data/test/selenium-core/icons/continue_disabled.png +0 -0
- data/test/selenium-core/icons/pause.png +0 -0
- data/test/selenium-core/icons/pause_disabled.png +0 -0
- data/test/selenium-core/icons/selected.png +0 -0
- data/test/selenium-core/icons/step.png +0 -0
- data/test/selenium-core/icons/step_disabled.png +0 -0
- data/test/selenium-core/iedoc-core.xml +0 -1515
- data/test/selenium-core/iedoc.xml +0 -1469
- data/test/selenium-core/lib/cssQuery/cssQuery-p.js +0 -6
- data/test/selenium-core/lib/cssQuery/src/cssQuery-level2.js +0 -142
- data/test/selenium-core/lib/cssQuery/src/cssQuery-level3.js +0 -150
- data/test/selenium-core/lib/cssQuery/src/cssQuery-standard.js +0 -53
- data/test/selenium-core/lib/cssQuery/src/cssQuery.js +0 -356
- data/test/selenium-core/lib/prototype.js +0 -2006
- data/test/selenium-core/lib/scriptaculous/builder.js +0 -101
- data/test/selenium-core/lib/scriptaculous/controls.js +0 -815
- data/test/selenium-core/lib/scriptaculous/dragdrop.js +0 -915
- data/test/selenium-core/lib/scriptaculous/effects.js +0 -958
- data/test/selenium-core/lib/scriptaculous/scriptaculous.js +0 -47
- data/test/selenium-core/lib/scriptaculous/slider.js +0 -283
- data/test/selenium-core/lib/scriptaculous/unittest.js +0 -383
- data/test/selenium-core/scripts/find_matching_child.js +0 -69
- data/test/selenium-core/scripts/htmlutils.js +0 -894
- data/test/selenium-core/scripts/injection.html +0 -72
- data/test/selenium-core/scripts/js2html.js +0 -70
- data/test/selenium-core/scripts/narcissus-defs.js +0 -175
- data/test/selenium-core/scripts/narcissus-exec.js +0 -1054
- data/test/selenium-core/scripts/narcissus-parse.js +0 -1003
- data/test/selenium-core/scripts/se2html.js +0 -63
- data/test/selenium-core/scripts/selenium-api.js +0 -2409
- data/test/selenium-core/scripts/selenium-browserbot.js +0 -2203
- data/test/selenium-core/scripts/selenium-browserdetect.js +0 -150
- data/test/selenium-core/scripts/selenium-commandhandlers.js +0 -377
- data/test/selenium-core/scripts/selenium-executionloop.js +0 -175
- data/test/selenium-core/scripts/selenium-logging.js +0 -147
- data/test/selenium-core/scripts/selenium-remoterunner.js +0 -571
- data/test/selenium-core/scripts/selenium-testrunner.js +0 -1333
- data/test/selenium-core/scripts/selenium-version.js +0 -5
- data/test/selenium-core/scripts/user-extensions.js +0 -3
- data/test/selenium-core/scripts/user-extensions.js.sample +0 -75
- data/test/selenium-core/scripts/xmlextras.js +0 -153
- data/test/selenium-core/selenium-logo.png +0 -0
- data/test/selenium-core/selenium-test.css +0 -43
- data/test/selenium-core/selenium.css +0 -299
- data/test/selenium-core/xpath/dom.js +0 -428
- data/test/selenium-core/xpath/misc.js +0 -252
- data/test/selenium-core/xpath/xpath.js +0 -2223
- data/test/selenium/_login_as_cmsadmin.rsel +0 -4
- data/test/selenium/dashboard.rsel +0 -5
- data/test/selenium/html_blocks.rsel +0 -4
- data/test/selenium/login/failed_login.rsel +0 -8
- data/test/selenium/login/successful_login.rsel +0 -9
- data/test/selenium/page_templates.rsel +0 -12
- data/test/selenium/pages/edit_properties.rsel +0 -5
- data/test/selenium/site/view_home_page.rsel +0 -4
- data/test/selenium/sitemap/move_page.rsel +0 -9
- data/test/selenium/sitemap/open_section.rsel +0 -6
- data/test/selenium/sitemap/select_page.rsel +0 -12
- data/test/selenium/sitemap/select_section.rsel +0 -17
- data/test/test_helper.rb +0 -193
- data/test/test_logging.rb +0 -67
- data/test/unit/behaviors/attaching_test.rb +0 -357
- data/test/unit/behaviors/connectable_test.rb +0 -29
- data/test/unit/behaviors/dynamic_attributes_test.rb +0 -38
- data/test/unit/behaviors/publishable_test.rb +0 -84
- data/test/unit/behaviors/searching_test.rb +0 -102
- data/test/unit/behaviors/taggable_test.rb +0 -109
- data/test/unit/behaviors/versioning_test.rb +0 -36
- data/test/unit/extensions/active_record/base_test.rb +0 -10
- data/test/unit/extensions/hash_test.rb +0 -17
- data/test/unit/extensions/integer_test.rb +0 -10
- data/test/unit/helpers/application_helper_test.rb +0 -77
- data/test/unit/helpers/form_builder_test.rb +0 -36
- data/test/unit/helpers/menu_helper_test.rb +0 -242
- data/test/unit/helpers/page_helper_test.rb +0 -67
- data/test/unit/helpers/path_helper_test.rb +0 -57
- data/test/unit/lib/acts_as_content_page_test.rb +0 -72
- data/test/unit/lib/cms/authentication/controller_test.rb +0 -20
- data/test/unit/lib/cms/sitemap_test.rb +0 -206
- data/test/unit/lib/cms_domain_support_test.rb +0 -43
- data/test/unit/lib/command_line_test.rb +0 -70
- data/test/unit/lib/content_block_test.rb +0 -203
- data/test/unit/lib/content_rendering_support_test.rb +0 -40
- data/test/unit/lib/generators_test.rb +0 -40
- data/test/unit/lib/routes_test.rb +0 -57
- data/test/unit/models/attachment_test.rb +0 -116
- data/test/unit/models/category_test.rb +0 -40
- data/test/unit/models/category_type_test.rb +0 -8
- data/test/unit/models/connector_test.rb +0 -152
- data/test/unit/models/content_type_test.rb +0 -56
- data/test/unit/models/email_page_portlet_test.rb +0 -14
- data/test/unit/models/file_block_test.rb +0 -230
- data/test/unit/models/group_test.rb +0 -13
- data/test/unit/models/html_block_test.rb +0 -102
- data/test/unit/models/link_test.rb +0 -52
- data/test/unit/models/page_partial_test.rb +0 -29
- data/test/unit/models/page_route_test.rb +0 -29
- data/test/unit/models/page_template_test.rb +0 -40
- data/test/unit/models/page_test.rb +0 -792
- data/test/unit/models/permission_test.rb +0 -10
- data/test/unit/models/portlet_test.rb +0 -69
- data/test/unit/models/sections_test.rb +0 -264
- data/test/unit/models/site_test.rb +0 -50
- data/test/unit/models/task_test.rb +0 -141
- data/test/unit/models/user_test.rb +0 -352
- data/test/unit/schema_statements_test.rb +0 -41
data/lib/acts_as_list.rb
CHANGED
|
@@ -7,7 +7,7 @@ module ActsAsList
|
|
|
7
7
|
# The class that has this specified needs to have a +position+ column defined as an integer on
|
|
8
8
|
# the mapped database table.
|
|
9
9
|
#
|
|
10
|
-
#
|
|
10
|
+
# Todo list example:
|
|
11
11
|
#
|
|
12
12
|
# class TodoList < ActiveRecord::Base
|
|
13
13
|
# has_many :todo_items, :order => "position"
|
data/lib/browsercms.rb
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
|
+
require 'cms/engine'
|
|
1
2
|
require 'cms/extensions'
|
|
2
|
-
require 'cms/init'
|
|
3
3
|
require 'cms/routes'
|
|
4
4
|
require 'cms/caching'
|
|
5
|
-
require 'cms/addressable'
|
|
6
|
-
require 'cms/error_pages'
|
|
7
5
|
|
|
8
6
|
#Load libraries that are included with CMS
|
|
9
7
|
require 'acts_as_list'
|
|
10
8
|
ActiveRecord::Base.send(:include, ActsAsList)
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
require 'cms/behaviors'
|
|
10
|
+
require 'cms/acts'
|
|
11
|
+
require 'cms/authentication'
|
|
12
|
+
require 'cms/behaviors'
|
|
13
|
+
require 'cms/domain_support'
|
|
14
|
+
require 'cms/date_picker'
|
|
15
|
+
require 'cms/content_rendering_support'
|
|
16
|
+
|
|
17
|
+
# This shouldn't be necessary, except for the need to get into the loadpath for testing.
|
|
18
|
+
require 'command_line'
|
data/lib/cms/acts.rb
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
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)
|
|
@@ -105,7 +105,7 @@ module Cms
|
|
|
105
105
|
#
|
|
106
106
|
# We can return to this location by calling #redirect_back_or_default.
|
|
107
107
|
def store_location
|
|
108
|
-
session[:return_to] = request.
|
|
108
|
+
session[:return_to] = request.fullpath
|
|
109
109
|
end
|
|
110
110
|
|
|
111
111
|
# Redirect to the URI stored by the most recent store_location call or
|
data/lib/cms/behaviors.rb
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
# ClassMethods module and including the InstanceMethods module into the Article class.
|
|
23
23
|
# Each Behavior typically has one macro method which takes an options Hash, which of course
|
|
24
24
|
# varies from Behavior to Behavior. The macro method will also sometimes call other
|
|
25
|
-
# macro methods, like before_fitler,
|
|
25
|
+
# macro methods, like before_fitler, scope, etc. to modify the model.
|
|
26
26
|
# Consult the documentation for each module for specific details as to what
|
|
27
27
|
# the Behavior does.
|
|
28
28
|
module Cms::Behaviors; end
|
|
@@ -12,8 +12,8 @@ module Cms
|
|
|
12
12
|
@is_archivable = true
|
|
13
13
|
include InstanceMethods
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
scope :archived, :conditions => {:archived => true}
|
|
16
|
+
scope :not_archived, :conditions => {:archived => false}
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
module InstanceMethods
|
|
@@ -1,36 +1,34 @@
|
|
|
1
1
|
module Cms
|
|
2
2
|
module Behaviors
|
|
3
3
|
module Attaching
|
|
4
|
-
SANITIZATION_REGEXES = [[/\s/, '_'], [/[&+()]/, '-'], [/[=?!'"{}\[\]#<>%]/, '']]
|
|
5
|
-
|
|
4
|
+
SANITIZATION_REGEXES = [ [/\s/, '_'], [/[&+()]/, '-'], [/[=?!'"{}\[\]#<>%]/, ''] ]
|
|
5
|
+
|
|
6
6
|
def self.included(model_class)
|
|
7
7
|
model_class.extend(MacroMethods)
|
|
8
8
|
end
|
|
9
|
-
|
|
10
|
-
module MacroMethods
|
|
9
|
+
module MacroMethods
|
|
11
10
|
def belongs_to_attachment?
|
|
12
11
|
!!@belongs_to_attachment
|
|
13
12
|
end
|
|
14
|
-
|
|
15
13
|
def belongs_to_attachment(options={})
|
|
16
14
|
@belongs_to_attachment = true
|
|
17
15
|
include InstanceMethods
|
|
18
|
-
before_validation :process_attachment
|
|
16
|
+
before_validation :process_attachment
|
|
19
17
|
before_save :update_attachment_if_changed
|
|
20
18
|
after_save :clear_attachment_ivars
|
|
21
|
-
belongs_to :attachment, :dependent => :destroy
|
|
22
|
-
|
|
19
|
+
belongs_to :attachment, :dependent => :destroy
|
|
20
|
+
|
|
23
21
|
validates_each :attachment_file do |record, attr, value|
|
|
24
22
|
if record.attachment && !record.attachment.valid?
|
|
25
23
|
record.attachment.errors.each do |err_field, err_value|
|
|
26
24
|
if err_field.to_sym == :file_path
|
|
27
25
|
record.errors.add(:attachment_file_path, err_value)
|
|
28
|
-
else
|
|
26
|
+
else
|
|
29
27
|
record.errors.add(:attachment_file, err_value)
|
|
30
28
|
end
|
|
31
|
-
end
|
|
29
|
+
end
|
|
32
30
|
end
|
|
33
|
-
end
|
|
31
|
+
end
|
|
34
32
|
end
|
|
35
33
|
end
|
|
36
34
|
module InstanceMethods
|
|
@@ -86,6 +84,7 @@ module Cms
|
|
|
86
84
|
end
|
|
87
85
|
|
|
88
86
|
def process_attachment
|
|
87
|
+
Rails.logger.warn "Processing attachment (#{attachment_file})"
|
|
89
88
|
if attachment.nil? && attachment_file.blank?
|
|
90
89
|
unless attachment_file_path.blank?
|
|
91
90
|
errors.add(:attachment_file, "You must upload a file")
|
|
@@ -94,30 +93,22 @@ module Cms
|
|
|
94
93
|
unless attachment_section_id.blank?
|
|
95
94
|
errors.add(:attachment_file, "You must upload a file")
|
|
96
95
|
return false
|
|
97
|
-
end
|
|
96
|
+
end
|
|
98
97
|
else
|
|
99
98
|
build_attachment if attachment.nil?
|
|
100
99
|
attachment.temp_file = attachment_file
|
|
101
|
-
|
|
100
|
+
Rails.logger.warn "After attachment (#{attachment.temp_file})"
|
|
101
|
+
|
|
102
|
+
set_attachment_file_path
|
|
102
103
|
if attachment.file_path.blank?
|
|
103
104
|
errors.add(:attachment_file_path, "File Name is required for attachment")
|
|
104
105
|
return false
|
|
105
106
|
end
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
set_attachment_section
|
|
108
|
+
if attachment.section_id.blank?
|
|
108
109
|
errors.add(:attachment_file, "Section is required for attachment")
|
|
109
110
|
return false
|
|
110
111
|
end
|
|
111
|
-
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
# Define at :set_attachment_path if you would like to override the way file_path is set
|
|
116
|
-
def handle_setting_attachment_path
|
|
117
|
-
if self.respond_to? :set_attachment_path
|
|
118
|
-
set_attachment_path
|
|
119
|
-
else
|
|
120
|
-
use_default_attachment_path
|
|
121
112
|
end
|
|
122
113
|
end
|
|
123
114
|
|
|
@@ -125,26 +116,18 @@ module Cms
|
|
|
125
116
|
@attachment_file = nil
|
|
126
117
|
@attachment_file_path = nil
|
|
127
118
|
@attachment_section_id = nil
|
|
128
|
-
@attachment_section = nil
|
|
119
|
+
@attachment_section = nil
|
|
129
120
|
end
|
|
130
121
|
|
|
131
|
-
#
|
|
132
|
-
def
|
|
133
|
-
if self.respond_to? :set_attachment_section
|
|
134
|
-
set_attachment_section
|
|
135
|
-
else
|
|
136
|
-
use_default_attachment_section
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
# Default behavior for assigning a section, if a block does not define its own.
|
|
141
|
-
def use_default_attachment_section
|
|
122
|
+
# Override this method if you would like to override the way the section is set
|
|
123
|
+
def set_attachment_section
|
|
142
124
|
if !attachment_file.blank?
|
|
143
125
|
attachment.section = Section.root.first
|
|
144
126
|
end
|
|
145
127
|
end
|
|
146
128
|
|
|
147
|
-
|
|
129
|
+
# Override this method if you would like to override the way file_path is set
|
|
130
|
+
def set_attachment_file_path
|
|
148
131
|
if !attachment_file.blank?
|
|
149
132
|
attachment.file_path = "/attachments/#{File.basename(attachment_file.original_filename).to_s.downcase}"
|
|
150
133
|
end
|
|
@@ -157,12 +140,14 @@ module Cms
|
|
|
157
140
|
end
|
|
158
141
|
|
|
159
142
|
def update_attachment_if_changed
|
|
143
|
+
logger.debug {"UPDATE ATTACHMENT if changed" }
|
|
160
144
|
if attachment
|
|
161
145
|
attachment.archived = archived if self.class.archivable?
|
|
162
146
|
if respond_to?(:revert_to_version) && revert_to_version
|
|
163
147
|
attachment.revert_to(revert_to_version.attachment_version)
|
|
164
148
|
elsif new_record? || attachment.changed? || attachment.temp_file
|
|
165
|
-
attachment.save
|
|
149
|
+
saved_attach = attachment.save
|
|
150
|
+
logger.warn "Attachment was saved = #{saved_attach}"
|
|
166
151
|
end
|
|
167
152
|
self.attachment_version = attachment.draft.version
|
|
168
153
|
end
|
|
@@ -188,16 +173,16 @@ module Cms
|
|
|
188
173
|
(published? && live_version?) ? attachment_file_path : "/cms/attachments/#{attachment_id}?version=#{attachment_version}"
|
|
189
174
|
else
|
|
190
175
|
nil
|
|
191
|
-
end
|
|
176
|
+
end
|
|
192
177
|
end
|
|
193
|
-
|
|
178
|
+
|
|
194
179
|
# Forces this record to be changed, even if nothing has changed
|
|
195
180
|
# This is necessary if just the section.id has changed, for example
|
|
196
181
|
def dirty!
|
|
197
182
|
# Seems like a hack, is there a better way?
|
|
198
183
|
self.updated_at = Time.now
|
|
199
|
-
end
|
|
200
|
-
|
|
184
|
+
end
|
|
185
|
+
|
|
201
186
|
end
|
|
202
187
|
end
|
|
203
188
|
end
|
|
@@ -22,7 +22,9 @@ module Cms
|
|
|
22
22
|
attr_accessor :updated_by_page
|
|
23
23
|
|
|
24
24
|
after_create :connect_to_page
|
|
25
|
-
after_save :update_connected_pages
|
|
25
|
+
after_save :update_connected_pages, :unless=>:skip_callbacks
|
|
26
|
+
|
|
27
|
+
|
|
26
28
|
end
|
|
27
29
|
end
|
|
28
30
|
module ClassMethods
|
|
@@ -39,12 +41,11 @@ module Cms
|
|
|
39
41
|
module InstanceMethods
|
|
40
42
|
|
|
41
43
|
def connected_pages
|
|
42
|
-
|
|
43
|
-
@connected_pages = Page.connected_to(self)
|
|
44
|
+
Page.currently_connected_to(self)
|
|
44
45
|
end
|
|
45
46
|
|
|
46
47
|
def connected_page_count
|
|
47
|
-
Page.
|
|
48
|
+
Page.currently_connected_to(self).count
|
|
48
49
|
end
|
|
49
50
|
|
|
50
51
|
def content_block_type
|
|
@@ -67,33 +68,47 @@ module Cms
|
|
|
67
68
|
connected_page.create_connector(self, connect_to_container)
|
|
68
69
|
end
|
|
69
70
|
true
|
|
70
|
-
end
|
|
71
|
-
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
#
|
|
74
|
+
# After blocks are updated, all pages they are connected to should also be updated,
|
|
75
|
+
# connecting the page to the new version of the block, as well as putting the pages into
|
|
76
|
+
# draft status if necessary.
|
|
77
|
+
#
|
|
72
78
|
def update_connected_pages
|
|
73
79
|
# If this is versioned, then we need make new versions of all the pages this is connected to
|
|
74
|
-
if self.class.versioned?
|
|
80
|
+
if self.class.versioned?
|
|
75
81
|
#logger.info "..... Updating connected pages for #{self.class} #{id} v#{version}"
|
|
76
82
|
|
|
77
83
|
#Get all the pages the previous version of this connectable was connected to
|
|
78
|
-
draft_version = draft.version
|
|
79
|
-
Page.connected_to(:connectable => self, :version => (draft_version - 1)).all
|
|
84
|
+
draft_version = draft.version
|
|
85
|
+
connected_pages = Page.connected_to(:connectable => self, :version => (draft_version - 1)).all
|
|
86
|
+
# puts "Found #{connected_pages}"
|
|
87
|
+
connected_pages.each do |p|
|
|
80
88
|
# This is needed in the case of updating page,
|
|
81
89
|
# which updates this object, so as not to create a loop
|
|
82
|
-
if p != updated_by_page
|
|
90
|
+
if p != updated_by_page
|
|
83
91
|
#This just creates a new version of the page
|
|
84
92
|
action = deleted? ? "Deleted" : "Edited"
|
|
85
93
|
p.update_attributes(:version_comment => "#{self.class.name} ##{id} was #{action}")
|
|
86
94
|
|
|
87
95
|
#The previous step will copy over a connector pointing to the previous version of this connectable
|
|
88
96
|
#We need to change that to point at the new version of this connectable
|
|
89
|
-
p.connectors
|
|
97
|
+
connectors_for_page = p.connectors
|
|
98
|
+
# puts "cfp #{connectors_for_page}"
|
|
99
|
+
page_draft_version = p.draft.version
|
|
100
|
+
cnn = connectors_for_page.for_page_version(page_draft_version)
|
|
101
|
+
# puts "Connectors for page version #{page_draft_version} are #{cnn.all}"
|
|
102
|
+
connectors = cnn.for_connectable(self)
|
|
103
|
+
# puts "Found connectors #{connectors.all}"
|
|
104
|
+
connectors.each do |con|
|
|
90
105
|
con.update_attribute(:connectable_version, draft_version)
|
|
91
106
|
end
|
|
92
107
|
end
|
|
93
108
|
end
|
|
94
109
|
end
|
|
95
110
|
true
|
|
96
|
-
end
|
|
111
|
+
end
|
|
97
112
|
end
|
|
98
113
|
end
|
|
99
114
|
end
|
|
@@ -127,10 +127,10 @@ module Cms
|
|
|
127
127
|
include InstanceMethods
|
|
128
128
|
|
|
129
129
|
# Provide default options
|
|
130
|
-
options[:class_name] ||= self.
|
|
130
|
+
options[:class_name] ||= self.model_name + 'Attribute'
|
|
131
131
|
options[:table_name] ||= options[:class_name].tableize
|
|
132
132
|
options[:relationship_name] ||= options[:class_name].tableize.to_sym
|
|
133
|
-
options[:foreign_key] ||= self.
|
|
133
|
+
options[:foreign_key] ||= self.model_name.foreign_key
|
|
134
134
|
options[:base_foreign_key] ||= self.name.underscore.foreign_key
|
|
135
135
|
options[:name_field] ||= 'name'
|
|
136
136
|
options[:value_field] ||= 'value'
|
|
@@ -178,7 +178,8 @@ module Cms
|
|
|
178
178
|
unless private_method_defined? :method_missing_without_dynamic_attributes
|
|
179
179
|
|
|
180
180
|
# Carry out delayed actions before save
|
|
181
|
-
|
|
181
|
+
after_validation :save_modified_dynamic_attributes
|
|
182
|
+
# after_validation_on_update :save_modified_dynamic_attributes
|
|
182
183
|
|
|
183
184
|
# Make attributes seem real
|
|
184
185
|
alias_method :method_missing_without_dynamic_attributes, :method_missing
|
|
@@ -222,6 +223,7 @@ module Cms
|
|
|
222
223
|
# like normal attributes in the fact that the database is not touched
|
|
223
224
|
# until save is called.
|
|
224
225
|
def save_modified_dynamic_attributes
|
|
226
|
+
return if new_record?
|
|
225
227
|
return if @save_dynamic_attr.nil?
|
|
226
228
|
@save_dynamic_attr.each do |s|
|
|
227
229
|
model, attr_name = s
|
|
@@ -339,7 +341,8 @@ module Cms
|
|
|
339
341
|
kls
|
|
340
342
|
end
|
|
341
343
|
|
|
342
|
-
#
|
|
344
|
+
# Overrides the attributes= defined in ActiveRecord::Base
|
|
345
|
+
#
|
|
343
346
|
# The only difference is that this doesn't check to see if the
|
|
344
347
|
# model responds_to the method before sending it
|
|
345
348
|
# This is needed for Rails 2.2
|
|
@@ -349,7 +352,7 @@ module Cms
|
|
|
349
352
|
attributes.stringify_keys!
|
|
350
353
|
|
|
351
354
|
multi_parameter_attributes = []
|
|
352
|
-
attributes =
|
|
355
|
+
attributes = sanitize_for_mass_assignment(attributes) if guard_protected_attributes
|
|
353
356
|
|
|
354
357
|
attributes.each do |k, v|
|
|
355
358
|
if k.include?("(")
|
data/lib/cms/behaviors/hiding.rb
CHANGED
|
@@ -13,8 +13,8 @@ module Cms
|
|
|
13
13
|
extend ClassMethods
|
|
14
14
|
include InstanceMethods
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
scope :hidden, :conditions => {:hidden => true}
|
|
17
|
+
scope :not_hidden, :conditions => {:hidden => false}
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
module ClassMethods
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
module Cms
|
|
2
2
|
module Behaviors
|
|
3
|
+
|
|
4
|
+
# Allows content to be marked as publishable or not. In practice, this has a direct dependency on
|
|
5
|
+
# Versioning, so it may not make sense to be separated out this way.
|
|
3
6
|
module Publishing
|
|
4
7
|
def self.included(model_class)
|
|
5
8
|
model_class.extend(MacroMethods)
|
|
@@ -22,8 +25,8 @@ module Cms
|
|
|
22
25
|
|
|
23
26
|
after_save :publish_for_non_versioned
|
|
24
27
|
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
scope :published, :conditions => {:published => true}
|
|
29
|
+
scope :unpublished, lambda {
|
|
27
30
|
if versioned?
|
|
28
31
|
{ :joins => :versions,
|
|
29
32
|
:conditions =>
|
|
@@ -64,12 +67,23 @@ module Cms
|
|
|
64
67
|
logger.warn("Could not publish, #{e.class}: #{e.message}\n#{e.backtrace.join("\n")}")
|
|
65
68
|
false
|
|
66
69
|
end
|
|
67
|
-
|
|
70
|
+
|
|
71
|
+
# Force the publishing of this block.
|
|
72
|
+
#
|
|
73
|
+
# Warning: The behavior of calling the following on an existing block:
|
|
74
|
+
# block.save_on_publish
|
|
75
|
+
# block.save!
|
|
76
|
+
#
|
|
77
|
+
# Is different than calling:
|
|
78
|
+
# block.publish!
|
|
79
|
+
#
|
|
80
|
+
# And it probably shouldn't be. Try to merge the 'else' with the 'Versioning#create_or_update' method to eliminate duplication
|
|
68
81
|
def publish!
|
|
69
82
|
if new_record?
|
|
70
83
|
self.publish_on_save = true
|
|
71
84
|
save!
|
|
72
85
|
else
|
|
86
|
+
# Do this for publishing existing blocks.
|
|
73
87
|
transaction do
|
|
74
88
|
if self.class.versioned?
|
|
75
89
|
d = draft
|
|
@@ -81,15 +95,20 @@ module Cms
|
|
|
81
95
|
d.update_attributes(:published => true)
|
|
82
96
|
|
|
83
97
|
# copy values from the draft to the main record
|
|
84
|
-
quoted_attributes = d.send(:
|
|
98
|
+
quoted_attributes = d.send(:arel_attributes_values, false, false, self.class.versioned_columns)
|
|
99
|
+
|
|
100
|
+
#the values from the draft MAY have a relation of the versioned module
|
|
101
|
+
#as opposed to the actual class itself
|
|
102
|
+
#eg Page::Version, and not Page
|
|
103
|
+
#so remap to the actual arel_table´
|
|
104
|
+
#I haven't figured out why this is, but I know it happens when you call save! on Page
|
|
105
|
+
#during seeding of data
|
|
106
|
+
if self.class.arel_table.name != quoted_attributes.keys[0].relation.name
|
|
107
|
+
quoted_attributes = quoted_attributes.inject({}){|hash, pair| hash[self.class.arel_table[pair[0].name]] = pair[1]; hash}
|
|
108
|
+
end
|
|
85
109
|
|
|
86
110
|
# Doing the SQL ourselves to avoid callbacks
|
|
87
|
-
|
|
88
|
-
"UPDATE #{self.class.quoted_table_name} " +
|
|
89
|
-
"SET #{quoted_comma_pair_list(connection, quoted_attributes)} " +
|
|
90
|
-
"WHERE #{connection.quote_column_name(self.class.primary_key)} = #{quote_value(id)}",
|
|
91
|
-
"#{self.class.name} Publish"
|
|
92
|
-
)
|
|
111
|
+
self.class.unscoped.where(self.class.arel_table[self.class.primary_key].eq(id)).arel.update(quoted_attributes)
|
|
93
112
|
end
|
|
94
113
|
else
|
|
95
114
|
connection.update(
|
|
@@ -106,24 +125,15 @@ module Cms
|
|
|
106
125
|
end
|
|
107
126
|
|
|
108
127
|
def status
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
end
|
|
128
|
+
live? ? :published : :draft
|
|
129
|
+
end
|
|
112
130
|
|
|
113
131
|
def status_name
|
|
114
132
|
status.to_s.titleize
|
|
115
133
|
end
|
|
116
134
|
|
|
117
135
|
def live?
|
|
118
|
-
|
|
119
|
-
if (respond_to?(:latest_version) && self.latest_version)
|
|
120
|
-
version == latest_version && published?
|
|
121
|
-
else
|
|
122
|
-
live_version.version == draft.version && published?
|
|
123
|
-
end
|
|
124
|
-
else
|
|
125
|
-
true
|
|
126
|
-
end
|
|
136
|
+
self.class.versioned? ? live_version.version == draft.version && published? : true
|
|
127
137
|
end
|
|
128
138
|
|
|
129
139
|
end
|