adyen-skinbuilder 0.4.2 → 0.4.3

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.
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