Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[JENKINS-33755] Used checkJobName service for validating the item name
  • Loading branch information
recena committed Mar 30, 2016
1 parent cd3302c commit e74075e
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 11 deletions.
1 change: 1 addition & 0 deletions core/src/main/resources/hudson/model/View/newJob.jelly
Expand Up @@ -40,6 +40,7 @@ THE SOFTWARE.
<input name="name" id="name" placeholder="New item name..." type="text" />
<div class="input-help">&#187; ${%ItemName.help}</div>
<div id="itemname-required" class="input-validation-message input-message-disabled">&#187; ${%ItemName.validation.required}</div>
<div id="itemname-invalid" class="input-validation-message input-message-disabled">&#187; </div>
<div id="itemtype-required" class="input-validation-message input-message-disabled">&#187; ${%ItemType.validation.required}</div>
</div>
</div>
Expand Down
43 changes: 32 additions & 11 deletions war/src/main/js/add-item.js
Expand Up @@ -22,6 +22,15 @@ $.when(getItems()).done(function(data){
//////////////////////////
// helper functions...

function parseResponseFromCheckJobName(data) {
var html = $.parseHTML(data);
var element = html[0];
if (element !== undefined) {
return $(element).text();
}
return undefined;
}

function cleanClassName(className){
return className.replace(/\./g,'_');
}
Expand Down Expand Up @@ -50,15 +59,15 @@ $.when(getItems()).done(function(data){
return $('input[type="text"][name="from"]', '#createItem').val();
}

function isItemNameValid() {
function isItemNameEmpty() {
var itemName = $('input[name="name"]', '#createItem').val();
if (itemName !== '') {
return true;
}
return false;
return (itemName === '') ? true : false;
}

function activateValidationMessage(messageId, context) {
function activateValidationMessage(messageId, context, message) {
if (message !== undefined && message !== '') {
$(messageId, context).text(message);
}
cleanValidationMessages(context);
hideInputHelp(context);
$(messageId).removeClass('input-message-disabled');
Expand Down Expand Up @@ -113,7 +122,7 @@ $.when(getItems()).done(function(data){
$this.find('input[type="radio"][name="mode"]').prop('checked', true);
$('input[type="text"][name="from"]', '#createItem').val('');
cleanValidationMessages('.add-item-copy');
if (!isItemNameValid()) {
if (isItemNameEmpty()) {
activateValidationMessage('#itemname-required', '.add-item-name');
$('input[name="name"][type="text"]', '#createItem').focus();
}
Expand Down Expand Up @@ -156,9 +165,21 @@ $.when(getItems()).done(function(data){

// Init NameField
$('input[name="name"]', '#createItem').blur(function() {
if (isItemNameValid()) {
cleanValidationMessages('.add-item-name');
showInputHelp('.add-item-name');
if (!isItemNameEmpty()) {
var itemName = $('input[name="name"]', '#createItem').val();
$.get(jRoot + "/checkJobName", { value: itemName }).done(function(data) {
var message = parseResponseFromCheckJobName(data);
if (message !== '') {
activateValidationMessage('#itemname-invalid', '.add-item-name', message);
$('input[name="name"][type="text"]', '#createItem').focus();
} else {
cleanValidationMessages('.add-item-name');
showInputHelp('.add-item-name');
}
});
} else {
activateValidationMessage('#itemname-required', '.add-item-name');
$('input[name="name"][type="text"]', '#createItem').focus();
}
});

Expand All @@ -176,7 +197,7 @@ $.when(getItems()).done(function(data){

// Client-side validation
$("#createItem").submit(function(event) {
if (!isItemNameValid()) {
if (isItemNameEmpty()) {
activateValidationMessage('#itemname-required', '.add-item-name');
$('input[name="name"][type="text"]', '#createItem').focus();
event.preventDefault();
Expand Down

0 comments on commit e74075e

Please sign in to comment.