[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 /*+*********************************************************************************** 2 * The contents of this file are subject to the vtiger CRM Public License Version 1.0 3 * ("License"); You may not use this file except in compliance with the License 4 * The Original Code is: vtiger CRM Open Source 5 * The Initial Developer of the Original Code is vtiger. 6 * Portions created by vtiger are Copyright (C) vtiger. 7 * All Rights Reserved. 8 *************************************************************************************/ 9 var Settings_Picklist_Js = { 10 11 registerModuleChangeEvent : function() { 12 jQuery('#pickListModules').on('change',function(e){ 13 var element = jQuery(e.currentTarget); 14 var selectedModule = jQuery(e.currentTarget).val(); 15 if(selectedModule.length <= 0) { 16 Settings_Vtiger_Index_Js.showMessage({'type': 'error','text':app.vtranslate('JS_PLEASE_SELECT_MODULE')}); 17 return; 18 } 19 var params = { 20 module : app.getModuleName(), 21 parent : app.getParentModuleName(), 22 source_module : selectedModule, 23 view : 'IndexAjax', 24 mode : 'getPickListDetailsForModule' 25 } 26 var progressIndicatorElement = jQuery.progressIndicator({ 27 'position' : 'html', 28 'blockInfo' : { 29 'enabled' : true 30 } 31 }); 32 AppConnector.request(params).then(function(data){ 33 jQuery('#modulePickListContainer').html(data); 34 progressIndicatorElement.progressIndicator({'mode':'hide'}); 35 app.changeSelectElementView(jQuery('#modulePickListContainer')); 36 Settings_Picklist_Js.registerModulePickListChangeEvent(); 37 jQuery('#modulePickList').trigger('change'); 38 }); 39 }); 40 }, 41 42 43 registerModulePickListChangeEvent : function() { 44 jQuery('#modulePickList').on('change',function(e){ 45 var params = { 46 module : app.getModuleName(), 47 parent : app.getParentModuleName(), 48 source_module : jQuery('#pickListModules').val(), 49 view : 'IndexAjax', 50 mode : 'getPickListValueForField', 51 pickListFieldId : jQuery(e.currentTarget).val() 52 } 53 var progressIndicatorElement = jQuery.progressIndicator({ 54 'position' : 'html', 55 'blockInfo' : { 56 'enabled' : true 57 } 58 }); 59 AppConnector.request(params).then(function(data){ 60 jQuery('#modulePickListValuesContainer').html(data); 61 app.showSelect2ElementView(jQuery('#rolesList')); 62 Settings_Picklist_Js.registerItemActions(); 63 progressIndicatorElement.progressIndicator({'mode':'hide'}); 64 }) 65 }) 66 }, 67 68 registerAddItemEvent : function() { 69 jQuery('#addItem').on('click',function(e){ 70 var data = jQuery('#createViewContents').find('.modal'); 71 var clonedCreateView = data.clone(true,true).removeClass('basicCreateView').addClass('createView'); 72 clonedCreateView.find('.rolesList').addClass('select2'); 73 var callBackFunction = function(data) { 74 jQuery('[name="addItemForm"]',data).validationEngine(); 75 Settings_Picklist_Js.registerAddItemSaveEvent(data); 76 Settings_Picklist_Js.regiserSelectRolesEvent(data); 77 } 78 app.showModalWindow(clonedCreateView, function(data) { 79 if(typeof callBackFunction == 'function') { 80 callBackFunction(data); 81 } 82 }); 83 }); 84 }, 85 86 87 registerAssingValueToRuleEvent : function() { 88 jQuery('#assignValue').on('click',function() { 89 var pickListValuesTable = jQuery('#pickListValuesTable'); 90 var selectedListItem = jQuery('.selectedListItem',pickListValuesTable); 91 if(selectedListItem.length > 0) { 92 var selectedValues = []; 93 jQuery.each(selectedListItem,function(i,element) { 94 selectedValues.push(jQuery(element).closest('tr').data('key')); 95 96 }); 97 } 98 99 var params = { 100 module : app.getModuleName(), 101 parent : app.getParentModuleName(), 102 source_module : jQuery('#pickListModules').val(), 103 view : 'IndexAjax', 104 mode : 'showAssignValueToRoleView', 105 pickListFieldId : jQuery('#modulePickList').val() 106 } 107 AppConnector.request(params).then(function(data) { 108 app.showModalWindow(data); 109 jQuery('[name="addItemForm"]',jQuery(data)).validationEngine(); 110 Settings_Picklist_Js.registerAssignValueToRoleSaveEvent(jQuery(data)); 111 if(selectedListItem.length > 0) { 112 jQuery('[name="assign_values[]"]',jQuery('#assignValueToRoleForm')).select2('val',selectedValues); 113 } 114 }); 115 }); 116 }, 117 118 registerAssignValueToRoleSaveEvent : function(data) { 119 jQuery('#assignValueToRoleForm').on('submit',function(e) { 120 var form = jQuery(e.currentTarget); 121 122 var assignValuesSelectElement = jQuery('[name="assign_values[]"]',form); 123 var assignValuesSelect2Element = app.getSelect2ElementFromSelect(assignValuesSelectElement); 124 var assignValueResult = Vtiger_MultiSelect_Validator_Js.invokeValidation(assignValuesSelectElement); 125 if(assignValueResult != true){ 126 assignValuesSelect2Element.validationEngine('showPrompt', assignValueResult , 'error','topLeft',true); 127 } else { 128 assignValuesSelect2Element.validationEngine('hide'); 129 } 130 131 var rolesSelectElement = jQuery('[name="rolesSelected[]"]',form); 132 var select2Element = app.getSelect2ElementFromSelect(rolesSelectElement); 133 var result = Vtiger_MultiSelect_Validator_Js.invokeValidation(rolesSelectElement); 134 if(result != true){ 135 select2Element.validationEngine('showPrompt', result , 'error','bottomLeft',true); 136 } else { 137 select2Element.validationEngine('hide'); 138 } 139 140 if(assignValueResult != true || result != true) { 141 e.preventDefault(); 142 return; 143 } else { 144 form.find('[name="saveButton"]').attr('disabled',"disabled"); 145 } 146 var params = jQuery(e.currentTarget).serializeFormData(); 147 AppConnector.request(params).then(function(data) { 148 if(typeof data.result != 'undefined') { 149 app.hideModalWindow(); 150 Settings_Vtiger_Index_Js.showMessage({text:app.vtranslate('JS_VALUE_ASSIGNED_SUCCESSFULLY'),type : 'success'}) 151 } 152 }); 153 e.preventDefault(); 154 }); 155 }, 156 157 registerEnablePickListValueClickEvent : function() { 158 jQuery('#listViewContents').on('click','.assignToRolePickListValue',function(e) { 159 jQuery('#saveOrder').removeAttr('disabled'); 160 161 var pickListVaue = jQuery(e.currentTarget) 162 if(pickListVaue.hasClass('selectedCell')) { 163 pickListVaue.removeClass('selectedCell').addClass('unselectedCell'); 164 pickListVaue.find('.icon-ok').remove(); 165 } else { 166 pickListVaue.removeClass('unselectedCell').addClass('selectedCell'); 167 pickListVaue.prepend('<i class="icon-ok pull-left"></i>'); 168 } 169 }); 170 }, 171 172 registerenableOrDisableListSaveEvent : function() { 173 jQuery('#saveOrder').on('click',function(e) { 174 var progressIndicatorElement = jQuery.progressIndicator({ 175 'position' : 'html', 176 'blockInfo' : { 177 'enabled' : true, 178 'elementToBlock' : jQuery('.tab-content') 179 } 180 }); 181 var pickListValues = jQuery('.assignToRolePickListValue'); 182 var disabledValues = []; 183 var enabledValues = []; 184 jQuery.each(pickListValues,function(i,element) { 185 var currentValue = jQuery(element); 186 if(currentValue.hasClass('selectedCell')){ 187 enabledValues.push(currentValue.data('id')); 188 } else { 189 disabledValues.push(currentValue.data('id')); 190 } 191 }); 192 var params = { 193 module : app.getModuleName(), 194 parent : app.getParentModuleName(), 195 action : 'SaveAjax', 196 mode : 'enableOrDisable', 197 enabled_values : enabledValues, 198 disabled_values : disabledValues, 199 picklistName : jQuery('[name="picklistName"]').val(), 200 rolesSelected : jQuery('#rolesList').val() 201 } 202 AppConnector.request(params).then(function(data) { 203 if(typeof data.result != 'undefined') { 204 jQuery(e.currentTarget).attr('disabled','disabled'); 205 progressIndicatorElement.progressIndicator({mode : 'hide'}); 206 Settings_Vtiger_Index_Js.showMessage({text:app.vtranslate('JS_LIST_UPDATED_SUCCESSFULLY'),type : 'success'}) 207 } 208 }); 209 }); 210 }, 211 212 regiserSelectRolesEvent : function(data) { 213 data.find('[name="rolesSelected[]"]').on('change',function(e) { 214 var rolesSelectElement = jQuery(e.currentTarget); 215 var selectedValue = rolesSelectElement.val(); 216 if(jQuery.inArray('all', selectedValue) != -1){ 217 rolesSelectElement.select2("val", ""); 218 rolesSelectElement.select2("val","all"); 219 rolesSelectElement.select2("close"); 220 rolesSelectElement.find('option').not(':first').attr('disabled','disabled'); 221 data.find(jQuery('.modal-body')).append('<div class="alert alert-info textAlignCenter">'+app.vtranslate('JS_ALL_ROLES_SELECTED')+'</div>') 222 } else { 223 rolesSelectElement.find('option').removeAttr('disabled','disabled'); 224 data.find('.modal-body').find('.alert').remove(); 225 } 226 }); 227 }, 228 229 registerRenameItemEvent : function() { 230 var thisInstance = this; 231 jQuery('#renameItem').on('click',function(e){ 232 var pickListValuesTable = jQuery('#pickListValuesTable'); 233 var selectedListItem = jQuery('.selectedListItem',pickListValuesTable); 234 var selectedListItemLength = selectedListItem.length; 235 if(selectedListItemLength > 1) { 236 var params = { 237 title : app.vtranslate('JS_MESSAGE'), 238 text: app.vtranslate('JS_MORE_THAN_ONE_ITEM_SELECTED'), 239 animation: 'show', 240 type: 'error' 241 }; 242 Vtiger_Helper_Js.showPnotify(params); 243 return; 244 } else{ 245 var params = { 246 module : app.getModuleName(), 247 parent : app.getParentModuleName(), 248 source_module : jQuery('#pickListModules').val(), 249 view : 'IndexAjax', 250 mode : 'showEditView', 251 pickListFieldId : jQuery('#modulePickList').val(), 252 fieldValue : selectedListItem.closest('tr').data('key') 253 } 254 AppConnector.request(params).then(function(data){ 255 app.showModalWindow(data); 256 var form = jQuery('#renameItemForm'); 257 thisInstance.registerScrollForNonEditablePicklistValues(form); 258 form.validationEngine(); 259 Settings_Picklist_Js.registerRenameItemSaveEvent(); 260 }); 261 } 262 }); 263 }, 264 265 /** 266 * Function to register the scroll bar for NonEditable Picklist Values 267 */ 268 registerScrollForNonEditablePicklistValues : function(container) { 269 jQuery(container).find('.nonEditablePicklistValues').slimScroll({ 270 height: '70px', 271 size: '6px' 272 }); 273 }, 274 275 registerDeleteItemEvent : function() { 276 var thisInstance = this; 277 jQuery('#deleteItem').on('click',function(e){ 278 var pickListValuesTable = jQuery('#pickListValuesTable'); 279 var selectedListItem = jQuery('.selectedListItem',pickListValuesTable); 280 var selectedListItemsArray = new Array(); 281 282 jQuery.each(selectedListItem,function(index,element){ 283 selectedListItemsArray.push(jQuery(element).closest('tr').data('key')); 284 }) 285 var pickListValues = jQuery('.pickListValue',pickListValuesTable); 286 if(pickListValues.length == selectedListItem.length) { 287 Settings_Vtiger_Index_Js.showMessage({text:app.vtranslate('JS_YOU_CANNOT_DELETE_ALL_THE_VALUES'),type : 'error'}) 288 return; 289 } 290 var params = { 291 module : app.getModuleName(), 292 parent : app.getParentModuleName(), 293 source_module : jQuery('#pickListModules').val(), 294 view : 'IndexAjax', 295 mode : 'showDeleteView', 296 pickListFieldId : jQuery('#modulePickList').val(), 297 fieldValue : JSON.stringify(selectedListItemsArray) 298 } 299 thisInstance.showDeleteItemForm(params); 300 }); 301 }, 302 303 registerDeleteOptionEvent : function() { 304 305 function result(value) { 306 var replaceValueElement = jQuery('#replaceValue'); 307 if(typeof value.added != 'undefined'){ 308 var id = value.added.id; 309 jQuery('#replaceValue option[value="'+id+'"]').remove(); 310 replaceValueElement.trigger('liszt:updated'); 311 } else { 312 var id = value.removed.id; 313 var text = value.removed.text; 314 replaceValueElement.append('<option value="'+id+'">'+text+'</option>'); 315 replaceValueElement.trigger('liszt:updated'); 316 } 317 } 318 jQuery('[name="delete_value[]"]').on("change", function(e) { 319 result({ 320 val:e.val, 321 added:e.added, 322 removed:e.removed 323 }); 324 }) 325 }, 326 327 duplicateItemNameCheck : function(container) { 328 var pickListValues = JSON.parse(jQuery('[name="pickListValues"]',container).val()); 329 var pickListValuesArr = new Array(); 330 jQuery.each(pickListValues,function(i,e){ 331 var decodedValue = app.getDecodedValue(e); 332 pickListValuesArr.push(jQuery.trim(decodedValue.toLowerCase())); 333 }); 334 335 var mode = jQuery('[name="mode"]', container).val(); 336 var newValue = jQuery.trim(jQuery('[name="newValue"]',container).val()); 337 var lowerCasedNewValue = newValue.toLowerCase(); 338 339 //Checking the new picklist value is already exists 340 if(jQuery.inArray(lowerCasedNewValue,pickListValuesArr) != -1){ 341 //while renaming the picklist values 342 if(mode == 'rename') { 343 var oldValue = jQuery.trim(jQuery('[name="oldValue"]',container).val()); 344 var lowerCasedOldValue = oldValue.toLowerCase(); 345 //allow to rename when the new value should not be same as old value and the new value only with case diffrence 346 if(oldValue != newValue && lowerCasedOldValue == lowerCasedNewValue) { 347 return false; 348 } 349 } 350 //while adding or renaming with different existing value 351 return true; 352 } else { 353 return false; 354 } 355 }, 356 357 registerChangeRoleEvent : function() { 358 jQuery('#rolesList').on('change',function(e) { 359 var progressIndicatorElement = jQuery.progressIndicator({ 360 'position' : 'html', 361 'blockInfo' : { 362 'enabled' : true, 363 'elementToBlock' : jQuery('.tab-content') 364 } 365 }); 366 var rolesList = jQuery(e.currentTarget); 367 var params = { 368 module : app.getModuleName(), 369 parent : app.getParentModuleName(), 370 view : 'IndexAjax', 371 mode : 'getPickListValueByRole', 372 rolesSelected : rolesList.val(), 373 pickListFieldId : jQuery('#modulePickList').val() 374 } 375 AppConnector.request(params).then(function(data) { 376 jQuery('#pickListValeByRoleContainer').html(data); 377 Settings_Picklist_Js.registerenableOrDisableListSaveEvent(); 378 progressIndicatorElement.progressIndicator({mode : 'hide'}); 379 }); 380 }) 381 }, 382 383 registerAddItemSaveEvent : function(container) { 384 container.find('[name="addItemForm"]').on('submit',function(e){ 385 var form = jQuery(e.currentTarget); 386 var validationResult = form.validationEngine('validate'); 387 if(validationResult == true) { 388 var duplicateCheckResult = Settings_Picklist_Js.duplicateItemNameCheck(container); 389 if(duplicateCheckResult == true) { 390 var errorMessage = app.vtranslate('JS_DUPLIACATE_ENTRIES_FOUND_FOR_THE_VALUE'); 391 var newValueEle = jQuery('[name="newValue"]',container); 392 var newValue = newValueEle.val(); 393 newValueEle.validationEngine('showPrompt', errorMessage+' '+'"'+newValue+'"' , 'error','bottomLeft',true); 394 e.preventDefault(); 395 return; 396 } 397 var invalidFields = form.data('jqv').InvalidFields; 398 if(invalidFields.length == 0){ 399 form.find('[name="saveButton"]').attr('disabled',"disabled"); 400 } 401 402 var params = jQuery(e.currentTarget).serializeFormData(); 403 var newValue = params.newValue; 404 params.newValue = jQuery.trim(newValue); 405 AppConnector.request(params).then(function(data) { 406 data = data.result; 407 var newValue = jQuery.trim(jQuery('[name="newValue"]',container).val()); 408 var dragImagePath = jQuery('#dragImagePath').val(); 409 var newElement = '<tr class="pickListValue cursorPointer"><td class="textOverflowEllipsis"><img class="alignMiddle" src="'+dragImagePath+'" /> '+newValue+'</td></tr>'; 410 var newPickListValueRow = jQuery(newElement).appendTo(jQuery('#pickListValuesTable').find('tbody')); 411 newPickListValueRow.attr('data-key',newValue); 412 newPickListValueRow.attr('data-key-id',data['id']); 413 app.hideModalWindow(); 414 var params = { 415 title : app.vtranslate('JS_MESSAGE'), 416 text: app.vtranslate('JS_ITEM_ADDED_SUCCESSFULLY'), 417 animation: 'show', 418 type: 'success' 419 }; 420 Vtiger_Helper_Js.showPnotify(params); 421 //update the new item in the hidden picklist values array 422 var pickListValuesEle = jQuery('[name="pickListValues"]'); 423 var pickListValuesArray = JSON.parse(pickListValuesEle.val()); 424 pickListValuesArray[data['id']] = newValue; 425 pickListValuesEle.val(JSON.stringify(pickListValuesArray)); 426 427 }); 428 } 429 e.preventDefault(); 430 }); 431 }, 432 433 registerRenameItemSaveEvent : function() { 434 jQuery('#renameItemForm').on('submit',function(e) { 435 var form = jQuery(e.currentTarget); 436 var validationResult = form.validationEngine('validate'); 437 if(validationResult == true) { 438 var duplicateCheckResult = Settings_Picklist_Js.duplicateItemNameCheck(form); 439 var newValueEle = jQuery('[name="newValue"]',form); 440 var newValue = jQuery.trim(newValueEle.val()); 441 if(duplicateCheckResult == true) { 442 var errorMessage = app.vtranslate('JS_DUPLIACATE_ENTRIES_FOUND_FOR_THE_VALUE'); 443 newValueEle.validationEngine('showPrompt', errorMessage+' '+'"'+newValue+'"' , 'error','bottomLeft',true); 444 e.preventDefault(); 445 return; 446 } 447 var oldElem = jQuery('[name="oldValue"]',form); 448 var oldValue = oldElem.val(); 449 var id = oldElem.find('option[value="'+oldValue+'"]').data('id'); 450 var params = jQuery(e.currentTarget).serializeFormData(); 451 params.newValue = newValue; 452 params.id = id; 453 var invalidFields = form.data('jqv').InvalidFields; 454 if(invalidFields.length == 0){ 455 form.find('[name="saveButton"]').attr('disabled',"disabled"); 456 } 457 AppConnector.request(params).then(function(data) { 458 if(typeof data.result != 'undefined'){ 459 app.hideModalWindow(); 460 var encodedOldValue = oldValue.replace(/"/g, '\\"'); 461 var dragImagePath = jQuery('#dragImagePath').val(); 462 var renamedElement = '<tr class="pickListValue cursorPointer"><td class="textOverflowEllipsis"><img class="alignMiddle" src="'+dragImagePath+'" /> '+newValue+'</td></tr>'; 463 var renamedElement = jQuery(renamedElement).attr('data-key',newValue).attr('data-key-id',id); 464 jQuery('[data-key="'+encodedOldValue+'"]').replaceWith(renamedElement) 465 var params = { 466 title : app.vtranslate('JS_MESSAGE'), 467 text: app.vtranslate('JS_ITEM_RENAMED_SUCCESSFULLY'), 468 animation: 'show', 469 type: 'success' 470 }; 471 Vtiger_Helper_Js.showPnotify(params); 472 473 //update the new item in the hidden picklist values array 474 var pickListValuesEle = jQuery('[name="pickListValues"]'); 475 var pickListValuesArray = JSON.parse(pickListValuesEle.val()); 476 pickListValuesArray[id] = newValueEle.val(); 477 pickListValuesEle.val(JSON.stringify(pickListValuesArray)); 478 } 479 }); 480 } 481 e.preventDefault(); 482 }); 483 }, 484 485 showDeleteItemForm : function(params) { 486 var thisInstance = this; 487 AppConnector.request(params).then(function(data){ 488 app.showModalWindow(data, function(data) { 489 if(typeof callBackFunction == 'function') { 490 callBackFunction(data); 491 } 492 }); 493 }); 494 495 var callBackFunction = function(data) { 496 var form = data.find('#deleteItemForm'); 497 thisInstance.registerScrollForNonEditablePicklistValues(form); 498 var maximumSelectionSize = jQuery('#pickListValuesCount').val()-1; 499 app.changeSelectElementView(jQuery('[name="delete_value[]"]'), 'select2', {maximumSelectionSize: maximumSelectionSize,dropdownCss : {'z-index' : 100001}}); 500 Settings_Picklist_Js.registerDeleteOptionEvent(); 501 502 var params = app.getvalidationEngineOptions(true); 503 params.onValidationComplete = function(form, valid){ 504 if(valid) { 505 var selectElement = jQuery('[name="delete_value[]"]'); 506 var select2Element = app.getSelect2ElementFromSelect(selectElement); 507 var result = Vtiger_MultiSelect_Validator_Js.invokeValidation(selectElement); 508 if(result != true){ 509 select2Element.validationEngine('showPrompt', result , 'error','topLeft',true); 510 return; 511 } else { 512 select2Element.validationEngine('hide'); 513 form.find('[name="saveButton"]').attr('disabled',"disabled"); 514 } 515 var deleteValues = jQuery('[name="delete_value[]"]').val(); 516 var params = form.serializeFormData(); 517 AppConnector.request(params).then(function(data) { 518 if(typeof data.result != 'undefined'){ 519 app.hideModalWindow(); 520 //delete the item in the hidden picklist values array 521 var pickListValuesEle = jQuery('[name="pickListValues"]'); 522 var pickListValuesArray = JSON.parse(pickListValuesEle.val()); 523 jQuery.each(deleteValues,function(i,e){ 524 var encodedOldValue = e.replace(/"/g, '\\"'); 525 jQuery('[data-key-id="'+encodedOldValue+'"]').remove(); 526 delete pickListValuesArray[e]; 527 }); 528 pickListValuesEle.val(JSON.stringify(pickListValuesArray)); 529 var params = { 530 title : app.vtranslate('JS_MESSAGE'), 531 text: app.vtranslate('JS_ITEMS_DELETED_SUCCESSFULLY'), 532 animation: 'show', 533 type: 'success' 534 }; 535 Vtiger_Helper_Js.showPnotify(params); 536 } 537 }); 538 } 539 return false; 540 } 541 form.validationEngine(params); 542 } 543 }, 544 545 registerSelectPickListValueEvent : function() { 546 jQuery("#pickListValuesTable").on('click','.pickListValue',function(event) { 547 var currentRow = jQuery(event.currentTarget); 548 var currentRowTd = currentRow.find('td'); 549 event.preventDefault(); 550 551 if(event.ctrlKey) { 552 currentRowTd.toggleClass('selectedListItem'); 553 } else { 554 jQuery(".pickListValue").find('td').not(currentRowTd).removeClass("selectedListItem"); 555 currentRowTd.toggleClass('selectedListItem'); 556 } 557 }); 558 }, 559 560 registerPickListValuesSortableEvent : function() { 561 var tbody = jQuery( "tbody",jQuery('#pickListValuesTable')); 562 tbody.sortable({ 563 'helper' : function(e,ui){ 564 //while dragging helper elements td element will take width as contents width 565 //so we are explicity saying that it has to be same width so that element will not 566 //look like distrubed 567 ui.children().each(function(index,element){ 568 element = jQuery(element); 569 element.width(element.width()); 570 }) 571 return ui; 572 }, 573 'containment' : tbody, 574 'revert' : true, 575 update: function(e, ui ) { 576 jQuery('#saveSequence').removeAttr('disabled'); 577 } 578 }); 579 }, 580 581 registerSaveSequenceClickEvent : function() { 582 jQuery('#saveSequence').on('click',function(e) { 583 var progressIndicatorElement = jQuery.progressIndicator({ 584 'position' : 'html', 585 'blockInfo' : { 586 'enabled' : true, 587 'elementToBlock' : jQuery('.tab-content') 588 } 589 }); 590 var pickListValuesSequenceArray = {} 591 var pickListValues = jQuery('#pickListValuesTable').find('.pickListValue'); 592 jQuery.each(pickListValues,function(i,element) { 593 pickListValuesSequenceArray[jQuery(element).data('key-id')] = ++i; 594 }); 595 var params = { 596 module : app.getModuleName(), 597 parent : app.getParentModuleName(), 598 action : 'SaveAjax', 599 mode : 'saveOrder', 600 picklistValues : pickListValuesSequenceArray, 601 picklistName : jQuery('[name="picklistName"]').val() 602 } 603 AppConnector.request(params).then(function(data) { 604 if(typeof data.result != 'undefined') { 605 jQuery('#saveSequence').attr('disabled','disabled'); 606 progressIndicatorElement.progressIndicator({mode : 'hide'}); 607 Settings_Vtiger_Index_Js.showMessage({text:app.vtranslate('JS_SEQUENCE_UPDATED_SUCCESSFULLY'),type : 'success'}) 608 } 609 }); 610 }); 611 }, 612 613 614 registerAssingValueToRoleTabClickEvent : function() { 615 jQuery('#assignedToRoleTab').on('click',function(e) { 616 jQuery('#rolesList').trigger('change'); 617 }); 618 }, 619 620 registerItemActions : function() { 621 Settings_Picklist_Js.registerAddItemEvent(); 622 Settings_Picklist_Js.registerRenameItemEvent(); 623 Settings_Picklist_Js.registerDeleteItemEvent(); 624 Settings_Picklist_Js.registerSelectPickListValueEvent(); 625 Settings_Picklist_Js.registerAssingValueToRuleEvent(); 626 Settings_Picklist_Js.registerChangeRoleEvent(); 627 Settings_Picklist_Js.registerAssingValueToRoleTabClickEvent(); 628 Settings_Picklist_Js.registerPickListValuesSortableEvent(); 629 Settings_Picklist_Js.registerSaveSequenceClickEvent(); 630 }, 631 632 633 registerEvents : function() { 634 Settings_Picklist_Js.registerModuleChangeEvent(); 635 Settings_Picklist_Js.registerModulePickListChangeEvent(); 636 Settings_Picklist_Js.registerItemActions(); 637 Settings_Picklist_Js.registerEnablePickListValueClickEvent(); 638 } 639 } 640 641 jQuery(document).ready(function(){ 642 Settings_Picklist_Js.registerEvents(); 643 }) 644 645 Vtiger_Base_Validator_Js("Vtiger_FieldLabel_Validator_Js",{ 646 647 /** 648 *Function which invokes field validation 649 *@param accepts field element as parameter 650 * @return error if validation fails true on success 651 */ 652 invokeValidation: function(field, rules, i, options){ 653 var instance = new Vtiger_FieldLabel_Validator_Js(); 654 instance.setElement(field); 655 var response = instance.validate(); 656 if(response != true){ 657 return instance.getError(); 658 } 659 } 660 661 },{ 662 /** 663 * Function to validate the field label 664 * @return true if validation is successfull 665 * @return false if validation error occurs 666 */ 667 validate: function(){ 668 var fieldValue = this.getFieldValue(); 669 return this.validateValue(fieldValue); 670 }, 671 672 validateValue : function(fieldValue){ 673 var specialChars = /[<\>\"\,]/ ; 674 675 if (specialChars.test(fieldValue)) { 676 var errorInfo = app.vtranslate('JS_SPECIAL_CHARACTERS')+" < > \" , "+app.vtranslate('JS_NOT_ALLOWED'); 677 this.setError(errorInfo); 678 return false; 679 } 680 return true; 681 } 682 }); 683
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |