green_light 0.0.3 → 0.1.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/.DS_Store +0 -0
- data/Gemfile +17 -4
- data/README.rdoc +12 -11
- data/app/.DS_Store +0 -0
- data/app/assets/javascripts/green_light.js.erb +23 -0
- data/app/controllers/javascripts_controller.rb +1 -13
- data/config/routes.rb +1 -1
- data/lib/.DS_Store +0 -0
- data/lib/generators/green_light/USAGE +0 -0
- data/lib/generators/green_light/install_generator.rb +20 -0
- data/lib/generators/green_light/templates/green_light.rb +2 -0
- data/lib/generators/green_light/templates/green_light.yml +1 -0
- data/lib/green_light/.DS_Store +0 -0
- data/lib/green_light/rules.rb +1 -1
- data/lib/green_light/version.rb +1 -1
- data/spec/green_light_spec.rb +5 -5
- data/vendor/.DS_Store +0 -0
- data/vendor/assets/.DS_Store +0 -0
- data/vendor/assets/javascripts/jquery.validate.js +1166 -0
- metadata +16 -8
- data/app/views/javascripts/green_light.js.erb +0 -3
- data/lib/rails/generators/green_light_assets/USAGE +0 -8
- data/lib/rails/generators/green_light_assets/green_light_assets_generator.rb +0 -23
- data/lib/rails/generators/green_light_assets/templates/jquery.validate_regex.js +0 -9
data/.DS_Store
ADDED
Binary file
|
data/Gemfile
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
source 'http://rubygems.org'
|
2
|
-
gem 'rails'
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
gem 'rails',"3.1.0.rc5"
|
3
|
+
|
4
|
+
# Gems used only for assets and not required
|
5
|
+
# in production environments by default.
|
6
|
+
group :assets do
|
7
|
+
gem 'sass-rails', "~> 3.1.0.rc"
|
8
|
+
gem 'coffee-rails', "~> 3.1.0.rc"
|
9
|
+
gem 'uglifier'
|
10
|
+
end
|
11
|
+
|
12
|
+
gem 'jquery-rails'
|
13
|
+
|
14
|
+
group :test do
|
15
|
+
gem "activerecord", :require => "active_record"
|
16
|
+
gem 'rspec'
|
17
|
+
gem 'supermodel'
|
18
|
+
end
|
data/README.rdoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= green_light
|
2
2
|
|
3
|
-
Provides client side validation
|
3
|
+
Provides client side validation, with the help of the {jquery validation plugin}[http://bassistance.de/jquery-plugins/jquery-plugin-validation/], while keeping validation in the model, where it belongs.
|
4
4
|
|
5
5
|
|
6
6
|
== Installation
|
@@ -13,19 +13,18 @@ Add green_light to your Gemfile and run the bundle install command.
|
|
13
13
|
|
14
14
|
== Usage
|
15
15
|
|
16
|
-
|
16
|
+
Generate the required green_light configuration:-
|
17
17
|
|
18
|
-
rails g
|
18
|
+
rails g green_light:install
|
19
19
|
|
20
|
-
|
20
|
+
Include the JQuery validation plugin and green_light javascript in your application.js file:-
|
21
21
|
|
22
|
-
|
22
|
+
//= require jquery.validate
|
23
|
+
//= require green_light
|
23
24
|
|
24
|
-
|
25
|
-
|
26
|
-
<%= javascript_include_tag 'jquery.validate_regex', 'green_light' %>
|
25
|
+
Specify which models you want to have client-side validation in the config/green_light.yml file e.g.:-
|
27
26
|
|
28
|
-
|
27
|
+
validate_models: ['ModelName1', 'ModelName2']
|
29
28
|
|
30
29
|
Add the <tt>green_light</tt> class to the forms that you wish to have client side validation:-
|
31
30
|
|
@@ -42,10 +41,12 @@ And finally, add some validations to your models!
|
|
42
41
|
validates_uniqueness_of
|
43
42
|
validates_numericality_of
|
44
43
|
|
44
|
+
For validations that are not yet supported, the gem will degrade gracefully to the standard Rails server-side validation.
|
45
|
+
|
45
46
|
|
46
|
-
==
|
47
|
+
== Legecy Rails 3 Support
|
47
48
|
|
48
|
-
|
49
|
+
For Rails 3 support use the older version (0.0.3) of green_light
|
49
50
|
|
50
51
|
|
51
52
|
== Running the Tests
|
data/app/.DS_Store
ADDED
Binary file
|
@@ -0,0 +1,23 @@
|
|
1
|
+
/**
|
2
|
+
* Build validation rules based on models specified in the green_light config
|
3
|
+
*/
|
4
|
+
<% unless GREEN_LIGHT[:validate_models].empty? %>
|
5
|
+
<% @rules = GreenLight::Rules.generate(GREEN_LIGHT[:validate_models]) %>
|
6
|
+
$().ready(function() {
|
7
|
+
$(".green_light").validate(<%= @rules.html_safe %>);
|
8
|
+
});
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
/**
|
12
|
+
* Custom code for regex validation
|
13
|
+
*/
|
14
|
+
$.validator.addMethod(
|
15
|
+
"regex",
|
16
|
+
function(value, element, regexp) {
|
17
|
+
var check = false;
|
18
|
+
var re = new RegExp(regexp);
|
19
|
+
return this.optional(element) || re.test(value);
|
20
|
+
},
|
21
|
+
"You have entered an invalid value for this field"
|
22
|
+
);
|
23
|
+
|
@@ -1,10 +1,5 @@
|
|
1
1
|
class JavascriptsController < ApplicationController
|
2
|
-
respond_to :
|
3
|
-
|
4
|
-
def green_light
|
5
|
-
@rules = GreenLight::Rules.generate(all_models)
|
6
|
-
respond_with(@rules)
|
7
|
-
end
|
2
|
+
respond_to :text
|
8
3
|
|
9
4
|
def check_for_uniqueness
|
10
5
|
record = params[:model].constantize.where("#{params[:field]} = ?", params[params[:model].downcase.underscore][params[:field]])
|
@@ -14,11 +9,4 @@ class JavascriptsController < ApplicationController
|
|
14
9
|
render :text => true
|
15
10
|
end
|
16
11
|
end
|
17
|
-
|
18
|
-
private
|
19
|
-
def all_models
|
20
|
-
tables = ActiveRecord::Base.connection.tables
|
21
|
-
tables.delete("schema_migrations")
|
22
|
-
tables.map { |table| table.camelize.singularize.constantize }
|
23
|
-
end
|
24
12
|
end
|
data/config/routes.rb
CHANGED
data/lib/.DS_Store
ADDED
Binary file
|
File without changes
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
module GreenLight
|
4
|
+
class InstallGenerator < Rails::Generators::Base
|
5
|
+
desc 'Generates config file for green_light'
|
6
|
+
|
7
|
+
def self.source_root
|
8
|
+
@source_root ||= File.join(File.dirname(__FILE__), 'templates')
|
9
|
+
end
|
10
|
+
|
11
|
+
def generate_config
|
12
|
+
copy_file "green_light.yml", "config/green_light.yml"
|
13
|
+
end
|
14
|
+
|
15
|
+
def generate_initializer
|
16
|
+
copy_file "green_light.rb", "config/initializers/green_light.rb"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
validate_models: []
|
Binary file
|
data/lib/green_light/rules.rb
CHANGED
@@ -9,7 +9,7 @@ module GreenLight
|
|
9
9
|
def self.generate(models)
|
10
10
|
data, rules = {}, {}
|
11
11
|
models.each do |model|
|
12
|
-
model._validators.each do |field_name, validations|
|
12
|
+
model.constantize._validators.each do |field_name, validations|
|
13
13
|
rules["#{model.to_s.underscore.downcase}[#{field_name}]"] = parse_each_validation(model, field_name, validations)
|
14
14
|
data[:rules] = rules
|
15
15
|
end
|
data/lib/green_light/version.rb
CHANGED
data/spec/green_light_spec.rb
CHANGED
@@ -5,27 +5,27 @@ describe GreenLight do
|
|
5
5
|
end
|
6
6
|
|
7
7
|
it "should return a valid json string when validating the format of a field" do
|
8
|
-
rules = GreenLight::Rules.generate([FormatOfModel])
|
8
|
+
rules = GreenLight::Rules.generate(['FormatOfModel'])
|
9
9
|
rules.should == "{\"errorElement\":\"span\",\"rules\":{\"format_of_model[title]\":{\"regex\":\"(^[A-Za-z]$)\"}}}"
|
10
10
|
end
|
11
11
|
|
12
12
|
it "should return a json string when validating the presence of a field" do
|
13
|
-
rules = GreenLight::Rules.generate([PresenceOfModel])
|
13
|
+
rules = GreenLight::Rules.generate(['PresenceOfModel'])
|
14
14
|
rules.should == "{\"errorElement\":\"span\",\"rules\":{\"presence_of_model[title]\":{\"required\":true}}}"
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should return a json string when validating the length of a field" do
|
18
|
-
rules = GreenLight::Rules.generate([LengthOfModel])
|
18
|
+
rules = GreenLight::Rules.generate(['LengthOfModel'])
|
19
19
|
rules.should == "{\"errorElement\":\"span\",\"rules\":{\"length_of_model[title]\":{\"maxlength\":10,\"minlength\":5}}}"
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should return a json string when validating the numericality of a field" do
|
23
|
-
rules = GreenLight::Rules.generate([NumericalityOfModel])
|
23
|
+
rules = GreenLight::Rules.generate(['NumericalityOfModel'])
|
24
24
|
rules.should == "{\"errorElement\":\"span\",\"rules\":{\"numericality_of_model[age]\":{\"regex\":\"^[0-9]*$\"}}}"
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should return a json string when validating the uniqueness of a field" do
|
28
|
-
rules = GreenLight::Rules.generate([UniquenessOfModel])
|
28
|
+
rules = GreenLight::Rules.generate(['UniquenessOfModel'])
|
29
29
|
rules.should == "{\"errorElement\":\"span\",\"rules\":{\"uniqueness_of_model[title]\":{\"remote\":\"/javascripts/check_for_uniqueness?model=UniquenessOfModel&field=title\"}}}"
|
30
30
|
end
|
31
31
|
end
|
data/vendor/.DS_Store
ADDED
Binary file
|
Binary file
|