Changeset 6820


Ignore:
Timestamp:
07/19/12 14:51:21 (10 years ago)
Author:
acoutinho
Message:

Ticket #2966 - Melhorias e correcoes qtips de criacao de groups/simple task

Location:
sandbox/2.4.2-expresso1/prototype/modules/calendar
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • sandbox/2.4.2-expresso1/prototype/modules/calendar/js/calendar.shared.js

    r6560 r6820  
    11function show_modal_shared(calendarId){ 
     2 
     3    $('.qtip.qtip-blue').remove(); 
     4 
    25    var html = DataLayer.render('templates/shared_calendar.ejs', { 
    36        calendar: Calendar.calendars 
     
    335338 
    336339function show_modal_search_shared(){ 
     340    $('.qtip.qtip-blue').remove(); 
    337341 
    338342    var html = DataLayer.render('templates/shared_calendar.ejs', {});    
  • sandbox/2.4.2-expresso1/prototype/modules/calendar/js/helpers.js

    r6815 r6820  
    122122function eventDetails( objEvent, decoded, path, isMail, repeat) 
    123123{ 
     124 
     125    $('.qtip.qtip-blue').remove(); 
     126 
    124127    attendees = {}; 
    125128         
     
    16931696function add_tab_configure_calendar(calendar, type)  
    16941697{ 
     1698    $('.qtip.qtip-blue').remove(); 
     1699 
    16951700    var calendars = []; 
    16961701    var signatures = []; 
     
    21172122        $('ul.list-calendars .cal-list-options-btn').on('click',function(){doMenu();});          
    21182123         
     2124 
     2125    /***************************************New Calendar***************************************/ 
    21192126        meu_container.find(".button.new-calendar").button({ 
    21202127            icons: { 
     
    21232130            text: false 
    21242131        }).click(function () { 
    2125                  
    2126             if( $('.qtip.qtip-blue.qtip-active').val() !== ''){ 
    2127                 $(this).qtip({ 
    2128                     show: { 
    2129                     ready: true,  
    2130             solo: true,  
    2131             when: { 
    2132                     event: 'click' 
    2133                     } 
    2134                 }, 
    2135                 hide: false, 
    2136                 content: { 
    2137                 text: $('<div></div>').html( DataLayer.render( 'templates/calendar_quick_add.ejs', {} ) ),  
    2138                 title: { 
    2139                 text:'Nova Agenda',  
    2140                 button: '<a class="button close" href="#">close</a>' 
    2141                 } 
    2142                 }, 
    2143                 style: { 
    2144                 name: 'blue',  
    2145             tip: { 
    2146                 corner: 'leftMiddle' 
    2147                 },  
    2148             border: { 
    2149                 width: 4,  
    2150             radius: 8 
    2151                 },  
    2152             width: { 
    2153                 min: 230,  
    2154             max:230 
    2155                 } 
    2156             }, 
    2157             position: { 
    2158             corner: { 
    2159             target: 'rightMiddle', 
    2160             tooltip: 'leftMiddle' 
    2161             }, 
    2162             adjust: { 
    2163             x:0,  
    2164             y:-12 
    2165             } 
    2166             } 
    2167             }) 
    2168         .qtip("api").onShow = function(arg0) { 
    2169             $('.qtip-active .button.close').button({ 
    2170                 icons: { 
    2171                     primary: "ui-icon-close" 
    2172                 }, 
    2173                 text: false 
    2174             }) 
    2175             .click(function(){ 
    2176                 meu_container.find(".button.new-calendar").qtip('destroy'); 
    2177             }); 
    2178             //TODO emplementar tratamento de duplicação de valores no location 
    2179             $('.qtip-active .button.save').button().click(function(){ 
    2180                 for(var i = 0; i < Calendar.calendars.length; i++){ 
    2181                     if(Calendar.calendars[i].location == ( User.me.uid + '/' + $('.qtip-active input').val())){  
    2182                         $.Zebra_Dialog('O nome desta agenda já está sendo utilizada em uma Url de outra agenda. Por favor, informe outro nome para agenda.',{ 
    2183                             'overlay_opacity': '0.5', 
    2184                             'type': 'warning' 
    2185                         }); 
    2186                         meu_container.find(".button.new").qtip('destroy'); 
    2187                         return; 
    2188                     } 
    2189                 } 
    2190                                  
    2191                 var selected; 
    2192                 var color = $('.cal-colors-options-btn').each(function(index){ 
    2193                     if ($(this).is('.color-selected')) 
    2194                         selected = index; 
    2195                 }); 
    2196                 DataLayer.put( "calendarSignature", { 
    2197                     user: User.me.id, 
    2198                     calendar: { 
    2199                         name: Encoder.htmlEncode($('.qtip-active input').val()), 
    2200                         timezone: User.preferences.timezone                              
    2201                     }, 
    2202                     isOwner: 1, 
    2203                     fontColor: colorsSuggestions[selected]['font'].substring(1) , 
    2204                     backgroundColor: colorsSuggestions[selected]['background'].substring(1) , 
    2205                     borderColor: colorsSuggestions[selected]['border'].substring(1) 
    2206                 }); 
    2207                 DataLayer.commit( false, false, function( received ){ 
    2208                     delete Calendar.currentViewKey; 
    2209                     Calendar.load(); 
    2210                     refresh_calendars(); 
    2211                 }); 
    2212                 meu_container.find(".button.new").qtip('destroy'); 
    2213             }); 
    2214                          
    2215             $('.qtip-active .button.cancel').button().click(function(){ 
    2216                 meu_container.find(".button.new").qtip('destroy'); 
    2217             }); 
    2218                          
    2219             $(".qtip-active input").Watermark("Nome da agenda"); 
    2220                          
    2221             $('.qtip-active').keydown(function(event) { 
    2222                                         if (event.keyCode == '27')  
    2223                     meu_container.find(".button.new").qtip('destroy'); 
    2224             }); 
    2225                          
    2226             $('.colors-options').prepend(buttons_colors); 
    2227             $('.colors-options .signed-cal-colors-options-btn-0').addClass('color-selected'); 
    2228                                          
    2229             var buttons = $('.cal-colors-options-btn').button(); 
    2230                          
    2231             buttons.click(function(){ 
    2232                 buttons.removeClass('color-selected'); 
    2233                 $(this).addClass('color-selected'); 
    2234             }); 
    2235         }                                
    2236         } 
     2132 
     2133        var typeCalendar = !!parseInt($(this).attr('class').match(/[0-9]+/g)) ?  
     2134            {type: 'new-group', title: 'Novo Grupo', typeValue: 1, prompt: 'Nome do grupo'} :  
     2135            {type: 'new-calendar', title: 'Nova Agenda', typeValue: 0, prompt: 'Nome da agenda'} 
     2136                 
     2137            if(!$('.qtip.qtip-blue.qtip-active.'+typeCalendar.type).length){ 
     2138 
     2139            $('.qtip.qtip-blue').remove(); 
     2140 
     2141                $(this).qtip({ 
     2142                show: { 
     2143                       ready: true,  
     2144                   solo: true,  
     2145                   when: { 
     2146                          event: 'click' 
     2147                       } 
     2148                    }, 
     2149                  hide: false, 
     2150                  content: { 
     2151                          text: $('<div></div>').html( DataLayer.render( 'templates/calendar_quick_add.ejs', {} ) ),  
     2152                          title: { 
     2153                              text: typeCalendar.title,  
     2154                              button: '<a class="button close" href="#">close</a>' 
     2155                          } 
     2156                        }, 
     2157                  style: { 
     2158                          name: 'blue',  
     2159                      tip: { 
     2160                              corner: 'leftMiddle' 
     2161                          },  
     2162                   border: { 
     2163                           width: 4,  
     2164                           radius: 8 
     2165                          },  
     2166                      width: { 
     2167                              min: 230,  
     2168                          max:230 
     2169                          } 
     2170                    }, 
     2171               position: { 
     2172                       corner: { 
     2173                           target: 'rightMiddle', 
     2174                           tooltip: 'leftMiddle' 
     2175                       }, 
     2176                       adjust: { 
     2177                            x:0,  
     2178                            y:-12 
     2179                       } 
     2180                    } 
     2181            }) 
     2182                .qtip("api").onShow = function(arg0) { 
     2183                    $('.qtip-active .button.close').button({ 
     2184                          icons: { 
     2185                              primary: "ui-icon-close" 
     2186                          }, 
     2187                          text: false 
     2188                    }) 
     2189                    .click(function(){ 
     2190                          meu_container.find('.button.'+typeCalendar.type).qtip('destroy'); 
     2191                    }); 
     2192                     
     2193                 $('.qtip-active').addClass(typeCalendar.type); 
     2194 
     2195                    $('.qtip-active .button.save').button().click(function(){ 
     2196                    if(!typeCalendar.typeValue) 
     2197                                for(var i = 0; i < Calendar.calendars.length; i++){ 
     2198                                    if(Calendar.calendars[i].location == ( User.me.uid + '/' + $('.qtip-active input').val())){  
     2199                                        $.Zebra_Dialog('O nome desta agenda já está sendo utilizada em uma Url de outra agenda. Por favor, informe outro nome para agenda.',{ 
     2200                                            'overlay_opacity': '0.5', 
     2201                                            'type': 'warning' 
     2202                                        }); 
     2203                                        $('.qtip.qtip-blue').remove(); 
     2204                                        return; 
     2205                                    } 
     2206                                } 
     2207                                         
     2208                        var selected; 
     2209                        var color = $('.cal-colors-options-btn').each(function(index){ 
     2210                            if ($(this).is('.color-selected')) 
     2211                                 selected = index; 
     2212                        }); 
     2213                        DataLayer.put( "calendarSignature", { 
     2214                            user: User.me.id, 
     2215                            calendar: { 
     2216                                name: Encoder.htmlEncode($('.qtip-active input').val()), 
     2217                                timezone: User.preferences.timezone, 
     2218                        type: typeCalendar.typeValue                     
     2219                            }, 
     2220                            isOwner: 1, 
     2221                            fontColor: colorsSuggestions[selected]['font'].substring(1) , 
     2222                            backgroundColor: colorsSuggestions[selected]['background'].substring(1) , 
     2223                            borderColor: colorsSuggestions[selected]['border'].substring(1) 
     2224                        }); 
     2225                        DataLayer.commit( false, false, function( received ){ 
     2226                            delete Calendar.currentViewKey; 
     2227                            Calendar.load(); 
     2228                            refresh_calendars(); 
     2229                        }); 
     2230                        $('.qtip.qtip-blue').remove(); 
     2231                    }); 
     2232                                 
     2233                    $('.qtip-active .button.cancel').button().click(function(){ 
     2234                        meu_container.find(".button.new").qtip('destroy'); 
     2235                    }); 
     2236                                 
     2237                    $(".qtip-active input").Watermark(typeCalendar.prompt); 
     2238                                 
     2239                    $('.qtip-active').keydown(function(event) { 
     2240                            if (event.keyCode == '27')  
     2241                              meu_container.find(".button.new").qtip('destroy'); 
     2242                    }); 
     2243                                 
     2244                    $('.colors-options').prepend(buttons_colors); 
     2245                    $('.colors-options .signed-cal-colors-options-btn-0').addClass('color-selected'); 
     2246                                                 
     2247                    var buttons = $('.cal-colors-options-btn').button(); 
     2248                                 
     2249                    buttons.click(function(){ 
     2250                        buttons.removeClass('color-selected'); 
     2251                        $(this).addClass('color-selected'); 
     2252                    }); 
     2253                }                                
     2254           } 
    22372255    }); 
    2238          
     2256 
    22392257    $("img.cal-list-img").click(function(evt) { 
    2240         $(".cal-list-options_1").toggleClass( "hidden" ); 
     2258           $(".cal-list-options_1").toggleClass( "hidden" ); 
    22412259    }); 
    22422260 
     2261    $(".my-groups-task a.title-my-calendars").click(function() { 
     2262        $(".my-groups-task ul.my-list-calendars").toggleClass("hidden") 
     2263        $('.my-groups-task .status-list').toggleClass("ui-icon-triangle-1-s"); 
     2264        $('.my-groups-task .status-list').toggleClass("ui-icon-triangle-1-e"); 
     2265    }); 
     2266 
    22432267    $(".my-calendars a.title-my-calendars").click(function() { 
    2244         $(".my-calendars ul.my-list-calendars").toggleClass("hidden") 
    2245         $('.my-calendars .status-list').toggleClass("ui-icon-triangle-1-s"); 
    2246         $('.my-calendars .status-list').toggleClass("ui-icon-triangle-1-e"); 
     2268        $(".my-calendars ul.my-list-calendars").toggleClass("hidden") 
     2269        $('.my-calendars .status-list').toggleClass("ui-icon-triangle-1-s"); 
     2270        $('.my-calendars .status-list').toggleClass("ui-icon-triangle-1-e"); 
    22472271    }); 
    22482272                 
    22492273    $(".signed-calendars a.title-signed-calendars").click(function() { 
    2250         $(".signed-calendars ul.signed-list-calendars").toggleClass( "hidden"); 
     2274           $(".signed-calendars ul.signed-list-calendars").toggleClass( "hidden"); 
    22512275    }); 
    22522276 
     
    25302554 
    25312555function pageselectCallback(keyword, page_index, jq, view){ 
     2556    $('.qtip.qtip-blue').remove(); 
    25322557         
    25332558    var selecteds = getSelectedCalendars(); 
     
    26092634 
    26102635function show_modal_import_export(tab, calendarId) { 
     2636    $('.qtip.qtip-blue').remove(); 
    26112637    DataLayer.render( 'templates/import_export.ejs', { 
    26122638        calendars: Calendar.calendars,  
  • sandbox/2.4.2-expresso1/prototype/modules/calendar/js/init.js

    r6816 r6820  
    152152                        var componente = $(this); 
    153153 
    154                         $(componente).qtip({ 
    155                             show: { 
    156                                 ready: true,  
    157                                 solo: true,  
    158                                 when: { 
    159                                         event: 'click' 
    160                                 } 
    161                                 }, 
    162                                 hide: false, 
    163                                 content: { 
    164                                         text: $('<div></div>').html( DataLayer.render( 'templates/task_quick_add.ejs', {} ) ), 
    165                                         title: { 
    166                                                 text:'Nova tarefa',  
    167                                                 button: '<a class="button close" href="#">close</a>' 
    168                                         } 
    169                                 }, 
    170                                 style: { 
    171                                         name: 'blue',  
    172                                 tip: { 
    173                                                 corner: 'leftMiddle' 
    174                                         },  
    175                                 border: { 
    176                                                 width: 4,  
    177                                             radius: 8 
    178                                         },  
    179                                 width: { 
    180                                                 min: 225,  
    181                                             max:225 
    182                                         } 
    183                                 }, 
    184                         position: { 
    185                                 corner: { 
    186                                             target: 'rightMiddle', 
    187                                             tooltip: 'leftMiddle' 
    188                                 }, 
    189                                 adjust: { 
    190                                             x:0,  
    191                                             y:0 
    192                                 } 
    193                         } 
    194                     }) 
    195                 .qtip("api").onShow = function(arg0) { 
     154            if(!$('div.qtip.qtip-blue.new-task').length){ 
     155 
     156                $('div.qtip.qtip-blue').remove(); 
     157 
     158                        $(componente).qtip({ 
     159                            show: { 
     160                                ready: true,  
     161                                solo: true,  
     162                                when: { 
     163                                        event: 'click' 
     164                                } 
     165                                }, 
     166                                hide: false, 
     167                                content: { 
     168                                        text: $('<div></div>').html( DataLayer.render( 'templates/task_quick_add.ejs', {} ) ), 
     169                                        title: { 
     170                                                text:'Nova tarefa',  
     171                                                button: '<a class="button close" href="#">close</a>' 
     172                                        } 
     173                                }, 
     174                                style: { 
     175                                        name: 'blue',  
     176                                tip: { 
     177                                                corner: 'leftMiddle' 
     178                                        },  
     179                                border: { 
     180                                            width: 4,  
     181                                            radius: 8 
     182                                        },  
     183                                width: { 
     184                                                min: 225,  
     185                                            max:225 
     186                                        } 
     187                                }, 
     188                        position: { 
     189                                corner: { 
     190                                            target: 'rightMiddle', 
     191                                            tooltip: 'leftMiddle' 
     192                                }, 
     193                                adjust: { 
     194                                            x:0,  
     195                                            y:0 
     196                                } 
     197                        } 
     198                    }) 
     199                .qtip("api").onShow = function(arg0) { 
    196200 
    197201                        /*------------------------------------------------------------------------*/ 
    198202                        /*               Seta os valores padrões nos inputs do qtip               */ 
    199                         $('div.qtip div.add-simple-task input.task').Watermark("Tarefa sem título"); 
    200                                 $('div.qtip div.add-simple-task textarea').Watermark("Descrição"); 
    201                                 /*------------------------------------------------------------------------*/ 
    202  
    203                             $('.qtip-active .button.close').button({ 
    204                                 icons: { 
    205                                     primary: "ui-icon-close" 
    206                                 }, 
    207                                 text: false 
    208                             }) 
    209                             .click(function(){ 
    210                                         $(componente).qtip('destroy'); 
    211                             }); 
    212                                                          
    213                             $('.qtip-active .button.save').button().click(function(){ 
    214                                  
    215                                 var title = $('div.qtip div.add-simple-task input.task').val(); 
    216                                         var description = $('div.qtip div.add-simple-task textarea').val(); 
    217  
    218                                         var calendar, timezone = ''; 
    219  
    220                                         for (var i = 0; i < Calendar.signatures.length; i++){ 
    221                                                 if(Calendar.signatures[i].type == 1 && Calendar.signatures[i].calendar.type == 1){ 
    222                                                         calendar = Calendar.signatures[i].calendar.id; 
    223                                                         timezone = Calendar.signatures[i].calendar.timezone; 
    224                                                         break; 
    225                                                 } 
    226                                         } 
    227  
    228  
    229                                 DataLayer.put('schedulable',  
    230                                 { 
    231                                         summary: title,  
    232                                         description: description,  
    233                                         type: '2',  
    234                                         calendar: calendar,  
    235                                         timezone: timezone, 
    236                                         startTime: new Date().toString('yyyy-MM-dd 00:00:00'), 
    237                                         endTime: new Date().toString('yyyy-MM-dd 00:00:00'), 
    238                                         allDay: '1' 
    239                                 }); 
    240                                 //DataLayer.commit(); 
    241  
    242                                 $(componente).qtip('destroy'); 
    243                             }); 
    244  
    245                             $('.qtip-active .button.advanced').button().click(function(){ 
    246                                  
    247                                         $(componente).qtip('destroy'); 
    248                                          
    249                                 var startEvent = new Date(); 
    250                                         var configData = (startEvent.toString('mm') < 30)  ? {minutes: (30 - parseInt(startEvent.toString('mm')))} : {hours: 1, minutes: '-'+startEvent.toString('mm')}; 
    251                                         startEvent.add(configData); 
    252  
    253                                         taskDetails({  
    254                                                 startTime: startEvent.getTime(), 
    255                                                 endTime: dateCalendar.decodeRange(startEvent, (!!User.preferences.defaultCalendar ? (   !!Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration ?   
    256                                                         (Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration) : (User.preferences.defaultDuration)) : (User.preferences.defaultDuration))) 
    257                                         }, true ); 
    258                          
    259                             }); 
    260                                                                  
    261                                 $('.qtip-active .button.cancel').button().click(function(){ 
    262                                         $(componente).qtip('destroy'); 
    263                             });                                  
    264                                                          
    265                             $('.button').button(); 
    266                                                          
    267                         }; 
    268                          
     203                         $('div.qtip div.add-simple-task input.task').Watermark("Tarefa sem título"); 
     204                             $('div.qtip div.add-simple-task textarea').Watermark("Descrição"); 
     205                        /*------------------------------------------------------------------------*/ 
     206 
     207                            $('.qtip-active .button.close').button({ 
     208                                icons: { 
     209                                    primary: "ui-icon-close" 
     210                                }, 
     211                                text: false 
     212                            }) 
     213                            .click(function(){ 
     214                                        $(componente).qtip('destroy'); 
     215                            }); 
     216                                                         
     217                            $('.qtip-active .button.save').button().click(function(){ 
     218                                 
     219                                var title = $('div.qtip div.add-simple-task input.task').val(); 
     220                                        var description = $('div.qtip div.add-simple-task textarea').val(); 
     221 
     222                                        var calendar, timezone = ''; 
     223 
     224                                        for (var i = 0; i < Calendar.signatures.length; i++){ 
     225                                                if(Calendar.signatures[i].type == 1 && Calendar.signatures[i].calendar.type == 1){ 
     226                                                        calendar = Calendar.signatures[i].calendar.id; 
     227                                                        timezone = Calendar.signatures[i].calendar.timezone; 
     228                                                        break; 
     229                                                } 
     230                                        } 
     231 
     232                                DataLayer.put('schedulable',  
     233                                { 
     234                                        summary: title,  
     235                                        description: description,  
     236                                        type: '2',  
     237                                        calendar: calendar,  
     238                                        timezone: timezone, 
     239                                        startTime: new Date().toString('yyyy-MM-dd 00:00:00'), 
     240                                        endTime: new Date().toString('yyyy-MM-dd 00:00:00'), 
     241                                        allDay: '1' 
     242                                }); 
     243                                //DataLayer.commit(); 
     244 
     245                    }); 
     246 
     247                            $('.qtip-active .button.advanced').button().click(function(){ 
     248                                 
     249                                        $(componente).qtip('destroy'); 
     250                                         
     251                                var startEvent = new Date(); 
     252                                        var configData = (startEvent.toString('mm') < 30)  ? {minutes: (30 - parseInt(startEvent.toString('mm')))} : {hours: 1, minutes: '-'+startEvent.toString('mm')}; 
     253                                        startEvent.add(configData);  
     254                         
     255                                                var componente = $(this); 
     256 
     257                                        taskDetails({  
     258                                                startTime: startEvent.getTime(), 
     259                                                endTime: dateCalendar.decodeRange(startEvent, (!!User.preferences.defaultCalendar ? (   !!Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration ?   
     260                                                        (Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration) : (User.preferences.defaultDuration)) : (User.preferences.defaultDuration))) 
     261                                        }, true ); 
     262                         
     263                            }); 
     264                                                                 
     265                                $('.qtip-active .button.cancel').button().click(function(){ 
     266                                        $(componente).qtip('destroy'); 
     267                            }); 
     268                                                         
     269                            $('.button').button(); 
     270                         
     271                        $('div.qtip.qtip-blue.qtip-active').addClass('new-task'); 
     272            } 
     273        } 
    269274                }); 
    270275 
  • sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/calendar_list.ejs

    r6815 r6820  
    1616        <a title='Grupos de tarefas' class="title-my-calendars" aria-expanded='false' role='button' tabindex='0'>Grupos de tarefas</a> 
    1717        <span class="status-list ui-icon ui-icon-triangle-1-s"></span> 
    18         <a href="#" class="button new new-calendar">Novo Grupo</a> 
     18        <a href="#" class="button new new-calendar 1">Novo Grupo</a> 
    1919        <ul class="list-calendars my-list-calendars"> 
    2020            <% for (var i=0; i < signatures['taskGroup'].length; i++) {%> 
     
    4747        <a title='Minhas agendas' class="title-my-calendars" aria-expanded='false' role='button' tabindex='0'>Minhas agendas</a> 
    4848        <span class="status-list ui-icon ui-icon-triangle-1-s"></span> 
    49         <a href="#" class="button new new-calendar">Nova Agenda</a> 
     49        <a href="#" class="button new new-calendar 0">Nova Agenda</a> 
    5050        <ul class="list-calendars my-list-calendars"> 
    5151            <% for (var i=0; i < signatures.calendar.length; i++) {%> 
     
    9494                <div class="cal-list-options my-cal-list-options-<%= signatures['sharedCalendar'][i].calendar.id  %> hidden"> 
    9595                    <ul> 
    96                         <li><a href="#" onclick="add_tab_configure_calendar(<%= signatures['sharedCalendar'][i].calendar.id %>);">Configurações</a></li> 
     96                        <li><a href="#" onclick="add_tab_configure_calendar(<%= signatures['sharedCalendar'][i].calendar.id %>, 0);">Configurações</a></li> 
    9797                        <li><a href="#" onclick="show_modal_import_export(0, <%= signatures['sharedCalendar'][i].calendar.id %>);">Importar</a></li> 
    9898                        <li><a href="#" onclick="show_modal_import_export(1, <%= signatures['sharedCalendar'][i].calendar.id %>);">Exportar</a></li> 
Note: See TracChangeset for help on using the changeset viewer.