source: trunk/prototype/modules/calendar/index.php @ 5345

Revision 5345, 17.3 KB checked in by acoutinho, 12 years ago (diff)

Ticket #2434 - (acoutinho) Correcoes de bugs e melhorias

Line 
1<?php
2
3        $GLOBALS['phpgw_info']['flags'] = Array(  'currentapp'    =>      'expressoCalendar',
4                                                  'noheader'      =>      false,
5                                                  'nonavbar'      =>      false,
6                                                  'noappheader'   =>      true,
7                                                  'noappfooter'   =>      true,
8                                                  'nofooter'      =>      true  );
9
10        include('../../../header.inc.php');
11       
12        $_SESSION['flags']['currentapp']  = 'expressoCalendar';
13       
14       
15        $_SESSION['wallet']['Sieve']['user']          = $GLOBALS['phpgw_info']['user']['account_lid'];
16        $_SESSION['wallet']['Sieve']['password']      = $GLOBALS['phpgw_info']['user']['passwd'];
17
18        $_SESSION['wallet']['Cyrus']['user']          = $GLOBALS['phpgw_info']['user']['account_lid'];
19        $_SESSION['wallet']['Cyrus']['password']      = $GLOBALS['phpgw_info']['user']['passwd'];
20
21        $_SESSION['wallet']['user']['uid']            =  $GLOBALS['phpgw_info']['user']['userid'];
22        $_SESSION['wallet']['user']['uidNumber']      =  $GLOBALS['phpgw_info']['user']['account_id'];
23        $_SESSION['wallet']['user']['password']       =  $GLOBALS['phpgw_info']['user']['passwd'];
24        $_SESSION['wallet']['user']['cn']             =  $GLOBALS['phpgw_info']['user']['cn'];
25        $_SESSION['wallet']['user']['mail']           =  $GLOBALS['phpgw_info']['user']['email'];
26                       
27        //Configuração caldav
28        $_SESSION['config']['expressoCalendar']['useCaldav'] = false;
29        $_SESSION['wallet']['caldav']['url'] = 'http://davical.prognus.com.br/caldav.php';
30        /////////////////////////////////////////////////////////////////////////////////////////////////////
31       
32        $_SESSION['wallet']['PostgreSQL']['user']     = $GLOBALS['phpgw_info']['server']['db_user'];
33        $_SESSION['wallet']['PostgreSQL']['password'] = $GLOBALS['phpgw_info']['server']['db_pass'];
34        $_SESSION['wallet']['PostgreSQL']['dbname']   = $GLOBALS['phpgw_info']['server']['db_name'];
35        $_SESSION['wallet']['PostgreSQL']['host']     = $GLOBALS['phpgw_info']['server']['db_host'];
36?>
37<html>
38<head>
39<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
40<script>
41        function dump(arr,level) {
42                var dumped_text = "";
43                if(!level) level = 0;
44
45                //The padding given at the beginning of the line.
46                var level_padding = "";
47                for(var j=0;j<level+1;j++) level_padding += "    ";
48
49                if(typeof(arr) == 'object') { //Array/Hashes/Objects
50                        for(var item in arr) {
51                                var value = arr[item];
52
53                                if(typeof(value) == 'object') { //If it is an array,
54                                        dumped_text += level_padding + "'" + item + "' ...\n";
55                                        dumped_text += dump(value,level+1);
56                                } else {
57                                        dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
58                                }
59                        }
60                } else { //Stings/Chars/Numbers etc.
61                        dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
62                }
63                return dumped_text;
64        }
65</script>
66<!--<link rel='stylesheet' type='text/css' href="../../../templates/jquery-ui/redmond/jquery-ui.css"/>-->
67
68<!--<link rel='stylesheet' type='text/css' href='../fullcalendar/fullcalendar.css' />-->
69<link rel="stylesheet" type="text/css" href="css/reset.css" />
70<link rel='stylesheet' type='text/css' href='../../app/plugins/fullcalendar/fullcalendar.css' />
71<link rel='stylesheet' type='text/css' href='../../app/plugins/fullcalendar/fullcalendar.print.css' media='print' />
72<link rel='stylesheet' type='text/css' href='../../app/plugins/jquery/jquery-ui.custom.css'/>
73<link rel='stylesheet' type='text/css' href='../../app/plugins/icalendar/jquery.icalendar.css'/>
74<link type="text/css" href="../../app/plugins/fgmenu/fg.menu.css" media="screen" rel="stylesheet" />
75<!--<link type="text/css" href="../../fgmenu/theme/ui.all.css" media="screen" rel="stylesheet" />-->
76
77<link rel='stylesheet' type='text/css' href='../../app/plugins/fileupload/jquery.fileupload-ui.css'/>
78<link rel="stylesheet" href="../../app/plugins/jquery.pagination/pagination.css" />
79
80<!-- JPicker -->
81<link rel="Stylesheet" type="text/css" href="../../app/plugins/jpicker/css/jPicker-1.1.6.min.css" />
82<link rel="Stylesheet" type="text/css" href="../../app/plugins/jpicker/jPicker.css" />
83
84<link rel="Stylesheet" type="text/css" href="../../app/plugins/farbtastic/farbtastic.css" />
85<link rel="Stylesheet" type="text/css" href="../../app/plugins/timepicker/jquery-ui-timepicker-addon.css" />
86<link rel="stylesheet" type="text/css" href='../../app/plugins/zebradialog/css/zebra_dialog.css'></link>
87
88<link rel="stylesheet" type="text/css" href="css/layout.css" />
89<link rel="stylesheet" type="text/css" href="css/style.css" />
90
91<script type='text/javascript' src='../../app/plugins/datejs/date-pt-BR.js'></script>
92<script type='text/javascript' src='../../app/plugins/jquery/jquery.min.js'></script>
93<script type='text/javascript' src='../../app/plugins/icalendar/jquery.icalendar.js'></script>
94<script type='text/javascript' src='../../app/plugins/jquery/jquery-ui.custom.min.js'></script>
95<script type='text/javascript' src="../../app/plugins/jquery/i18n/jquery.ui.datepicker-pt-BR.js"></script>
96<script type='text/javascript' src="../../app/plugins/timepicker/jquery-ui-timepicker-addon.js"></script>
97<script type='text/javascript' src="../../app/plugins/timepicker/localization/jquery-ui-timepicker-pt-BR.js"></script>
98<script type='text/javascript' src='../../app/plugins/json2/json2.js'></script>
99<script type='text/javascript' src='../../app/plugins/store/jquery.store.js'></script>
100<script type='text/javascript' src='../../app/plugins/fileupload/jquery.fileupload.js'></script>
101<script type='text/javascript' src='../../app/plugins/fileupload/jquery.fileupload-ui.js'></script>
102<script type='text/javascript' src='../../app/plugins/fileupload/jquery.iframe-transport.js'></script>
103<script type='text/javascript' src='../../app/plugins/store/jquery.store.js'></script>
104<script type="text/javascript" src="../../app/plugins/jquery.pagination/jquery.pagination.js"></script>
105<script type='text/javascript' src='../../app/plugins/mask/jquery.maskedinput.js'></script>
106<script type='text/javascript' src='../../app/plugins/alphanumeric/jquery.alphanumeric.js'></script>
107<script type='text/javascript' src='../../app/plugins/watermark/jquery.watermarkinput.js'></script>
108<script type='text/javascript' src='../../app/plugins/encoder/encoder.js'></script>
109<script type='text/javascript' src='../../app/datalayer.js'></script>
110
111<!-- Datejs -->   
112<!-- <script type='text/javascript' src='../../datejs/core.js'></script> -->
113<!--<script type='text/javascript' src='../../app/plugins/datejs/date-pt-BR.js'></script>-->
114<!-- <script type='text/javascript' src='../../app/plugins/datejs/globalization/pt-BR.js'></script> -->
115<script type='text/javascript' src='../../app/plugins/datejs/sugarpak.js'></script>
116<script type='text/javascript' src='../../app/plugins/datejs/parser.js'></script>
117
118<!--  <script type='text/javascript' src='../../datejs/time.js'></script>  -->
119<script type='text/javascript' src='../../app/plugins/dateFormat/dateFormat.js'></script>
120<script type='text/javascript' src='js/base64.js'></script>
121<script type='text/javascript' src='js/helpers.js'></script>
122<script type='text/javascript' src='js/calendar.codecs.js'></script>
123
124
125
126<!--<script type='text/javascript' src='../fullcalendar/fullcalendar.min.js'></script>-->
127<script type='text/javascript' src='../../app/plugins/fullcalendar/fullcalendar.js'></script>
128<script type='text/javascript' src='js/I18n.js'></script>
129<script type='text/javascript' src='../../app/plugins/jquery.dateFormat/jquery.dateFormat.js'></script>
130
131<script type='text/javascript' src='../../app/plugins/zebradialog/javascript/zebra_dialog.js'></script>
132<!-- <script type='text/javascript' src='../../app/plugins/view/jquerymx-1.0.custom.min.js'></script> -->
133<script type='text/javascript' src='../../app/plugins/ejs/ejs.js'></script>
134
135<script type="text/javascript" src="../../app/plugins/fgmenu/fg.menu.js"></script>
136
137<script type="text/javascript" src="../../app/plugins/qtip/jquery.qtip-1.0.0-rc3.min.js"></script>
138
139<!-- JPicker -->
140<script src="../../app/plugins/jpicker/jpicker-1.1.6.min.js" type="text/javascript"></script>
141
142<script src="../../app/plugins/farbtastic/farbtastic.js" type="text/javascript"></script>
143
144<script type='text/javascript'>
145
146
147$(document).ready(function() {
148
149        refresh_calendars();
150        $tabs = $('#tabs').tabs({
151            add: function( event, ui ) {
152                        User.lastView = $tabs.tabs('option' ,'selected');
153                        $tabs.tabs('select', '#' + ui.panel.id);
154                },
155                remove: function( event, ui ) {
156                        $tabs.tabs('select', User.lastView);
157                },
158                show: function( event, ui ){
159                        delete Calendar.currentViewKey;
160                        $('#calendar').fullCalendar('refetchEvents');
161                }
162        })
163        .tabs('option', 'tabTemplate', "<li><a href='#{href}'>#{label}</a><span class='ui-icon ui-icon-close'>Remove Tab</span></li>" );
164
165        /**
166          * Make a button to close the tab
167          */
168        $tabs.find( "span.ui-icon-close" ).live( "click", function() {
169                var index = $( "li", $tabs ).index( $( this ).parent() );
170                if($tabs.tabs('option' ,'selected') == index){
171                        if($tabs.tabs("length") == 2 && User.lastView != 1)
172                                $tabs.tabs( "select", 0);
173                        $tabs.tabs( "select", User.lastView);
174                }
175                if($tabs.tabs('option' ,'selected') == 0 || $tabs.tabs('option' ,'selected') == 1)
176                        User.lastView = $tabs.tabs('option' ,'selected');
177                if(index != -1)
178                  $tabs.tabs( "remove", index );       
179                       
180               
181                });     
182        $('.button.config-menu').button({
183            icons: {
184                primary: "ui-icon-gear",
185                secondary: "ui-icon-triangle-1-s"
186            },
187            text: false
188        });
189      $('.button.add').button({
190              icons: {
191                      secondary: "ui-icon-plus"
192              }
193      })
194
195                var miniCalendar = $('.block-vertical-toolbox .mini-calendar').datepicker({
196                        dateFormat: 'yy-m-d',
197                        //dateFormat: 'DD, d MM, yy',
198                        //inline: true,
199                        firstDay: dayOfWeek(User.preferences.weekStart),
200                        onSelect: function(dateText, inst)
201                        {       
202                                $tabs.tabs("select", "#calendar");
203                                var date = dateText.split('-');
204                                var dateFullCalendar = $.fullCalendar.formatDate($('#calendar').fullCalendar('getDate'), "yyyy-MM-dd").split('-');
205                                $('#calendar').fullCalendar('gotoDate',date[0],date[1]-1,date[2]);
206                                $('#calendar').fullCalendar( 'changeView', 'agendaDay' );
207                        }                       
208                })
209                .find('.ui-icon-circle-triangle-e').removeClass('ui-icon-circle-triangle-e').addClass('ui-icon-triangle-1-e').end()
210                .find('.ui-icon-circle-triangle-w').removeClass('ui-icon-circle-triangle-w').addClass('ui-icon-triangle-1-w');
211               
212                //Onclick do mês
213                $('.ui-datepicker-title .ui-datepicker-month').live('click',function(){
214                        $tabs.tabs("select", "#calendar");
215                        var currentDate = $.fullCalendar.formatDate($('#calendar').fullCalendar('getDate'), "yyyy-MM-dd").split('-');
216                        $('#calendar').fullCalendar('gotoDate',$('.ui-datepicker-title .ui-datepicker-year').html(), Date.getMonthNumberFromName($('.ui-datepicker-title .ui-datepicker-month').html()),currentDate[2]);
217                        $('#calendar').fullCalendar( 'changeView', 'month');
218                });
219                //Onclick do ano
220                $('.ui-datepicker-title .ui-datepicker-year').live('click',function(){
221                        $tabs.tabs("select", "#calendar");
222                        var currentDate = $.fullCalendar.formatDate($('#calendar').fullCalendar('getDate'), "yyyy-MM-dd").split('-');
223                        $('#calendar').fullCalendar('gotoDate',$('.ui-datepicker-title .ui-datepicker-year').html(), Date.getMonthNumberFromName($('.ui-datepicker-title .ui-datepicker-month').html()), currentDate[2]);
224                        $('.fc-button-year').click();
225                });
226               
227        //Onclick em um dia do calendário anual
228        $( ".fc-day-number" ).live( "click", function() {
229                       
230                var date = $(this).parents('[class*="fc-day-"]').attr('class').match(/fc-day-(\d{4})-(\d{2})-(\d{2})/);
231
232                if (date) date.shift();
233                else return false;
234
235                $('#calendar').fullCalendar('gotoDate',date[0],date[1]-1,date[2]);
236                $('#calendar').fullCalendar( 'changeView', 'agendaDay' );
237        });     
238
239        $('.main-search input.search').keydown(function(event){
240                if(event.keyCode == 13) {
241                        Encoder.EncodeType = "entity";
242                        //$(this).val($(this).val());
243                                       
244                        add_events_list($(this).val());
245                        $(this).val('');
246                }
247        });
248                               
249        $('.block-horizontal-toolbox .main-config-menu').menu({
250                content: $('.main-config-menu-content').html(),
251                positionOpts: {
252                        posX: 'left',
253                        posY: 'bottom',
254                        offsetX: -140,
255                        offsetY: 0,
256                        directionH: 'right',
257                        directionV: 'down',
258                        detectH: true, // do horizontal collision detection 
259                        detectV: true, // do vertical collision detection
260                        linkToFront: false
261                },
262                flyOut: true,
263                showSpeed: 100,
264                crumbDefaultText: '>'
265        });
266             
267                $('#trash').droppable({
268                        drop: function(event, ui){
269                                //              calendar.fullCalendar( 'removeEvents', ui.draggable.attr('event-id') );
270                                DataLayer.remove( "event", ui.draggable.attr('event-id') );
271                                $(this).switchClass('empty','full');
272                        },
273                        tolerance: "touch"
274                });
275
276      /* initialize the calendar
277      -----------------------------------------------------------------*/
278                $(".button.add.add-event").click(function(event){
279                        eventDetails({
280                                startTime: $.now(),
281                                endTime:!!User.preferences.defaultCalendar ? Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration != "" ? ($.now() + Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration * 60000) : (User.preferences.defaultDuration * 60000)
282                                : $.now() + (User.preferences.defaultDuration * 60000)
283                        }, true );
284                });
285
286        var calendar = $('#calendar').fullCalendar({
287
288                defaultView: User.preferences.defaultCalView,
289                timeFormat: User.preferences.hourFormat,
290                axisFormat: User.preferences.hourFormat,
291                eventSources: Calendar.sources,
292
293                header: {
294                        left: 'prev,next today,basicWeek,basicDay',
295                        center: 'title',
296                        right: 'agendaDay,agendaWeek,month,year'
297                },
298                firstDay: dayOfWeek(User.preferences.weekStart),
299                editable: true,
300                selectable: true,
301                selectHelper: true,
302                droppable: true, // this allows things to be dropped onto the calendar !!!
303                timeFormat: {
304                        agenda: 'HH:mm{ - HH:mm}',
305                        '': 'HH:mm{ - HH:mm} }'
306                },
307                titleFormat: {
308                        month: 'MMMM yyyy',                             
309                        week: "dd[ yyyy] { 'a'[ MMM] dd 'de' MMMM '-' yyyy}",
310                        day: 'dddd,  dd MMM , yyyy'
311                },
312                columnFormat:{
313                        month: 'ddd',   
314                        week: 'ddd dd/MM',
315                        day: 'dddd dd/MM' 
316                },
317                monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro' ],
318                monthNamesShort: ['Jan','Fev','Mar','Abr','Maio','Jun','Jul','Ago','Set','Out','Nov','Dez'],
319                dayNames: [ 'Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],
320                dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
321                dayNamesShortest: ['D','S','T','Q','Q','S','S'],
322                allDayText: 'Dia todo',
323                buttonText: {
324                        today: 'hoje',
325                        month: 'mês',
326                        week: 'semana',
327                        day: 'dia',
328                        year: 'ano'
329                },
330               
331                eventRender: function( event, element, view ){
332                        $(element).attr( 'event-id', event.id );
333                },
334
335                select: function( start, end, allDay, event, view ){
336                        eventDetails( { 'start': start,
337                                        'end': end,
338                                        'allDay': allDay } );
339                },
340
341                eventDrop: function( event ){
342                        DataLayer.put( "schedulable:calendar", event );
343                },
344
345                eventResize: function( event ){
346                        DataLayer.put( "schedulable:calendar", event );
347                },
348
349                eventClick: function( evt, event, view ){
350                        eventDetails( DataLayer.get( "schedulable", evt.id ), true );
351                }
352        });
353         
354        if($(window).height() < $('body').height()){
355                var hei = $('body').height() - $(window).height();
356                hei = $('#divAppbox').height() - hei;
357                $('#divAppbox').css('max-height', hei);
358                $('#divAppbox').css('min-height', hei);
359                $('body').css('overflow-y','hidden');
360                delete hei;
361         }
362         
363         $(window).resize(function(){
364                $('#divAppbox').css('max-height', $(window).height() - 104);
365                $('#divAppbox').css('min-height', $(window).height() - 104);
366                $('#divAppbox').css('overflow-x', 'auto');
367                $('#divAppbox').css('overflow-y', 'scroll');
368        });       
369        //Todo chamada do metodo que adiciona ao full calendar o botao de listagem de eventos 
370        //listEvents();
371});
372</script>
373</head>
374
375<body>
376        <div id="wrap" class="expresso-calendar-container" style="text-align:left;">
377                <div class="block-horizontal-toolbox">
378                        <a class="button config-menu main-config-menu" href="#"></a>
379                        <div class="main-config-menu-content hidden">
380                                <ul>
381                                        <li><a href="#" onclick="add_tab_preferences();" class="menu-command configurations">Prefer&ecirc;ncias</a></l
382                                        <li><a href="#" onclick="add_tab_configure_calendar();" class="menu-command configurations">Configura&ccedil;&atilde;o de agendas</a></li>
383                                        <li><a href="#" onclick="show_modal_import_export(0);" class="menu-pass-through">Importar</a></li>
384                                        <li><a href="#" onclick="show_modal_import_export(1);" class="menu-pass-through">Exportar</a></li>
385                                </ul>
386                        </div>         
387                        <fieldset class="search-field main-search ui-corner-all">
388                                <span class="ui-icon ui-icon-search"></span>
389                                <input class="search" type="text" />
390                        </fieldset>
391                </div>
392               
393                <div class="block-vertical-toolbox">
394                        <a class="button add add-event" href="#">Adicionar evento</a>
395                        <!--<a class="button add" href="#" onclick="add_events_list();">Lista de Eventos</a>-->
396                        <div class="mini-calendar"></div>
397
398                        <div class="calendars-list"></div>
399
400                        <div id="trash" class="ui-corner-all empty hidden"  align="middle" valign="middle"><label>Lixeira</label></div>
401                </div>
402
403                <div id="tabs">
404                        <ul>
405                                <li><a href="#calendar">Agenda</a></li>
406                                <li><a href="#tab_events_list_" onclick="add_events_list();">Lista de Eventos</a></li>
407                                <!--<li><a href="#sandbox2">Sandbox</a></li>-->
408                        </ul>
409                        <div id="calendar"> </div>
410                        <div id="tab_events_list_"> </div>
411                        <div id="sandbox2">     </div>
412                </div>
413               
414                <div id="sandbox" class="expresso-calendar-container hidden"> </div>
415                <div id="div-import-export-calendar" class="expresso-calendar-container"> </div>
416                <div id="div-alarm" class="expresso-alarm-container"> </div>
417        </div>
418</body>
419
420</html>
421
Note: See TracBrowser for help on using the repository browser.