apps/uvdesk/form-component/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.             
  55.             if(filesize > maxSize) {
  56.                 return true; //return error
  57.             }
  58.         },
  59.         patternOrEmpty: function(value, attr, pattern, model) {
  60.             defaultPatterns = Backbone.Validation.patterns;
  61.             if (value && !value.toString().match(defaultPatterns[pattern] || pattern)) {
  62.                 return true; //error
  63.             }
  64.         },
  65.       minOrEmpty: function(value, attr, minValue, model) {
  66.         if (value && (value < minValue)) {
  67.           return true; //error
  68.         }
  69.       },
  70.       maxOrEmpty: function(value, attr, maxValue, model) {
  71.         if (value && (value > maxValue)) {
  72.           return true; //error
  73.         }
  74.       },
  75.       patternCheck: function(value, attr, pattern, model) {
  76.         if (value && !value.toString().match(pattern)) {
  77.             return true; //error
  78.         }
  79.       },
  80.     });
  81.         {% if headerCustomFields is defined and headerCustomFields %}
  82.             {% for customField in headerCustomFields %}
  83.                 {% set fieldtype = ('text' != customField['fieldType']) ? customField['fieldType'] : (customField['validation']['fieldtype'] is defined ? customField['validation']['fieldtype'] : 'text') %}
  84.                     customFieldValidation['customFields[' + {{ customField.id }} + ']'] = [
  85.                     {% if not(fieldtype in ['checkbox', 'radio', 'select'] and customField['customFieldValues'] is empty) and customField.required %}
  86.                         {
  87.                         fn : customHandler,
  88.                         msg : '{{ "This field is mandatory"|trans }}'
  89.                     },
  90.                     {% endif %}
  91.                     {% if('number' == fieldtype) %}
  92.                         {
  93.                             patternOrEmpty : 'number',
  94.                             msg: '{{ "Value is not valid number"|trans }}',
  95.                         },
  96.                         {% if customField['validation']['minNo'] %} 
  97.                             {
  98.                                 minOrEmpty: {{ customField['validation']['minNo'] }},
  99.                                 msg: '{{ "Provide number greater than %min%"|trans({"%min%": customField["validation"]["minNo"] }) }}',
  100.                             },
  101.                         {% endif %}
  102.                         {% if customField['validation']['maxNo'] %} 
  103.                         {
  104.                             maxOrEmpty: {{ customField['validation']['maxNo'] }},
  105.                             msg: '{{ "Provide number smaller than %max%"|trans({"%max%": customField["validation"]["maxNo"] }) }}',
  106.                         },
  107.                         {% endif %}
  108.                     {% elseif('email' == fieldtype) %}
  109.                         {
  110.                             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,
  111.                             msg: '{{ "Email Address is invalid"|trans }}',
  112.                         },
  113.                         {% if customField['validation']['allowedDomain'] %}
  114.                             {
  115.                                 checkAllowedDomain: "{{ customField['validation']['allowedDomain'] }}",
  116.                                 msg: '{{ "Domain name should be in accepted domains"|trans }}',
  117.                             },
  118.                         {% endif %}
  119.                         {% if customField['validation']['restrictedDomain'] %}
  120.                             {
  121.                                 checkRestrictedDomain: "{{ customField['validation']['restrictedDomain'] }}",
  122.                                 msg: '{{ "Domain name should not be in restricted domains" }}',
  123.                             } ,
  124.                         {% endif %}
  125.                     {% elseif('url' == fieldtype) %}
  126.                         {
  127.                             patternOrEmpty: 'url',
  128.                             msg: '{{ "Provide a valid url(with protocol)"|trans }}',
  129.                         } ,
  130.                     {% elseif('file' == fieldtype) %}
  131.                         {
  132.                             checkMaxFileSize: "{{ customField['validation']['maxFileSize'] }}",
  133.                             msg: '{{ "file size should not exceed %value% KB"|trans({"%value%": customField["validation"]["maxFileSize"] ? : "5120"}) }}',
  134.                         } ,
  135.                     {% endif %}
  136.                     {% if (not (fieldtype in ['checkbox', 'radio', 'select'])) and customField['validation']['regex'] is defined and customField['validation']['regex'] %}
  137.                         {
  138.                             patternCheck: "{{ customField['validation']['regex'] }}",
  139.                             msg: "{{ 'This Field Value is not Valid'|trans }}",
  140.                         } ,
  141.                     {% endif %}
  142.                 ];
  143.                 Array.isArray(validationParameters) ? validationParameters.push(value) : false;
  144.             {% endfor %}
  145.         {% endif %}
  146.         {% if CustomerCustomFields is defined and CustomerCustomFields %}
  147.             {% for customField in CustomerCustomFields %}
  148.                 {% set fieldtype = ('text' != customField['fieldType']) ? customField['fieldType'] : (customField['validation']['fieldtype'] is defined ? customField['validation']['fieldtype'] : 'text') %}
  149.                     customFieldValidation['customFields[' + {{ customField.id }} + ']'] = [
  150.                     {% if not(fieldtype in ['checkbox', 'radio', 'select'] and customField['customFieldValues'] is empty) and customField.required %}
  151.                         {
  152.                         fn : customHandler,
  153.                         msg : '{{ "This field is mandatory"|trans }}'
  154.                     },
  155.                     {% endif %}
  156.                     {% if('number' == fieldtype) %}
  157.                         {
  158.                             patternOrEmpty : 'number',
  159.                             msg: '{{ "Value is not valid number"|trans }}',
  160.                         },
  161.                         {% if customField['validation']['minNo'] %} 
  162.                             {
  163.                                 minOrEmpty: {{ customField['validation']['minNo'] }},
  164.                                 msg: '{{ "Provide number greater than %min%"|trans({"%min%": customField["validation"]["minNo"] }) }}',
  165.                             },
  166.                         {% endif %}
  167.                         {% if customField['validation']['maxNo'] %} 
  168.                         {
  169.                             maxOrEmpty: {{ customField['validation']['maxNo'] }},
  170.                             msg: '{{ "Provide number smaller than %max%"|trans({"%max%": customField["validation"]["maxNo"] }) }}',
  171.                         },
  172.                         {% endif %}
  173.                     {% elseif('email' == fieldtype) %}
  174.                         {
  175.                             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,
  176.                             msg: '{{ "Email Address is invalid"|trans }}',
  177.                         },
  178.                         {% if customField['validation']['allowedDomain'] %}
  179.                             {
  180.                                 checkAllowedDomain: "{{ customField['validation']['allowedDomain'] }}",
  181.                                 msg: '{{ "Domain name should be in accepted domains"|trans }}',
  182.                             },
  183.                         {% endif %}
  184.                         {% if customField['validation']['restrictedDomain'] %}
  185.                             {
  186.                                 checkRestrictedDomain: "{{ customField['validation']['restrictedDomain'] }}",
  187.                                 msg: '{{ "Domain name should not be in restricted domains" }}',
  188.                             } ,
  189.                         {% endif %}
  190.                     {% elseif('url' == fieldtype) %}
  191.                         {
  192.                             patternOrEmpty: 'url',
  193.                             msg: '{{ "Provide a valid url(with protocol)"|trans }}',
  194.                         } ,
  195.                     {% elseif('file' == fieldtype) %}
  196.                         {
  197.                             checkMaxFileSize: "{{ customField['validation']['maxFileSize'] }}",
  198.                             msg: '{{ "file size should not exceed %value% KB"|trans({"%value%": customField["validation"]["maxFileSize"] ? : "5120"}) }}',
  199.                         } ,
  200.                     {% endif %}
  201.                     {% if (not (fieldtype in ['checkbox', 'radio', 'select'])) and customField['validation']['regex'] is defined and customField['validation']['regex'] %}
  202.                         {
  203.                             patternCheck: "{{ customField['validation']['regex'] }}",
  204.                             msg: "{{ 'This Field Value is not Valid'|trans }}",
  205.                         } ,
  206.                     {% endif %}
  207.                 ];
  208.                 Array.isArray(validationParameters) ? validationParameters.push(value) : false;
  209.             {% endfor %}
  210.         {% endif %}
  211.     var validationParameters = true;
  212. </script>