webshims-rails 1.12.2 → 1.12.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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webshims-rails/version.rb +2 -2
  3. data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +2 -40
  4. data/vendor/assets/javascripts/webshims/polyfiller.js +10 -18
  5. data/vendor/assets/javascripts/webshims/shims/combos/1.js +5 -2
  6. data/vendor/assets/javascripts/webshims/shims/combos/10.js +2 -2
  7. data/vendor/assets/javascripts/webshims/shims/combos/11.js +2 -2
  8. data/vendor/assets/javascripts/webshims/shims/combos/12.js +3 -2
  9. data/vendor/assets/javascripts/webshims/shims/combos/13.js +3 -2
  10. data/vendor/assets/javascripts/webshims/shims/combos/14.js +26 -19
  11. data/vendor/assets/javascripts/webshims/shims/combos/15.js +29 -19
  12. data/vendor/assets/javascripts/webshims/shims/combos/16.js +31 -21
  13. data/vendor/assets/javascripts/webshims/shims/combos/17.js +2 -2
  14. data/vendor/assets/javascripts/webshims/shims/combos/18.js +2 -2
  15. data/vendor/assets/javascripts/webshims/shims/combos/19.js +3 -2
  16. data/vendor/assets/javascripts/webshims/shims/combos/2.js +5 -2
  17. data/vendor/assets/javascripts/webshims/shims/combos/20.js +3 -2
  18. data/vendor/assets/javascripts/webshims/shims/combos/23.js +2 -2
  19. data/vendor/assets/javascripts/webshims/shims/combos/24.js +1 -1
  20. data/vendor/assets/javascripts/webshims/shims/combos/25.js +3 -2
  21. data/vendor/assets/javascripts/webshims/shims/combos/28.js +26 -19
  22. data/vendor/assets/javascripts/webshims/shims/combos/3.js +29 -19
  23. data/vendor/assets/javascripts/webshims/shims/combos/30.js +29 -19
  24. data/vendor/assets/javascripts/webshims/shims/combos/31.js +3 -0
  25. data/vendor/assets/javascripts/webshims/shims/combos/4.js +26 -19
  26. data/vendor/assets/javascripts/webshims/shims/combos/5.js +2 -2
  27. data/vendor/assets/javascripts/webshims/shims/combos/6.js +2 -2
  28. data/vendor/assets/javascripts/webshims/shims/combos/7.js +31 -21
  29. data/vendor/assets/javascripts/webshims/shims/combos/8.js +31 -21
  30. data/vendor/assets/javascripts/webshims/shims/combos/9.js +2 -2
  31. data/vendor/assets/javascripts/webshims/shims/form-core.js +3 -0
  32. data/vendor/assets/javascripts/webshims/shims/form-datalist-lazy.js +3 -3
  33. data/vendor/assets/javascripts/webshims/shims/form-message.js +26 -19
  34. data/vendor/assets/javascripts/webshims/shims/form-shim-extend2.js +1 -1
  35. data/vendor/assets/javascripts/webshims/shims/form-validation.js +13 -12
  36. data/vendor/assets/javascripts/webshims/shims/form-validators.js +61 -58
  37. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +2 -2
  38. data/vendor/assets/javascripts/webshims/shims/range-ui.js +2 -2
  39. data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +45 -25
  40. data/vendor/assets/javascripts/webshims/shims/styles/scss/_api-forms-ext.scss +20 -4
  41. data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +29 -26
  42. data/vendor/assets/javascripts/webshims/shims/styles/scss/shim.scss +3 -0
  43. data/vendor/assets/javascripts/webshims/shims/styles/shim.css +6 -3
  44. data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
  45. metadata +2 -2
@@ -620,7 +620,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
620
620
  _create: function(){
621
621
  var i;
622
622
 
623
- this.element.addClass('ws-range').attr({role: 'slider'}).append('<span class="ws-range-min ws-range-progress" /><span class="ws-range-rail ws-range-track"><span class="ws-range-thumb"><span data-value="" data-valuetext="" /></span></span>');
623
+ this.element.addClass('ws-range').attr({role: 'slider'}).append('<span class="ws-range-min ws-range-progress" /><span class="ws-range-rail ws-range-track"><span class="ws-range-thumb"><span><span data-value="" data-valuetext="" /></span></span></span>');
624
624
  this.trail = $('.ws-range-track', this.element);
625
625
  this.range = $('.ws-range-progress', this.element);
626
626
  this.thumb = $('.ws-range-thumb', this.trail);
@@ -702,7 +702,7 @@ webshims.register('form-number-date-api', function($, webshims, window, document
702
702
  'aria-valuenow': this.options.value,
703
703
  'aria-valuetext': textValue
704
704
  });
705
- $('span', this.thumb).attr({
705
+ $('span[data-value]', this.thumb).attr({
706
706
  'data-value': this.options.value,
707
707
  'data-valuetext': textValue
708
708
  });
@@ -2066,7 +2066,7 @@ if((!advancedObjectProperties || !Object.create || !Object.defineProperties || !
2066
2066
  _create: function(){
2067
2067
  var i;
2068
2068
 
2069
- this.element.addClass('ws-range').attr({role: 'slider'}).append('<span class="ws-range-min ws-range-progress" /><span class="ws-range-rail ws-range-track"><span class="ws-range-thumb"><span data-value="" data-valuetext="" /></span></span>');
2069
+ this.element.addClass('ws-range').attr({role: 'slider'}).append('<span class="ws-range-min ws-range-progress" /><span class="ws-range-rail ws-range-track"><span class="ws-range-thumb"><span><span data-value="" data-valuetext="" /></span></span></span>');
2070
2070
  this.trail = $('.ws-range-track', this.element);
2071
2071
  this.range = $('.ws-range-progress', this.element);
2072
2072
  this.thumb = $('.ws-range-thumb', this.trail);
@@ -2148,7 +2148,7 @@ if((!advancedObjectProperties || !Object.create || !Object.defineProperties || !
2148
2148
  'aria-valuenow': this.options.value,
2149
2149
  'aria-valuetext': textValue
2150
2150
  });
2151
- $('span', this.thumb).attr({
2151
+ $('span[data-value]', this.thumb).attr({
2152
2152
  'data-value': this.options.value,
2153
2153
  'data-valuetext': textValue
2154
2154
  });
@@ -3140,7 +3140,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
3140
3140
  hasFullTrackSupport = Modernizr.track && !bugs.track;
3141
3141
 
3142
3142
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
3143
- hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
3143
+ hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
3144
3144
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
3145
3145
  var mediaelement = webshims.mediaelement;
3146
3146
 
@@ -3733,7 +3733,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3733
3733
  }
3734
3734
  webshims.ready('track', loadTrackUi);
3735
3735
  });
3736
- })(Modernizr, webshims);;webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
3736
+ })(Modernizr, webshims);
3737
+ ;webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
3737
3738
  "use strict";
3738
3739
 
3739
3740
  var mediaelement = webshims.mediaelement;
@@ -1828,6 +1828,9 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1828
1828
  if(typeof message == 'object'){
1829
1829
  message = message.defaultMessage;
1830
1830
  }
1831
+ if(webshims.replaceValidationplaceholder){
1832
+ message = webshims.replaceValidationplaceholder(elem, message);
1833
+ }
1831
1834
  return message || '';
1832
1835
  };
1833
1836
 
@@ -2245,7 +2248,7 @@ webshims.register('form-core', function($, webshims, window, document, undefined
2245
2248
  hasFullTrackSupport = Modernizr.track && !bugs.track;
2246
2249
 
2247
2250
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
2248
- hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
2251
+ hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
2249
2252
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
2250
2253
  var mediaelement = webshims.mediaelement;
2251
2254
 
@@ -2838,4 +2841,4 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
2838
2841
  }
2839
2842
  webshims.ready('track', loadTrackUi);
2840
2843
  });
2841
- })(Modernizr, webshims);
2844
+ })(Modernizr, webshims);
@@ -2689,7 +2689,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
2689
2689
  hasFullTrackSupport = Modernizr.track && !bugs.track;
2690
2690
 
2691
2691
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
2692
- hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
2692
+ hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
2693
2693
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
2694
2694
  var mediaelement = webshims.mediaelement;
2695
2695
 
@@ -3282,7 +3282,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
3282
3282
  }
3283
3283
  webshims.ready('track', loadTrackUi);
3284
3284
  });
3285
- })(Modernizr, webshims);;webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
3285
+ })(Modernizr, webshims);
3286
+ ;webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
3286
3287
  "use strict";
3287
3288
 
3288
3289
  var mediaelement = webshims.mediaelement;
@@ -549,7 +549,7 @@ var swfmini = function() {
549
549
  hasFullTrackSupport = Modernizr.track && !bugs.track;
550
550
 
551
551
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
552
- hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
552
+ hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
553
553
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
554
554
  var mediaelement = webshims.mediaelement;
555
555
 
@@ -1142,4 +1142,4 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1142
1142
  }
1143
1143
  webshims.ready('track', loadTrackUi);
1144
1144
  });
1145
- })(Modernizr, webshims);
1145
+ })(Modernizr, webshims);
@@ -1060,7 +1060,7 @@ if(!Modernizr.formattribute || !Modernizr.fieldsetdisabled || !Modernizr.fieldse
1060
1060
  },
1061
1061
  removeAttr: {
1062
1062
  value: function(){
1063
- desc.set.call(this, false);
1063
+ desc.prop.set.call(this, false);
1064
1064
  }
1065
1065
  }
1066
1066
  });
@@ -3529,7 +3529,7 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
3529
3529
  hasFullTrackSupport = Modernizr.track && !bugs.track;
3530
3530
 
3531
3531
  webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
3532
- hasSwf = swfmini.hasFlashPlayerVersion('9.0.115');
3532
+ hasSwf = swfmini.hasFlashPlayerVersion('10.0.3');
3533
3533
  $('html').addClass(hasSwf ? 'swf' : 'no-swf');
3534
3534
  var mediaelement = webshims.mediaelement;
3535
3535
 
@@ -4122,7 +4122,8 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
4122
4122
  }
4123
4123
  webshims.ready('track', loadTrackUi);
4124
4124
  });
4125
- })(Modernizr, webshims);;webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
4125
+ })(Modernizr, webshims);
4126
+ ;webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
4126
4127
  "use strict";
4127
4128
 
4128
4129
  var mediaelement = webshims.mediaelement;
@@ -915,27 +915,17 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
915
915
  }
916
916
  return message || '';
917
917
  };
918
+ var lReg = /</g;
919
+ var gReg = />/g;
918
920
  var valueVals = {
919
921
  value: 1,
920
922
  min: 1,
921
923
  max: 1
922
924
  };
923
-
924
- webshims.createValidationMessage = function(elem, name){
925
- var widget;
926
- var type = $.prop(elem, 'type');
927
- var message = getMessageFromObj(currentValidationMessage[name], elem);
928
- if(!message && name == 'badInput'){
929
- message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
930
- }
931
- if(!message && name == 'typeMismatch'){
932
- message = getMessageFromObj(currentValidationMessage.badInput, elem);
933
- }
934
- if(!message){
935
- message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
936
- webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+webshims.activeLang());
937
- }
938
- if(message){
925
+
926
+ webshims.replaceValidationplaceholder = function(elem, message, name){
927
+ var type, widget;
928
+ if(message && message.indexOf('{%') != -1){
939
929
  ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
940
930
  if(message.indexOf('{%'+attr) === -1){return;}
941
931
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
@@ -944,19 +934,36 @@ webshims.defineNodeNamesProperties(['input', 'button'], formSubmitterDescriptors
944
934
  }
945
935
  if(valueVals[attr]){
946
936
  if(!widget){
947
- widget = $(elem).getShadowElement().data('wsWidget'+type);
937
+ widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
948
938
  }
949
939
  if(widget && widget.formatValue){
950
940
  val = widget.formatValue(val, false);
951
941
  }
952
942
  }
953
- message = message.replace('{%'+ attr +'}', val);
943
+ message = message.replace('{%'+ attr +'}', val.replace(lReg, '&lt;').replace(gReg, '&gt;'));
954
944
  if('value' == attr){
955
945
  message = message.replace('{%valueLen}', val.length);
956
946
  }
957
-
947
+
958
948
  });
959
949
  }
950
+ return message;
951
+ };
952
+
953
+ webshims.createValidationMessage = function(elem, name){
954
+
955
+ var message = getMessageFromObj(currentValidationMessage[name], elem);
956
+ if(!message && name == 'badInput'){
957
+ message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
958
+ }
959
+ if(!message && name == 'typeMismatch'){
960
+ message = getMessageFromObj(currentValidationMessage.badInput, elem);
961
+ }
962
+ if(!message){
963
+ message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
964
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
965
+ }
966
+ message = webshims.replaceValidationplaceholder(elem, message, name);
960
967
 
961
968
  return message || '';
962
969
  };
@@ -1377,6 +1377,9 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1377
1377
  if(typeof message == 'object'){
1378
1378
  message = message.defaultMessage;
1379
1379
  }
1380
+ if(webshims.replaceValidationplaceholder){
1381
+ message = webshims.replaceValidationplaceholder(elem, message);
1382
+ }
1380
1383
  return message || '';
1381
1384
  };
1382
1385
 
@@ -1517,27 +1520,17 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1517
1520
  }
1518
1521
  return message || '';
1519
1522
  };
1523
+ var lReg = /</g;
1524
+ var gReg = />/g;
1520
1525
  var valueVals = {
1521
1526
  value: 1,
1522
1527
  min: 1,
1523
1528
  max: 1
1524
1529
  };
1525
-
1526
- webshims.createValidationMessage = function(elem, name){
1527
- var widget;
1528
- var type = $.prop(elem, 'type');
1529
- var message = getMessageFromObj(currentValidationMessage[name], elem);
1530
- if(!message && name == 'badInput'){
1531
- message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
1532
- }
1533
- if(!message && name == 'typeMismatch'){
1534
- message = getMessageFromObj(currentValidationMessage.badInput, elem);
1535
- }
1536
- if(!message){
1537
- message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
1538
- webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+webshims.activeLang());
1539
- }
1540
- if(message){
1530
+
1531
+ webshims.replaceValidationplaceholder = function(elem, message, name){
1532
+ var type, widget;
1533
+ if(message && message.indexOf('{%') != -1){
1541
1534
  ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
1542
1535
  if(message.indexOf('{%'+attr) === -1){return;}
1543
1536
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
@@ -1546,19 +1539,36 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1546
1539
  }
1547
1540
  if(valueVals[attr]){
1548
1541
  if(!widget){
1549
- widget = $(elem).getShadowElement().data('wsWidget'+type);
1542
+ widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
1550
1543
  }
1551
1544
  if(widget && widget.formatValue){
1552
1545
  val = widget.formatValue(val, false);
1553
1546
  }
1554
1547
  }
1555
- message = message.replace('{%'+ attr +'}', val);
1548
+ message = message.replace('{%'+ attr +'}', val.replace(lReg, '&lt;').replace(gReg, '&gt;'));
1556
1549
  if('value' == attr){
1557
1550
  message = message.replace('{%valueLen}', val.length);
1558
1551
  }
1559
-
1552
+
1560
1553
  });
1561
1554
  }
1555
+ return message;
1556
+ };
1557
+
1558
+ webshims.createValidationMessage = function(elem, name){
1559
+
1560
+ var message = getMessageFromObj(currentValidationMessage[name], elem);
1561
+ if(!message && name == 'badInput'){
1562
+ message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
1563
+ }
1564
+ if(!message && name == 'typeMismatch'){
1565
+ message = getMessageFromObj(currentValidationMessage.badInput, elem);
1566
+ }
1567
+ if(!message){
1568
+ message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
1569
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
1570
+ }
1571
+ message = webshims.replaceValidationplaceholder(elem, message, name);
1562
1572
 
1563
1573
  return message || '';
1564
1574
  };
@@ -1377,6 +1377,9 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1377
1377
  if(typeof message == 'object'){
1378
1378
  message = message.defaultMessage;
1379
1379
  }
1380
+ if(webshims.replaceValidationplaceholder){
1381
+ message = webshims.replaceValidationplaceholder(elem, message);
1382
+ }
1380
1383
  return message || '';
1381
1384
  };
1382
1385
 
@@ -1517,27 +1520,17 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1517
1520
  }
1518
1521
  return message || '';
1519
1522
  };
1523
+ var lReg = /</g;
1524
+ var gReg = />/g;
1520
1525
  var valueVals = {
1521
1526
  value: 1,
1522
1527
  min: 1,
1523
1528
  max: 1
1524
1529
  };
1525
-
1526
- webshims.createValidationMessage = function(elem, name){
1527
- var widget;
1528
- var type = $.prop(elem, 'type');
1529
- var message = getMessageFromObj(currentValidationMessage[name], elem);
1530
- if(!message && name == 'badInput'){
1531
- message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
1532
- }
1533
- if(!message && name == 'typeMismatch'){
1534
- message = getMessageFromObj(currentValidationMessage.badInput, elem);
1535
- }
1536
- if(!message){
1537
- message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
1538
- webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+webshims.activeLang());
1539
- }
1540
- if(message){
1530
+
1531
+ webshims.replaceValidationplaceholder = function(elem, message, name){
1532
+ var type, widget;
1533
+ if(message && message.indexOf('{%') != -1){
1541
1534
  ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
1542
1535
  if(message.indexOf('{%'+attr) === -1){return;}
1543
1536
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
@@ -1546,19 +1539,36 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1546
1539
  }
1547
1540
  if(valueVals[attr]){
1548
1541
  if(!widget){
1549
- widget = $(elem).getShadowElement().data('wsWidget'+type);
1542
+ widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
1550
1543
  }
1551
1544
  if(widget && widget.formatValue){
1552
1545
  val = widget.formatValue(val, false);
1553
1546
  }
1554
1547
  }
1555
- message = message.replace('{%'+ attr +'}', val);
1548
+ message = message.replace('{%'+ attr +'}', val.replace(lReg, '&lt;').replace(gReg, '&gt;'));
1556
1549
  if('value' == attr){
1557
1550
  message = message.replace('{%valueLen}', val.length);
1558
1551
  }
1559
-
1552
+
1560
1553
  });
1561
1554
  }
1555
+ return message;
1556
+ };
1557
+
1558
+ webshims.createValidationMessage = function(elem, name){
1559
+
1560
+ var message = getMessageFromObj(currentValidationMessage[name], elem);
1561
+ if(!message && name == 'badInput'){
1562
+ message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
1563
+ }
1564
+ if(!message && name == 'typeMismatch'){
1565
+ message = getMessageFromObj(currentValidationMessage.badInput, elem);
1566
+ }
1567
+ if(!message){
1568
+ message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
1569
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
1570
+ }
1571
+ message = webshims.replaceValidationplaceholder(elem, message, name);
1562
1572
 
1563
1573
  return message || '';
1564
1574
  };
@@ -1377,6 +1377,9 @@ webshims.register('form-core', function($, webshims, window, document, undefined
1377
1377
  if(typeof message == 'object'){
1378
1378
  message = message.defaultMessage;
1379
1379
  }
1380
+ if(webshims.replaceValidationplaceholder){
1381
+ message = webshims.replaceValidationplaceholder(elem, message);
1382
+ }
1380
1383
  return message || '';
1381
1384
  };
1382
1385
 
@@ -1263,27 +1263,17 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1263
1263
  }
1264
1264
  return message || '';
1265
1265
  };
1266
+ var lReg = /</g;
1267
+ var gReg = />/g;
1266
1268
  var valueVals = {
1267
1269
  value: 1,
1268
1270
  min: 1,
1269
1271
  max: 1
1270
1272
  };
1271
-
1272
- webshims.createValidationMessage = function(elem, name){
1273
- var widget;
1274
- var type = $.prop(elem, 'type');
1275
- var message = getMessageFromObj(currentValidationMessage[name], elem);
1276
- if(!message && name == 'badInput'){
1277
- message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
1278
- }
1279
- if(!message && name == 'typeMismatch'){
1280
- message = getMessageFromObj(currentValidationMessage.badInput, elem);
1281
- }
1282
- if(!message){
1283
- message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
1284
- webshims.info('could not find errormessage for: '+ name +' / '+ type +'. in language: '+webshims.activeLang());
1285
- }
1286
- if(message){
1273
+
1274
+ webshims.replaceValidationplaceholder = function(elem, message, name){
1275
+ var type, widget;
1276
+ if(message && message.indexOf('{%') != -1){
1287
1277
  ['value', 'min', 'max', 'title', 'maxlength', 'minlength', 'label'].forEach(function(attr){
1288
1278
  if(message.indexOf('{%'+attr) === -1){return;}
1289
1279
  var val = ((attr == 'label') ? $.trim($('label[for="'+ elem.id +'"]', elem.form).text()).replace(/\*$|:$/, '') : $.prop(elem, attr)) || '';
@@ -1292,19 +1282,36 @@ webshims.register('dom-extend', function($, webshims, window, document, undefine
1292
1282
  }
1293
1283
  if(valueVals[attr]){
1294
1284
  if(!widget){
1295
- widget = $(elem).getShadowElement().data('wsWidget'+type);
1285
+ widget = $(elem).getShadowElement().data('wsWidget'+ (type = $.prop(elem, 'type')));
1296
1286
  }
1297
1287
  if(widget && widget.formatValue){
1298
1288
  val = widget.formatValue(val, false);
1299
1289
  }
1300
1290
  }
1301
- message = message.replace('{%'+ attr +'}', val);
1291
+ message = message.replace('{%'+ attr +'}', val.replace(lReg, '&lt;').replace(gReg, '&gt;'));
1302
1292
  if('value' == attr){
1303
1293
  message = message.replace('{%valueLen}', val.length);
1304
1294
  }
1305
-
1295
+
1306
1296
  });
1307
1297
  }
1298
+ return message;
1299
+ };
1300
+
1301
+ webshims.createValidationMessage = function(elem, name){
1302
+
1303
+ var message = getMessageFromObj(currentValidationMessage[name], elem);
1304
+ if(!message && name == 'badInput'){
1305
+ message = getMessageFromObj(currentValidationMessage.typeMismatch, elem);
1306
+ }
1307
+ if(!message && name == 'typeMismatch'){
1308
+ message = getMessageFromObj(currentValidationMessage.badInput, elem);
1309
+ }
1310
+ if(!message){
1311
+ message = getMessageFromObj(validityMessages[''][name], elem) || $.prop(elem, 'validationMessage');
1312
+ webshims.info('could not find errormessage for: '+ name +' / '+ $.prop(elem, 'type') +'. in language: '+webshims.activeLang());
1313
+ }
1314
+ message = webshims.replaceValidationplaceholder(elem, message, name);
1308
1315
 
1309
1316
  return message || '';
1310
1317
  };