adyen-skinbuilder 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (26) hide show
  1. checksums.yaml +9 -9
  2. data/CHANGELOG.md +4 -1
  3. data/Gemfile.lock +1 -1
  4. data/lib/adyen-skinbuilder/server.rb +15 -4
  5. data/lib/adyen-skinbuilder/server/views/_adyen_form.html.erb +14 -19
  6. data/lib/adyen-skinbuilder/server/views/_adyen_payment_fields.html.erb +1560 -910
  7. data/lib/adyen-skinbuilder/server/views/css/reset.css +137 -5
  8. data/lib/adyen-skinbuilder/server/views/img/pm/bankTransfer_IBAN.png +0 -0
  9. data/lib/adyen-skinbuilder/server/views/img/pm/bankTransfer_NL.png +0 -0
  10. data/lib/adyen-skinbuilder/server/views/img/pm/directdebit_NL.png +0 -0
  11. data/lib/adyen-skinbuilder/server/views/img/pm/hyvesafrekenen.png +0 -0
  12. data/lib/adyen-skinbuilder/server/views/img/pm/maestro_small.png +0 -0
  13. data/lib/adyen-skinbuilder/server/views/img/pm/openinvoice.png +0 -0
  14. data/lib/adyen-skinbuilder/server/views/js/animatedcollapse.js +114 -0
  15. data/lib/adyen-skinbuilder/server/views/js/cc.js +456 -0
  16. data/lib/adyen-skinbuilder/server/views/js/default.js +214 -7
  17. data/lib/adyen-skinbuilder/server/views/layout.html.erb +8 -6
  18. data/lib/adyen-skinbuilder/server/views/skin.html.erb +1 -6
  19. data/lib/adyen-skinbuilder/version.rb +1 -1
  20. data/spec/lib/adyen-skinbuilder/server_spec.rb +1 -1
  21. metadata +11 -8
  22. data/lib/adyen-skinbuilder/server/views/img/icons/error.png +0 -0
  23. data/lib/adyen-skinbuilder/server/views/img/pm/card.png +0 -0
  24. data/lib/adyen-skinbuilder/server/views/img/pm/ideal.png +0 -0
  25. data/lib/adyen-skinbuilder/server/views/img/pm/vias_small.png +0 -0
  26. data/lib/adyen-skinbuilder/server/views/img/pm/visa.png +0 -0
@@ -95,6 +95,11 @@ function formValidate(form, group) {
95
95
  } catch (err) {}
96
96
  markErrorFields(errors);
97
97
  setErrorMessages(errors, group);
98
+
99
+ if(typeof resizeIframe != 'undefined'){
100
+ resizeIframe();
101
+ }
102
+
98
103
  return false;
99
104
  }
100
105
 
@@ -179,7 +184,6 @@ function validateElement(el) {
179
184
  return true;
180
185
  }
181
186
 
182
-
183
187
  function markErrorFields(errors) {
184
188
  if(errors.length == 0) return;
185
189
  for(var i = 0; i < errors.length; ++i) {
@@ -187,13 +191,17 @@ function markErrorFields(errors) {
187
191
  if(! notNull(el)) continue;
188
192
  if(el.type == "hidden") continue;
189
193
  if (el.parentNode.nodeName == "DIV") {
190
- el.parentNode.className = "errorDiv";
194
+ if(el.parentNode.className.indexOf('errorDiv') === -1){
195
+ el.parentNode.className += " errorDiv";
196
+ }
197
+ }
198
+ if(el.className.indexOf('errorField') === -1){
199
+ el.className += " errorField";
191
200
  }
192
- el.className = "errorField";
193
201
  }
194
-
195
202
  }
196
203
 
204
+
197
205
  function setOkMessages(messages) {
198
206
  if ( notNull(document.getElementById("okFrameMessages"))) {
199
207
  var messageHTML = "";
@@ -225,8 +233,10 @@ function setErrorMessages(errors,group) {
225
233
  hideElement("okFrame");
226
234
  }
227
235
 
228
-
229
- function clearErrors(fields, dontHideErrorFrame) {
236
+ function clearErrors(fields, dontHideErrorFrame, fieldClass) {
237
+ if(! fieldClass) {
238
+ fieldClass = "inputField";
239
+ }
230
240
  for(var i = 0; i < fields.length; ++i) {
231
241
  obj = document.getElementById(fields[i]);
232
242
 
@@ -235,7 +245,7 @@ function clearErrors(fields, dontHideErrorFrame) {
235
245
  if (obj.parentNode.nodeName == "DIV") {
236
246
  obj.parentNode.className = "fieldDiv";
237
247
  }
238
- obj.className = "inputField";
248
+ obj.className = fieldClass;
239
249
  }
240
250
  if(! dontHideErrorFrame) {
241
251
  hideElement("errorFrameValidationErrors");
@@ -348,6 +358,203 @@ function confirmMessage(f) {
348
358
  return false;
349
359
  }
350
360
 
361
+ function blockNonNumberEvents(e) {
362
+ var key;
363
+ var isCtrl = false;
364
+ var keychar;
365
+ var reg;
366
+
367
+ if(window.event) {
368
+ key = e.keyCode;
369
+ isCtrl = window.event.ctrlKey
370
+ }
371
+ else if(e.which) {
372
+ key = e.which;
373
+ isCtrl = e.ctrlKey;
374
+ }
375
+
376
+ if (isNaN(key)) return true;
377
+
378
+ keychar = String.fromCharCode(key);
379
+
380
+ // check for backspace or delete, or if Ctrl was pressed
381
+ if (key == 8 || isCtrl) {
382
+ return true;
383
+ }
384
+
385
+ reg = /[\d ]/;
386
+
387
+ return reg.test(keychar);
388
+ }
389
+
390
+ var openedWindow, timer, issuerId, popupX, popupY = null;
391
+ var issuerPopupSize = new Object();
392
+ var popupOpened = false;
393
+ var selectedPopupBrand = null;
394
+
395
+ var setSelectedPopupBrand = function(brand){
396
+ selectedPopupBrand = brand;
397
+ };
398
+
399
+ var validateAndOpenIfRequired = function(form, group, url){
400
+ var mygroup = group;
401
+
402
+ if (group == "default" && selectedPopupBrand !== null){
403
+ mygroup = selectedPopupBrand;
404
+ }
405
+
406
+ if (typeof openInPopup != 'undefined' && openInPopup[mygroup]){
407
+ return validateAndOpen(form, group,url);
408
+ }
409
+
410
+ return formValidate(form, group);
411
+ };
412
+
413
+ var validateAndOpen = function(form, group, url){
414
+ //enable re-opening popUp for 3D
415
+ submitOnlyOnce = function (f) {
416
+ return true;
417
+ };
418
+
419
+ if(formValidate(form, group)){
420
+ //check if window is in an iFrame
421
+ if (popupX == null) popupX = "800";
422
+ if (popupY == null) popupY = "600";
423
+
424
+ if (issuerId != null) {
425
+ var popupSize = issuerPopupSize[issuerId];
426
+ if (popupSize != null){
427
+ popupX = popupSize.x;
428
+ popupY = popupSize.y;
429
+ }
430
+
431
+ var element = document.getElementById("issuerId");
432
+
433
+ if ( !element) {
434
+ element = document.createElement( 'input' );
435
+ element.type = 'hidden';
436
+ element.name = element.id = "issuerId";
437
+ form.appendChild( element );
438
+ }
439
+
440
+ if (group == "default" && selectedPopupBrand !== null){
441
+ mygroup = selectedPopupBrand;
442
+ }
443
+
444
+ element.setAttribute( 'value', issuerId );
445
+ }
446
+
447
+
448
+ if(selectedPopupBrand !== null){
449
+ var element = document.getElementById("brandCode");
450
+
451
+ if ( !element) {
452
+ element = document.createElement( 'input' );
453
+ element.type = "hidden";
454
+ element.name = "brandCode";
455
+ element.value = selectedPopupBrand;
456
+ form.appendChild( element );
457
+ }
458
+ }
459
+
460
+ if (popupX > screen.width - 100) {
461
+ popupX = screen.width - 100;
462
+ }
463
+
464
+ if (popupY > screen.height - 100) {
465
+ popupY = screen.height - 100;
466
+ }
467
+
468
+ if (popupOpened) {
469
+ return false;
470
+ }
471
+
472
+ popupOpened = true;
473
+ openedWindow = window.open('',"mypopup", "width="+popupX+", height="+popupY+", scrollbars=yes, resizable=yes");
474
+ openedWindow.focus();
475
+
476
+ var pmcontent = document.getElementById("pmcontent");
477
+ if (pmcontent != null) pmcontent.style.display="none";
478
+
479
+ var foot = document.getElementById("foot");
480
+ if (foot != null) foot.style.display="none";
481
+
482
+ var cfooter = document.getElementById("cfooter");
483
+ if (cfooter != null) cfooter.style.display="none";
484
+
485
+ var waitingdiv = document.getElementById("waitingdiv");
486
+ if (waitingdiv != null) waitingdiv.style.display="block";
487
+
488
+ var usingPopUp = document.getElementById("usingPopUp");
489
+ var previousUsingPopUp;
490
+ if (usingPopUp != null){
491
+ previousUsingPopUp = usingPopUp.value;
492
+ usingPopUp.value="true";
493
+ }
494
+
495
+ form.submit();
496
+
497
+ document.getElementById("pmcontent").redirectCallback = function(){
498
+ setTimeout(function(){
499
+
500
+ var ifr = parent.document.getElementById("myIFrame");
501
+ ifr.parentNode.removeChild(ifr);
502
+
503
+ }, 5000);
504
+
505
+
506
+ }
507
+ if(openedWindow){
508
+ timer = setInterval(checkChild, 500);
509
+ }
510
+
511
+ if (typeof popupOpenedHandler === 'function') {
512
+ popupOpenedHandler();
513
+ }
514
+ }
515
+
516
+ if (typeof resizeIframe === 'function') {
517
+ resizeIframe();
518
+ }
519
+
520
+ return false;
521
+ }
522
+
523
+ var issuerButtonClicked = function(butId){
524
+ issuerId = butId;
525
+ }
526
+
527
+ var checkChild = function(){
528
+ if (openedWindow.closed) {
529
+ var pmcontent = document.getElementById("pmcontent");
530
+ if (pmcontent != null) pmcontent.style.display="block";
531
+
532
+ var foot = document.getElementById("foot");
533
+ if (foot != null) foot.style.display="block";
534
+
535
+ var cfooter = document.getElementById("cfooter");
536
+ if (cfooter != null) cfooter.style.display="block";
537
+
538
+ var waitingdiv = document.getElementById("waitingdiv");
539
+ if (waitingdiv != null) waitingdiv.style.display="none";
540
+ if (issuerId != null) {
541
+ issuerId = null;
542
+ var element = document.getElementById("issuerId");
543
+
544
+ if ( !element) {
545
+ element.parentNode.removeChild(element);
546
+ }
547
+ }
548
+ clearInterval(timer);
549
+
550
+ popupOpened = false;
551
+
552
+ if(typeof resizeIframe != 'undefined'){
553
+ resizeIframe();
554
+ }
555
+ }
556
+ }
557
+
351
558
  // vX library (Ajax, Extend, GetElement, Animation)
352
559
  var _=_?_:{}
353
560
  _.X=function(u,f,d,x){x=new(window.ActiveXObject?ActiveXObject:XMLHttpRequest)('Microsoft.XMLHTTP');x.open(d?'POST':'GET',u,1);d?x.setRequestHeader('Content-type','application/x-www-form-urlencoded'):0;x.onreadystatechange=function(){x.readyState>3&&f?f(x.responseText,x):0};x.send(d)}
@@ -1,11 +1,13 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
3
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
4
  <head>
4
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
6
  <title><%= @skin.code %> - Adyen-Skinbuilder</title>
6
7
 
7
- <link rel="stylesheet" media="screen" type="text/css" href="/hpp/css/reset.css" />
8
-
8
+ <link rel="shortcut icon" href="/sf/<%= @skin.code %>/img/favicon.ico" />
9
+
10
+ <link rel="stylesheet" type="text/css" href="/hpp/css/reset.css" />
9
11
  <link rel="stylesheet" media="screen" type="text/css" href="/sf/<%= @skin.code %>/css/screen.css" />
10
12
  <link rel="stylesheet" media="print" type="text/css" href="/sf/<%= @skin.code %>/css/print.css" />
11
13
 
@@ -17,10 +19,10 @@
17
19
  </head>
18
20
  <body>
19
21
  <script type="text/javascript">
20
- //<![CDATA[
22
+ //<![CDATA[
21
23
  var clientIPAddress = "127.0.0.1";
22
24
  var config = new Array();
23
- config["pmmanimation"] = 0;
25
+ config["pmmanimation"] = 2;
24
26
  //]]>
25
27
  </script>
26
28
 
@@ -29,6 +31,6 @@
29
31
  <%= yield %>
30
32
 
31
33
  <!-- ### -->
32
-
34
+
33
35
  </body>
34
36
  </html>
@@ -1,18 +1,13 @@
1
- <!-- ### inc/cheader_[locale].txt or inc/cheader.txt (fallback) ### -->
2
1
  <%= render_file "cheader" %>
3
2
 
4
3
  <% adyen_form_tag do %>
5
- <!-- ### inc/pmheader_[locale].txt or inc/pmheader.txt (fallback) ### -->
6
4
  <%= render_file "pmheader" %>
7
5
 
8
6
  <%= adyen_payment_fields %>
9
7
 
10
- <!-- ### inc/pmfooter_[locale].txt or inc/pmfooter.txt (fallback) ### -->
11
8
  <%= render_file "pmfooter" %>
12
9
 
13
- <!-- ### inc/customfields_[locale].txt or inc/customfields.txt (fallback) ### -->
14
10
  <%= render_file "customfields" %>
15
11
  <% end %>
16
12
 
17
- <!-- ### inc/cfooter_[locale].txt or inc/cfooter.txt (fallback) ### -->
18
- <%= render_file "cfooter" %>
13
+ <%= render_file "cfooter" %>
@@ -1,5 +1,5 @@
1
1
  module Adyen
2
2
  module Skinbuilder
3
- VERSION = '0.4.2'
3
+ VERSION = '0.4.3'
4
4
  end
5
5
  end
@@ -97,7 +97,7 @@ describe 'SkinBuilder server' do
97
97
  end
98
98
 
99
99
  it 'returns adyen form' do
100
- last_response.body.should include('<form id="pageform" action="" method="post" onsubmit="return formValidate(this);">')
100
+ last_response.body.should include('<form id="pageform" action="#" method="post"')
101
101
  end
102
102
 
103
103
  it 'returns order data' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adyen-skinbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Priit Haamer
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-18 00:00:00.000000000 Z
12
+ date: 2014-09-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
@@ -110,7 +110,6 @@ files:
110
110
  - lib/adyen-skinbuilder/server/views/_adyen_form.html.erb
111
111
  - lib/adyen-skinbuilder/server/views/_adyen_payment_fields.html.erb
112
112
  - lib/adyen-skinbuilder/server/views/css/reset.css
113
- - lib/adyen-skinbuilder/server/views/img/icons/error.png
114
113
  - lib/adyen-skinbuilder/server/views/img/pm/TESTBANK1.png
115
114
  - lib/adyen-skinbuilder/server/views/img/pm/TESTBANK10.png
116
115
  - lib/adyen-skinbuilder/server/views/img/pm/TESTBANK2.png
@@ -125,14 +124,18 @@ files:
125
124
  - lib/adyen-skinbuilder/server/views/img/pm/TESTBANKPENDING.png
126
125
  - lib/adyen-skinbuilder/server/views/img/pm/TESTBANKREFUSED.png
127
126
  - lib/adyen-skinbuilder/server/views/img/pm/amex_small.png
128
- - lib/adyen-skinbuilder/server/views/img/pm/card.png
129
- - lib/adyen-skinbuilder/server/views/img/pm/ideal.png
127
+ - lib/adyen-skinbuilder/server/views/img/pm/bankTransfer_IBAN.png
128
+ - lib/adyen-skinbuilder/server/views/img/pm/bankTransfer_NL.png
129
+ - lib/adyen-skinbuilder/server/views/img/pm/directdebit_NL.png
130
+ - lib/adyen-skinbuilder/server/views/img/pm/hyvesafrekenen.png
131
+ - lib/adyen-skinbuilder/server/views/img/pm/maestro_small.png
130
132
  - lib/adyen-skinbuilder/server/views/img/pm/mc_small.png
133
+ - lib/adyen-skinbuilder/server/views/img/pm/openinvoice.png
131
134
  - lib/adyen-skinbuilder/server/views/img/pm/unknown_small.png
132
- - lib/adyen-skinbuilder/server/views/img/pm/vias_small.png
133
- - lib/adyen-skinbuilder/server/views/img/pm/visa.png
134
135
  - lib/adyen-skinbuilder/server/views/img/pm/visa_small.png
135
136
  - lib/adyen-skinbuilder/server/views/index.html.erb
137
+ - lib/adyen-skinbuilder/server/views/js/animatedcollapse.js
138
+ - lib/adyen-skinbuilder/server/views/js/cc.js
136
139
  - lib/adyen-skinbuilder/server/views/js/default.js
137
140
  - lib/adyen-skinbuilder/server/views/layout.html.erb
138
141
  - lib/adyen-skinbuilder/server/views/skeleton.html
@@ -184,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
187
  version: '0'
185
188
  requirements: []
186
189
  rubyforge_project:
187
- rubygems_version: 2.0.6
190
+ rubygems_version: 2.1.11
188
191
  signing_key:
189
192
  specification_version: 4
190
193
  summary: Simple Sinatra server to make coding Adyen skins easier