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

Revision 5341, 17.1 KB checked in by wmerlotto, 12 years ago (diff)

Ticket #2434 - Commit inicial do novo módulo de agenda do Expresso - expressoCalendar

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                show: function( event, ui ){
156                        delete Calendar.currentViewKey;
157                        $('#calendar').fullCalendar('refetchEvents');
158                }
159        })
160        .tabs('option', 'tabTemplate', "<li><a href='#{href}'>#{label}</a><span class='ui-icon ui-icon-close'>Remove Tab</span></li>" );
161
162        /**
163          * Make a button to close the tab
164          */
165        $tabs.find( "span.ui-icon-close" ).live( "click", function() {
166                var index = $( "li", $tabs ).index( $( this ).parent() );
167                if(index != -1)
168                  $tabs.tabs( "remove", index );
169                if($tabs.tabs("length") == 2 && User.lastView != 1)
170                        $tabs.tabs( "select", 0);
171                $tabs.tabs( "select", User.lastView);
172               
173        });     
174        $('.button.config-menu').button({
175            icons: {
176                primary: "ui-icon-gear",
177                secondary: "ui-icon-triangle-1-s"
178            },
179            text: false
180        });
181      $('.button.add').button({
182              icons: {
183                      secondary: "ui-icon-plus"
184              }
185      })
186
187                var miniCalendar = $('.block-vertical-toolbox .mini-calendar').datepicker({
188                        dateFormat: 'yy-m-d',
189                        //dateFormat: 'DD, d MM, yy',
190                        //inline: true,
191                        firstDay: dayOfWeek(User.preferences.weekStart),
192                        onSelect: function(dateText, inst)
193                        {       
194                                $tabs.tabs("select", "#calendar");
195                                var date = dateText.split('-');
196                                var dateFullCalendar = $.fullCalendar.formatDate($('#calendar').fullCalendar('getDate'), "yyyy-MM-dd").split('-');
197                                $('#calendar').fullCalendar('gotoDate',date[0],date[1]-1,date[2]);
198                                $('#calendar').fullCalendar( 'changeView', 'agendaDay' );
199                        }                       
200                })
201                .find('.ui-icon-circle-triangle-e').removeClass('ui-icon-circle-triangle-e').addClass('ui-icon-triangle-1-e').end()
202                .find('.ui-icon-circle-triangle-w').removeClass('ui-icon-circle-triangle-w').addClass('ui-icon-triangle-1-w');
203               
204                //Onclick do mês
205                $('.ui-datepicker-title .ui-datepicker-month').live('click',function(){
206                        $tabs.tabs("select", "#calendar");
207                        var currentDate = $.fullCalendar.formatDate($('#calendar').fullCalendar('getDate'), "yyyy-MM-dd").split('-');
208                        $('#calendar').fullCalendar('gotoDate',$('.ui-datepicker-title .ui-datepicker-year').html(), Date.getMonthNumberFromName($('.ui-datepicker-title .ui-datepicker-month').html()),currentDate[2]);
209                        $('#calendar').fullCalendar( 'changeView', 'month');
210                });
211                //Onclick do ano
212                $('.ui-datepicker-title .ui-datepicker-year').live('click',function(){
213                        $tabs.tabs("select", "#calendar");
214                        var currentDate = $.fullCalendar.formatDate($('#calendar').fullCalendar('getDate'), "yyyy-MM-dd").split('-');
215                        $('#calendar').fullCalendar('gotoDate',$('.ui-datepicker-title .ui-datepicker-year').html(), Date.getMonthNumberFromName($('.ui-datepicker-title .ui-datepicker-month').html()), currentDate[2]);
216                        $('.fc-button-year').click();
217                });
218               
219        //Onclick em um dia do calendário anual
220        $( ".fc-day-number" ).live( "click", function() {
221                       
222                var date = $(this).parents('[class*="fc-day-"]').attr('class').match(/fc-day-(\d{4})-(\d{2})-(\d{2})/);
223
224                if (date) date.shift();
225                else return false;
226
227                $('#calendar').fullCalendar('gotoDate',date[0],date[1]-1,date[2]);
228                $('#calendar').fullCalendar( 'changeView', 'agendaDay' );
229        });     
230
231        $('.main-search input.search').keydown(function(event){
232                if(event.keyCode == 13) {
233                        Encoder.EncodeType = "entity";
234                        //$(this).val($(this).val());
235                                       
236                        add_events_list($(this).val());
237                        $(this).val('');
238                }
239        });
240                               
241        $('.block-horizontal-toolbox .main-config-menu').menu({
242                content: $('.main-config-menu-content').html(),
243                positionOpts: {
244                        posX: 'left',
245                        posY: 'bottom',
246                        offsetX: -140,
247                        offsetY: 0,
248                        directionH: 'right',
249                        directionV: 'down',
250                        detectH: true, // do horizontal collision detection 
251                        detectV: true, // do vertical collision detection
252                        linkToFront: false
253                },
254                flyOut: true,
255                showSpeed: 100,
256                crumbDefaultText: '>'
257        });
258             
259                $('#trash').droppable({
260                        drop: function(event, ui){
261                                //              calendar.fullCalendar( 'removeEvents', ui.draggable.attr('event-id') );
262                                DataLayer.remove( "event", ui.draggable.attr('event-id') );
263                                $(this).switchClass('empty','full');
264                        },
265                        tolerance: "touch"
266                });
267
268      /* initialize the calendar
269      -----------------------------------------------------------------*/
270                $(".button.add.add-event").click(function(event){
271                        eventDetails({
272                                startTime: $.now(),
273                                endTime:!!User.preferences.defaultCalendar ? Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration != "" ? ($.now() + Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration * 60000) : (User.preferences.defaultDuration * 60000)
274                                : $.now() + (User.preferences.defaultDuration * 60000)
275                        }, true );
276                });
277
278        var calendar = $('#calendar').fullCalendar({
279
280                defaultView: User.preferences.defaultCalView,
281                timeFormat: User.preferences.hourFormat,
282                axisFormat: User.preferences.hourFormat,
283                eventSources: Calendar.sources,
284
285                header: {
286                        left: 'prev,next today,basicWeek,basicDay',
287                        center: 'title',
288                        right: 'agendaDay,agendaWeek,month,year'
289                },
290                firstDay: dayOfWeek(User.preferences.weekStart),
291                editable: true,
292                selectable: true,
293                selectHelper: true,
294                droppable: true, // this allows things to be dropped onto the calendar !!!
295                timeFormat: {
296                        agenda: 'HH:mm{ - HH:mm}',
297                        '': 'HH:mm{ - HH:mm} }'
298                },
299                titleFormat: {
300                        month: 'MMMM yyyy',                             
301                        week: "dd[ yyyy] { 'a'[ MMM] dd 'de' MMMM '-' yyyy}",
302                        day: 'dddd,  dd MMM , yyyy'
303                },
304                columnFormat:{
305                        month: 'ddd',   
306                        week: 'ddd dd/MM',
307                        day: 'dddd dd/MM' 
308                },
309                monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro' ],
310                monthNamesShort: ['Jan','Fev','Mar','Abr','Maio','Jun','Jul','Ago','Set','Out','Nov','Dez'],
311                dayNames: [ 'Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],
312                dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'],
313                dayNamesShortest: ['D','S','T','Q','Q','S','S'],
314                allDayText: 'Dia todo',
315                buttonText: {
316                        today: 'hoje',
317                        month: 'mês',
318                        week: 'semana',
319                        day: 'dia',
320                        year: 'ano'
321                },
322               
323                eventRender: function( event, element, view ){
324                        $(element).attr( 'event-id', event.id );
325                },
326
327                select: function( start, end, allDay, event, view ){
328                        eventDetails( { 'start': start,
329                                        'end': end,
330                                        'allDay': allDay } );
331                },
332
333                eventDrop: function( event ){
334                        DataLayer.put( "schedulable:calendar", event );
335                },
336
337                eventResize: function( event ){
338                        DataLayer.put( "schedulable:calendar", event );
339                },
340
341                eventClick: function( evt, event, view ){
342                        eventDetails( DataLayer.get( "schedulable", evt.id ), true );
343                }
344        });
345         
346        if($(window).height() < $('body').height()){
347                var hei = $('body').height() - $(window).height();
348                hei = $('#divAppbox').height() - hei;
349                $('#divAppbox').css('max-height', hei);
350                $('#divAppbox').css('min-height', hei);
351                $('body').css('overflow-y','hidden');
352                delete hei;
353         }
354         
355         $(window).resize(function(){
356                $('#divAppbox').css('max-height', $(window).height() - 104);
357                $('#divAppbox').css('min-height', $(window).height() - 104);
358                $('#divAppbox').css('overflow-x', 'auto');
359                $('#divAppbox').css('overflow-y', 'scroll');
360        });       
361        //Todo chamada do metodo que adiciona ao full calendar o botao de listagem de eventos 
362        //listEvents();
363});
364</script>
365</head>
366
367<body>
368        <div id="wrap" class="expresso-calendar-container" style="text-align:left;">
369                <div class="block-horizontal-toolbox">
370                        <a class="button config-menu main-config-menu" href="#"></a>
371                        <div class="main-config-menu-content hidden">
372                                <ul>
373                                        <li><a href="#" onclick="add_tab_preferences();" class="menu-command configurations">Prefer&ecirc;ncias</a></l
374                                        <li><a href="#" onclick="add_tab_configure_calendar();" class="menu-command configurations">Configura&ccedil;&atilde;o de agendas</a></li>
375                                        <li><a href="#" onclick="show_modal_import_export(0);" class="menu-pass-through">Importar</a></li>
376                                        <li><a href="#" onclick="show_modal_import_export(1);" class="menu-pass-through">Exportar</a></li>
377                                </ul>
378                        </div>         
379                        <fieldset class="search-field main-search ui-corner-all">
380                                <span class="ui-icon ui-icon-search"></span>
381                                <input class="search" type="text" />
382                        </fieldset>
383                </div>
384               
385                <div class="block-vertical-toolbox">
386                        <a class="button add add-event" href="#">Adicionar evento</a>
387                        <!--<a class="button add" href="#" onclick="add_events_list();">Lista de Eventos</a>-->
388                        <div class="mini-calendar"></div>
389
390                        <div class="calendars-list"></div>
391
392                        <div id="trash" class="ui-corner-all empty hidden"  align="middle" valign="middle"><label>Lixeira</label></div>
393                </div>
394
395                <div id="tabs">
396                        <ul>
397                                <li><a href="#calendar">Agenda</a></li>
398                                <li><a href="#tab_events_list_" onclick="add_events_list();">Lista de Eventos</a></li>
399                                <!--<li><a href="#sandbox2">Sandbox</a></li>-->
400                        </ul>
401                        <div id="calendar"> </div>
402                        <div id="tab_events_list_"> </div>
403                        <div id="sandbox2">     </div>
404                </div>
405               
406                <div id="sandbox" class="expresso-calendar-container hidden"> </div>
407                <div id="div-import-export-calendar" class="expresso-calendar-container"> </div>
408                <div id="div-alarm" class="expresso-alarm-container"> </div>
409        </div>
410</body>
411
412</html>
413
Note: See TracBrowser for help on using the repository browser.