232 lines
No EOL
7 KiB
JavaScript
232 lines
No EOL
7 KiB
JavaScript
/**
|
|
* Form validation configuration file.
|
|
*
|
|
* See jQuery validation plugin documentation for more information.
|
|
*/
|
|
define([
|
|
"regex",
|
|
|
|
"jquery",
|
|
"jquery.validate",
|
|
],
|
|
function(regex){
|
|
|
|
/****************************************************/
|
|
/*********** Custom validation methods *************/
|
|
/****************************************************/
|
|
|
|
//don't ignore hidden select (for "select2 plugin" selects validation)
|
|
$.validator.setDefaults({
|
|
ignore: "null"
|
|
});
|
|
|
|
//custom validation rules
|
|
$.validator.addMethod("tag",
|
|
function(value, element) {
|
|
return /^[\w,]+$/.test(value);
|
|
},
|
|
"Only alphanum., '_' and ',' char."
|
|
);
|
|
|
|
$.validator.addMethod("reviewer",
|
|
function (value, element) {
|
|
return /^[A-Za-z\u00C0-\u017F '-].*$/.test(value);
|
|
},
|
|
"Only alpha., ''', '-' and ' ' char."
|
|
);
|
|
|
|
//avoid parsing errors with the RegExps used in setDesc
|
|
$.validator.addMethod("noChangelogTag",
|
|
function(value, element) {
|
|
return ! regex.changelog_tag.test(value);
|
|
},
|
|
"No changelog tag (for parsing)."
|
|
);
|
|
|
|
//avoid parsing errors with the RegExps used in setDesc
|
|
$.validator.addMethod("noReviewerTag",
|
|
function(value, element) {
|
|
return ! regex.reviewer_tag.test(value);
|
|
},
|
|
"No reviewer tag (for parsing)."
|
|
);
|
|
|
|
//avoid parsing errors with the RegExps used in setDesc
|
|
$.validator.addMethod("noValidatorTag",
|
|
function(value, element) {
|
|
return ! regex.validator_tag.test(value);
|
|
},
|
|
"No validator tag."
|
|
);
|
|
|
|
$.validator.addMethod("noCarriageReturn",
|
|
function(value, element) {
|
|
return ! /\n/.test(value);
|
|
},
|
|
"No carriage return."
|
|
);
|
|
|
|
$.validator.addMethod("noJiraIDMentioned",
|
|
function(value, element) {
|
|
var textOfDescription = $("#description_field").val();
|
|
var pattern = /(JD20\d\d-\d+)/i;
|
|
var jiraidPresent = pattern.test(textOfDescription);
|
|
if($("#closeJira").is(':checked')){
|
|
if(!jiraidPresent) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}, "Please Enter JIRA ID to be closed."
|
|
);
|
|
|
|
$.validator.addMethod("noDefaultDescription",
|
|
function (value, element) {
|
|
return value != "<saved by Perforce>";
|
|
},
|
|
"Please type a description."
|
|
);
|
|
|
|
/****************************************************/
|
|
/****************** Form options *******************/
|
|
/****************************************************/
|
|
|
|
var code_description = {
|
|
errorElement: 'span',
|
|
|
|
rules: {
|
|
scope_tag: {
|
|
required: true,
|
|
tag: true,
|
|
noChangelogTag: true, //useless because of tag rule
|
|
noReviewerTag: true, //useless because of tag rule
|
|
noValidatorTag: true, //useless because of tag rule
|
|
},
|
|
type_tag: {
|
|
required: true,
|
|
},
|
|
reviewer_field: {
|
|
noChangelogTag: true,
|
|
noReviewerTag: true,
|
|
noValidatorTag: true,
|
|
reviewer: true,
|
|
},
|
|
description_field: {
|
|
required: {
|
|
depends: function(element) {
|
|
return ($.trim($("#changelog_field").val()) == "");
|
|
}
|
|
},
|
|
minlength: 5,
|
|
noChangelogTag: true,
|
|
noReviewerTag: true,
|
|
noValidatorTag: true,
|
|
noDefaultDescription: true
|
|
},
|
|
changelog_field: {
|
|
required: {
|
|
depends: function(element) {
|
|
return ($.trim($("#description_field").val()) == "");
|
|
}
|
|
},
|
|
minlength: 5,
|
|
noChangelogTag: true,
|
|
noReviewerTag: true,
|
|
noValidatorTag: true,
|
|
noCarriageReturn: true,
|
|
},
|
|
closeJira: {
|
|
noJiraIDMentioned : true,
|
|
},
|
|
},
|
|
|
|
messages: {
|
|
description_field: {
|
|
required: "This field or 'Changelog' is required."
|
|
},
|
|
changelog_field: {
|
|
required: "This field or 'Description' is required."
|
|
},
|
|
},
|
|
|
|
highlight: function(element, errorClass) {
|
|
$(element).parent().parent().addClass(errorClass)
|
|
},
|
|
|
|
unhighlight: function(element, errorClass, validClass) {
|
|
$(element).parent().parent().removeClass(errorClass)
|
|
},
|
|
|
|
errorPlacement: function(error, element) {
|
|
element.parent().siblings().eq(0).append(error);
|
|
},
|
|
|
|
onfocusout: false,
|
|
onkeyup: false,
|
|
onclick: false,
|
|
onsubmit: false,
|
|
};
|
|
|
|
var data_description = {
|
|
errorElement: 'span',
|
|
|
|
rules: {
|
|
domain_tag: {
|
|
required: true
|
|
},
|
|
description_field: {
|
|
required: true,
|
|
minlength: 5,
|
|
noValidatorTag: true,
|
|
noDefaultDescription: true
|
|
}
|
|
},
|
|
|
|
highlight: function(element, errorClass) {
|
|
$(element).parent().parent().addClass(errorClass)
|
|
},
|
|
|
|
unhighlight: function(element, errorClass, validClass) {
|
|
$(element).parent().parent().removeClass(errorClass)
|
|
},
|
|
|
|
errorPlacement: function(error, element) {
|
|
element.parent().siblings().eq(0).append(error);
|
|
},
|
|
|
|
onfocusout: false,
|
|
onkeyup: false,
|
|
onclick: false,
|
|
onsubmit: false,
|
|
};
|
|
|
|
var validation_process = {
|
|
rules: {
|
|
login: {
|
|
required: true
|
|
},
|
|
password: {
|
|
required: true
|
|
},
|
|
},
|
|
|
|
highlight: function(element, errorClass) {
|
|
$(element).parent().parent().addClass(errorClass)
|
|
},
|
|
|
|
unhighlight: function(element, errorClass, validClass) {
|
|
$(element).parent().parent().removeClass(errorClass)
|
|
},
|
|
|
|
errorPlacement: function(error, element) {
|
|
//do nothing...
|
|
},
|
|
};
|
|
|
|
return {
|
|
code_description: code_description,
|
|
data_description: data_description,
|
|
validation_process: validation_process,
|
|
}
|
|
}
|
|
); |