adyen-skinbuilder 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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