case_form 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.rdoc +1 -0
- data/MIT-LICENSE.rdoc +20 -0
- data/Manifest +86 -0
- data/README.rdoc +0 -0
- data/Rakefile +30 -0
- data/TODO.rdoc +7 -0
- data/case_form.gemspec +31 -0
- data/lib/case_form.rb +88 -0
- data/lib/case_form/associations.rb +50 -0
- data/lib/case_form/buttons.rb +175 -0
- data/lib/case_form/core_ext/form_helper.rb +54 -0
- data/lib/case_form/core_ext/layout_helper.rb +16 -0
- data/lib/case_form/core_ext/sentence_error.rb +38 -0
- data/lib/case_form/element.rb +40 -0
- data/lib/case_form/element/base.rb +95 -0
- data/lib/case_form/element/button.rb +64 -0
- data/lib/case_form/element/error.rb +54 -0
- data/lib/case_form/element/errors/complex_error.rb +107 -0
- data/lib/case_form/element/errors/simple_error.rb +76 -0
- data/lib/case_form/element/fieldset.rb +35 -0
- data/lib/case_form/element/hint.rb +54 -0
- data/lib/case_form/element/input.rb +106 -0
- data/lib/case_form/element/inputs/collection/checkbox_input.rb +36 -0
- data/lib/case_form/element/inputs/collection/radio_input.rb +27 -0
- data/lib/case_form/element/inputs/collection/select_input.rb +22 -0
- data/lib/case_form/element/inputs/collection_input.rb +89 -0
- data/lib/case_form/element/inputs/datetime/date_input.rb +45 -0
- data/lib/case_form/element/inputs/datetime/date_time_input.rb +50 -0
- data/lib/case_form/element/inputs/datetime/time_input.rb +34 -0
- data/lib/case_form/element/inputs/datetime/time_zone_input.rb +24 -0
- data/lib/case_form/element/inputs/file_input.rb +13 -0
- data/lib/case_form/element/inputs/hidden_input.rb +17 -0
- data/lib/case_form/element/inputs/number_input.rb +42 -0
- data/lib/case_form/element/inputs/search_input.rb +32 -0
- data/lib/case_form/element/inputs/string_input.rb +18 -0
- data/lib/case_form/element/inputs/text_input.rb +19 -0
- data/lib/case_form/element/label.rb +52 -0
- data/lib/case_form/element/nested_model.rb +105 -0
- data/lib/case_form/element/nested_models/handle.rb +18 -0
- data/lib/case_form/element/nested_models/handles/destructor_handle.rb +47 -0
- data/lib/case_form/element/nested_models/handles/generator_handle.rb +55 -0
- data/lib/case_form/element_ext/associationable.rb +54 -0
- data/lib/case_form/element_ext/columnable.rb +21 -0
- data/lib/case_form/element_ext/naming.rb +17 -0
- data/lib/case_form/element_ext/validationable.rb +13 -0
- data/lib/case_form/errors.rb +189 -0
- data/lib/case_form/form_builder.rb +11 -0
- data/lib/case_form/inputs.rb +1095 -0
- data/lib/case_form/labels.rb +102 -0
- data/lib/case_form/version.rb +6 -0
- data/lib/generators/case_form/install_generator.rb +33 -0
- data/lib/generators/case_form/templates/case_form.rb +63 -0
- data/lib/generators/case_form/templates/javascripts/jquery.case_form.js +10 -0
- data/lib/generators/case_form/templates/javascripts/prototype.case_form.js +0 -0
- data/lib/generators/case_form/templates/locales/en.yml +28 -0
- data/lib/generators/case_form/templates/locales/pl.yml +28 -0
- data/lib/generators/case_form/templates/stylesheets/stylesheet.css +93 -0
- data/lib/generators/case_form/templates/stylesheets/stylesheet_changes.css +1 -0
- data/lib/generators/case_form/uninstall_generator.rb +30 -0
- data/rails/init.rb +1 -0
- data/test/element/button_test.rb +85 -0
- data/test/element/errors/complex_error_test.rb +140 -0
- data/test/element/errors/simple_error_test.rb +92 -0
- data/test/element/fieldset_test.rb +28 -0
- data/test/element/hint_test.rb +81 -0
- data/test/element/input_test.rb +197 -0
- data/test/element/inputs/collection/checkbox_input_test.rb +176 -0
- data/test/element/inputs/collection/radio_input_test.rb +156 -0
- data/test/element/inputs/collection/select_input_test.rb +152 -0
- data/test/element/inputs/datetime/date_input_test.rb +160 -0
- data/test/element/inputs/datetime/datetime_input_test.rb +227 -0
- data/test/element/inputs/datetime/time_input_test.rb +72 -0
- data/test/element/inputs/datetime/time_zone_input_test.rb +42 -0
- data/test/element/inputs/file_input_test.rb +13 -0
- data/test/element/inputs/hidden_input_test.rb +13 -0
- data/test/element/inputs/number_input_test.rb +50 -0
- data/test/element/inputs/search_input_test.rb +13 -0
- data/test/element/inputs/string_input_test.rb +33 -0
- data/test/element/inputs/text_input_test.rb +13 -0
- data/test/element/label_test.rb +62 -0
- data/test/element/nested_model_test.rb +163 -0
- data/test/element/nested_models/handles/destructor_handle_test.rb +35 -0
- data/test/element/nested_models/handles/generator_handle_test.rb +27 -0
- data/test/form_builder_test.rb +25 -0
- data/test/form_helper_test.rb +15 -0
- data/test/lib/models.rb +268 -0
- data/test/test_helper.rb +74 -0
- metadata +235 -0
    
        data/CHANGELOG.rdoc
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            v0.0.1 Initial project
         | 
    
        data/MIT-LICENSE.rdoc
    ADDED
    
    | @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            Copyright (c) 2010 Szymon Czarnecki
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Permission is hereby granted, free of charge, to any person obtaining
         | 
| 4 | 
            +
            a copy of this software and associated documentation files (the
         | 
| 5 | 
            +
            "Software"), to deal in the Software without restriction, including
         | 
| 6 | 
            +
            without limitation the rights to use, copy, modify, merge, publish,
         | 
| 7 | 
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         | 
| 8 | 
            +
            permit persons to whom the Software is furnished to do so, subject to
         | 
| 9 | 
            +
            the following conditions:
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            The above copyright notice and this permission notice shall be
         | 
| 12 | 
            +
            included in all copies or substantial portions of the Software.
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         | 
| 15 | 
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         | 
| 16 | 
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         | 
| 17 | 
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         | 
| 18 | 
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         | 
| 19 | 
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         | 
| 20 | 
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
    
        data/Manifest
    ADDED
    
    | @@ -0,0 +1,86 @@ | |
| 1 | 
            +
            CHANGELOG.rdoc
         | 
| 2 | 
            +
            MIT-LICENSE.rdoc
         | 
| 3 | 
            +
            Manifest
         | 
| 4 | 
            +
            README.rdoc
         | 
| 5 | 
            +
            Rakefile
         | 
| 6 | 
            +
            TODO.rdoc
         | 
| 7 | 
            +
            lib/case_form.rb
         | 
| 8 | 
            +
            lib/case_form/associations.rb
         | 
| 9 | 
            +
            lib/case_form/buttons.rb
         | 
| 10 | 
            +
            lib/case_form/core_ext/form_helper.rb
         | 
| 11 | 
            +
            lib/case_form/core_ext/layout_helper.rb
         | 
| 12 | 
            +
            lib/case_form/core_ext/sentence_error.rb
         | 
| 13 | 
            +
            lib/case_form/element.rb
         | 
| 14 | 
            +
            lib/case_form/element/base.rb
         | 
| 15 | 
            +
            lib/case_form/element/button.rb
         | 
| 16 | 
            +
            lib/case_form/element/error.rb
         | 
| 17 | 
            +
            lib/case_form/element/errors/complex_error.rb
         | 
| 18 | 
            +
            lib/case_form/element/errors/simple_error.rb
         | 
| 19 | 
            +
            lib/case_form/element/fieldset.rb
         | 
| 20 | 
            +
            lib/case_form/element/hint.rb
         | 
| 21 | 
            +
            lib/case_form/element/input.rb
         | 
| 22 | 
            +
            lib/case_form/element/inputs/collection/checkbox_input.rb
         | 
| 23 | 
            +
            lib/case_form/element/inputs/collection/radio_input.rb
         | 
| 24 | 
            +
            lib/case_form/element/inputs/collection/select_input.rb
         | 
| 25 | 
            +
            lib/case_form/element/inputs/collection_input.rb
         | 
| 26 | 
            +
            lib/case_form/element/inputs/datetime/date_input.rb
         | 
| 27 | 
            +
            lib/case_form/element/inputs/datetime/date_time_input.rb
         | 
| 28 | 
            +
            lib/case_form/element/inputs/datetime/time_input.rb
         | 
| 29 | 
            +
            lib/case_form/element/inputs/datetime/time_zone_input.rb
         | 
| 30 | 
            +
            lib/case_form/element/inputs/file_input.rb
         | 
| 31 | 
            +
            lib/case_form/element/inputs/hidden_input.rb
         | 
| 32 | 
            +
            lib/case_form/element/inputs/number_input.rb
         | 
| 33 | 
            +
            lib/case_form/element/inputs/search_input.rb
         | 
| 34 | 
            +
            lib/case_form/element/inputs/string_input.rb
         | 
| 35 | 
            +
            lib/case_form/element/inputs/text_input.rb
         | 
| 36 | 
            +
            lib/case_form/element/label.rb
         | 
| 37 | 
            +
            lib/case_form/element/nested_model.rb
         | 
| 38 | 
            +
            lib/case_form/element/nested_models/handle.rb
         | 
| 39 | 
            +
            lib/case_form/element/nested_models/handles/destructor_handle.rb
         | 
| 40 | 
            +
            lib/case_form/element/nested_models/handles/generator_handle.rb
         | 
| 41 | 
            +
            lib/case_form/element_ext/associationable.rb
         | 
| 42 | 
            +
            lib/case_form/element_ext/columnable.rb
         | 
| 43 | 
            +
            lib/case_form/element_ext/naming.rb
         | 
| 44 | 
            +
            lib/case_form/element_ext/validationable.rb
         | 
| 45 | 
            +
            lib/case_form/errors.rb
         | 
| 46 | 
            +
            lib/case_form/form_builder.rb
         | 
| 47 | 
            +
            lib/case_form/inputs.rb
         | 
| 48 | 
            +
            lib/case_form/labels.rb
         | 
| 49 | 
            +
            lib/case_form/version.rb
         | 
| 50 | 
            +
            lib/generators/case_form/install_generator.rb
         | 
| 51 | 
            +
            lib/generators/case_form/templates/case_form.rb
         | 
| 52 | 
            +
            lib/generators/case_form/templates/javascripts/jquery.case_form.js
         | 
| 53 | 
            +
            lib/generators/case_form/templates/javascripts/prototype.case_form.js
         | 
| 54 | 
            +
            lib/generators/case_form/templates/locales/en.yml
         | 
| 55 | 
            +
            lib/generators/case_form/templates/locales/pl.yml
         | 
| 56 | 
            +
            lib/generators/case_form/templates/stylesheets/stylesheet.css
         | 
| 57 | 
            +
            lib/generators/case_form/templates/stylesheets/stylesheet_changes.css
         | 
| 58 | 
            +
            lib/generators/case_form/uninstall_generator.rb
         | 
| 59 | 
            +
            rails/init.rb
         | 
| 60 | 
            +
            test/element/button_test.rb
         | 
| 61 | 
            +
            test/element/errors/complex_error_test.rb
         | 
| 62 | 
            +
            test/element/errors/simple_error_test.rb
         | 
| 63 | 
            +
            test/element/fieldset_test.rb
         | 
| 64 | 
            +
            test/element/hint_test.rb
         | 
| 65 | 
            +
            test/element/input_test.rb
         | 
| 66 | 
            +
            test/element/inputs/collection/checkbox_input_test.rb
         | 
| 67 | 
            +
            test/element/inputs/collection/radio_input_test.rb
         | 
| 68 | 
            +
            test/element/inputs/collection/select_input_test.rb
         | 
| 69 | 
            +
            test/element/inputs/datetime/date_input_test.rb
         | 
| 70 | 
            +
            test/element/inputs/datetime/datetime_input_test.rb
         | 
| 71 | 
            +
            test/element/inputs/datetime/time_input_test.rb
         | 
| 72 | 
            +
            test/element/inputs/datetime/time_zone_input_test.rb
         | 
| 73 | 
            +
            test/element/inputs/file_input_test.rb
         | 
| 74 | 
            +
            test/element/inputs/hidden_input_test.rb
         | 
| 75 | 
            +
            test/element/inputs/number_input_test.rb
         | 
| 76 | 
            +
            test/element/inputs/search_input_test.rb
         | 
| 77 | 
            +
            test/element/inputs/string_input_test.rb
         | 
| 78 | 
            +
            test/element/inputs/text_input_test.rb
         | 
| 79 | 
            +
            test/element/label_test.rb
         | 
| 80 | 
            +
            test/element/nested_model_test.rb
         | 
| 81 | 
            +
            test/element/nested_models/handles/destructor_handle_test.rb
         | 
| 82 | 
            +
            test/element/nested_models/handles/generator_handle_test.rb
         | 
| 83 | 
            +
            test/form_builder_test.rb
         | 
| 84 | 
            +
            test/form_helper_test.rb
         | 
| 85 | 
            +
            test/lib/models.rb
         | 
| 86 | 
            +
            test/test_helper.rb
         | 
    
        data/README.rdoc
    ADDED
    
    | 
            File without changes
         | 
    
        data/Rakefile
    ADDED
    
    | @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            require 'rake'
         | 
| 2 | 
            +
            require 'echoe'
         | 
| 3 | 
            +
            require File.join(File.dirname(__FILE__), 'lib', 'case_form', 'version')
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            require 'rake/testtask'
         | 
| 6 | 
            +
            Rake::TestTask.new(:test) do |test|
         | 
| 7 | 
            +
              test.libs    << 'lib'
         | 
| 8 | 
            +
              test.libs    << 'test'
         | 
| 9 | 
            +
              test.pattern = 'test/**/*_test.rb'
         | 
| 10 | 
            +
              test.verbose = true
         | 
| 11 | 
            +
            end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            # Require Hanna for RDoc
         | 
| 14 | 
            +
            require 'hanna/rdoctask'
         | 
| 15 | 
            +
            desc 'Generate RDoc documentation for the CaseForm gem.'
         | 
| 16 | 
            +
            Rake::RDocTask.new(:rdoc) do |rdoc|
         | 
| 17 | 
            +
              rdoc.rdoc_files.include('README.rdoc', 'MIT-LICENSE.rdoc', 'CHANGELOG.rdoc').
         | 
| 18 | 
            +
                include('lib/**/*.rb').
         | 
| 19 | 
            +
                exclude('lib/case_form/version.rb')
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              rdoc.main = "README.rdoc" # page to start on
         | 
| 22 | 
            +
              rdoc.title = "CaseForm documentation"
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              rdoc.rdoc_dir = 'doc' # rdoc output folder
         | 
| 25 | 
            +
            end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            desc 'Default: run unit tests.'
         | 
| 28 | 
            +
            task :default => :test
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            Echoe.new('case_form', CaseForm::VERSION)
         | 
    
        data/TODO.rdoc
    ADDED
    
    | @@ -0,0 +1,7 @@ | |
| 1 | 
            +
            == TODO LIST
         | 
| 2 | 
            +
            * dodac GROUP_BY dla select
         | 
| 3 | 
            +
            * zrobic zaawansowane opcje dla elementow complex_error, np. :header => { :tag => :div, :id => :some_id, :message => :sth }
         | 
| 4 | 
            +
            * JS dla f.new_object i f.destroy_object
         | 
| 5 | 
            +
            * placeholders w locales (HTML5)
         | 
| 6 | 
            +
            * napisac do konca dokumentacje dla metod
         | 
| 7 | 
            +
            * napisac README
         | 
    
        data/case_form.gemspec
    ADDED
    
    | @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Gem::Specification.new do |s|
         | 
| 4 | 
            +
              s.name = %q{case_form}
         | 
| 5 | 
            +
              s.version = "0.0.3"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
         | 
| 8 | 
            +
              s.authors = [""]
         | 
| 9 | 
            +
              s.date = %q{2010-10-14}
         | 
| 10 | 
            +
              s.description = %q{}
         | 
| 11 | 
            +
              s.email = %q{}
         | 
| 12 | 
            +
              s.extra_rdoc_files = ["CHANGELOG.rdoc", "README.rdoc", "TODO.rdoc", "lib/case_form.rb", "lib/case_form/associations.rb", "lib/case_form/buttons.rb", "lib/case_form/core_ext/form_helper.rb", "lib/case_form/core_ext/layout_helper.rb", "lib/case_form/core_ext/sentence_error.rb", "lib/case_form/element.rb", "lib/case_form/element/base.rb", "lib/case_form/element/button.rb", "lib/case_form/element/error.rb", "lib/case_form/element/errors/complex_error.rb", "lib/case_form/element/errors/simple_error.rb", "lib/case_form/element/fieldset.rb", "lib/case_form/element/hint.rb", "lib/case_form/element/input.rb", "lib/case_form/element/inputs/collection/checkbox_input.rb", "lib/case_form/element/inputs/collection/radio_input.rb", "lib/case_form/element/inputs/collection/select_input.rb", "lib/case_form/element/inputs/collection_input.rb", "lib/case_form/element/inputs/datetime/date_input.rb", "lib/case_form/element/inputs/datetime/date_time_input.rb", "lib/case_form/element/inputs/datetime/time_input.rb", "lib/case_form/element/inputs/datetime/time_zone_input.rb", "lib/case_form/element/inputs/file_input.rb", "lib/case_form/element/inputs/hidden_input.rb", "lib/case_form/element/inputs/number_input.rb", "lib/case_form/element/inputs/search_input.rb", "lib/case_form/element/inputs/string_input.rb", "lib/case_form/element/inputs/text_input.rb", "lib/case_form/element/label.rb", "lib/case_form/element/nested_model.rb", "lib/case_form/element/nested_models/handle.rb", "lib/case_form/element/nested_models/handles/destructor_handle.rb", "lib/case_form/element/nested_models/handles/generator_handle.rb", "lib/case_form/element_ext/associationable.rb", "lib/case_form/element_ext/columnable.rb", "lib/case_form/element_ext/naming.rb", "lib/case_form/element_ext/validationable.rb", "lib/case_form/errors.rb", "lib/case_form/form_builder.rb", "lib/case_form/inputs.rb", "lib/case_form/labels.rb", "lib/case_form/version.rb", "lib/generators/case_form/install_generator.rb", "lib/generators/case_form/templates/case_form.rb", "lib/generators/case_form/templates/javascripts/jquery.case_form.js", "lib/generators/case_form/templates/javascripts/prototype.case_form.js", "lib/generators/case_form/templates/locales/en.yml", "lib/generators/case_form/templates/locales/pl.yml", "lib/generators/case_form/templates/stylesheets/stylesheet.css", "lib/generators/case_form/templates/stylesheets/stylesheet_changes.css", "lib/generators/case_form/uninstall_generator.rb"]
         | 
| 13 | 
            +
              s.files = ["CHANGELOG.rdoc", "MIT-LICENSE.rdoc", "Manifest", "README.rdoc", "Rakefile", "TODO.rdoc", "lib/case_form.rb", "lib/case_form/associations.rb", "lib/case_form/buttons.rb", "lib/case_form/core_ext/form_helper.rb", "lib/case_form/core_ext/layout_helper.rb", "lib/case_form/core_ext/sentence_error.rb", "lib/case_form/element.rb", "lib/case_form/element/base.rb", "lib/case_form/element/button.rb", "lib/case_form/element/error.rb", "lib/case_form/element/errors/complex_error.rb", "lib/case_form/element/errors/simple_error.rb", "lib/case_form/element/fieldset.rb", "lib/case_form/element/hint.rb", "lib/case_form/element/input.rb", "lib/case_form/element/inputs/collection/checkbox_input.rb", "lib/case_form/element/inputs/collection/radio_input.rb", "lib/case_form/element/inputs/collection/select_input.rb", "lib/case_form/element/inputs/collection_input.rb", "lib/case_form/element/inputs/datetime/date_input.rb", "lib/case_form/element/inputs/datetime/date_time_input.rb", "lib/case_form/element/inputs/datetime/time_input.rb", "lib/case_form/element/inputs/datetime/time_zone_input.rb", "lib/case_form/element/inputs/file_input.rb", "lib/case_form/element/inputs/hidden_input.rb", "lib/case_form/element/inputs/number_input.rb", "lib/case_form/element/inputs/search_input.rb", "lib/case_form/element/inputs/string_input.rb", "lib/case_form/element/inputs/text_input.rb", "lib/case_form/element/label.rb", "lib/case_form/element/nested_model.rb", "lib/case_form/element/nested_models/handle.rb", "lib/case_form/element/nested_models/handles/destructor_handle.rb", "lib/case_form/element/nested_models/handles/generator_handle.rb", "lib/case_form/element_ext/associationable.rb", "lib/case_form/element_ext/columnable.rb", "lib/case_form/element_ext/naming.rb", "lib/case_form/element_ext/validationable.rb", "lib/case_form/errors.rb", "lib/case_form/form_builder.rb", "lib/case_form/inputs.rb", "lib/case_form/labels.rb", "lib/case_form/version.rb", "lib/generators/case_form/install_generator.rb", "lib/generators/case_form/templates/case_form.rb", "lib/generators/case_form/templates/javascripts/jquery.case_form.js", "lib/generators/case_form/templates/javascripts/prototype.case_form.js", "lib/generators/case_form/templates/locales/en.yml", "lib/generators/case_form/templates/locales/pl.yml", "lib/generators/case_form/templates/stylesheets/stylesheet.css", "lib/generators/case_form/templates/stylesheets/stylesheet_changes.css", "lib/generators/case_form/uninstall_generator.rb", "rails/init.rb", "test/element/button_test.rb", "test/element/errors/complex_error_test.rb", "test/element/errors/simple_error_test.rb", "test/element/fieldset_test.rb", "test/element/hint_test.rb", "test/element/input_test.rb", "test/element/inputs/collection/checkbox_input_test.rb", "test/element/inputs/collection/radio_input_test.rb", "test/element/inputs/collection/select_input_test.rb", "test/element/inputs/datetime/date_input_test.rb", "test/element/inputs/datetime/datetime_input_test.rb", "test/element/inputs/datetime/time_input_test.rb", "test/element/inputs/datetime/time_zone_input_test.rb", "test/element/inputs/file_input_test.rb", "test/element/inputs/hidden_input_test.rb", "test/element/inputs/number_input_test.rb", "test/element/inputs/search_input_test.rb", "test/element/inputs/string_input_test.rb", "test/element/inputs/text_input_test.rb", "test/element/label_test.rb", "test/element/nested_model_test.rb", "test/element/nested_models/handles/destructor_handle_test.rb", "test/element/nested_models/handles/generator_handle_test.rb", "test/form_builder_test.rb", "test/form_helper_test.rb", "test/lib/models.rb", "test/test_helper.rb", "case_form.gemspec"]
         | 
| 14 | 
            +
              s.homepage = %q{}
         | 
| 15 | 
            +
              s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Case_form", "--main", "README.rdoc"]
         | 
| 16 | 
            +
              s.require_paths = ["lib"]
         | 
| 17 | 
            +
              s.rubyforge_project = %q{case_form}
         | 
| 18 | 
            +
              s.rubygems_version = %q{1.3.7}
         | 
| 19 | 
            +
              s.summary = %q{}
         | 
| 20 | 
            +
              s.test_files = ["test/element/button_test.rb", "test/element/errors/complex_error_test.rb", "test/element/errors/simple_error_test.rb", "test/element/fieldset_test.rb", "test/element/hint_test.rb", "test/element/input_test.rb", "test/element/inputs/collection/checkbox_input_test.rb", "test/element/inputs/collection/radio_input_test.rb", "test/element/inputs/collection/select_input_test.rb", "test/element/inputs/datetime/date_input_test.rb", "test/element/inputs/datetime/datetime_input_test.rb", "test/element/inputs/datetime/time_input_test.rb", "test/element/inputs/datetime/time_zone_input_test.rb", "test/element/inputs/file_input_test.rb", "test/element/inputs/hidden_input_test.rb", "test/element/inputs/number_input_test.rb", "test/element/inputs/search_input_test.rb", "test/element/inputs/string_input_test.rb", "test/element/inputs/text_input_test.rb", "test/element/label_test.rb", "test/element/nested_model_test.rb", "test/element/nested_models/handles/destructor_handle_test.rb", "test/element/nested_models/handles/generator_handle_test.rb", "test/form_builder_test.rb", "test/form_helper_test.rb", "test/test_helper.rb"]
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              if s.respond_to? :specification_version then
         | 
| 23 | 
            +
                current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
         | 
| 24 | 
            +
                s.specification_version = 3
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
         | 
| 27 | 
            +
                else
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              else
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
            end
         | 
    
        data/lib/case_form.rb
    ADDED
    
    | @@ -0,0 +1,88 @@ | |
| 1 | 
            +
            # coding: utf-8
         | 
| 2 | 
            +
            require 'action_view'
         | 
| 3 | 
            +
            require 'case_form/core_ext/sentence_error'
         | 
| 4 | 
            +
            require 'case_form/core_ext/form_helper'
         | 
| 5 | 
            +
            require 'case_form/core_ext/layout_helper'
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            module CaseForm
         | 
| 8 | 
            +
              autoload :FormBuilder,  'case_form/form_builder'
         | 
| 9 | 
            +
              autoload :Element,      'case_form/element'
         | 
| 10 | 
            +
              autoload :Inputs,       'case_form/inputs'
         | 
| 11 | 
            +
              autoload :Associations, 'case_form/associations'
         | 
| 12 | 
            +
              autoload :Buttons,      'case_form/buttons'
         | 
| 13 | 
            +
              autoload :Labels,       'case_form/labels'
         | 
| 14 | 
            +
              autoload :Errors,       'case_form/errors'
         | 
| 15 | 
            +
              
         | 
| 16 | 
            +
              def self.config
         | 
| 17 | 
            +
                yield self
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
              
         | 
| 20 | 
            +
              mattr_accessor :input_elements
         | 
| 21 | 
            +
              @@input_elements = [:label, :input, :error, :hint]
         | 
| 22 | 
            +
              
         | 
| 23 | 
            +
              mattr_accessor :nested_model_elements
         | 
| 24 | 
            +
              @@nested_model_elements = [:nested_model, :destructor, :generator]
         | 
| 25 | 
            +
              
         | 
| 26 | 
            +
              mattr_accessor :form_buttons
         | 
| 27 | 
            +
              @@form_buttons = [:commit, :reset]
         | 
| 28 | 
            +
              
         | 
| 29 | 
            +
              mattr_accessor :locked_columns
         | 
| 30 | 
            +
              @@locked_columns = [:id, :type, :lock_version, :version,
         | 
| 31 | 
            +
                                  :created_at, :updated_at, :created_on, :updated_on]
         | 
| 32 | 
            +
                                  
         | 
| 33 | 
            +
              mattr_accessor :input_types
         | 
| 34 | 
            +
              @@input_types = [:string, :text, :hidden, :password, :search, 
         | 
| 35 | 
            +
                               :email, :url, :telephone, :file,
         | 
| 36 | 
            +
                               :datetime, :date, :time, :number, :range,
         | 
| 37 | 
            +
                               :checkbox, :radio, :select,
         | 
| 38 | 
            +
                               :association, :has_many, :has_one, :belongs_to]
         | 
| 39 | 
            +
              
         | 
| 40 | 
            +
              mattr_accessor :require_symbol
         | 
| 41 | 
            +
              @@require_symbol = "*"
         | 
| 42 | 
            +
              
         | 
| 43 | 
            +
              mattr_accessor :all_fields_required
         | 
| 44 | 
            +
              @@all_fields_required = false
         | 
| 45 | 
            +
              
         | 
| 46 | 
            +
              mattr_accessor :input_size
         | 
| 47 | 
            +
              @@input_size = 50
         | 
| 48 | 
            +
              
         | 
| 49 | 
            +
              mattr_accessor :textarea_cols
         | 
| 50 | 
            +
              @@textarea_cols = 20
         | 
| 51 | 
            +
              
         | 
| 52 | 
            +
              mattr_accessor :textarea_rows
         | 
| 53 | 
            +
              @@textarea_rows = 10
         | 
| 54 | 
            +
              
         | 
| 55 | 
            +
              mattr_accessor :number_step
         | 
| 56 | 
            +
              @@number_step = 1
         | 
| 57 | 
            +
              
         | 
| 58 | 
            +
              mattr_accessor :wrapper_tag
         | 
| 59 | 
            +
              @@wrapper_tag = :div
         | 
| 60 | 
            +
              
         | 
| 61 | 
            +
              mattr_accessor :hint_tag
         | 
| 62 | 
            +
              @@hint_tag = :span
         | 
| 63 | 
            +
              
         | 
| 64 | 
            +
              mattr_accessor :error_tag
         | 
| 65 | 
            +
              @@error_tag = :div
         | 
| 66 | 
            +
              
         | 
| 67 | 
            +
              # :sentence, :list
         | 
| 68 | 
            +
              mattr_accessor :error_type
         | 
| 69 | 
            +
              @@error_type = :sentence
         | 
| 70 | 
            +
              
         | 
| 71 | 
            +
              mattr_accessor :error_connector
         | 
| 72 | 
            +
              @@error_connector = ", "
         | 
| 73 | 
            +
              
         | 
| 74 | 
            +
              mattr_accessor :last_error_connector
         | 
| 75 | 
            +
              @@last_error_connector = " and "
         | 
| 76 | 
            +
              
         | 
| 77 | 
            +
              mattr_accessor :complex_error_header_tag
         | 
| 78 | 
            +
              @@complex_error_header_tag = :h2
         | 
| 79 | 
            +
              
         | 
| 80 | 
            +
              mattr_accessor :complex_error_message_tag
         | 
| 81 | 
            +
              @@complex_error_message_tag = :p
         | 
| 82 | 
            +
              
         | 
| 83 | 
            +
              mattr_accessor :collection_label_methods
         | 
| 84 | 
            +
              @@collection_label_methods = [:to_label, :full_name, :fullname, :name, :title, :login, :email, :value, :to_s]
         | 
| 85 | 
            +
              
         | 
| 86 | 
            +
              mattr_accessor :collection_value_methods
         | 
| 87 | 
            +
              @@collection_value_methods = [:id]
         | 
| 88 | 
            +
            end
         | 
| @@ -0,0 +1,50 @@ | |
| 1 | 
            +
            # coding: utf-8
         | 
| 2 | 
            +
            module CaseForm
         | 
| 3 | 
            +
              module Associations
         | 
| 4 | 
            +
                def association(method, *args, &block)
         | 
| 5 | 
            +
                  association = object.class.reflect_on_association(method)
         | 
| 6 | 
            +
                  raise(ArgumentError, "Association :#{method} not found in #{object.class} model") unless association
         | 
| 7 | 
            +
                  
         | 
| 8 | 
            +
                  options = args.extract_options!
         | 
| 9 | 
            +
                  
         | 
| 10 | 
            +
                  if options.has_key?(:as) && association.macro != :has_one
         | 
| 11 | 
            +
                    type, input_types = options.delete(:as), [:checkbox, :radio, :select]
         | 
| 12 | 
            +
                    raise(ArgumentError, "Unknown input type: #{type}. Available types: #{input_types.join(', ')}") unless input_types.include?(type.to_sym)
         | 
| 13 | 
            +
                    send(type, method, options)
         | 
| 14 | 
            +
                  elsif block_given? || object.respond_to?("#{method}_attributes=")
         | 
| 15 | 
            +
                    Element::NestedModel.new(self, method, options, &block).generate
         | 
| 16 | 
            +
                  else
         | 
| 17 | 
            +
                    specified_association(method, options)
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
                alias_method :belongs_to, :association
         | 
| 21 | 
            +
                alias_method :has_one, :association
         | 
| 22 | 
            +
                alias_method :has_many, :association
         | 
| 23 | 
            +
                alias_method :habtm, :association
         | 
| 24 | 
            +
                
         | 
| 25 | 
            +
                def new_object(method, options={})
         | 
| 26 | 
            +
                  Element::GeneratorHandle.new(self, method, options).generate
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
                
         | 
| 29 | 
            +
                def destroy_object(options={})
         | 
| 30 | 
            +
                  Element::DestructorHandle.new(self, options).generate
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
                
         | 
| 33 | 
            +
                def case_fields_for(record_or_name_or_array, *args, &block)
         | 
| 34 | 
            +
                  options = args.extract_options!
         | 
| 35 | 
            +
                  options[:builder] = CaseForm::FormBuilder
         | 
| 36 | 
            +
                  fields_for(record_or_name_or_array, *(args << options), &block)
         | 
| 37 | 
            +
                end
         | 
| 38 | 
            +
                
         | 
| 39 | 
            +
                private
         | 
| 40 | 
            +
                  def specified_association(method, options)
         | 
| 41 | 
            +
                    input = case object.class.reflect_on_association(method.to_sym).macro
         | 
| 42 | 
            +
                    when :belongs_to then :select
         | 
| 43 | 
            +
                    when :has_many   then :checkbox
         | 
| 44 | 
            +
                    else
         | 
| 45 | 
            +
                      raise(ArgumentError, ":has_one association is supported only with nested attributes!")
         | 
| 46 | 
            +
                    end
         | 
| 47 | 
            +
                    send(input, method, options)
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
            end
         | 
| @@ -0,0 +1,175 @@ | |
| 1 | 
            +
            # coding: utf-8
         | 
| 2 | 
            +
            module CaseForm
         | 
| 3 | 
            +
              module Buttons
         | 
| 4 | 
            +
                # == Buttons with or without block
         | 
| 5 | 
            +
                # 
         | 
| 6 | 
            +
                # With no arguments it creates fieldset with buttons defined in CaseForm config 
         | 
| 7 | 
            +
                # (by default :submit and :reset button). Also can create buttons determined in
         | 
| 8 | 
            +
                # arguments.
         | 
| 9 | 
            +
                #
         | 
| 10 | 
            +
                # == Examples:
         | 
| 11 | 
            +
                #
         | 
| 12 | 
            +
                #   # Create buttons defined in CaseForm config
         | 
| 13 | 
            +
                #
         | 
| 14 | 
            +
                #   <%= case_form_for(@user) do |f| %>
         | 
| 15 | 
            +
                #     <%= f.buttons %>
         | 
| 16 | 
            +
                #   <% end %>
         | 
| 17 | 
            +
                #
         | 
| 18 | 
            +
                #   <fieldset class="fieldset">
         | 
| 19 | 
            +
                #     <div class="buttons">
         | 
| 20 | 
            +
                #       <input name="submit" type="submit" value="Create" />
         | 
| 21 | 
            +
                #     </div>
         | 
| 22 | 
            +
                #     <div class="buttons">
         | 
| 23 | 
            +
                #       <input name="reset" type="reset" value="Reset" />
         | 
| 24 | 
            +
                #     </div>
         | 
| 25 | 
            +
                #   </fieldset>
         | 
| 26 | 
            +
                #   
         | 
| 27 | 
            +
                #   # or create buttons defined in arguments
         | 
| 28 | 
            +
                #
         | 
| 29 | 
            +
                #   <%= case_form_for(@user) do |f| %>
         | 
| 30 | 
            +
                #     <%= f.buttons(:commit) %>
         | 
| 31 | 
            +
                #   <% end %>
         | 
| 32 | 
            +
                #
         | 
| 33 | 
            +
                #   <fieldset class="fieldset">
         | 
| 34 | 
            +
                #     <div class="buttons">
         | 
| 35 | 
            +
                #       <input name="submit" type="submit" value="Create" />
         | 
| 36 | 
            +
                #     </div>
         | 
| 37 | 
            +
                #   </fieldset>
         | 
| 38 | 
            +
                #   
         | 
| 39 | 
            +
                #   # or create buttons in block
         | 
| 40 | 
            +
                #   <%= case_form_for(@user) do |f| %>
         | 
| 41 | 
            +
                #     <%= f.buttons do %>
         | 
| 42 | 
            +
                #       <%= f.button %>
         | 
| 43 | 
            +
                #     <% end %>
         | 
| 44 | 
            +
                #   <% end %>
         | 
| 45 | 
            +
                #
         | 
| 46 | 
            +
                #   <fieldset class="fieldset">
         | 
| 47 | 
            +
                #     <div class="buttons">
         | 
| 48 | 
            +
                #       <input name="submit" type="submit" value="Create" />
         | 
| 49 | 
            +
                #     </div>
         | 
| 50 | 
            +
                #   </fieldset>
         | 
| 51 | 
            +
                #
         | 
| 52 | 
            +
                # == Default buttons config:
         | 
| 53 | 
            +
                # 
         | 
| 54 | 
            +
                # * CaseForm.form_buttons
         | 
| 55 | 
            +
                # * CaseForm.wrapper_tag
         | 
| 56 | 
            +
                #
         | 
| 57 | 
            +
                # == Allowed options:
         | 
| 58 | 
            +
                # * +:id+ - HTML ID
         | 
| 59 | 
            +
                # * +:class+ - HTML class
         | 
| 60 | 
            +
                # * +:style+ - not recommended HTML styles (use CSS)
         | 
| 61 | 
            +
                # * +:text+ - legend for fieldset
         | 
| 62 | 
            +
                # For more advanced options for each button use block.
         | 
| 63 | 
            +
                #
         | 
| 64 | 
            +
                def buttons(*args, &block)
         | 
| 65 | 
            +
                  options = args.extract_options!
         | 
| 66 | 
            +
                  options[:class] ||= :buttons
         | 
| 67 | 
            +
                  
         | 
| 68 | 
            +
                  fieldset = Element::Fieldset.new(self, options)
         | 
| 69 | 
            +
                  
         | 
| 70 | 
            +
                  if block_given?
         | 
| 71 | 
            +
                    fieldset.generate(&block)
         | 
| 72 | 
            +
                  else
         | 
| 73 | 
            +
                    args = CaseForm.form_buttons if args.empty?
         | 
| 74 | 
            +
                    fieldset.generate(args.collect { |button| send(button) })
         | 
| 75 | 
            +
                  end
         | 
| 76 | 
            +
                end
         | 
| 77 | 
            +
                
         | 
| 78 | 
            +
                # == Submit button
         | 
| 79 | 
            +
                #
         | 
| 80 | 
            +
                # Creates a basic form submit button.
         | 
| 81 | 
            +
                # 
         | 
| 82 | 
            +
                # == Examples:
         | 
| 83 | 
            +
                #
         | 
| 84 | 
            +
                #   # Generate only button
         | 
| 85 | 
            +
                #
         | 
| 86 | 
            +
                #   <%= case_form_for(@user) do |f| %>
         | 
| 87 | 
            +
                #     <%= f.button
         | 
| 88 | 
            +
                #   <% end %>
         | 
| 89 | 
            +
                #
         | 
| 90 | 
            +
                #   <div class="buttons">
         | 
| 91 | 
            +
                #     <input name="submit" type="submit" value="Create" />
         | 
| 92 | 
            +
                #   </div>
         | 
| 93 | 
            +
                #
         | 
| 94 | 
            +
                #   # or in buttons block
         | 
| 95 | 
            +
                # 
         | 
| 96 | 
            +
                #   <%= case_form_for(@user) do |f| %>
         | 
| 97 | 
            +
                #     <%= f.buttons do %>
         | 
| 98 | 
            +
                #       <%= f.button %>
         | 
| 99 | 
            +
                #     <% end %>
         | 
| 100 | 
            +
                #   <% end %>
         | 
| 101 | 
            +
                #
         | 
| 102 | 
            +
                #   <div class="fieldset">
         | 
| 103 | 
            +
                #     <div class="buttons">
         | 
| 104 | 
            +
                #       <input name="submit" type="submit" value="Create" />
         | 
| 105 | 
            +
                #     </div>
         | 
| 106 | 
            +
                #   </div>
         | 
| 107 | 
            +
                # 
         | 
| 108 | 
            +
                # == Allowed options:
         | 
| 109 | 
            +
                # * +:id+ - HTML ID
         | 
| 110 | 
            +
                # * +:class+ - HTML class
         | 
| 111 | 
            +
                # * +:style+ - not recommended HTML styles (use CSS)
         | 
| 112 | 
            +
                # * +:text+ - text on button
         | 
| 113 | 
            +
                # * +:disabled+ - disabled button
         | 
| 114 | 
            +
                # * +:as+ - button type (supported values: :submit and :reset)
         | 
| 115 | 
            +
                #
         | 
| 116 | 
            +
                # == I18n lookups priority:
         | 
| 117 | 
            +
                #
         | 
| 118 | 
            +
                # * 'case_form.buttons.{{model}}.{{button_type}}'
         | 
| 119 | 
            +
                # * 'case_form.buttons.{{button_type}}'
         | 
| 120 | 
            +
                # * Create || Update
         | 
| 121 | 
            +
                #
         | 
| 122 | 
            +
                def button(options={})
         | 
| 123 | 
            +
                  Element::Button.new(self, options.merge(:as => :submit)).generate
         | 
| 124 | 
            +
                end
         | 
| 125 | 
            +
                alias_method :commit, :button
         | 
| 126 | 
            +
                
         | 
| 127 | 
            +
                # == Reset button
         | 
| 128 | 
            +
                #
         | 
| 129 | 
            +
                # Creates a new reset button for forms (support for HTML5).
         | 
| 130 | 
            +
                #
         | 
| 131 | 
            +
                # == Examples:
         | 
| 132 | 
            +
                #
         | 
| 133 | 
            +
                #   # Generate only button
         | 
| 134 | 
            +
                #
         | 
| 135 | 
            +
                #   <%= case_form_for(@user) do |f| %>
         | 
| 136 | 
            +
                #     <%= f.reset
         | 
| 137 | 
            +
                #   <% end %>
         | 
| 138 | 
            +
                #
         | 
| 139 | 
            +
                #   <div class="buttons">
         | 
| 140 | 
            +
                #     <input name="reset" type="reset" value="Reset" />
         | 
| 141 | 
            +
                #   </div>
         | 
| 142 | 
            +
                #
         | 
| 143 | 
            +
                #   # or in buttons block
         | 
| 144 | 
            +
                # 
         | 
| 145 | 
            +
                #   <%= case_form_for(@user) do |f| %>
         | 
| 146 | 
            +
                #     <%= f.buttons do %>
         | 
| 147 | 
            +
                #       <%= f.reset %>
         | 
| 148 | 
            +
                #     <% end %>
         | 
| 149 | 
            +
                #   <% end %>
         | 
| 150 | 
            +
                #
         | 
| 151 | 
            +
                #   <div class="fieldset">
         | 
| 152 | 
            +
                #     <div class="buttons">
         | 
| 153 | 
            +
                #       <input name="reset" type="reset" value="Reset" />
         | 
| 154 | 
            +
                #     </div>
         | 
| 155 | 
            +
                #   </div>
         | 
| 156 | 
            +
                #
         | 
| 157 | 
            +
                # == Allowed options:
         | 
| 158 | 
            +
                # * +:id+ - HTML ID
         | 
| 159 | 
            +
                # * +:class+ - HTML class
         | 
| 160 | 
            +
                # * +:style+ - not recommended HTML styles (use CSS)
         | 
| 161 | 
            +
                # * +:text+ - text on button
         | 
| 162 | 
            +
                # * +:disabled+ - disabled button
         | 
| 163 | 
            +
                # * +:as+ - button type (supported values: :submit and :reset)
         | 
| 164 | 
            +
                #
         | 
| 165 | 
            +
                # == I18n lookups priority:
         | 
| 166 | 
            +
                #
         | 
| 167 | 
            +
                # * 'case_form.buttons.{{model}}.{{button_type}}'
         | 
| 168 | 
            +
                # * 'case_form.buttons.{{button_type}}'
         | 
| 169 | 
            +
                # * Reset
         | 
| 170 | 
            +
                #
         | 
| 171 | 
            +
                def reset(options={})
         | 
| 172 | 
            +
                  Element::Button.new(self, options.merge(:as => :reset)).generate
         | 
| 173 | 
            +
                end
         | 
| 174 | 
            +
              end
         | 
| 175 | 
            +
            end
         |