Ignore:
Timestamp:
08/10/12 19:11:37 (12 years ago)
Author:
acoutinho
Message:

Ticket #2966 - Merge de novas funcionalidades com trunk #2951, #2952

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/calendar/js/helpers.js

    r6956 r6996  
    101101} 
    102102 
    103 /* 
    104 function listEvents(){ 
    105         var list = $('.fc-header-right').find('.fc-button.fc-button-agendaDay').clone(); 
     103function printNow(){ 
     104 
     105        var window_print = window.open('','ExpressoCalendar','width=800,height=600,scrollbars=yes');         
     106        window_print.document.open(); 
     107 
     108        var start = $("#calendar").fullCalendar('getView').visStart.getTime()/1000; 
     109        var end = $("#calendar").fullCalendar('getView').visEnd.getTime()/1000; 
     110        var criteria = DataLayer.criteria("schedulable:calendar", {'start':start, 'end':end} ); 
     111         
     112        var data = DataLayer.get("schedulable:print", criteria);         
     113 
     114        if($("#calendar").fullCalendar('getView').name == "month"){                              
     115                window_print.document.write(DataLayer.render('templates/calendar_month_print.ejs', { 
     116                        'InfoPage' : $("#calendar").fullCalendar('getView').title, 
     117                        'days' : data 
     118                } )); 
     119        } 
     120        if($("#calendar").fullCalendar('getView').name == "agendaDay"){                          
     121                window_print.document.write(DataLayer.render('templates/calendar_day_print.ejs', { 
     122                        'InfoPage' : $("#calendar").fullCalendar('getView').title, 
     123                        'days' : data 
     124                } )); 
     125        } 
     126        if($("#calendar").fullCalendar('getView').name == "agendaWeek"){ 
     127                window_print.document.write(DataLayer.render('templates/calendar_week_print.ejs', { 
     128                        'InfoPage' : $("#calendar").fullCalendar('getView').title, 
     129                        'days' : data 
     130                })); 
     131                 
     132                var aux = 0; 
     133                setTimeout(function(){$(window_print.document).find(".all-day").each(function(){ 
     134                        if($(this).height() > aux) 
     135                                aux = $(this).height(); 
     136                }); 
     137                $(window_print.document).find(".all-day").each(function(){ 
     138                        $(this).height(aux); 
     139                }); 
     140                $(window_print.document).find(".all-day-line .write").height(aux); 
     141                aux = 0; 
     142                },20); 
     143        } 
     144        if($("#calendar").fullCalendar('getView').name == "year"){       
     145                window_print.document.write(DataLayer.render('templates/calendar_year_print.ejs', { 
     146                        'html' : $('#calendar .fc-content').html(), 
     147                        'header': $('#calendar').find('.fc-header-center h2').text() 
     148                } )); 
     149        }                
     150        window_print.document.close(); 
     151        setTimeout(window_print.print(), 300); 
     152} 
     153 
     154function printEvents(){ 
     155        //var html = DataLayer.render( path + 'templates/attendee_permissions.ejs', {} ); 
     156        var print = $('.fc-header-right').find('.fc-button.fc-button-agendaDay').clone(); 
     157 
    106158        $('.fc-header-right').find('.fc-button-year').toggleClass('fc-corner-right'); 
    107         list.addClass('fc-corner-right'); 
    108         list.addClass('fc-button-listagem'); 
    109         list.removeClass('fc-button-agendaDay'); 
    110         list.removeClass('fc-corner-left'); 
    111         list.find('.fc-button-content').html('Listagem'); 
    112         $('.fc-header-right').append(list); 
    113 } 
    114 */ 
     159        print.addClass('fc-corner-right'); 
     160        print.addClass('fc-button-print'); 
     161        print.removeClass('fc-button-agendaDay'); 
     162        print.removeClass('fc-corner-left'); 
     163        print.find('.fc-button-content').html('Imprimir'); 
     164        $('.fc-header-right').append(print); 
     165        $('.fc-button-print').click(function(){ 
     166            alert('A tela de impressão será melhor visualizada com a preferência "Paisagem" do seu browser selecionada.'); 
     167            printNow(); 
     168        }); 
     169} 
    115170 
    116171/* 
     
    122177function eventDetails( objEvent, decoded, path, isMail, repeat) 
    123178{ 
     179 
     180    $('.qtip.qtip-blue').remove(); 
     181 
    124182    attendees = {}; 
    125183         
     
    399457        modal:true,  
    400458        autoOpen: false, 
    401         width:702,  
     459        width:701,  
    402460        position: 'center',  
    403461        close: function(event, ui) { 
     
    936994// load template of attendees 
    937995var blkAddAtendee = UI.dialogs.addEvent.find('#calendar_addevent_details6').append(attendeeHtml); 
    938 if(objEvent.attendee.length) 
    939     callbackAttendee(); 
     996if(objEvent.attendee.length)  
     997                callbackAttendee();  
    940998/** 
    941                                 Opções de delegação do participante/organizer 
    942                         */               
     999Opções de delegação do participante/organizer 
     1000*/               
    9431001blkAddAtendee.find(".button.participant-delegate").button({ 
    9441002    icons: { 
     
    9681026 
    9691027UI.dialogs.addEvent.find(".attendee-list-add .add-attendee-input input").Watermark("digite um email para convidar"); 
    970 /* Trata a edição de um novo participante adicionado 
    971                         *  
    972                         */ 
     1028/*  
     1029 * Trata a edição de um novo participante adicionado 
     1030 */ 
    9731031var hasNewAttendee = false; 
    9741032                         
     
    9781036                         
    9791037blkAddAtendee.find('.attendee-list-add .add-attendee-input input').keydown(function(event) { 
    980                                  
    9811038    if (event.keyCode == '13' && $(this).val() != '' || (event.keyCode == undefined && $(this).val() != '')) { 
    9821039        Encoder.EncodeType = "entity"; 
     
    9901047 
    9911048        /** 
    992                                          * email válido? 
    993                                          */ 
     1049        * email válido? 
     1050        */ 
    9941051        info.match(/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/) ?  
    9951052        newAttendeeEmail = info : newAttendeeName = info; 
    9961053 
    9971054        /** 
    998                                          * 1) busca no banco para saber se o usuário já existe 
    999                                          *              1.1) se existe, atualiza as info na lista de participantes e nao abre o tooltip 
    1000                                          *              1.2) se não existe 
    1001                                          *                      a) salva como novo usuario externo no banco (apenas com email) 
    1002                                          *                      b) exibe tooltip pedindo o nome 
    1003                                          *                      c) se o usuário preenche tooltip e salva, atualiza com o nome o usuário recém criado 
    1004                                          *                      d) se o usuário cancela o tooltip, fica o usuário salvo apenas com email e sem nome 
    1005                                          */ 
     1055        * 1) busca no banco para saber se o usuário já existe 
     1056        *               1.1) se existe, atualiza as info na lista de participantes e nao abre o tooltip 
     1057        *               1.2) se não existe 
     1058        *                       a) salva como novo usuario externo no banco (apenas com email) 
     1059        *                       b) exibe tooltip pedindo o nome 
     1060        *                       c) se o usuário preenche tooltip e salva, atualiza com o nome o usuário recém criado 
     1061        *                       d) se o usuário cancela o tooltip, fica o usuário salvo apenas com email e sem nome 
     1062        */ 
    10061063 
    10071064        var user = DataLayer.get('user', ["=", "mail", $(this).val()]); 
     
    10121069                                         
    10131070        /** 
    1014                                          * guarda o último tooltip aberto referente à lista de participantes  
    1015                                          */ 
     1071        * guarda o último tooltip aberto referente à lista de participantes  
     1072        */ 
    10161073        lastEditAttendeeToolTip = []; 
    10171074 
    10181075        /** 
    1019                                          * Valida email e salva um participante externo  
    1020                                          */ 
     1076        * Valida email e salva um participante externo  
     1077        */ 
    10211078        var saveContact = function() { 
    10221079            Encoder.EncodeType = "entity"; 
     
    11921249    $(this).val(''); 
    11931250 
    1194 } else if (!skipAddNewLine) {            
     1251} else if (!skipAddNewLine) { 
    11951252    /** 
    1196                                                 * a) salva como novo usuario externo no banco (apenas com email) e... 
    1197                                                 * adiciona novo contato externo à lista de convidados 
    1198                                                 */ 
     1253    * a) salva como novo usuario externo no banco (apenas com email) e... 
     1254    * adiciona novo contato externo à lista de convidados 
     1255    */ 
    11991256 
    12001257    userId = DataLayer.put('user', { 
     
    12851342 
    12861343/**  
    1287                         * Trata a busca de usuários para adição de participantes 
    1288                         */ 
     1344* Trata a busca de usuários para adição de participantes 
     1345*/ 
    12891346blkAddAtendee.find('.add-attendee-search .ui-icon-search').click(function(event) { 
    12901347    blkAddAtendee.find('.add-attendee-search input').keydown(); 
     
    13741431    } 
    13751432}); 
     1433 
    13761434//$('.block-add-attendee .search-result-list').selectable(); 
    13771435 
     
    13951453                        }); 
    13961454                }); 
    1397                 $('.attachment-list input').remove(); 
    1398                 $('.row.fileupload-buttonbar .attachments-list p').remove(); 
     1455                $('div.new-event-win .attachment-list input').remove(); 
     1456                $('div.new-event-win .row.fileupload-buttonbar .attachments-list p').remove(); 
     1457                $('div.new-event-win .btn-danger.delete').addClass('hidden'); 
    13991458            } 
    14001459        }}); 
     
    14151474    text: false 
    14161475}); 
    1417 var maxSizeFile = 2000000; 
    1418 $('#fileupload').fileupload({ 
    1419     sequentialUploads: true, 
    1420     add: function (e, data) { 
    1421         if(data.files[0].size < maxSizeFile) 
    1422             data.submit(); 
    1423     }, 
    1424     change: function (e, data) { 
    1425         $.each(data.files, function (index, file) { 
    1426             var attach = {}; 
    1427             attach.fileName = file.name; 
    1428             var ext = file.name.split('.'); 
    1429             if(file.name.length > 10) 
    1430                 attach.fileName = ext.length == 1 ? file.name.substr(0, 10) :  file.name.substr(0, 6) + '.' + ext[ext.length -1]; 
    1431             attach.fileSize = formatBytes(file.size); 
    1432             if(file.size > maxSizeFile) 
    1433                 attach.error = 'Tamanho de arquivo nao permitido!!' 
    1434                                  
    1435             $('.attachments-list').append(DataLayer.render(path+'templates/attachment_add_itemlist.ejs', { 
    1436                 file : attach 
    1437             })); 
    1438                                  
    1439             if(file.size < maxSizeFile){ 
    1440                 $('.fileinput-button.new').append(data.fileInput[0]).removeClass('new'); 
    1441                 $('.attachments-list').find('[type=file]').addClass('hidden'); 
    1442                                          
    1443             }else 
    1444                 $('.fileinput-button.new').removeClass('new'); 
    1445                                  
    1446                                  
    1447             $('.attachments-list').find('.button.close').button({ 
    1448                 icons: { 
    1449                     primary: "ui-icon-close" 
    1450                 }, 
    1451                 text: false 
    1452             }).click(function(){ 
    1453                 var idAttach = $(this).parent().find('input[name="fileId[]"]').val(); 
    1454                 $('.attachment-list').find('input[value="'+idAttach+'"]') 
    1455                 $(this).parent().remove(); 
    1456             });  
    1457                                  
    1458         }) 
    1459         }, 
    1460     done: function(e, data){ 
    1461         var currentUpload = $('.progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide(); 
    1462  
    1463         if(!!data.result && data.result != "[]"){ 
    1464             var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data); 
    1465             $('.attachment-list').append('<input tyepe="hidden" name="attachment[]" value="'+newAttach['attachment'][0][0].id+'"/>'); 
    1466             currentUpload.removeClass('on-complete').parents('p') 
    1467             .append('<input type="hidden" name="fileId[]" value="'+newAttach['attachment'][0][0].id+'"/>') 
    1468             .find('.status-upload').addClass('ui-icon ui-icon-check'); 
    1469         }else 
    1470             currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel'); 
    1471     } 
    1472 }); 
    1473 $('.attachments-list .button').button(); 
    1474  
    1475 if(!!window.FormData)                    
    1476 $('#fileupload').bind('fileuploadstart', function () { 
    1477     var widget = $(this), 
    1478     progressElement = $('#fileupload-progress').fadeIn(), 
    1479     interval = 500, 
    1480     total = 0, 
    1481     loaded = 0, 
    1482     loadedBefore = 0, 
    1483     progressTimer, 
    1484     progressHandler = function (e, data) { 
    1485         loaded = data.loaded; 
    1486         total = data.total; 
    1487     }, 
    1488     stopHandler = function () { 
    1489         widget 
    1490         .unbind('fileuploadprogressall', progressHandler) 
    1491         .unbind('fileuploadstop', stopHandler); 
    1492         window.clearInterval(progressTimer); 
    1493         progressElement.fadeOut(function () { 
    1494             progressElement.html(''); 
    1495         }); 
    1496     }, 
    1497     formatTime = function (seconds) { 
    1498         var date = new Date(seconds * 1000); 
    1499         return ('0' + date.getUTCHours()).slice(-2) + ':' + 
    1500         ('0' + date.getUTCMinutes()).slice(-2) + ':' + 
    1501         ('0' + date.getUTCSeconds()).slice(-2); 
    1502     }, 
    1503     /* formatBytes = function (bytes) { 
    1504             if (bytes >= 1000000000) { 
    1505                 return (bytes / 1000000000).toFixed(2) + ' GB'; 
    1506             } 
    1507             if (bytes >= 1000000) { 
    1508                 return (bytes / 1000000).toFixed(2) + ' MB'; 
    1509             } 
    1510             if (bytes >= 1000) { 
    1511                 return (bytes / 1000).toFixed(2) + ' KB'; 
    1512             } 
    1513             return bytes + ' B'; 
    1514         },*/ 
    1515     formatPercentage = function (floatValue) { 
    1516         return (floatValue * 100).toFixed(2) + ' %'; 
    1517     }, 
    1518     updateProgressElement = function (loaded, total, bps) { 
    1519         progressElement.html( 
    1520             formatBytes(bps) + 'ps | ' + 
    1521             formatTime((total - loaded) / bps) + ' | ' + 
    1522             formatPercentage(loaded / total) + ' | ' + 
    1523             formatBytes(loaded) + ' / ' + formatBytes(total) 
    1524             ); 
    1525     }, 
    1526     intervalHandler = function () { 
    1527         var diff = loaded - loadedBefore; 
    1528         if (!diff) { 
    1529             return; 
    1530         } 
    1531         loadedBefore = loaded; 
    1532         updateProgressElement( 
    1533             loaded, 
    1534             total, 
    1535             diff * (1000 / interval) 
    1536             ); 
    1537     }; 
    1538     widget 
    1539     .bind('fileuploadprogressall', progressHandler) 
    1540     .bind('fileuploadstop', stopHandler); 
    1541     progressTimer = window.setInterval(intervalHandler, interval); 
    1542 }); 
     1476 
     1477extendsFileupload('event', path); 
    15431478         
    15441479if(objEvent.isShared){ 
     
    15571492} 
    15581493 
    1559 disponibily(objEvent, path, attendees); 
     1494disponibily(objEvent, path, attendees, 'event'); 
    15601495 
    15611496/*Seleciona a agenda padrão para criação de um evento*/ 
     
    15731508 
    15741509UI.dialogs.addEvent.dialog('open'); 
    1575 //$('[href="#calendar_addevent_details7"]').trigger('click'); 
    1576 //$('[href="#calendar_addevent_details2"]').trigger('click'); 
     1510 
    15771511} 
    15781512 
     
    16911625 
    16921626 
    1693 function add_tab_configure_calendar(calendar)  
     1627function add_tab_configure_calendar(calendar, type)  
    16941628{ 
     1629    $('.qtip.qtip-blue').remove(); 
     1630 
    16951631    var calendars = []; 
    16961632    var signatures = []; 
     
    16981634        var calendarAlarms = []; 
    16991635         
    1700     for (var i=0; i<Calendar.signatures.length; i++) { 
    1701         calendars[i]  = Calendar.signatures[i].calendar; 
    1702         signatures[i] = Calendar.signatures[i]; 
    1703         signatures[i].numberDefaultAlarm = signatures[i].defaultAlarms != '' ?  signatures[i].defaultAlarms.length: 0; 
    1704         if (calendar && calendars[i].id == calendar) 
    1705             previewActiveCalendarConf = i; 
    1706     } 
    1707                  
    1708     if(!(document.getElementById('configure_tab'))) 
     1636        for (var i=0; i<Calendar.signatures.length; i++) { 
     1637                if(parseInt(Calendar.signatures[i].calendar.type) == type){ 
     1638                   calendars.push(Calendar.signatures[i].calendar); 
     1639                   signatures.push(Calendar.signatures[i]); 
     1640                   length = signatures.length - 1; 
     1641                   signatures[length].numberDefaultAlarm = signatures[length].defaultAlarms != '' ?  signatures[length].defaultAlarms.length: 0; 
     1642                   if (calendar && calendars[length].id == calendar) 
     1643                           previewActiveCalendarConf = length; 
     1644                } 
     1645   } 
     1646        var tab_selector = ['configure_tab', 'configure_tab_group'];     
     1647    if(!(document.getElementById(tab_selector[type]))) 
    17091648    { 
    17101649        $('.positionHelper').css('display', 'none'); 
    17111650        $('.cal-list-options-btn').removeClass('fg-menu-open ui-state-active'); 
    1712         var tab_title = "Configurações de agendas"; 
    1713         $tabs.tabs( "add", "#configure_tab", tab_title ); 
     1651        if(type == 0){ 
     1652                var tab_title = "Configurações de agendas"; 
     1653        }else{ 
     1654                var tab_title = "Configurações de Grupos"; 
     1655        } 
     1656        $tabs.tabs( "add", "#"+tab_selector[type], tab_title ); 
    17141657                 
    17151658        var dataColorPicker = { 
     
    17341677            DataLayer.render( 'templates/configure_calendars_itemlist.ejs', { 
    17351678                user:User,  
     1679                type:0, 
    17361680                calendar:calendars[nowActive],  
    17371681                signature:signatures[nowActive] 
    17381682                }, function( form_template ){ 
    1739                 var form_content = jQuery('.accordion-user-calendars .ui-accordion-content').eq(nowActive).html( form_template ).find('form'); 
     1683                var form_content = jQuery('#'+tab_selector[type]+' .accordion-user-calendars .ui-accordion-content').eq(nowActive).html( form_template ).find('form'); 
    17401684                form_content.find('.preferences-alarms-list .button').button({ 
    17411685                    text:false,  
     
    17561700 
    17571701                form_content.find('.button-add-alarms').click(function(){ 
    1758                     DataLayer.render( 'templates/alarms_add_itemlist.ejs', {}, function( template ){                                             
     1702                    DataLayer.render( 'templates/alarms_add_itemlist.ejs', {type: 0}, function( template ){                                              
    17591703                        jQuery('.preferences-alarms-list').append(template) 
    17601704                        .find('li:last label:eq(0)').remove().end() 
     
    18621806DataLayer.render( 'templates/configure_calendars.ejs', { 
    18631807    user:User,  
     1808        type: 0, 
    18641809    calendars:calendars,  
    18651810    signatures:signatures 
    18661811}, function( template ){ 
    1867     var template_content = jQuery('#configure_tab').html( template ).find('.configure-calendars-win'); 
     1812    var template_content = jQuery('#'+tab_selector[type]).html( template ).find('.configure-calendars-win'); 
    18681813    template_content.find('.button').button().filter('.save').click(function(evt){ 
    18691814        if(calendarAlarms.length) 
    18701815                DataLayer.removeFilter('calendarSignatureAlarm', {filter: ['IN','id', calendarAlarms]});         
    18711816        template_content.find('form').submit(); 
    1872         $tabs.tabs( "remove", "#configure_tab"); 
     1817        $tabs.tabs( "remove", "#"+tab_selector[type]); 
    18731818        DataLayer.commit( false, false, function( received ){ 
    18741819            delete Calendar.currentViewKey; 
     
    18791824                Calendar.load(); 
    18801825    }).end().filter('.cancel').click(function(evt){ 
    1881         $tabs.tabs( "remove", "#configure_tab"); 
     1826        $tabs.tabs( "remove", "#"+tab_selector[type]); 
    18821827    }); 
    18831828 
     
    19051850        $('.positionHelper').css('display','none'); 
    19061851    $('.cal-list-options-btn').removeClass('fg-menu-open ui-state-active'); 
    1907     $tabs.tabs("select", "#configure_tab"); 
     1852    $tabs.tabs("select", "#"+tab_selector[type]); 
    19081853    $('.accordion-user-calendars').accordion( "activate" , previewActiveCalendarConf ); 
    19091854                 
     
    19131858} 
    19141859 
    1915 function getSelectedCalendars( reverse ){ 
     1860function getSelectedCalendars( reverse, type ){ 
     1861        var selector = ""; 
     1862        if(type == 0) 
     1863                selector = ".my-calendars"; 
     1864        if(type == 1) 
     1865                selector = ".my-groups-task"; 
    19161866    var selecteds = {}; 
    19171867    var cont = 0;  
    19181868    jQuery(function() { 
    1919         jQuery(".my-calendars .calendar-view").each(function(i, obj) {  
     1869        jQuery(selector+" .calendar-view").each(function(i, obj) {  
    19201870            var check_box = obj; 
    19211871            if( reverse ? !check_box.checked : check_box.checked ) { 
     
    19751925 
    19761926function remove_event(eventId, idCalendar){ 
    1977     $.Zebra_Dialog('Tem certeza que deseja excluir o evento?', { 
     1927    $.Zebra_Dialog('Tem certeza que deseja excluir?', { 
    19781928        'type':     'question', 
    19791929        'overlay_opacity': '0.5', 
     
    20291979 
    20301980 
    2031 function remove_calendar(){ 
     1981function remove_calendar(type){ 
    20321982    /* Pode ser assim $('.cal-list-options-btn.ui-state-active').attr('class').replace(/[a-zA-Z-]+/g, ''); */ 
    2033     $.Zebra_Dialog('Todos os eventos desta agenda serão removidos. Deseja prosseguir com a operação?', { 
     1983        if(!!parseInt(type)) 
     1984                var title = 'Todas as tarefas deste grupo serão removidas. Deseja prosseguir com a operação?'; 
     1985        else 
     1986                var title = 'Todos os eventos desta agenda serão removidos. Deseja prosseguir com a operação?'; 
     1987    $.Zebra_Dialog(title, { 
    20341988        'type':     'question', 
    20351989        'overlay_opacity': '0.5', 
     
    20472001                    delete Calendar.currentViewKey; 
    20482002                    Calendar.load(); 
    2049                     refresh_calendars(); 
     2003                    refresh_calendars(type); 
    20502004                }); 
    20512005            } 
     
    20562010} 
    20572011 
    2058 function refresh_calendars(){ 
     2012function refresh_calendars(type){ 
    20592013 
    20602014    var colorsSuggestions = colors_suggestions(); 
     
    20912045                }); 
    20922046        } 
     2047         
    20932048        doMenu(); 
     2049        var currentToolTip = null; 
    20942050        $('#divAppbox').on('scroll',function(){ 
    20952051                if ($('.cal-list-options-btn.fg-menu-open.ui-state-active')){                    
    20962052                        var offset = $('.cal-list-options-btn.fg-menu-open.ui-state-active').offset(); 
    20972053                        if (offset) 
    2098                                 $('.positionHelper').css('top',offset.top); 
     2054                            $('.positionHelper').css('top',offset.top); 
    20992055                } 
     2056 
    21002057                if ($('.button.config-menu.fg-menu-open')){ 
    21012058                        var offset = $('.button.config-menu.fg-menu-open').offset(); 
    21022059                        if (offset) 
    2103                                 $('.positionHelper').css('top',offset.top); 
     2060                            $('.positionHelper').css('top',offset.top); 
    21042061                }                
     2062 
     2063                 
     2064                if ($(".new-group.qtip-active").length || $(".new-calendar.qtip-active").length)                         
     2065                    $('.qtip-active').css('top',currentToolTip.offset().top - 50); 
     2066                 
    21052067        }); 
     2068         
    21062069        $('ul.list-calendars .cal-list-options-btn').on('click',function(){doMenu();});          
    21072070         
     2071 
     2072    /***************************************New Calendar***************************************/ 
    21082073        meu_container.find(".button.new-calendar").button({ 
    21092074            icons: { 
     
    21122077            text: false 
    21132078        }).click(function () { 
    2114                  
    2115             if( $('.qtip.qtip-blue.qtip-active').val() !== ''){ 
    2116                 $(this).qtip({ 
    2117                     show: { 
    2118                     ready: true,  
    2119             solo: true,  
    2120             when: { 
    2121                     event: 'click' 
    2122                     } 
    2123                 }, 
    2124                 hide: false, 
    2125                 content: { 
    2126                 text: $('<div></div>').html( DataLayer.render( 'templates/calendar_quick_add.ejs', {} ) ),  
    2127                 title: { 
    2128                 text:'Nova Agenda',  
    2129                 button: '<a class="button close" href="#">close</a>' 
    2130                 } 
    2131                 }, 
    2132                 style: { 
    2133                 name: 'blue',  
    2134             tip: { 
    2135                 corner: 'leftMiddle' 
    2136                 },  
    2137             border: { 
    2138                 width: 4,  
    2139             radius: 8 
    2140                 },  
    2141             width: { 
    2142                 min: 230,  
    2143             max:230 
    2144                 } 
    2145             }, 
    2146             position: { 
    2147             corner: { 
    2148             target: 'rightMiddle', 
    2149             tooltip: 'leftMiddle' 
    2150             }, 
    2151             adjust: { 
    2152             x:0,  
    2153             y:-12 
    2154             } 
    2155             } 
    2156             }) 
    2157         .qtip("api").onShow = function(arg0) { 
    2158             $('.qtip-active .button.close').button({ 
    2159                 icons: { 
    2160                     primary: "ui-icon-close" 
    2161                 }, 
    2162                 text: false 
    2163             }) 
    2164             .click(function(){ 
    2165                 meu_container.find(".button.new-calendar").qtip('destroy'); 
    2166             }); 
    2167             //TODO emplementar tratamento de duplicação de valores no location 
    2168             $('.qtip-active .button.save').button().click(function(){ 
    2169                 for(var i = 0; i < Calendar.calendars.length; i++){ 
    2170                     if(Calendar.calendars[i].location == ( User.me.uid + '/' + $('.qtip-active input').val())){  
    2171                         $.Zebra_Dialog('O nome desta agenda já está sendo utilizada em uma Url de outra agenda. Por favor, informe outro nome para agenda.',{ 
    2172                             'overlay_opacity': '0.5', 
    2173                             'type': 'warning' 
    2174                         }); 
    2175                         meu_container.find(".button.new").qtip('destroy'); 
    2176                         return; 
    2177                     } 
    2178                 } 
     2079                currentToolTip = $(this); 
     2080        var typeCalendar = !!parseInt($(this).attr('class').match(/[0-9]+/g)) ?  
     2081            {type: 'new-group', title: 'Novo Grupo', typeValue: 1, prompt: 'Nome do grupo'} :  
     2082            {type: 'new-calendar', title: 'Nova Agenda', typeValue: 0, prompt: 'Nome da agenda'} 
     2083                 
     2084            if(!$('.qtip.qtip-blue.qtip-active.'+typeCalendar.type).length){ 
     2085 
     2086            $('.qtip.qtip-blue').remove(); 
     2087 
     2088                $(this).qtip({ 
     2089                                show: { 
     2090                       ready: true,  
     2091                   solo: true,  
     2092                   when: { 
     2093                          event: 'click' 
     2094                       } 
     2095                    }, 
     2096                  hide: false, 
     2097                  content: { 
     2098                          text: $('<div></div>').html( DataLayer.render( 'templates/calendar_quick_add.ejs', {} ) ),  
     2099                          title: { 
     2100                              text: typeCalendar.title,  
     2101                              button: '<a class="button close" href="#">close</a>' 
     2102                          } 
     2103                        }, 
     2104                  style: { 
     2105                          name: 'blue',  
     2106                      tip: { 
     2107                              corner: 'leftMiddle' 
     2108                          },  
     2109                   border: { 
     2110                           width: 4,  
     2111                           radius: 8 
     2112                          },  
     2113                      width: { 
     2114                              min: 230,  
     2115                          max:230 
     2116                          } 
     2117                    }, 
     2118               position: { 
     2119                       corner: { 
     2120                           target: 'rightMiddle', 
     2121                           tooltip: 'leftMiddle' 
     2122                       }, 
     2123                       adjust: { 
     2124                            x:0,  
     2125                            y: -12 
     2126                                                 
     2127                       } 
     2128                    } 
     2129            }) 
     2130                .qtip("api").onShow = function(arg0) { 
    21792131                                 
    2180                 var selected; 
    2181                 var color = $('.cal-colors-options-btn').each(function(index){ 
    2182                     if ($(this).is('.color-selected')) 
    2183                         selected = index; 
    2184                 }); 
    2185                 DataLayer.put( "calendarSignature", { 
    2186                     user: User.me.id, 
    2187                     calendar: { 
    2188                         name: Encoder.htmlEncode($('.qtip-active input').val()), 
    2189                         timezone: User.preferences.timezone                              
    2190                     }, 
    2191                     isOwner: 1, 
    2192                     fontColor: colorsSuggestions[selected]['font'].substring(1) , 
    2193                     backgroundColor: colorsSuggestions[selected]['background'].substring(1) , 
    2194                     borderColor: colorsSuggestions[selected]['border'].substring(1) 
    2195                 }); 
    2196                 DataLayer.commit( false, false, function( received ){ 
    2197                     delete Calendar.currentViewKey; 
    2198                     Calendar.load(); 
    2199                     refresh_calendars(); 
    2200                 }); 
    2201                 meu_container.find(".button.new").qtip('destroy'); 
    2202             }); 
    2203                          
    2204             $('.qtip-active .button.cancel').button().click(function(){ 
    2205                 meu_container.find(".button.new").qtip('destroy'); 
    2206             }); 
    2207                          
    2208             $(".qtip-active input").Watermark("Nome da agenda"); 
    2209                          
    2210             $('.qtip-active').keydown(function(event) { 
    2211                 if (event.keyCode == '27') { 
    2212                     meu_container.find(".button.new").qtip('destroy'); 
    2213                 } 
    2214             }); 
    2215                          
    2216             $('.colors-options').prepend(buttons_colors); 
    2217             $('.colors-options .signed-cal-colors-options-btn-0').addClass('color-selected'); 
    2218                                          
    2219             var buttons = $('.cal-colors-options-btn').button(); 
    2220                          
    2221             buttons.click(function(){ 
    2222                 buttons.removeClass('color-selected'); 
    2223                 $(this).addClass('color-selected'); 
    2224             }); 
    2225         }                                
    2226         } 
     2132                    $('.qtip-active .button.close').button({ 
     2133                          icons: { 
     2134                              primary: "ui-icon-close" 
     2135                          }, 
     2136                          text: false 
     2137                    }) 
     2138                    .click(function(){ 
     2139                              $('.qtip.qtip-blue').remove(); 
     2140                    }); 
     2141                     
     2142                 $('.qtip-active').addClass(typeCalendar.type); 
     2143 
     2144                    $('.qtip-active .button.save').button().click(function(){ 
     2145                    if(!typeCalendar.typeValue) 
     2146                                for(var i = 0; i < Calendar.calendars.length; i++){ 
     2147                                    if(Calendar.calendars[i].location == ( User.me.uid + '/' + $('.qtip-active input').val())){  
     2148                                        $.Zebra_Dialog('O nome desta agenda já está sendo utilizada em uma Url de outra agenda. Por favor, informe outro nome para agenda.',{ 
     2149                                            'overlay_opacity': '0.5', 
     2150                                            'type': 'warning' 
     2151                                        }); 
     2152                                        $('.qtip.qtip-blue').remove(); 
     2153                                        return; 
     2154                                    } 
     2155                                } 
     2156                                         
     2157                        var selected; 
     2158                        var color = $('.cal-colors-options-btn').each(function(index){ 
     2159                            if ($(this).is('.color-selected')) 
     2160                                 selected = index; 
     2161                        }); 
     2162                        DataLayer.put( "calendarSignature", { 
     2163                            user: User.me.id, 
     2164                            calendar: { 
     2165                                name: Encoder.htmlEncode($('.qtip-active input').val()), 
     2166                                timezone: User.preferences.timezone, 
     2167                        type: typeCalendar.typeValue                     
     2168                            }, 
     2169                            isOwner: 1, 
     2170                            fontColor: colorsSuggestions[selected]['font'].substring(1) , 
     2171                            backgroundColor: colorsSuggestions[selected]['background'].substring(1) , 
     2172                            borderColor: colorsSuggestions[selected]['border'].substring(1) 
     2173                        }); 
     2174                        DataLayer.commit( false, false, function( received ){ 
     2175                            delete Calendar.currentViewKey; 
     2176                            Calendar.load(); 
     2177                            refresh_calendars(); 
     2178                        }); 
     2179                        $('.qtip.qtip-blue').remove(); 
     2180                    }); 
     2181                                 
     2182                    $('.qtip-active .button.cancel').button().click(function(){ 
     2183                        meu_container.find(".button.new").qtip('destroy'); 
     2184                    }); 
     2185                                 
     2186                    $(".qtip-active input").Watermark(typeCalendar.prompt); 
     2187                                 
     2188                    $('.qtip-active').keydown(function(event) { 
     2189                            if (event.keyCode == '27')  
     2190                              meu_container.find(".button.new").qtip('destroy'); 
     2191                    }); 
     2192                                 
     2193                    $('.colors-options').prepend(buttons_colors); 
     2194                    $('.colors-options .signed-cal-colors-options-btn-0').addClass('color-selected'); 
     2195                                                 
     2196                    var buttons = $('.cal-colors-options-btn').button(); 
     2197                                 
     2198                    buttons.click(function(){ 
     2199                        buttons.removeClass('color-selected'); 
     2200                        $(this).addClass('color-selected'); 
     2201                    }); 
     2202                }                                
     2203           } 
    22272204    }); 
    2228          
     2205 
    22292206    $("img.cal-list-img").click(function(evt) { 
    2230         $(".cal-list-options_1").toggleClass( "hidden" ); 
     2207           $(".cal-list-options_1").toggleClass( "hidden" ); 
    22312208    }); 
    22322209 
     2210    $(".my-groups-task a.title-my-calendars").click(function() { 
     2211        $(".my-groups-task ul.my-list-calendars").toggleClass("hidden") 
     2212        $('.my-groups-task .status-list').toggleClass("ui-icon-triangle-1-s"); 
     2213        $('.my-groups-task .status-list').toggleClass("ui-icon-triangle-1-e"); 
     2214    }); 
     2215 
    22332216    $(".my-calendars a.title-my-calendars").click(function() { 
    2234         $(".my-calendars ul.my-list-calendars").toggleClass("hidden") 
    2235         $('.my-calendars .status-list').toggleClass("ui-icon-triangle-1-s"); 
    2236         $('.my-calendars .status-list').toggleClass("ui-icon-triangle-1-e"); 
     2217        $(".my-calendars ul.my-list-calendars").toggleClass("hidden") 
     2218        $('.my-calendars .status-list').toggleClass("ui-icon-triangle-1-s"); 
     2219        $('.my-calendars .status-list').toggleClass("ui-icon-triangle-1-e"); 
    22372220    }); 
    22382221                 
    22392222    $(".signed-calendars a.title-signed-calendars").click(function() { 
    2240         $(".signed-calendars ul.signed-list-calendars").toggleClass( "hidden"); 
     2223           $(".signed-calendars ul.signed-list-calendars").toggleClass( "hidden"); 
    22412224    }); 
    22422225 
     
    22702253                 
    22712254    $('.calendar-view').click(function(evt){ 
    2272         if($tabs.tabs('option' ,'selected') == 1){ 
    2273             pageselectCallback('', 0); 
     2255        if($tabs.tabs('option' ,'selected') != 0){ 
     2256            pageselectCallback('', 0, false, type); 
    22742257        } 
    22752258                         
     
    22852268} 
    22862269 
    2287 function add_events_list(keyword) 
     2270function add_events_list(keyword, type) 
    22882271{ 
    22892272    var tab_title = "";  
    22902273    if (keyword){ 
    2291         if(keyword.length < 10) 
    2292             tab_title = keyword;  
    2293         else 
    2294             tab_title = keyword.substr(0,10) + '..."';  
     2274                type = 2; 
     2275                if(keyword.length < 10) 
     2276                        tab_title = keyword;  
     2277                else 
     2278                        tab_title = keyword.substr(0,10) + '..."';  
    22952279    }else{ 
    2296         tab_title = "Lista de eventos"; 
    2297     } 
     2280                if(type){ 
     2281                        if(!!parseInt(type)) 
     2282                                tab_title = "Lista de tarefas"; 
     2283                        else 
     2284                                tab_title = "Lista de eventos"; 
     2285                } 
     2286    } 
     2287        var tab_selector = ['tab_events_list_', 'tab_tasks_list_', 'tab_all_list_']; 
    22982288    keyword = ( keyword || '' ).replace( /\s+/g, "_" ); 
    22992289         
    2300     if(!(document.getElementById('tab_events_list_' + (Base64.encode(keyword)).replace(/[^\w\s]/gi, "") )))      
     2290    if(!(document.getElementById(tab_selector[type] + (Base64.encode(keyword)).replace(/[^\w\s]/gi, "") )))      
    23012291    { 
    23022292        Encoder.EncodeType = "entity"; 
    2303         $tabs.tabs( "add", "#tab_events_list_" + (Base64.encode(keyword)).replace(/[^\w\s]/gi, ""), Encoder.htmlEncode(tab_title) ); 
     2293        $tabs.tabs( "add", "#"+tab_selector[type] + (Base64.encode(keyword)).replace(/[^\w\s]/gi, ""), Encoder.htmlEncode(tab_title) ); 
    23042294    } 
    23052295    else /* Tab already opened */ 
    23062296    { 
    2307         $tabs.tabs("option", "selected", 2); 
    2308     } 
    2309          
    2310     pageselectCallback(keyword, 0); // load page 1 and insert data on event_list.ejs 
     2297                //$tabs.tabs("option", "selected", 2); 
     2298        } 
     2299         
     2300    pageselectCallback(keyword, 0, false, type); // load page 1 and insert data on event_list.ejs 
    23112301         
    23122302    $('.preferences-win.active .button.save, .preferences-win.active .button.cancel, .preferences-win.active .button.import, .preferences-win.active .button.export').button(); 
     
    23282318        if(paginator.indexOf('next') > 0){ 
    23292319            if(parseInt($(currentView+' [name = results]').val()) > 25) 
    2330                 pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) +1)); 
     2320                pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) +1), false,  2); 
    23312321        }else{ 
    23322322            if(parseInt($(currentView+' [name = page_index]').val()) > 0) 
    2333                 pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) -1)); 
     2323                pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) -1), false, 2); 
    23342324        } 
    23352325    }); 
     
    23692359} 
    23702360 
    2371 function paginatorList(currentView, view){ 
    2372     $(currentView+' .events-list.events-list-win.active .list-events-paginator .fc-header-title').html('<h2>'+mountTitleList( parseInt($('[name = page_index]').val()),view)+'</h2>'); 
     2361function paginatorList(currentView, view, type){ 
     2362    $(currentView+' .events-list.events-list-win.active .list-events-paginator .fc-header-title').html('<h2>'+mountTitleList( parseInt($(currentView+' [name = page_index]').val()),view)+'</h2>'); 
    23732363    $(currentView+' .events-list.events-list-win.active .header-paginator .fc-header-right .fc-button').removeClass('fc-state-active') 
    23742364    if(view == 'basicDay') 
     
    23902380        var goView = $(this).attr('class'); 
    23912381        if(goView.indexOf('agendaDay') > 0) 
    2392             pageselectCallback($(currentView+' [name = keyword]').val(), 0, '', 'agendaDay'); 
     2382            pageselectCallback($(currentView+' [name = keyword]').val(), 0, 'agendaDay', type); 
    23932383        else if(goView.indexOf('month') > 0) 
    2394             pageselectCallback($(currentView+' [name = keyword]').val(), 0, '', 'month'); 
     2384            pageselectCallback($(currentView+' [name = keyword]').val(), 0, 'month', type); 
    23952385        else if(goView.indexOf('year') > 0) 
    2396             pageselectCallback($(currentView+' [name = keyword]').val(), 0, '', 'year'); 
     2386            pageselectCallback($(currentView+' [name = keyword]').val(), 0, 'year', type); 
    23972387        else if(goView.indexOf('agendaWeek') > 0) 
    2398             pageselectCallback($(currentView+' [name = keyword]').val(), 0, '', 'agendaWeek'); 
     2388            pageselectCallback($(currentView+' [name = keyword]').val(), 0, 'agendaWeek', type); 
    23992389 
    24002390    }); 
     
    24122402        var paginator = $(this).attr('class'); 
    24132403        if(paginator.indexOf('next') > 0) 
    2414             pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($('[name = page_index]').val())) +1), '', view); 
     2404            pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) +1), view, type); 
    24152405        else 
    2416             pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($('[name = page_index]').val())) -1), '', view); 
     2406            pageselectCallback($(currentView+' [name = keyword]').val(), ((parseInt($(currentView+' [name = page_index]').val())) -1), view, type); 
    24172407    });  
    24182408} 
    24192409 
    2420 function paginatorListEvent(currentView, typeView, view){ 
     2410function printEventList(view){ 
     2411        $('.fc-button-print.print-list-events').click(function(){ 
     2412                var window_print = window.open('','ExpressoCalendar','width=800,height=600,scrollbars=yes'); 
     2413                var listEvents = $(view).clone(); 
     2414                listEvents.find('.fc-button').remove(); 
     2415                listEvents.find('.details-event-list').remove(); 
     2416                listEvents.find('.list-events-paginator').attr( "align" , "center"  ); 
     2417                listEvents = listEvents.html(); 
     2418                type = $(this).parents('.ui-tabs-panel').attr("id").split("_")[1]; 
     2419                var data = { 
     2420                        type : type == "tasks" ? "task-list" : ( type == "events" ? "event-list" : "search"), 
     2421                        html : listEvents 
     2422                } 
     2423                window_print.document.open();            
     2424                window_print.document.write(DataLayer.render('templates/calendar_list_print.ejs', data)); 
     2425                window_print.document.close(); 
     2426                window_print.print(); 
     2427        }); 
     2428} 
     2429 
     2430function paginatorListEvent(currentView, typeView, view, type){ 
    24212431    if(!!$(currentView).find('.fc-calendar').length) 
    24222432        return; 
     
    24302440    $(currentView+' .events-list.events-list-win.active .fc-header .fc-header-center').addClass('list-events-paginator'); 
    24312441    $(currentView+' .events-list.events-list-win.active .fc-header .list-events-paginator').removeClass('fc-header-center');             
    2432                  
     2442                 
    24332443    //Adicionar class no header padronizar com a tela principal 
    2434     $(currentView+' .events-list.events-list-win.active .fc-header').addClass('header-paginator'); 
    2435     $(currentView+' .events-list.events-list-win.active .header-paginator').removeClass('fc-header'); 
    2436                                  
     2444        $(currentView+' .events-list.events-list-win.active .fc-header .fc-button-print').addClass('print-list-events');                 
     2445        $(currentView+' .events-list.events-list-win.active .fc-header').addClass('header-paginator'); 
     2446    $(currentView+' .events-list.events-list-win.active .header-paginator').removeClass('fc-header');    
     2447         
     2448        printEventList(currentView); 
     2449         
    24372450    if(typeView == 'search'){ 
    2438         $(currentView+' .events-list.events-list-win.active .header-paginator .fc-header-right').remove() 
     2451        $(currentView+' .events-list.events-list-win.active .header-paginator .fc-header-right span.fc-button:not(.fc-button-print)').remove(); 
    24392452        $(currentView+' .events-list.events-list-win.active .list-events-paginator .fc-header-title').html('<h2>Resultados para: '+$(currentView+' [name = keyword]').val()+'</h2>'); 
    24402453        if((parseInt($(currentView+' [name = page_index]').val()) == 0) && (parseInt($(currentView+' [name = results]').val()) <= 25)) 
     
    24422455        paginatorSearch(currentView); 
    24432456    }else 
    2444         paginatorList(currentView, view); 
     2457        paginatorList(currentView, view, type); 
    24452458} 
    24462459 
     
    24502463        case 'basicDay': 
    24512464        case 'agendaDay': 
    2452             rangeStart = new Date().add({ 
     2465            rangeStart = new Date.today().add({ 
    24532466                days: page_index 
    24542467            }).getTime(); 
    2455             rangeEnd = rangeStart; 
     2468            rangeEnd = rangeStart + 86400000; 
    24562469            break; 
    24572470        case 'agendaWeek': 
     
    25192532} 
    25202533 
    2521 function pageselectCallback(keyword, page_index, jq, view){ 
    2522          
    2523     var selecteds = getSelectedCalendars(); 
    2524     if(!selecteds && (keyword != '' && keyword != null)){        
    2525         jQuery('#tab_events_list_' + ((Base64.encode(keyword)).replace(/[^\w\s]/gi, "")|| '')).html( 
    2526             '<div title="Lista de eventos" class="events-list events-list-win active empty">' + 
    2527             '<label>Por favor selecione ao menos uma agenda.</label>' + 
     2534function pageselectCallback(keyword, page_index, view, type){ 
     2535    $('.qtip.qtip-blue').remove(); 
     2536        var tab_selector = ['tab_events_list_', 'tab_tasks_list_', 'tab_all_list_']; 
     2537        var tab_title = ['Lista de eventos', 'Lista de tarefas']; 
     2538        var label_noselect_calendar = ['Por favor selecione ao menos uma agenda.', 'Por favor selecione ao menos um grupo.', 'Por favor selecione ao menos uma agenda ou grupo.']; 
     2539        var label_nofound_search = ['Não foi encontrado nenhum evento correspondente à sua pesquisa.', 'Não foi encontrado nenhuma tarefa ou atividade correspondente à sua pesquisa.', 'Não foi encontrado nenhum evento ou tarefa ou atividade correspondente à sua pesquisa.']; 
     2540        var label_nofound = ['Não foram encontrados eventos neste intervalo.', 'Não foram encontradas tarefas ou atividades neste intervalo.', 'Não foram encontrados eventos ou tarefas ou atividades neste intervalo.']; 
     2541        var selecteds = getSelectedCalendars(false, type); 
     2542     
     2543        if(!selecteds && (keyword != '' && keyword != null)){    
     2544        jQuery('#'+tab_selector[type] + ((Base64.encode(keyword)).replace(/[^\w\s]/gi, "")|| '')).html( 
     2545            '<div title="'+tab_title[type]+'" class="events-list events-list-win active empty">' + 
     2546            '<label>'+label_noselect_calendar[type]+'</label>' + 
    25282547            '</div>' 
    25292548            ); 
     
    25452564    var results = DataLayer.get('schedulable:detail', criteria); 
    25462565    keyword = ( keyword || '' ).replace( /\s+/g, "_" );  
    2547 } 
     2566        } 
    25482567// não há resultados     
    25492568 
    2550 var currentView = '#tab_events_list_' + ((Base64.encode(keyword)).replace(/[^\w\s]/gi, "") || ''); 
     2569var currentView = '#'+tab_selector[type] + ((Base64.encode(keyword)).replace(/[^\w\s]/gi, "") || ''); 
    25512570 
    25522571if ((((typeof(results) == 'undefined') || (!results.events_list )) && selecteds) &&(keyword != '' && keyword != null)) { 
    25532572    $(currentView).html( 
    2554                 '<div title="Lista de eventos" class="events-list events-list-win active empty">' + 
    2555                 '<label>Não foi encontrado nenhum evento correspondente à sua pesquisa.</label>' + 
     2573                '<div title="'+title+'" class="events-list events-list-win active empty">' + 
     2574                '<label>'+label_nofound_search[type]+'</label>' + 
    25562575                '</div>' 
    25572576        ); 
     
    25612580                results['page_index'] = page_index; 
    25622581                results['keyword'] = keyword; 
    2563                                  
     2582                results['tab_title'] = tab_title[type];  
    25642583                DataLayer.render( 'templates/event_list.ejs', results, function( html ){ 
    25652584                         
     
    25672586                        $('.events-list-win .menu-container .button').button(); 
    25682587                                                                                                                         
    2569                         $(".event-details-item").parent().click(function(){ 
    2570  
     2588                        $(".event-details-item").parent().click(function(event){ 
     2589                        event.stopImmediatePropagation(); 
    25712590                        $(this).siblings("div.details-event-list").toggleClass("hidden") 
    2572                         .find('.button.delete').click(function(){ 
     2591                        .find('.button.delete').click(function(event){ 
    25732592                                var eventId = $(this).siblings('[name="eventid"]').val(); 
    25742593                                var calendarId = $(this).siblings('[name="calendarid"]').val(); 
    2575  
    25762594                                remove_event(eventId, calendarId); 
     2595                                event.stopImmediatePropagation() 
    25772596                        }) 
    2578                         .end().find('.button.edit').click(function(){                            
    2579                                 eventDetails( DataLayer.get( "schedulable", $(this).siblings('[name="eventid"]').val() ), true );                                        
     2597                        .end().find('.button.edit').click(function(event){       
     2598                                if($(this).siblings('[name="eventtype"]').val() == 1) 
     2599                                        eventDetails( DataLayer.get( "schedulable", $(this).siblings('[name="eventid"]').val() ), true );                
     2600                                else 
     2601                                        taskDetails( DataLayer.get( "schedulable", $(this).siblings('[name="eventid"]').val() ), true ); 
     2602                                         
     2603                                event.stopImmediatePropagation() 
     2604                        }) 
     2605                        .end().find('.button.print').click(function(event){      
     2606                                var window_print = window.open('','ExpressoCalendar','width=800,height=600,scrollbars=yes'); 
     2607                                var html = $(this).parents("td:first").clone(); 
     2608                                html.find(".menu-container.footer-container").remove(); 
     2609                                var html = html.html(); 
     2610                                var data = { 
     2611                                        type : $(this).parents('.details-event-list').hasClass("details-event") ? "event-detail" : "task-detail", 
     2612                                        html : html 
     2613                                } 
     2614                                window_print.document.open();            
     2615                                window_print.document.write(DataLayer.render('templates/calendar_list_print.ejs', data)); 
     2616                                window_print.document.close(); 
     2617                                window_print.print(); 
     2618                                 
     2619                                event.stopImmediatePropagation() 
    25802620                        }); 
    25812621 
    25822622                        }); 
    2583                         paginatorListEvent(currentView, (keyword == '' || keyword == null) ? 'list' : 'search',  !!view ? view : User.preferences.defaultCalView); 
     2623                        paginatorListEvent(currentView, (keyword == '' || keyword == null) ? 'list' : 'search',  !!view ? view : User.preferences.defaultCalView, type); 
    25842624                }); 
    25852625    }else{ 
    25862626                $(currentView).html( 
    2587                         '<div title="Lista de eventos" class="events-list events-list-win active empty">' + 
     2627                        '<div title="'+title+'" class="events-list events-list-win active empty">' + 
    25882628                        '<input type="hidden" name="page_index" value="'+page_index+'"></inpunt>'+ 
    25892629                        '<input type="hidden" name="keyword" value="'+keyword+'"></inpunt>'+ 
    2590                         '<label class="empty-result">Não foram encontrados eventos neste intervalo.</label>' + 
     2630                        '<label class="empty-result">'+label_nofound[type]+'</label>' + 
    25912631                        '</div>' 
    25922632                        ); 
    2593                 paginatorListEvent(currentView, 'list', !!view ? view : User.preferences.defaultCalView); 
    2594     } 
    2595 } 
    2596         if(currentView != '#tab_events_list_') 
     2633                paginatorListEvent(currentView, 'list', !!view ? view : User.preferences.defaultCalView, type); 
     2634    } 
     2635} 
     2636        if(currentView != '#'+tab_selector[type]) 
    25972637            $tabs.tabs("select", currentView); 
    25982638} 
    25992639 
    2600 function show_modal_import_export(tab, calendarId) { 
     2640function show_modal_import_export(tab, calendarId, typeView){ 
     2641    $('.qtip.qtip-blue').remove(); 
    26012642    DataLayer.render( 'templates/import_export.ejs', { 
    2602         calendars: Calendar.calendars,  
    2603         owner: User.me.id 
     2643        calendars: typeView == 0 ? Calendar.calendars : Calendar.groups,  
     2644        owner: User.me.id, 
     2645        typeView: typeView 
    26042646        }, function( html ){ 
    26052647 
    26062648        if (!UI.dialogs.importCalendar) { 
    26072649            UI.dialogs.importCalendar = jQuery('#div-import-export-calendar') 
    2608             .append('<div title="Importar e Exportar Eventos" class="import-export import-export-win active"> <div>') 
     2650            .append('<div title="Importar e Exportar "' + (typeView == 0 ? 'Eventos' : 'Tarefas') + '" class="import-export import-export-win active"> <div>') 
    26092651            .find('.import-export-win.active').html(html).dialog({ 
    26102652                resizable: false,  
     
    28312873    } 
    28322874} 
     2875 
     2876function extendsFileupload(view, path){ 
     2877    var viewName = 'div.new-'+view+'-win'; 
     2878     
     2879    path = !!path ? path : ''; 
     2880     
     2881    var maxSizeFile = 2000000; 
     2882    $('#fileupload'+view).fileupload({ 
     2883        sequentialUploads: true, 
     2884        add: function (e, data) { 
     2885            if(data.files[0].size < maxSizeFile) 
     2886                data.submit(); 
     2887        }, 
     2888        change: function (e, data) { 
     2889            $.each(data.files, function (index, file) { 
     2890                var attach = {}; 
     2891                attach.fileName = file.name; 
     2892                var ext = file.name.split('.'); 
     2893                if(file.name.length > 10) 
     2894                    attach.fileName = ext.length == 1 ? file.name.substr(0, 10) :  file.name.substr(0, 6) + '.' + ext[ext.length -1]; 
     2895                attach.fileSize = formatBytes(file.size); 
     2896                if(file.size > maxSizeFile) 
     2897                    attach.error = 'Tamanho de arquivo nao permitido!!' 
     2898                                 
     2899                $(viewName+' .attachments-list').append(DataLayer.render(path+'templates/attachment_add_itemlist.ejs', { 
     2900                    file : attach 
     2901                })); 
     2902                                 
     2903                if(file.size < maxSizeFile){ 
     2904                    $(viewName+' .fileinput-button.new').append(data.fileInput[0]).removeClass('new'); 
     2905                    $(viewName+' .attachments-list').find('[type=file]').addClass('hidden'); 
     2906                                         
     2907                }else 
     2908                    $(viewName+' .fileinput-button.new').removeClass('new'); 
     2909                                 
     2910                                 
     2911                $(viewName+' .attachments-list').find('.button.close').button({ 
     2912                    icons: { 
     2913                        primary: "ui-icon-close" 
     2914                    }, 
     2915                    text: false 
     2916                }).click(function(){ 
     2917                    var idAttach = $(this).parent().find('input[name="fileId[]"]').val(); 
     2918                    $(viewName+' .attachment-list').find('input[value="'+idAttach+'"]').remove(); 
     2919                    $(this).parent().remove(); 
     2920                 
     2921                    if(!$(viewName+' .attachment-list input').length) 
     2922                        $(viewName+' .btn-danger.delete').addClass('hidden'); 
     2923                 
     2924                });      
     2925                                 
     2926            }) 
     2927        }, 
     2928        done: function(e, data){ 
     2929            var currentUpload = $(viewName+' .progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide(); 
     2930 
     2931            if(!!data.result && data.result != "[]"){ 
     2932                $(viewName+' .btn-danger.delete').removeClass('hidden'); 
     2933                var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data); 
     2934                $(viewName+' .attachment-list').append('<input tyepe="hidden" name="attachment[]" value="'+newAttach['attachment'][0][0].id+'"/>'); 
     2935                currentUpload.removeClass('on-complete').parents('p') 
     2936                .append('<input type="hidden" name="fileId[]" value="'+newAttach['attachment'][0][0].id+'"/>') 
     2937                .find('.status-upload').addClass('ui-icon ui-icon-check'); 
     2938            }else 
     2939                currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel'); 
     2940        } 
     2941    }); 
     2942    $('.attachments-list .button').button();     
     2943 
     2944    if(!!window.FormData)                        
     2945        $('#fileupload'+view).bind('fileuploadstart', function () { 
     2946            var widget = $(this), 
     2947            progressElement = $('#fileupload-progress-'+view).fadeIn(), 
     2948            interval = 500, 
     2949            total = 0, 
     2950            loaded = 0, 
     2951            loadedBefore = 0, 
     2952            progressTimer, 
     2953            progressHandler = function (e, data) { 
     2954                loaded = data.loaded; 
     2955                total = data.total; 
     2956            }, 
     2957            stopHandler = function () { 
     2958                widget 
     2959                .unbind('fileuploadprogressall', progressHandler) 
     2960                .unbind('fileuploadstop', stopHandler); 
     2961                window.clearInterval(progressTimer); 
     2962                progressElement.fadeOut(function () { 
     2963                    progressElement.html(''); 
     2964                }); 
     2965            }, 
     2966            formatTime = function (seconds) { 
     2967                var date = new Date(seconds * 1000); 
     2968                return ('0' + date.getUTCHours()).slice(-2) + ':' + 
     2969                ('0' + date.getUTCMinutes()).slice(-2) + ':' + 
     2970                ('0' + date.getUTCSeconds()).slice(-2); 
     2971            }, 
     2972            /* formatBytes = function (bytes) { 
     2973            if (bytes >= 1000000000) { 
     2974                return (bytes / 1000000000).toFixed(2) + ' GB'; 
     2975            } 
     2976            if (bytes >= 1000000) { 
     2977                return (bytes / 1000000).toFixed(2) + ' MB'; 
     2978            } 
     2979            if (bytes >= 1000) { 
     2980                return (bytes / 1000).toFixed(2) + ' KB'; 
     2981            } 
     2982            return bytes + ' B'; 
     2983        },*/ 
     2984            formatPercentage = function (floatValue) { 
     2985                return (floatValue * 100).toFixed(2) + ' %'; 
     2986            }, 
     2987            updateProgressElement = function (loaded, total, bps) { 
     2988                progressElement.html( 
     2989                    formatBytes(bps) + 'ps | ' + 
     2990                    formatTime((total - loaded) / bps) + ' | ' + 
     2991                    formatPercentage(loaded / total) + ' | ' + 
     2992                    formatBytes(loaded) + ' / ' + formatBytes(total) 
     2993                    ); 
     2994            }, 
     2995            intervalHandler = function () { 
     2996                var diff = loaded - loadedBefore; 
     2997                if (!diff) { 
     2998                    return; 
     2999                } 
     3000                loadedBefore = loaded; 
     3001                updateProgressElement( 
     3002                    loaded, 
     3003                    total, 
     3004                    diff * (1000 / interval) 
     3005                    ); 
     3006            }; 
     3007            widget 
     3008            .bind('fileuploadprogressall', progressHandler) 
     3009            .bind('fileuploadstop', stopHandler); 
     3010            progressTimer = window.setInterval(intervalHandler, interval); 
     3011        }); 
     3012     
     3013} 
Note: See TracChangeset for help on using the changeset viewer.