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
data/db/schema.rb
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
# This file is auto-generated from the current state of the database. Instead
|
|
3
|
+
# of editing this file, please use the migrations feature of Active Record to
|
|
4
|
+
# incrementally modify your database, and then regenerate this schema definition.
|
|
5
|
+
#
|
|
6
|
+
# Note that this schema.rb definition is the authoritative source for your
|
|
7
|
+
# database schema. If you need to create the application database on another
|
|
8
|
+
# system, you should be using db:schema:load, not running all the migrations
|
|
9
|
+
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
|
|
10
|
+
# you'll amass, the slower it'll run and the greater likelihood for issues).
|
|
11
|
+
#
|
|
12
|
+
# It's strongly recommended to check this file into your version control system.
|
|
13
|
+
|
|
14
|
+
ActiveRecord::Schema.define(:version => 20120209231801) do
|
|
15
|
+
|
|
16
|
+
create_table "config", :force => true do |t|
|
|
17
|
+
t.string "key", :limit => 40, :default => "", :null => false
|
|
18
|
+
t.string "value", :default => ""
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
add_index "config", ["key"], :name => "key", :unique => true
|
|
22
|
+
|
|
23
|
+
create_table "extension_meta", :force => true do |t|
|
|
24
|
+
t.string "name"
|
|
25
|
+
t.integer "schema_version", :default => 0
|
|
26
|
+
t.boolean "enabled", :default => true
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
create_table "layouts", :force => true do |t|
|
|
30
|
+
t.string "name", :limit => 100
|
|
31
|
+
t.text "content"
|
|
32
|
+
t.datetime "created_at"
|
|
33
|
+
t.datetime "updated_at"
|
|
34
|
+
t.integer "created_by_id"
|
|
35
|
+
t.integer "updated_by_id"
|
|
36
|
+
t.string "content_type", :limit => 40
|
|
37
|
+
t.integer "lock_version", :default => 0
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
create_table "page_fields", :force => true do |t|
|
|
41
|
+
t.integer "page_id"
|
|
42
|
+
t.string "name"
|
|
43
|
+
t.string "content"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
add_index "page_fields", ["page_id", "name", "content"], :name => "index_page_fields_on_page_id_and_name_and_content"
|
|
47
|
+
|
|
48
|
+
create_table "page_parts", :force => true do |t|
|
|
49
|
+
t.string "name", :limit => 100
|
|
50
|
+
t.string "filter_id", :limit => 25
|
|
51
|
+
t.text "content", :limit => 16777215
|
|
52
|
+
t.integer "page_id"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
add_index "page_parts", ["page_id", "name"], :name => "parts_by_page"
|
|
56
|
+
|
|
57
|
+
create_table "pages", :force => true do |t|
|
|
58
|
+
t.string "title"
|
|
59
|
+
t.string "slug", :limit => 100
|
|
60
|
+
t.string "breadcrumb", :limit => 160
|
|
61
|
+
t.string "class_name", :limit => 25
|
|
62
|
+
t.integer "status_id", :default => 1, :null => false
|
|
63
|
+
t.integer "parent_id"
|
|
64
|
+
t.integer "layout_id"
|
|
65
|
+
t.datetime "created_at"
|
|
66
|
+
t.datetime "updated_at"
|
|
67
|
+
t.datetime "published_at"
|
|
68
|
+
t.integer "created_by_id"
|
|
69
|
+
t.integer "updated_by_id"
|
|
70
|
+
t.boolean "virtual", :default => false, :null => false
|
|
71
|
+
t.integer "lock_version", :default => 0
|
|
72
|
+
t.text "allowed_children_cache"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
add_index "pages", ["class_name"], :name => "pages_class_name"
|
|
76
|
+
add_index "pages", ["parent_id"], :name => "pages_parent_id"
|
|
77
|
+
add_index "pages", ["slug", "parent_id"], :name => "pages_child_slug"
|
|
78
|
+
add_index "pages", ["virtual", "status_id"], :name => "pages_published"
|
|
79
|
+
|
|
80
|
+
create_table "people", :force => true do |t|
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
create_table "places", :force => true do |t|
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
create_table "sessions", :force => true do |t|
|
|
87
|
+
t.string "session_id"
|
|
88
|
+
t.text "data"
|
|
89
|
+
t.datetime "updated_at"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
|
|
93
|
+
add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
|
|
94
|
+
|
|
95
|
+
create_table "snippets", :force => true do |t|
|
|
96
|
+
t.string "name", :limit => 100, :default => "", :null => false
|
|
97
|
+
t.string "filter_id", :limit => 25
|
|
98
|
+
t.text "content"
|
|
99
|
+
t.datetime "created_at"
|
|
100
|
+
t.datetime "updated_at"
|
|
101
|
+
t.integer "created_by_id"
|
|
102
|
+
t.integer "updated_by_id"
|
|
103
|
+
t.integer "lock_version", :default => 0
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
add_index "snippets", ["name"], :name => "name", :unique => true
|
|
107
|
+
|
|
108
|
+
create_table "users", :force => true do |t|
|
|
109
|
+
t.string "name", :limit => 100
|
|
110
|
+
t.string "email"
|
|
111
|
+
t.string "login", :limit => 40, :default => "", :null => false
|
|
112
|
+
t.string "password", :limit => 40
|
|
113
|
+
t.datetime "created_at"
|
|
114
|
+
t.datetime "updated_at"
|
|
115
|
+
t.integer "created_by_id"
|
|
116
|
+
t.integer "updated_by_id"
|
|
117
|
+
t.boolean "admin", :default => false, :null => false
|
|
118
|
+
t.boolean "designer", :default => false, :null => false
|
|
119
|
+
t.text "notes"
|
|
120
|
+
t.integer "lock_version", :default => 0
|
|
121
|
+
t.string "salt"
|
|
122
|
+
t.string "session_token"
|
|
123
|
+
t.string "locale"
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
add_index "users", ["login"], :name => "login", :unique => true
|
|
127
|
+
|
|
128
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'active_record'
|
|
2
|
+
|
|
3
|
+
class ActiveRecord::Base
|
|
4
|
+
|
|
5
|
+
def self.validates_path(*args)
|
|
6
|
+
configuration = args.extract_options!
|
|
7
|
+
validates_each(args, configuration) do |record, attr_name, value|
|
|
8
|
+
page = Page.find_by_path(value)
|
|
9
|
+
record.errors.add(attr_name, :page_not_found, :default => configuration[:message]) if page.nil? || page.is_a?(FileNotFoundPage)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.object_id_attr(symbol, klass)
|
|
14
|
+
module_eval %{
|
|
15
|
+
def #{symbol}
|
|
16
|
+
if @#{symbol}.nil? or (@old_#{symbol}_id != #{symbol}_id)
|
|
17
|
+
@old_#{symbol}_id = #{symbol}_id
|
|
18
|
+
klass = #{klass}.descendants.find { |d| d.#{symbol}_name == #{symbol}_id }
|
|
19
|
+
klass ||= #{klass}
|
|
20
|
+
@#{symbol} = klass.new
|
|
21
|
+
else
|
|
22
|
+
@#{symbol}
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
}
|
|
26
|
+
end
|
|
27
|
+
end
|
data/lib/annotatable.rb
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
module Annotatable
|
|
2
|
+
|
|
3
|
+
def self.included(base)
|
|
4
|
+
base.extend ClassMethods
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
module ClassMethods
|
|
8
|
+
def self.extended(base)
|
|
9
|
+
base.instance_eval do
|
|
10
|
+
alias :inherited_without_annotatable :inherited
|
|
11
|
+
alias :inherited :inherited_with_annotatable
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def annotate(*attrs)
|
|
16
|
+
options = {}
|
|
17
|
+
options = attrs.pop if attrs.last.kind_of?(Hash)
|
|
18
|
+
options.symbolize_keys!
|
|
19
|
+
inherit = options[:inherit]
|
|
20
|
+
if inherit
|
|
21
|
+
@inherited_annotations ||= []
|
|
22
|
+
@inherited_annotations += attrs
|
|
23
|
+
end
|
|
24
|
+
attrs.each do |attr|
|
|
25
|
+
class_eval %{
|
|
26
|
+
def self.#{attr}(string = nil)
|
|
27
|
+
@#{attr} = string || @#{attr}
|
|
28
|
+
end
|
|
29
|
+
def #{attr}(string = nil)
|
|
30
|
+
self.class.#{attr}(string)
|
|
31
|
+
end
|
|
32
|
+
def self.#{attr}=(string = nil)
|
|
33
|
+
#{attr}(string)
|
|
34
|
+
end
|
|
35
|
+
def #{attr}=(string = nil)
|
|
36
|
+
self.class.#{attr}=(string)
|
|
37
|
+
end
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
attrs
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def inherited_with_annotatable(subclass)
|
|
44
|
+
inherited_without_annotatable(subclass)
|
|
45
|
+
(["inherited_annotations"] + (@inherited_annotations || [])).each do |t|
|
|
46
|
+
ivar = "@#{t}"
|
|
47
|
+
subclass.instance_variable_set(ivar, instance_variable_get(ivar))
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# We don't necessarily have ActiveSupport loaded yet!
|
|
55
|
+
class Hash
|
|
56
|
+
# Return a new hash with all keys converted to symbols.
|
|
57
|
+
def symbolize_keys
|
|
58
|
+
inject({}) do |options, (key, value)|
|
|
59
|
+
options[key.to_sym || key] = value
|
|
60
|
+
options
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Destructively convert all keys to symbols.
|
|
65
|
+
def symbolize_keys!
|
|
66
|
+
self.replace(self.symbolize_keys)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
module TrustyCms
|
|
2
|
+
autoload :Cache, 'trusty_cms/cache'
|
|
3
|
+
|
|
4
|
+
class << self
|
|
5
|
+
# Returns the TrustyCms::Config eigenclass object, so it can be used wherever you would use TrustyCms::Config.
|
|
6
|
+
#
|
|
7
|
+
# TrustyCms.config['site.title']
|
|
8
|
+
# TrustyCms.config['site.url'] = 'example.com'
|
|
9
|
+
#
|
|
10
|
+
# but it will also yield itself to a block:
|
|
11
|
+
#
|
|
12
|
+
# TrustyCms.config do |config|
|
|
13
|
+
# config.define 'something', default => 'something'
|
|
14
|
+
# config['other.thing'] = 'nothing'
|
|
15
|
+
# end
|
|
16
|
+
#
|
|
17
|
+
def config # method must be defined before any initializers run
|
|
18
|
+
yield TrustyCms::Config if block_given?
|
|
19
|
+
TrustyCms::Config
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Returns the configuration object with which this application was initialized.
|
|
23
|
+
# For now it's exactly the same as calling Rails.configuration except that it will also yield itself to a block.
|
|
24
|
+
#
|
|
25
|
+
def configuration
|
|
26
|
+
yield Rails.configuration if block_given?
|
|
27
|
+
Rails.configuration
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Returns the root directory of this radiant installation (which is usually the gem directory).
|
|
31
|
+
# This is not the same as Rails.root, which is the instance directory and tends to contain only site-delivery material.
|
|
32
|
+
#
|
|
33
|
+
def root
|
|
34
|
+
Pathname.new(TRUSTY_CMS_ROOT) if defined?(TRUSTY_CMS_ROOT)
|
|
35
|
+
end
|
|
36
|
+
def boot!
|
|
37
|
+
unless booted?
|
|
38
|
+
preinitialize
|
|
39
|
+
pick_boot.run
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def booted?
|
|
44
|
+
defined? TrustyCms::Initializer
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def pick_boot
|
|
48
|
+
case
|
|
49
|
+
when app?
|
|
50
|
+
AppBoot.new
|
|
51
|
+
when vendor?
|
|
52
|
+
VendorBoot.new
|
|
53
|
+
else
|
|
54
|
+
GemBoot.new
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def vendor?
|
|
59
|
+
File.exist?("#{Rails.root}/vendor/radiant")
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def app?
|
|
63
|
+
File.exist?("#{Rails.root}/lib/radiant.rb")
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def preinitialize
|
|
67
|
+
load(preinitializer_path) if File.exist?(preinitializer_path)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def loaded_via_gem?
|
|
71
|
+
pick_boot.is_a? GemBoot
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def preinitializer_path
|
|
75
|
+
"#{Rails.root}/config/preinitializer.rb"
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class Rails::Application::Configuration
|
|
82
|
+
|
|
83
|
+
# The TrustyCms::Configuration class extends Rails::Configuration with three purposes:
|
|
84
|
+
# * to reset some rails defaults so that files are found in TRUSTY_CMS_ROOT instead of Rails.root
|
|
85
|
+
# * to notice that some gems and plugins are in fact radiant extensions
|
|
86
|
+
# * to notice that some radiant extensions add load paths (for plugins, controllers, metal, etc)
|
|
87
|
+
|
|
88
|
+
attr_accessor :extension_paths, :ignored_extensions
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def load_trusty_paths
|
|
92
|
+
#paths << ["#{TRUSTY_CMS_ROOT}/test/mocks/#{environment}"]
|
|
93
|
+
|
|
94
|
+
# Add the app's controller directory
|
|
95
|
+
#paths['app/controllers'].concat(Dir["#{TRUSTY_CMS_ROOT}/app/controllers/"])
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
# Followed by the standard includes.
|
|
100
|
+
%w(
|
|
101
|
+
app
|
|
102
|
+
app/models
|
|
103
|
+
app/controllers
|
|
104
|
+
app/helpers
|
|
105
|
+
app/views
|
|
106
|
+
config
|
|
107
|
+
lib
|
|
108
|
+
vendor
|
|
109
|
+
).each do |dir|
|
|
110
|
+
autoload_paths.unshift "#{TRUSTY_CMS_ROOT}/#{dir}"
|
|
111
|
+
$LOAD_PATH.unshift "#{TRUSTY_CMS_ROOT}/#{dir}"
|
|
112
|
+
puts dir
|
|
113
|
+
paths[dir] << "#{TRUSTY_CMS_ROOT}/#{dir}"
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
#paths.concat builtin_directories
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def initialize_extension_paths
|
|
120
|
+
self.extension_paths = default_extension_paths
|
|
121
|
+
self.ignored_extensions = []
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Sets the locations in which we look for vendored extensions. Normally:
|
|
125
|
+
# Rails.root/vendor/extensions
|
|
126
|
+
# TrustyCms.root/vendor/extensions
|
|
127
|
+
# There are no vendor/* directories in +TRUSTY_CMS_ROOT+ any more but the possibility remains for compatibility reasons.
|
|
128
|
+
# In test mode we also add a fixtures path for testing the extension loader.
|
|
129
|
+
#
|
|
130
|
+
def default_extension_paths
|
|
131
|
+
env = ENV["RAILS_ENV"] || Rails.env
|
|
132
|
+
paths = [Rails.root + 'vendor/extensions']
|
|
133
|
+
paths.unshift(TRUSTY_CMS_ROOT + "vendor/extensions") unless Rails.root == TRUSTY_CMS_ROOT
|
|
134
|
+
paths
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# The list of extensions, expanded and in load order, that results from combining all the extension
|
|
138
|
+
# configuration directives. These are the extensions that will actually be loaded or migrated,
|
|
139
|
+
# and for most purposes this is the list you want to refer to.
|
|
140
|
+
#
|
|
141
|
+
# TrustyCms.configuration.enabled_extensions # => [:name, :name, :name, :name]
|
|
142
|
+
#
|
|
143
|
+
# Note that an extension enabled is not the same as an extension activated or even loaded: it just means
|
|
144
|
+
# that the application is configured to load that extension.
|
|
145
|
+
#
|
|
146
|
+
def enabled_extensions
|
|
147
|
+
@enabled_extensions ||= expanded_extension_list - ignored_extensions
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# The expanded and ordered list of extensions, including any that may later be ignored. This can be configured
|
|
151
|
+
# (it is here that the :all entry is expanded to mean 'everything else'), or will default to an alphabetical list
|
|
152
|
+
# of every extension found among gems and vendor/extensions directories.
|
|
153
|
+
#
|
|
154
|
+
# TrustyCms.configuration.expanded_extension_list # => [:name, :name, :name, :name]
|
|
155
|
+
#
|
|
156
|
+
# If an extension in the configurted list is not found, a LoadError will be thrown from here.
|
|
157
|
+
#
|
|
158
|
+
def expanded_extension_list
|
|
159
|
+
# NB. it should remain possible to say config.extensions = []
|
|
160
|
+
@extension_list ||= extensions ? expand_and_check(extensions) : available_extensions
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def expand_and_check(extension_list) #:nodoc
|
|
164
|
+
missing_extensions = extension_list - [:all] - available_extensions
|
|
165
|
+
raise LoadError, "These configured extensions have not been found: #{missing_extensions.to_sentence}" if missing_extensions.any?
|
|
166
|
+
if m = extension_list.index(:all)
|
|
167
|
+
extension_list[m] = available_extensions - extension_list
|
|
168
|
+
end
|
|
169
|
+
extension_list.flatten
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
# Returns the checked and expanded list of extensions-to-enable. This may be derived from a list passed to
|
|
173
|
+
# +config.extensions=+ or it may have defaulted to all available extensions.
|
|
174
|
+
|
|
175
|
+
# Without such a call, we default to the alphabetical list of all well-formed vendor and gem extensions
|
|
176
|
+
# returned by +available_extensions+.
|
|
177
|
+
#
|
|
178
|
+
# TrustyCms.configuration.extensions # => [:name, :all, :name]
|
|
179
|
+
#
|
|
180
|
+
def extensions
|
|
181
|
+
@requested_extensions ||= available_extensions
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# Sets the list of extensions that will be loaded and the order in which to load them.
|
|
185
|
+
# It can include an :all marker to mean 'everything else' and is typically set in environment.rb:
|
|
186
|
+
# config.extensions = [:layouts, :taggable, :all]
|
|
187
|
+
# config.extensions = [:dashboard, :blog, :all]
|
|
188
|
+
# config.extensions = [:dashboard, :blog, :all, :comments]
|
|
189
|
+
#
|
|
190
|
+
# A LoadError is raised if any of the specified extensions can't be found.
|
|
191
|
+
#
|
|
192
|
+
def extensions=(extensions)
|
|
193
|
+
@requested_extensions = extensions
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
# This is a configurable list of extension that should not be loaded.
|
|
197
|
+
# config.ignore_extensions = [:experimental, :broken]
|
|
198
|
+
# You can also retrieve the list with +ignored_extensions+:
|
|
199
|
+
# TrustyCms.configuration.ignored_extensions # => [:experimental, :broken]
|
|
200
|
+
# These exclusions are applied regardless of dependencies and extension locations. A configuration that bundles
|
|
201
|
+
# required extensions then ignores them will not boot and is likely to fail with errors about unitialized constants.
|
|
202
|
+
#
|
|
203
|
+
def ignore_extensions(array)
|
|
204
|
+
self.ignored_extensions |= array
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
# Returns an alphabetical list of every extension found among all the load paths and bundled gems. Any plugin or
|
|
208
|
+
# gem whose path ends in the form +radiant-something-extension+ is considered to be an extension.
|
|
209
|
+
#
|
|
210
|
+
# TrustyCms.configuration.available_extensions # => [:name, :name, :name, :name]
|
|
211
|
+
#
|
|
212
|
+
# This method is always called during initialization, either as a default or to check that specified extensions are
|
|
213
|
+
# available. One of its side effects is to populate the ExtensionLoader's list of extension root locations, later
|
|
214
|
+
# used when activating those extensions that have been enabled.
|
|
215
|
+
#
|
|
216
|
+
def available_extensions
|
|
217
|
+
@available_extensions ||= (vendored_extensions + gem_extensions).uniq.sort.map(&:to_sym)
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
# Searches the defined extension_paths for subdirectories and returns a list of names as symbols.
|
|
221
|
+
#
|
|
222
|
+
# TrustyCms.configuration.vendored_extensions # => [:name, :name]
|
|
223
|
+
#
|
|
224
|
+
def vendored_extensions
|
|
225
|
+
extension_paths.each_with_object([]) do |load_path, found|
|
|
226
|
+
Dir["#{load_path}/*"].each do |path|
|
|
227
|
+
if File.directory?(path)
|
|
228
|
+
ep = TrustyCms::ExtensionLoader.record_path(path)
|
|
229
|
+
found << ep.name
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
# Scans the bundled gems for any whose name match the +radiant-something-extension+ format
|
|
236
|
+
# and returns a list of their names as symbols.
|
|
237
|
+
#
|
|
238
|
+
# TrustyCms.configuration.gem_extensions # => [:name, :name]
|
|
239
|
+
#
|
|
240
|
+
def gem_extensions
|
|
241
|
+
Gem.loaded_specs.each_with_object([]) do |(gemname, gemspec), found|
|
|
242
|
+
if gemname =~ /trusty-.*-extension$/
|
|
243
|
+
ep = TrustyCms::ExtensionLoader.record_path(gemspec.full_gem_path, gemname)
|
|
244
|
+
found << ep.name
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
# Old extension-dependency mechanism now deprecated
|
|
250
|
+
#
|
|
251
|
+
def extension(ext)
|
|
252
|
+
::ActiveSupport::Deprecation.warn("Extension dependencies have been deprecated and are no longer supported in radiant 1.0. Extensions with dependencies should be packaged as gems and use the .gemspec to declare them.", caller)
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
# Old gem-invogation method now deprecated
|
|
256
|
+
#
|
|
257
|
+
def gem(name, options = {})
|
|
258
|
+
::ActiveSupport::Deprecation.warn("Please declare gem dependencies in your Gemfile (or for an extension, in the .gemspec file).", caller)
|
|
259
|
+
super
|
|
260
|
+
end
|
|
261
|
+
|
|
262
|
+
# Returns the AdminUI singleton, giving get-and-set access to the tabs and partial-sets it defines.
|
|
263
|
+
# More commonly accessed in the initializer via its call to +configuration.admin+.
|
|
264
|
+
#
|
|
265
|
+
def admin
|
|
266
|
+
TrustyCms::AdminUI.instance
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
%w{controller model view metal plugin load eager_load}.each do |type|
|
|
270
|
+
define_method("add_#{type}_paths".to_sym) do |paths|
|
|
271
|
+
puts "paths"
|
|
272
|
+
self.paths["app/#{type}s"].concat(paths)
|
|
273
|
+
end
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
private
|
|
277
|
+
|
|
278
|
+
# Overrides the Rails::Initializer default to add plugin paths in TRUSTY_CMS_ROOT as well as Rails.root.
|
|
279
|
+
#
|
|
280
|
+
def default_plugin_paths
|
|
281
|
+
super + ["#{TRUSTY_CMS_ROOT}/lib/plugins", "#{TRUSTY_CMS_ROOT}/vendor/plugins"]
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
# Overrides the Rails::Initializer default to look for views in TRUSTY_CMS_ROOT rather than Rails.root.
|
|
285
|
+
#
|
|
286
|
+
def default_view_path
|
|
287
|
+
File.join(TRUSTY_CMS_ROOT, 'app', 'views')
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
# Overrides the Rails::Initializer default to look for controllers in TRUSTY_CMS_ROOT rather than Rails.root.
|
|
291
|
+
#
|
|
292
|
+
def default_controller_paths
|
|
293
|
+
[File.join(TRUSTY_CMS_ROOT, 'app', 'controllers')]
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
# TODO: Move all of this to a separate file.
|
|
299
|
+
class Boot
|
|
300
|
+
def run
|
|
301
|
+
load_mutex
|
|
302
|
+
load_initializer
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
# RubyGems from version 1.6 does not require thread but Rails depend on it
|
|
306
|
+
# This should newer rails do automaticly
|
|
307
|
+
def load_mutex
|
|
308
|
+
begin
|
|
309
|
+
require "thread" unless defined?(Mutex)
|
|
310
|
+
rescue LoadError => e
|
|
311
|
+
$stderr.puts %(Mutex could not be initialized. #{load_error_message})
|
|
312
|
+
exit 1
|
|
313
|
+
end
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
def load_initializer
|
|
317
|
+
begin
|
|
318
|
+
require 'trusty_cms'
|
|
319
|
+
require 'trusty_cms/initializer'
|
|
320
|
+
rescue LoadError => e
|
|
321
|
+
$stderr.puts %(TrustyCms could not be initialized. #{load_error_message})
|
|
322
|
+
exit 1
|
|
323
|
+
end
|
|
324
|
+
TrustyCms::Initializer.run(:set_load_path)
|
|
325
|
+
TrustyCms::Initializer.run(:install_gem_spec_stubs)
|
|
326
|
+
Rails::GemDependency.add_frozen_gem_path
|
|
327
|
+
end
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
class VendorBoot < Boot
|
|
331
|
+
def load_initializer
|
|
332
|
+
$LOAD_PATH.unshift "#{Rails.root}/vendor/trusty_cms/lib"
|
|
333
|
+
super
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
def load_error_message
|
|
337
|
+
"Please verify that vendor/radiant contains a complete copy of the TrustyCms sources."
|
|
338
|
+
end
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
class AppBoot < Boot
|
|
342
|
+
def load_initializer
|
|
343
|
+
$LOAD_PATH.unshift "#{Rails.root}/lib"
|
|
344
|
+
super
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
def load_error_message
|
|
348
|
+
"Please verify that you have a complete copy of the TrustyCms sources."
|
|
349
|
+
end
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
class GemBoot < Boot
|
|
353
|
+
# The location and version of the radiant gem should be set in your Gemfile
|
|
354
|
+
def load_error_message
|
|
355
|
+
"Have you run `bundle install`?'."
|
|
356
|
+
end
|
|
357
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
Description:
|
|
2
|
+
The extension generator creates stubs for a new TrustyCms extension.
|
|
3
|
+
|
|
4
|
+
The generator takes an extension name as its argument. The extension name may be
|
|
5
|
+
given in CamelCase or under_score and should not be suffixed with 'Extension'.
|
|
6
|
+
|
|
7
|
+
The generator creates an extension directory in vendor/extensions that includes
|
|
8
|
+
<extension_name>_extension.rb, README and Rakefile files as well as db, lib, task,
|
|
9
|
+
and test directories.
|
|
10
|
+
|
|
11
|
+
Example:
|
|
12
|
+
./script/generate extension AssetManagement
|
|
13
|
+
|
|
14
|
+
This will create:
|
|
15
|
+
vendor/extensions/asset_management/app/controllers
|
|
16
|
+
vendor/extensions/asset_management/app/helpers
|
|
17
|
+
vendor/extensions/asset_management/app/models
|
|
18
|
+
vendor/extensions/asset_management/app/views
|
|
19
|
+
vendor/extensions/asset_management/db/migrate
|
|
20
|
+
vendor/extensions/asset_management/lib/tasks
|
|
21
|
+
vendor/extensions/asset_management/README
|
|
22
|
+
vendor/extensions/asset_management/asset_management_extension.rb
|
|
23
|
+
vendor/extensions/asset_management/lib/tasks/asset_management_extension_tasks.rake
|
|
24
|
+
vendor/extensions/asset_management/spec/controllers
|
|
25
|
+
vendor/extensions/asset_management/spec/models
|
|
26
|
+
vendor/extensions/asset_management/spec/views
|
|
27
|
+
vendor/extensions/asset_management/spec/helpers
|
|
28
|
+
vendor/extensions/asset_management/Rakefile
|
|
29
|
+
vendor/extensions/asset_management/spec/spec_helper.rb
|
|
30
|
+
vendor/extensions/asset_management/spec/spec.opts
|