adyen-skinbuilder 0.4.1 → 0.4.2

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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OTRmMmE1M2FiZTE2Y2E0NjJjNjhjZjgzZmUwODU3ZmFmNDk1ZTdlMg==
5
+ data.tar.gz: !binary |-
6
+ MmZhZTIxYWUwMGM2NGVkNDdkZjVmZjlkNzE3ZDRlNTVlZDIxZDQ3Yg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ MmEzMzE4ZDc1M2QzMTk2ODY0NzVlYjgwYThlMGZlN2U5MTc1NjBjMzAzZmQy
10
+ ZWE3OTFlNzIwMWE4YmU1ZjA2ODkzMTRlOGIyNTg3ZmY0YmY5YzNhMTFhNTZm
11
+ YWVkZmNiYTE5OTUzNmM5ZjZmMjY1MWZjYmE0NDhhMjE4NjM0ZGQ=
12
+ data.tar.gz: !binary |-
13
+ ODIyYmU3YmVjNjAxMWQwNzllYzAwNTEwMzIzZWE4ODIxMGNhM2I4MzkzNDg4
14
+ M2JhYTNmNmU5YWVkZjM2MTg4OTkzOWQzODI1YjAzMDkyODAwYzNmZjQ1ZDA4
15
+ NmJiZTkzYWRmNGQ4MWIwNzEwZGE5Mzg0ZjVkZGRjNjRjZTkxYmU=
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  pkg
2
2
  .adyenrc
3
3
  .rvmrc
4
+ *.zip
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour
@@ -1,5 +1,6 @@
1
1
  language: ruby
2
+ bundler_args: --deployment --without development
2
3
  rvm:
3
- - 1.8.7
4
4
  - 1.9.2
5
5
  - 1.9.3
6
+ - 2.0.0
@@ -11,7 +11,12 @@
11
11
  * auto concatinate multiple .js files
12
12
  * auto concatinate multiple .css files
13
13
  * auto build example PaymentMethod skeleton
14
- * support new CSS selectors
14
+
15
+ ## v0.4.2
16
+ * lastes adyen-admin which fixes upload
17
+ * compress includes the skincode in filename
18
+ * pass default_data to skin
19
+ * support new CSS selectors by @jigfox (https://github.com/priithaamer/adyen-skinbuilder/pull/17)
15
20
 
16
21
  ## v0.3.1
17
22
  * feature: see remote version
data/Gemfile CHANGED
@@ -1,3 +1,13 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  gemspec
4
+
5
+ group :development do
6
+ gem 'guard-rspec'
7
+ end
8
+
9
+ group :development, :test do
10
+ gem 'rake'
11
+ gem 'rspec'
12
+ gem 'rack-test'
13
+ end
@@ -1,8 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- adyen-skinbuilder (0.4.1)
4
+ adyen-skinbuilder (0.4.2)
5
5
  adyen-admin
6
+ i18n
6
7
  sinatra
7
8
  sinatra-contrib
8
9
  vegas
@@ -10,76 +11,96 @@ PATH
10
11
  GEM
11
12
  remote: http://rubygems.org/
12
13
  specs:
13
- adyen-admin (0.0.16)
14
+ adyen-admin (0.0.18)
14
15
  mechanize
15
16
  rubyzip
16
- backports (2.6.1)
17
- diff-lcs (1.1.3)
18
- domain_name (0.5.3)
19
- unf (~> 0.0.3)
20
- eventmachine (0.12.10)
21
- ffi (1.0.11)
22
- guard (1.1.1)
23
- listen (>= 0.4.2)
24
- thor (>= 0.14.6)
25
- guard-rspec (1.1.0)
26
- guard (>= 1.1)
27
- listen (0.4.5)
28
- rb-fchange (~> 0.0.5)
29
- rb-fsevent (~> 0.9.1)
30
- rb-inotify (~> 0.8.8)
31
- mechanize (2.5.1)
17
+ backports (3.3.5)
18
+ celluloid (0.15.2)
19
+ timers (~> 1.1.0)
20
+ coderay (1.1.0)
21
+ diff-lcs (1.2.5)
22
+ domain_name (0.5.15)
23
+ unf (>= 0.0.5, < 1.0.0)
24
+ ffi (1.9.3)
25
+ formatador (0.2.4)
26
+ guard (2.2.4)
27
+ formatador (>= 0.2.4)
28
+ listen (~> 2.1)
29
+ lumberjack (~> 1.0)
30
+ pry (>= 0.9.12)
31
+ thor (>= 0.18.1)
32
+ guard-rspec (4.0.4)
33
+ guard (>= 2.1.1)
34
+ rspec (~> 2.14)
35
+ http-cookie (1.0.2)
36
+ domain_name (~> 0.5)
37
+ i18n (0.6.5)
38
+ listen (2.2.0)
39
+ celluloid (>= 0.15.2)
40
+ rb-fsevent (>= 0.9.3)
41
+ rb-inotify (>= 0.9)
42
+ lumberjack (1.0.4)
43
+ mechanize (2.7.3)
32
44
  domain_name (~> 0.5, >= 0.5.1)
33
- mime-types (~> 1.17, >= 1.17.2)
45
+ http-cookie (~> 1.0)
46
+ mime-types (~> 2.0)
34
47
  net-http-digest_auth (~> 1.1, >= 1.1.1)
35
48
  net-http-persistent (~> 2.5, >= 2.5.2)
36
49
  nokogiri (~> 1.4)
37
50
  ntlm-http (~> 0.1, >= 0.1.1)
38
- webrobots (~> 0.0, >= 0.0.9)
39
- mime-types (1.18)
40
- net-http-digest_auth (1.2.1)
41
- net-http-persistent (2.7)
42
- nokogiri (1.5.4)
51
+ webrobots (>= 0.0.9, < 0.2)
52
+ method_source (0.8.2)
53
+ mime-types (2.0)
54
+ mini_portile (0.5.2)
55
+ multi_json (1.8.2)
56
+ net-http-digest_auth (1.4)
57
+ net-http-persistent (2.9)
58
+ nokogiri (1.6.0)
59
+ mini_portile (~> 0.5.0)
43
60
  ntlm-http (0.1.1)
44
- rack (1.4.1)
45
- rack-protection (1.2.0)
61
+ pry (0.9.12.3)
62
+ coderay (~> 1.0)
63
+ method_source (~> 0.8)
64
+ slop (~> 3.4)
65
+ rack (1.5.2)
66
+ rack-protection (1.5.1)
46
67
  rack
47
- rack-test (0.6.1)
68
+ rack-test (0.6.2)
48
69
  rack (>= 1.0)
49
- rake (0.9.2.2)
50
- rb-fchange (0.0.5)
51
- ffi
52
- rb-fsevent (0.9.1)
53
- rb-inotify (0.8.8)
70
+ rake (10.1.0)
71
+ rb-fsevent (0.9.3)
72
+ rb-inotify (0.9.2)
54
73
  ffi (>= 0.5.0)
55
- rspec (2.10.0)
56
- rspec-core (~> 2.10.0)
57
- rspec-expectations (~> 2.10.0)
58
- rspec-mocks (~> 2.10.0)
59
- rspec-core (2.10.1)
60
- rspec-expectations (2.10.0)
61
- diff-lcs (~> 1.1.3)
62
- rspec-mocks (2.10.1)
63
- rubyzip (0.9.9)
64
- sinatra (1.3.2)
65
- rack (~> 1.3, >= 1.3.6)
66
- rack-protection (~> 1.2)
67
- tilt (~> 1.3, >= 1.3.3)
68
- sinatra-contrib (1.3.1)
74
+ rspec (2.14.1)
75
+ rspec-core (~> 2.14.0)
76
+ rspec-expectations (~> 2.14.0)
77
+ rspec-mocks (~> 2.14.0)
78
+ rspec-core (2.14.7)
79
+ rspec-expectations (2.14.4)
80
+ diff-lcs (>= 1.1.3, < 2.0)
81
+ rspec-mocks (2.14.4)
82
+ rubyzip (1.1.0)
83
+ sinatra (1.4.4)
84
+ rack (~> 1.4)
85
+ rack-protection (~> 1.4)
86
+ tilt (~> 1.3, >= 1.3.4)
87
+ sinatra-contrib (1.4.1)
69
88
  backports (>= 2.0)
70
- eventmachine
89
+ multi_json
71
90
  rack-protection
72
91
  rack-test
73
- sinatra (~> 1.3.0)
92
+ sinatra (~> 1.4.0)
74
93
  tilt (~> 1.3)
75
- thor (0.15.3)
76
- tilt (1.3.3)
77
- unf (0.0.5)
94
+ slop (3.4.7)
95
+ thor (0.18.1)
96
+ tilt (1.4.1)
97
+ timers (1.1.0)
98
+ unf (0.1.3)
78
99
  unf_ext
79
- unf_ext (0.0.5)
100
+ unf_ext (0.0.6)
80
101
  vegas (0.1.11)
81
102
  rack (>= 1.0.0)
82
- webrobots (0.0.13)
103
+ webrobots (0.1.1)
83
104
 
84
105
  PLATFORMS
85
106
  ruby
@@ -28,7 +28,7 @@ Usually Adyen requires to split up the skin page in up to four different files.
28
28
  A most minimal file would look like:
29
29
 
30
30
  ```html
31
- <h1> exmaple skin</h1>
31
+ <h1>Example skin</h1>
32
32
 
33
33
  <% adyen_form_tag do %>
34
34
  <h3>header</h3>
@@ -60,23 +60,6 @@ Similar as in rails, Skinbuilder allows to render other files inline, e.g.:
60
60
 
61
61
  This will load and render `header.html.erb` for your skin root on top of the form.
62
62
 
63
- #### Base directory
64
-
65
- _Deprecated since Version 0.3_
66
-
67
- Another way is to create a `base` directory to provide fallback files that will be included in all skins without the need to duplicate them. Let's consider this example:
68
-
69
- +- ~/Documents
70
- +- base
71
- +- inc
72
- +- cfooter.txt
73
- +- cheader.txt
74
- +- DV3tf95f
75
- +- inc
76
- +- cheader.txt
77
-
78
- File in specific skin directory takes precedence when building skin zip file. In this example, `cheader.txt` will be bundled from skin directory `DV3tf95f/inc` but `cfooter.txt` comes from `base/inc`.
79
-
80
63
  ### Order Data
81
64
 
82
65
  Adyen let's you post order data that will be shown in shopping cart view as part of html. You can put `order_data.txt` file into `inc/` folder in the skin directory. This file will be included automatically in the same place, where adyen would put it.
@@ -16,11 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
17
  s.require_paths = ['lib']
18
18
 
19
- %w(sinatra sinatra-contrib vegas adyen-admin).each do |gem|
19
+ %w(sinatra sinatra-contrib vegas i18n adyen-admin).each do |gem|
20
20
  s.add_runtime_dependency *gem.split(' ')
21
21
  end
22
-
23
- %w(rake rspec guard-rspec rack-test).each do |gem|
24
- s.add_development_dependency *gem.split(' ')
25
- end
26
22
  end
@@ -28,4 +28,8 @@ begin
28
28
  rescue
29
29
  end
30
30
 
31
- Vegas::Runner.new(Adyen::SkinBuilder::Server, 'adyen-skinbuilder', opts)
31
+ Vegas::Runner.new(Adyen::SkinBuilder::Server, 'adyen-skinbuilder', opts) do |runner, opt, app|
32
+ opt.on('-i PATH', '--i18n PATH', 'Load i18n translations from given directory') do |path|
33
+ opts[:i18n_path] = path
34
+ end
35
+ end
@@ -1,5 +1 @@
1
1
  require 'adyen-skinbuilder/version'
2
- #require 'adyen-skinbuilder/server'
3
-
4
- # TODO: skin bundle generator
5
- # TODO: Init task to build adyen skins directory structure
@@ -8,7 +8,7 @@ module Adyen
8
8
  @_out_buf || @_buf
9
9
  end
10
10
 
11
- # capture rednered output to a string
11
+ # capture rendered output to a string
12
12
  def capture
13
13
  pos = buffer.size
14
14
  yield
@@ -16,9 +16,19 @@ module Adyen
16
16
  end
17
17
 
18
18
  # renders a file from the inc folder of the skin
19
- def render_file(file)
20
- file = File.join(@skin.path, "inc/#{file}.txt")
21
- File.read(file) if File.exists?(file)
19
+ def render_file(filename)
20
+ file = @skin.get_file("inc/#{filename}.txt")
21
+ localized_file = @skin.get_file("inc/#{filename}_#{@locale}.txt")
22
+
23
+ if File.exists?(localized_file)
24
+ File.read(localized_file)
25
+ elsif File.exists?(file)
26
+ File.read(file)
27
+ end
28
+ end
29
+
30
+ def t(*args)
31
+ I18n.t(*args)
22
32
  end
23
33
 
24
34
  # render an erb partial inline
@@ -33,6 +43,7 @@ module Adyen
33
43
  end
34
44
 
35
45
  private
46
+
36
47
  def partialize(path)
37
48
  path.to_s.split('/').tap do |path|
38
49
  path[-1] = "_#{path.last}.html.erb"
@@ -7,18 +7,25 @@ require 'adyen-skinbuilder/helper/render'
7
7
 
8
8
  require 'adyen-admin'
9
9
 
10
+ require 'i18n'
11
+
10
12
  module Adyen
11
13
  module SkinBuilder
12
14
  class Server < Sinatra::Base
13
15
  dir = File.dirname(File.expand_path(__FILE__))
14
16
 
15
17
  set :views, "#{dir}/server/views"
18
+ set :server, 'webrick'
16
19
 
17
20
  # method will be overwritten by _vegas_ if skin directory given
18
21
  def self.skins_directory
19
22
  File.expand_path(".")
20
23
  end
21
24
 
25
+ def self.skins_directory=(dir)
26
+ @@skins_directory = dir
27
+ end
28
+
22
29
  def self.adyen_admin_cfg
23
30
  nil
24
31
  end
@@ -53,20 +60,36 @@ module Adyen
53
60
  end
54
61
  end
55
62
 
56
- def render_skin(skin)
63
+ def render_skin(skin, locals = {})
57
64
  erb(skin_erb_file(skin).to_sym, {
58
65
  :views => '/',
59
- :layout => File.join(settings.views, "layout.html").to_sym
66
+ :layout => File.join(settings.views, "layout.html").to_sym,
67
+ :locals => locals,
60
68
  })
61
69
  end
62
70
 
63
71
  helpers Helper::Render, Helper::Adyen
64
72
 
73
+ before do
74
+ if settings.respond_to?(:i18n_path) && settings.i18n_path
75
+ @locale = params.fetch('locale', 'en')
76
+ @locale_suffix = "_#{@locale}"
77
+
78
+ I18n.load_path = Dir[File.join(settings.i18n_path, '*yml')]
79
+ I18n::Backend::Simple.include(I18n::Backend::Fallbacks)
80
+ I18n.locale = @locale
81
+ else
82
+ @locale_suffix = ''
83
+ end
84
+ end
85
+
65
86
  get '/sf/:skin_code/*' do |skin_code, path|
66
- if (skin = Adyen::Admin::Skin.find(skin_code)) && (file = skin.get_file(path)) && File.exists?(file)
67
- send_file file
68
- elsif (file = File.join(skins_directory, "base", path)) && File.exists?(file)
69
- send_file file
87
+ if skin = Adyen::Admin::Skin.find(skin_code)
88
+ if (file = skin.get_file(path)) && File.exists?(file)
89
+ send_file file
90
+ elsif (file = File.join(skins_directory, skin.parent_skin, path)) && File.exists?(file)
91
+ send_file file
92
+ end
70
93
  end
71
94
  end
72
95
 
@@ -84,8 +107,7 @@ module Adyen
84
107
 
85
108
  get '/:skin_code/upload' do |skin_code|
86
109
  if @skin = Adyen::Admin::Skin.find(skin_code)
87
- output = render_skin @skin
88
- @skin.compile(output)
110
+ @skin.compile(render_skin(@skin))
89
111
  @skin.upload
90
112
  end
91
113
  redirect '/sync'
@@ -111,9 +133,15 @@ module Adyen
111
133
 
112
134
  get '/:skin_code/compile' do |skin_code|
113
135
  if @skin = Adyen::Admin::Skin.find(skin_code)
114
- output = render_skin @skin
115
- @skin.compile(output)
116
- send_file(@skin.compress)
136
+ @locale_suffix = ''
137
+ @skin.compile(render_skin(@skin))
138
+
139
+ I18n.available_locales.each do |locale|
140
+ I18n.locale = locale
141
+ @locale_suffix = "_#{locale}"
142
+ @skin.compile(render_skin(@skin))
143
+ end
144
+ send_file(@skin.compress, :filename => "#{skin_code}.zip")
117
145
  else
118
146
  redirect '/'
119
147
  end
@@ -129,7 +157,7 @@ module Adyen
129
157
  # skin page
130
158
  get '/:skin_code' do |skin_code|
131
159
  if @skin = Adyen::Admin::Skin.find(skin_code)
132
- render_skin @skin
160
+ render_skin @skin, { :default_data => @skin.default_data }
133
161
  else
134
162
  redirect '/'
135
163
  end
@@ -11,7 +11,7 @@
11
11
  <div id="content">
12
12
  <div id="pmcontent">
13
13
 
14
- <!-- ### inc/pmheader -->
14
+ <!-- ### inc/pmheader<%= @locale_suffix %> -->
15
15
 
16
16
  <%= adyen_payment_fields(&block) %>
17
17
 
@@ -25,8 +25,8 @@
25
25
  <div id="nextstepc">Next Step Text</div>
26
26
  </div>
27
27
  <div id="footerb1div">
28
- <input onclick="" type="submit" id="mainSubmit" value="continue" class="footerB nextB" />
29
- </div>
28
+ <input onclick="" type="submit" id="mainSubmit" value="continue" class="footerB nextB" />
29
+ </div>
30
30
  <div id="footerb2div">
31
31
  <input onclick="" type="button" id="mainBack" value="previous" class="footerB backB" />
32
32
  </div>
@@ -34,4 +34,4 @@
34
34
  </div>
35
35
  </form>
36
36
 
37
- <!-- ### inc/cfooter -->
37
+ <!-- ### inc/cfooter<%= @locale_suffix %> -->
@@ -191,7 +191,7 @@
191
191
  }
192
192
 
193
193
  function validateCcNumber(e, dontHideErrorFrame) {
194
- cardNumber = (document.getElementById('cardNumber').value);
194
+ cardNumber = (document.getElementById('card.cardNumber').value);
195
195
 
196
196
  if(cardNumber.length <= previousCardNumber.length) {
197
197
  previousCardNumber = cardNumber;
@@ -256,7 +256,7 @@
256
256
  result = result.replace(/\s+$/, ''); //remove trailing spaces
257
257
 
258
258
  previousCardNumber = result;
259
- document.getElementById('cardNumber').value = result;
259
+ document.getElementById('card.cardNumber').value = result;
260
260
  }
261
261
 
262
262
  function setExtraCost(selectedCard, lookedUpCard) {
@@ -345,7 +345,7 @@
345
345
 
346
346
  function ccNumberPresentation(valid, dontHideErrorFrame){
347
347
  var errors = new Array();
348
- errors.push("cardNumber");
348
+ errors.push("card.cardNumber");
349
349
  if(valid){
350
350
  clearErrors(errors, dontHideErrorFrame);
351
351
  }
@@ -385,7 +385,7 @@
385
385
 
386
386
  validationFunctions
387
387
  function doCCCheck(){
388
- cardNumber = (document.getElementById('cardNumber').value);
388
+ cardNumber = (document.getElementById('card.cardNumber').value);
389
389
  reg = /\s+/g;
390
390
  cardNumber = cardNumber.replace(reg,'');
391
391
  if(!luhnCheck(cardNumber))
@@ -432,11 +432,11 @@
432
432
  </tr>
433
433
  <tr id="cardNumberTr">
434
434
  <td><div>Card number</div></td>
435
- <td><div class="fieldDiv"><input type="text" class="inputField" id="cardNumber" onkeypress="return blockNonNumbers(event)" onkeyup="validateCcNumber(event)" onblur="validateCcNumber(event)" onchange="doCCCheck()" name="cardNumber" value="" size="24" maxlength="23" /></div></td>
435
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="card.cardNumber" onkeypress="return blockNonNumbers(event)" onkeyup="validateCcNumber(event)" onblur="validateCcNumber(event)" onchange="doCCCheck()" name="card.cardNumber" value="" size="24" maxlength="23" /></div></td>
436
436
  </tr>
437
437
  <tr>
438
438
  <td><div>Card holder name</div></td>
439
- <td><div class="fieldDiv"><input type="text" class="inputField" id="cardHolderName" name="cardHolderName" value="" size="19" maxlength="30" /></div></td>
439
+ <td><div class="fieldDiv"><input type="text" class="inputField" id="card.cardHolderName" name="card.cardHolderName" value="" size="19" maxlength="30" /></div></td>
440
440
  </tr>
441
441
  <tr id="cardIssueNumber" style="display: none">
442
442
  <td><div>Issue Number</div></td>
@@ -445,7 +445,7 @@
445
445
  <tr id="cardStartDate" style="display: none">
446
446
  <td><div>Start Date</div></td>
447
447
  <td><div class="fieldDiv">
448
- <select class="inputField" name="startMonth" id="startMonth" size="1">
448
+ <select class="inputField" name="card.startMonth" id="card.startMonth" size="1">
449
449
  <option value="*"></option>
450
450
  <option value="01">01</option>
451
451
  <option value="02">02</option>
@@ -461,26 +461,19 @@
461
461
  <option value="12">12</option>
462
462
  </select>
463
463
  &nbsp;/&nbsp;
464
- <select class="inputField" name="startYear" id="startYear" size="1">
464
+ <select class="inputField" name="card.startYear" id="card.startYear" size="1">
465
465
  <option value="*"></option>
466
- <option value="2011">2011</option>
467
- <option value="2010">2010</option>
468
- <option value="2009">2009</option>
469
- <option value="2008">2008</option>
470
- <option value="2007">2007</option>
471
- <option value="2006">2006</option>
472
- <option value="2005">2005</option>
473
- <option value="2004">2004</option>
474
- <option value="2003">2003</option>
475
- <option value="2002">2002</option>
466
+ <% 10.times do |i| %>
467
+ <option value="<%= year = Date.today.year - i %>"><%= year %></option>
468
+ <% end %>
476
469
  </select>
477
470
  </div>
478
471
  </td>
479
472
  </tr>
480
473
  <tr>
481
474
  <td><div>Card expiry date</div></td><td>
482
- <div class="fieldDiv">
483
- <select class="inputField" name="expiryMonth" id="expiryMonth" size="1">
475
+ <div class="fieldDiv" id="card.expiryContainer">
476
+ <select class="inputField" name="card.expiryMonth" id="card.expiryMonth" size="1">
484
477
  <option value="*"></option>
485
478
  <option value="01">01</option>
486
479
  <option value="02">02</option>
@@ -496,32 +489,18 @@
496
489
  <option value="12">12</option>
497
490
  </select>
498
491
  &nbsp;/&nbsp;
499
- <select class="inputField" name="expiryYear" id="expiryYear" size="1">
492
+ <select class="inputField" name="card.expiryYear" id="card.expiryYear" size="1">
500
493
  <option value="*"></option>
501
- <option value="2011">2011</option>
502
- <option value="2012">2012</option>
503
- <option value="2013">2013</option>
504
- <option value="2014">2014</option>
505
- <option value="2015">2015</option>
506
- <option value="2016">2016</option>
507
- <option value="2017">2017</option>
508
- <option value="2018">2018</option>
509
- <option value="2019">2019</option>
510
- <option value="2020">2020</option>
511
- <option value="2021">2021</option>
512
- <option value="2022">2022</option>
513
- <option value="2023">2023</option>
514
- <option value="2024">2024</option>
515
- <option value="2025">2025</option>
516
- <option value="2026">2026</option>
517
- <option value="2027">2027</option>
494
+ <% 15.times do |i| %>
495
+ <option value="<%= year = Date.today.year + i %>"><%= year %></option>
496
+ <% end %>
518
497
  </select>
519
498
  </div>
520
499
  </td>
521
500
  </tr>
522
501
  <tr>
523
502
  <td><div id="cvcName">CVC/CVV/CID</div></td>
524
- <td><div class="fieldDiv"><input class="inputField" type="text" name="cvcCode" value="" id="cvcCode" size="7" maxlength="3" /> &nbsp; <a href="#" onclick="return toggleElement('cvcFrame');"><span id="cvcWhatIs">What is CVC/CVV/CID?</span></a></div></td>
503
+ <td><div class="fieldDiv"><input class="inputField" type="text" name="card.cvcCode" value="" id="card.cvcCode" size="7" maxlength="3" /> &nbsp; <a href="#" onclick="return toggleElement('cvcFrame');"><span id="cvcWhatIs">What is CVC/CVV/CID?</span></a></div></td>
525
504
  </tr>
526
505
  <tr>
527
506
  <td colspan="2"><div class="r">
@@ -545,7 +524,7 @@
545
524
  // find out what the CSS implementation calls the tr "display" value
546
525
  var cssTr = document.getElementById('cardNumberTr').style.display;
547
526
 
548
- if(document.getElementById('cardNumber').value.length > 0) {
527
+ if(document.getElementById('card.cardNumber').value.length > 0) {
549
528
  var validateCcNumberTimer = setTimeout('validateCcNumber(null,true)', 2500);
550
529
  }
551
530
 
@@ -713,7 +692,7 @@ errorMessages["card"]["generic"] = "Please enter your card details";
713
692
  }
714
693
 
715
694
  function validateCcNumber(e, dontHideErrorFrame) {
716
- cardNumber = (document.getElementById('cardNumber').value);
695
+ cardNumber = (document.getElementById('card.cardNumber').value);
717
696
 
718
697
  if(cardNumber.length <= previousCardNumber.length) {
719
698
  previousCardNumber = cardNumber;
@@ -778,7 +757,7 @@ errorMessages["card"]["generic"] = "Please enter your card details";
778
757
  result = result.replace(/\s+$/, ''); //remove trailing spaces
779
758
 
780
759
  previousCardNumber = result;
781
- document.getElementById('cardNumber').value = result;
760
+ document.getElementById('card.cardNumber').value = result;
782
761
  }
783
762
 
784
763
  function setExtraCost(selectedCard, lookedUpCard) {
@@ -892,7 +871,7 @@ errorMessages["card"]["generic"] = "Please enter your card details";
892
871
 
893
872
  validationFunctions
894
873
  function doCCCheck(){
895
- cardNumber = (document.getElementById('cardNumber').value);
874
+ cardNumber = (document.getElementById('card.cardNumber').value);
896
875
  reg = /\s+/g;
897
876
  cardNumber = cardNumber.replace(reg,'');
898
877
  if(!luhnCheck(cardNumber))
@@ -1029,7 +1008,7 @@ errorMessages["card"]["generic"] = "Please enter your card details";
1029
1008
  <script type="text/javascript">
1030
1009
  //<![CDATA[
1031
1010
 
1032
- if(document.getElementById('cardNumber').value.length > 0) {
1011
+ if(document.getElementById('card.cardNumber').value.length > 0) {
1033
1012
  var validateCcNumberTimer = setTimeout('validateCcNumber(null,true)', 2500);
1034
1013
  }
1035
1014
 
@@ -24,7 +24,7 @@
24
24
  //]]>
25
25
  </script>
26
26
 
27
- <!-- ### inc/cheader -->
27
+ <!-- ### inc/cheader<%= @locale_suffix %> -->
28
28
 
29
29
  <%= yield %>
30
30
 
@@ -1,5 +1,5 @@
1
1
  module Adyen
2
2
  module Skinbuilder
3
- VERSION = '0.4.1'
3
+ VERSION = '0.4.2'
4
4
  end
5
5
  end
@@ -1,2 +1,4 @@
1
1
 
2
2
  <% adyen_form_tag %>
3
+
4
+ <%= default_data %>
@@ -5,3 +5,4 @@
5
5
  :version: 32
6
6
  :version_live: 0
7
7
  :version_test: 31
8
+ :default_data: dummy_default_data
@@ -110,6 +110,10 @@ describe 'SkinBuilder server' do
110
110
  it 'responds with 200 status' do
111
111
  last_response.status.should == 200
112
112
  end
113
+
114
+ it "includes default_data" do
115
+ last_response.body.include?("dummy_default_data")
116
+ end
113
117
  end
114
118
  end
115
119
 
metadata CHANGED
@@ -1,155 +1,105 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: adyen-skinbuilder
3
- version: !ruby/object:Gem::Version
4
- hash: 13
5
- prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 1
10
- version: 0.4.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.2
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Priit Haamer
14
8
  - Tobias Bielohlawek
15
9
  autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
-
19
- date: 2012-06-20 00:00:00 +03:00
20
- default_executable:
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
12
+ date: 2013-11-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
23
15
  name: sinatra
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 3
31
- segments:
32
- - 0
33
- version: "0"
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
34
21
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: sinatra-contrib
38
22
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ! '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: sinatra-contrib
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
48
35
  type: :runtime
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: vegas
52
36
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: vegas
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ! '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
62
49
  type: :runtime
63
- version_requirements: *id003
64
- - !ruby/object:Gem::Dependency
65
- name: adyen-admin
66
50
  prerelease: false
67
- requirement: &id004 !ruby/object:Gem::Requirement
68
- none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: i18n
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
76
63
  type: :runtime
77
- version_requirements: *id004
78
- - !ruby/object:Gem::Dependency
79
- name: rake
80
- prerelease: false
81
- requirement: &id005 !ruby/object:Gem::Requirement
82
- none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- hash: 3
87
- segments:
88
- - 0
89
- version: "0"
90
- type: :development
91
- version_requirements: *id005
92
- - !ruby/object:Gem::Dependency
93
- name: rspec
94
- prerelease: false
95
- requirement: &id006 !ruby/object:Gem::Requirement
96
- none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 3
101
- segments:
102
- - 0
103
- version: "0"
104
- type: :development
105
- version_requirements: *id006
106
- - !ruby/object:Gem::Dependency
107
- name: guard-rspec
108
64
  prerelease: false
109
- requirement: &id007 !ruby/object:Gem::Requirement
110
- none: false
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- hash: 3
115
- segments:
116
- - 0
117
- version: "0"
118
- type: :development
119
- version_requirements: *id007
120
- - !ruby/object:Gem::Dependency
121
- name: rack-test
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: adyen-admin
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :runtime
122
78
  prerelease: false
123
- requirement: &id008 !ruby/object:Gem::Requirement
124
- none: false
125
- requirements:
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- hash: 3
129
- segments:
130
- - 0
131
- version: "0"
132
- type: :development
133
- version_requirements: *id008
134
- description: Provides helpful command line tools to run sinatra server and bundle adyen skin files
135
- email:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ! '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ description: Provides helpful command line tools to run sinatra server and bundle
85
+ adyen skin files
86
+ email:
136
87
  - priit@edicy.com
137
88
  - tobi@soundcloud.com
138
- executables:
89
+ executables:
139
90
  - adyen-skinbuilder
140
91
  extensions: []
141
-
142
92
  extra_rdoc_files: []
143
-
144
- files:
93
+ files:
145
94
  - .gitignore
95
+ - .rspec
146
96
  - .travis.yml
147
97
  - CHANGELOG.md
148
98
  - Gemfile
149
99
  - Gemfile.lock
150
100
  - Guardfile
151
101
  - LICENSE
152
- - README.markdown
102
+ - README.md
153
103
  - Rakefile
154
104
  - adyen-skinbuilder.gemspec
155
105
  - bin/adyen-skinbuilder
@@ -215,41 +165,30 @@ files:
215
165
  - spec/lib/adyen-skinbuilder/helper/render_spec.rb
216
166
  - spec/lib/adyen-skinbuilder/server_spec.rb
217
167
  - spec/spec_helper.rb
218
- has_rdoc: true
219
168
  homepage: http://rubygems.org/gems/adyen-skinbuilder
220
169
  licenses: []
221
-
170
+ metadata: {}
222
171
  post_install_message:
223
172
  rdoc_options: []
224
-
225
- require_paths:
173
+ require_paths:
226
174
  - lib
227
- required_ruby_version: !ruby/object:Gem::Requirement
228
- none: false
229
- requirements:
230
- - - ">="
231
- - !ruby/object:Gem::Version
232
- hash: 3
233
- segments:
234
- - 0
235
- version: "0"
236
- required_rubygems_version: !ruby/object:Gem::Requirement
237
- none: false
238
- requirements:
239
- - - ">="
240
- - !ruby/object:Gem::Version
241
- hash: 3
242
- segments:
243
- - 0
244
- version: "0"
175
+ required_ruby_version: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ! '>='
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ! '>='
183
+ - !ruby/object:Gem::Version
184
+ version: '0'
245
185
  requirements: []
246
-
247
186
  rubyforge_project:
248
- rubygems_version: 1.4.2
187
+ rubygems_version: 2.0.6
249
188
  signing_key:
250
- specification_version: 3
189
+ specification_version: 4
251
190
  summary: Simple Sinatra server to make coding Adyen skins easier
252
- test_files:
191
+ test_files:
253
192
  - spec/fixtures/example.zip
254
193
  - spec/fixtures/skins/DV3tf95f/css/screen.css
255
194
  - spec/fixtures/skins/DV3tf95f/inc/order_data.txt