function taskDetails( objEvent, decoded, path, isMail, repeat){ attendees = {}; if(path == undefined) path = ""; if( !decoded ) objEvent = DataLayer.decode( "schedulable:calendar", objEvent ); if(!isMail) objEvent = DataLayer.encode( "schedulable:preview", objEvent ); if(typeof(objEvent.id) == 'undefined'){ objEvent.alarms = Calendar.signatureOf[User.preferences.defaultCalendar || Calendar.calendarIds[0]].defaultAlarms || false; objEvent.useAlarmDefault = 1; } /** * canDiscardEventDialog deve ser true se não houver alterações no evento */ canDiscardEventDialog = true; /** * zebraDiscardEventDialog é uma flag indicando que uma janela de confirmação (Zebra_Dialog) * já está aberta na tela, uma vez que não é possivel acessar o evento ESC utilizado para fechá-la */ zebraDiscardEventDialog = false; /** ACLs do participant */ acl_names = { 'w': 'acl-white', 'i': 'acl-invite-guests', 'p': 'acl-participation-required' }; var dependsDelegate = function(reference, inverse){ if(inverse){ if(reference.find('input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val()) blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val()); }else{ if(blkAddAtendee.find('.me input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val()) blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(reference.find('input[name="attendee[]"]').val()); } }; var removeOthers = function(){ var other = blkAddAtendee.find('.delegate.attendee-permissions-change-button'); if(other.lenght){ dependsDelegate(other.parents('li'), true); } blkAddAtendee.find('.delegate').removeClass('attendee-permissions-change-button'); blkAddAtendee.find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change'); }; var html = DataLayer.render( path+'templates/task_add.ejs', { event:objEvent }); if (!UI.dialogs.addTask) { UI.dialogs.addTask = jQuery('#sandbox').append('
').find('.new-event-win.active').html(html).dialog({ resizable: false, modal:true, autoOpen: false, width:774, position: 'center', close: function(event, ui) { /** * Remove tooltip possivelmente existente */ if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy'); attendees = {}; }, beforeClose: function(event, ui) { if (!canDiscardEventDialog && !zebraDiscardEventDialog) { zebraDiscardEventDialog = true; window.setTimeout(function() { $.Zebra_Dialog('Suas alterações no evento não foram salvas. Deseja descartar as alterações?', { 'type': 'question', 'overlay_opacity': '0.5', 'buttons': ['Descartar alterações', 'Continuar editando'], 'onClose': function(clicked) { if(clicked == 'Descartar alterações') { canDiscardEventDialog = true; /** *Remoção dos anexos do eventos caso seja cancelado a edição */ DataLayer.rollback(); var ids = false; $.each($('.attachment-list input'), function (i, input) { DataLayer.put('attachment', {id: ''+input.value}); DataLayer.remove('attachment', ''+input.value); ids = true; }); if(ids) DataLayer.commit(); UI.dialogs.addTask.dialog('close'); }else{ zebraDiscardEventDialog = false; } /** * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la * com ESC, para que o evento ESC não seja propagado para fechamento da * janela de edição de eventos, deve ser setada uma flag indicando que * já existe uma janela de confirmação aberta. */ if (!clicked) { window.setTimeout(function() { zebraDiscardEventDialog = false; }, 200); } } }); }, 300); } //DataLayer.rollback(); return canDiscardEventDialog; }, dragStart: function(event, ui) { if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy'); } }); } else { UI.dialogs.addTask.html(html); } var tabs = UI.dialogs.addTask.children('.content').tabs({ select: function(event, ui) { if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy'); } }); var calendar = DataLayer.get('calendar', objEvent.calendar); if (calendar.timezone != objEvent.timezone){ UI.dialogs.addTask.find('.calendar-addevent-details-txt-timezone').find('option[value="'+objEvent.timezone+'"]').attr('selected','selected').trigger('change'); UI.dialogs.addTask.find('.calendar_addevent_details_lnk_timezone').addClass('hidden'); $('.calendar-addevent-details-txt-timezone').removeClass('hidden'); } UI.dialogs.addTask.find('.calendar_addevent_details_lnk_timezone').click(function(e){ $(this).addClass('hidden'); $('.calendar-addtask-details-txt-timezone').removeClass('hidden'); e.preventDefault(); }); /*Seleciona a agenda padrão para visualização/edição de um evento*/ if(objEvent.id) UI.dialogs.addTask.find('option[value="'+objEvent.calendar+'"]').attr('selected','selected').trigger('change'); /* Checkbox allday */ UI.dialogs.addTask.find('input[name="allDay"]').click(function(){ $(this).attr("checked") ? UI.dialogs.addTask.find('.start-time, .end-time').addClass('hidden') : UI.dialogs.addTask.find('.start-time, .end-time').removeClass('hidden'); updateMap(true); }); UI.dialogs.addTask.find('.button').button(); UI.dialogs.addTask.find('.button.add').button({ icons: { secondary: "ui-icon-plus" } }); // ==== validation events ==== UI.dialogs.addTask.find(".input-group .h1").Watermark("Tarefa sem título"); if(User.preferences.hourFormat.length == 5) { UI.dialogs.addTask.find(".end-time, .start-time").mask("99:99", { completed: function(){ updateMap(); } }); } else { $.mask.definitions['{']='[ap]'; $.mask.definitions['}']='[m]'; UI.dialogs.addTask.find(".end-time, .start-time").mask("99:99 {}", { completed:function(){ $(this).val(date.Calendar.defaultToAmPm($(this).val())); $(this).timepicker("refresh"); $(this).val($(this).val().replace(/[\.]/gi, "")); updateMap(); } }); } UI.dialogs.addTask.find(".number").numeric(); User.preferences.dateFormat.indexOf('-') > 0 ? UI.dialogs.addTask.find(".date").mask("99-99-9999", { completed:function(){ updateMap(); } }) : UI.dialogs.addTask.find(".date").mask("99/99/9999", { completed:function(){ updateMap(); } }); UI.dialogs.addTask.find(".menu-addtask") .children(".delete").click(function(){ $.Zebra_Dialog('Tem certeza que deseja excluir o evento?', { 'type': 'question', 'overlay_opacity': '0.5', 'buttons': ['Sim', 'Não'], 'onClose': function(clicked) { if(clicked == 'Sim'){ canDiscardEventDialog = true; /* Remove por filtro */ DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', objEvent.id], ['=', 'calendar', objEvent.calendar], ['=','user',(objEvent.me.user ? objEvent.me.user.id : objEvent.me.id)]]}); Calendar.rerenderView(true); /********************/ UI.dialogs.addTask.dialog("close"); } } }); }).end() .children(".cancel").click(function(){ UI.dialogs.addTask.dialog("close"); }).end() .children(".save").click(function(){ /* Validação */ var msg = false; if(msg = validDateEvent()){ $(".new-event-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg); return false; } canDiscardEventDialog = true; var exit = function(event){ if(event) DataLayer.remove('schedulable', event, false); UI.dialogs.addTask.children().find('form.form-addevent').submit(); UI.dialogs.addTask.dialog("close"); } if(repeat){ DataLayer.remove('repeat', false); DataLayer.put('repeat', repeat); DataLayer.commit('repeat', false, exit(repeat.schedulable)); }else exit(); }).end() .children(".export").click(function(){ UI.dialogs.addTask.children().find(".form-export").submit(); }); var attendeeHtml = DataLayer.render( path+'templates/attendee_add.ejs', { event:objEvent }); // load template of attendees var blkAddAtendee = UI.dialogs.addTask.find('#calendar_addtask_details6').append(attendeeHtml); var dates = UI.dialogs.addTask.find('input.date').datepicker({ dateFormat: User.preferences.dateFormat.replace(/M/g, 'm').replace(/yyyy/g, 'yy'), onSelect : function( selectedDate ){ updateMap(); } }); UI.dialogs.addTask.find('input.time').timepicker({ closeText: 'Ok', hourGrid: 4, minuteGrid: 10, ampm : ((User.preferences.hourFormat.length > 5) ? true: false), timeFormat: "hh:mm tt", onSelect: function (selectedDateTime){ if(!(User.preferences.hourFormat.length == 5)) $(this).val(selectedDateTime.replace(/[\.]/gi, "")); updateMap(); }, onClose : function (selectedDateTime){ if(!(User.preferences.hourFormat.length == 5)) $(this).val(selectedDateTime.replace(/[\.]/gi, "")); } }); blkAddAtendee.find('.add-attendee-search .ui-icon-search').click(function(event) { blkAddAtendee.find('.add-attendee-search input').keydown(); }); blkAddAtendee.find('.add-attendee-search input').keydown(function(event) { if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') { var result = DataLayer.get('user', ["*", "name", $(this).val()], true); /** * TODO: trocar por template */ blkAddAtendee.find('ul.search-result-list').empty().css('overflow', 'hidden'); if (!result) { blkAddAtendee.find('ul.search-result-list').append('
  • '); } for(i=0; i 10) attach.fileName = ext.length == 1 ? file.name.substr(0, 10) : file.name.substr(0, 6) + '.' + ext[ext.length -1]; attach.fileSize = formatBytes(file.size); if(file.size > maxSizeFile) attach.error = 'Tamanho de arquivo nao permitido!!' $('.attachments-list').append(DataLayer.render(path+'templates/attachment_add_itemlist.ejs', { file : attach })); if(file.size < maxSizeFile){ $('.fileinput-button.new').append(data.fileInput[0]).removeClass('new'); $('.attachments-list').find('[type=file]').addClass('hidden'); }else $('.fileinput-button.new').removeClass('new'); $('.attachments-list').find('.button.close').button({ icons: { primary: "ui-icon-close" }, text: false }).click(function(){ var idAttach = $(this).parent().find('input[name="fileId[]"]').val(); $('.attachment-list').find('input[value="'+idAttach+'"]') $(this).parent().remove(); }); }) }, done: function(e, data){ var currentUpload = $('.progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide(); if(!!data.result && data.result != "[]"){ var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data); $('.attachment-list').append(''); currentUpload.removeClass('on-complete').parents('p') .append('') .find('.status-upload').addClass('ui-icon ui-icon-check'); }else currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel'); } }); $('.attachments-list .button').button(); if(!!window.FormData) $('#fileupload').bind('fileuploadstart', function () { var widget = $(this), progressElement = $('#fileupload-progress').fadeIn(), interval = 500, total = 0, loaded = 0, loadedBefore = 0, progressTimer, progressHandler = function (e, data) { loaded = data.loaded; total = data.total; }, stopHandler = function () { widget .unbind('fileuploadprogressall', progressHandler) .unbind('fileuploadstop', stopHandler); window.clearInterval(progressTimer); progressElement.fadeOut(function () { progressElement.html(''); }); }, formatTime = function (seconds) { var date = new Date(seconds * 1000); return ('0' + date.getUTCHours()).slice(-2) + ':' + ('0' + date.getUTCMinutes()).slice(-2) + ':' + ('0' + date.getUTCSeconds()).slice(-2); }, /* formatBytes = function (bytes) { if (bytes >= 1000000000) { return (bytes / 1000000000).toFixed(2) + ' GB'; } if (bytes >= 1000000) { return (bytes / 1000000).toFixed(2) + ' MB'; } if (bytes >= 1000) { return (bytes / 1000).toFixed(2) + ' KB'; } return bytes + ' B'; },*/ formatPercentage = function (floatValue) { return (floatValue * 100).toFixed(2) + ' %'; }, updateProgressElement = function (loaded, total, bps) { progressElement.html( formatBytes(bps) + 'ps | ' + formatTime((total - loaded) / bps) + ' | ' + formatPercentage(loaded / total) + ' | ' + formatBytes(loaded) + ' / ' + formatBytes(total) ); }, intervalHandler = function () { var diff = loaded - loadedBefore; if (!diff) { return; } loadedBefore = loaded; updateProgressElement( loaded, total, diff * (1000 / interval) ); }; widget .bind('fileuploadprogressall', progressHandler) .bind('fileuploadstop', stopHandler); progressTimer = window.setInterval(intervalHandler, interval); }); if(objEvent.isShared){ var acls = Calendar.signatureOf[objEvent.calendar].permission.acl; if(!acls.write){ UI.dialogs.addTask.find(':input').attr('disabled', 'disabled'); UI.dialogs.addTask.find('.button').hide(); } if(acls.remove) UI.dialogs.addTask.find('.button.remove').show(); UI.dialogs.addTask.find('.button.cancel').show(); } disponibily(objEvent, path, attendees); UI.dialogs.addTask.find('.button-add-alarms').click(function(){ var li_attach = DataLayer.render(path+'templates/alarms_add_itemlist.ejs', {type: 1}); jQuery('.task-alarms-list').append(li_attach).find('.button.remove').button({ text:false, icons:{ primary:'ui-icon-close' } }).click(function(el) { $(this).parent().remove().find('li').is(':empty') }); // valicacao de campos numericos $('.number').numeric(); }); UI.dialogs.addTask.dialog('open'); }