- Timestamp:
- 08/06/12 10:03:03 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/2.4.2-expresso1/prototype/modules/calendar/js/activity.helpers.js
r6881 r6945 1 function activityDetails( objEvent, decoded, path, isMail, repeat){ 2 3 4 attendees = {}; 1 function activityDetails( objActivity, decoded, path, isMail, repeat){ 2 3 tasks = {length: 0}; 5 4 6 5 if(path == undefined) … … 8 7 9 8 if( !decoded ) 10 obj Event = DataLayer.decode( "schedulable:calendar", objEvent);9 objActivity = DataLayer.decode( "schedulable:group", objActivity ); 11 10 12 11 if(!isMail) 13 objEvent = DataLayer.encode( "schedulable:preview", objEvent ); 14 15 if(typeof(objEvent.id) == 'undefined'){ 16 objEvent.alarms = Calendar.signatureOf[User.preferences.defaultCalendar || Calendar.calendarIds[0]].defaultAlarms || false; 17 objEvent.useAlarmDefault = 1; 18 //Código provisório ... Mockup 19 objEvent.alarms.taskActivity = {}; 20 } 21 12 objActivity = DataLayer.encode( "schedulable:activity", objActivity ); 13 14 var registerStatus = function(){ 15 var blkAuto = UI.dialogs.addActivity.find('#group_addactivity_details1'); 16 17 var startDate = false; 18 var endDate = new Date; 19 var dueDate = new Date; 20 var percentage = 0; 21 22 var allDay = true; 23 24 var formatString = User.preferences.dateFormat + " " + User.preferences.hourFormat; 25 26 if(tasks.length == 0){ 27 28 startDate = new Date(); 29 var configData = (startDate.toString('mm') < 30) ? {minutes: (30 - parseInt(startDate.toString('mm')))} : {hours: 1, minutes: '-'+startDate.toString('mm')}; 30 startDate.add(configData); 31 32 endDate = new Date(dateCalendar.decodeRange(startDate, (!!User.preferences.defaultCalendar ? ( !!Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration ? (Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration) : (User.preferences.defaultDuration)) : (User.preferences.defaultDuration)))); 33 34 blkAuto.find('input[name="startDate"]').val(startDate.toString(User.preferences.dateFormat )); 35 blkAuto.find('input[name="startHour"]').val(startDate.toString(User.preferences.hourFormat )); 36 37 blkAuto.find('input[name="endDate"]').val(endDate.toString(User.preferences.dateFormat )); 38 blkAuto.find('input[name="endHour"]').val(endDate.toString(User.preferences.hourFormat )); 39 40 blkAuto.find('input[name="dueDate"]').val(''); 41 blkAuto.find('input[name="dueHour"]').val(''); 42 43 blkAuto.find('input[name="percentage"]').val(percentage); 44 45 blkAuto.find('input[name="allDay"]').attr('checked', false); 46 47 return true; 48 } 49 50 for (var i in tasks){ 51 52 if(i == 'length') 53 continue; 54 55 stTime = Date.parseExact( tasks[i].startDate + " "+$.trim( tasks[i].startHour) , formatString); 56 enTime = Date.parseExact( tasks[i].endDate + " "+$.trim( tasks[i].endHour), formatString ); 57 58 startDate = (startDate && startDate.compareTo(stTime) == -1) ? startDate : stTime; 59 endDate = endDate.compareTo(enTime) == -1 ? enTime : endDate; 60 61 if(tasks[i].dueDate != ''){ 62 pvTime = Date.parseExact( tasks[i].dueDate + " "+$.trim( tasks[i].dueTime), formatString ); 63 dueDate = dueDate.compareTo(pvTime) == -1 ? pvTime : dueDate; 64 } 65 66 if(parseInt(tasks[i].percentage) > 0) 67 percentage += parseInt((100 / tasks.length)) * ( parseInt(tasks[i].percentage) / 100); 68 } 69 70 dueDate = dueDate.compareTo(endDate) == -1 ? endDate : dueDate; 71 72 blkAuto.find('input[name="startDate"]').val(startDate.toString(User.preferences.dateFormat )); 73 blkAuto.find('input[name="startHour"]').val(startDate.toString(User.preferences.hourFormat )); 74 75 blkAuto.find('input[name="endDate"]').val(endDate.toString(User.preferences.dateFormat )); 76 blkAuto.find('input[name="endHour"]').val(endDate.toString(User.preferences.hourFormat )); 77 78 blkAuto.find('input[name="dueDate"]').val(dueDate.toString(User.preferences.dateFormat )); 79 blkAuto.find('input[name="dueHour"]').val(dueDate.toString(User.preferences.hourFormat )); 80 81 blkAuto.find('input[name="percentage"]').val(percentage); 82 83 blkAuto.find('input[name="allDay"]').attr('checked', (!!(startDate.compareTo(endDate) == 0) || (startDate.toString('HH:mm') == endDate.toString('HH:mm')) ? true : false)); 84 } 85 86 87 var callbackTask = function(){ 88 89 blkAddTask.find("li .button").filter(".close.new").button({ 90 icons: { 91 primary: "ui-icon-close" 92 }, 93 text: false 94 }).click(function () { 95 96 delete tasks[$(this).parents('li').find('input[name="idtask[]"]').val()] 97 tasks.length += -1; 98 99 idTaskToActivity = $(this).parents('li').find('input[name="idTaskToActivity[]"]').val() 100 101 if(idTaskToActivity != '') 102 DataLayer.remove('taskToActivity', idTaskToActivity); 103 104 $(this).parents('li').remove(); 105 106 if(blkAddTask.find(".task-activity-list li").length == 1) 107 blkAddTask.find("li.not-activity ").removeClass('hidden'); 108 109 registerStatus(); 110 }) 111 .addClass('tiny disable ui-button-disabled ui-state-disabled') 112 .removeClass('new').end() 113 114 .filter(".info.new").button({ 115 icons: { 116 primary: "ui-icon-notice" 117 }, 118 text: false 119 }).click(function () { 120 var positionY = $(this).parents("li").offset().top; 121 122 var name = $(this).parents('li').find("div").find(".name").text(); 123 var email = $(this).parents('li').find("div").find(".mail").text() 124 125 if( $('.qtip.qtip-blue.qtip-active').val() !== ''){ 126 $(this).qtip({ 127 show: { 128 ready: true, 129 solo: true, 130 when: { 131 event: 'click' 132 } 133 }, 134 hide: false, 135 content: { 136 text: $('<div></div>').html( DataLayer.render( path + 'templates/activity_information_task.ejs', { 137 'name' : name 138 } ) ), 139 title: { 140 text:'Informações', 141 button: '<a class="button close" href="#">close</a>' 142 } 143 }, 144 style: { 145 name: 'blue', 146 tip: { 147 }, 148 border: { 149 width: 4, 150 radius: 8 151 }, 152 width: { 153 min: 230, 154 max:230 155 } 156 }, 157 position: { 158 corner: { 159 target: 'rightMiddle', 160 tooltip: 'leftMiddle' 161 }, 162 adjust: { 163 x: 30, 164 y: 0 165 } 166 } 167 }) 168 .qtip("api").onShow = function(arg0) { 169 $('.qtip-active .button.close').button({ 170 icons: { 171 primary: "ui-icon-close" 172 }, 173 text: false 174 }) 175 .click(function(){ 176 blkAddAtendee.find('dd.task-activity-list').qtip('destroy'); 177 }); 178 179 $('.qtip-active .button.cancel').button().click(function(){ 180 blkAddAtendee.find('dd.activity-list [type=checkbox]').attr('checked', false); 181 blkAddAtendee.find('dd.activity-list').qtip('destroy'); 182 }); 183 184 $('.qtip .button').button(); 185 186 }; 187 } 188 }) 189 .addClass('tiny disable ui-button-disabled ui-state-disabled') 190 .removeClass('new').end() 191 192 UI.dialogs.addActivity.find('.task-activity-list li').hover( 193 function () { 194 $(this).addClass("hover-attendee"); 195 $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end() 196 .find('.activity-options').addClass('hover-attendee'); 197 }, 198 function () { 199 $(this).removeClass("hover-attendee"); 200 $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end() 201 .find('.activity-options').removeClass('hover-attendee'); 202 } 203 ); 204 } 205 206 22 207 /** 23 * canDiscardEventDialog deve ser true se n ão houver alterações no evento208 * canDiscardEventDialog deve ser true se não houver alterações no evento 24 209 */ 25 210 canDiscardEventDialog = true; 26 211 /** 27 * zebraDiscardEventDialog é uma flag indicando que uma janela de confirmação (Zebra_Dialog)28 * j á está aberta na tela, uma vez que não é possivel acessar o evento ESC utilizado para fechá-la212 * zebraDiscardEventDialog é uma flag indicando que uma janela de confirmação (Zebra_Dialog) 213 * já está aberta na tela, uma vez que não é possivel acessar o evento ESC utilizado para fechá-la 29 214 */ 30 215 zebraDiscardEventDialog = false; 31 216 32 /**33 ACLs do participant34 */35 acl_names = {36 'w': 'acl-white',37 'i': 'acl-invite-guests',38 'p': 'acl-participation-required'39 };40 41 42 var callbackAttendee = function(){43 //Cria qtip de permissões pelo click do checkbox44 var checked = false;45 blkAddAtendee.find("li.not-activity").addClass('hidden');46 47 blkAddAtendee.find("li .button").filter(".close.new").button({48 icons: {49 primary: "ui-icon-close"50 },51 text: false52 }).click(function () {53 DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val());54 if($(this).parent().find('.button.delegate').hasClass('activity-permissions-change-button')){55 removeOthers();56 blkAddAtendee.find('.request-update').addClass('hidden');57 blkAddAtendee.find('.status option').toggleClass('hidden');58 59 blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change');60 }61 62 $(this).parents('li').remove();63 64 if(blkAddAtendee.find(".activity-list li").length == 1)65 blkAddAtendee.find("li.not-activity").removeClass('hidden');66 })67 .addClass('tiny disable ui-button-disabled ui-state-disabled')68 .removeClass('new').end()69 70 .filter(".delegate.new").button({71 icons: {72 primary: "ui-icon-transferthick-e-w"73 },74 text: false75 }).click(function () {76 var me = $(this).parents('li');77 if($(this).hasClass('activity-permissions-change-button')){78 $(this).removeClass('activity-permissions-change-button')79 .find('.ui-icon-transferthick-e-w').removeClass('activity-permissions-change').end();80 81 me.find('input[name="delegatedFrom[]"]').val('');82 dependsDelegate(me, true);83 84 blkAddAtendee.find('.request-update').addClass('hidden');85 blkAddAtendee.find('.status option').toggleClass('hidden');86 87 blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change');88 89 }else{90 removeOthers();91 92 $(this).addClass('activity-permissions-change-button')93 .find('.ui-icon-transferthick-e-w').addClass('activity-permissions-change').end();94 95 me.find('input[name="delegatedFrom[]"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val());96 97 dependsDelegate(me, false);98 99 blkAddAtendee.find('.request-update').removeClass('hidden');100 if(blkAddAtendee.find('.status option.hidden').length == 1)101 blkAddAtendee.find('.status option').toggleClass('hidden');102 103 blkAddAtendee.find('option[value=5]').attr('selected','selected').trigger('change');104 }105 })106 .addClass('tiny disable ui-button-disabled ui-state-disabled')107 .removeClass('new').end()108 109 .filter(".edit.new").button({110 icons: {111 primary: "ui-icon-notice"112 },113 text: false114 }).click(function() {115 116 console.log($(this).parents("li").position().top);117 118 var positionY = $(this).parents("li").offset().top;119 120 if(!!!checked)121 $(this).parents('li').find('[type=checkbox]').attr('checked', (!$(this).parent().find('[type=checkbox]').is(':checked'))).end();122 123 var name = $(this).parents('li').find("div").find(".name").text();124 var email = $(this).parents('li').find("div").find(".mail").text()125 //var aclsParticipant = $(this).parents('li')126 checked = false;127 128 if( $('.qtip.qtip-blue.qtip-active').val() !== ''){129 $(this).qtip({130 show: {131 ready: true,132 solo: true,133 when: {134 event: 'click'135 }136 },137 hide: false,138 content: {139 text: $('<div></div>').html( DataLayer.render( path + 'templates/activity_information_task.ejs', {140 'name' : name141 } ) ),142 title: {143 text:'Informações',144 button: '<a class="button close" href="#">close</a>'145 }146 },147 style: {148 name: 'blue',149 tip: {150 corner: 'leftMiddle'151 },152 border: {153 width: 4,154 radius: 8155 },156 width: {157 min: 230,158 max:230159 }160 },161 position: {162 corner: {163 target: 'rightMiddle',164 tooltip: 'leftMiddle'165 },166 adjust: {167 x: 30,168 y: 0169 }170 }171 })172 .qtip("api").onShow = function(arg0) {173 $('.qtip-active .button.close').button({174 icons: {175 primary: "ui-icon-close"176 },177 text: false178 })179 .click(function(){180 blkAddAtendee.find('dd.task-activity-list').qtip('destroy');181 });182 183 $('.qtip-active .button.save').button().click(function(){184 185 var acl = '';186 $('.qtip-active').find('[type=checkbox]:checked').each(function(i, obj) {187 acl+= obj.value;188 });189 190 blkAddAtendee.find('dd.task-activity-list [type=checkbox]:checked').siblings('input[name="attendeeAcl[]"]').each(function(i, obj) {191 obj.value = 'r'+acl;192 }).parents('li').find('.button.edit').addClass('activity-permissions-change-button')193 .find('.ui-icon-key').addClass('activity-permissions-change');194 195 blkAddAtendee.find('dd.task-activity-list [type=checkbox]').attr('checked', false);196 197 blkAddAtendee.find('dd.task-activity-list').qtip('destroy');198 199 });200 $('.qtip-active .button.cancel').button().click(function(){201 blkAddAtendee.find('dd.activity-list [type=checkbox]').attr('checked', false);202 blkAddAtendee.find('dd.activity-list').qtip('destroy');203 });204 205 if(aclsParticipant)206 for(var i = 1; i < aclsParticipant.length; i++){207 $('.qtip-active').find('input[name="'+acl_names[aclsParticipant.charAt(i)]+'"]').attr('checked', true);208 }209 210 $('.qtip .button').button();211 212 };213 }else{214 if(!$('.new-activity-win dd.task-activity-list').find('[type=checkbox]:checked').length){215 blkAddAtendee.find('dd.attendee-list').qtip('destroy');216 }else{217 $('.qtip-active .button.save .ui-button-text').html('Aplicar a todos')218 }219 220 };221 })222 .addClass('tiny disable ui-button-disabled ui-state-disabled')223 .removeClass('new').end()224 225 .filter(".open-delegate.new").click(function(){226 if($(this).hasClass('ui-icon-triangle-1-e')){227 $(this).removeClass('ui-icon-triangle-1-e').addClass('ui-icon-triangle-1-s');228 $(this).parents('li').find('.list-delegates').removeClass('hidden');229 }else{230 $(this).removeClass('ui-icon-triangle-1-s').addClass('ui-icon-triangle-1-e');231 $(this).parents('li').find('.list-delegates').addClass('hidden');232 }233 234 }).removeClass('new');235 236 237 blkAddAtendee.find("li input[type=checkbox].new").click(function(){238 if(!$('.new-activity-win dd.task-activity-list').find('[type=checkbox]:checked').length){239 blkAddAtendee.find('dd.task-activity-list').qtip('destroy');240 }else{241 checked = true;242 $(this).parents('li').find('.button.edit').click();243 }244 }).removeClass('new');245 246 UI.dialogs.addActivity.find('.task-activity-list li').hover(247 function () {248 $(this).addClass("hover-activity");249 $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end()250 .find('.activity-options').addClass('hover-activity');251 },252 function () {253 $(this).removeClass("hover-activity");254 $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end()255 .find('.activity-options').removeClass('hover-activity');;256 }257 );258 259 }260 var dependsDelegate = function(reference, inverse){261 if(inverse){262 if(reference.find('input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val())263 blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val());264 }else{265 if(blkAddAtendee.find('.me input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val())266 blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(reference.find('input[name="attendee[]"]').val());267 }268 269 };270 271 var removeOthers = function(){272 var other = blkAddAtendee.find('.delegate.attendee-permissions-change-button');273 if(other.lenght){274 dependsDelegate(other.parents('li'), true);275 }276 blkAddAtendee.find('.delegate').removeClass('attendee-permissions-change-button');277 blkAddAtendee.find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change');278 279 };280 281 217 var html = DataLayer.render( path+'templates/activity_add.ejs', { 282 event:objEvent218 activity:objActivity 283 219 }); 284 220 … … 286 222 287 223 UI.dialogs.addActivity = jQuery('#sandbox').append('<div title="Criar Atividade" class="new-activity-win active"> <div>').find('.new-activity-win.active').html(html).dialog({ 288 resizable: false, 289 modal:true, 290 autoOpen: false, 291 width:734, 292 position: 'center', 293 close: function(event, ui) { 294 /** 295 * Remove tooltip possivelmente existente 296 */ 297 if ($('.qtip.qtip-blue.qtip-active').length) 298 $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 299 attendees = {}; 300 }, 301 beforeClose: function(event, ui) { 302 303 if (!canDiscardEventDialog && !zebraDiscardEventDialog) { 304 zebraDiscardEventDialog = true; 305 window.setTimeout(function() { 306 $.Zebra_Dialog('Suas alterações na atividade não foram salvas. Deseja descartar as alterações?', { 307 'type': 'question', 308 'overlay_opacity': '0.5', 309 'buttons': ['Descartar alterações', 'Continuar editando'], 310 'onClose': function(clicked) { 311 if(clicked == 'Descartar alterações') { 312 canDiscardEventDialog = true; 313 /** 314 *Remoção dos anexos do eventos caso seja cancelado a edição 315 */ 316 DataLayer.rollback(); 317 318 var ids = false; 319 $.each($('.attachment-list input'), function (i, input) { 320 DataLayer.put('attachment', {id: ''+input.value}); 321 DataLayer.remove('attachment', ''+input.value); 322 ids = true; 323 }); 324 if(ids) 325 DataLayer.commit(); 326 327 328 329 UI.dialogs.addActivity.dialog('close'); 330 }else{ 331 zebraDiscardEventDialog = false; 332 } 333 334 /** 335 * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la 336 * com ESC, para que o evento ESC não seja propagado para fechamento da 337 * janela de edição de eventos, deve ser setada uma flag indicando que 338 * já existe uma janela de confirmação aberta. 339 */ 340 if (!clicked) { 341 window.setTimeout(function() { 342 zebraDiscardEventDialog = false; 343 }, 200); 344 } 345 } 346 }); 347 348 }, 300); 349 350 } 351 //DataLayer.rollback(); 352 return canDiscardEventDialog; 353 }, 354 dragStart: function(event, ui) { 355 if ($('.qtip.qtip-blue.qtip-active').length) 356 $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 357 } 358 }); 224 resizable: false, 225 modal:true, 226 autoOpen: false, 227 width:734, 228 position: 'center', 229 close: function(event, ui) { 230 /** 231 * Remove tooltip possivelmente existente 232 */ 233 if ($('.qtip.qtip-blue.qtip-active').length) 234 $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 235 236 attendees = {}; 237 }, 238 beforeClose: function(event, ui) { 239 240 if (!canDiscardEventDialog && !zebraDiscardEventDialog) { 241 zebraDiscardEventDialog = true; 242 window.setTimeout(function() { 243 $.Zebra_Dialog('Suas alterações na atividade não foram salvas. Deseja descartar as alterações?', { 244 'type': 'question', 245 'overlay_opacity': '0.5', 246 'buttons': ['Descartar alterações', 'Continuar editando'], 247 'onClose': function(clicked) { 248 if(clicked == 'Descartar alterações') { 249 canDiscardEventDialog = true; 250 /** 251 *Remoção dos anexos do eventos caso seja cancelado a edição 252 */ 253 DataLayer.rollback(); 254 255 var ids = false; 256 $.each($('.attachment-list input'), function (i, input) { 257 DataLayer.put('attachment', {id: ''+input.value}); 258 DataLayer.remove('attachment', ''+input.value); 259 ids = true; 260 }); 261 if(ids) 262 DataLayer.commit(); 263 264 UI.dialogs.addActivity.dialog('close'); 265 }else{ 266 zebraDiscardEventDialog = false; 267 } 268 269 /** 270 * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la 271 * com ESC, para que o evento ESC não seja propagado para fechamento da 272 * janela de edição de eventos, deve ser setada uma flag indicando que 273 * já existe uma janela de confirmação aberta. 274 */ 275 if (!clicked) { 276 window.setTimeout(function() { 277 zebraDiscardEventDialog = false; 278 }, 200); 279 } 280 } 281 }); 282 283 }, 300); 284 } 285 //DataLayer.rollback(); 286 return canDiscardEventDialog; 287 }, 288 dragStart: function(event, ui) { 289 if ($('.qtip.qtip-blue.qtip-active').length) 290 $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 291 } 292 }); 359 293 360 294 } else { 361 295 UI.dialogs.addActivity.html(html); 362 296 } 297 298 /* Checkbox allday */ 299 UI.dialogs.addActivity.find('input[name="allDay"]').click(function(){ 300 $(this).attr("checked") ? 301 UI.dialogs.addActivity.find('.start-time, .end-time').addClass('hidden') : 302 UI.dialogs.addActivity.find('.start-time, .end-time').removeClass('hidden'); 303 }); 363 304 364 305 var tabs = UI.dialogs.addActivity.children('.content').tabs({ … … 368 309 } 369 310 }); 370 var calendar = DataLayer.get('calendar', objEvent.calendar); 311 312 var group = DataLayer.get('calendar', objActivity.group); 371 313 372 if ( calendar.timezone != objEvent.timezone){373 UI.dialogs.addActivity.find('. calendar_addactivity_details_lnk_timezone').find('option[value="'+objEvent.timezone+'"]').attr('selected','selected').trigger('change');374 UI.dialogs.addActivity.find('. calendar_addactivity_details_lnk_timezone').addClass('hidden');375 $('. calendar-addevent-details-txt-timezone').removeClass('hidden');314 if (group.timezone != objActivity.timezone){ 315 UI.dialogs.addActivity.find('.group_addactivity_details_lnk_timezone').find('option[value="'+objActivity.timezone+'"]').attr('selected','selected').trigger('change'); 316 UI.dialogs.addActivity.find('.group_addactivity_details_lnk_timezone').addClass('hidden'); 317 $('.group-addevent-details-txt-timezone').removeClass('hidden'); 376 318 377 319 } 378 320 379 UI.dialogs.addActivity.find('. calendar_addactivity_details_lnk_timezone').click(function(e){321 UI.dialogs.addActivity.find('.group_addactivity_details_lnk_timezone').click(function(e){ 380 322 $(this).addClass('hidden'); 381 $('. calendar-addactivity-details-txt-timezone').removeClass('hidden');323 $('.group-addactivity-details-txt-timezone').removeClass('hidden'); 382 324 e.preventDefault(); 383 325 }); 384 326 385 /*Seleciona a agenda padrão para visualização/edição de um evento*/ 386 if(objEvent.id) 387 UI.dialogs.addActivity.find('option[value="'+objEvent.calendar+'"]').attr('selected','selected').trigger('change'); 388 389 /* Checkbox allday */ 390 391 UI.dialogs.addActivity.find('input[name="allDay"]').click(function(){ 392 $(this).attr("checked") ? 393 UI.dialogs.addActivity.find('.start-time, .end-time').addClass('hidden') : 394 UI.dialogs.addActivity.find('.start-time, .end-time').removeClass('hidden'); 395 updateMap(true); 396 }); 327 UI.dialogs.addActivity.find('.button.remove').button({ 328 text:false, 329 icons:{ 330 primary:'ui-icon-close' 331 } 332 }).click(function(el){ 333 var id; 334 if( id = $(this).parent().find('input[name="alarmId[]"]').val()) 335 DataLayer.remove('alarm', id); 336 $(this).parent().remove().find('li').is(':empty'); 337 }); 338 339 UI.dialogs.addActivity.find('.button-add-alarms').click(function(){ 340 DataLayer.render( 'templates/alarms_add_itemlist.ejs', {type: 0}, function( template ){ 341 jQuery('.activity-alarms-list').append(template) 342 .find('li:last label:eq(0)').remove().end() 343 .find('.number').numeric().end() 344 .find('.button.remove').button({ 345 text:false, 346 icons:{ 347 primary:'ui-icon-close' 348 } 349 }).click(function(el) { 350 $(this).parent().remove(); 351 }); 352 }); 353 }); 354 355 /*Seleciona a agenda padrão para visualização/edição de um evento*/ 356 if(objActivity.id) 357 UI.dialogs.addActivity.find('option[value="'+objActivity.group+'"]').attr('selected','selected').trigger('change'); 397 358 398 359 UI.dialogs.addActivity.find('.button').button(); 399 UI.dialogs.addActivity.find('.button.add').button({400 icons: {401 402 }360 UI.dialogs.addActivity.find('.button.add').button({ 361 icons: { 362 secondary: "ui-icon-plus" 363 } 403 364 }); 404 365 405 366 // ==== validation events ==== 406 UI.dialogs.addActivity.find(".input-group .h1").Watermark("Atividade sem título"); 407 if(User.preferences.hourFormat.length == 5) { 408 UI.dialogs.addActivity.find(".end-time, .start-time").mask("99:99", { 409 completed: function(){ 410 updateMap(); 411 } 412 }); 413 } else { 414 $.mask.definitions['{']='[ap]'; 415 $.mask.definitions['}']='[m]'; 416 UI.dialogs.addActivity.find(".end-time, .start-time").mask("99:99 {}", { 417 completed:function(){ 418 $(this).val(date.Calendar.defaultToAmPm($(this).val())); 419 $(this).timepicker("refresh"); 420 $(this).val($(this).val().replace(/[\.]/gi, "")); 421 updateMap(); 422 } 423 }); 424 } 367 UI.dialogs.addActivity.find(".input-group .h1").Watermark("Atividade sem tÃtulo"); 368 425 369 UI.dialogs.addActivity.find(".number").numeric(); 370 426 371 User.preferences.dateFormat.indexOf('-') > 0 ? 427 372 UI.dialogs.addActivity.find(".date").mask("99-99-9999", { … … 430 375 } 431 376 }) : 377 432 378 UI.dialogs.addActivity.find(".date").mask("99/99/9999", { 433 379 completed:function(){ … … 436 382 }); 437 383 438 UI.dialogs.addActivity.find(".menu-add Activity")384 UI.dialogs.addActivity.find(".menu-addactivity") 439 385 .children(".delete").click(function(){ 440 386 $.Zebra_Dialog('Tem certeza que deseja excluir a atividade?', { 441 387 'type': 'question', 442 388 'overlay_opacity': '0.5', 443 'buttons': ['Sim', 'N ão'],389 'buttons': ['Sim', 'Não'], 444 390 'onClose': function(clicked) { 445 391 if(clicked == 'Sim'){ 446 392 canDiscardEventDialog = true; 447 393 /* Remove por filtro */ 448 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', obj Event.id], ['=', 'calendar', objEvent.calendar], ['=','user',(objEvent.me.user ? objEvent.me.user.id : objEvent.me.id)]]});394 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', objActivity.id], ['=', 'group', objActivity.group], ['=','user',(objActivity.me.user ? objActivity.me.user.id : objActivity.me.id)]]}); 449 395 Calendar.rerenderView(true); 450 396 /********************/ … … 460 406 461 407 .children(".save").click(function(){ 462 /* Valida ção */408 /* Validação 463 409 var msg = false; 464 410 if(msg = validDateEvent()){ 465 $(".new-activity-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg);466 return false;467 } 468 411 $(".new-activity-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg); 412 return false; 413 } 414 */ 469 415 canDiscardEventDialog = true; 470 416 471 var exit = function(event){ 472 if(event) 473 DataLayer.remove('schedulable', event, false); 474 475 UI.dialogs.addActivity.children().find('form.form-addevent').submit(); 476 UI.dialogs.addActivity.dialog("close"); } 477 478 if(repeat){ 479 DataLayer.remove('repeat', false); 480 DataLayer.put('repeat', repeat); 481 DataLayer.commit('repeat', false, exit(repeat.schedulable)); 482 }else 483 exit(); 417 UI.dialogs.addActivity.children().find('form.form-addactivity').submit(); 418 UI.dialogs.addActivity.dialog("close"); 419 484 420 }).end() 485 421 … … 488 424 }); 489 425 490 var task_activityHtml = DataLayer.render( path+'templates/task_activity_add.ejs', { 491 event:objEvent 492 }); 493 494 495 var blkAddAtendee = UI.dialogs.addActivity.find('#calendar_addactivity_details8').append(task_activityHtml); 426 var task_activityHtml = DataLayer.render( path+'templates/task_activity_add.ejs', { activity: objActivity}); 427 var blkAddTask = UI.dialogs.addActivity.find('#group_addactivity_details8').append(task_activityHtml); 496 428 497 429 var dates = UI.dialogs.addActivity.find('input.date').datepicker({ … … 502 434 }); 503 435 504 UI.dialogs.addActivity.find('input.time').timepicker({ 505 closeText: 'Ok', 506 hourGrid: 4, 507 minuteGrid: 10, 508 ampm : ((User.preferences.hourFormat.length > 5) ? true: false), 509 timeFormat: "hh:mm tt", 510 onSelect: function (selectedDateTime){ 511 if(!(User.preferences.hourFormat.length == 5)) 512 $(this).val(selectedDateTime.replace(/[\.]/gi, "")); 513 updateMap(); 514 }, 515 onClose : function (selectedDateTime){ 516 if(!(User.preferences.hourFormat.length == 5)) 517 $(this).val(selectedDateTime.replace(/[\.]/gi, "")); 518 } 519 520 521 }); 522 523 blkAddAtendee.find('.add-activity-search .ui-icon-search').click(function(event) { 524 blkAddAtendee.find('.add-activity-search input').keydown(); 436 blkAddTask.find('.add-activity-search .ui-icon-search').click(function(event) { 437 blkAddTask.find('.add-activity-search input').keydown(); 525 438 }); 526 439 527 440 528 blkAdd Atendee.find('.add-activity-search input').keydown(function(event) {441 blkAddTask.find('.add-activity-search input').keydown(function(event) { 529 442 530 443 if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') { 531 444 // Fazer get das tarefas 532 var result = [ {'name': 'Tarefa 01'} , {'name': 'Tarefa 02'} , {'name' : 'Tarefa 03'} ]; 533 //DataLayer.get('user', ["*", "name", $(this).val()], true); 534 535 445 var filter = 446 { 447 filter: 448 ['AND', 449 ['=', 'type', '2'], 450 ['>=','startTime', $.now()], 451 ['in', 'calendar', 452 [$('div.new-activity-win.active select[name="groupFilter"]').val()] 453 ] 454 ], criteria: {'filterTasks': true} 455 }; 456 if($(this).val() != ''){ 457 filter['filter'].push(['OR', 458 ["i*", "summary", $(this).val()], 459 ["i*", "description", $(this).val()] 460 ]); 461 } 462 463 var result = DataLayer.get('schedulable:taskSearch', filter, true) 536 464 /** 537 538 539 blkAdd Atendee.find('ul.search-result-list').empty().css('overflow', 'hidden');465 * TODO: trocar por template 466 */ 467 blkAddTask.find('ul.search-result-list').empty().css('overflow', 'hidden'); 540 468 if (!result) { 541 blkAddAtendee.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>'); 542 } 543 544 for(i=0; i<result.length; i++) 545 result[i].enabled = (blkAddAtendee.find('dd.task-helpers-list ul.task-helpers-list label.mail[title="' + result[i].mail + '"]').length) ? false : true; 546 547 blkAddAtendee.find('ul.search-result-list').append(DataLayer.render( path+'templates/task_search_itemlist.ejs', result)); 548 549 550 blkAddAtendee.find('ul.search-result-list li').click(function(event, ui){ 551 if ($(event.target).is('input')) { 552 old_item = $(event.target).parents('li'); 553 newAttendeeId = DataLayer.put('participant', { 554 user: old_item.find('.id').html(), 555 isExternal: old_item.find('.isExternal').html() 556 }); 557 558 attendees[old_item.find('.id').html()] = old_item.find('.name').html(); 559 560 blkAddAtendee.find('dd.task-activity-list ul.task-activity-list') 561 .append(DataLayer.render(path+'templates/task_add_itemlist.ejs', [{ 562 id: newAttendeeId, 563 name: old_item.find('.name').html(), 564 mail: old_item.find('.mail').html(), 565 isExternal: old_item.find('.isExternal').html(), 566 acl: objEvent.acl, 567 isDirty: !!!objEvent.id 568 }])) 569 .scrollTo('max'); 570 /** 571 * Delegação de participação de um participante com permissão apenas de leitura 572 * 573 */ 574 if(!objEvent.acl.organization && !objEvent.acl.write && !objEvent.acl.inviteGuests && objEvent.acl.read ){ 575 576 blkAddAtendee.find('.block-add-attendee.search').addClass('hidden'); 577 blkAddAtendee.find('.block-add-attendee.search dt').html('Adicionar outros contatos'); 578 579 blkAddAtendee.find('.status option').toggleClass('hidden'); 580 blkAddAtendee.find('option[value=5]').attr('selected','selected').trigger('change'); 581 blkAddAtendee.find('.request-update').removeClass('hidden'); 582 583 blkAddAtendee.find('dd.attendee-list ul.attendee-list li .button.close').parents('li').find('input[name="delegatedFrom[]"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val()); 584 585 blkAddAtendee.find('.me .participant-delegate').addClass('disable ui-button-disabled ui-state-disabled'); 586 blkAddAtendee.find(".button.close").button({ 587 icons: { 588 primary: "ui-icon-close" 589 }, 590 text: false 591 }).click(function () { 592 593 $(this).parents('li').find('input[name="delegatedFrom[]"]').val(''); 594 blkAddAtendee.find('.request-update').addClass('hidden'); 595 blkAddAtendee.find('.status option').toggleClass('hidden'); 596 blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change'); 597 blkAddAtendee.find('.me .participant-delegate').removeClass('disable ui-button-disabled ui-state-disabled attendee-permissions-change-button') 598 .find('.ui-icon-person').removeClass('attendee-permissions-change').end(); 599 600 DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val()); 601 $(this).parents('li').remove(); 602 }) 603 .addClass('tiny'); 604 }else{ 605 callbackAttendee(); 606 old_item.remove(); 607 } 608 } 609 }); 610 611 469 blkAddTask.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>'); 470 }else{ 471 for(i=0; i<result.length; i++) 472 result[i].enabled = (blkAddTask.find('dd.task-activity-list ul.task-activity-list input[value="' + result[i].id + '"]').length) ? false : true; 473 474 blkAddTask.find('ul.search-result-list').append(DataLayer.render( path+'templates/task_search_itemlist.ejs', result)); 475 476 /* TODO - Verificar id da aitividade*/ 477 blkAddTask.find('ul.search-result-list li').click(function(event, ui){ 478 if ($(event.target).is('input')) { 479 old_item = $(event.target).parents('li'); 480 481 tasks[old_item.find('[name="id"]').val()] = { 482 startDate: old_item.find('[name="taskStartDate"]').val(), 483 startHour: old_item.find('[name="taskStartHour"]').val(), 484 endDate: old_item.find('[name="taskEndDate"]').val(), 485 endHour: old_item.find('[name="taskEndHour"]').val(), 486 dueDate: old_item.find('[name="taskDueDate"]').val(), 487 dueTime: old_item.find('[name="taskDueTime"]').val(), 488 allDay: old_item.find('[name="taskAllDay"]').val(), 489 percentage: old_item.find('[name="taskPercentage"]').val(), 490 }; 491 492 tasks.length += 1; 493 494 /* 495 newTaskToActivity = DataLayer.put('taskToActivity', { 496 owner: User.me.id, 497 task: old_item.find('.id').html(), 498 activity: 'VER ISSO AQUI' 499 }); 500 */ 501 //attendees[old_item.find('.id').html()] = old_item.find('.name').html(); 502 503 blkAddTask.find('dd.task-activity-list ul.task-activity-list') 504 .append(DataLayer.render(path+'templates/task_add_itemlist.ejs', [{ 505 idTask: old_item.find('[name="id"]').val(), 506 description: old_item.find('.description').html() 507 }])) 508 .scrollTo('max'); 509 510 callbackTask(); 511 registerStatus(); 512 blkAddTask.find('.not-activity').addClass('hidden'); 513 old_item.remove(); 514 } 515 }); 516 517 } 612 518 event.preventDefault(); 613 519 } 614 520 }); 615 521 616 UI.dialogs.addActivity.find('.row.fileupload-buttonbar .button').filter('.delete').button({ 522 /*Carrega as tarefas já existentes em uma atividade*/ 523 if(objActivity.tasks.length){ 524 tasks = objActivity.tasks; 525 526 for(var i in objActivity.tasks){ 527 if(i != 'length') 528 blkAddTask.find('dd.task-activity-list ul.task-activity-list') 529 .append(DataLayer.render(path+'templates/task_add_itemlist.ejs', [{ 530 idTask: i, 531 description: tasks[i].description, 532 idTaskToActivity: tasks[i].taskToActivity 533 }])) 534 .scrollTo('max'); 535 } 536 537 callbackTask(); 538 registerStatus(); 539 blkAddTask.find('.not-activity').addClass('hidden'); 540 } 541 542 UI.dialogs.addActivity.find('.row.fileupload-buttonbar-activity .button').filter('.delete').button({ 617 543 icons: { 618 primary: "ui-icon-close"544 primary: "ui-icon-close" 619 545 }, 620 546 text: 'Excluir' … … 623 549 'type': 'question', 624 550 'overlay_opacity': '0.5', 625 'buttons': ['Sim', 'N ão'],551 'buttons': ['Sim', 'Não'], 626 552 'onClose': function(clicked) { 627 553 if(clicked == 'Sim'){ … … 640 566 .filter('.close').button({ 641 567 icons: { 642 primary: "ui-icon-close"568 primary: "ui-icon-close" 643 569 }, 644 570 text: false … … 649 575 .filter('.downlaod-archive').button({ 650 576 icons: { 651 primary: "ui-icon-arrowthickstop-1-s"577 primary: "ui-icon-arrowthickstop-1-s" 652 578 }, 653 579 text: false … … 697 623 }, 698 624 done: function(e, data){ 699 var currentUpload = $('.progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide();700 701 if(!!data.result && data.result != "[]"){702 var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data);703 $('.attachment-list').append('<input tyepe="hidden" name="attachment[]" value="'+newAttach['attachment'][0][0].id+'"/>');704 currentUpload.removeClass('on-complete').parents('p')705 .append('<input type="hidden" name="fileId[]" value="'+newAttach['attachment'][0][0].id+'"/>')706 .find('.status-upload').addClass('ui-icon ui-icon-check');707 }else708 currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel');709 }625 var currentUpload = $('.progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide(); 626 627 if(!!data.result && data.result != "[]"){ 628 var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data); 629 $('.attachment-list').append('<input tyepe="hidden" name="attachment[]" value="'+newAttach['attachment'][0][0].id+'"/>'); 630 currentUpload.removeClass('on-complete').parents('p') 631 .append('<input type="hidden" name="fileId[]" value="'+newAttach['attachment'][0][0].id+'"/>') 632 .find('.status-upload').addClass('ui-icon ui-icon-check'); 633 }else 634 currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel'); 635 } 710 636 }); 711 637 $('.attachments-list .button').button(); … … 779 705 progressTimer = window.setInterval(intervalHandler, interval); 780 706 }); 781 782 if(objEvent.isShared){783 784 var acls = Calendar.signatureOf[objEvent.calendar].permission.acl;785 786 if(!acls.write){787 UI.dialogs.addActivity.find(':input').attr('disabled', 'disabled');788 UI.dialogs.addActivity.find('.button').hide();789 }790 791 if(acls.remove)792 UI.dialogs.addActivity.find('.button.remove').show();793 794 UI.dialogs.addActivity.find('.button.cancel').show();795 }796 797 disponibily(objEvent, path, attendees);798 799 UI.dialogs.addActivity.find('.button-add-alarms').click(function(){800 var li_attach = DataLayer.render(path+'templates/alarms_add_itemlist.ejs', {type: 1});801 802 jQuery('.activity-alarms-list').append(li_attach).find('.button.remove').button({803 text:false,804 icons:{805 primary:'ui-icon-close'806 }807 }).click(function(el) {808 $(this).parent().remove().find('li').is(':empty')809 });810 // valicacao de campos numericos811 $('.number').numeric();812 });813 814 707 815 708 UI.dialogs.addActivity.dialog('open');
Note: See TracChangeset
for help on using the changeset viewer.