browsercms 3.4.2 → 3.5.0.rc1
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/README.markdown +1 -0
- data/app/assets/images/cms/file-uploading.gif +0 -0
- data/app/assets/javascripts/cms/application.js +1 -0
- data/app/assets/javascripts/cms/attachment_manager.js.erb +87 -0
- data/app/assets/javascripts/cms/core_library.js.erb +38 -25
- data/app/assets/stylesheets/cms/application.css.erb +1 -0
- data/app/assets/stylesheets/cms/attachment_manager.css.scss +28 -0
- data/app/controllers/cms/application_controller.rb +1 -1
- data/app/controllers/cms/attachments_controller.rb +45 -10
- data/app/controllers/cms/cache_controller.rb +1 -1
- data/app/controllers/cms/content_block_controller.rb +134 -122
- data/app/controllers/cms/content_controller.rb +143 -155
- data/app/controllers/cms/dashboard_controller.rb +11 -9
- data/app/controllers/cms/error_handling.rb +19 -7
- data/app/controllers/cms/file_blocks_controller.rb +2 -2
- data/app/controllers/cms/home_controller.rb +3 -0
- data/app/controllers/cms/section_nodes_controller.rb +52 -44
- data/app/controllers/cms/sections_controller.rb +4 -2
- data/app/controllers/cms/toolbar_controller.rb +14 -10
- data/app/helpers/cms/application_helper.rb +23 -19
- data/app/helpers/cms/form_builder.rb +65 -18
- data/app/helpers/cms/mobile_helper.rb +19 -0
- data/app/helpers/cms/path_helper.rb +30 -4
- data/app/helpers/cms/rendering_helper.rb +9 -1
- data/app/models/cms/abstract_file_block.rb +6 -6
- data/app/models/cms/attachment.rb +196 -107
- data/app/models/cms/category.rb +3 -0
- data/app/models/cms/category_type.rb +2 -0
- data/app/models/cms/connector.rb +3 -0
- data/app/models/cms/content_type.rb +3 -0
- data/app/models/cms/content_type_group.rb +2 -0
- data/app/models/cms/dynamic_view.rb +4 -0
- data/app/models/cms/email_message.rb +2 -0
- data/app/models/cms/file_block.rb +9 -2
- data/app/models/cms/group.rb +5 -2
- data/app/models/cms/group_permission.rb +2 -0
- data/app/models/cms/group_section.rb +3 -0
- data/app/models/cms/group_type.rb +2 -0
- data/app/models/cms/group_type_permission.rb +2 -0
- data/app/models/cms/html_block.rb +3 -2
- data/app/models/cms/image_block.rb +13 -2
- data/app/models/cms/page.rb +14 -3
- data/app/models/cms/page_route.rb +4 -0
- data/app/models/cms/page_route_condition.rb +1 -0
- data/app/models/cms/page_route_option.rb +2 -0
- data/app/models/cms/page_route_requirement.rb +1 -0
- data/app/models/cms/permission.rb +3 -0
- data/app/models/cms/portlet.rb +2 -2
- data/app/models/cms/redirect.rb +2 -0
- data/app/models/cms/section.rb +15 -1
- data/app/models/cms/section_node.rb +1 -0
- data/app/models/cms/site.rb +3 -0
- data/app/models/cms/tag.rb +2 -0
- data/app/models/cms/tagging.rb +3 -0
- data/app/models/cms/task.rb +5 -1
- data/app/models/cms/user.rb +1 -1
- data/app/models/cms/user_group_membership.rb +3 -0
- data/app/views/cms/attachments/_attachment.html.erb +14 -0
- data/app/views/cms/attachments/_attachment_table.html.erb +17 -0
- data/app/views/cms/attachments/_attachment_wrapper.html.erb +4 -0
- data/app/views/cms/blocks/index.html.erb +2 -3
- data/app/views/cms/blocks/show.html.erb +1 -1
- data/app/views/cms/dynamic_views/index.html.erb +1 -1
- data/app/views/cms/email_messages/index.html.erb +1 -1
- data/app/views/cms/file_blocks/_form.html.erb +1 -27
- data/app/views/cms/file_blocks/_section_selector.html.erb +13 -0
- data/app/views/cms/file_blocks/render.html.erb +3 -3
- data/app/views/cms/form_builder/_cms_attachment_manager.html.erb +26 -0
- data/app/views/cms/form_builder/_cms_file_field.html.erb +27 -35
- data/app/views/cms/groups/index.html.erb +1 -1
- data/app/views/cms/image_blocks/_form.html.erb +1 -27
- data/app/views/cms/image_blocks/render.html.erb +4 -1
- data/app/views/cms/page_routes/index.html.erb +3 -0
- data/app/views/cms/shared/error.xml.erb +8 -0
- data/app/views/cms/tags/render.html.erb +1 -1
- data/app/views/cms/toolbar/_mobile_toggle.html.erb +33 -0
- data/app/views/cms/users/index.html.erb +1 -1
- data/app/views/layouts/_page_toolbar.html.erb +2 -1
- data/bin/bcms +21 -26
- data/config/routes.rb +3 -2
- data/db/browsercms.seeds.rb +2 -1
- data/db/migrate/20111130221145_browsercms340.rb +5 -4
- data/db/migrate/20120329144406_browsercms350.rb +32 -0
- data/{test/dummy/db → db}/schema.rb +97 -128
- data/{performance_tuning_notes.md → doc/performance_tuning_notes.md} +0 -0
- data/doc/release_notes.md +74 -0
- data/lib/browsercms.rb +3 -0
- data/lib/cms/acts/content_block.rb +10 -2
- data/lib/cms/addressable.rb +8 -0
- data/lib/cms/attachments/attachment_serving.rb +59 -0
- data/lib/cms/attachments/configuration.rb +88 -0
- data/lib/cms/behaviors/attaching.rb +305 -136
- data/lib/cms/behaviors/connecting.rb +3 -4
- data/lib/cms/behaviors/dynamic_attributes.rb +121 -118
- data/lib/cms/behaviors/flush_cache_on_change.rb +1 -3
- data/lib/cms/behaviors/naming.rb +16 -0
- data/lib/cms/behaviors/pagination.rb +4 -1
- data/lib/cms/behaviors/publishing.rb +9 -3
- data/lib/cms/behaviors/searching.rb +3 -8
- data/lib/cms/behaviors/soft_deleting.rb +1 -0
- data/lib/cms/behaviors/taggable.rb +2 -0
- data/lib/cms/behaviors/versioning.rb +73 -120
- data/lib/cms/caching.rb +53 -11
- data/lib/cms/commands/actions.rb +19 -2
- data/lib/cms/configuration.rb +44 -0
- data/lib/cms/content_rendering_support.rb +9 -6
- data/lib/cms/default_accessible.rb +13 -0
- data/lib/cms/domain_support.rb +22 -0
- data/lib/cms/engine.rb +40 -19
- data/lib/cms/engine_helper.rb +54 -0
- data/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb +14 -2
- data/lib/cms/mobile_aware.rb +67 -0
- data/lib/cms/route_extensions.rb +3 -0
- data/lib/cms/upgrades/v3_5_0.rb +155 -0
- data/lib/cms/version.rb +6 -1
- data/lib/generators/cms/content_block/content_block_generator.rb +14 -9
- data/lib/generators/cms/content_block/templates/_form.html.erb +17 -6
- data/lib/generators/cms/content_block/templates/render.html.erb +12 -5
- data/lib/generators/cms/template/template_generator.rb +11 -2
- data/lib/tasks/cms.rake +23 -0
- data/lib/templates/active_record/model/model.rb +6 -0
- metadata +127 -517
- data/.gitignore +0 -24
- data/.rvmrc +0 -2
- data/Gemfile +0 -29
- data/Gemfile.lock +0 -196
- data/Rakefile +0 -97
- data/app/assets/images/browsercms/.gitkeep +0 -0
- data/app/controllers/browsercms/application_controller.rb +0 -4
- data/browsercms.gemspec +0 -35
- data/config/cucumber.yml +0 -8
- data/config/database.jdbcmysql.yml +0 -30
- data/config/database.mysql.yml +0 -27
- data/config/database.postgres.yml +0 -25
- data/config/database.sqlite3.yml +0 -11
- data/config/environment.rb +0 -6
- data/config/initializers/query_reviewer_patch.rb +0 -12
- data/config/initializers/rack_1_2_1_patch.rb +0 -12
- data/config/locales/en.yml +0 -5
- data/features/acts_as_content_page.feature +0 -62
- data/features/add_content_to_pages.feature +0 -45
- data/features/caching.feature +0 -13
- data/features/ckeditor.feature +0 -11
- data/features/commands/confirm_aruba_works.feature +0 -24
- data/features/commands/generate_module.feature +0 -54
- data/features/commands/install_browsercms.feature +0 -21
- data/features/commands/new_demo_project.feature +0 -30
- data/features/commands/new_projects.feature +0 -50
- data/features/commands/upgrade_modules_to_3_4_0_from_3_1_x.feature +0 -19
- data/features/commands/upgrade_project_to_3_4_0_from_3_3_x.feature +0 -52
- data/features/commands/upgrading_modules.feature +0 -67
- data/features/content_blocks/manage_custom_blocks.feature +0 -67
- data/features/content_blocks/manage_html_blocks.feature +0 -48
- data/features/content_blocks/manage_image_blocks.feature +0 -41
- data/features/content_files.feature +0 -37
- data/features/content_pages.feature +0 -21
- data/features/generators/content_blocks_for_modules.feature +0 -58
- data/features/generators/content_blocks_for_projects.feature +0 -109
- data/features/install_content.feature +0 -25
- data/features/jquery-testplan.txt +0 -12
- data/features/manage_groups.feature +0 -33
- data/features/manage_page_routes.feature +0 -72
- data/features/manage_redirects.feature +0 -20
- data/features/manage_sections.feature +0 -12
- data/features/manage_tasks.feature +0 -25
- data/features/manage_users.feature +0 -38
- data/features/page_templates.feature +0 -49
- data/features/portlets/email_friend_portlet.feature +0 -29
- data/features/portlets/portlets.feature +0 -100
- data/features/portlets/tag_cloud_portlet.feature +0 -28
- data/features/sitemap/create_pages.feature +0 -15
- data/features/sitemap/manage_links.feature +0 -29
- data/features/sitemap/sitemap.feature +0 -18
- data/features/step_definitions/acts_as_content_page_steps.rb.rb +0 -3
- data/features/step_definitions/ckeditor_steps.rb +0 -13
- data/features/step_definitions/command_line_steps.rb +0 -212
- data/features/step_definitions/content_pages_steps.rb +0 -170
- data/features/step_definitions/data_steps.rb +0 -48
- data/features/step_definitions/edit_page_templates_steps.rb +0 -21
- data/features/step_definitions/html_blocks_steps.rb +0 -9
- data/features/step_definitions/install_content_steps.rb +0 -4
- data/features/step_definitions/manage_content_blocks_steps.rb +0 -26
- data/features/step_definitions/manage_image_blocks_steps.rb +0 -31
- data/features/step_definitions/manage_sections_steps.rb +0 -18
- data/features/step_definitions/manage_user_steps.rb +0 -22
- data/features/step_definitions/more_custom_block_steps.rb +0 -34
- data/features/step_definitions/page_route_steps.rb +0 -65
- data/features/step_definitions/page_template_steps.rb +0 -5
- data/features/step_definitions/permissions_steps.rb +0 -13
- data/features/step_definitions/portlets_steps.rb +0 -64
- data/features/step_definitions/redirect_steps.rb +0 -12
- data/features/step_definitions/sitemap_steps.rb +0 -18
- data/features/step_definitions/tag_cloud_steps.rb +0 -11
- data/features/step_definitions/task_steps.rb +0 -4
- data/features/step_definitions/taxonomy_steps.rb +0 -16
- data/features/step_definitions/upgrade_module_steps.rb +0 -76
- data/features/step_definitions/web_steps.rb +0 -211
- data/features/support/async_support.rb +0 -17
- data/features/support/command_line_helpers.rb +0 -63
- data/features/support/debug_formatter.rb +0 -7
- data/features/support/debugging.rb +0 -28
- data/features/support/env.rb +0 -73
- data/features/support/git_api.rb +0 -9
- data/features/support/open_on_first_failure.rb +0 -25
- data/features/support/paths.rb +0 -32
- data/features/support/rails_api.rb +0 -8
- data/features/support/selectors.rb +0 -39
- data/features/support/transforms.rb +0 -7
- data/features/taxonomy/add_content_with_category.feature +0 -30
- data/features/taxonomy/manage_categories.feature +0 -20
- data/features/taxonomy/manage_category_types.feature +0 -16
- data/lib/cms/init.rb +0 -105
- data/lib/tasks/data.rake +0 -43
- data/lib/tasks/db.rake +0 -82
- data/public/styled_file_field/index.html +0 -72
- data/script/cucumber +0 -10
- data/script/rails +0 -6
- data/test/console_helper.rb +0 -5
- data/test/custom_assertions.rb +0 -84
- data/test/dummy/Rakefile +0 -7
- data/test/dummy/app/assets/javascripts/application.js +0 -9
- data/test/dummy/app/assets/javascripts/content_page.js +0 -2
- data/test/dummy/app/assets/stylesheets/application.css +0 -7
- data/test/dummy/app/assets/stylesheets/content_page.css +0 -4
- data/test/dummy/app/controllers/application_controller.rb +0 -3
- data/test/dummy/app/controllers/cms/products_controller.rb +0 -2
- data/test/dummy/app/controllers/cms/sample_blocks_controller.rb +0 -3
- data/test/dummy/app/controllers/content_page_controller.rb +0 -13
- data/test/dummy/app/helpers/application_helper.rb +0 -2
- data/test/dummy/app/helpers/content_page_helper.rb +0 -2
- data/test/dummy/app/mailers/.gitkeep +0 -0
- data/test/dummy/app/models/.gitkeep +0 -0
- data/test/dummy/app/models/cms/sample_block.rb +0 -22
- data/test/dummy/app/models/product.rb +0 -5
- data/test/dummy/app/views/cms/products/_form.html.erb +0 -7
- data/test/dummy/app/views/cms/products/render.html.erb +0 -3
- data/test/dummy/app/views/content_page/custom_page.html.erb +0 -3
- data/test/dummy/app/views/content_page/index.html.erb +0 -2
- data/test/dummy/app/views/layouts/application.html.erb +0 -14
- data/test/dummy/app/views/layouts/templates/default.html.erb +0 -17
- data/test/dummy/app/views/layouts/templates/subpage.html.erb +0 -16
- data/test/dummy/app/views/test_route/index.html.erb +0 -14
- data/test/dummy/config.ru +0 -4
- data/test/dummy/config/application.rb +0 -45
- data/test/dummy/config/boot.rb +0 -10
- data/test/dummy/config/database.yml +0 -27
- data/test/dummy/config/environment.rb +0 -5
- data/test/dummy/config/environments/development.rb +0 -32
- data/test/dummy/config/environments/production.rb +0 -60
- data/test/dummy/config/environments/test.rb +0 -46
- data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/test/dummy/config/initializers/browsercms.rb +0 -7
- data/test/dummy/config/initializers/inflections.rb +0 -10
- data/test/dummy/config/initializers/mime_types.rb +0 -5
- data/test/dummy/config/initializers/quiet_sprocket_assets.rb +0 -13
- data/test/dummy/config/initializers/secret_token.rb +0 -7
- data/test/dummy/config/initializers/session_store.rb +0 -8
- data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/test/dummy/config/locales/en.yml +0 -5
- data/test/dummy/config/routes.rb +0 -23
- data/test/dummy/db/migrate/20111228141250_create_products.rb +0 -16
- data/test/dummy/db/seeds.rb +0 -1
- data/test/dummy/lib/assets/.gitkeep +0 -0
- data/test/dummy/public/404.html +0 -26
- data/test/dummy/public/422.html +0 -26
- data/test/dummy/public/500.html +0 -26
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +0 -6
- data/test/dummy/test/functional/content_page_controller_test.rb +0 -9
- data/test/dummy/test/unit/helpers/content_page_helper_test.rb +0 -4
- data/test/factories.rb +0 -235
- data/test/fixtures/multipart/foo.jpg +0 -0
- data/test/fixtures/multipart/sample_upload.txt +0 -1
- data/test/fixtures/multipart/second_upload.txt +0 -1
- data/test/fixtures/multipart/test.jpg +0 -0
- data/test/fixtures/multipart/version1.txt +0 -1
- data/test/fixtures/multipart/version2.txt +0 -1
- data/test/functional/cms/cache_controller_test.rb +0 -16
- data/test/functional/cms/categories_controller_test.rb +0 -28
- data/test/functional/cms/connectors_controller_test.rb +0 -64
- data/test/functional/cms/content_block_controller_test.rb +0 -127
- data/test/functional/cms/content_controller_test.rb +0 -351
- data/test/functional/cms/dashboard_controller_test.rb +0 -20
- data/test/functional/cms/file_blocks_controller_test.rb +0 -55
- data/test/functional/cms/home_controller_test.rb +0 -160
- data/test/functional/cms/html_blocks_controller_test.rb +0 -159
- data/test/functional/cms/image_blocks_controller_test.rb +0 -78
- data/test/functional/cms/links_controller_test.rb +0 -92
- data/test/functional/cms/log/test.log +0 -0
- data/test/functional/cms/pages_controller_test.rb +0 -233
- data/test/functional/cms/portlets_controller_test.rb +0 -57
- data/test/functional/cms/sections_controller_test.rb +0 -234
- data/test/functional/cms/sessions_controller_test.rb +0 -80
- data/test/functional/cms/tasks_controller_test.rb +0 -64
- data/test/functional/cms/toolbar_controller_test.rb +0 -76
- data/test/functional/cms/users_controller_test.rb +0 -218
- data/test/integration/cms/password_management_test.rb +0 -66
- data/test/integration/sitemap_performance_test.rb +0 -26
- data/test/mock_file.rb +0 -33
- data/test/performance/browsing_test.rb +0 -9
- data/test/support/engine_controller_hacks.rb +0 -34
- data/test/support/factory_helpers.rb +0 -57
- data/test/support/rails_3_1_routes_hack.rb +0 -70
- data/test/test_helper.rb +0 -199
- data/test/test_logging.rb +0 -67
- data/test/unit/active_record_callbacks.rb +0 -50
- data/test/unit/behaviors/attaching_test.rb +0 -370
- data/test/unit/behaviors/cms_user_test.rb +0 -67
- data/test/unit/behaviors/connectable_test.rb +0 -32
- data/test/unit/behaviors/connecting_test.rb +0 -56
- data/test/unit/behaviors/dynamic_attributes_test.rb +0 -74
- data/test/unit/behaviors/namespacing_test.rb +0 -76
- data/test/unit/behaviors/publishable_test.rb +0 -83
- data/test/unit/behaviors/rendering_test.rb +0 -68
- data/test/unit/behaviors/searching_test.rb +0 -102
- data/test/unit/behaviors/taggable_test.rb +0 -110
- data/test/unit/behaviors/userstamping_test.rb +0 -27
- data/test/unit/behaviors/versioning_test.rb +0 -102
- data/test/unit/extensions/active_record/base_test.rb +0 -25
- data/test/unit/extensions/hash_test.rb +0 -26
- data/test/unit/extensions/integer_test.rb +0 -10
- data/test/unit/extensions/string_test.rb +0 -14
- data/test/unit/factories_test.rb +0 -50
- data/test/unit/generators/install_generator_test.rb +0 -15
- data/test/unit/helpers/application_helper_test.rb +0 -104
- data/test/unit/helpers/date_picker_test.rb +0 -17
- data/test/unit/helpers/menu_helper_test.rb +0 -240
- data/test/unit/helpers/page_helper_test.rb +0 -69
- data/test/unit/helpers/path_helper_test.rb +0 -38
- data/test/unit/helpers/rendering_helper_test.rb +0 -8
- 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/engine_helper_test.rb +0 -119
- data/test/unit/lib/cms/sitemap_test.rb +0 -210
- data/test/unit/lib/cms_domain_support_test.rb +0 -44
- data/test/unit/lib/command_line_test.rb +0 -70
- data/test/unit/lib/content_block_test.rb +0 -304
- 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 -98
- data/test/unit/mock_file_test.rb +0 -19
- data/test/unit/models/attachment_test.rb +0 -160
- 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_group_test.rb +0 -26
- data/test/unit/models/content_type_test.rb +0 -177
- data/test/unit/models/dynamic_views_test.rb +0 -36
- data/test/unit/models/email_page_portlet_test.rb +0 -20
- data/test/unit/models/file_block_test.rb +0 -246
- data/test/unit/models/group_test.rb +0 -29
- data/test/unit/models/html_block_test.rb +0 -121
- data/test/unit/models/image_block_test.rb +0 -35
- data/test/unit/models/link_test.rb +0 -52
- data/test/unit/models/namespaces_test.rb +0 -57
- data/test/unit/models/page_partial_test.rb +0 -37
- data/test/unit/models/page_route_test.rb +0 -113
- data/test/unit/models/page_template_test.rb +0 -50
- data/test/unit/models/page_test.rb +0 -879
- data/test/unit/models/permission_test.rb +0 -10
- data/test/unit/models/portlet_test.rb +0 -99
- data/test/unit/models/sections_test.rb +0 -278
- data/test/unit/models/site_test.rb +0 -50
- data/test/unit/models/task_test.rb +0 -150
- data/test/unit/models/user_test.rb +0 -358
- data/test/unit/schema_statements_test.rb +0 -137
- data/todo_list.markdown +0 -50
data/features/support/git_api.rb
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# The first scenario that fails, we want to save and launch the page in the Browser.
|
|
2
|
-
# We don't want to to open subsequent failures, as that can be HIGHLY annoying when running from the command line.
|
|
3
|
-
#
|
|
4
|
-
# Also, this https://gist.github.com/398643
|
|
5
|
-
# has good info on how to save Assets/CSS so we can see the full version of the page.
|
|
6
|
-
#
|
|
7
|
-
module LaunchOnFirstFailure
|
|
8
|
-
class << self
|
|
9
|
-
attr_accessor :failed_tests
|
|
10
|
-
def failure_occurred
|
|
11
|
-
self.failed_tests = 0 unless failed_tests
|
|
12
|
-
self.failed_tests += 1
|
|
13
|
-
end
|
|
14
|
-
def failed_tests?
|
|
15
|
-
failed_tests && failed_tests >= 0
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
After('~@cli')do |scenario|
|
|
21
|
-
if scenario.failed? && !LaunchOnFirstFailure.failed_tests?
|
|
22
|
-
LaunchOnFirstFailure.failure_occurred
|
|
23
|
-
save_and_open_page
|
|
24
|
-
end
|
|
25
|
-
end
|
data/features/support/paths.rb
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
module NavigationHelpers
|
|
2
|
-
# Maps a name to a path. Used by the
|
|
3
|
-
#
|
|
4
|
-
# When /^I go to (.+)$/ do |page_name|
|
|
5
|
-
#
|
|
6
|
-
# step definition in web_steps.rb
|
|
7
|
-
#
|
|
8
|
-
def path_to(page_name)
|
|
9
|
-
case page_name
|
|
10
|
-
when /^the home\s?page$/
|
|
11
|
-
'/'
|
|
12
|
-
# Add more mappings here.
|
|
13
|
-
# Here is an example that pulls values out of the Regexp:
|
|
14
|
-
#
|
|
15
|
-
# when /^(.*)'s profile page$/i
|
|
16
|
-
# user_profile_path(User.find_by_login($1))
|
|
17
|
-
|
|
18
|
-
else
|
|
19
|
-
begin
|
|
20
|
-
page_name =~ /^the (.*) page$/
|
|
21
|
-
path_components = $1.split(/\s+/)
|
|
22
|
-
self.send(path_components.push('path').join('_').to_sym)
|
|
23
|
-
rescue NoMethodError, ArgumentError
|
|
24
|
-
raise "Can't find mapping from \"#{page_name}\" to a path.\n" +
|
|
25
|
-
"Now, go and add a mapping in #{__FILE__}"
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
World(NavigationHelpers)
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
module HtmlSelectorsHelpers
|
|
2
|
-
# Maps a name to a selector. Used primarily by the
|
|
3
|
-
#
|
|
4
|
-
# When /^(.+) within (.+)$/ do |step, scope|
|
|
5
|
-
#
|
|
6
|
-
# step definitions in web_steps.rb
|
|
7
|
-
#
|
|
8
|
-
def selector_for(locator)
|
|
9
|
-
case locator
|
|
10
|
-
|
|
11
|
-
when "the page"
|
|
12
|
-
"html > body"
|
|
13
|
-
|
|
14
|
-
# Add more mappings here.
|
|
15
|
-
# Here is an example that pulls values out of the Regexp:
|
|
16
|
-
#
|
|
17
|
-
# when /^the (notice|error|info) flash$/
|
|
18
|
-
# ".flash.#{$1}"
|
|
19
|
-
|
|
20
|
-
# You can also return an array to use a different selector
|
|
21
|
-
# type, like:
|
|
22
|
-
#
|
|
23
|
-
# when /the header/
|
|
24
|
-
# [:xpath, "//header"]
|
|
25
|
-
|
|
26
|
-
# This allows you to provide a quoted selector as the scope
|
|
27
|
-
# for "within" steps as was previously the default for the
|
|
28
|
-
# web steps:
|
|
29
|
-
when /^"(.+)"$/
|
|
30
|
-
$1
|
|
31
|
-
|
|
32
|
-
else
|
|
33
|
-
raise "Can't find mapping from \"#{locator}\" to a selector.\n" +
|
|
34
|
-
"Now, go and add a mapping in #{__FILE__}"
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
World(HtmlSelectorsHelpers)
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
Feature: Add Content with categories
|
|
2
|
-
|
|
3
|
-
Background:
|
|
4
|
-
Given the cms database is populated
|
|
5
|
-
Given a Content Type named "Product" is registered
|
|
6
|
-
And I am logged in as a Content Editor
|
|
7
|
-
|
|
8
|
-
Scenario: With no Category Type defined yet
|
|
9
|
-
When I visit /cms/products/new
|
|
10
|
-
Then I should see "You must first create a 'Category Type' named 'Product'"
|
|
11
|
-
|
|
12
|
-
Scenario: With No Categories
|
|
13
|
-
Given the following Category Types exist:
|
|
14
|
-
| name |
|
|
15
|
-
| Product |
|
|
16
|
-
When I request /cms/products/new
|
|
17
|
-
Then I should see "You must first create a Category with a Category Type of 'Product'."
|
|
18
|
-
|
|
19
|
-
Scenario: With Categories
|
|
20
|
-
Given the following Category Types exist:
|
|
21
|
-
| name |
|
|
22
|
-
| Product |
|
|
23
|
-
And the following Categories exist for "Product":
|
|
24
|
-
| name |
|
|
25
|
-
| T-shirts |
|
|
26
|
-
| Hoodies |
|
|
27
|
-
When I visit /cms/products/new
|
|
28
|
-
Then I should see the following content:
|
|
29
|
-
| T-shirts |
|
|
30
|
-
| Hoodies |
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
Feature: Manage Categories
|
|
2
|
-
Content editors should be able to add/edit/delete categories from the user interface.
|
|
3
|
-
|
|
4
|
-
Background:
|
|
5
|
-
Given the cms database is populated
|
|
6
|
-
And I am logged in as a Content Editor
|
|
7
|
-
And the following Category Types exist:
|
|
8
|
-
| name |
|
|
9
|
-
| Product |
|
|
10
|
-
|
|
11
|
-
Scenario: Add New Category
|
|
12
|
-
Given I visit /cms/categories/new
|
|
13
|
-
And I fill in "Name" with "T-Shirts"
|
|
14
|
-
And I select "Product" from "Type"
|
|
15
|
-
And I click on "Save"
|
|
16
|
-
Then I should see a page titled "List Categories"
|
|
17
|
-
And I should see "T-Shirts"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
Feature: Manage Category Types
|
|
2
|
-
Content editors should be able to add/edit/delete category types from the user interface.
|
|
3
|
-
|
|
4
|
-
Background:
|
|
5
|
-
Given the cms database is populated
|
|
6
|
-
And I am logged in as a Content Editor
|
|
7
|
-
|
|
8
|
-
Scenario: Add New Category Type
|
|
9
|
-
Given I visit /cms/category_types/new
|
|
10
|
-
And I fill in "Name" with "Product"
|
|
11
|
-
And I click on "Save"
|
|
12
|
-
Then I should see a page titled "List Category Types"
|
|
13
|
-
And I should see "Product"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
data/lib/cms/init.rb
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
require 'cms/version'
|
|
2
|
-
|
|
3
|
-
module Cms
|
|
4
|
-
class << self
|
|
5
|
-
__root__ = File.expand_path(File.join(File.dirname(__FILE__), "..", ".."))
|
|
6
|
-
|
|
7
|
-
define_method(:root) { __root__ }
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
attr_accessor :attachment_file_permission
|
|
11
|
-
|
|
12
|
-
def version
|
|
13
|
-
@version = Cms::VERSION
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def load_rake_tasks
|
|
17
|
-
load "#{Cms.root}/lib/tasks/cms.rake"
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# This is no longer really needed since Engines handle initialization.
|
|
21
|
-
def init
|
|
22
|
-
puts "BrowserCMS init has been called!!!!!!!"
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# This is used by CMS modules to register with the CMS generator
|
|
26
|
-
# which files should be copied over to the app when the CMS generator is run.
|
|
27
|
-
# src_root is the absolute path to the root of the files,
|
|
28
|
-
# then each argument after that is a Dir.glob pattern string.
|
|
29
|
-
#
|
|
30
|
-
# @param [String] src_root The root directory of the gem
|
|
31
|
-
# @param [Array of String] files A list of all file names to be copied
|
|
32
|
-
def add_generator_paths(src_root, *files)
|
|
33
|
-
generator_paths << [src_root, files]
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
alias_method :add_paths_to_copied_into_project, :add_generator_paths
|
|
37
|
-
|
|
38
|
-
def generator_paths
|
|
39
|
-
@generator_paths ||= []
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def add_to_rails_paths(path)
|
|
43
|
-
ActiveSupport::Dependencies.autoload_paths << File.join(path, "app", "portlets")
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def add_to_routes(route)
|
|
47
|
-
routes << route
|
|
48
|
-
end
|
|
49
|
-
def routes
|
|
50
|
-
@routes ||=[]
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Determines which WYSIWYG editor is the 'default' for a BrowserCMS project
|
|
54
|
-
#
|
|
55
|
-
# bcms modules can changes this by overriding it in their configuration.
|
|
56
|
-
def content_editor
|
|
57
|
-
@wysiwig_editor ||= "ckeditor"
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def content_editor=(editor)
|
|
61
|
-
@wysiwig_editor = editor
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def markdown?
|
|
65
|
-
Object.const_defined?("Markdown")
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def reserved_paths
|
|
69
|
-
@reserved_paths ||= ["/cms", "/cache"]
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
# This next 'hack' is to allow script/generate browser_cms to work on Windows machines. I'm not sure why this is necessary.
|
|
73
|
-
#
|
|
74
|
-
# This Generator is adding an absolute file path to the manifest, which is file (like a .js or migration) in
|
|
75
|
-
# the gem directory on the developers's machine, rather
|
|
76
|
-
# than just a relative path with the rails_generator directory. On windows, this will mean you are basically doing this.
|
|
77
|
-
#
|
|
78
|
-
# m.file "C:/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js", "testing/jquery-ui.js"
|
|
79
|
-
#
|
|
80
|
-
# When the generator hits this command during playback, it will throw an error like this:
|
|
81
|
-
# Pattern 'c' matches more than one generator: content_block, controller
|
|
82
|
-
# The generator then fails and stops copying. Stripping the C: off the front seems to fix this problem.
|
|
83
|
-
# I.e. This command correctly copies the file on Windows XP.
|
|
84
|
-
# m.file "/Ruby/lib/ruby/gems/1.8/gems/browsercms-3.0.0/public/javascripts/jquery-ui.js", "testing/jquery-ui.js"
|
|
85
|
-
#
|
|
86
|
-
def scrub_path(path)
|
|
87
|
-
windows_drive_pattern = /\b[A-Za-z]:\// # Works on drives labeled A-Z:
|
|
88
|
-
scrubbed_source_file_name = path.gsub(windows_drive_pattern, "/")
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
module Errors
|
|
92
|
-
class AccessDenied < StandardError
|
|
93
|
-
def initialize
|
|
94
|
-
super("Access Denied")
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
Time::DATE_FORMATS.merge!(
|
|
101
|
-
:year_month_day => '%Y/%m/%d',
|
|
102
|
-
:date => '%m/%d/%Y'
|
|
103
|
-
)
|
|
104
|
-
|
|
105
|
-
|
data/lib/tasks/data.rake
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
def create_pages(root)
|
|
2
|
-
(1..20).each do |i|
|
|
3
|
-
Page.create!(:name=>"Page #{i}", :path=>"#{root.path}/page-#{i}", :section=>root, :template_file_name=>"default.html.erb", :publish_on_save=>true)
|
|
4
|
-
end
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
def reset_root_user_password
|
|
8
|
-
u = User.find(1)
|
|
9
|
-
u.password= "cmsadmin"
|
|
10
|
-
u.password_confirmation = "cmsadmin"
|
|
11
|
-
u.save!
|
|
12
|
-
|
|
13
|
-
puts "Reset #{u.login}'s password to '#{u.password}'."
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
namespace :cms do
|
|
17
|
-
|
|
18
|
-
task "load" do
|
|
19
|
-
sh "mysql -u root browsercms_development --password= < db/backups/backup.sql"
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
task "correct" => :environment do
|
|
23
|
-
ActiveRecord::Base.connection.execute("UPDATE portlets SET type = 'DynamicPortlet' where type != 'DynamicPortlet'")
|
|
24
|
-
ct = ["'CategoryType'", "'Category'", "'HtmlBlock'", "'Portlet'", "'FileBlock'", "'ImageBlock'", "'Tag'"].join(",")
|
|
25
|
-
ActiveRecord::Base.connection.execute("DELETE FROM content_types where name not in (#{ct})")
|
|
26
|
-
reset_root_user_password
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
desc "Load a CMS site backup (a .sql file must be called db/backups/backup.sql) for testing."
|
|
30
|
-
task "load:backup" => ['db:drop','db:create', 'cms:load', 'cms:correct', 'db:migrate']
|
|
31
|
-
|
|
32
|
-
desc "Load some sample pages for performance tuning"
|
|
33
|
-
task "load:pages" => :environment do
|
|
34
|
-
root = Section.root.first
|
|
35
|
-
create_pages(root)
|
|
36
|
-
(21..40).each do |i|
|
|
37
|
-
sec = Section.create! :name=>"Section #{i}", :path=>"/section-#{i}/", :parent=>root
|
|
38
|
-
create_pages(sec)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
end
|
data/lib/tasks/db.rake
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
require 'find'
|
|
2
|
-
|
|
3
|
-
namespace :db do
|
|
4
|
-
|
|
5
|
-
desc "Creates and populates the initial BrowserCMS database for a new project."
|
|
6
|
-
task :install => ["db:create", "db:migrate", "db:seed"]
|
|
7
|
-
|
|
8
|
-
desc "Drop, create and migrate the database"
|
|
9
|
-
task :redo => ["db:drop", "db:create", "db:migrate"]
|
|
10
|
-
|
|
11
|
-
namespace :seed do
|
|
12
|
-
|
|
13
|
-
desc "Load the seed data from db/browsercms.seeds.rb"
|
|
14
|
-
task :browsercms => :environment do
|
|
15
|
-
load File.join("db", "browsercms.seeds.rb")
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
namespace :fixtures do
|
|
20
|
-
desc 'Dumps all models into fixtures.'
|
|
21
|
-
task :dump => :environment do
|
|
22
|
-
models = []
|
|
23
|
-
Find.find(Rails.root + '/app/models') do |path|
|
|
24
|
-
unless File.directory?(path) then models << path.match(/(\w+).rb/)[1] end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
models -= %w[content_observer guest_user file_block image_block email_message_mailer]
|
|
28
|
-
|
|
29
|
-
puts "Models: " + models.join(', ')
|
|
30
|
-
|
|
31
|
-
models.each do |m|
|
|
32
|
-
model = m.tableize.classify.constantize
|
|
33
|
-
create_fixture(model)
|
|
34
|
-
create_fixture(model.version_class) if model.versioned?
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def create_fixture(model)
|
|
39
|
-
puts "Creating fixture for #{model.table_name}"
|
|
40
|
-
entries = model.find(:all, :order => 'id ASC')
|
|
41
|
-
|
|
42
|
-
formatted, increment, tab = '', 1, ' '
|
|
43
|
-
entries.each do |a|
|
|
44
|
-
formatted += model.table_name.singularize + '_' + increment.to_s + ':' + "\n"
|
|
45
|
-
increment += 1
|
|
46
|
-
|
|
47
|
-
a.attributes.each do |column, value|
|
|
48
|
-
formatted += tab
|
|
49
|
-
|
|
50
|
-
match = value.to_s.match(/\n/)
|
|
51
|
-
if match
|
|
52
|
-
formatted += column + ': |' + "\n"
|
|
53
|
-
|
|
54
|
-
value.to_a.each do |v|
|
|
55
|
-
formatted += tab + tab + v
|
|
56
|
-
end
|
|
57
|
-
else
|
|
58
|
-
formatted += column + ': ' + value.to_s
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
formatted += "\n"
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
formatted += "\n"
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
model_file = Rails.root + '/test/fixtures/' + model.table_name + '.yml'
|
|
68
|
-
|
|
69
|
-
# Final munging of file
|
|
70
|
-
formatted = "# auto-generated by rake db:fixtures:dump, DO NOT EDIT BY HAND!\n#{formatted}"
|
|
71
|
-
|
|
72
|
-
# Scrub ERB
|
|
73
|
-
formatted.gsub!('<% ', ',<%% ')
|
|
74
|
-
formatted.gsub!('<%= ', ',<%%= ')
|
|
75
|
-
formatted.gsub!(' %>', ' %%>')
|
|
76
|
-
|
|
77
|
-
File.exists?(model_file) ? File.delete(model_file) : nil
|
|
78
|
-
File.open(model_file, 'w') {|f| f << formatted}
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
end
|
|
82
|
-
end
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
<html>
|
|
2
|
-
<head>
|
|
3
|
-
<title>Styled File Field</title>
|
|
4
|
-
<script type="text/javascript" src="/javascripts/jquery.js"></script>
|
|
5
|
-
<script type='text/javascript'
|
|
6
|
-
src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
|
|
7
|
-
<script type="text/javascript">
|
|
8
|
-
jQuery(function($){
|
|
9
|
-
$('.file_field input[type=file]').each(function(){
|
|
10
|
-
var fileInput = $(this)
|
|
11
|
-
var fileInputId = fileInput.attr('id')
|
|
12
|
-
var fileInputName = fileInput.attr('name')
|
|
13
|
-
|
|
14
|
-
var img = $(document.createElement('img')).attr({'id': this.id, 'src': '/images/cms/browse.gif'})
|
|
15
|
-
var fileName = $(document.createElement('span')).html('no file selected')
|
|
16
|
-
var remove = $(document.createElement('button')).attr('type', 'button').html('Remove').click(function(){
|
|
17
|
-
var newFile = $(document.createElement('input')).attr({
|
|
18
|
-
'type': 'file',
|
|
19
|
-
'class': 'file',
|
|
20
|
-
'name': fileInputName,
|
|
21
|
-
'id': fileInputId,
|
|
22
|
-
'size': 1
|
|
23
|
-
}).change(function(){
|
|
24
|
-
fileName.html($(this).val())
|
|
25
|
-
})
|
|
26
|
-
$('#'+fileInputId).replaceWith(newFile)
|
|
27
|
-
fileName.html('no file selected')
|
|
28
|
-
return false;
|
|
29
|
-
})
|
|
30
|
-
var div = $(document.createElement('div')).addClass('fake_file_field').append(img).append(fileName).append(remove)
|
|
31
|
-
div.insertAfter(fileInput)
|
|
32
|
-
fileInput.change(function(){
|
|
33
|
-
fileName.html($(this).val())
|
|
34
|
-
})
|
|
35
|
-
})
|
|
36
|
-
})
|
|
37
|
-
</script>
|
|
38
|
-
<style type="text/css">
|
|
39
|
-
div.file_field {
|
|
40
|
-
position: relative;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
div.file_field input {
|
|
44
|
-
position: relative;
|
|
45
|
-
text-align: right;
|
|
46
|
-
-moz-opacity:0 ;
|
|
47
|
-
filter:alpha(opacity: 0);
|
|
48
|
-
opacity: 0;
|
|
49
|
-
z-index: 2;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
div.fake_file_field {
|
|
53
|
-
position: absolute;
|
|
54
|
-
top: 0px;
|
|
55
|
-
left: 0px;
|
|
56
|
-
z-index: 1;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
div.file_field button {
|
|
60
|
-
z-index: 3;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
</style>
|
|
64
|
-
</head>
|
|
65
|
-
<body>
|
|
66
|
-
<form action="/">
|
|
67
|
-
<div class="file_field">
|
|
68
|
-
<input id="attachment_file" name="attachment_file" type="file" size="1"/>
|
|
69
|
-
</div>
|
|
70
|
-
</form>
|
|
71
|
-
</body>
|
|
72
|
-
</html>
|