<script>
customFieldValidation = {};
customHandler = function(value, attr, computedState) {
if(!$('[name="'+ attr + '"]').parents('.uv-element-block').is(':visible') && !$('[name="'+ attr + '[]' + '"]').parents('.uv-element-block').is(':visible')) {
return false;
} else {
var ele = $('[name="'+ attr + '"]');
ele = ele.length ? ele : $('[name="'+ attr + '[]' + '"]');
if(ele[0].type == 'radio') {
var returnMe = true;
$.each(ele, function(key, eleChild) {
if($(eleChild).is(':checked')) {
returnMe = false;
}
});
return returnMe;
} else if(ele[0].type == 'checkbox') {
var returnMe = true;
$.each(ele, function(key, eleChild) {
if($(eleChild).is(':checked')) {
returnMe = false;
}
});
return returnMe;
} else if(!$('#create-ticket-form [name="'+ attr + '"]').val()) {
return true;
}
}
};
_.extend(Backbone.Validation.validators, {
checkAllowedDomain: function(value, attr, customValue, model) {
if(!$('[name="'+ attr + '"]').parents('.uv-element-block').is(':visible'))
return false;
domain = value.substring(value.indexOf("@") + 1);
if(customValue && customValue.indexOf(domain) === -1) {
return true; //return error
}
},
checkRestrictedDomain: function(value, attr, customValue, model) {
if(!$('[name="'+ attr + '"]').parents('.uv-element-block').is(':visible'))
return false;
domain = value.substring(value.indexOf("@") + 1);
if(customValue && customValue.indexOf(domain) !== -1) {
return true; //return error
}
},
checkMaxFileSize: function(value, attr, customValue, model) {
if(!$('[name="'+ attr + '"]').parents('.uv-element-block').is(':visible'))
return false;
fileInput = $('input[name="' + attr + '"]')[0] ? $('input[name="' + attr + '"]')[0] : $('input[name="' + attr + '"]');
file = fileInput.files? fileInput.files[0] : '';
filesize = file ? file.size / 1024 : 0;
maxSize = (customValue && parseInt(customValue)) ? parseInt(customValue) : 5120;
if(filesize > maxSize) {
return true; //return error
}
},
patternOrEmpty: function(value, attr, pattern, model) {
defaultPatterns = Backbone.Validation.patterns;
if (value && !value.toString().match(defaultPatterns[pattern] || pattern)) {
return true; //error
}
},
minOrEmpty: function(value, attr, minValue, model) {
if (value && (value < minValue)) {
return true; //error
}
},
maxOrEmpty: function(value, attr, maxValue, model) {
if (value && (value > maxValue)) {
return true; //error
}
},
patternCheck: function(value, attr, pattern, model) {
if (value && !value.toString().match(pattern)) {
return true; //error
}
},
});
{% if headerCustomFields is defined and headerCustomFields %}
{% for customField in headerCustomFields %}
{% set fieldtype = ('text' != customField['fieldType']) ? customField['fieldType'] : (customField['validation']['fieldtype'] is defined ? customField['validation']['fieldtype'] : 'text') %}
customFieldValidation['customFields[' + {{ customField.id }} + ']'] = [
{% if not(fieldtype in ['checkbox', 'radio', 'select'] and customField['customFieldValues'] is empty) and customField.required %}
{
fn : customHandler,
msg : '{{ "This field is mandatory"|trans }}'
},
{% endif %}
{% if('number' == fieldtype) %}
{
patternOrEmpty : 'number',
msg: '{{ "Value is not valid number"|trans }}',
},
{% if customField['validation']['minNo'] %}
{
minOrEmpty: {{ customField['validation']['minNo'] }},
msg: '{{ "Provide number greater than %min%"|trans({"%min%": customField["validation"]["minNo"] }) }}',
},
{% endif %}
{% if customField['validation']['maxNo'] %}
{
maxOrEmpty: {{ customField['validation']['maxNo'] }},
msg: '{{ "Provide number smaller than %max%"|trans({"%max%": customField["validation"]["maxNo"] }) }}',
},
{% endif %}
{% elseif('email' == fieldtype) %}
{
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,
msg: '{{ "Email Address is invalid"|trans }}',
},
{% if customField['validation']['allowedDomain'] %}
{
checkAllowedDomain: "{{ customField['validation']['allowedDomain'] }}",
msg: '{{ "Domain name should be in accepted domains"|trans }}',
},
{% endif %}
{% if customField['validation']['restrictedDomain'] %}
{
checkRestrictedDomain: "{{ customField['validation']['restrictedDomain'] }}",
msg: '{{ "Domain name should not be in restricted domains" }}',
} ,
{% endif %}
{% elseif('url' == fieldtype) %}
{
patternOrEmpty: 'url',
msg: '{{ "Provide a valid url(with protocol)"|trans }}',
} ,
{% elseif('file' == fieldtype) %}
{
checkMaxFileSize: "{{ customField['validation']['maxFileSize'] }}",
msg: '{{ "file size should not exceed %value% KB"|trans({"%value%": customField["validation"]["maxFileSize"] ? : "5120"}) }}',
} ,
{% endif %}
{% if (not (fieldtype in ['checkbox', 'radio', 'select'])) and customField['validation']['regex'] is defined and customField['validation']['regex'] %}
{
patternCheck: "{{ customField['validation']['regex'] }}",
msg: "{{ 'This Field Value is not Valid'|trans }}",
} ,
{% endif %}
];
Array.isArray(validationParameters) ? validationParameters.push(value) : false;
{% endfor %}
{% endif %}
{% if CustomerCustomFields is defined and CustomerCustomFields %}
{% for customField in CustomerCustomFields %}
{% set fieldtype = ('text' != customField['fieldType']) ? customField['fieldType'] : (customField['validation']['fieldtype'] is defined ? customField['validation']['fieldtype'] : 'text') %}
customFieldValidation['customFields[' + {{ customField.id }} + ']'] = [
{% if not(fieldtype in ['checkbox', 'radio', 'select'] and customField['customFieldValues'] is empty) and customField.required %}
{
fn : customHandler,
msg : '{{ "This field is mandatory"|trans }}'
},
{% endif %}
{% if('number' == fieldtype) %}
{
patternOrEmpty : 'number',
msg: '{{ "Value is not valid number"|trans }}',
},
{% if customField['validation']['minNo'] %}
{
minOrEmpty: {{ customField['validation']['minNo'] }},
msg: '{{ "Provide number greater than %min%"|trans({"%min%": customField["validation"]["minNo"] }) }}',
},
{% endif %}
{% if customField['validation']['maxNo'] %}
{
maxOrEmpty: {{ customField['validation']['maxNo'] }},
msg: '{{ "Provide number smaller than %max%"|trans({"%max%": customField["validation"]["maxNo"] }) }}',
},
{% endif %}
{% elseif('email' == fieldtype) %}
{
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,
msg: '{{ "Email Address is invalid"|trans }}',
},
{% if customField['validation']['allowedDomain'] %}
{
checkAllowedDomain: "{{ customField['validation']['allowedDomain'] }}",
msg: '{{ "Domain name should be in accepted domains"|trans }}',
},
{% endif %}
{% if customField['validation']['restrictedDomain'] %}
{
checkRestrictedDomain: "{{ customField['validation']['restrictedDomain'] }}",
msg: '{{ "Domain name should not be in restricted domains" }}',
} ,
{% endif %}
{% elseif('url' == fieldtype) %}
{
patternOrEmpty: 'url',
msg: '{{ "Provide a valid url(with protocol)"|trans }}',
} ,
{% elseif('file' == fieldtype) %}
{
checkMaxFileSize: "{{ customField['validation']['maxFileSize'] }}",
msg: '{{ "file size should not exceed %value% KB"|trans({"%value%": customField["validation"]["maxFileSize"] ? : "5120"}) }}',
} ,
{% endif %}
{% if (not (fieldtype in ['checkbox', 'radio', 'select'])) and customField['validation']['regex'] is defined and customField['validation']['regex'] %}
{
patternCheck: "{{ customField['validation']['regex'] }}",
msg: "{{ 'This Field Value is not Valid'|trans }}",
} ,
{% endif %}
];
Array.isArray(validationParameters) ? validationParameters.push(value) : false;
{% endfor %}
{% endif %}
var validationParameters = true;
</script>