[ Index ]

PHP Cross Reference of vtigercrm-6.1.0

title

Body

[close]

/layouts/vlayout/modules/Calendar/resources/ -> SharedCalendarView.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  
  10  
  11  Calendar_CalendarView_Js("SharedCalendar_SharedCalendarView_Js",{
  12          
  13      currentInstance : false,
  14      
  15      initiateCalendarFeeds : function() {
  16          Calendar_CalendarView_Js.currentInstance.performCalendarFeedIntiate();
  17      }
  18  },{
  19      
  20      multipleEvents : {},
  21      
  22      getAllUserColors : function() {
  23          var result = {};
  24          var calendarfeeds = jQuery('[data-calendar-feed]');
  25          
  26          calendarfeeds.each(function(index,element){
  27              var feedcheckbox = jQuery(element);
  28              var disabledOnes = app.cacheGet('calendar.feeds.disabled',[]); 
  29              if (disabledOnes.indexOf(feedcheckbox.data('calendar-sourcekey')) == -1) { 
  30                  feedcheckbox.attr('checked',true); 
  31                  var id = feedcheckbox.data('calendar-userid'); 
  32                  result[id] = feedcheckbox.data('calendar-feed-color')+','+feedcheckbox.data('calendar-feed-textcolor'); 
  33              }
  34          });
  35          
  36          return result;
  37      },
  38      
  39      fetchAllCalendarFeeds : function() {
  40          var thisInstance = this;
  41          var calendarfeeds = jQuery('[data-calendar-feed]');
  42          
  43          calendarfeeds.each(function(index,element){
  44              var feedcheckbox = jQuery(element);
  45              thisInstance.fetchCalendarFeed(feedcheckbox);
  46          });
  47          
  48          this.multipleEvents = false;
  49      },
  50      
  51      toDateString : function(date) {
  52          var d = date.getDate();
  53          var m = date.getMonth() +1;
  54          var y = date.getFullYear();
  55          
  56          d = (d <= 9)? ("0"+d) : d;
  57          m = (m <= 9)? ("0"+m) : m;
  58          return y + "-" + m + "-" + d;
  59      },
  60      fetchCalendarFeed : function(feedcheckbox) {
  61          var thisInstance = this;
  62          
  63          //var type = feedcheckbox.data('calendar-sourcekey');
  64          this.calendarfeedDS[feedcheckbox.data('calendar-sourcekey')] = function(start, end, callback) {
  65              if(typeof thisInstance.multipleEvents != 'undefined' && thisInstance.multipleEvents != false){
  66                  var events = thisInstance.multipleEvents[feedcheckbox.data('calendar-userid')];
  67                  if(events !== false) {
  68                      callback(events);
  69                      return;
  70                  }
  71              }
  72              
  73              if(feedcheckbox.not(':checked').length > 0) {
  74                  callback([]);
  75                  return;
  76              }
  77              feedcheckbox.attr('disabled', true);
  78              
  79              var params = {
  80                  module: 'Calendar',
  81                  action: 'Feed',
  82                  start: thisInstance.toDateString(start),
  83                  end: thisInstance.toDateString(end),
  84                  type: feedcheckbox.data('calendar-feed'),
  85                  userid : feedcheckbox.data('calendar-userid'),
  86                  color : feedcheckbox.data('calendar-feed-color'),
  87                  textColor : feedcheckbox.data('calendar-feed-textcolor')
  88              }
  89  
  90              AppConnector.request(params).then(function(events){
  91                  callback(events);
  92                  feedcheckbox.attr('disabled', false).attr('checked', true);
  93              },
  94              function(error){
  95                  //To send empty events if error occurs
  96                  callback([]);
  97              });
  98          }
  99          this.getCalendarView().fullCalendar('addEventSource', this.calendarfeedDS[feedcheckbox.data('calendar-sourcekey')]);
 100          
 101      },
 102      
 103      allocateColorsForAllUsers : function() {
 104          var calendarfeeds = jQuery('[data-calendar-feed]');
 105          calendarfeeds.each(function(index,element){
 106              var feedUserElement = jQuery(element);
 107              var feedUserLabel = feedUserElement.closest('.addedCalendars').find('.label');
 108              var sourcekey = feedUserElement.data('calendar-sourcekey');
 109              var color = feedUserElement.data('calendar-feed-color');
 110              if(color == '' || typeof color == 'undefined') {
 111                  color = app.cacheGet(sourcekey);
 112                  if(color != null){
 113                  } else {
 114                      color = '#'+(0x1000000+(Math.random())*0xffffff).toString(16).substr(1,6);
 115                      app.cacheSet(sourcekey, color);
 116                  }
 117                  feedUserElement.data('calendar-feed-color',color);
 118                  feedUserLabel.css({'background-color':color});
 119              }
 120              var colorContrast = app.getColorContrast(color.slice(1));
 121              if(colorContrast == 'light') {
 122                  var textColor = 'black'
 123              } else {
 124                  textColor = 'white'
 125              }
 126              feedUserElement.data('calendar-feed-textcolor',textColor);
 127              feedUserLabel.css({'color':textColor});
 128          });
 129  
 130      },
 131      
 132      fetchAllEvents : function() {
 133          var thisInstance = this;
 134          var result = this.getAllUserColors();
 135          var params = {
 136              module: 'Calendar',
 137              action: 'Feed',
 138              start: thisInstance.toDateString(thisInstance.getCalendarView().fullCalendar('getView').visStart),
 139              end: thisInstance.toDateString(thisInstance.getCalendarView().fullCalendar('getView').visEnd),
 140              type: 'MultipleEvents',
 141              mapping : result
 142          }
 143  
 144          AppConnector.request(params).then(function(multipleEvents){
 145                  thisInstance.multipleEvents = multipleEvents;
 146                  thisInstance.fetchAllCalendarFeeds();
 147          },
 148          function(error){
 149              
 150          });
 151          
 152          
 153      },
 154      isAllowedToAddCalendarEvent : function(calendarDetails){
 155          var assignedUserId = calendarDetails.assigned_user_id.value;
 156          if(jQuery('[data-calendar-userid='+assignedUserId+']').is(':checked')) {
 157              return true;
 158          } else {
 159              return false;
 160          }
 161          
 162      },
 163      addCalendarEvent : function(calendarDetails) {
 164          if(calendarDetails.activitytype.value == 'Task'){
 165              var msg = app.vtranslate('JS_TASK_IS_SUCCESSFULLY_ADDED_TO_YOUR_CALENDAR');
 166              var customParams = {
 167                  text : msg,
 168                   type: 'info'
 169              }
 170              Vtiger_Helper_Js.showPnotify(customParams);
 171              return;
 172          } else {
 173              this._super(calendarDetails);
 174          }
 175      },
 176      
 177      /**
 178       * Function used to delete user calendar
 179       */
 180      deleteCalendarView : function(feedcheckbox) {
 181          var aDeferred = jQuery.Deferred();
 182          var thisInstance = this;
 183          var params = {
 184              module: 'Calendar',
 185              action: 'CalendarUserActions',
 186              mode : 'deleteUserCalendar',
 187              userid : feedcheckbox.data('calendar-userid')
 188          }
 189          
 190          AppConnector.request(params).then(function(response) {
 191              var result = response['result'];
 192              
 193              feedcheckbox.closest('.addedCalendars').remove();
 194              //After delete user reset accodion height to auto
 195              thisInstance.resetAccordionHeight();
 196              //Remove the events of deleted user in shared calendar feed
 197              thisInstance.getCalendarView().fullCalendar('removeEventSource', thisInstance.calendarfeedDS[feedcheckbox.data('calendar-sourcekey')]);
 198              
 199              //Update the adding and editing users list in hidden modal
 200              var userSelectElement = jQuery('#calendarview-feeds').find('[name="usersCalendarList"]');
 201              userSelectElement.append('<option value="'+result['sharedid']+'">'+result['username']+'</option>');
 202              var editUserSelectElement = jQuery('#calendarview-feeds').find('[name="editingUsersList"]');
 203              editUserSelectElement.find('option[value="'+result['sharedid']+'"]').remove();
 204              jQuery('#calendarview-feeds').find('.invisibleCalendarViews').val('true');
 205              
 206              aDeferred.resolve();
 207          },
 208          function(error){
 209              aDeferred.reject();
 210          });
 211          
 212          return aDeferred.promise();
 213      },
 214      
 215      /**
 216       * Function to register event for edit user calendar color
 217       */
 218      registerEventForEditUserCalendar : function() {
 219          var thisInstance = this;
 220          var parentElement = jQuery('#calendarview-feeds');
 221          parentElement.on('click', '.editCalendarColor', function(e) {
 222              e.preventDefault();
 223              var currentTarget = jQuery(e.currentTarget);
 224              var addedCalendarEle = currentTarget.closest('.addedCalendars');
 225              var feedUserEle = addedCalendarEle.find('[data-calendar-feed]');
 226              var editCalendarViewsList = jQuery('#calendarview-feeds').find('.editCalendarViewsList');
 227              var selectElement = editCalendarViewsList.find('[name="editingUsersList"]');
 228              selectElement.find('option:selected').removeAttr('selected');
 229              selectElement.find('option[value="'+feedUserEle.data('calendar-userid')+'"]').attr('selected', true);
 230              thisInstance.showAddUserCalendarModal(currentTarget);
 231          })
 232      },
 233      
 234      /**
 235       * Function to register change event for users list select element in edit user calendar modal
 236       */
 237      registerViewsListChangeEvent : function(data) {
 238          var parentElement = jQuery('#calendarview-feeds');
 239          var selectElement = data.find('[name="editingUsersList"]');
 240          var selectedUserColor = data.find('.selectedUserColor');
 241          //on change of edit user, update color picker with the selected user color
 242          selectElement.on('change', function() {
 243              var userid = selectElement.find('option:selected').val();
 244              var userColor = jQuery('[data-calendar-userid="'+userid+'"]', parentElement).data('calendar-feed-color');
 245              selectedUserColor.val(userColor);
 246              data.find('.calendarColorPicker').ColorPickerSetColor(userColor)
 247          });
 248      },
 249      
 250      /**
 251       * Function to save added user calendar
 252       */
 253      saveUserCalendar : function(data, currentEle) {
 254          var thisInstance = this;
 255          var userColor = data.find('.selectedUserColor').val();
 256          var userId = data.find('.selectedUser').val();
 257          var userName = data.find('.selectedUser').data('username');
 258          var params = {
 259              module: 'Calendar',
 260              action: 'CalendarUserActions',
 261              mode : 'addUserCalendar',
 262              selectedUser : userId,
 263              selectedColor : userColor
 264          };
 265          
 266          AppConnector.request(params).then(function() {
 267              app.hideModalWindow();
 268              
 269              var parentElement = jQuery('#calendarview-feeds');
 270              var colorContrast = app.getColorContrast(userColor.slice(1));
 271              if(colorContrast == 'light') {
 272                  var textColor = 'black'
 273              } else {
 274                  textColor = 'white'
 275              }
 276              if(data.find('.userCalendarMode').val() == 'edit') {
 277                  var feedUserEle = jQuery('[data-calendar-userid="'+userId+'"]', parentElement);
 278                  feedUserEle.data('calendar-feed-color',userColor).data('calendar-feed-textcolor',textColor);
 279                  feedUserEle.closest('.addedCalendars').find('.label').css({'background-color':userColor,'color':textColor});
 280                  
 281                  thisInstance.getCalendarView().fullCalendar('removeEventSource', thisInstance.calendarfeedDS[feedUserEle.data('calendar-sourcekey')]);
 282                  thisInstance.fetchCalendarFeed(feedUserEle);
 283                  
 284                  //notification message
 285                  var message = app.vtranslate('JS_CALENDAR_VIEW_COLOR_UPDATED_SUCCESSFULLY');
 286              } else {
 287                  var labelModal = jQuery('.labelModal', parentElement);
 288                  var clonedContainer = labelModal.clone(true, true);
 289                  var labelView = clonedContainer.find('label');
 290                  feedUserEle = labelView.find('[type="checkbox"]');
 291                  feedUserEle.attr('checked', 'checked');
 292                  feedUserEle.attr('data-calendar-feed-color',userColor).attr('data-calendar-feed', 'Events').attr('data-calendar-userid', userId)
 293                          .attr('data-calendar-sourcekey', 'Events33_'+userId).attr('data-calendar-feed-textcolor',textColor);
 294                  feedUserEle.closest('.addedCalendars').find('.label').css({'background-color':userColor,'color':textColor}).text(userName);
 295                  parentElement.append(labelView);
 296                  
 297                  //After add user reset accodion height to auto
 298                  thisInstance.resetAccordionHeight();
 299                  
 300                  thisInstance.fetchCalendarFeed(feedUserEle);
 301                  
 302                  //Update the adding and editing users list in hidden modal
 303                  var userSelectElement = jQuery('#calendarview-feeds').find('[name="usersCalendarList"]');
 304                  userSelectElement.find('option[value="'+userId+'"]').remove();
 305                  
 306                  if(userSelectElement.find('option').length <= 0) {
 307                      jQuery('#calendarview-feeds').find('.invisibleCalendarViews').val('false');
 308                  }
 309                  
 310                  var editUserSelectElement = jQuery('#calendarview-feeds').find('[name="editingUsersList"]');
 311                  editUserSelectElement.append('<option value="'+userId+'">'+userName+'</option>');
 312                  
 313                  //notification message
 314                  var message = app.vtranslate('JS_CALENDAR_VIEW_ADDED_SUCCESSFULLY');
 315              }
 316              
 317              //show notification after add or edit user
 318              var params = {
 319                  text: message,
 320                  type: 'info'
 321              };
 322              Vtiger_Helper_Js.showPnotify(params);
 323          },
 324          function(error){
 325              
 326          });
 327          
 328      },
 329      
 330      performCalendarFeedIntiate : function() {
 331          this.allocateColorsForAllUsers();
 332          this.fetchAllEvents();
 333          this.registerCalendarFeedChange();
 334          this.registerEventForDeleteUserCalendar();
 335          this.registerEventForEditUserCalendar();
 336          this.resetAccordionHeight();
 337      },
 338      
 339      restoreAddCalendarWidgetState : function() {
 340          var key = 'Calendar_sideBar_LBL_ADDED_CALENDARS'; 
 341          var value = app.cacheGet(key);
 342          var widgetContainer = jQuery("#Calendar_sideBar_LBL_ADDED_CALENDARS");
 343          if(value == 0){ 
 344              Vtiger_Index_Js.loadWidgets(widgetContainer,false);
 345          } 
 346          else{ 
 347              Vtiger_Index_Js.loadWidgets(widgetContainer);
 348          }
 349      },
 350      
 351      registerEvents : function() {
 352          this._super();
 353          this.restoreAddCalendarWidgetState();
 354          return this;
 355      }
 356  });


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