Changeset 6052


Ignore:
Timestamp:
04/26/12 16:55:33 (12 years ago)
Author:
acoutinho
Message:

Ticket #2665 - Inconsistencias na assinatura de agendas compartilhadas

Location:
trunk/prototype/modules/calendar
Files:
1 added
2 edited

Legend:

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

    r5863 r6052  
    11function show_modal_shared(calendarId){ 
    2         var html = DataLayer.render('templates/shared_calendar.ejs', {calendar: Calendar.calendars});    
    3          
    4         //Variaval global para manipulação dos usuários 
    5         //melhor perforface 
    6         currentUsers = {}; 
    7         currentUsers[User.me.id] = true; 
    8         changePublic = false; 
    9          
    10         if (!UI.dialogs.sharedCalendar) { 
    11                         UI.dialogs.sharedCalendar = jQuery('#calendarShared').append('<div title="Compatilhamento de Agenda" class="shared-calendar active"> <div>').find('.shared-calendar.active').html(html).dialog({ 
    12                                 resizable: false,  
    13                                 modal:true,  
    14                                 autoOpen: false, 
    15                                 width:620,  
    16                                 position: 'center',  
    17                                 close: function(event, ui) { 
    18                                         //Implementações de cancelar 
    19                                         DataLayer.rollback('calendarToPermission'); 
    20                                         currentUsers = {}; 
    21                                 } 
    22                         }); 
    23                 } else { 
    24                         UI.dialogs.sharedCalendar.html(html); 
    25                 } 
    26                  
    27                 /*Seleciona a agenda selecionada para compartilhamento*/ 
    28                 UI.dialogs.sharedCalendar.find('option[value="'+calendarId+'"]').attr('selected','selected').trigger('change'); 
    29                  
    30                 UI.dialogs.sharedCalendar.find('input[name="isPublic"]').change(function(event){ 
    31                         $(this).parent().find('.free-busy').toggleClass('hidden'); 
    32                         changePublic = changePublic ? false: true; 
     2    var html = DataLayer.render('templates/shared_calendar.ejs', { 
     3        calendar: Calendar.calendars 
     4        });      
     5         
     6    //Variaval global para manipulação dos usuários 
     7    //melhor perforface 
     8    currentUsers = {}; 
     9    currentUsers[User.me.id] = true; 
     10    changePublic = false; 
     11         
     12    if (!UI.dialogs.sharedCalendar) { 
     13        UI.dialogs.sharedCalendar = jQuery('#calendarShared').append('<div title="Compatilhamento de Agenda" class="shared-calendar active"> <div>').find('.shared-calendar.active').html(html).dialog({ 
     14            resizable: false,  
     15            modal:true,  
     16            autoOpen: false, 
     17            width:620,  
     18            position: 'center',  
     19            close: function(event, ui) { 
     20                //Implementações de cancelar 
     21                DataLayer.rollback('calendarToPermission'); 
     22                currentUsers = {}; 
     23            } 
     24        }); 
     25    } else { 
     26        UI.dialogs.sharedCalendar.html(html); 
     27    } 
     28                 
     29    /*Seleciona a agenda selecionada para compartilhamento*/ 
     30    UI.dialogs.sharedCalendar.find('option[value="'+calendarId+'"]').attr('selected','selected').trigger('change'); 
     31                 
     32    UI.dialogs.sharedCalendar.find('input[name="isPublic"]').change(function(event){ 
     33        $(this).parent().find('.free-busy').toggleClass('hidden'); 
     34        changePublic = changePublic ? false: true; 
     35    }); 
     36                 
     37    UI.dialogs.sharedCalendar.find('.button').button() 
     38    .filter('.cancel').click(function(evt){ 
     39        UI.dialogs.sharedCalendar.dialog("close"); 
     40    }).end() 
     41    .filter('.save').click(function(evt){ 
     42        //TODO - API ainda não suporta 
     43        //UI.dialogs.sharedCalendar.find('form').submit(); 
     44        var calendarSelected = UI.dialogs.sharedCalendar.find('option:selected').val(); 
     45        var save = function(){ 
     46            if($('li.not-user').length == 0) 
     47                $.each(UI.dialogs.sharedCalendar.find('.user-list li.new'), function( i , element ){ 
     48                    var user = $(element).find('input[name="user[]"]').val(); 
     49                    var acl = $(element).find('input[name="attendeeAcl[]"]').val(); 
     50                    if(acl == "") 
     51                        return true; 
     52                    DataLayer.put('calendarToPermission', { 
     53                        calendar: calendarSelected,  
     54                        type: 0,  
     55                        user: user,  
     56                        acl: acl 
     57                    }); 
    3358                }); 
    34                  
    35                 UI.dialogs.sharedCalendar.find('.button').button() 
    36                 .filter('.cancel').click(function(evt){ 
    37                         UI.dialogs.sharedCalendar.dialog("close"); 
    38                 }).end() 
    39                 .filter('.save').click(function(evt){ 
    40                         //TODO - API ainda não suporta 
    41                         //UI.dialogs.sharedCalendar.find('form').submit(); 
    42                         var calendarSelected = UI.dialogs.sharedCalendar.find('option:selected').val(); 
    43                         var save = function(){ 
    44                                 if($('li.not-user').length == 0) 
    45                                 $.each(UI.dialogs.sharedCalendar.find('.user-list li.new'), function( i , element ){ 
    46                                         var user = $(element).find('input[name="user[]"]').val(); 
    47                                         var acl = $(element).find('input[name="attendeeAcl[]"]').val(); 
    48                                         if(acl == "") 
    49                                                 return true; 
    50                                         DataLayer.put('calendarToPermission', {calendar: calendarSelected, type: 0, user: user, acl: acl}); 
    51                                 }); 
    52                                  
    53                                 $.each(UI.dialogs.sharedCalendar.find('.user-list li.current'), function( i , element ){ 
    54                                         var id = $(element).find('input[type="checkbox"]').val(); 
    55                                         var acl = $(element).find('input[name="attendeeAcl[]"]').val(); 
    56                                         if(acl == "") 
    57                                                 DataLayer.remove('calendarToPermission', id); 
    58                                         else 
    59                                             DataLayer.put('calendarToPermission', {calendar: calendarSelected, type: 0, id: id, acl: acl}); 
    60                                 }); 
    61                                  
    62                                  
    63                                 DataLayer.commit(false, false, function(data){ 
    64                                         UI.dialogs.sharedCalendar.dialog("close"); 
    65                                 }); 
    66                         }; 
    67  
    68                         //Trata a criação de um acesso público a agenda 
    69                         if(changePublic){ 
    70                                 if(UI.dialogs.sharedCalendar.find('input[name="isPublic"]').is(':checked')){ 
    71                                         var acl = UI.dialogs.sharedCalendar.find('input[name="busy"]').is(':checked') ? 'b' : 'w'; 
    72                                         DataLayer.put('calendarToPermission', {calendar: calendarSelected, type: '1', user: '0', acl: acl}); 
    73                                 }else{ 
    74                                         //TODO - remover quando for implementado remove com criteria 
    75                                         var permission = DataLayer.get('calendarToPermission', {filter: ['AND', ['=', 'calendar', calendarId], ['=', 'user', '0']]}, true); 
    76                                         if($.isArray(permission)) 
    77                                                 permission = permission[0]; 
    78  
    79                                         DataLayer.remove('calendarToPermission', permission.id); 
    80                                 } 
    81                         } 
    82                         if(!!UI.dialogs.sharedCalendar.find('.user-list li input[name="attendeeAcl[]"][value=""]').length){ 
    83                                 $.Zebra_Dialog('Alguns usuários estão sem permissões e serão automáticamente removidos, deseja continuar ?', { 
    84                                         'type':     'question', 
    85                                         'overlay_opacity': '0.5', 
    86                                         'buttons':  ['Continuar', 'Cancelar'], 
    87                                         'onClose':  function(clicked) { 
    88                                                 if(clicked == 'Continuar') { 
    89                                                         save(); 
    90                                                 } 
    91                                         } 
    92                                 }); 
    93                         }else 
    94                                 save();          
     59                                 
     60            $.each(UI.dialogs.sharedCalendar.find('.user-list li.current'), function( i , element ){ 
     61                var id = $(element).find('input[type="checkbox"]').val(); 
     62                var acl = $(element).find('input[name="attendeeAcl[]"]').val(); 
     63                if(acl == "") 
     64                    DataLayer.remove('calendarToPermission', id); 
     65                else 
     66                    DataLayer.put('calendarToPermission', { 
     67                        calendar: calendarSelected,  
     68                        type: 0,  
     69                        id: id,  
     70                        acl: acl 
     71                    }); 
     72            }); 
     73                                 
     74                                 
     75            DataLayer.commit(false, false, function(data){ 
     76                UI.dialogs.sharedCalendar.dialog("close"); 
     77            }); 
     78        }; 
     79 
     80        //Trata a criação de um acesso público a agenda 
     81        if(changePublic){ 
     82            if(UI.dialogs.sharedCalendar.find('input[name="isPublic"]').is(':checked')){ 
     83                var acl = UI.dialogs.sharedCalendar.find('input[name="busy"]').is(':checked') ? 'b' : 'w'; 
     84                DataLayer.put('calendarToPermission', { 
     85                    calendar: calendarSelected,  
     86                    type: '1',  
     87                    user: '0',  
     88                    acl: acl 
    9589                }); 
    96                  
    97                 UI.dialogs.sharedCalendar.find('.add-user-search .ui-icon-search').click(function(event) { 
    98                         UI.dialogs.sharedCalendar.find('.add-user-search input').keydown(); 
    99                 }); 
    100                  
    101                 var incompatibleAcl = function (obj, acls, buttons){ 
    102                         for (var i = 0; i < acls.length; i++){ 
    103                                 var objremove = obj.parent().find('.'+buttons[i]+''); 
    104                                 if(objremove.hasClass('attendee-permissions-change-button')) 
    105                                         changeAcl(objremove, acls[i]); 
    106                         } 
    107                 } 
    108  
    109                 var removeAcl = function(current, acl){ 
    110                         var acls = ''; 
    111                         for(var i = 0; i < current.length; i++) 
    112                                 if(current.charAt(i) != acl) 
    113                                         acls += current.charAt(i) ; 
    114                         return acls; 
    115                 } 
    116  
    117                 var dependsAcl = function(obj, acls, buttons){ 
    118                         for (var i = 0; i < acls.length; i++){ 
    119                                 var objremove = obj.parent().find('.'+buttons[i]+''); 
    120                                 if(!objremove.hasClass('attendee-permissions-change-button')) 
    121                                         changeAcl(objremove, acls[i]); 
    122                         } 
    123                 } 
    124                  
    125                 var changeAcl = function(obj, acl){ 
    126                         if(obj.hasClass('attendee-permissions-change-button')){ 
    127                                  obj.parent().siblings('input[name="attendeeAcl[]"]').val(removeAcl( obj.parent().siblings('input[name="attendeeAcl[]"]').val(), acl)) ;  
    128                         }else{ 
    129                                 var acls = obj.parent().siblings('input[name="attendeeAcl[]"]').val(); 
    130                                 obj.parent().siblings('input[name="attendeeAcl[]"]').val(acls + acl); 
    131                         } 
    132                         obj.toggleClass('attendee-permissions-change-button') 
    133                         .find('span:first').toggleClass('attendee-permissions-change').end();   
    134                 } 
    135                  
    136                  
    137                 UI.dialogs.sharedCalendar.find('.add-user-search input').keydown(function(event) { 
    138                         if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') {                                              
    139                                 var result = DataLayer.get('user', ["*", "name", $(this).val()], true); 
    140                                 /** 
     90            }else{ 
     91                //TODO - remover quando for implementado remove com criteria 
     92                var permission = DataLayer.get('calendarToPermission', { 
     93                    filter: ['AND', ['=', 'calendar', calendarId], ['=', 'user', '0']] 
     94                    }, true); 
     95                if($.isArray(permission)) 
     96                    permission = permission[0]; 
     97 
     98                DataLayer.remove('calendarToPermission', permission.id); 
     99            } 
     100        } 
     101        if(!!UI.dialogs.sharedCalendar.find('.user-list li input[name="attendeeAcl[]"][value=""]').length){ 
     102            $.Zebra_Dialog('Alguns usuários estão sem permissões e serão automáticamente removidos, deseja continuar ?', { 
     103                'type':     'question', 
     104                'overlay_opacity': '0.5', 
     105                'buttons':  ['Continuar', 'Cancelar'], 
     106                'onClose':  function(clicked) { 
     107                    if(clicked == 'Continuar') { 
     108                        save(); 
     109                    } 
     110                } 
     111            }); 
     112        }else 
     113            save();              
     114    }); 
     115                 
     116    UI.dialogs.sharedCalendar.find('.add-user-search .ui-icon-search').click(function(event) { 
     117        UI.dialogs.sharedCalendar.find('.add-user-search input').keydown(); 
     118    }); 
     119                 
     120    var incompatibleAcl = function (obj, acls, buttons){ 
     121        for (var i = 0; i < acls.length; i++){ 
     122            var objremove = obj.parent().find('.'+buttons[i]+''); 
     123            if(objremove.hasClass('attendee-permissions-change-button')) 
     124                changeAcl(objremove, acls[i]); 
     125        } 
     126    } 
     127 
     128    var removeAcl = function(current, acl){ 
     129        var acls = ''; 
     130        for(var i = 0; i < current.length; i++) 
     131            if(current.charAt(i) != acl) 
     132                acls += current.charAt(i) ; 
     133        return acls; 
     134    } 
     135 
     136    var dependsAcl = function(obj, acls, buttons){ 
     137        for (var i = 0; i < acls.length; i++){ 
     138            var objremove = obj.parent().find('.'+buttons[i]+''); 
     139            if(!objremove.hasClass('attendee-permissions-change-button')) 
     140                changeAcl(objremove, acls[i]); 
     141        } 
     142    } 
     143                 
     144    var changeAcl = function(obj, acl){ 
     145        if(obj.hasClass('attendee-permissions-change-button')){ 
     146            obj.parent().siblings('input[name="attendeeAcl[]"]').val(removeAcl( obj.parent().siblings('input[name="attendeeAcl[]"]').val(), acl)) ;  
     147        }else{ 
     148            var acls = obj.parent().siblings('input[name="attendeeAcl[]"]').val(); 
     149            obj.parent().siblings('input[name="attendeeAcl[]"]').val(acls + acl); 
     150        } 
     151        obj.toggleClass('attendee-permissions-change-button') 
     152        .find('span:first').toggleClass('attendee-permissions-change').end();   
     153    } 
     154                 
     155                 
     156    UI.dialogs.sharedCalendar.find('.add-user-search input').keydown(function(event) { 
     157        if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') {                                              
     158            var result = DataLayer.get('user', ["*", "name", $(this).val()], true); 
     159            /** 
    141160                                * TODO: trocar por template 
    142161                                */ 
    143                                 UI.dialogs.sharedCalendar.find('ul.search-result-list').empty().css('overflow', 'hidden'); 
    144                                 if (!result) { 
    145                                         UI.dialogs.sharedCalendar.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>'); 
    146                                 } 
    147  
    148                                 for(i=0; i<result.length; i++) 
    149                                         result[i].enabled = currentUsers[result[i].id] ? false : true; 
    150  
    151                                 UI.dialogs.sharedCalendar.find('ul.search-result-list').append(DataLayer.render( 'templates/participants_search_itemlist.ejs', result)); 
    152  
    153                                 UI.dialogs.sharedCalendar.find('ul.search-result-list li').click(function(event, ui){ 
    154                                         if ($(event.target).is('input')) { 
    155                                                 old_item = $(event.target).parents('li'); 
    156                                                 var id = old_item.find('.id').html(); 
     162            UI.dialogs.sharedCalendar.find('ul.search-result-list').empty().css('overflow', 'hidden'); 
     163            if (!result) { 
     164                UI.dialogs.sharedCalendar.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>'); 
     165            } 
     166 
     167            for(i=0; i<result.length; i++) 
     168                result[i].enabled = currentUsers[result[i].id] ? false : true; 
     169 
     170            UI.dialogs.sharedCalendar.find('ul.search-result-list').append(DataLayer.render( 'templates/participants_search_itemlist.ejs', result)); 
     171 
     172            UI.dialogs.sharedCalendar.find('ul.search-result-list li').click(function(event, ui){ 
     173                if ($(event.target).is('input')) { 
     174                    old_item = $(event.target).parents('li'); 
     175                    var id = old_item.find('.id').html(); 
    157176                                                 
    158                                                 currentUsers [id] = { 
    159                                                         id: id, 
    160                                                         name: old_item.find('.name').html(), 
    161                                                         mail: old_item.find('.mail').html() 
    162                                                 }; 
     177                    currentUsers [id] = { 
     178                        id: id, 
     179                        name: old_item.find('.name').html(), 
     180                        mail: old_item.find('.mail').html() 
     181                    }; 
    163182                                                                                         
    164                                                 UI.dialogs.sharedCalendar.find('dd.user-list ul.user-list') 
    165                                                 .append(DataLayer.render('templates/user_shared_add_itemlist.ejs', [{id: id, name: currentUsers [id] .name, mail: currentUsers [id] .mail}])) 
    166                                                 .scrollTo('max'); 
     183                    UI.dialogs.sharedCalendar.find('dd.user-list ul.user-list') 
     184                    .append(DataLayer.render('templates/user_shared_add_itemlist.ejs', [{ 
     185                        id: id,  
     186                        name: currentUsers [id] .name,  
     187                        mail: currentUsers [id] .mail 
     188                        }])) 
     189                    .scrollTo('max'); 
    167190                                                 
    168                                                 $('li.not-user').remove(); 
    169                                                 callbackSharedCotactsAdd(); 
    170                                                 old_item.remove(); 
    171                                         } 
    172                                 }); 
    173                                 event.preventDefault(); 
    174                         } 
     191                    $('li.not-user').remove(); 
     192                    callbackSharedCotactsAdd(); 
     193                    old_item.remove(); 
     194                } 
     195            }); 
     196            event.preventDefault(); 
     197        } 
     198    }); 
     199 
     200    var callbackSharedCotactsAdd = function(event){ 
     201        UI.dialogs.sharedCalendar.find('.button').filter(".read.new").button({ 
     202            icons: { 
     203                primary: "ui-icon-circle-zoomin" 
     204            }, 
     205            text: false 
     206        }).click(function () { 
     207            incompatibleAcl($(this), ['b'], ['busy']); 
     208            changeAcl($(this), 'r'); 
     209        }) 
     210        .addClass('tiny disable ui-button-disabled ui-state-disabled') 
     211        .removeClass('new').end() 
     212                         
     213        .filter(".write.new").button({ 
     214            icons: { 
     215                primary: "ui-icon-key" 
     216            }, 
     217            text: false 
     218        }).click(function () { 
     219            incompatibleAcl($(this), ['b'], ['busy']); 
     220            dependsAcl($(this), ['r'], ['read']); 
     221            changeAcl($(this), 'w'); 
     222        }) 
     223        .addClass('tiny disable ui-button-disabled ui-state-disabled') 
     224        .removeClass('new').end() 
     225                         
     226        .filter(".remove.new").button({ 
     227            icons: { 
     228                primary: "ui-icon-trash" 
     229            }, 
     230            text: false 
     231        }).click(function () { 
     232            incompatibleAcl($(this), ['b'], ['busy']); 
     233            dependsAcl($(this), ['r'], ['read']); 
     234            changeAcl($(this), 'd'); 
     235        }) 
     236        .addClass('tiny disable ui-button-disabled ui-state-disabled') 
     237        .removeClass('new').end() 
     238                         
     239        .filter(".busy.new").button({ 
     240            icons: { 
     241                primary: "ui-icon-clock" 
     242            }, 
     243            text: false 
     244        }).click(function () { 
     245            //Remove incompativbilidade de acls 
     246            incompatibleAcl($(this), ['r', 'w', 'd', 's' ], ['read', 'write', 'remove', 'shared']); 
     247            changeAcl($(this), 'b'); 
     248        }) 
     249        .addClass('tiny disable ui-button-disabled ui-state-disabled') 
     250        .removeClass('new').end() 
     251                         
     252        .filter(".shared.new").button({ 
     253            icons: { 
     254                primary: "ui-icon-transferthick-e-w" 
     255            }, 
     256            text: false 
     257        }).click(function () { 
     258            incompatibleAcl($(this), ['b',], ['busy']); 
     259            dependsAcl($(this), ['r'], ['read']); 
     260            changeAcl($(this), 's'); 
     261        }) 
     262        .addClass('tiny disable ui-button-disabled ui-state-disabled') 
     263        .removeClass('new').end() 
     264 
     265        .filter(".close.new").button({ 
     266            icons: { 
     267                primary: "ui-icon-close" 
     268            }, 
     269            text: false 
     270        }).click(function () { 
     271            currentUsers[$(this).parents().find('input[name="user[]"]').val()] = false; 
     272            //remove permissão 
     273            if($(this).parents('li.current').length) 
     274                DataLayer.remove('calendarToPermission', $(this).parents('li.current').find('input[type="checkbox"]').val()); 
     275                                 
     276            $(this).parents('li').remove(); 
     277        }) 
     278        .addClass('tiny disable ui-button-disabled ui-state-disabled') 
     279        .removeClass('new').end(); 
     280 
     281        UI.dialogs.sharedCalendar.find('.user-list li').hover( 
     282            function () { 
     283                $(this).addClass("hover-user"); 
     284                $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end() 
     285                .find('.user-acls-shared-calendar').addClass('hover-user'); 
     286            }, 
     287            function () { 
     288                $(this).removeClass("hover-user"); 
     289                $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end() 
     290                .find('.user-acls-shared-calendar').removeClass('hover-user');; 
     291            } 
     292            );           
     293    } 
     294 
     295    //Carrega os dados já cadastrados 
     296    var dataCurrent = DataLayer.get('calendarToPermission:detail', { 
     297        filter: ['=','calendar', calendarId]  ,  
     298        criteria: { 
     299            deepness: 2 
     300        } 
     301    }); 
     302if(dataCurrent){ 
     303    for(var i = 0; i < dataCurrent.length; i++){ 
     304        if(dataCurrent[i].user == "0"){ 
     305            UI.dialogs.sharedCalendar.find('input[name="isPublic"]').attr('checked', 'checked') 
     306            .parent().find('.free-busy').toggleClass('hidden'); 
     307            if(dataCurrent[i].acl['busy']) 
     308                UI.dialogs.sharedCalendar.find('input[name="busy"]').attr('checked', 'checked'); 
     309        }else{ 
     310            currentUsers[dataCurrent[i].user.id] = true; 
     311 
     312            UI.dialogs.sharedCalendar.find('dd.user-list ul.user-list') 
     313            .append(DataLayer.render('templates/user_shared_add_itemlist.ejs', [{ 
     314                id: dataCurrent[i].user.id,  
     315                name: dataCurrent[i].user.name,  
     316                mail: dataCurrent[i].user.mail,  
     317                acl:dataCurrent[i].acl,  
     318                aclValue: dataCurrent[i].aclValues,  
     319                current: true,  
     320                idPermission: dataCurrent[i].id 
     321            }])) 
     322            .scrollTo('max'); 
     323            $('li.not-user').remove(); 
     324            callbackSharedCotactsAdd(); 
     325 
     326            for (var f in dataCurrent[i].acl){ 
     327                if(dataCurrent[i].acl[f]){ 
     328                    UI.dialogs.sharedCalendar.find('.'+f+':last').toggleClass('attendee-permissions-change-button') 
     329                    .find('span:first').toggleClass('attendee-permissions-change').end();   
     330                } 
     331            } 
     332        } 
     333    } 
     334} 
     335UI.dialogs.sharedCalendar.dialog('open'); 
     336} 
     337 
     338function show_modal_search_shared(){ 
     339 
     340    var html = DataLayer.render('templates/shared_calendar.ejs', {});    
     341         
     342    //Variaval global para manipulação dos usuários 
     343    //melhor perforface 
     344    currentCalendars = {}; 
     345         
     346    if (!UI.dialogs.sharedCalendar) { 
     347        UI.dialogs.sharedCalendar = jQuery('#calendarShared').append('<div title="Pesquisar Agendas" class="shared-calendar active"> <div>').find('.shared-calendar.active').html(html).dialog({ 
     348            resizable: false,  
     349            modal:true,  
     350            autoOpen: false, 
     351            width:620,  
     352            position: 'center',  
     353            close: function(event, ui) { 
     354                //Implementações de cancelar :D 
     355                currentCalendars = {}; 
     356                $('.signed-calendars').find('.calendar-shared-search input').val('').Watermark('Pesquisar agendas...'); 
     357            } 
     358        }); 
     359    } else { 
     360        UI.dialogs.sharedCalendar.html(html); 
     361    } 
     362         
     363    UI.dialogs.sharedCalendar.find('.button').button() 
     364    .filter('.cancel').click(function(evt){ 
     365        DataLayer.rollback('calendarSignature'); 
     366        UI.dialogs.sharedCalendar.dialog("close"); 
     367    }).end() 
     368    .filter('.save').click(function(evt){ 
     369        $.each(UI.dialogs.sharedCalendar.find('.user-list li.new'), function( i , element ){ 
     370            var idPermission = $(element).find('input[name="idpermission[]"]').val(); 
     371            var calendarId = $(element).find('input[name="calendar[]"]').val(); 
     372            var type = parseInt($(element).find('input[name="type[]"]').val()); 
     373            DataLayer.put('calendarSignature', DataLayer.merge({ 
     374                calendar: calendarId,  
     375                isOwner: 0,  
     376                user: User.me.id,  
     377                fontColor: '120d0d',  
     378                backgroundColor: (!!type ? 'fbec88' : '8c8c8c'),  
     379                borderColor: (!!type ? 'fad24e' : '120d0d') 
     380                }, !!idPermission ? { 
     381                id: idPermission 
     382            } : {} )); 
     383        }); 
     384 
     385        DataLayer.commit( false, false, function( received ){ 
     386            delete Calendar.currentViewKey; 
     387            Calendar.load(); 
     388            refresh_calendars(); 
     389        }); 
     390         
     391        UI.dialogs.sharedCalendar.dialog("close"); 
     392                 
     393    }); 
     394                 
     395    UI.dialogs.sharedCalendar.find('.add-user-search .ui-icon-search').click(function(event) { 
     396        UI.dialogs.sharedCalendar.find('.add-user-search input').keydown(); 
     397    }); 
     398         
     399    UI.dialogs.sharedCalendar.find('.add-user-search input').keydown(function(event) { 
     400        if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') {                                              
     401            var result = DataLayer.get('calendarToPermission', { 
     402                filter: ['AND', ['=','user',User.me.id],   ['OR', ['i*','name',$(this).val()], ["i*", "description", $(this).val()]]]  ,  
     403                criteria: { 
     404                    deepness: 2 
     405                } 
     406            }, true); 
     407        var resultPublic = DataLayer.get('calendarToPermission', { 
     408            filter: ['AND', ['=','type',1],   ['OR', ['i*','name',$(this).val()], ["i*", "description", $(this).val()]]]  ,  
     409            criteria: { 
     410                deepness: 2 
     411            } 
     412        }, true); 
     413 
     414    /** 
     415    * TODO: trocar por template 
     416    */ 
     417    UI.dialogs.sharedCalendar.find('ul.search-result-list').empty().css('overflow', 'hidden'); 
     418        if (!result && !resultPublic) { 
     419            UI.dialogs.sharedCalendar.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>'); 
     420        } 
     421                                 
     422        if(resultPublic){ 
     423            var notConflict = []; 
     424            var conflit = false; 
     425            for(var i = 0; i < resultPublic.length; i++){ 
     426                for(var j = 0; j < result.length; j++){ 
     427                    if(resultPublic[i].id == result[j].calendar.id) 
     428                        conflit = true; 
     429                } 
     430                if(!conflit){ 
     431                    notConflict.push(resultPublic[i]); 
     432                    conflit = false; 
     433                } 
     434            } 
     435        } 
     436        resultPublic = notConflict; 
     437                                 
     438        var resultNormalize = []; 
     439        for(i=0; i<result.length; i++){ 
     440            resultNormalize.push({ 
     441                id: result[i].calendar.id,  
     442                name:result[i].calendar.name,  
     443                mail: result[i].calendar.description,  
     444                type: 0 
     445            }) 
     446            resultNormalize[i].enabled = currentCalendars[result[i].id] ? false : true; 
     447        } 
     448        if(resultPublic) 
     449            for(i=0; i<resultPublic.length; i++){ 
     450                resultNormalize.push({ 
     451                    id: resultPublic[i].calendar.id,  
     452                    name:resultPublic[i].calendar.name,  
     453                    mail: resultPublic[i].calendar.description, 
     454                    type: 1 
     455                }) 
     456                resultNormalize[i].enabled = currentCalendars[resultPublic[i].id] ? false : true; 
     457            } 
     458                                 
     459        UI.dialogs.sharedCalendar.find('ul.search-result-list').append(DataLayer.render( 'templates/calendar_search_itemlist.ejs', resultNormalize)); 
     460 
     461        UI.dialogs.sharedCalendar.find('ul.search-result-list li').click(function(event, ui){ 
     462            if ($(event.target).is('input')) { 
     463                old_item = $(event.target).parents('li'); 
     464                var id = old_item.find('.id').html(); 
     465                                                 
     466                for(var i = 0; i<resultNormalize.length; i++){ 
     467                    if(resultNormalize[i].id == id) 
     468                        currentCalendars[id] = { 
     469                            id: id,  
     470                            name: resultNormalize[i].name,  
     471                            description: resultNormalize[i].description,  
     472                            type: resultNormalize[i].type,  
     473                            isCalendar: true 
     474                        }; 
     475                } 
     476 
     477                UI.dialogs.sharedCalendar.find('dd.calendar-list ul.user-list') 
     478                .append(DataLayer.render('templates/user_shared_add_itemlist.ejs', [currentCalendars[id]])) 
     479                .scrollTo('max'); 
     480                                                 
     481                $('li.not-user').remove(); 
     482                callbackSharedCalendarAdd(); 
     483                old_item.remove(); 
     484            } 
     485        }); 
     486        event.preventDefault(); 
     487    } 
     488}); 
     489                 
     490var callbackSharedCalendarAdd = function(event){ 
     491                 
     492    UI.dialogs.sharedCalendar.find('.button').filter(".close.new").button({ 
     493        icons: { 
     494            primary: "ui-icon-close" 
     495        }, 
     496        text: false 
     497    }).click(function () { 
     498        var id = $(this).parents('li').find('input[name="idPermission"]').val(); 
     499        currentCalendars[$(this).parents().find('input[name="calendar[]"]').val()] = false; 
     500        $(this).parents('li').remove(); 
     501        if(!!id) 
     502        DataLayer.remove('calendarSignature', id); 
     503    }) 
     504    .addClass('tiny disable ui-button-disabled ui-state-disabled') 
     505    .removeClass('new').end(); 
     506 
     507    UI.dialogs.sharedCalendar.find('.user-list li').hover( 
     508        function () { 
     509            $(this).addClass("hover-user"); 
     510            $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end() 
     511            .find('.user-acls-shared-calendar').addClass('hover-user'); 
     512        }, 
     513        function () { 
     514            $(this).removeClass("hover-user"); 
     515            $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end() 
     516            .find('.user-acls-shared-calendar').removeClass('hover-user');; 
     517        } 
     518        );               
     519} 
     520 
     521//Carrega os dados já cadastrados 
     522for (var i = 0; i < Calendar.signatures.length; i++) 
     523    if(Calendar.signatures[i].isOwner == "0"){ 
     524        var dataCurrent = Calendar.signatures[i].calendar; 
     525        currentCalendars[Calendar.signatures[i].permission.id] = { 
     526            id: dataCurrent.id,  
     527            idPermission:Calendar.signatures[i].id , 
     528            name: dataCurrent.name,  
     529            description: dataCurrent.description,  
     530            type: Calendar.signatures[i].permission.type,  
     531            isCalendar: true, 
     532            current: true 
     533        }; 
     534                         
     535        UI.dialogs.sharedCalendar.find('dd.calendar-list ul.user-list') 
     536        .append(DataLayer.render('templates/user_shared_add_itemlist.ejs', [currentCalendars[Calendar.signatures[i].permission.id]])) 
     537        .scrollTo('max'); 
     538                                 
     539        $('li.not-user').remove(); 
     540        callbackSharedCalendarAdd(); 
     541    } 
     542                 
     543UI.dialogs.sharedCalendar.dialog('open'); 
     544} 
     545 
     546function cancel_signature(signatureId){ 
     547    $.Zebra_Dialog('Confirma a remoção desta assinatura ?', { 
     548        'type':     'question', 
     549        'overlay_opacity': '0.5', 
     550        'buttons':  ['Sim', 'Não'], 
     551        'onClose':  function(clicked) { 
     552            if(clicked == 'Sim'){ 
     553                DataLayer.remove('calendarSignature', ''+signatureId); 
     554                DataLayer.commit( false, false, function( received ){ 
     555                    delete Calendar.currentViewKey; 
     556                    Calendar.load(); 
     557                    refresh_calendars(); 
    175558                }); 
    176  
    177                 var callbackSharedCotactsAdd = function(event){ 
    178                         UI.dialogs.sharedCalendar.find('.button').filter(".read.new").button({ 
    179                                 icons: { 
    180                                         primary: "ui-icon-circle-zoomin" 
    181                                 }, 
    182                                 text: false 
    183                         }).click(function () { 
    184                                 incompatibleAcl($(this), ['b'], ['busy']); 
    185                                 changeAcl($(this), 'r'); 
    186                         }) 
    187                         .addClass('tiny disable ui-button-disabled ui-state-disabled') 
    188                         .removeClass('new').end() 
    189                          
    190                         .filter(".write.new").button({ 
    191                                 icons: { 
    192                                         primary: "ui-icon-key" 
    193                                 }, 
    194                                 text: false 
    195                         }).click(function () { 
    196                                 incompatibleAcl($(this), ['b'], ['busy']); 
    197                                 dependsAcl($(this), ['r'], ['read']); 
    198                                 changeAcl($(this), 'w'); 
    199                         }) 
    200                         .addClass('tiny disable ui-button-disabled ui-state-disabled') 
    201                         .removeClass('new').end() 
    202                          
    203                         .filter(".remove.new").button({ 
    204                                 icons: { 
    205                                         primary: "ui-icon-trash" 
    206                                 }, 
    207                                 text: false 
    208                         }).click(function () { 
    209                                 incompatibleAcl($(this), ['b'], ['busy']); 
    210                                 dependsAcl($(this), ['r'], ['read']); 
    211                                 changeAcl($(this), 'd'); 
    212                         }) 
    213                         .addClass('tiny disable ui-button-disabled ui-state-disabled') 
    214                         .removeClass('new').end() 
    215                          
    216                         .filter(".busy.new").button({ 
    217                                 icons: { 
    218                                         primary: "ui-icon-clock" 
    219                                 }, 
    220                                 text: false 
    221                         }).click(function () { 
    222                                 //Remove incompativbilidade de acls 
    223                                 incompatibleAcl($(this), ['r', 'w', 'd', 's' ], ['read', 'write', 'remove', 'shared']); 
    224                                 changeAcl($(this), 'b'); 
    225                         }) 
    226                         .addClass('tiny disable ui-button-disabled ui-state-disabled') 
    227                         .removeClass('new').end() 
    228                          
    229                         .filter(".shared.new").button({ 
    230                                 icons: { 
    231                                         primary: "ui-icon-transferthick-e-w" 
    232                                 }, 
    233                                 text: false 
    234                         }).click(function () { 
    235                                 incompatibleAcl($(this), ['b',], ['busy']); 
    236                                 dependsAcl($(this), ['r'], ['read']); 
    237                                 changeAcl($(this), 's'); 
    238                         }) 
    239                         .addClass('tiny disable ui-button-disabled ui-state-disabled') 
    240                         .removeClass('new').end() 
    241  
    242                         .filter(".close.new").button({ 
    243                                 icons: { 
    244                                         primary: "ui-icon-close" 
    245                                 }, 
    246                                 text: false 
    247                         }).click(function () { 
    248                                 currentUsers[$(this).parents().find('input[name="user[]"]').val()] = false; 
    249                                 //remove permissão 
    250                                 if($(this).parents('li.current').length) 
    251                                     DataLayer.remove('calendarToPermission', $(this).parents('li.current').find('input[type="checkbox"]').val()); 
    252                                  
    253                                 $(this).parents('li').remove(); 
    254                         }) 
    255                         .addClass('tiny disable ui-button-disabled ui-state-disabled') 
    256                         .removeClass('new').end(); 
    257  
    258                 UI.dialogs.sharedCalendar.find('.user-list li').hover( 
    259                         function () { 
    260                                 $(this).addClass("hover-user"); 
    261                                 $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end() 
    262                                 .find('.user-acls-shared-calendar').addClass('hover-user'); 
    263                         }, 
    264                         function () { 
    265                                 $(this).removeClass("hover-user"); 
    266                                 $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end() 
    267                                 .find('.user-acls-shared-calendar').removeClass('hover-user');; 
    268                         } 
    269                 );               
    270         } 
    271  
    272         //Carrega os dados já cadastrados 
    273         var dataCurrent = DataLayer.get('calendarToPermission:detail', {filter: ['=','calendar', calendarId]  , criteria: {deepness: 2}}); 
    274         if(dataCurrent){ 
    275                 for(var i = 0; i < dataCurrent.length; i++){ 
    276                         if(dataCurrent[i].user == "0"){ 
    277                                 UI.dialogs.sharedCalendar.find('input[name="isPublic"]').attr('checked', 'checked') 
    278                                 .parent().find('.free-busy').toggleClass('hidden'); 
    279                                 if(dataCurrent[i].acl['busy']) 
    280                                         UI.dialogs.sharedCalendar.find('input[name="busy"]').attr('checked', 'checked'); 
    281                         }else{ 
    282                                 currentUsers[dataCurrent[i].user.id] = true; 
    283  
    284                                 UI.dialogs.sharedCalendar.find('dd.user-list ul.user-list') 
    285                                                 .append(DataLayer.render('templates/user_shared_add_itemlist.ejs', [{id: dataCurrent[i].user.id, name: dataCurrent[i].user.name, mail: dataCurrent[i].user.mail, acl:dataCurrent[i].acl, aclValue: dataCurrent[i].aclValues, current: true, idPermission: dataCurrent[i].id }])) 
    286                                                 .scrollTo('max'); 
    287                                                 $('li.not-user').remove(); 
    288                                                 callbackSharedCotactsAdd(); 
    289  
    290                                                 for (var f in dataCurrent[i].acl){ 
    291                                                         if(dataCurrent[i].acl[f]){ 
    292                                                                 UI.dialogs.sharedCalendar.find('.'+f+':last').toggleClass('attendee-permissions-change-button') 
    293                                                                 .find('span:first').toggleClass('attendee-permissions-change').end();   
    294                                                         } 
    295                                                 } 
    296                         } 
    297                 } 
    298         } 
    299         UI.dialogs.sharedCalendar.dialog('open'); 
     559            } 
     560        } 
     561    }); 
    300562} 
    301  
    302 function show_modal_search_shared(){ 
    303  
    304         var html = DataLayer.render('templates/shared_calendar.ejs', {});        
    305          
    306         //Variaval global para manipulação dos usuários 
    307         //melhor perforface 
    308         currentCalendars = {}; 
    309          
    310         if (!UI.dialogs.sharedCalendar) { 
    311                         UI.dialogs.sharedCalendar = jQuery('#calendarShared').append('<div title="Pesquisar Agendas" class="shared-calendar active"> <div>').find('.shared-calendar.active').html(html).dialog({ 
    312                                 resizable: false,  
    313                                 modal:true,  
    314                                 autoOpen: false, 
    315                                 width:620,  
    316                                 position: 'center',  
    317                                 close: function(event, ui) { 
    318                                         //Implementações de cancelar :D 
    319                                         currentCalendars = {}; 
    320                                         $('.signed-calendars').find('.calendar-shared-search input').val('').Watermark('Pesquisar agendas...'); 
    321                                 } 
    322                         }); 
    323                 } else { 
    324                         UI.dialogs.sharedCalendar.html(html); 
    325                 } 
    326          
    327                 UI.dialogs.sharedCalendar.find('.button').button() 
    328                 .filter('.cancel').click(function(evt){ 
    329                         UI.dialogs.sharedCalendar.dialog("close"); 
    330                 }).end() 
    331                 .filter('.save').click(function(evt){ 
    332                                 $.each(UI.dialogs.sharedCalendar.find('.user-list li'), function( i , element ){ 
    333                                         var idPermission = $(element).find('input[name="idpermission[]"]').val(); 
    334                                         var calendarId = $(element).find('input[name="calendar[]"]').val(); 
    335                                         var type = parseInt($(element).find('input[name="type[]"]').val()); 
    336                                         DataLayer.put('calendarSignature', DataLayer.merge({calendar: calendarId, isOwner: 0, user: User.me.id, fontColor: '120d0d', backgroundColor: (!!type ? 'fbec88' : '8c8c8c'), borderColor: (!!type ? 'fad24e' : '120d0d')}, !!idPermission ? {id: idPermission} : {} )); 
    337                                 }); 
    338  
    339                         DataLayer.commit( false, false, function( received ){ 
    340                                         delete Calendar.currentViewKey; 
    341                                         Calendar.load(); 
    342                                         refresh_calendars(); 
    343                         }); 
    344          
    345                         UI.dialogs.sharedCalendar.dialog("close"); 
    346                  
    347                 }); 
    348                  
    349                 UI.dialogs.sharedCalendar.find('.add-user-search .ui-icon-search').click(function(event) { 
    350                         UI.dialogs.sharedCalendar.find('.add-user-search input').keydown(); 
    351                 }); 
    352          
    353                 UI.dialogs.sharedCalendar.find('.add-user-search input').keydown(function(event) { 
    354                         if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') {                                              
    355                                 var result = DataLayer.get('calendarToPermission', {filter: ['AND', ['=','user',User.me.id],   ['OR', ['i*','name',$(this).val()], ["i*", "description", $(this).val()]]]  , criteria: {deepness: 2}}, true); 
    356                                 var resultPublic = DataLayer.get('calendarToPermission', {filter: ['AND', ['=','type',1],   ['OR', ['i*','name',$(this).val()], ["i*", "description", $(this).val()]]]  , criteria: {deepness: 2}}, true); 
    357  
    358                                 /** 
    359                                 * TODO: trocar por template 
    360                                 */ 
    361                                 UI.dialogs.sharedCalendar.find('ul.search-result-list').empty().css('overflow', 'hidden'); 
    362                                 if (!result && !resultPublic) { 
    363                                         UI.dialogs.sharedCalendar.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>'); 
    364                                 } 
    365                                  
    366                                 if(resultPublic){ 
    367                                         var notConflict = []; 
    368                                         var conflit = false; 
    369                                         for(var i = 0; i < resultPublic.length; i++){ 
    370                                                 for(var j = 0; j < result.length; j++){ 
    371                                                         if(resultPublic[i].id == result[j].calendar.id) 
    372                                                                 conflit = true; 
    373                                                 }if(!conflit){ 
    374                                                         notConflict.push(resultPublic[i]); 
    375                                                         conflit = false; 
    376                                                 } 
    377                                         } 
    378                                 } 
    379                                 resultPublic = notConflict; 
    380                                  
    381                                 var resultNormalize = []; 
    382                                 for(i=0; i<result.length; i++){ 
    383                                         resultNormalize.push({id: result[i].calendar.id, name:result[i].calendar.name, mail: result[i].calendar.description, type: 0 }) 
    384                                         resultNormalize[i].enabled = currentCalendars[result[i].id] ? false : true; 
    385                                 } 
    386                                 if(resultPublic) 
    387                                         for(i=0; i<resultPublic.length; i++){ 
    388                                                 resultNormalize.push({id: resultPublic[i].calendar.id, name:resultPublic[i].calendar.name, mail: resultPublic[i].calendar.description,type: 1 }) 
    389                                                 resultNormalize[i].enabled = currentCalendars[resultPublic[i].id] ? false : true; 
    390                                         } 
    391                                  
    392                                 UI.dialogs.sharedCalendar.find('ul.search-result-list').append(DataLayer.render( 'templates/participants_search_itemlist.ejs', resultNormalize)); 
    393  
    394                                 UI.dialogs.sharedCalendar.find('ul.search-result-list li').click(function(event, ui){ 
    395                                         if ($(event.target).is('input')) { 
    396                                                 old_item = $(event.target).parents('li'); 
    397                                                 var id = old_item.find('.id').html(); 
    398                                                  
    399                                                 for(var i = 0; i<resultNormalize.length; i++){ 
    400                                                         if(resultNormalize[i].id == id) 
    401                                                                 currentCalendars[id] = { id: id, name: resultNormalize[i].name, description: resultNormalize[i].description, type: resultNormalize[i].type, isCalendar: true}; 
    402                                                 } 
    403  
    404                                                 UI.dialogs.sharedCalendar.find('dd.calendar-list ul.user-list') 
    405                                                 .append(DataLayer.render('templates/user_shared_add_itemlist.ejs', [currentCalendars[id]])) 
    406                                                 .scrollTo('max'); 
    407                                                  
    408                                                 $('li.not-user').remove(); 
    409                                                 callbackSharedCalendarAdd(); 
    410                                                 old_item.remove(); 
    411                                         } 
    412                                 }); 
    413                                 event.preventDefault(); 
    414                         } 
    415                 }); 
    416                  
    417                 var callbackSharedCalendarAdd = function(event){ 
    418                  
    419                         UI.dialogs.sharedCalendar.find('.button').filter(".close.new").button({ 
    420                                 icons: { 
    421                                         primary: "ui-icon-close" 
    422                                 }, 
    423                                 text: false 
    424                         }).click(function () { 
    425                                 currentCalendars[$(this).parents().find('input[name="calendar[]"]').val()] = false; 
    426                                 $(this).parents('li').remove(); 
    427                         }) 
    428                         .addClass('tiny disable ui-button-disabled ui-state-disabled') 
    429                         .removeClass('new').end(); 
    430  
    431                 UI.dialogs.sharedCalendar.find('.user-list li').hover( 
    432                         function () { 
    433                                 $(this).addClass("hover-user"); 
    434                                 $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end() 
    435                                 .find('.user-acls-shared-calendar').addClass('hover-user'); 
    436                         }, 
    437                         function () { 
    438                                 $(this).removeClass("hover-user"); 
    439                                 $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end() 
    440                                 .find('.user-acls-shared-calendar').removeClass('hover-user');; 
    441                         } 
    442                 );               
    443         } 
    444  
    445         //Carrega os dados já cadastrados 
    446         for (var i = 0; i < Calendar.signatures.length; i++) 
    447                 if(Calendar.signatures[i].isOwner == "0"){ 
    448                         var dataCurrent = Calendar.signatures[i].calendar; 
    449                         currentCalendars[Calendar.signatures[i].permission.id] = { id: dataCurrent.id, idPermission:Calendar.signatures[i].id ,name: dataCurrent.name, description: dataCurrent.description, type: Calendar.signatures[i].permission.type, isCalendar: true}; 
    450                          
    451                         UI.dialogs.sharedCalendar.find('dd.calendar-list ul.user-list') 
    452                                 .append(DataLayer.render('templates/user_shared_add_itemlist.ejs', [currentCalendars[Calendar.signatures[i].permission.id]])) 
    453                                 .scrollTo('max'); 
    454                                  
    455                                 $('li.not-user').remove(); 
    456                                 callbackSharedCalendarAdd(); 
    457         } 
    458                  
    459         UI.dialogs.sharedCalendar.dialog('open'); 
    460 } 
    461  
    462 function cancel_signature(signatureId){ 
    463         $.Zebra_Dialog('Confirma a remoção desta assinatura ?', { 
    464                 'type':     'question', 
    465                 'overlay_opacity': '0.5', 
    466                 'buttons':  ['Sim', 'Não'], 
    467                 'onClose':  function(clicked) { 
    468                         if(clicked == 'Sim'){ 
    469                                 DataLayer.remove('calendarSignature', ''+signatureId); 
    470                                 DataLayer.commit( false, false, function( received ){ 
    471                                         delete Calendar.currentViewKey; 
    472                                         Calendar.load(); 
    473                                         refresh_calendars(); 
    474                                 }); 
    475                         } 
    476                 } 
    477         }); 
    478 } 
  • trunk/prototype/modules/calendar/templates/user_shared_add_itemlist.ejs

    r5903 r6052  
    99                        <input type="hidden" name="calendar[]" value="<%=data[0].id%>"> 
    1010                        <input type="hidden" name="type[]" value="<%=data[0].type%>"> 
    11                         <label title="<%=data[0].description%>" class="name"><%= data[0].name ? data[0].name : '' %></label> 
     11                        <label title="<%= !!data[0].description ? data[0].description : data[0].name %>" class="name"><%= data[0].name ? data[0].name : '' %></label> 
    1212                <%}else{%> 
    1313                        <div class="user-acls-shared-calendar"> 
Note: See TracChangeset for help on using the changeset viewer.