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.
- checksums.yaml +15 -0
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/.travis.yml +2 -1
- data/CHANGELOG.md +6 -1
- data/Gemfile +10 -0
- data/Gemfile.lock +74 -53
- data/{README.markdown → README.md} +1 -18
- data/adyen-skinbuilder.gemspec +1 -5
- data/bin/adyen-skinbuilder +5 -1
- data/lib/adyen-skinbuilder.rb +0 -4
- data/lib/adyen-skinbuilder/helper/render.rb +15 -4
- data/lib/adyen-skinbuilder/server.rb +40 -12
- data/lib/adyen-skinbuilder/server/views/_adyen_form.html.erb +4 -4
- data/lib/adyen-skinbuilder/server/views/_adyen_payment_fields.html.erb +23 -44
- data/lib/adyen-skinbuilder/server/views/layout.html.erb +1 -1
- data/lib/adyen-skinbuilder/version.rb +1 -1
- data/spec/fixtures/skins/test/skin.html.erb +2 -0
- data/spec/fixtures/skins/test/skin.yml +1 -0
- data/spec/lib/adyen-skinbuilder/server_spec.rb +4 -0
- metadata +88 -149
checksums.yaml
ADDED
|
@@ -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
data/.rspec
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--colour
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -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
|
-
|
|
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
data/Gemfile.lock
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
adyen-skinbuilder (0.4.
|
|
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.
|
|
14
|
+
adyen-admin (0.0.18)
|
|
14
15
|
mechanize
|
|
15
16
|
rubyzip
|
|
16
|
-
backports (
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
guard
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
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 (
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
45
|
-
|
|
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.
|
|
68
|
+
rack-test (0.6.2)
|
|
48
69
|
rack (>= 1.0)
|
|
49
|
-
rake (
|
|
50
|
-
rb-
|
|
51
|
-
|
|
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.
|
|
56
|
-
rspec-core (~> 2.
|
|
57
|
-
rspec-expectations (~> 2.
|
|
58
|
-
rspec-mocks (~> 2.
|
|
59
|
-
rspec-core (2.
|
|
60
|
-
rspec-expectations (2.
|
|
61
|
-
diff-lcs (
|
|
62
|
-
rspec-mocks (2.
|
|
63
|
-
rubyzip (
|
|
64
|
-
sinatra (1.
|
|
65
|
-
rack (~> 1.
|
|
66
|
-
rack-protection (~> 1.
|
|
67
|
-
tilt (~> 1.3, >= 1.3.
|
|
68
|
-
sinatra-contrib (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
|
-
|
|
89
|
+
multi_json
|
|
71
90
|
rack-protection
|
|
72
91
|
rack-test
|
|
73
|
-
sinatra (~> 1.
|
|
92
|
+
sinatra (~> 1.4.0)
|
|
74
93
|
tilt (~> 1.3)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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.
|
|
100
|
+
unf_ext (0.0.6)
|
|
80
101
|
vegas (0.1.11)
|
|
81
102
|
rack (>= 1.0.0)
|
|
82
|
-
webrobots (0.
|
|
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>
|
|
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.
|
data/adyen-skinbuilder.gemspec
CHANGED
|
@@ -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
|
data/bin/adyen-skinbuilder
CHANGED
|
@@ -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
|
data/lib/adyen-skinbuilder.rb
CHANGED
|
@@ -8,7 +8,7 @@ module Adyen
|
|
|
8
8
|
@_out_buf || @_buf
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
# capture
|
|
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(
|
|
20
|
-
file =
|
|
21
|
-
|
|
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
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
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
|
-
|
|
115
|
-
@skin.compile(
|
|
116
|
-
|
|
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
|
-
|
|
29
|
-
|
|
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
|
/
|
|
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
|
-
|
|
467
|
-
|
|
468
|
-
|
|
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
|
/
|
|
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
|
-
|
|
502
|
-
|
|
503
|
-
|
|
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" /> <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" /> <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
|
|
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
|
-
|
|
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
|
-
|
|
20
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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.
|
|
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
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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:
|
|
187
|
+
rubygems_version: 2.0.6
|
|
249
188
|
signing_key:
|
|
250
|
-
specification_version:
|
|
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
|