[ 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 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 });
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 |