apps/uvdesk/custom-fields/src/Resources/views/CustomFields/customFieldValidation.html.twig line 1

Open in your IDE?
  1. <script>
  2. customFieldValidation = {};
  3. customHandler = function(value, attr, computedState) {
  4. if(!$('[name="'+ attr + '"]').parents('.uv-element-block').is(':visible') && !$('[name="'+ attr + '[]' + '"]').parents('.uv-element-block').is(':visible')) {
  5. return false;
  6. } else {
  7. var ele = $('[name="'+ attr + '"]');
  8. ele = ele.length ? ele : $('[name="'+ attr + '[]' + '"]');
  9. if(ele[0].type == 'radio') {
  10. var returnMe = true;
  11. $.each(ele, function(key, eleChild) {
  12. if($(eleChild).is(':checked')) {
  13. returnMe = false;
  14. }
  15. });
  16. return returnMe;
  17. } else if(ele[0].type == 'checkbox') {
  18. var returnMe = true;
  19. $.each(ele, function(key, eleChild) {
  20. if($(eleChild).is(':checked')) {
  21. returnMe = false;
  22. }
  23. });
  24. return returnMe;
  25. } else if(!$('#create-ticket-form [name="'+ attr + '"]').val()) {
  26. return true;
  27. }
  28. }
  29. };
  30. _.extend(Backbone.Validation.validators, {
  31. checkAllowedDomain: function(value, attr, customValue, model) {
  32. if(!$('[name="'+ attr + '"]').parents('.uv-element-block').is(':visible'))
  33. return false;
  34. domain = value.substring(value.indexOf("@") + 1);
  35. if(customValue && customValue.indexOf(domain) === -1) {
  36. return true; //return error
  37. }
  38. },
  39. checkRestrictedDomain: function(value, attr, customValue, model) {
  40. if(!$('[name="'+ attr + '"]').parents('.uv-element-block').is(':visible'))
  41. return false;
  42. domain = value.substring(value.indexOf("@") + 1);
  43. if(customValue && customValue.indexOf(domain) !== -1) {
  44. return true; //return error
  45. }
  46. },
  47. checkMaxFileSize: function(value, attr, customValue, model) {
  48. if(!$('[name="'+ attr + '"]').parents('.uv-element-block').is(':visible'))
  49. return false;
  50. fileInput = $('input[name="' + attr + '"]')[0] ? $('input[name="' + attr + '"]')[0] : $('input[name="' + attr + '"]');
  51. file = fileInput.files? fileInput.files[0] : '';
  52. filesize = file ? file.size / 1024 : 0;
  53. maxSize = (customValue && parseInt(customValue)) ? parseInt(customValue) : 5120;
  54. if(filesize > maxSize) {
  55. return true; //return error
  56. }
  57. },
  58. patternOrEmpty: function(value, attr, pattern, model) {
  59. defaultPatterns = Backbone.Validation.patterns;
  60. if (value && !value.toString().match(defaultPatterns[pattern] || pattern)) {
  61. return true; //error
  62. }
  63. },
  64. minOrEmpty: function(value, attr, minValue, model) {
  65. if (value && (value < minValue)) {
  66. return true; //error
  67. }
  68. },
  69. maxOrEmpty: function(value, attr, maxValue, model) {
  70. if (value && (value > maxValue)) {
  71. return true; //error
  72. }
  73. },
  74. patternCheck: function(value, attr, pattern, model) {
  75. if (value && !value.toString().match(pattern)) {
  76. return true; //error
  77. }
  78. },
  79. });
  80. {% if headerCustomFields is defined and headerCustomFields %}
  81. {% for customField in headerCustomFields %}
  82. {% set fieldtype = ('text' != customField['fieldType']) ? customField['fieldType'] : (customField['validation']['fieldtype'] is defined ? customField['validation']['fieldtype'] : 'text') %}
  83. customFieldValidation['customFields[' + {{ customField.id }} + ']'] = [
  84. {% if not(fieldtype in ['checkbox', 'radio', 'select'] and customField['customFieldValues'] is empty) and customField.required %}
  85. {
  86. fn : customHandler,
  87. msg : '{{ "This field is mandatory"|trans }}'
  88. },
  89. {% endif %}
  90. {% if('number' == fieldtype) %}
  91. {
  92. patternOrEmpty : 'number',
  93. msg: '{{ "Value is not valid number"|trans }}',
  94. },
  95. {% if customField['validation']['minNo'] %}
  96. {
  97. minOrEmpty: {{ customField['validation']['minNo'] }},
  98. msg: '{{ "Provide number greater than %min%"|trans({"%min%": customField["validation"]["minNo"] }) }}',
  99. },
  100. {% endif %}
  101. {% if customField['validation']['maxNo'] %}
  102. {
  103. maxOrEmpty: {{ customField['validation']['maxNo'] }},
  104. msg: '{{ "Provide number smaller than %max%"|trans({"%max%": customField["validation"]["maxNo"] }) }}',
  105. },
  106. {% endif %}
  107. {% elseif('email' == fieldtype) %}
  108. {
  109. patternOrEmpty: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
  110. msg: '{{ "Email Address is invalid"|trans }}',
  111. },
  112. {% if customField['validation']['allowedDomain'] %}
  113. {
  114. checkAllowedDomain: "{{ customField['validation']['allowedDomain'] }}",
  115. msg: '{{ "Domain name should be in accepted domains"|trans }}',
  116. },
  117. {% endif %}
  118. {% if customField['validation']['restrictedDomain'] %}
  119. {
  120. checkRestrictedDomain: "{{ customField['validation']['restrictedDomain'] }}",
  121. msg: '{{ "Domain name should not be in restricted domains" }}',
  122. } ,
  123. {% endif %}
  124. {% elseif('url' == fieldtype) %}
  125. {
  126. patternOrEmpty: 'url',
  127. msg: '{{ "Provide a valid url(with protocol)"|trans }}',
  128. } ,
  129. {% elseif('file' == fieldtype) %}
  130. {
  131. checkMaxFileSize: "{{ customField['validation']['maxFileSize'] }}",
  132. msg: '{{ "file size should not exceed %value% KB"|trans({"%value%": customField["validation"]["maxFileSize"] ? : "5120"}) }}',
  133. } ,
  134. {% endif %}
  135. {% if (not (fieldtype in ['checkbox', 'radio', 'select'])) and customField['validation']['regex'] is defined and customField['validation']['regex'] %}
  136. {
  137. patternCheck: "{{ customField['validation']['regex'] }}",
  138. msg: "{{ 'This Field Value is not Valid'|trans }}",
  139. } ,
  140. {% endif %}
  141. ];
  142. Array.isArray(validationParameters) ? validationParameters.push(value) : false;
  143. {% endfor %}
  144. {% endif %}
  145. {% if CustomerCustomFields is defined and CustomerCustomFields %}
  146. {% for customField in CustomerCustomFields %}
  147. {% set fieldtype = ('text' != customField['fieldType']) ? customField['fieldType'] : (customField['validation']['fieldtype'] is defined ? customField['validation']['fieldtype'] : 'text') %}
  148. customFieldValidation['customFields[' + {{ customField.id }} + ']'] = [
  149. {% if not(fieldtype in ['checkbox', 'radio', 'select'] and customField['customFieldValues'] is empty) and customField.required %}
  150. {
  151. fn : customHandler,
  152. msg : '{{ "This field is mandatory"|trans }}'
  153. },
  154. {% endif %}
  155. {% if('number' == fieldtype) %}
  156. {
  157. patternOrEmpty : 'number',
  158. msg: '{{ "Value is not valid number"|trans }}',
  159. },
  160. {% if customField['validation']['minNo'] %}
  161. {
  162. minOrEmpty: {{ customField['validation']['minNo'] }},
  163. msg: '{{ "Provide number greater than %min%"|trans({"%min%": customField["validation"]["minNo"] }) }}',
  164. },
  165. {% endif %}
  166. {% if customField['validation']['maxNo'] %}
  167. {
  168. maxOrEmpty: {{ customField['validation']['maxNo'] }},
  169. msg: '{{ "Provide number smaller than %max%"|trans({"%max%": customField["validation"]["maxNo"] }) }}',
  170. },
  171. {% endif %}
  172. {% elseif('email' == fieldtype) %}
  173. {
  174. patternOrEmpty: /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,
  175. msg: '{{ "Email Address is invalid"|trans }}',
  176. },
  177. {% if customField['validation']['allowedDomain'] %}
  178. {
  179. checkAllowedDomain: "{{ customField['validation']['allowedDomain'] }}",
  180. msg: '{{ "Domain name should be in accepted domains"|trans }}',
  181. },
  182. {% endif %}
  183. {% if customField['validation']['restrictedDomain'] %}
  184. {
  185. checkRestrictedDomain: "{{ customField['validation']['restrictedDomain'] }}",
  186. msg: '{{ "Domain name should not be in restricted domains" }}',
  187. } ,
  188. {% endif %}
  189. {% elseif('url' == fieldtype) %}
  190. {
  191. patternOrEmpty: 'url',
  192. msg: '{{ "Provide a valid url(with protocol)"|trans }}',
  193. } ,
  194. {% elseif('file' == fieldtype) %}
  195. {
  196. checkMaxFileSize: "{{ customField['validation']['maxFileSize'] }}",
  197. msg: '{{ "file size should not exceed %value% KB"|trans({"%value%": customField["validation"]["maxFileSize"] ? : "5120"}) }}',
  198. } ,
  199. {% endif %}
  200. {% if (not (fieldtype in ['checkbox', 'radio', 'select'])) and customField['validation']['regex'] is defined and customField['validation']['regex'] %}
  201. {
  202. patternCheck: "{{ customField['validation']['regex'] }}",
  203. msg: "{{ 'This Field Value is not Valid'|trans }}",
  204. } ,
  205. {% endif %}
  206. ];
  207. Array.isArray(validationParameters) ? validationParameters.push(value) : false;
  208. {% endfor %}
  209. {% endif %}
  210. var validationParameters = true;
  211. </script>