[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/layouts/vlayout/modules/Settings/Picklist/resources/ -> Picklist.js (source)

   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+'" />&nbsp;&nbsp;'+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+'" />&nbsp;&nbsp;'+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  


Generated: Fri Nov 28 20:08:37 2014 Cross-referenced by PHPXref 0.7.1