trusty-cms 1.0.0
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.
- checksums.yaml +15 -0
- data/.gitignore +23 -0
- data/CHANGELOG.md +754 -0
- data/CONTRIBUTORS.md +263 -0
- data/Gemfile +40 -0
- data/Gemfile.lock +177 -0
- data/INSTALL.md +10 -0
- data/LICENSE.md +21 -0
- data/README.md +85 -0
- data/Rakefile +7 -0
- data/app/controllers/admin/configuration_controller.rb +50 -0
- data/app/controllers/admin/extensions_controller.rb +11 -0
- data/app/controllers/admin/layouts_controller.rb +8 -0
- data/app/controllers/admin/page_fields_controller.rb +9 -0
- data/app/controllers/admin/page_parts_controller.rb +9 -0
- data/app/controllers/admin/pages_controller.rb +89 -0
- data/app/controllers/admin/preferences_controller.rb +46 -0
- data/app/controllers/admin/references_controller.rb +7 -0
- data/app/controllers/admin/resource_controller.rb +245 -0
- data/app/controllers/admin/users_controller.rb +40 -0
- data/app/controllers/admin/welcome_controller.rb +48 -0
- data/app/controllers/application_controller.rb +114 -0
- data/app/controllers/site_controller.rb +97 -0
- data/app/helpers/admin/configuration_helper.rb +80 -0
- data/app/helpers/admin/export_helper.rb +2 -0
- data/app/helpers/admin/extensions_helper.rb +2 -0
- data/app/helpers/admin/layouts_helper.rb +21 -0
- data/app/helpers/admin/node_helper.rb +96 -0
- data/app/helpers/admin/pages_helper.rb +117 -0
- data/app/helpers/admin/preferences_helper.rb +3 -0
- data/app/helpers/admin/references_helper.rb +46 -0
- data/app/helpers/admin/regions_helper.rb +28 -0
- data/app/helpers/admin/resource_helper.rb +2 -0
- data/app/helpers/admin/users_helper.rb +8 -0
- data/app/helpers/admin/welcome_helper.rb +2 -0
- data/app/helpers/application_helper.rb +241 -0
- data/app/helpers/site_helper.rb +2 -0
- data/app/models/deprecated_tags.rb +42 -0
- data/app/models/file_not_found_page.rb +32 -0
- data/app/models/layout.rb +15 -0
- data/app/models/menu_renderer.rb +140 -0
- data/app/models/page.rb +377 -0
- data/app/models/page_context.rb +53 -0
- data/app/models/page_field.rb +3 -0
- data/app/models/page_part.rb +20 -0
- data/app/models/standard_tags.rb +1318 -0
- data/app/models/status.rb +41 -0
- data/app/models/text_filter.rb +36 -0
- data/app/models/trusty_cms/config.rb +313 -0
- data/app/models/trusty_cms/page_response_cache_director.rb +43 -0
- data/app/models/user.rb +96 -0
- data/app/models/user_action_observer.rb +25 -0
- data/app/views/admin/configuration/edit.html.haml +38 -0
- data/app/views/admin/configuration/show.html.haml +58 -0
- data/app/views/admin/extensions/index.html.haml +41 -0
- data/app/views/admin/layouts/_form.html.haml +39 -0
- data/app/views/admin/layouts/edit.html.haml +9 -0
- data/app/views/admin/layouts/index.html.haml +35 -0
- data/app/views/admin/layouts/new.html.haml +7 -0
- data/app/views/admin/layouts/remove.html.haml +16 -0
- data/app/views/admin/page_fields/_page_field.html.haml +12 -0
- data/app/views/admin/page_parts/_page_part.html.haml +18 -0
- data/app/views/admin/pages/_fields.html.haml +71 -0
- data/app/views/admin/pages/_meta_row.html.haml +8 -0
- data/app/views/admin/pages/_node.html.haml +26 -0
- data/app/views/admin/pages/_popups.html.haml +27 -0
- data/app/views/admin/pages/children.html.haml +2 -0
- data/app/views/admin/pages/edit.html.haml +12 -0
- data/app/views/admin/pages/index.html.haml +26 -0
- data/app/views/admin/pages/new.html.haml +10 -0
- data/app/views/admin/pages/remove.html.haml +18 -0
- data/app/views/admin/preferences/edit.html.haml +44 -0
- data/app/views/admin/references/_tag_reference.haml +3 -0
- data/app/views/admin/references/filters.haml +6 -0
- data/app/views/admin/references/tags.haml +30 -0
- data/app/views/admin/users/_avatar.html.haml +5 -0
- data/app/views/admin/users/_form.html.haml +53 -0
- data/app/views/admin/users/_password_fields.html.haml +18 -0
- data/app/views/admin/users/edit.html.haml +9 -0
- data/app/views/admin/users/index.html.haml +39 -0
- data/app/views/admin/users/new.html.haml +6 -0
- data/app/views/admin/users/remove.html.haml +16 -0
- data/app/views/admin/welcome/login.html.haml +23 -0
- data/app/views/layouts/application.html.haml +50 -0
- data/app/views/site/not_found.html.haml +3 -0
- data/bin/ci/before_script +15 -0
- data/bin/trusty_cms +53 -0
- data/config/application.rb +124 -0
- data/config/boot.rb +9 -0
- data/config/compass.config +15 -0
- data/config/database.db2.yml +20 -0
- data/config/database.mysql.yml +25 -0
- data/config/database.postgresql.yml +25 -0
- data/config/database.sqlite.yml +16 -0
- data/config/database.sqlserver.yml +20 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +19 -0
- data/config/environments/production.rb +27 -0
- data/config/environments/test.rb +35 -0
- data/config/initializers/active_record_extensions.rb +1 -0
- data/config/initializers/configuration_extensions.rb +0 -0
- data/config/initializers/haml.rb +2 -0
- data/config/initializers/object_extensions.rb +1 -0
- data/config/initializers/radiant_config.rb +16 -0
- data/config/initializers/rails_patch.rb +2 -0
- data/config/initializers/response_cache_timeout.rb +3 -0
- data/config/initializers/string_extensions.rb +1 -0
- data/config/initializers/symbol_extensions.rb +1 -0
- data/config/initializers/tmp.rb +2 -0
- data/config/locales/en.yml +230 -0
- data/config/locales/en_available_tags.yml +625 -0
- data/config/preinitializer.rb +18 -0
- data/config/routes.rb +30 -0
- data/db/migrate/001_create_radiant_tables.rb +75 -0
- data/db/migrate/002_insert_initial_data.rb +12 -0
- data/db/migrate/003_rename_behavior_column.rb +9 -0
- data/db/migrate/004_rename_filter_column.rb +11 -0
- data/db/migrate/005_add_virtual_column_to_page.rb +9 -0
- data/db/migrate/006_integer_columns_to_boolean.rb +36 -0
- data/db/migrate/007_remove_virtual_column_from_page.rb +9 -0
- data/db/migrate/008_add_virtual_column_to_page_again.rb +9 -0
- data/db/migrate/009_add_content_type_field_to_layout.rb +9 -0
- data/db/migrate/010_merge_behaviors_and_pages.rb +57 -0
- data/db/migrate/011_rename_type_column_on_page_to_class_name.rb +9 -0
- data/db/migrate/012_create_extension_meta.rb +13 -0
- data/db/migrate/013_add_notes_field_to_user.rb +9 -0
- data/db/migrate/014_rename_config_default_parts_key.rb +17 -0
- data/db/migrate/015_add_optimistic_locking.rb +15 -0
- data/db/migrate/016_add_sessions.rb +16 -0
- data/db/migrate/017_rename_created_by_updated_by_columns.rb +15 -0
- data/db/migrate/018_add_description_and_keywords_to_pages.rb +11 -0
- data/db/migrate/019_add_salt_to_users.rb +11 -0
- data/db/migrate/020_add_session_info_to_users.rb +11 -0
- data/db/migrate/021_remove_session_expire_from_users.rb +9 -0
- data/db/migrate/20081203140407_add_indexes.rb +19 -0
- data/db/migrate/20090226140109_add_user_language.rb +9 -0
- data/db/migrate/20090929164633_rename_developer_role_to_designer.rb +9 -0
- data/db/migrate/20091003095744_change_user_language_to_locale.rb +9 -0
- data/db/migrate/20100805154952_add_page_fields.rb +15 -0
- data/db/migrate/20100805155020_convert_page_metas.rb +24 -0
- data/db/migrate/20100810151922_add_field_name_index.rb +11 -0
- data/db/migrate/20110902203823_add_allowed_children_cache_to_pages.rb +13 -0
- data/db/migrate/20111016150725_extend_page_part_content_limit.rb +15 -0
- data/db/migrate/20120209231801_change_pages_allowed_children_cache_to_text.rb +11 -0
- data/db/schema.rb +128 -0
- data/lib/active_record_extensions/active_record_extensions.rb +27 -0
- data/lib/annotatable.rb +68 -0
- data/lib/configuration_extensions/configuration_extensions.rb +357 -0
- data/lib/generators/extension/USAGE +30 -0
- data/lib/generators/extension/extension_generator.rb +97 -0
- data/lib/generators/extension/templates/README.md +6 -0
- data/lib/generators/extension/templates/RSpecRakefile +109 -0
- data/lib/generators/extension/templates/Rakefile +25 -0
- data/lib/generators/extension/templates/cucumber.yml +1 -0
- data/lib/generators/extension/templates/cucumber_env.rb +11 -0
- data/lib/generators/extension/templates/cucumber_paths.rb +22 -0
- data/lib/generators/extension/templates/en.yml +3 -0
- data/lib/generators/extension/templates/extension.rb +21 -0
- data/lib/generators/extension/templates/functional_test.rb +15 -0
- data/lib/generators/extension/templates/gemspec.rb +29 -0
- data/lib/generators/extension/templates/lib.rb +8 -0
- data/lib/generators/extension/templates/migration.rb +9 -0
- data/lib/generators/extension/templates/radiant_config.rb +3 -0
- data/lib/generators/extension/templates/routes.rb +5 -0
- data/lib/generators/extension/templates/spec.opts +6 -0
- data/lib/generators/extension/templates/spec_helper.rb +42 -0
- data/lib/generators/extension/templates/tasks.rake +47 -0
- data/lib/generators/extension/templates/test_helper.rb +26 -0
- data/lib/generators/extension_controller/USAGE +36 -0
- data/lib/generators/extension_controller/extension_controller_generator.rb +84 -0
- data/lib/generators/extension_controller/templates/controller.rb +10 -0
- data/lib/generators/extension_controller/templates/controller_spec.rb +23 -0
- data/lib/generators/extension_controller/templates/functional_test.rb +11 -0
- data/lib/generators/extension_controller/templates/helper.rb +2 -0
- data/lib/generators/extension_controller/templates/helper_spec.rb +11 -0
- data/lib/generators/extension_controller/templates/helper_test.rb +4 -0
- data/lib/generators/extension_controller/templates/view.html.erb +2 -0
- data/lib/generators/extension_controller/templates/view_spec.rb +12 -0
- data/lib/generators/extension_mailer/USAGE +17 -0
- data/lib/generators/extension_mailer/extension_mailer_generator.rb +68 -0
- data/lib/generators/extension_mailer/templates/fixture.erb +3 -0
- data/lib/generators/extension_mailer/templates/mailer.rb +15 -0
- data/lib/generators/extension_mailer/templates/unit_test.rb +21 -0
- data/lib/generators/extension_mailer/templates/view.erb +3 -0
- data/lib/generators/extension_migration/USAGE +34 -0
- data/lib/generators/extension_migration/extension_migration_generator.rb +25 -0
- data/lib/generators/extension_migration/templates/migration.rb +11 -0
- data/lib/generators/extension_model/USAGE +35 -0
- data/lib/generators/extension_model/extension_model_generator.rb +68 -0
- data/lib/generators/extension_model/templates/fixtures.yml +19 -0
- data/lib/generators/extension_model/templates/migration.rb +16 -0
- data/lib/generators/extension_model/templates/model.rb +2 -0
- data/lib/generators/extension_model/templates/model_spec.rb +11 -0
- data/lib/generators/extension_model/templates/unit_test.rb +8 -0
- data/lib/generators/generator_base_extension.rb +16 -0
- data/lib/generators/instance/instance_generator.rb +148 -0
- data/lib/generators/instance/templates/databases/db2.yml +40 -0
- data/lib/generators/instance/templates/databases/mysql.yml +47 -0
- data/lib/generators/instance/templates/databases/postgresql.yml +44 -0
- data/lib/generators/instance/templates/databases/sqlite3.yml +16 -0
- data/lib/generators/instance/templates/databases/sqlserver.yml +21 -0
- data/lib/generators/instance/templates/instance_boot.rb +122 -0
- data/lib/generators/instance/templates/instance_config.ru +2 -0
- data/lib/generators/instance/templates/instance_environment.rb +83 -0
- data/lib/generators/instance/templates/instance_gemfile +81 -0
- data/lib/generators/instance/templates/instance_generate +6 -0
- data/lib/generators/instance/templates/instance_radiant_config.rb +16 -0
- data/lib/generators/instance/templates/instance_rakefile +3 -0
- data/lib/generators/instance/templates/instance_routes.rb +1 -0
- data/lib/generators/language_extension/USAGE +27 -0
- data/lib/generators/language_extension/language_extension_generator.rb +71 -0
- data/lib/generators/language_extension/templates/README +3 -0
- data/lib/generators/language_extension/templates/RSpecRakefile +123 -0
- data/lib/generators/language_extension/templates/Rakefile +25 -0
- data/lib/generators/language_extension/templates/available_tags.yml +553 -0
- data/lib/generators/language_extension/templates/cucumber.yml +1 -0
- data/lib/generators/language_extension/templates/cucumber_env.rb +16 -0
- data/lib/generators/language_extension/templates/cucumber_paths.rb +14 -0
- data/lib/generators/language_extension/templates/extension.rb +12 -0
- data/lib/generators/language_extension/templates/functional_test.rb +15 -0
- data/lib/generators/language_extension/templates/gemspec.rb +24 -0
- data/lib/generators/language_extension/templates/lang.yml +181 -0
- data/lib/generators/language_extension/templates/lib.rb +8 -0
- data/lib/generators/language_extension/templates/spec.opts +6 -0
- data/lib/generators/language_extension/templates/spec_helper.rb +36 -0
- data/lib/generators/language_extension/templates/tasks.rake +28 -0
- data/lib/generators/language_extension/templates/test_helper.rb +26 -0
- data/lib/inheritable_class_attributes.rb +65 -0
- data/lib/local_time.rb +6 -0
- data/lib/login_system.rb +132 -0
- data/lib/method_observer.rb +50 -0
- data/lib/object_extensions/object_extensions.rb +5 -0
- data/lib/simpleton.rb +21 -0
- data/lib/string_extensions/string_extensions.rb +25 -0
- data/lib/symbol_extensions/symbol_extensions.rb +5 -0
- data/lib/tasks/database.rake +85 -0
- data/lib/tasks/environments.rake +11 -0
- data/lib/tasks/extensions.rake +85 -0
- data/lib/tasks/framework.rake +255 -0
- data/lib/tasks/instance.rake +23 -0
- data/lib/tasks/prototype.rake +31 -0
- data/lib/tasks/radiant_config.rake +18 -0
- data/lib/tasks/release.rake +131 -0
- data/lib/tasks/translate.rake +59 -0
- data/lib/tasks/undefine.rake +28 -0
- data/lib/translation_support.rb +54 -0
- data/lib/trusty_cms/admin_ui/region_partials.rb +23 -0
- data/lib/trusty_cms/admin_ui/region_set.rb +35 -0
- data/lib/trusty_cms/admin_ui.rb +244 -0
- data/lib/trusty_cms/available_locales.rb +19 -0
- data/lib/trusty_cms/cache.rb +100 -0
- data/lib/trusty_cms/config/definition.rb +142 -0
- data/lib/trusty_cms/engine.rb +10 -0
- data/lib/trusty_cms/extension/script.rb +395 -0
- data/lib/trusty_cms/extension.rb +146 -0
- data/lib/trusty_cms/extension_loader.rb +130 -0
- data/lib/trusty_cms/extension_migrator.rb +98 -0
- data/lib/trusty_cms/extension_path.rb +200 -0
- data/lib/trusty_cms/initializer.rb +162 -0
- data/lib/trusty_cms/pagination/controller.rb +41 -0
- data/lib/trusty_cms/pagination/link_renderer.rb +34 -0
- data/lib/trusty_cms/resource_responses.rb +121 -0
- data/lib/trusty_cms/setup.rb +227 -0
- data/lib/trusty_cms/taggable.rb +138 -0
- data/lib/trusty_cms/task_support.rb +66 -0
- data/lib/trusty_cms.rb +19 -0
- data/log/.keep +0 -0
- data/public/.htaccess +40 -0
- data/public/404.html +8 -0
- data/public/500.html +8 -0
- data/public/dispatch.cgi +10 -0
- data/public/dispatch.fcgi +24 -0
- data/public/dispatch.rb +10 -0
- data/public/favicon.ico +0 -0
- data/public/images/admin/add_tab.png +0 -0
- data/public/images/admin/avatar_32x32.png +0 -0
- data/public/images/admin/avatar_64x64.png +0 -0
- data/public/images/admin/avatar_96x96.png +0 -0
- data/public/images/admin/brown_bottom_line.gif +0 -0
- data/public/images/admin/calendar_down.gif +0 -0
- data/public/images/admin/collapse.png +0 -0
- data/public/images/admin/draft_page.png +0 -0
- data/public/images/admin/expand.png +0 -0
- data/public/images/admin/image.png +0 -0
- data/public/images/admin/javascript.png +0 -0
- data/public/images/admin/layout.png +0 -0
- data/public/images/admin/metadata_toggle.png +0 -0
- data/public/images/admin/minus.png +0 -0
- data/public/images/admin/minus_disabled.png +0 -0
- data/public/images/admin/minus_grey.png +0 -0
- data/public/images/admin/navigation_secondary_separator.gif +0 -0
- data/public/images/admin/page.png +0 -0
- data/public/images/admin/plus.png +0 -0
- data/public/images/admin/plus_disabled.png +0 -0
- data/public/images/admin/plus_grey.png +0 -0
- data/public/images/admin/popup_border_background.png +0 -0
- data/public/images/admin/popup_border_bottom_left.png +0 -0
- data/public/images/admin/popup_border_bottom_right.png +0 -0
- data/public/images/admin/popup_border_top_left.png +0 -0
- data/public/images/admin/popup_border_top_right.png +0 -0
- data/public/images/admin/search.png +0 -0
- data/public/images/admin/single_form_shadow.png +0 -0
- data/public/images/admin/snippet.png +0 -0
- data/public/images/admin/spinner.gif +0 -0
- data/public/images/admin/status_background.png +0 -0
- data/public/images/admin/status_bottom_left.png +0 -0
- data/public/images/admin/status_bottom_right.png +0 -0
- data/public/images/admin/status_spinner.gif +0 -0
- data/public/images/admin/status_top_left.png +0 -0
- data/public/images/admin/status_top_right.png +0 -0
- data/public/images/admin/stylesheet.png +0 -0
- data/public/images/admin/tab_close.png +0 -0
- data/public/images/admin/upload.png +0 -0
- data/public/images/admin/virtual_page.png +0 -0
- data/public/images/radiant/radiant-badge-color.png +0 -0
- data/public/javascripts/admin/application.js +94 -0
- data/public/javascripts/admin/codearea.js +165 -0
- data/public/javascripts/admin/controls.js +965 -0
- data/public/javascripts/admin/cookie.js +80 -0
- data/public/javascripts/admin/dateinput.js +402 -0
- data/public/javascripts/admin/dragdrop.js +974 -0
- data/public/javascripts/admin/dropdown.js +216 -0
- data/public/javascripts/admin/effects.js +1122 -0
- data/public/javascripts/admin/lowpro.js +340 -0
- data/public/javascripts/admin/overrides.js +1 -0
- data/public/javascripts/admin/page_preview.js +41 -0
- data/public/javascripts/admin/pagefield.js +54 -0
- data/public/javascripts/admin/pagestatus.js +17 -0
- data/public/javascripts/admin/popup.js +339 -0
- data/public/javascripts/admin/prototype.js +4874 -0
- data/public/javascripts/admin/ruledtable.js +13 -0
- data/public/javascripts/admin/shortcuts.js +33 -0
- data/public/javascripts/admin/sitemap.js +149 -0
- data/public/javascripts/admin/status.js +233 -0
- data/public/javascripts/admin/tabcontrol.js +123 -0
- data/public/javascripts/admin/toggle.js +430 -0
- data/public/javascripts/admin/utility.js +53 -0
- data/public/javascripts/admin/validationerror.js +18 -0
- data/public/loading-iframe.html +11 -0
- data/public/robots.txt +1 -0
- data/public/stylesheets/sass/admin/_base.sass +18 -0
- data/public/stylesheets/sass/admin/main.sass +27 -0
- data/public/stylesheets/sass/admin/modules/_boxes.sass +6 -0
- data/public/stylesheets/sass/admin/modules/_gradients.sass +4 -0
- data/public/stylesheets/sass/admin/modules/_links.sass +18 -0
- data/public/stylesheets/sass/admin/overrides.sass +2 -0
- data/public/stylesheets/sass/admin/partials/_actions.sass +96 -0
- data/public/stylesheets/sass/admin/partials/_avatars.sass +10 -0
- data/public/stylesheets/sass/admin/partials/_content.sass +58 -0
- data/public/stylesheets/sass/admin/partials/_dateinput.sass +62 -0
- data/public/stylesheets/sass/admin/partials/_deprecated.sass +55 -0
- data/public/stylesheets/sass/admin/partials/_dropdown.sass +28 -0
- data/public/stylesheets/sass/admin/partials/_footer.sass +12 -0
- data/public/stylesheets/sass/admin/partials/_forms.sass +322 -0
- data/public/stylesheets/sass/admin/partials/_header.sass +114 -0
- data/public/stylesheets/sass/admin/partials/_index.sass +147 -0
- data/public/stylesheets/sass/admin/partials/_layout.sass +10 -0
- data/public/stylesheets/sass/admin/partials/_messages.sass +10 -0
- data/public/stylesheets/sass/admin/partials/_popup.sass +213 -0
- data/public/stylesheets/sass/admin/partials/_tabcontrol.sass +72 -0
- data/public/stylesheets/sass/admin/partials/_toolbar.sass +31 -0
- data/public/stylesheets/sass/admin/partials/_typography.sass +60 -0
- data/public/stylesheets/sass/admin/partials/_validations.sass +19 -0
- data/rails/init.rb +1 -0
- data/script/about +4 -0
- data/script/breakpointer +3 -0
- data/script/console +3 -0
- data/script/dbconsole +3 -0
- data/script/destroy +3 -0
- data/script/extension +5 -0
- data/script/generate +3 -0
- data/script/performance/benchmarker +3 -0
- data/script/performance/profiler +3 -0
- data/script/performance/request +3 -0
- data/script/plugin +3 -0
- data/script/process/inspector +3 -0
- data/script/process/reaper +3 -0
- data/script/process/spawner +3 -0
- data/script/process/spinner +3 -0
- data/script/rails +6 -0
- data/script/runner +3 -0
- data/script/server +3 -0
- data/script/version +5 -0
- data/spec/ci/database.mysql.yml +4 -0
- data/spec/ci/database.postgresql.yml +4 -0
- data/spec/ci/database.sqlite.yml +3 -0
- data/trusty_cms.gemspec +50 -0
- metadata +781 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'git'
|
|
3
|
+
rescue LoadError
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
class ExtensionGenerator < Rails::Generator::NamedBase
|
|
7
|
+
default_options :with_test_unit => false
|
|
8
|
+
|
|
9
|
+
attr_reader :extension_path, :extension_file_name
|
|
10
|
+
|
|
11
|
+
def initialize(runtime_args, runtime_options = {})
|
|
12
|
+
super
|
|
13
|
+
@extension_file_name = "#{file_name}_extension"
|
|
14
|
+
@extension_path = "vendor/extensions/#{file_name}"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def manifest
|
|
18
|
+
record do |m|
|
|
19
|
+
m.directory "#{extension_path}/app/controllers"
|
|
20
|
+
m.directory "#{extension_path}/app/helpers"
|
|
21
|
+
m.directory "#{extension_path}/app/models"
|
|
22
|
+
m.directory "#{extension_path}/app/views"
|
|
23
|
+
m.directory "#{extension_path}/config/locales"
|
|
24
|
+
m.directory "#{extension_path}/config/initializers"
|
|
25
|
+
m.directory "#{extension_path}/db/migrate"
|
|
26
|
+
m.directory "#{extension_path}/lib/tasks"
|
|
27
|
+
|
|
28
|
+
m.template 'README.md', "#{extension_path}/README.md"
|
|
29
|
+
m.template 'extension.rb', "#{extension_path}/#{extension_file_name}.rb"
|
|
30
|
+
m.template 'tasks.rake', "#{extension_path}/lib/tasks/#{extension_file_name}_tasks.rake"
|
|
31
|
+
m.template 'en.yml', "#{extension_path}/config/locales/en.yml"
|
|
32
|
+
m.template 'routes.rb', "#{extension_path}/config/routes.rb"
|
|
33
|
+
m.template 'radiant_config.rb', "#{extension_path}/config/initializers/radiant_config.rb"
|
|
34
|
+
m.template 'lib.rb', "#{extension_path}/lib/radiant-#{file_name}-extension.rb"
|
|
35
|
+
m.template 'gemspec.rb', "#{extension_path}/radiant-#{file_name}-extension.gemspec"
|
|
36
|
+
|
|
37
|
+
if options[:with_test_unit]
|
|
38
|
+
m.directory "#{extension_path}/test/fixtures"
|
|
39
|
+
m.directory "#{extension_path}/test/functional"
|
|
40
|
+
m.directory "#{extension_path}/test/unit"
|
|
41
|
+
|
|
42
|
+
m.template 'Rakefile', "#{extension_path}/Rakefile"
|
|
43
|
+
m.template 'test_helper.rb', "#{extension_path}/test/test_helper.rb"
|
|
44
|
+
m.template 'functional_test.rb', "#{extension_path}/test/functional/#{extension_file_name}_test.rb"
|
|
45
|
+
else
|
|
46
|
+
m.directory "#{extension_path}/spec/controllers"
|
|
47
|
+
m.directory "#{extension_path}/spec/models"
|
|
48
|
+
m.directory "#{extension_path}/spec/views"
|
|
49
|
+
m.directory "#{extension_path}/spec/helpers"
|
|
50
|
+
m.directory "#{extension_path}/features/support"
|
|
51
|
+
m.directory "#{extension_path}/features/step_definitions/admin"
|
|
52
|
+
|
|
53
|
+
m.template 'RSpecRakefile', "#{extension_path}/Rakefile"
|
|
54
|
+
m.template 'spec_helper.rb', "#{extension_path}/spec/spec_helper.rb"
|
|
55
|
+
m.file 'spec.opts', "#{extension_path}/spec/spec.opts"
|
|
56
|
+
m.file 'cucumber.yml', "#{extension_path}/cucumber.yml"
|
|
57
|
+
m.template 'cucumber_env.rb', "#{extension_path}/features/support/env.rb"
|
|
58
|
+
m.template 'cucumber_paths.rb', "#{extension_path}/features/support/paths.rb"
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def class_name
|
|
64
|
+
super.to_name.gsub(' ', '') + 'Extension'
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def extension_name
|
|
68
|
+
class_name.to_name('Extension')
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def author_info
|
|
72
|
+
@author_info ||= begin
|
|
73
|
+
Git.global_config
|
|
74
|
+
rescue NameError
|
|
75
|
+
{}
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def homepage
|
|
80
|
+
author_info['github.user'] ? "http://github.com/#{author_info['github.user']}/radiant-#{file_name}-extension" : "http://example.com/#{file_name}"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def author_email
|
|
84
|
+
author_info['user.email'] || 'your email'
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def author_name
|
|
88
|
+
author_info['user.name'] || 'Your Name'
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def add_options!(opt)
|
|
92
|
+
opt.separator ''
|
|
93
|
+
opt.separator 'Options:'
|
|
94
|
+
opt.on("--with-test-unit",
|
|
95
|
+
"Use Test::Unit for this extension instead of RSpec") { |v| options[:with_test_unit] = v }
|
|
96
|
+
end
|
|
97
|
+
end
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# <%= extension_name %>
|
|
2
|
+
|
|
3
|
+
TrustyCms is _so_ freaking awesome, but I made it better through this extension.
|
|
4
|
+
|
|
5
|
+
Created by <%= author_name %>. <%- if author_email.include?('@') -%>If I don't update this content with real details,
|
|
6
|
+
please contact me at <%= author_email %> with annoying messages telling me to do it.<%- end -%>
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Determine where the RSpec plugin is by loading the boot
|
|
2
|
+
unless defined? TRUSTY_CMS_ROOT
|
|
3
|
+
ENV["Rails.env"] = "test"
|
|
4
|
+
case
|
|
5
|
+
when ENV["RADIANT_ENV_FILE"]
|
|
6
|
+
require File.dirname(ENV["RADIANT_ENV_FILE"]) + "/boot"
|
|
7
|
+
when File.dirname(__FILE__) =~ %r{vendor/trusty_cms/vendor/extensions}
|
|
8
|
+
require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../")}/config/boot"
|
|
9
|
+
else
|
|
10
|
+
require "#{File.expand_path(File.dirname(__FILE__) + "/../../../")}/config/boot"
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
require 'rake'
|
|
15
|
+
require 'rdoc/task'
|
|
16
|
+
require 'rake/testtask'
|
|
17
|
+
|
|
18
|
+
rspec_base = File.expand_path(TRUSTY_CMS_ROOT + '/vendor/plugins/rspec/lib')
|
|
19
|
+
$LOAD_PATH.unshift(rspec_base) if File.exist?(rspec_base)
|
|
20
|
+
require 'spec/rake/spectask'
|
|
21
|
+
require 'cucumber'
|
|
22
|
+
require 'cucumber/rake/task'
|
|
23
|
+
|
|
24
|
+
# Cleanup the TRUSTY_CMS_ROOT constant so specs will load the environment
|
|
25
|
+
Object.send(:remove_const, :TRUSTY_CMS_ROOT)
|
|
26
|
+
|
|
27
|
+
extension_root = File.expand_path(File.dirname(__FILE__))
|
|
28
|
+
|
|
29
|
+
task :default => [:spec, :features]
|
|
30
|
+
task :stats => "spec:statsetup"
|
|
31
|
+
|
|
32
|
+
desc "Run all specs in spec directory"
|
|
33
|
+
Spec::Rake::SpecTask.new(:spec) do |t|
|
|
34
|
+
t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
|
|
35
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
task :features => 'spec:integration'
|
|
39
|
+
|
|
40
|
+
namespace :spec do
|
|
41
|
+
desc "Run all specs in spec directory with RCov"
|
|
42
|
+
Spec::Rake::SpecTask.new(:rcov) do |t|
|
|
43
|
+
t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
|
|
44
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
|
45
|
+
t.rcov = true
|
|
46
|
+
t.rcov_opts = ['--exclude', 'spec', '--rails']
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
desc "Print Specdoc for all specs"
|
|
50
|
+
Spec::Rake::SpecTask.new(:doc) do |t|
|
|
51
|
+
t.spec_opts = ["--format", "specdoc", "--dry-run"]
|
|
52
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
[:models, :controllers, :views, :helpers].each do |sub|
|
|
56
|
+
desc "Run the specs under spec/#{sub}"
|
|
57
|
+
Spec::Rake::SpecTask.new(sub) do |t|
|
|
58
|
+
t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
|
|
59
|
+
t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
desc "Run the Cucumber features"
|
|
64
|
+
Cucumber::Rake::Task.new(:integration) do |t|
|
|
65
|
+
t.fork = true
|
|
66
|
+
t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'pretty')]
|
|
67
|
+
# t.feature_pattern = "#{extension_root}/features/**/*.feature"
|
|
68
|
+
t.profile = "default"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Setup specs for stats
|
|
72
|
+
task :statsetup do
|
|
73
|
+
require 'code_statistics'
|
|
74
|
+
::STATS_DIRECTORIES << %w(Model\ specs spec/models)
|
|
75
|
+
::STATS_DIRECTORIES << %w(View\ specs spec/views)
|
|
76
|
+
::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers)
|
|
77
|
+
::STATS_DIRECTORIES << %w(Helper\ specs spec/views)
|
|
78
|
+
::CodeStatistics::TEST_TYPES << "Model specs"
|
|
79
|
+
::CodeStatistics::TEST_TYPES << "View specs"
|
|
80
|
+
::CodeStatistics::TEST_TYPES << "Controller specs"
|
|
81
|
+
::CodeStatistics::TEST_TYPES << "Helper specs"
|
|
82
|
+
::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/}
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
namespace :db do
|
|
86
|
+
namespace :fixtures do
|
|
87
|
+
desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y"
|
|
88
|
+
task :load => :environment do
|
|
89
|
+
require 'active_record/fixtures'
|
|
90
|
+
ActiveRecord::Base.establish_connection(Rails.env.to_sym)
|
|
91
|
+
(ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(Rails.root, 'spec', 'fixtures', '*.{yml,csv}'))).each do |fixture_file|
|
|
92
|
+
Fixtures.create_fixtures('spec/fixtures', File.basename(fixture_file, '.*'))
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
desc 'Generate documentation for the <%= file_name %> extension.'
|
|
100
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
|
101
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
102
|
+
rdoc.title = '<%= class_name %>'
|
|
103
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
|
104
|
+
rdoc.rdoc_files.include('README')
|
|
105
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Load any custom rakefiles for extension
|
|
109
|
+
Dir[File.dirname(__FILE__) + '/tasks/*.rake'].sort.each { |f| require f }
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
require 'rake/testtask'
|
|
3
|
+
require 'rdoc/task'
|
|
4
|
+
|
|
5
|
+
desc 'Default: run unit tests.'
|
|
6
|
+
task :default => :test
|
|
7
|
+
|
|
8
|
+
desc 'Test the <%= file_name %> extension.'
|
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
|
10
|
+
t.libs << 'lib'
|
|
11
|
+
t.pattern = 'test/**/*_test.rb'
|
|
12
|
+
t.verbose = true
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
desc 'Generate documentation for the <%= file_name %> extension.'
|
|
16
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
|
17
|
+
rdoc.rdoc_dir = 'rdoc'
|
|
18
|
+
rdoc.title = '<%= class_name %>'
|
|
19
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
|
20
|
+
rdoc.rdoc_files.include('README')
|
|
21
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Load any custom rakefiles for extension
|
|
25
|
+
Dir[File.dirname(__FILE__) + '/tasks/*.rake'].sort.each { |f| require f }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
default: --format progress features --tags ~@proposed,~@in_progress
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Sets up the Rails environment for Cucumber
|
|
2
|
+
ENV["Rails.env"] = "test"
|
|
3
|
+
# Extension root
|
|
4
|
+
extension_env = File.expand_path(File.dirname(__FILE__) + '/../../../../../config/environment')
|
|
5
|
+
require extension_env+'.rb'
|
|
6
|
+
|
|
7
|
+
Dir.glob(File.join(TRUSTY_CMS_ROOT, "features", "**", "*.rb")).each {|step| require step unless step =~ /datasets_loader\.rb$/}
|
|
8
|
+
|
|
9
|
+
Cucumber::Rails::World.class_eval do
|
|
10
|
+
dataset :<%= file_name %>
|
|
11
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module NavigationHelpers
|
|
2
|
+
|
|
3
|
+
# Extend the standard PathMatchers with your own paths
|
|
4
|
+
# to be used in your features.
|
|
5
|
+
#
|
|
6
|
+
# The keys and values here may be used in your standard web steps
|
|
7
|
+
# Using:
|
|
8
|
+
#
|
|
9
|
+
# When I go to the "<%= file_name %>" admin page
|
|
10
|
+
#
|
|
11
|
+
# would direct the request to the path you provide in the value:
|
|
12
|
+
#
|
|
13
|
+
# admin_<%= file_name %>_path
|
|
14
|
+
#
|
|
15
|
+
PathMatchers = {} unless defined?(PathMatchers)
|
|
16
|
+
PathMatchers.merge!({
|
|
17
|
+
# /<%= file_name %>/i => 'admin_<%= file_name %>_path'
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
World(NavigationHelpers)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Uncomment this if you reference any of your controllers in activate
|
|
2
|
+
# require_dependency "application_controller"
|
|
3
|
+
require "radiant-<%= file_name %>-extension"
|
|
4
|
+
|
|
5
|
+
class <%= class_name %> < TrustyCms::Extension
|
|
6
|
+
version TrustyCms<%= class_name %>::VERSION
|
|
7
|
+
description TrustyCms<%= class_name %>::DESCRIPTION
|
|
8
|
+
url TrustyCms<%= class_name %>::URL
|
|
9
|
+
|
|
10
|
+
# See your config/routes.rb file in this extension to define custom routes
|
|
11
|
+
|
|
12
|
+
extension_config do |config|
|
|
13
|
+
# config is the TrustyCms.configuration object
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def activate
|
|
17
|
+
# tab 'Content' do
|
|
18
|
+
# add_item "<%= extension_name %>", "/admin/<%= file_name %>", :after => "Pages"
|
|
19
|
+
# end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
|
2
|
+
|
|
3
|
+
class <%= class_name %>Test < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
# Replace this with your real tests.
|
|
6
|
+
def test_this_extension
|
|
7
|
+
flunk
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_initialization
|
|
11
|
+
assert_equal File.join(File.expand_path(Rails.root), 'vendor', 'extensions', '<%= file_name %>'), <%= class_name %>.root
|
|
12
|
+
assert_equal '<%= extension_name %>', <%= class_name %>.extension_name
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
3
|
+
require "radiant-<%= file_name %>-extension"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |s|
|
|
6
|
+
s.name = "radiant-<%= file_name %>-extension"
|
|
7
|
+
s.version = TrustyCms<%= class_name %>::VERSION
|
|
8
|
+
s.platform = Gem::Platform::RUBY
|
|
9
|
+
s.authors = TrustyCms<%= class_name %>::AUTHORS
|
|
10
|
+
s.email = TrustyCms<%= class_name %>::EMAIL
|
|
11
|
+
s.homepage = TrustyCms<%= class_name %>::URL
|
|
12
|
+
s.summary = TrustyCms<%= class_name %>::SUMMARY
|
|
13
|
+
s.description = TrustyCms<%= class_name %>::DESCRIPTION
|
|
14
|
+
|
|
15
|
+
# Define gem dependencies here.
|
|
16
|
+
# Don't include a dependency on radiant itself: it causes problems when radiant is in vendor/radiant.
|
|
17
|
+
# s.add_dependency "something", "~> 1.0.0"
|
|
18
|
+
# s.add_dependency "radiant-some-extension", "~> 1.0.0"
|
|
19
|
+
|
|
20
|
+
ignores = if File.exist?('.gitignore')
|
|
21
|
+
File.read('.gitignore').split("\n").inject([]) {|a,p| a + Dir[p] }
|
|
22
|
+
else
|
|
23
|
+
[]
|
|
24
|
+
end
|
|
25
|
+
s.files = Dir['**/*'] - ignores
|
|
26
|
+
s.test_files = Dir['test/**/*','spec/**/*','features/**/*'] - ignores
|
|
27
|
+
# s.executables = Dir['bin/*'] - ignores
|
|
28
|
+
s.require_paths = ["lib"]
|
|
29
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
module TrustyCms<%= class_name %>
|
|
2
|
+
VERSION = "1.0.0"
|
|
3
|
+
SUMMARY = "<%= extension_name %> for TrustyCms CMS"
|
|
4
|
+
DESCRIPTION = "Makes TrustyCms better by adding <%= file_name %>!"
|
|
5
|
+
URL = "<%= homepage %>"
|
|
6
|
+
AUTHORS = ["<%= author_name %>"]
|
|
7
|
+
EMAIL = ["<%= author_email %>"]
|
|
8
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
unless defined? TRUSTY_CMS_ROOT
|
|
2
|
+
ENV["Rails.env"] = "test"
|
|
3
|
+
case
|
|
4
|
+
when ENV["RADIANT_ENV_FILE"]
|
|
5
|
+
require ENV["RADIANT_ENV_FILE"]
|
|
6
|
+
when File.dirname(__FILE__) =~ %r{vendor/trusty_cms/vendor/extensions}
|
|
7
|
+
require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../../")}/config/environment"
|
|
8
|
+
else
|
|
9
|
+
require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../")}/config/environment"
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
require "#{TRUSTY_CMS_ROOT}/spec/spec_helper"
|
|
13
|
+
|
|
14
|
+
Dataset::Resolver.default << (File.dirname(__FILE__) + "/datasets")
|
|
15
|
+
# Include any datasets from loaded extensions
|
|
16
|
+
TrustyCms::Extension.descendants.each do |extension|
|
|
17
|
+
if File.directory?(extension.root + "/spec/datasets")
|
|
18
|
+
Dataset::Resolver.default << (extension.root + "/spec/datasets")
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
if File.directory?(File.dirname(__FILE__) + "/matchers")
|
|
23
|
+
Dir[File.dirname(__FILE__) + "/matchers/*.rb"].each {|file| require file }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
Spec::Runner.configure do |config|
|
|
27
|
+
# config.use_transactional_fixtures = true
|
|
28
|
+
# config.use_instantiated_fixtures = false
|
|
29
|
+
# config.fixture_path = Rails.root + '/spec/fixtures'
|
|
30
|
+
|
|
31
|
+
# You can declare fixtures for each behaviour like this:
|
|
32
|
+
# describe "...." do
|
|
33
|
+
# fixtures :table_a, :table_b
|
|
34
|
+
#
|
|
35
|
+
# Alternatively, if you prefer to declare them only once, you can
|
|
36
|
+
# do so here, like so ...
|
|
37
|
+
#
|
|
38
|
+
# config.global_fixtures = :table_a, :table_b
|
|
39
|
+
#
|
|
40
|
+
# If you declare global fixtures, be aware that they will be declared
|
|
41
|
+
# for all of your examples, even those that don't use them.
|
|
42
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
namespace :radiant do
|
|
2
|
+
namespace :extensions do
|
|
3
|
+
namespace :<%= file_name %> do
|
|
4
|
+
|
|
5
|
+
desc "Runs the migration of the <%= extension_name %> extension"
|
|
6
|
+
task :migrate => :environment do
|
|
7
|
+
require 'trusty_cms/extension_migrator'
|
|
8
|
+
if ENV["VERSION"]
|
|
9
|
+
<%= class_name %>.migrator.migrate(ENV["VERSION"].to_i)
|
|
10
|
+
Rake::Task['db:schema:dump'].invoke
|
|
11
|
+
else
|
|
12
|
+
<%= class_name %>.migrator.migrate
|
|
13
|
+
Rake::Task['db:schema:dump'].invoke
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
desc "Copies public assets of the <%= extension_name %> to the instance public/ directory."
|
|
18
|
+
task :update => :environment do
|
|
19
|
+
is_svn_or_dir = proc {|path| path =~ /\.svn/ || File.directory?(path) }
|
|
20
|
+
puts "Copying assets from <%= class_name %>"
|
|
21
|
+
Dir[<%= class_name %>.root + "/public/**/*"].reject(&is_svn_or_dir).each do |file|
|
|
22
|
+
path = file.sub(<%= class_name %>.root, '')
|
|
23
|
+
directory = File.dirname(path)
|
|
24
|
+
mkdir_p Rails.root + directory, :verbose => false
|
|
25
|
+
cp file, Rails.root + path, :verbose => false
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
desc "Syncs all available translations for this ext to the English ext master"
|
|
30
|
+
task :sync => :environment do
|
|
31
|
+
# The main translation root, basically where English is kept
|
|
32
|
+
language_root = <%= class_name %>.root + "/config/locales"
|
|
33
|
+
words = TranslationSupport.get_translation_keys(language_root)
|
|
34
|
+
|
|
35
|
+
Dir["#{language_root}/*.yml"].each do |filename|
|
|
36
|
+
next if filename.match('_available_tags')
|
|
37
|
+
basename = File.basename(filename, '.yml')
|
|
38
|
+
puts "Syncing #{basename}"
|
|
39
|
+
(comments, other) = TranslationSupport.read_file(filename, basename)
|
|
40
|
+
words.each { |k,v| other[k] ||= words[k] } # Initializing hash variable as empty if it does not exist
|
|
41
|
+
other.delete_if { |k,v| !words[k] } # Remove if not defined in en.yml
|
|
42
|
+
TranslationSupport.write_file(filename, basename, comments, other)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
# Load the environment
|
|
3
|
+
unless defined? TRUSTY_CMS_ROOT
|
|
4
|
+
ENV["Rails.env"] = "test"
|
|
5
|
+
case
|
|
6
|
+
when ENV["RADIANT_ENV_FILE"]
|
|
7
|
+
require ENV["RADIANT_ENV_FILE"]
|
|
8
|
+
when File.dirname(__FILE__) =~ %r{vendor/trusty_cms/vendor/extensions}
|
|
9
|
+
require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../../")}/config/environment"
|
|
10
|
+
else
|
|
11
|
+
require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../")}/config/environment"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
require "#{TRUSTY_CMS_ROOT}/test/test_helper"
|
|
15
|
+
|
|
16
|
+
class ActiveSupport::TestCase
|
|
17
|
+
|
|
18
|
+
# Include a helper to make testing Radius tags easier
|
|
19
|
+
test_helper :extension_tags
|
|
20
|
+
|
|
21
|
+
# Add the fixture directory to the fixture path
|
|
22
|
+
self.fixture_path << File.dirname(__FILE__) + "/fixtures"
|
|
23
|
+
|
|
24
|
+
# Add more helper methods to be used by all extension tests here...
|
|
25
|
+
|
|
26
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Description:
|
|
2
|
+
The extension_controller generator creates stubs for a new controller and
|
|
3
|
+
its views for an extension.
|
|
4
|
+
|
|
5
|
+
The generator takes an extension name, controller name, and a list of
|
|
6
|
+
views as arguments. The controller name may be given in CamelCase or
|
|
7
|
+
under_score and should not be suffixed with 'Controller'. To create a
|
|
8
|
+
controller within a module, specify the controller name as
|
|
9
|
+
'module/controller'.
|
|
10
|
+
|
|
11
|
+
The generator creates a controller class in
|
|
12
|
+
vendor/extension_name/app/controllers with view templates in
|
|
13
|
+
vendor/extension_name/app/views/controller_name, a helper class in
|
|
14
|
+
vendor/extension_name/app/helpers, and a functional test suite in
|
|
15
|
+
vendor/extension_name/test/functional.
|
|
16
|
+
|
|
17
|
+
Example:
|
|
18
|
+
./script/generate extension_controller MyExt Assets list show
|
|
19
|
+
|
|
20
|
+
Controller: vendor/my_ext/app/controllers/assets_controller.rb
|
|
21
|
+
Views: vendor/my_ext/app/views/assets/list.rhtml [...]
|
|
22
|
+
Helper: vendor/my_ext/app/helpers/assets_helper.rb
|
|
23
|
+
Spec: vendor/my_ext/spec/controllers/assets_controller_spec.rb
|
|
24
|
+
Test: vendor/my_ext/test/functional/assets_test.rb (if extension created with "--with-test-unit")
|
|
25
|
+
|
|
26
|
+
Modules Example:
|
|
27
|
+
./script/generate extension_controller MyExt 'admin/assets' upload remove
|
|
28
|
+
|
|
29
|
+
Controller: vendor/my_ext/app/controllers/admin/assets_controller.rb
|
|
30
|
+
Views: vendor/my_ext/app/views/admin/assets/upload.rhtml [...]
|
|
31
|
+
Helper: vendor/my_ext/app/helpers/admin/assets_helper.rb
|
|
32
|
+
Spec: vendor/my_ext/spec/controllers/admin/assets_controller_spec.rb
|
|
33
|
+
Test: vendor/my_ext/test/functional/admin/assets_controller_test.rb (if extension created with "--with-test-unit")
|
|
34
|
+
|
|
35
|
+
Note: Once you have created an extension controller you will still need to
|
|
36
|
+
map routes to the controller in the extension file.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require 'rails_generator/base'
|
|
2
|
+
require 'rails_generator/generators/components/controller/controller_generator'
|
|
3
|
+
|
|
4
|
+
class ExtensionControllerGenerator < ControllerGenerator
|
|
5
|
+
|
|
6
|
+
attr_accessor :extension_name
|
|
7
|
+
default_options :with_test_unit => false
|
|
8
|
+
|
|
9
|
+
def initialize(runtime_args, runtime_options = {})
|
|
10
|
+
runtime_args = runtime_args.dup
|
|
11
|
+
@extension_name = runtime_args.shift
|
|
12
|
+
super(runtime_args, runtime_options)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def manifest
|
|
16
|
+
if extension_uses_rspec?
|
|
17
|
+
rspec_manifest
|
|
18
|
+
else
|
|
19
|
+
super
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def rspec_manifest
|
|
24
|
+
record do |m|
|
|
25
|
+
# Check for class naming collisions.
|
|
26
|
+
m.class_collisions class_path, "#{class_name}Controller", "#{class_name}Helper"
|
|
27
|
+
|
|
28
|
+
# Controller, helper, views, and spec directories.
|
|
29
|
+
m.directory File.join('app/controllers', class_path)
|
|
30
|
+
m.directory File.join('app/helpers', class_path)
|
|
31
|
+
m.directory File.join('app/views', class_path, file_name)
|
|
32
|
+
m.directory File.join('spec/controllers', class_path)
|
|
33
|
+
m.directory File.join('spec/helpers', class_path)
|
|
34
|
+
m.directory File.join('spec/views', class_path, file_name)
|
|
35
|
+
|
|
36
|
+
# Controller spec, class, and helper.
|
|
37
|
+
m.template 'controller_spec.rb',
|
|
38
|
+
File.join('spec/controllers', class_path, "#{file_name}_controller_spec.rb")
|
|
39
|
+
|
|
40
|
+
m.template 'helper_spec.rb',
|
|
41
|
+
File.join('spec/helpers', class_path, "#{file_name}_helper_spec.rb")
|
|
42
|
+
|
|
43
|
+
m.template 'controller:controller.rb',
|
|
44
|
+
File.join('app/controllers', class_path, "#{file_name}_controller.rb")
|
|
45
|
+
|
|
46
|
+
m.template 'controller:helper.rb',
|
|
47
|
+
File.join('app/helpers', class_path, "#{file_name}_helper.rb")
|
|
48
|
+
|
|
49
|
+
# Spec and view template for each action.
|
|
50
|
+
actions.each do |action|
|
|
51
|
+
m.template 'view_spec.rb',
|
|
52
|
+
File.join('spec/views', class_path, file_name, "#{action}_view_spec.rb"),
|
|
53
|
+
:assigns => { :action => action, :model => file_name }
|
|
54
|
+
path = File.join('app/views', class_path, file_name, "#{action}.html.erb")
|
|
55
|
+
m.template 'controller:view.html.erb',
|
|
56
|
+
path,
|
|
57
|
+
:assigns => { :action => action, :path => path }
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def banner
|
|
63
|
+
"Usage: #{$0} #{spec.name} ExtensionName #{spec.name.camelize}Name [options]"
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def extension_path
|
|
67
|
+
File.join('vendor', 'extensions', @extension_name.underscore)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def destination_root
|
|
71
|
+
File.join(Rails.root, extension_path)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def extension_uses_rspec?
|
|
75
|
+
File.exists?(File.join(destination_root, 'spec')) && !options[:with_test_unit]
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def add_options!(opt)
|
|
79
|
+
opt.separator ''
|
|
80
|
+
opt.separator 'Options:'
|
|
81
|
+
opt.on("--with-test-unit",
|
|
82
|
+
"Use Test::Unit tests instead sof RSpec.") { |v| options[:with_test_unit] = v }
|
|
83
|
+
end
|
|
84
|
+
end
|