simple_captcha2 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 82daa59541bc47e50ecfb13d95b1672d953b0b79
4
- data.tar.gz: 217de8368d88deb6720440ee8a69124ddbbcef83
3
+ metadata.gz: f7e289c77c2ba483a5f6a97578cc107ce7b6429d
4
+ data.tar.gz: e9bbd53602642e958644e2daeefaca5f260cab40
5
5
  SHA512:
6
- metadata.gz: 0885a9d47688ebeb81930e1cb7716ad3c7aa3c453f67c067961985f05b232ee8b53c930709899c340ec3c172d921388cdd93410aafbdfaaa155db5f1fac57cba
7
- data.tar.gz: f293939ccb2a80ce257ea200ed711fcfbbfd13bd5ed2cf526136d23b25187ac63a86a7b439b228140cbe13e2fac15845539c3dcec846901dde1b7887b7194d89
6
+ metadata.gz: 5da26157f9f1dbc8df22fed158939865e01b813e94506dda4ee329359fd5bee28f64c5e576b7c13604a582fa09e43884dd7550330f224f761165cf936d4c30c2
7
+ data.tar.gz: 2e5330b6f248b00862c1eb36c4c6568ff743ced1e42f2ed8ba020300db067b1a8bad39926808e694b369314f6de16b4ac663e7108e9c6f97311a072c8224e424
@@ -63,6 +63,12 @@ module SimpleCaptcha
63
63
  mattr_accessor :noise
64
64
  @@noise = 0
65
65
 
66
+ mattr_accessor :extra_response_headers
67
+ @@extra_response_headers = {}
68
+
69
+ mattr_accessor :partial_path
70
+ @@partial_path = 'simple_captcha/simple_captcha'
71
+
66
72
  def self.add_image_style(name, params = [])
67
73
  SimpleCaptcha::ImageHelpers.image_styles.update(name.to_s => params)
68
74
  end
@@ -36,7 +36,7 @@ module SimpleCaptcha
36
36
  html[:placeholder] = options[:placeholder] || I18n.t('simple_captcha.placeholder')
37
37
 
38
38
  text_field(:captcha, html) +
39
- hidden_field(:captcha_key, {:value => options[:field_value]})
39
+ hidden_field(:captcha_key, {:value => options[:field_value], :id => simple_captch_hidden_field_id(options)})
40
40
  end
41
41
  end
42
42
  end
@@ -79,12 +79,13 @@ module SimpleCaptcha
79
79
 
80
80
  status = 200
81
81
  id = request.params['id']
82
+ captcha_hidden_field_id = simple_captch_hidden_field_id(id)
82
83
 
83
84
  body = %Q{
84
85
  $("##{id}").attr('src', '#{url}');
85
- $("#captcha_key").attr('value', '#{key}');
86
+ $("##{ captcha_hidden_field_id }").attr('value', '#{key}');
86
87
  }
87
- headers = {'Content-Type' => 'text/javascript; charset=utf-8', "Content-Disposition" => "inline; filename='captcha.js'", "Content-Length" => body.length.to_s}
88
+ headers = {'Content-Type' => 'text/javascript; charset=utf-8', "Content-Disposition" => "inline; filename='captcha.js'", "Content-Length" => body.length.to_s}.merge(SimpleCaptcha.extra_response_headers)
88
89
  [status, headers, [body]]
89
90
  end
90
91
  end
@@ -29,7 +29,7 @@ module SimpleCaptcha #:nodoc
29
29
  end
30
30
 
31
31
  def self.generate_key(*args)
32
- args << Time.now.to_s
32
+ args << (Time.now.to_f * 1_000_000_000).to_s
33
33
  Digest::SHA1.hexdigest(args.join)
34
34
  end
35
35
  end
@@ -1,3 +1,3 @@
1
1
  module SimpleCaptcha
2
- VERSION = "0.3.3".freeze
2
+ VERSION = "0.3.4".freeze
3
3
  end
@@ -42,7 +42,11 @@ module SimpleCaptcha #:nodoc
42
42
  # Find more detailed examples with sample images here on my blog http://EXPRESSICA.com
43
43
  #
44
44
  # All Feedbacks/CommentS/Issues/Queries are welcome.
45
- def show_simple_captcha(options={})
45
+ def show_simple_captcha(options = {})
46
+ render :partial => SimpleCaptcha.partial_path, :locals => { :simple_captcha_options => simple_captcha_options(options) }
47
+ end
48
+
49
+ def simple_captcha_options(options = {})
46
50
  key = simple_captcha_key(options[:object])
47
51
  if options[:multiple] === false
48
52
  # It's not the first captcha, we only need to return the key
@@ -58,8 +62,6 @@ module SimpleCaptcha #:nodoc
58
62
  :field => simple_captcha_field(options),
59
63
  :refresh_button => simple_captcha_refresh_button(options),
60
64
  }.merge(options)
61
-
62
- render :partial => 'simple_captcha/simple_captcha', :locals => { :simple_captcha_options => defaults }
63
65
  end
64
66
 
65
67
  private
@@ -76,6 +78,10 @@ module SimpleCaptcha #:nodoc
76
78
 
77
79
  query = defaults.to_query
78
80
  path = "/simple_captcha?code=#{simple_captcha_key}&#{query}"
81
+ build_url(options, path)
82
+ end
83
+
84
+ def build_url(options, path)
79
85
  if defined?(request) && request
80
86
  "#{request.protocol}#{request.host_with_port}#{ENV['RAILS_RELATIVE_URL_ROOT']}#{path}"
81
87
  else
@@ -90,10 +96,10 @@ module SimpleCaptcha #:nodoc
90
96
 
91
97
  if options[:object]
92
98
  text_field(options[:object], :captcha, html.merge(:value => '')) +
93
- hidden_field(options[:object], :captcha_key, {:value => options[:field_value]})
99
+ hidden_field(options[:object], :captcha_key, {:value => options[:field_value], :id => simple_captch_hidden_field_id(options)})
94
100
  else
95
101
  text_field_tag(:captcha, nil, html) +
96
- hidden_field_tag(:captcha_key, options[:field_value])
102
+ hidden_field_tag(:captcha_key, options[:field_value], :id => simple_captch_hidden_field_id(options))
97
103
  end
98
104
  end
99
105
 
@@ -103,13 +109,19 @@ module SimpleCaptcha #:nodoc
103
109
 
104
110
  text = options[:refresh_button_text] || I18n.t('simple_captcha.refresh_button_text', default: 'Refresh')
105
111
 
106
- link_to(text, "#{ENV['RAILS_RELATIVE_URL_ROOT']}/simple_captcha?id=#{simple_captcha_image_id(options)}", html)
112
+ url = build_url(options, "/simple_captcha?id=#{simple_captcha_image_id(options)}")
113
+ link_to(text, url, html)
107
114
  end
108
115
 
109
116
  def simple_captcha_image_id(options={})
110
117
  "simple_captcha-#{options[:field_value][0..10]}"
111
118
  end
112
119
 
120
+ def simple_captch_hidden_field_id(image_id)
121
+ image_id = simple_captcha_image_id(image_id) if image_id.is_a?(Hash)
122
+ "simple-captcha-hidden-field-#{ image_id }"
123
+ end
124
+
113
125
  def set_simple_captcha_data(key, options={})
114
126
  code_type = options[:code_type]
115
127
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_captcha2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavlo Galeta
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-01-28 00:00:00.000000000 Z
13
+ date: 2015-02-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails