radiant 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of radiant might be problematic. Click here for more details.
- data/CHANGELOG +33 -1
- data/CONTRIBUTORS +15 -2
- data/INSTALL +9 -7
- data/README +11 -7
- data/app/controllers/admin/layouts_controller.rb +5 -2
- data/app/controllers/admin/pages_controller.rb +8 -5
- data/app/controllers/admin/snippets_controller.rb +5 -2
- data/app/controllers/application_controller.rb +7 -0
- data/app/helpers/admin/node_helper.rb +2 -2
- data/app/helpers/application_helper.rb +2 -2
- data/app/models/radiant/config.rb +36 -4
- data/app/models/standard_tags.rb +1 -1
- data/app/views/admin/layouts/index.html.haml +15 -12
- data/app/views/admin/page_parts/_page_part.html.haml +2 -2
- data/app/views/admin/pages/index.html.haml +1 -1
- data/app/views/admin/snippets/_form.html.haml +1 -1
- data/app/views/admin/snippets/index.html.haml +14 -10
- data/config/database.db2.yml +20 -0
- data/config/environment.rb +4 -4
- data/config/environments/test.rb +1 -2
- data/features/support/env.rb +2 -1
- data/lib/generators/extension/extension_generator.rb +5 -0
- data/lib/generators/extension/templates/RSpecRakefile +11 -8
- data/lib/generators/extension/templates/cucumber.yml +1 -0
- data/lib/generators/extension/templates/cucumber_env.rb +16 -0
- data/lib/generators/extension/templates/cucumber_paths.rb +14 -0
- data/lib/generators/extension/templates/extension.rb +1 -1
- data/lib/generators/instance/instance_generator.rb +1 -1
- data/lib/generators/instance/templates/databases/db2.yml +40 -0
- data/lib/generators/instance/templates/instance_environment.rb +6 -6
- data/lib/local_time.rb +3 -9
- data/lib/radiant.rb +1 -1
- data/lib/radiant/cache.rb +10 -8
- data/lib/radiant/extension.rb +36 -0
- data/lib/radiant/extension/script.rb +1 -1
- data/lib/radiant/extension_loader.rb +5 -1
- data/lib/radiant/initializer.rb +52 -4
- data/lib/task_support.rb +33 -0
- data/lib/tasks/cucumber.rake +5 -1
- data/lib/tasks/radiant_config.rake +18 -0
- data/lib/tasks/release.rake +1 -0
- data/public/javascripts/admin/admin.js +1 -1
- data/spec/controllers/admin/layouts_controller_spec.rb +18 -12
- data/spec/controllers/admin/pages_controller_spec.rb +35 -29
- data/spec/controllers/admin/snippets_controller_spec.rb +11 -5
- data/spec/controllers/admin/welcome_controller_spec.rb +1 -1
- data/spec/controllers/application_controller_spec.rb +18 -0
- data/spec/fixtures/radiant_config.yml +10 -0
- data/spec/generators/extension_generator_spec.rb +12 -0
- data/spec/helpers/admin/node_helper_spec.rb +6 -0
- data/spec/helpers/application_helper_spec.rb +1 -1
- data/spec/lib/radiant/extension_loader_spec.rb +17 -0
- data/spec/lib/radiant/extension_spec.rb +28 -0
- data/spec/lib/radiant/initializer_spec.rb +34 -0
- data/spec/lib/task_support_spec.rb +42 -0
- data/spec/models/page_spec.rb +6 -2
- data/spec/models/radiant/config_spec.rb +42 -1
- data/spec/models/standard_tags_spec.rb +2 -2
- data/test/fixtures/extensions/01_basic/app/metal/basic_metal.rb +9 -0
- data/test/fixtures/extensions/02_overriding/app/metal/basic_metal.rb +9 -0
- data/vendor/extensions/textile_filter/textile.html +2 -2
- data/vendor/plugins/dataset/CHANGELOG +2 -1
- data/vendor/plugins/dataset/Rakefile +3 -0
- data/vendor/plugins/dataset/VERSION.yml +2 -2
- data/vendor/plugins/dataset/dataset.gemspec +9 -3
- data/vendor/plugins/dataset/lib/dataset.rb +3 -0
- data/vendor/radius/lib/radius.rb +5 -0
- data/vendor/radius/test/radius_test.rb +6 -0
- data/vendor/rails/actionmailer/CHANGELOG +8 -0
- data/vendor/rails/actionmailer/Rakefile +3 -2
- data/vendor/rails/actionmailer/lib/action_mailer/base.rb +2 -1
- data/vendor/rails/actionmailer/lib/action_mailer/version.rb +1 -1
- data/vendor/rails/actionmailer/test/abstract_unit.rb +0 -3
- data/vendor/rails/actionmailer/test/mail_service_test.rb +3 -2
- data/vendor/rails/actionpack/CHANGELOG +16 -0
- data/vendor/rails/actionpack/Rakefile +5 -3
- data/vendor/rails/actionpack/lib/action_controller.rb +2 -7
- data/vendor/rails/actionpack/lib/action_controller/assertions/response_assertions.rb +13 -3
- data/vendor/rails/actionpack/lib/action_controller/base.rb +12 -3
- data/vendor/rails/actionpack/lib/action_controller/caching.rb +1 -1
- data/vendor/rails/actionpack/lib/action_controller/caching/actions.rb +9 -1
- data/vendor/rails/actionpack/lib/action_controller/caching/sweeper.rb +45 -0
- data/vendor/rails/actionpack/lib/action_controller/caching/sweeping.rb +0 -42
- data/vendor/rails/actionpack/lib/action_controller/cookies.rb +1 -1
- data/vendor/rails/actionpack/lib/action_controller/dispatcher.rb +21 -6
- data/vendor/rails/actionpack/lib/action_controller/failsafe.rb +40 -6
- data/vendor/rails/actionpack/lib/action_controller/flash.rb +11 -3
- data/vendor/rails/actionpack/lib/action_controller/http_authentication.rb +7 -3
- data/vendor/rails/actionpack/lib/action_controller/integration.rb +5 -12
- data/vendor/rails/actionpack/lib/action_controller/middlewares.rb +0 -1
- data/vendor/rails/actionpack/lib/action_controller/params_parser.rb +6 -0
- data/vendor/rails/actionpack/lib/action_controller/reloader.rb +47 -7
- data/vendor/rails/actionpack/lib/action_controller/request.rb +6 -2
- data/vendor/rails/actionpack/lib/action_controller/request_forgery_protection.rb +2 -1
- data/vendor/rails/actionpack/lib/action_controller/resources.rb +17 -13
- data/vendor/rails/actionpack/lib/action_controller/response.rb +8 -2
- data/vendor/rails/actionpack/lib/action_controller/routing.rb +3 -0
- data/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb +20 -6
- data/vendor/rails/actionpack/lib/action_controller/streaming.rb +4 -2
- data/vendor/rails/actionpack/lib/action_controller/test_process.rb +9 -1
- data/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb +1 -1
- data/vendor/rails/actionpack/lib/action_pack/version.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/asset_tag_helper.rb +21 -9
- data/vendor/rails/actionpack/lib/action_view/helpers/atom_feed_helper.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/date_helper.rb +2 -2
- data/vendor/rails/actionpack/lib/action_view/helpers/form_helper.rb +26 -12
- data/vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb +71 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/form_tag_helper.rb +10 -4
- data/vendor/rails/actionpack/lib/action_view/helpers/number_helper.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/prototype_helper.rb +7 -7
- data/vendor/rails/actionpack/lib/action_view/helpers/scriptaculous_helper.rb +5 -5
- data/vendor/rails/actionpack/lib/action_view/helpers/tag_helper.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb +23 -14
- data/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb +2 -2
- data/vendor/rails/actionpack/lib/action_view/locale/en.yml +4 -0
- data/vendor/rails/actionpack/lib/action_view/paths.rb +1 -1
- data/vendor/rails/actionpack/lib/action_view/template.rb +22 -33
- data/vendor/rails/actionpack/test/abstract_unit.rb +17 -1
- data/vendor/rails/actionpack/test/activerecord/active_record_store_test.rb +3 -3
- data/vendor/rails/actionpack/test/controller/action_pack_assertions_test.rb +27 -0
- data/vendor/rails/actionpack/test/controller/caching_test.rb +40 -1
- data/vendor/rails/actionpack/test/controller/cookie_test.rb +16 -0
- data/vendor/rails/actionpack/test/controller/dispatcher_test.rb +59 -18
- data/vendor/rails/actionpack/test/controller/failsafe_test.rb +60 -0
- data/vendor/rails/actionpack/test/controller/filter_params_test.rb +3 -1
- data/vendor/rails/actionpack/test/controller/flash_test.rb +6 -1
- data/vendor/rails/actionpack/test/controller/http_basic_authentication_test.rb +25 -0
- data/vendor/rails/actionpack/test/controller/http_digest_authentication_test.rb +63 -9
- data/vendor/rails/actionpack/test/controller/integration_test.rb +31 -3
- data/vendor/rails/actionpack/test/controller/rack_test.rb +18 -1
- data/vendor/rails/actionpack/test/controller/redirect_test.rb +4 -1
- data/vendor/rails/actionpack/test/controller/reloader_test.rb +124 -0
- data/vendor/rails/actionpack/test/controller/render_test.rb +19 -9
- data/vendor/rails/actionpack/test/controller/request/json_params_parsing_test.rb +24 -4
- data/vendor/rails/actionpack/test/controller/request/multipart_params_parsing_test.rb +1 -62
- data/vendor/rails/actionpack/test/controller/request/test_request_test.rb +35 -0
- data/vendor/rails/actionpack/test/controller/request/url_encoded_params_parsing_test.rb +0 -38
- data/vendor/rails/actionpack/test/controller/request/xml_params_parsing_test.rb +15 -0
- data/vendor/rails/actionpack/test/controller/request_forgery_protection_test.rb +6 -5
- data/vendor/rails/actionpack/test/controller/request_test.rb +218 -230
- data/vendor/rails/actionpack/test/controller/resources_test.rb +52 -0
- data/vendor/rails/actionpack/test/controller/routing_test.rb +28 -2
- data/vendor/rails/actionpack/test/controller/send_file_test.rb +12 -2
- data/vendor/rails/actionpack/test/controller/session/cookie_store_test.rb +9 -32
- data/vendor/rails/actionpack/test/controller/test_test.rb +8 -0
- data/vendor/rails/actionpack/test/controller/url_rewriter_test.rb +29 -3
- data/vendor/rails/actionpack/test/fixtures/failsafe/500.html +1 -0
- data/vendor/rails/actionpack/test/fixtures/public/absolute/test.css +23 -0
- data/vendor/rails/actionpack/test/fixtures/public/absolute/test.js +63 -0
- data/vendor/rails/actionpack/test/template/active_record_helper_test.rb +1 -1
- data/vendor/rails/actionpack/test/template/asset_tag_helper_test.rb +46 -0
- data/vendor/rails/actionpack/test/template/atom_feed_helper_test.rb +29 -0
- data/vendor/rails/actionpack/test/template/form_helper_test.rb +143 -6
- data/vendor/rails/actionpack/test/template/form_options_helper_i18n_test.rb +27 -0
- data/vendor/rails/actionpack/test/template/form_options_helper_test.rb +56 -0
- data/vendor/rails/actionpack/test/template/form_tag_helper_test.rb +23 -6
- data/vendor/rails/actionpack/test/template/prototype_helper_test.rb +11 -11
- data/vendor/rails/actionpack/test/template/template_test.rb +32 -0
- data/vendor/rails/actionpack/test/template/text_helper_test.rb +23 -0
- data/vendor/rails/actionpack/test/template/url_helper_test.rb +8 -0
- data/vendor/rails/activerecord/CHANGELOG +18 -0
- data/vendor/rails/activerecord/Rakefile +26 -9
- data/vendor/rails/activerecord/examples/performance.rb +162 -0
- data/vendor/rails/activerecord/lib/active_record/associations.rb +104 -35
- data/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb +10 -5
- data/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb +2 -2
- data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_association.rb +22 -4
- data/vendor/rails/activerecord/lib/active_record/associations/belongs_to_polymorphic_association.rb +5 -1
- data/vendor/rails/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +16 -0
- data/vendor/rails/activerecord/lib/active_record/associations/has_many_association.rb +1 -0
- data/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb +13 -3
- data/vendor/rails/activerecord/lib/active_record/associations/has_one_through_association.rb +15 -9
- data/vendor/rails/activerecord/lib/active_record/autosave_association.rb +15 -9
- data/vendor/rails/activerecord/lib/active_record/base.rb +34 -31
- data/vendor/rails/activerecord/lib/active_record/batches.rb +23 -15
- data/vendor/rails/activerecord/lib/active_record/calculations.rb +7 -13
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +16 -2
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +2 -2
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +7 -0
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb +17 -8
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +98 -35
- data/vendor/rails/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +15 -0
- data/vendor/rails/activerecord/lib/active_record/dirty.rb +1 -1
- data/vendor/rails/activerecord/lib/active_record/fixtures.rb +14 -11
- data/vendor/rails/activerecord/lib/active_record/i18n_interpolation_deprecation.rb +1 -1
- data/vendor/rails/activerecord/lib/active_record/locale/en.yml +4 -0
- data/vendor/rails/activerecord/lib/active_record/named_scope.rb +3 -8
- data/vendor/rails/activerecord/lib/active_record/reflection.rb +1 -1
- data/vendor/rails/activerecord/lib/active_record/schema_dumper.rb +6 -3
- data/vendor/rails/activerecord/lib/active_record/serialization.rb +3 -2
- data/vendor/rails/activerecord/lib/active_record/serializers/json_serializer.rb +10 -18
- data/vendor/rails/activerecord/lib/active_record/serializers/xml_serializer.rb +6 -2
- data/vendor/rails/activerecord/lib/active_record/session_store.rb +9 -1
- data/vendor/rails/activerecord/lib/active_record/timestamp.rb +39 -9
- data/vendor/rails/activerecord/lib/active_record/validations.rb +149 -80
- data/vendor/rails/activerecord/lib/active_record/version.rb +1 -1
- data/vendor/rails/activerecord/test/cases/adapter_test.rb +12 -0
- data/vendor/rails/activerecord/test/cases/associations/belongs_to_associations_test.rb +102 -22
- data/vendor/rails/activerecord/test/cases/associations/eager_load_nested_include_test.rb +5 -5
- data/vendor/rails/activerecord/test/cases/associations/eager_test.rb +12 -0
- data/vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb +56 -0
- data/vendor/rails/activerecord/test/cases/associations/has_many_associations_test.rb +62 -2
- data/vendor/rails/activerecord/test/cases/associations/has_many_through_associations_test.rb +46 -1
- data/vendor/rails/activerecord/test/cases/associations/has_one_through_associations_test.rb +18 -1
- data/vendor/rails/activerecord/test/cases/associations/inner_join_association_test.rb +5 -0
- data/vendor/rails/activerecord/test/cases/associations/join_model_test.rb +4 -4
- data/vendor/rails/activerecord/test/cases/autosave_association_test.rb +22 -0
- data/vendor/rails/activerecord/test/cases/base_test.rb +51 -6
- data/vendor/rails/activerecord/test/cases/calculations_test.rb +14 -14
- data/vendor/rails/activerecord/test/cases/column_definition_test.rb +34 -0
- data/vendor/rails/activerecord/test/cases/copy_table_test_sqlite.rb +5 -5
- data/vendor/rails/activerecord/test/cases/dirty_test.rb +10 -0
- data/vendor/rails/activerecord/test/cases/finder_test.rb +21 -50
- data/vendor/rails/activerecord/test/cases/fixtures_test.rb +6 -1
- data/vendor/rails/activerecord/test/cases/helper.rb +1 -2
- data/vendor/rails/activerecord/test/cases/i18n_test.rb +5 -0
- data/vendor/rails/activerecord/test/cases/json_serialization_test.rb +57 -57
- data/vendor/rails/activerecord/test/cases/method_scoping_test.rb +14 -4
- data/vendor/rails/activerecord/test/cases/migration_test.rb +39 -11
- data/vendor/rails/activerecord/test/cases/modules_test.rb +42 -0
- data/vendor/rails/activerecord/test/cases/named_scope_test.rb +6 -4
- data/vendor/rails/activerecord/test/cases/pk_test.rb +18 -0
- data/vendor/rails/activerecord/test/cases/reflection_test.rb +7 -7
- data/vendor/rails/activerecord/test/cases/schema_dumper_test.rb +35 -7
- data/vendor/rails/activerecord/test/cases/schema_test_postgresql.rb +76 -0
- data/vendor/rails/activerecord/test/cases/timestamp_test.rb +75 -0
- data/vendor/rails/activerecord/test/cases/validations_i18n_test.rb +656 -624
- data/vendor/rails/activerecord/test/cases/validations_test.rb +12 -2
- data/vendor/rails/activerecord/test/cases/xml_serialization_test.rb +20 -0
- data/vendor/rails/activerecord/test/fixtures/fixture_database.sqlite +0 -0
- data/vendor/rails/activerecord/test/fixtures/fixture_database.sqlite3 +0 -0
- data/vendor/rails/activerecord/test/fixtures/fixture_database_2.sqlite +0 -0
- data/vendor/rails/activerecord/test/fixtures/fixture_database_2.sqlite3 +0 -0
- data/vendor/rails/activerecord/test/fixtures/posts.yml +3 -0
- data/vendor/rails/activerecord/test/models/author.rb +5 -0
- data/vendor/rails/activerecord/test/models/comment.rb +5 -1
- data/vendor/rails/activerecord/test/models/company.rb +9 -7
- data/vendor/rails/activerecord/test/models/company_in_module.rb +1 -1
- data/vendor/rails/activerecord/test/models/contract.rb +5 -0
- data/vendor/rails/activerecord/test/models/developer.rb +10 -0
- data/vendor/rails/activerecord/test/models/essay.rb +3 -0
- data/vendor/rails/activerecord/test/models/organization.rb +2 -0
- data/vendor/rails/activerecord/test/models/pet.rb +1 -1
- data/vendor/rails/activerecord/test/models/project.rb +1 -1
- data/vendor/rails/activerecord/test/models/reply.rb +2 -1
- data/vendor/rails/activerecord/test/models/topic.rb +1 -2
- data/vendor/rails/activerecord/test/models/toy.rb +2 -0
- data/vendor/rails/activerecord/test/schema/postgresql_specific_schema.rb +13 -2
- data/vendor/rails/activerecord/test/schema/schema.rb +19 -0
- data/vendor/rails/activeresource/CHANGELOG +16 -0
- data/vendor/rails/activeresource/Rakefile +3 -2
- data/vendor/rails/activeresource/lib/active_resource/base.rb +89 -9
- data/vendor/rails/activeresource/lib/active_resource/connection.rb +73 -8
- data/vendor/rails/activeresource/lib/active_resource/exceptions.rb +66 -0
- data/vendor/rails/activeresource/lib/active_resource/formats/json_format.rb +2 -2
- data/vendor/rails/activeresource/lib/active_resource/validations.rb +20 -4
- data/vendor/rails/activeresource/lib/active_resource/version.rb +1 -1
- data/vendor/rails/activeresource/test/abstract_unit.rb +1 -3
- data/vendor/rails/activeresource/test/base/load_test.rb +16 -1
- data/vendor/rails/activeresource/test/base_errors_test.rb +56 -19
- data/vendor/rails/activeresource/test/base_test.rb +147 -0
- data/vendor/rails/activeresource/test/connection_test.rb +42 -0
- data/vendor/rails/activeresource/test/debug.log +7974 -0
- data/vendor/rails/activeresource/test/fixtures/proxy.rb +4 -0
- data/vendor/rails/activesupport/CHANGELOG +13 -0
- data/vendor/rails/activesupport/lib/active_support/all.rb +8 -0
- data/vendor/rails/activesupport/lib/active_support/cache.rb +14 -1
- data/vendor/rails/activesupport/lib/active_support/cache/mem_cache_store.rb +16 -10
- data/vendor/rails/activesupport/lib/active_support/cache/strategy/local_cache.rb +1 -1
- data/vendor/rails/activesupport/lib/active_support/core_ext/array/conversions.rb +1 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/date/calculations.rb +2 -1
- data/vendor/rails/activesupport/lib/active_support/core_ext/enumerable.rb +2 -4
- data/vendor/rails/activesupport/lib/active_support/core_ext/hash/conversions.rb +14 -4
- data/vendor/rails/activesupport/lib/active_support/core_ext/kernel/debugger.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/core_ext/module/attribute_accessors.rb +2 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/module/delegation.rb +19 -5
- data/vendor/rails/activesupport/lib/active_support/core_ext/module/model_naming.rb +8 -6
- data/vendor/rails/activesupport/lib/active_support/core_ext/numeric/bytes.rb +15 -9
- data/vendor/rails/activesupport/lib/active_support/core_ext/string.rb +1 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/string/access.rb +29 -5
- data/vendor/rails/activesupport/lib/active_support/core_ext/string/bytesize.rb +5 -0
- data/vendor/rails/activesupport/lib/active_support/core_ext/time/calculations.rb +7 -7
- data/vendor/rails/activesupport/lib/active_support/deprecation.rb +9 -9
- data/vendor/rails/activesupport/lib/active_support/duration.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/json.rb +1 -22
- data/vendor/rails/activesupport/lib/active_support/json/backends/jsongem.rb +38 -0
- data/vendor/rails/activesupport/lib/active_support/json/backends/yaml.rb +88 -0
- data/vendor/rails/activesupport/lib/active_support/json/decoding.rb +23 -72
- data/vendor/rails/activesupport/lib/active_support/json/encoders/date.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/json/encoders/date_time.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/json/encoders/enumerable.rb +14 -9
- data/vendor/rails/activesupport/lib/active_support/json/encoders/false_class.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoders/hash.rb +21 -11
- data/vendor/rails/activesupport/lib/active_support/json/encoders/nil_class.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoders/numeric.rb +16 -0
- data/vendor/rails/activesupport/lib/active_support/json/encoders/object.rb +6 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoders/regexp.rb +4 -0
- data/vendor/rails/activesupport/lib/active_support/json/encoders/string.rb +5 -32
- data/vendor/rails/activesupport/lib/active_support/json/encoders/symbol.rb +2 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoders/time.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/json/encoders/true_class.rb +4 -2
- data/vendor/rails/activesupport/lib/active_support/json/encoding.rb +80 -9
- data/vendor/rails/activesupport/lib/active_support/memoizable.rb +1 -1
- data/vendor/rails/activesupport/lib/active_support/message_verifier.rb +16 -3
- data/vendor/rails/activesupport/lib/active_support/multibyte.rb +30 -6
- data/vendor/rails/activesupport/lib/active_support/multibyte/chars.rb +23 -17
- data/vendor/rails/activesupport/lib/active_support/multibyte/utils.rb +61 -0
- data/vendor/rails/activesupport/lib/active_support/ordered_hash.rb +28 -0
- data/vendor/rails/activesupport/lib/active_support/test_case.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/testing/deprecation.rb +2 -0
- data/vendor/rails/activesupport/lib/active_support/time_with_zone.rb +9 -8
- data/vendor/rails/activesupport/lib/active_support/vendor.rb +6 -7
- data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.1.3/test/i18n_exceptions_test.rb +0 -1
- data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.1.3/test/i18n_test.rb +0 -1
- data/vendor/rails/activesupport/lib/active_support/vendor/i18n-0.1.3/test/simple_backend_test.rb +0 -1
- data/vendor/rails/activesupport/lib/active_support/vendor/{memcache-client-1.6.5 → memcache-client-1.7.4}/memcache.rb +242 -70
- data/vendor/rails/activesupport/lib/active_support/version.rb +1 -1
- data/vendor/rails/activesupport/lib/active_support/xml_mini/jdom.rb +162 -0
- data/vendor/rails/railties/CHANGELOG +10 -0
- data/vendor/rails/railties/Rakefile +13 -9
- data/vendor/rails/railties/bin/about +2 -2
- data/vendor/rails/railties/bin/console +1 -1
- data/vendor/rails/railties/bin/dbconsole +1 -1
- data/vendor/rails/railties/bin/destroy +1 -1
- data/vendor/rails/railties/bin/generate +1 -1
- data/vendor/rails/railties/bin/performance/benchmarker +1 -1
- data/vendor/rails/railties/bin/performance/profiler +1 -1
- data/vendor/rails/railties/bin/plugin +1 -1
- data/vendor/rails/railties/bin/runner +1 -1
- data/vendor/rails/railties/bin/server +1 -1
- data/vendor/rails/railties/builtin/rails_info/rails/info.rb +4 -2
- data/vendor/rails/railties/configs/initializers/new_rails_defaults.rb +2 -0
- data/vendor/rails/railties/configs/routes.rb +1 -1
- data/vendor/rails/railties/configs/seeds.rb +7 -0
- data/vendor/rails/railties/environments/boot.rb +1 -1
- data/vendor/rails/railties/guides/files/javascripts/code_highlighter.js +188 -0
- data/vendor/rails/railties/guides/files/javascripts/guides.js +8 -0
- data/vendor/rails/railties/guides/files/javascripts/highlighters.js +90 -0
- data/vendor/rails/railties/guides/files/stylesheets/main.css +441 -0
- data/vendor/rails/railties/guides/files/stylesheets/print.css +52 -0
- data/vendor/rails/railties/guides/files/stylesheets/reset.css +43 -0
- data/vendor/rails/railties/guides/files/stylesheets/style.css +13 -0
- data/vendor/rails/railties/guides/files/stylesheets/syntax.css +31 -0
- data/vendor/rails/railties/guides/images/belongs_to.png +0 -0
- data/vendor/rails/railties/guides/images/book_icon.gif +0 -0
- data/vendor/rails/railties/guides/images/bullet.gif +0 -0
- data/vendor/rails/railties/guides/images/chapters_icon.gif +0 -0
- data/vendor/rails/railties/guides/images/check_bullet.gif +0 -0
- data/vendor/rails/railties/guides/images/credits_pic_blank.gif +0 -0
- data/vendor/rails/railties/guides/images/csrf.png +0 -0
- data/vendor/rails/railties/guides/images/customized_error_messages.png +0 -0
- data/vendor/rails/railties/guides/images/error_messages.png +0 -0
- data/vendor/rails/railties/guides/images/feature_tile.gif +0 -0
- data/vendor/rails/railties/guides/images/footer_tile.gif +0 -0
- data/vendor/rails/railties/guides/images/fxn.jpg +0 -0
- data/vendor/rails/railties/guides/images/grey_bullet.gif +0 -0
- data/vendor/rails/railties/guides/images/habtm.png +0 -0
- data/vendor/rails/railties/guides/images/has_many.png +0 -0
- data/vendor/rails/railties/guides/images/has_many_through.png +0 -0
- data/vendor/rails/railties/guides/images/has_one.png +0 -0
- data/vendor/rails/railties/guides/images/has_one_through.png +0 -0
- data/vendor/rails/railties/guides/images/header_backdrop.png +0 -0
- data/vendor/rails/railties/guides/images/header_tile.gif +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_localized_pirate.png +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_translated_en.png +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_translated_pirate.png +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_translation_missing.png +0 -0
- data/vendor/rails/railties/guides/images/i18n/demo_untranslated.png +0 -0
- data/vendor/rails/railties/guides/images/icons/README +5 -0
- data/vendor/rails/railties/guides/images/icons/callouts/1.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/10.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/11.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/12.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/13.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/14.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/15.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/2.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/3.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/4.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/5.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/6.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/7.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/8.png +0 -0
- data/vendor/rails/railties/guides/images/icons/callouts/9.png +0 -0
- data/vendor/rails/railties/guides/images/icons/caution.png +0 -0
- data/vendor/rails/railties/guides/images/icons/example.png +0 -0
- data/vendor/rails/railties/guides/images/icons/home.png +0 -0
- data/vendor/rails/railties/guides/images/icons/important.png +0 -0
- data/vendor/rails/railties/guides/images/icons/next.png +0 -0
- data/vendor/rails/railties/guides/images/icons/note.png +0 -0
- data/vendor/rails/railties/guides/images/icons/prev.png +0 -0
- data/vendor/rails/railties/guides/images/icons/tip.png +0 -0
- data/vendor/rails/railties/guides/images/icons/up.png +0 -0
- data/vendor/rails/railties/guides/images/icons/warning.png +0 -0
- data/vendor/rails/railties/guides/images/nav_arrow.gif +0 -0
- data/vendor/rails/railties/guides/images/polymorphic.png +0 -0
- data/vendor/rails/railties/guides/images/posts_index.png +0 -0
- data/vendor/rails/railties/guides/images/rails_guides_logo.gif +0 -0
- data/vendor/rails/railties/guides/images/rails_logo_remix.gif +0 -0
- data/vendor/rails/railties/guides/images/rails_welcome.png +0 -0
- data/vendor/rails/railties/guides/images/session_fixation.png +0 -0
- data/vendor/rails/railties/guides/images/tab_grey.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_info.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_note.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_red.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_yellow.gif +0 -0
- data/vendor/rails/railties/guides/images/tab_yellow.png +0 -0
- data/vendor/rails/railties/guides/images/validation_error_messages.png +0 -0
- data/vendor/rails/railties/guides/rails_guides.rb +42 -0
- data/vendor/rails/railties/guides/rails_guides/generator.rb +138 -0
- data/vendor/rails/railties/guides/rails_guides/helpers.rb +34 -0
- data/vendor/rails/railties/guides/rails_guides/indexer.rb +55 -0
- data/vendor/rails/railties/guides/rails_guides/textile_extensions.rb +41 -0
- data/vendor/rails/railties/guides/source/2_2_release_notes.textile +422 -0
- data/vendor/rails/railties/guides/source/2_3_release_notes.textile +610 -0
- data/vendor/rails/railties/guides/source/action_controller_overview.textile +776 -0
- data/vendor/rails/railties/guides/source/action_mailer_basics.textile +424 -0
- data/vendor/rails/railties/guides/source/active_record_basics.textile +135 -0
- data/vendor/rails/railties/guides/source/active_record_querying.textile +969 -0
- data/vendor/rails/railties/guides/source/activerecord_validations_callbacks.textile +1086 -0
- data/vendor/rails/railties/guides/source/association_basics.textile +1781 -0
- data/vendor/rails/railties/guides/source/caching_with_rails.textile +524 -0
- data/vendor/rails/railties/guides/source/command_line.textile +589 -0
- data/vendor/rails/railties/guides/source/configuring.textile +234 -0
- data/vendor/rails/railties/guides/source/contribute.textile +71 -0
- data/vendor/rails/railties/guides/source/contributing_to_rails.textile +239 -0
- data/vendor/rails/railties/guides/source/credits.erb.textile +52 -0
- data/vendor/rails/railties/guides/source/debugging_rails_applications.textile +709 -0
- data/vendor/rails/railties/guides/source/form_helpers.textile +766 -0
- data/vendor/rails/railties/guides/source/getting_started.textile +1297 -0
- data/vendor/rails/railties/guides/source/i18n.textile +912 -0
- data/vendor/rails/railties/guides/source/index.erb.textile +124 -0
- data/vendor/rails/railties/guides/source/layout.html.erb +103 -0
- data/vendor/rails/railties/guides/source/layouts_and_rendering.textile +979 -0
- data/vendor/rails/railties/guides/source/migrations.textile +591 -0
- data/vendor/rails/railties/guides/source/nested_model_forms.textile +222 -0
- data/vendor/rails/railties/guides/source/performance_testing.textile +531 -0
- data/vendor/rails/railties/guides/source/plugins.textile +1512 -0
- data/vendor/rails/railties/guides/source/rails_on_rack.textile +309 -0
- data/vendor/rails/railties/guides/source/routing.textile +903 -0
- data/vendor/rails/railties/guides/source/security.textile +986 -0
- data/vendor/rails/railties/guides/source/testing.textile +951 -0
- data/vendor/rails/railties/lib/commands/dbconsole.rb +8 -4
- data/vendor/rails/railties/lib/commands/performance/profiler.rb +1 -1
- data/vendor/rails/railties/lib/initializer.rb +27 -4
- data/vendor/rails/railties/lib/rails/gem_dependency.rb +35 -6
- data/vendor/rails/railties/lib/rails/plugin.rb +12 -0
- data/vendor/rails/railties/lib/rails/plugin/loader.rb +7 -0
- data/vendor/rails/railties/lib/rails/rack/metal.rb +1 -1
- data/vendor/rails/railties/lib/rails/version.rb +1 -1
- data/vendor/rails/railties/lib/rails_generator/base.rb +1 -1
- data/vendor/rails/railties/lib/rails_generator/generators/applications/app/app_generator.rb +5 -0
- data/vendor/rails/railties/lib/rails_generator/generators/applications/app/template_runner.rb +1 -1
- data/vendor/rails/railties/lib/rails_generator/generators/components/model/model_generator.rb +9 -2
- data/vendor/rails/railties/lib/rails_generator/generators/components/scaffold/scaffold_generator.rb +1 -0
- data/vendor/rails/railties/lib/tasks/databases.rake +17 -4
- data/vendor/rails/railties/lib/tasks/gems.rake +19 -6
- data/vendor/rails/railties/lib/tasks/routes.rake +4 -3
- data/vendor/rails/railties/lib/test_help.rb +4 -1
- metadata +158 -58
- data/spec/lib/local_time_spec.rb +0 -40
- data/vendor/rails/actionpack/lib/action_controller/rewindable_input.rb +0 -28
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack.rb +0 -89
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/adapter/camping.rb +0 -22
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/abstract/handler.rb +0 -37
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/abstract/request.rb +0 -37
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/basic.rb +0 -58
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/digest/md5.rb +0 -124
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/digest/nonce.rb +0 -51
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/digest/params.rb +0 -55
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/digest/request.rb +0 -40
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/auth/openid.rb +0 -480
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/builder.rb +0 -63
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/cascade.rb +0 -36
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/chunked.rb +0 -49
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/commonlogger.rb +0 -61
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/conditionalget.rb +0 -45
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/content_length.rb +0 -29
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/content_type.rb +0 -23
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/deflater.rb +0 -85
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/directory.rb +0 -153
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/file.rb +0 -88
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler.rb +0 -48
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/cgi.rb +0 -61
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/evented_mongrel.rb +0 -8
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/fastcgi.rb +0 -89
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/lsws.rb +0 -55
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/mongrel.rb +0 -84
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/scgi.rb +0 -59
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/swiftiplied_mongrel.rb +0 -8
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/thin.rb +0 -18
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/handler/webrick.rb +0 -67
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/head.rb +0 -19
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/lint.rb +0 -462
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/lobster.rb +0 -65
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/lock.rb +0 -16
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/methodoverride.rb +0 -27
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/mime.rb +0 -204
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/mock.rb +0 -160
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/recursive.rb +0 -57
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/reloader.rb +0 -64
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/request.rb +0 -241
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/response.rb +0 -179
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/session/abstract/id.rb +0 -142
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/session/cookie.rb +0 -91
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/session/memcache.rb +0 -109
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/session/pool.rb +0 -100
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/showexceptions.rb +0 -349
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/showstatus.rb +0 -106
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/static.rb +0 -38
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/urlmap.rb +0 -55
- data/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/utils.rb +0 -392
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'rack/session/abstract/id'
|
1
2
|
module ActionController #:nodoc:
|
2
3
|
class TestRequest < Request #:nodoc:
|
3
4
|
attr_accessor :cookies, :session_options
|
@@ -13,6 +14,8 @@ module ActionController #:nodoc:
|
|
13
14
|
|
14
15
|
@query_parameters = {}
|
15
16
|
@session = TestSession.new
|
17
|
+
default_rack_options = Rack::Session::Abstract::ID::DEFAULT_OPTIONS
|
18
|
+
@session_options ||= {:id => generate_sid(default_rack_options[:sidbits])}.merge(default_rack_options)
|
16
19
|
|
17
20
|
initialize_default_values
|
18
21
|
initialize_containers
|
@@ -110,6 +113,7 @@ module ActionController #:nodoc:
|
|
110
113
|
end
|
111
114
|
|
112
115
|
def recycle!
|
116
|
+
@env["action_controller.request.request_parameters"] = {}
|
113
117
|
self.query_parameters = {}
|
114
118
|
self.path_parameters = {}
|
115
119
|
@headers, @request_method, @accepts, @content_type = nil, nil, nil, nil
|
@@ -120,6 +124,10 @@ module ActionController #:nodoc:
|
|
120
124
|
end
|
121
125
|
|
122
126
|
private
|
127
|
+
def generate_sid(sidbits)
|
128
|
+
"%0#{sidbits / 4}x" % rand(2**sidbits - 1)
|
129
|
+
end
|
130
|
+
|
123
131
|
def initialize_containers
|
124
132
|
@cookies = {}
|
125
133
|
end
|
@@ -250,7 +258,7 @@ module ActionController #:nodoc:
|
|
250
258
|
def cookies
|
251
259
|
cookies = {}
|
252
260
|
Array(headers['Set-Cookie']).each do |cookie|
|
253
|
-
key, value = cookie.split(";").first.split("=")
|
261
|
+
key, value = cookie.split(";").first.split("=").map {|val| Rack::Utils.unescape(val)}
|
254
262
|
cookies[key] = value
|
255
263
|
end
|
256
264
|
cookies
|
@@ -184,7 +184,7 @@ module ActionController
|
|
184
184
|
path = rewrite_path(options)
|
185
185
|
rewritten_url << ActionController::Base.relative_url_root.to_s unless options[:skip_relative_url_root]
|
186
186
|
rewritten_url << (options[:trailing_slash] ? path.sub(/\?|\z/) { "/" + $& } : path)
|
187
|
-
rewritten_url << "##{options[:anchor]}" if options[:anchor]
|
187
|
+
rewritten_url << "##{CGI.escape(options[:anchor].to_param.to_s)}" if options[:anchor]
|
188
188
|
|
189
189
|
rewritten_url
|
190
190
|
end
|
@@ -11,7 +11,7 @@ module ActionView #:nodoc:
|
|
11
11
|
autoload :FormHelper, 'action_view/helpers/form_helper'
|
12
12
|
autoload :FormOptionsHelper, 'action_view/helpers/form_options_helper'
|
13
13
|
autoload :FormTagHelper, 'action_view/helpers/form_tag_helper'
|
14
|
-
autoload :
|
14
|
+
autoload :JavaScriptHelper, 'action_view/helpers/javascript_helper'
|
15
15
|
autoload :NumberHelper, 'action_view/helpers/number_helper'
|
16
16
|
autoload :PrototypeHelper, 'action_view/helpers/prototype_helper'
|
17
17
|
autoload :RecordIdentificationHelper, 'action_view/helpers/record_identification_helper'
|
@@ -272,14 +272,17 @@ module ActionView
|
|
272
272
|
# javascript_include_tag :all, :cache => true, :recursive => true
|
273
273
|
def javascript_include_tag(*sources)
|
274
274
|
options = sources.extract_options!.stringify_keys
|
275
|
-
|
275
|
+
concat = options.delete("concat")
|
276
|
+
cache = concat || options.delete("cache")
|
276
277
|
recursive = options.delete("recursive")
|
277
278
|
|
278
|
-
if ActionController::Base.perform_caching && cache
|
279
|
+
if concat || (ActionController::Base.perform_caching && cache)
|
279
280
|
joined_javascript_name = (cache == true ? "all" : cache) + ".js"
|
280
|
-
joined_javascript_path = File.join(JAVASCRIPTS_DIR, joined_javascript_name)
|
281
|
+
joined_javascript_path = File.join(joined_javascript_name[/^#{File::SEPARATOR}/] ? ASSETS_DIR : JAVASCRIPTS_DIR, joined_javascript_name)
|
281
282
|
|
282
|
-
|
283
|
+
unless ActionController::Base.perform_caching && File.exists?(joined_javascript_path)
|
284
|
+
write_asset_file_contents(joined_javascript_path, compute_javascript_paths(sources, recursive))
|
285
|
+
end
|
283
286
|
javascript_src_tag(joined_javascript_name, options)
|
284
287
|
else
|
285
288
|
expand_javascript_sources(sources, recursive).collect { |source| javascript_src_tag(source, options) }.join("\n")
|
@@ -410,16 +413,25 @@ module ActionView
|
|
410
413
|
# The <tt>:recursive</tt> option is also available for caching:
|
411
414
|
#
|
412
415
|
# stylesheet_link_tag :all, :cache => true, :recursive => true
|
416
|
+
#
|
417
|
+
# To force concatenation (even in development mode) set <tt>:concat</tt> to true. This is useful if
|
418
|
+
# you have too many stylesheets for IE to load.
|
419
|
+
#
|
420
|
+
# stylesheet_link_tag :all, :concat => true
|
421
|
+
#
|
413
422
|
def stylesheet_link_tag(*sources)
|
414
423
|
options = sources.extract_options!.stringify_keys
|
415
|
-
|
424
|
+
concat = options.delete("concat")
|
425
|
+
cache = concat || options.delete("cache")
|
416
426
|
recursive = options.delete("recursive")
|
417
427
|
|
418
|
-
if ActionController::Base.perform_caching && cache
|
428
|
+
if concat || (ActionController::Base.perform_caching && cache)
|
419
429
|
joined_stylesheet_name = (cache == true ? "all" : cache) + ".css"
|
420
|
-
joined_stylesheet_path = File.join(STYLESHEETS_DIR, joined_stylesheet_name)
|
430
|
+
joined_stylesheet_path = File.join(joined_stylesheet_name[/^#{File::SEPARATOR}/] ? ASSETS_DIR : STYLESHEETS_DIR, joined_stylesheet_name)
|
421
431
|
|
422
|
-
|
432
|
+
unless ActionController::Base.perform_caching && File.exists?(joined_stylesheet_path)
|
433
|
+
write_asset_file_contents(joined_stylesheet_path, compute_stylesheet_paths(sources, recursive))
|
434
|
+
end
|
423
435
|
stylesheet_tag(joined_stylesheet_name, options)
|
424
436
|
else
|
425
437
|
expand_stylesheet_sources(sources, recursive).collect { |source| stylesheet_tag(source, options) }.join("\n")
|
@@ -679,4 +691,4 @@ module ActionView
|
|
679
691
|
end
|
680
692
|
end
|
681
693
|
end
|
682
|
-
end
|
694
|
+
end
|
@@ -98,7 +98,7 @@ module ActionView
|
|
98
98
|
options[:schema_date] = "2005" # The Atom spec copyright date
|
99
99
|
end
|
100
100
|
|
101
|
-
xml = options
|
101
|
+
xml = options.delete(:xml) || eval("xml", block.binding)
|
102
102
|
xml.instruct!
|
103
103
|
if options[:instruct]
|
104
104
|
options[:instruct].each do |target,attrs|
|
@@ -876,8 +876,8 @@ module ActionView
|
|
876
876
|
input_name_from_type(type).gsub(/([\[\(])|(\]\[)/, '_').gsub(/[\]\)]/, '')
|
877
877
|
end
|
878
878
|
|
879
|
-
# Given an ordering of datetime components, create the selection
|
880
|
-
# and join them with their appropriate
|
879
|
+
# Given an ordering of datetime components, create the selection HTML
|
880
|
+
# and join them with their appropriate separators.
|
881
881
|
def build_selects_from_types(order)
|
882
882
|
select = ''
|
883
883
|
order.reverse.each do |type|
|
@@ -493,7 +493,8 @@ module ActionView
|
|
493
493
|
# Returns a label tag tailored for labelling an input field for a specified attribute (identified by +method+) on an object
|
494
494
|
# assigned to the template (identified by +object+). The text of label will default to the attribute name unless you specify
|
495
495
|
# it explicitly. Additional options on the label tag can be passed as a hash with +options+. These options will be tagged
|
496
|
-
# onto the HTML as an HTML element attribute as in the example shown
|
496
|
+
# onto the HTML as an HTML element attribute as in the example shown, except for the <tt>:value</tt> option, which is designed to
|
497
|
+
# target labels for radio_button tags (where the value is used in the ID of the input tag).
|
497
498
|
#
|
498
499
|
# ==== Examples
|
499
500
|
# label(:post, :title)
|
@@ -505,6 +506,9 @@ module ActionView
|
|
505
506
|
# label(:post, :title, "A short title", :class => "title_label")
|
506
507
|
# # => <label for="post_title" class="title_label">A short title</label>
|
507
508
|
#
|
509
|
+
# label(:post, :privacy, "Public Post", :value => "public")
|
510
|
+
# # => <label for="post_privacy_public">Public Post</label>
|
511
|
+
#
|
508
512
|
def label(object_name, method, text = nil, options = {})
|
509
513
|
InstanceTag.new(object_name, method, self, options.delete(:object)).to_label_tag(text, options)
|
510
514
|
end
|
@@ -720,8 +724,10 @@ module ActionView
|
|
720
724
|
|
721
725
|
def to_label_tag(text = nil, options = {})
|
722
726
|
options = options.stringify_keys
|
727
|
+
tag_value = options.delete("value")
|
723
728
|
name_and_id = options.dup
|
724
|
-
|
729
|
+
name_and_id["id"] = name_and_id["for"]
|
730
|
+
add_default_name_and_id_for_value(tag_value, name_and_id)
|
725
731
|
options.delete("index")
|
726
732
|
options["for"] ||= name_and_id["id"]
|
727
733
|
content = (text.blank? ? nil : text.to_s) || method_name.humanize
|
@@ -753,11 +759,7 @@ module ActionView
|
|
753
759
|
checked = self.class.radio_button_checked?(value(object), tag_value)
|
754
760
|
end
|
755
761
|
options["checked"] = "checked" if checked
|
756
|
-
|
757
|
-
options["id"] ||= defined?(@auto_index) ?
|
758
|
-
"#{tag_id_with_index(@auto_index)}_#{pretty_tag_value}" :
|
759
|
-
"#{tag_id}_#{pretty_tag_value}"
|
760
|
-
add_default_name_and_id(options)
|
762
|
+
add_default_name_and_id_for_value(tag_value, options)
|
761
763
|
tag("input", options)
|
762
764
|
end
|
763
765
|
|
@@ -858,6 +860,17 @@ module ActionView
|
|
858
860
|
end
|
859
861
|
|
860
862
|
private
|
863
|
+
def add_default_name_and_id_for_value(tag_value, options)
|
864
|
+
unless tag_value.nil?
|
865
|
+
pretty_tag_value = tag_value.to_s.gsub(/\s/, "_").gsub(/\W/, "").downcase
|
866
|
+
specified_id = options["id"]
|
867
|
+
add_default_name_and_id(options)
|
868
|
+
options["id"] += "_#{pretty_tag_value}" unless specified_id
|
869
|
+
else
|
870
|
+
add_default_name_and_id(options)
|
871
|
+
end
|
872
|
+
end
|
873
|
+
|
861
874
|
def add_default_name_and_id(options)
|
862
875
|
if options.has_key?("index")
|
863
876
|
options["name"] ||= tag_name_with_index(options["index"])
|
@@ -905,6 +918,7 @@ module ActionView
|
|
905
918
|
attr_accessor :object_name, :object, :options
|
906
919
|
|
907
920
|
def initialize(object_name, object, template, options, proc)
|
921
|
+
@nested_child_index = {}
|
908
922
|
@object_name, @object, @template, @options, @proc = object_name, object, template, options, proc
|
909
923
|
@default_options = @options ? @options.slice(:index) : {}
|
910
924
|
if @object_name.to_s.match(/\[\]$/)
|
@@ -1007,7 +1021,7 @@ module ActionView
|
|
1007
1021
|
explicit_child_index = args.last[:child_index] if args.last.is_a?(Hash)
|
1008
1022
|
|
1009
1023
|
children.map do |child|
|
1010
|
-
fields_for_nested_model("#{name}[#{explicit_child_index || nested_child_index}]", child, args, block)
|
1024
|
+
fields_for_nested_model("#{name}[#{explicit_child_index || nested_child_index(name)}]", child, args, block)
|
1011
1025
|
end.join
|
1012
1026
|
else
|
1013
1027
|
fields_for_nested_model(name, explicit_object || association, args, block)
|
@@ -1025,9 +1039,9 @@ module ActionView
|
|
1025
1039
|
end
|
1026
1040
|
end
|
1027
1041
|
|
1028
|
-
def nested_child_index
|
1029
|
-
@nested_child_index ||= -1
|
1030
|
-
@nested_child_index += 1
|
1042
|
+
def nested_child_index(name)
|
1043
|
+
@nested_child_index[name] ||= -1
|
1044
|
+
@nested_child_index[name] += 1
|
1031
1045
|
end
|
1032
1046
|
end
|
1033
1047
|
end
|
@@ -1036,4 +1050,4 @@ module ActionView
|
|
1036
1050
|
cattr_accessor :default_form_builder
|
1037
1051
|
self.default_form_builder = ::ActionView::Helpers::FormBuilder
|
1038
1052
|
end
|
1039
|
-
end
|
1053
|
+
end
|
@@ -162,6 +162,60 @@ module ActionView
|
|
162
162
|
InstanceTag.new(object, method, self, options.delete(:object)).to_collection_select_tag(collection, value_method, text_method, options, html_options)
|
163
163
|
end
|
164
164
|
|
165
|
+
|
166
|
+
# Returns <tt><select></tt>, <tt><optgroup></tt> and <tt><option></tt> tags for the collection of existing return values of
|
167
|
+
# +method+ for +object+'s class. The value returned from calling +method+ on the instance +object+ will
|
168
|
+
# be selected. If calling +method+ returns +nil+, no selection is made without including <tt>:prompt</tt>
|
169
|
+
# or <tt>:include_blank</tt> in the +options+ hash.
|
170
|
+
#
|
171
|
+
# Parameters:
|
172
|
+
# * +object+ - The instance of the class to be used for the select tag
|
173
|
+
# * +method+ - The attribute of +object+ corresponding to the select tag
|
174
|
+
# * +collection+ - An array of objects representing the <tt><optgroup></tt> tags.
|
175
|
+
# * +group_method+ - The name of a method which, when called on a member of +collection+, returns an
|
176
|
+
# array of child objects representing the <tt><option></tt> tags.
|
177
|
+
# * +group_label_method+ - The name of a method which, when called on a member of +collection+, returns a
|
178
|
+
# string to be used as the +label+ attribute for its <tt><optgroup></tt> tag.
|
179
|
+
# * +option_key_method+ - The name of a method which, when called on a child object of a member of
|
180
|
+
# +collection+, returns a value to be used as the +value+ attribute for its <tt><option></tt> tag.
|
181
|
+
# * +option_value_method+ - The name of a method which, when called on a child object of a member of
|
182
|
+
# +collection+, returns a value to be used as the contents of its <tt><option></tt> tag.
|
183
|
+
#
|
184
|
+
# Example object structure for use with this method:
|
185
|
+
# class Continent < ActiveRecord::Base
|
186
|
+
# has_many :countries
|
187
|
+
# # attribs: id, name
|
188
|
+
# end
|
189
|
+
# class Country < ActiveRecord::Base
|
190
|
+
# belongs_to :continent
|
191
|
+
# # attribs: id, name, continent_id
|
192
|
+
# end
|
193
|
+
# class City < ActiveRecord::Base
|
194
|
+
# belongs_to :country
|
195
|
+
# # attribs: id, name, country_id
|
196
|
+
# end
|
197
|
+
#
|
198
|
+
# Sample usage:
|
199
|
+
# grouped_collection_select(:city, :country_id, @continents, :countries, :name, :id, :name)
|
200
|
+
#
|
201
|
+
# Possible output:
|
202
|
+
# <select name="city[country_id]">
|
203
|
+
# <optgroup label="Africa">
|
204
|
+
# <option value="1">South Africa</option>
|
205
|
+
# <option value="3">Somalia</option>
|
206
|
+
# </optgroup>
|
207
|
+
# <optgroup label="Europe">
|
208
|
+
# <option value="7" selected="selected">Denmark</option>
|
209
|
+
# <option value="2">Ireland</option>
|
210
|
+
# </optgroup>
|
211
|
+
# </select>
|
212
|
+
#
|
213
|
+
def grouped_collection_select(object, method, collection, group_method, group_label_method, option_key_method, option_value_method, options = {}, html_options = {})
|
214
|
+
InstanceTag.new(object, method, self, options.delete(:object)).to_grouped_collection_select_tag(collection, group_method, group_label_method, option_key_method, option_value_method, options, html_options)
|
215
|
+
end
|
216
|
+
|
217
|
+
|
218
|
+
|
165
219
|
# Return select and option tags for the given object and method, using
|
166
220
|
# #time_zone_options_for_select to generate the list of option tags.
|
167
221
|
#
|
@@ -230,6 +284,8 @@ module ActionView
|
|
230
284
|
#
|
231
285
|
# NOTE: Only the option tags are returned, you have to wrap this call in a regular HTML select tag.
|
232
286
|
def options_for_select(container, selected = nil)
|
287
|
+
return container if String === container
|
288
|
+
|
233
289
|
container = container.to_a if Hash === container
|
234
290
|
selected, disabled = extract_selected_and_disabled(selected)
|
235
291
|
|
@@ -488,6 +544,15 @@ module ActionView
|
|
488
544
|
)
|
489
545
|
end
|
490
546
|
|
547
|
+
def to_grouped_collection_select_tag(collection, group_method, group_label_method, option_key_method, option_value_method, options, html_options)
|
548
|
+
html_options = html_options.stringify_keys
|
549
|
+
add_default_name_and_id(html_options)
|
550
|
+
value = value(object)
|
551
|
+
content_tag(
|
552
|
+
"select", add_options(option_groups_from_collection_for_select(collection, group_method, group_label_method, option_key_method, option_value_method, value), options, value), html_options
|
553
|
+
)
|
554
|
+
end
|
555
|
+
|
491
556
|
def to_time_zone_select_tag(priority_zones, options, html_options)
|
492
557
|
html_options = html_options.stringify_keys
|
493
558
|
add_default_name_and_id(html_options)
|
@@ -506,7 +571,8 @@ module ActionView
|
|
506
571
|
option_tags = "<option value=\"\">#{options[:include_blank] if options[:include_blank].kind_of?(String)}</option>\n" + option_tags
|
507
572
|
end
|
508
573
|
if value.blank? && options[:prompt]
|
509
|
-
|
574
|
+
prompt = options[:prompt].kind_of?(String) ? options[:prompt] : I18n.translate('support.select.prompt', :default => 'Please select')
|
575
|
+
"<option value=\"\">#{prompt}</option>\n" + option_tags
|
510
576
|
else
|
511
577
|
option_tags
|
512
578
|
end
|
@@ -522,6 +588,10 @@ module ActionView
|
|
522
588
|
@template.collection_select(@object_name, method, collection, value_method, text_method, objectify_options(options), @default_options.merge(html_options))
|
523
589
|
end
|
524
590
|
|
591
|
+
def grouped_collection_select(method, collection, group_method, group_label_method, option_key_method, option_value_method, options = {}, html_options = {})
|
592
|
+
@template.grouped_collection_select(@object_name, method, collection, group_method, group_label_method, option_key_method, option_value_method, objectify_options(options), @default_options.merge(html_options))
|
593
|
+
end
|
594
|
+
|
525
595
|
def time_zone_select(method, priority_zones = nil, options = {}, html_options = {})
|
526
596
|
@template.time_zone_select(@object_name, method, priority_zones, objectify_options(options), @default_options.merge(html_options))
|
527
597
|
end
|
@@ -230,6 +230,8 @@ module ActionView
|
|
230
230
|
# * <tt>:rows</tt> - Specify the number of rows in the textarea
|
231
231
|
# * <tt>:cols</tt> - Specify the number of columns in the textarea
|
232
232
|
# * <tt>:disabled</tt> - If set to true, the user will not be able to use this input.
|
233
|
+
# * <tt>:escape</tt> - By default, the contents of the text input are HTML escaped.
|
234
|
+
# If you need unescaped contents, set this to false.
|
233
235
|
# * Any other key creates standard HTML attributes for the tag.
|
234
236
|
#
|
235
237
|
# ==== Examples
|
@@ -257,7 +259,10 @@ module ActionView
|
|
257
259
|
options["cols"], options["rows"] = size.split("x") if size.respond_to?(:split)
|
258
260
|
end
|
259
261
|
|
260
|
-
|
262
|
+
escape = options.key?("escape") ? options.delete("escape") : true
|
263
|
+
content = html_escape(content) if escape
|
264
|
+
|
265
|
+
content_tag :textarea, content, { "name" => name, "id" => sanitize_to_id(name) }.update(options.stringify_keys)
|
261
266
|
end
|
262
267
|
|
263
268
|
# Creates a check box form input tag.
|
@@ -353,7 +358,8 @@ module ActionView
|
|
353
358
|
disable_with << ";#{options.delete('onclick')}" if options['onclick']
|
354
359
|
|
355
360
|
options["onclick"] = "if (window.hiddenCommit) { window.hiddenCommit.setAttribute('value', this.value); }"
|
356
|
-
options["onclick"] << "else { hiddenCommit =
|
361
|
+
options["onclick"] << "else { hiddenCommit = document.createElement('input');hiddenCommit.type = 'hidden';"
|
362
|
+
options["onclick"] << "hiddenCommit.value = this.value;hiddenCommit.name = this.name;this.form.appendChild(hiddenCommit); }"
|
357
363
|
options["onclick"] << "this.setAttribute('originalValue', this.value);this.disabled = true;#{disable_with};"
|
358
364
|
options["onclick"] << "result = (this.form.onsubmit ? (this.form.onsubmit() ? this.form.submit() : false) : this.form.submit());"
|
359
365
|
options["onclick"] << "if (result == false) { this.value = this.getAttribute('originalValue');this.disabled = false; }return result;"
|
@@ -444,10 +450,10 @@ module ActionView
|
|
444
450
|
''
|
445
451
|
when /^post$/i, "", nil
|
446
452
|
html_options["method"] = "post"
|
447
|
-
protect_against_forgery? ? content_tag(:div, token_tag, :style => 'margin:0;padding:0') : ''
|
453
|
+
protect_against_forgery? ? content_tag(:div, token_tag, :style => 'margin:0;padding:0;display:inline') : ''
|
448
454
|
else
|
449
455
|
html_options["method"] = "post"
|
450
|
-
content_tag(:div, tag(:input, :type => "hidden", :name => "_method", :value => method) + token_tag, :style => 'margin:0;padding:0')
|
456
|
+
content_tag(:div, tag(:input, :type => "hidden", :name => "_method", :value => method) + token_tag, :style => 'margin:0;padding:0;display:inline')
|
451
457
|
end
|
452
458
|
end
|
453
459
|
|
@@ -140,7 +140,7 @@ module ActionView
|
|
140
140
|
# number_with_delimiter(12345678) # => 12,345,678
|
141
141
|
# number_with_delimiter(12345678.05) # => 12,345,678.05
|
142
142
|
# number_with_delimiter(12345678, :delimiter => ".") # => 12.345.678
|
143
|
-
# number_with_delimiter(12345678, :
|
143
|
+
# number_with_delimiter(12345678, :separator => ",") # => 12,345,678
|
144
144
|
# number_with_delimiter(98765432.98, :delimiter => " ", :separator => ",")
|
145
145
|
# # => 98 765 432,98
|
146
146
|
#
|
@@ -686,7 +686,7 @@ module ActionView
|
|
686
686
|
# Returns an object whose <tt>to_json</tt> evaluates to +code+. Use this to pass a literal JavaScript
|
687
687
|
# expression as an argument to another JavaScriptGenerator method.
|
688
688
|
def literal(code)
|
689
|
-
ActiveSupport::JSON::Variable.new(code.to_s)
|
689
|
+
::ActiveSupport::JSON::Variable.new(code.to_s)
|
690
690
|
end
|
691
691
|
|
692
692
|
# Returns a collection reference by finding it through a CSS +pattern+ in the DOM. This collection can then be
|
@@ -973,7 +973,7 @@ module ActionView
|
|
973
973
|
def loop_on_multiple_args(method, ids)
|
974
974
|
record(ids.size>1 ?
|
975
975
|
"#{javascript_object_for(ids)}.each(#{method})" :
|
976
|
-
"#{method}(#{ids.first
|
976
|
+
"#{method}(#{::ActiveSupport::JSON.encode(ids.first)})")
|
977
977
|
end
|
978
978
|
|
979
979
|
def page
|
@@ -997,7 +997,7 @@ module ActionView
|
|
997
997
|
end
|
998
998
|
|
999
999
|
def javascript_object_for(object)
|
1000
|
-
|
1000
|
+
::ActiveSupport::JSON.encode(object)
|
1001
1001
|
end
|
1002
1002
|
|
1003
1003
|
def arguments_for_call(arguments, block = nil)
|
@@ -1139,7 +1139,7 @@ module ActionView
|
|
1139
1139
|
class JavaScriptElementProxy < JavaScriptProxy #:nodoc:
|
1140
1140
|
def initialize(generator, id)
|
1141
1141
|
@id = id
|
1142
|
-
super(generator, "$(#{id
|
1142
|
+
super(generator, "$(#{::ActiveSupport::JSON.encode(id)})")
|
1143
1143
|
end
|
1144
1144
|
|
1145
1145
|
# Allows access of element attributes through +attribute+. Examples:
|
@@ -1211,7 +1211,7 @@ module ActionView
|
|
1211
1211
|
enumerate :eachSlice, :variable => variable, :method_args => [number], :yield_args => %w(value index), :return => true, &block
|
1212
1212
|
else
|
1213
1213
|
add_variable_assignment!(variable)
|
1214
|
-
append_enumerable_function!("eachSlice(#{number
|
1214
|
+
append_enumerable_function!("eachSlice(#{::ActiveSupport::JSON.encode(number)});")
|
1215
1215
|
end
|
1216
1216
|
end
|
1217
1217
|
|
@@ -1232,7 +1232,7 @@ module ActionView
|
|
1232
1232
|
|
1233
1233
|
def pluck(variable, property)
|
1234
1234
|
add_variable_assignment!(variable)
|
1235
|
-
append_enumerable_function!("pluck(#{property
|
1235
|
+
append_enumerable_function!("pluck(#{::ActiveSupport::JSON.encode(property)});")
|
1236
1236
|
end
|
1237
1237
|
|
1238
1238
|
def zip(variable, *arguments, &block)
|
@@ -1296,7 +1296,7 @@ module ActionView
|
|
1296
1296
|
|
1297
1297
|
class JavaScriptElementCollectionProxy < JavaScriptCollectionProxy #:nodoc:\
|
1298
1298
|
def initialize(generator, pattern)
|
1299
|
-
super(generator, "$$(#{pattern
|
1299
|
+
super(generator, "$$(#{::ActiveSupport::JSON.encode(pattern)})")
|
1300
1300
|
end
|
1301
1301
|
end
|
1302
1302
|
end
|