Changeset 5409
- Timestamp:
- 01/21/12 00:18:54 (12 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/inc/class.db_functions.inc.php
r5394 r5409 410 410 { 411 411 $return = false; 412 $output = unserialize($output); 413 414 ob_start(); 415 var_dump($output[0]); 416 $l = ob_get_clean(); 417 file_put_contents( "/tmp/acoutinho.log", $l , FILE_APPEND); 418 419 420 412 $output = unserialize($output); 421 413 foreach($output[0] as $key => &$value){ 422 414 -
trunk/expressoMail1_2/index.php
r5399 r5409 45 45 <script type='text/javascript' src='../prototype/plugins/alphanumeric/jquery.alphanumeric.js'></script> 46 46 <script type='text/javascript' src='../prototype/plugins/timepicker/localization/jquery-ui-timepicker-pt-BR.js'></script> 47 <script type='text/javascript' src='../prototype/modules/calendar/js/calendar.date.js'></script> 47 48 <script type='text/javascript' src='../prototype/modules/calendar/js/helpers.js'></script> 48 49 <script type='text/javascript' src='../prototype/modules/calendar/js/calendar.codecs.js'></script> 50 <script type='text/javascript' src='../prototype/modules/calendar/js/timezone.js'></script> 49 51 <script type='text/javascript' src='../prototype/plugins/encoder/encoder.js'></script> 50 52 <script type='text/javascript' src='../prototype/plugins/qtip/jquery.qtip-1.0.0-rc3.min.js'></script> -
trunk/expressoMail1_2/js/draw_api.js
r5392 r5409 2609 2609 DataLayer.dispatchPath = "../prototype/"; 2610 2610 var path = "../prototype/modules/calendar/"; 2611 2612 var startEvent = new Date(); 2613 if(startEvent.toString('mm') < 30) 2614 startEvent.add({minutes: (30 - parseInt(startEvent.toString('mm')))}); 2615 else 2616 startEvent.add({hours: 1, minutes: '-'+startEvent.toString('mm')}); 2617 var endEvent = function(date){ 2618 if(!!User.preferences.defaultCalendar){ 2619 return parseInt(date.getTime()) + 2620 ( !!Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration ? 2621 (Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration * 60000) : 2622 (User.preferences.defaultDuration * 60000) 2623 ); 2624 }else 2625 return parseInt(date.getTime()) + (User.preferences.defaultDuration * 60000); 2626 }; 2611 2627 eventDetails({ 2612 2628 summary : $("#subject_"+ID).text(), 2613 2629 description : $("#body_" + ID).text(), 2614 startTime: $.now(), 2615 endTime:!!User.preferences.defaultCalendar ? Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration != "" ? ($.now() + Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration * 60000) : (User.preferences.defaultDuration * 60000) 2616 : $.now() + (User.preferences.defaultDuration * 60000) 2630 startTime: startEvent.getTime(), 2631 endTime: endEvent(startEvent) 2617 2632 }, true, path); 2618 2633 -
trunk/expressoMail1_2/js/main.js
r5408 r5409 3388 3388 3389 3389 3390 var createDialog = function(isCorrentEvent ){3390 var createDialog = function(isCorrentEvent, propaget){ 3391 3391 3392 3392 if(!(!!isCorrentEvent)){ … … 3410 3410 success: function(msg){ 3411 3411 3412 msg = connector.unserialize(msg) == "ok" ? "Importado com sucesso para " : "Ocorreu um erro ao importar o evento para a agenda "; 3413 3414 alert( msg + $("#select-agenda option:selected").text() ); 3415 3416 $( this ).dialog( "close" ); 3412 var alt = ( (msg = connector.unserialize(msg)) == "ok") ? "Importado com sucesso para " : "Ocorreu um erro ao importar o evento para a agenda "; 3413 alert( alt + $("#select-agenda option:selected").text() ); 3417 3414 } 3418 3415 }); 3419 } 3416 3417 $( this ).dialog( "close" ); 3418 } 3420 3419 } 3421 3420 }); … … 3435 3434 if ($(".ui-dialog-buttonpane").find(".ui-button:last").children().html() == 'Atualizar'){ 3436 3435 3437 var isOk = DataLayer.put('participant', { id: ( DataLayer.get('participant', ['AND', ['=', 'user', User.me.id], ['=', 'schedulable', isCorrentEvent[0].schedulable]] ) )[0].id, 3436 3437 3438 var isOk = propaget || DataLayer.put('participant', { id: ( DataLayer.get('participant', ['AND', ['=', 'user', User.me.id], ['=', 'schedulable', isCorrentEvent[0].schedulable]] ) )[0].id, 3438 3439 status: $("#select-status option:selected").val() }); 3439 3440 … … 3465 3466 }, createDialog); 3466 3467 }else{ 3467 createDialog( false);3468 createDialog(true, true); 3468 3469 } 3469 3470 }}); -
trunk/prototype/modules/calendar/css/layout.css
r5399 r5409 433 433 } 434 434 .details-event-list p.input-group { margin: 7px 0 0 0; text-align: justify; } 435 .details-event-list p.input-group label { font-weight: bold; width: 1 3% }435 .details-event-list p.input-group label { font-weight: bold; width: 14% } 436 436 .details-event-list p.input-group .large { width: 85%; } 437 437 .fields-details-event-list { -
trunk/prototype/modules/calendar/js/calendar.codecs.js
r5384 r5409 1 //TODO: recuperar esses valores no init do Calendar2 1 User = { 3 2 4 3 init: function(){ 5 6 this.moduleName = 'expressoCalendar'; 7 this.me = DataLayer.dispatch( "me" ); 8 9 var objTime = DataLayer.dispatch( "timezones" ); 10 this.timezones = objTime.timezones; 11 this.isDaylightSaving = objTime.isDaylightSaving; 12 this.lastView = 0; 13 this.load(); 4 this.moduleName = 'expressoCalendar'; 5 this.me = DataLayer.dispatch( "me" ); 6 7 var objTime = DataLayer.dispatch( "timezones" ); 8 this.timezones = objTime.timezones; 9 this.isDaylightSaving = objTime.isDaylightSaving; 10 this.load(); 14 11 }, 15 12 16 13 load: function(){ 17 14 18 var defaultPreferences = { dateFormat: "dd/MM/yyyy",19 hourFormat: "HH:mm",20 defaultCalView: "month",21 defaultDuration: 30,22 backgroundColor: "36C",23 borderColor: "36C",24 fontColor: "fff",25 timezone: 'America/Sao_Paulo',26 weekStart: 'SUN'27 };28 29 var pref = DataLayer.get( "modulePreference:detail", ['and',[ "=", "user", this.me.id ], [ "=", "module", this.moduleName ]] );30 31 this.preferences = $.isEmptyObject( pref.values ) ? defaultPreferences : pref.values;32 this.preferenceIds = pref.ids;15 var defaultPreferences = { dateFormat: "dd/MM/yyyy", 16 hourFormat: "HH:mm", 17 defaultCalView: "month", 18 defaultDuration: 30, 19 backgroundColor: "36C", 20 borderColor: "36C", 21 fontColor: "fff", 22 timezone: 'America/Sao_Paulo', 23 weekStart: 'SUN' 24 }; 25 26 var pref = DataLayer.get( "modulePreference:detail", ['and',[ "=", "user", this.me.id ], [ "=", "module", this.moduleName ]] ); 27 28 this.preferences = DataLayer.merge( defaultPreferences, pref.values || {} ); 29 this.preferenceIds = pref.ids; 33 30 } 34 31 } … … 43 40 DataLayer.codec( "calendarSignature", "calendar", { 44 41 45 decoder: function(){ 46 47 48 49 }, 42 decoder: function(){}, 50 43 51 encoder: function( signatures ){ 52 53 return $.map( signatures, function( signature ){ 54 55 return { events: function( start, end, callback ){ 56 44 encoder: function( signatures ){ 45 46 return $.map( signatures, function( signature ){ 47 return { events: function( start, end, callback ){ 57 48 var viewKey = start + ':' + end; 58 59 if( Calendar.currentViewKey !== viewKey ) 60 { 49 if( Calendar.currentViewKey !== viewKey ){ 61 50 Calendar.currentViewKey = viewKey; 62 63 51 Calendar.currentView = DataLayer.get( 'schedulable:calendar', { start: start, end: end } ); 64 52 } 65 66 53 var view = Calendar.currentView[ signature.calendar.id ]; 67 68 54 callback( view && !view.hidden ? view : [] ); 69 70 55 }, 71 56 … … 83 68 Calendar = { 84 69 85 load: function(){ 86 87 this.signatures = DataLayer.get("calendarSignature", {filter: ['=', 'user', User.me.id], criteria: {deepness: 2}}); 88 //this.signatures = DataLayer.get( "calendarSignature", [ "=", "user", User.me.id ] ); 70 load: function(){ 71 this.lastView = 0; 72 this.signatures = DataLayer.get("calendarSignature", {filter: ['=', 'user', User.me.id], criteria: {deepness: 2}}); 89 73 90 var prevSources = this.sources; 91 92 this.sources = DataLayer.encode( "calendarSignature:calendar", this.signatures ); 93 94 if( prevSources ) 95 { 96 var newSources = DataLayer.diff( { 'diff': prevSources }, { 'diff': this.sources } ).diff; 97 98 for( var i = 0; i < newSources.length; i++ ) 99 $('#calendar').fullCalendar( 'addEventSource', newSources[i] ); 100 101 var removeSources = DataLayer.diff( { 'diff': newSources }, { 'diff': prevSources } ).diff; 102 103 for( var i = 0; i < removeSources.length; i++ ) 104 $('#calendar').fullCalendar( 'removeEventSource', removeSources[i] ); 105 } 106 107 this.calendarIds = [], this.signatureOf = {}, this.calendars = []; 108 109 for( var i = 0; i < this.signatures.length; i++ ) 110 { 111 this.signatureOf[ this.calendarIds[i] = ( this.calendars[ this.calendars.length ] = this.signatures[i].calendar ).id ] = this.signatures[i]; 112 } 113 this.rerenderView = function(){ 74 var prevSources = this.sources; 75 76 this.sources = DataLayer.encode( "calendarSignature:calendar", this.signatures ); 77 78 if( prevSources ){ 79 var newSources = DataLayer.diff( { 'diff': prevSources }, { 'diff': this.sources } ).diff; 80 81 for( var i = 0; i < newSources.length; i++ ) 82 $('#calendar').fullCalendar( 'addEventSource', newSources[i] ); 83 84 var removeSources = DataLayer.diff( { 'diff': newSources }, { 'diff': prevSources } ).diff; 85 86 for( var i = 0; i < removeSources.length; i++ ) 87 $('#calendar').fullCalendar( 'removeEventSource', removeSources[i] ); 88 } 89 90 this.calendarIds = [], this.signatureOf = {}, this.calendars = [], this.calendarOf= {}; 91 92 for( var i = 0; i < this.signatures.length; i++ ){ 93 this.signatureOf[ ( this.calendarOf[ this.calendarIds[i] = ( this.calendars[ this.calendars.length ] = this.signatures[i].calendar ).id ] = this.signatures[i].calendar ).id ] = this.signatures[i]; 94 } 95 114 96 delete Calendar.currentViewKey; 115 $('#calendar').fullCalendar( 'refetchEvents' ); 116 117 var calendarNotSelected = getNotSelectedCalendars(); 97 }, 98 99 rerenderView: function(force){ 100 101 if(force){ 102 delete Calendar.currentViewKey; 103 $('#calendar').fullCalendar( 'refetchEvents' ); 104 } 105 106 var calendarNotSelected = getSelectedCalendars( true ); 118 107 for(var i = 0; i < calendarNotSelected.length; i++) 119 108 if(!!Calendar.currentView[ calendarNotSelected[i] ]) 120 109 Calendar.currentView[ calendarNotSelected[i] ].hidden = true; 121 122 //Necessita ser chamado novamente para atualizar os eventos na tela para o usuário 123 //de acordo com as a agendas selecionadas 110 124 111 $('#calendar').fullCalendar( 'refetchEvents' ); 125 }; 126 127 delete Calendar.currentViewKey; 128 } 112 } 129 113 } 130 114 … … 132 116 load: function(){ 133 117 var eventsDay = DataLayer.get('alarm:schedulable',['=', 'date', new Date().toString("yyyy-MM-dd")]); 134 135 118 for(var i = 0; i < eventsDay.length; i++){ 136 119 this.addAlarm( eventsDay[i] ); … … 155 138 156 139 var res = $.map(evtObj, function( form ){ 140 157 141 var returns = []; 158 var cont = 0; 159 for (var name in form) {160 returns[ cont] = {142 143 for (var name in form) 144 returns[ returns.length ] = { 161 145 name: name, 162 146 user: User.me.id, 163 147 value: form[name], 164 module: User.moduleName 148 module: User.moduleName, 149 id: User.preferenceIds[ name ] || undefined 165 150 }; 166 if(typeof(User.preferenceIds[ name ]) != 'undefined') 167 returns[cont].id = User.preferenceIds[ name ]; 168 cont++; 169 } 170 return [returns]; 151 152 return [returns]; 171 153 }); 172 154 … … 175 157 176 158 encoder: function( evtObj ){ 177 var val = {}; 178 var id = {} 159 var val = {}, id = {}; 179 160 for (var i in evtObj){ 180 val[evtObj[i].name] = evtObj[i].value; 181 id[evtObj[i].name] = evtObj[i].id; 161 162 if( evtObj[i].value && evtObj[i].id ) 163 { 164 val[evtObj[i].name] = evtObj[i].value; 165 id[evtObj[i].name] = evtObj[i].id; 166 } 182 167 } 183 168 return {values: val,ids: id}; … … 192 177 isValidCalback = false; 193 178 194 179 /*Todo Melhorias serão feitas na API*/ 195 180 //DataLayer.poll( "schedulable" ); 196 181 … … 199 184 if( status === 'serverclient' ){ 200 185 DataLayer.commit( false, false, function(){ 201 Calendar.rerenderView(); 186 if(!!$('#calendar').fullCalendar) 187 Calendar.rerenderView(true); 202 188 //Atualiza a listagem de eventos apenas se estiver na aba de listagem 203 if($tabs.tabs('option' ,'selected') == 1) 204 pageselectCallback("", 0); 189 if((typeof($tabs) != "undefined") && $tabs.tabs('option' ,'selected') != 0) 190 pageselectCallback($('.events-list-win.active [name=keyword]').val(), 0); 191 205 192 }); 206 193 } … … 218 205 } 219 206 }); 220 isValidCalback = false;221 207 }else if(updateData == false){ 222 208 $.Zebra_Dialog('Erro ao importar evento(s)!', { … … 229 215 DataLayer.listen( "calendarSignature", function( status ){ 230 216 231 switch( status ) 232 { 233 case 'serverclient': DataLayer.commit( false, false, function( received ){ 234 235 delete Calendar.currentViewKey; 236 237 Calendar.load(); 238 refresh_calendars(); 239 }); 240 break; 241 case 'client': 242 break; 217 switch( status ){ 218 case 'serverclient': DataLayer.commit( false, false, function( received ){ 219 delete Calendar.currentViewKey; 220 Calendar.load(); 221 refresh_calendars(); 222 }); 223 break; 224 case 'client': 225 break; 243 226 } 244 227 }); … … 246 229 DataLayer.listen( "modulePreference", function( status ){ 247 230 248 switch( status ) 249 { 250 case 'serverclient': DataLayer.commit( false, false, function(){ 251 252 User.load(); 253 254 }); 255 break; 256 case 'client': 257 break; 258 } 259 260 }); 261 262 // DataLayer.listen( "calendar", function( status ){ 263 // 264 // if( status === 'serverclient' ) 265 // { 266 // DataLayer.commit( false, false, function(){ 267 // 268 // $('#calendar').fullCalendar( 'refetchEvents' ); 269 // 270 // }); 271 // } 272 // 273 // }); 231 switch( status ){ 232 case 'serverclient': DataLayer.commit( false, false, function(){ 233 User.load(); 234 }); 235 break; 236 case 'client': 237 break; 238 } 239 240 }); 274 241 275 242 DataLayer.listen( "alarm", function( created, updated, deleted ){ … … 277 244 }); 278 245 279 DataLayer.listen( "calendar", function( status, updateData ){ 280 281 if (updateData === false) 282 switch( status ) 283 { 284 case 'serverclient': DataLayer.commit( false, false, function(){ 246 /*DataLayer.listen( "calendar", function( status, updateData ){ 247 248 if (updateData === false) 249 switch( status ){ 250 case 'serverclient': DataLayer.commit( false, false, function(){ 285 251 286 287 252 Calendar.load(); 253 refresh_calendars(); 288 254 289 290 291 292 293 } 294 }); 255 }); 256 break; 257 case 'client': 258 break; 259 } 260 });*/ 295 261 296 262 DataLayer.codec( "calendarSignature", "configure", { … … 306 272 user: User.me.id, 307 273 calendar: { 308 id: DataLayer.get('calendarSignature', form.signature).calendar,274 id: Calendar.signatureOf[form.signature].calendar.id, 309 275 name: Encoder.htmlEncode(form.name), 310 276 description: Encoder.htmlEncode(form.description), … … 323 289 msgAlarm: Encoder.htmlEncode(form.msgAlarm), 324 290 calendarSignatureAlarms: $.map( form.alarmTime || [], function( alarmTime, i ){ 325 if(form.alarmId[i] === "") 326 return{type: form.alarmType[i], unit: form.alarmUnit[i], time: form.alarmTime[i]}; 327 else 328 return{type: form.alarmType[i], unit: form.alarmUnit[i], time: form.alarmTime[i], id: form.alarmId[i]}; 291 return (!!form.alarmId[i] ? 292 {type: form.alarmType[i], unit: form.alarmUnit[i], time: form.alarmTime[i], id: form.alarmId[i]} : 293 {type: form.alarmType[i], unit: form.alarmUnit[i], time: form.alarmTime[i]}); 329 294 }) 330 295 }; … … 335 300 }, 336 301 337 encoder: function( evtObj ){ 338 339 } 302 encoder: function( evtObj ){} 340 303 }); 341 304 342 305 DataLayer.codec( "alarm", "schedulable", { 343 306 344 decoder: function( evtObj ){ 345 return false; 346 }, 307 decoder: function( evtObj ){}, 347 308 348 309 encoder: function (evtObjt){ … … 352 313 353 314 var res = $.map(evtObjt, function( objEvent ){ 354 var timezone = User.timezones[objEvent.schedulable.timezone]; 355 var timeEvent = function(time, idCalendar){ 356 var data = new Date(); 357 data.setTime(time); 358 return dateFormat(setDateTimezone(data, timezone, true, idCalendar), User.preferences.hourFormat.replace(/m/g,'M')) 359 } 360 361 var dateEvent = function( time){ 362 return new Date( parseInt(time) ).setTimezoneOffset(timezone).toString( User.preferences.dateFormat); 363 } 364 365 var unitTemp = function(unit, time){ 366 switch (unit.toLowerCase()){ 367 case 'h': 368 if(parseInt(time) > 1) 369 return 'horas'; 370 return 'hora'; 371 case 'd': 372 if(parseInt(time) > 1) 373 return 'dias'; 374 return 'dia'; 375 case 'm': 376 if(parseInt(time) > 1) 377 return 'minutos'; 378 return 'minuto'; 379 } 380 } 381 315 316 var time = parseInt(objEvent.schedulable.startTime); 317 382 318 return{ 383 319 id: objEvent.id, 384 event_start: dateEvent(objEvent.schedulable.startTime),320 event_start: new Date( time ).setTimezoneOffset(Timezone.timezones[objEvent.schedulable.timezone]).toString( User.preferences.dateFormat), 385 321 sendTime: objEvent.sendTime, 386 322 schedulable: { 387 startTime: timeEvent(objEvent.schedulable.startTime),323 startTime: dateCalendar.formatDate(Timezone.setDateTimezone(new Date(time), objEvent.schedulable.timezone, true), User.preferences.hourFormat), 388 324 id: objEvent.schedulable.id, 389 325 summary: objEvent.schedulable.summary, 390 326 time: objEvent.time, 391 unit: unitTemp(objEvent.unit ,objEvent.time)327 unit: dateCalendar.timeunit[objEvent.unit.toLowerCase()] + ( parseInt(objEvent.time) > 1 ? 's' : '' ) 392 328 } 393 329 } … … 423 359 return( null ); 424 360 425 if(form.alarmId[i] === "") 426 return { type: form.alarmType[i],unit: form.alarmUnit[i], time: form.alarmTime[i] }; 427 else 428 return { type: form.alarmType[i], unit: form.alarmUnit[i], time: form.alarmTime[i], id: form.alarmId[i] }; 361 return !!form.alarmId[i] ? 362 { type: form.alarmType[i], unit: form.alarmUnit[i], time: form.alarmTime[i], id: form.alarmId[i] } : 363 { type: form.alarmType[i],unit: form.alarmUnit[i], time: form.alarmTime[i] }; 429 364 }) : [] 430 365 }] … … 442 377 evtObj = [ evtObj ]; 443 378 444 var pref = User.preferences; 445 var statusParticipants = []; 446 for (var i = 1; i <= 5; i++) 447 statusParticipants[i] = 0; 448 449 var statusObject = function(status){ 450 return{ 451 accepted: status[1], 452 tentative: status[2], 453 cancelled: status[3], 454 unanswered: status[4], 455 delegated: status[5] 456 } 457 }; 458 459 var isOrganizer = !!evtObj[0].id ? 0 : 1; 379 var statusParticipants = {}, 380 381 statusLabels = [ '', 'accepted', 'tentative', 'cancelled', 'unanswered', 'delegated' ]; 382 383 for( var i = 0; i < statusLabels.length; i++ ) 384 statusParticipants[ statusLabels[i] ] = 0; 385 386 var isOrganizer = 1; 460 387 461 388 var res = $.map(evtObj, function( objEvent ){ 462 389 463 var existsTimezone = false; 464 var participantInfo = {}, me = { uid: User.me.id, name: User.me.name, mail: User.me.mail}; 465 var timezone = ''; 466 if(objEvent.timezone){ 467 timezone = User.timezones[objEvent.timezone]; 468 existsTimezone = true; 469 }else{ 470 var tzId = pref.timezone; 471 timezone = User.timezones[ tzId ]; 472 } 473 474 var dateEvent = function( time, allDayEnd){ 475 476 return new Date( parseInt(time) - ((allDayEnd) ? 86400000 : 0) ).setTimezoneOffset(timezone).toString( User.preferences.dateFormat); } 477 478 var timeEvent = function(time, idCalendar){ 479 var data = new Date(); 480 data.setTime(time); 481 return dateFormat(setDateTimezone(data, timezone, existsTimezone, idCalendar), User.preferences.hourFormat.replace(/m/g,'M')) 482 } 483 var alarmParticipant = function(obj){ 484 var alarms = []; 485 for(var i = 0; i < obj.length; i++){ 486 alarms.push(DataLayer.get('alarm', obj[i])); 487 } 488 return alarms; 489 } 390 var participantInfo = {}, me = DataLayer.copy(User.me); 391 490 392 return { 491 492 493 494 495 496 497 498 499 500 timezones: User.timezones,501 startDate: dateEvent( objEvent.startTime, false),502 startHour: timeEvent(objEvent.startTime, objEvent.calendar),503 endDate: dateEvent( objEvent.endTime, (!!parseInt(objEvent.allDay)) ? true : false),504 endHour: timeEvent(objEvent.endTime, objEvent.calendar),505 393 "class": objEvent["class"], 394 id: objEvent.id, 395 location: objEvent.location, 396 category: objEvent.category, 397 calendars: Calendar.calendars, 398 calendar: objEvent.calendar, 399 summary: objEvent.summary, 400 description: objEvent.description, 401 timezone: objEvent.timezone, 402 timezones: Timezone.timezones, 403 startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 404 startHour: dateCalendar.formatDate(Timezone.setDateTimezone(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar), User.preferences.hourFormat), 405 endDate: new Date( parseInt(objEvent.endTime) - (!!parseInt(objEvent.allDay) ? 86400000 : 0) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 406 endHour: dateCalendar.formatDate(Timezone.setDateTimezone(new Date(parseInt(objEvent.endTime)), objEvent.timezone, objEvent.calendar), User.preferences.hourFormat), 407 allDay: !!parseInt( objEvent.allDay ), 506 408 // attachments: this.decode( "attachment:detail", form ), 507 409 attendee: $.map(objEvent.participants || [], function( participant, i ){ 508 410 509 411 var attend = DataLayer.get('participant', participant); 510 attend.user = DataLayer.get('user', attend.user) 412 attend.user = DataLayer.get('user', attend.user); 511 413 512 statusParticipants[attend.status]++; 513 514 var person = { uid: attend.id, 515 name: attend.user.name != 'false' ? attend.user.name : '', 516 mail: attend.user.mail, 517 isExternal: attend.isExternal 414 statusParticipants[ statusLabels[attend.status] ]++; 415 416 if( attend.user.id === me.id ){ 417 participantInfo = { 418 status : attend.status, 419 alarms : $.map(attend.alarms || [], function( alarm ){ 420 return DataLayer.get('alarm', alarm); 421 }) 518 422 }; 519 520 if( attend.user.id === me.uid ) 521 { 522 participantInfo.status = attend.status; 523 participantInfo.alarms = alarmParticipant(attend.alarms); 524 me.uid = attend.id; 525 } 526 if( parseInt( attend.isOrganizer ) ) 527 { 528 isOrganizer = ((attend.user.id == User.me.id) || (!!!attend.user)) ? 1 : 0; 529 participantInfo.organizer = person; 530 return(null); 531 } 532 533 return( person ); 534 535 }), 536 organizer: participantInfo.organizer || me, 537 alarms: participantInfo.alarms || [], 538 status: participantInfo.status || 1, 539 me: me 540 }; 541 }); 542 res[0].isOrganizer = isOrganizer; 543 res[0].statusParticipants = statusObject(statusParticipants); 544 if( !notArray ) 545 { 546 var dates = {}; 547 548 for (var i=0; i<res.length; i++) { 549 550 var startDate = Date.parseExact( res[i]['startDate'], User.preferences.dateFormat ); 551 var endDate = Date.parseExact( res[i]['endDate'], User.preferences.dateFormat ); 552 553 var counter = startDate.clone(); 554 555 while (counter.compareTo(startDate) == 0) { 556 557 if (!dates[counter.toString(User.preferences.dateFormat)]) 558 dates[counter.toString(User.preferences.dateFormat)] = { startDate:false, events:[] }; 559 if (!dates[counter.toString(User.preferences.dateFormat)].startDate) 560 dates[counter.toString(User.preferences.dateFormat)].startDate = counter.toString(User.preferences.dateFormat); 561 562 dates[counter.toString(User.preferences.dateFormat)].events.push(res[i]); 563 counter.addDays(-1); 564 } 565 } 566 567 res = { events_list: dates }; 568 } 423 me.id = attend.id; 424 }; 425 426 var person = { 427 id: attend.id, 428 name: attend.user.name != 'false' ? attend.user.name : '', 429 mail: attend.user.mail, 430 isExternal: attend.isExternal 431 }; 432 433 if( !!parseInt(attend.isOrganizer )){ 434 isOrganizer = ((attend.user.id == User.me.id) || (!!!attend.user)) ? 1 : 0; 435 participantInfo.organizer = person; 436 return(null); 437 }; 438 439 return (person); 440 }), 441 organizer: participantInfo.organizer || me, 442 alarms: participantInfo.alarms || [], 443 status: participantInfo.status || 1, 444 me: me, 445 isOrganizer: isOrganizer, 446 statusParticipants: statusParticipants 447 }; 448 }); 569 449 570 450 return notArray ? res[0] : res; … … 577 457 578 458 decoder: function( evtObj ){ 579 459 580 460 Encoder.EncodeType = "entity"; 581 461 … … 586 466 587 467 var res = $.map(evtObj, function( form ){ 588 var tzId = ''; 589 if(form.timezone == ''){ 590 calendar = DataLayer.get('calendar', form.calendar); 591 tzId = calendar.timezone || User.preferences.timezone; 592 }else 593 tzId = form.timezone; 594 timezone = User.timezones[ tzId ]; 595 596 opposites = { '-':'+', '+':'-' }, 597 598 formatString = ( typeof form.allDay !== "undefined" && !!form.allDay )? pref.dateFormat+" HH:mm" : pref.dateFormat + " " + pref.hourFormat; 468 469 var tzId = form.timezone || Calendar.calendarOf[form.calendar].timezone || User.preferences.timezone, 470 471 formatString = ( typeof form.allDay !== "undefined" && !!form.allDay )? pref.dateFormat+" HH:mm" : pref.dateFormat + " " + pref.hourFormat, 599 472 600 473 participants = []; 601 602 //if( form.idEvent )603 // participants = DataLayer.get( "participant:detail", [ "=", "schedulable", form.idEvent ] );604 605 var spaces = function(hours){606 return hours.replace(/\s$/, "");607 };608 609 var startDate = Date.parseExact( !!form.allDay ? form.startDate+ " 00:00": form.startDate + " " + spaces(form.startHour) , formatString );610 startDate = getDateUTC(startDate, timezone);611 612 var endDate = Date.parseExact( !!form.allDay ? form.endDate + " 00:00": form.endDate + " " + spaces(form.endHour), formatString );613 endDate = getDateUTC(endDate, timezone);614 474 return { 615 475 "class": form["class"], 616 startTime: startDate.getTime(),617 endTime: !!form.allDay ? (new Date(endDate.getTime() + (86400000)).getTime()) : endDate.getTime(),476 startTime: Timezone.getDateUTC(Date.parseExact(form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ), tzId).getTime(), 477 endTime: parseInt(Timezone.getDateUTC(Date.parseExact(form.endDate + ( !!form.allDay ? " 00:00": " "+$.trim(form.endHour)), formatString ), tzId).getTime()) + (!!form.allDay ? 86400000 : 0) , 618 478 allDay: ( !!form.allDay ? 1 : 0 ), 619 479 id: form.idEvent, … … 633 493 634 494 if( participant.user === User.me.id ){ 635 if(!!form.idEvent ) 636 participant.id = attendee; 637 participant.isOrganizer = ( !i ? 1 : 0 ); 638 var obj = form.alarmTime ? form : pref; 639 participant.alarms = $.map( obj.alarmTime || [], function( alarmTime, i ){ 640 641 if( alarmTime === "" ) 642 return( null ); 643 644 if(obj.alarmId[i] === "") 645 return { type: obj.alarmType[i],unit: obj.alarmUnit[i], time: obj.alarmTime[i] }; 646 else 647 return { type: obj.alarmType[i], unit: obj.alarmUnit[i], time: obj.alarmTime[i], id: obj.alarmId[i] }; 648 }); 649 participant.status = form.status; 495 return DataLayer.merge({ 496 isOrganizer: ( !i ? 1 : 0 ), 497 alarms: participant.alarms = $.map( form.alarmTime || [], function( alarmTime, i ){ 498 if( alarmTime === "" ) 499 return( null ); 500 return !!form.alarmId[i] ? { type: form.alarmType[i], unit: form.alarmUnit[i], time: form.alarmTime[i], id: form.alarmId[i] }: 501 { type: form.alarmType[i],unit: form.alarmUnit[i], time: form.alarmTime[i] }; 502 }), 503 status: form.status 504 }, !!form.idEvent ? {id: attendee} : {user: participant.user}); 650 505 }else{ 651 participant.id = attendee; 652 participant.isOrganizer = ( !i ? 1 : 0 ); 653 if(!!parseInt(form.attendeeType[i])) 654 participant.isExternal= 1; 655 } 656 if( participants[ attendee ] ){ 657 participant.id = participants[ attendee ].id; 658 } 659 return( participant ); 506 return { 507 id: attendee, 508 isOrganizer: ( !i ? 1 : 0 ), 509 isExternal: !!parseInt(form.attendeeType[i]) ? 1 : 0 510 }; 511 }; 660 512 }) 661 513 }; … … 666 518 667 519 encoder: function( evtObj ){ 520 521 if(!(!!evtObj)) 522 return undefined; 668 523 669 524 var notArray = false; … … 674 529 var pref = User.preferences; 675 530 676 var res = $.map(evtObj, function( objEvent ){ 677 678 var participantInfo = {}, me = { uid: User.me.id, name: User.me.name }; 679 680 var timezone = User.timezones[ (!!objEvent && !!objEvent.timezone) ? objEvent.timezone : User.preferences.timezone ]; 681 682 var dateEvent = function( time){ 683 return new Date( parseInt(time) ).setTimezoneOffset( User.timezones[ pref.timezone] ).toString( User.preferences.dateFormat); } 684 685 var timeEvent = function(time){ 686 if(time){ 687 var data = new Date(); 688 data.setTime(time); 689 data = getDateTimezone(data, timezone); 690 return dateFormat(data, User.preferences.hourFormat.replace(/m/g,'M')) 691 } 692 } 693 if(!!objEvent) 694 return { 695 "class": objEvent["class"], 696 id: objEvent.id, 697 location: objEvent.location, 698 category: objEvent.category, 699 calendars: Calendar.calendars, 700 calendar: objEvent.calendar, 701 summary: Encoder.htmlEncode(objEvent.summary), 702 description: objEvent.description, 703 timezone: objEvent.timezone, 704 timezones: User.timezones, 705 startDate: dateEvent( objEvent.startTime ), 706 startHour: timeEvent(objEvent.startTime ), 707 endDate: dateEvent( objEvent.endTime ), 708 endHour: timeEvent(objEvent.endTime), 709 allDay: !!parseInt( objEvent.allDay ), 710 // attachments: this.decode( "attachment:detail", form ), 711 attendee: $.map(objEvent.participants || [], function( participant ){ 712 713 participant = DataLayer.get( "participant", participant ); 714 715 var user = DataLayer.get( "user", participant.user.id || participant.user ); 716 717 var person = { uid: user.id, 718 name: user.name }; 719 720 if( person.uid === me.uid ) 721 { 722 participantInfo.status = participant.status; 723 participantInfo.alarms = participant.alarms; 724 } 725 726 if( parseInt( participant.isOrganizer ) ) 727 { 728 participantInfo.organizer = person; 729 return(null); 730 } 731 732 return( person ); 733 734 }), 735 organizer: participantInfo.organizer || me, 736 alarms: participantInfo.alarms || [], 737 status: participantInfo.status || 1, 738 me: me 739 }; 740 }); 741 742 if( !notArray ) 743 { 531 var res = DataLayer.encode('schedulable:preview', evtObj); 532 533 if( !notArray ){ 744 534 var dates = {}; 745 535 746 for (var i=0; i <res.length; i++) {536 for (var i=0; i < res.length; i++) { 747 537 748 538 var startDate = Date.parseExact( res[i]['startDate'], User.preferences.dateFormat ); … … 754 544 755 545 if (!dates[counter.toString(User.preferences.dateFormat)]) 756 dates[counter.toString(User.preferences.dateFormat)] = { startDate:false, events:[] };546 dates[counter.toString(User.preferences.dateFormat)] = { startDate:false, events:[] }; 757 547 if (!dates[counter.toString(User.preferences.dateFormat)].startDate) 758 dates[counter.toString(User.preferences.dateFormat)].startDate = counter.toString(User.preferences.dateFormat);548 dates[counter.toString(User.preferences.dateFormat)].startDate = counter.toString(User.preferences.dateFormat); 759 549 760 550 dates[counter.toString(User.preferences.dateFormat)].events.push(res[i]); … … 776 566 encoder: function( participants ){ 777 567 778 var result = {}; 779 780 for( var i = 0; i< participants.length; i++ ) 781 { 782 result[ participants[i].user.id || participants[i].user ] = participants[i]; 783 } 784 785 return( result ); 568 var result = {}; 569 for( var i = 0; i< participants.length; i++ ){ 570 result[ participants[i].user.id || participants[i].user ] = participants[i]; 571 } 572 return( result ); 786 573 } 787 574 }); … … 791 578 encoder: function( calendars ){ 792 579 793 var result = { my_calendars: [], others_calendars: [] }; 794 795 for( var i = 0; i < calendars.length; i++ ) 796 { 797 if( Calendar.signatureOf[ calendars[i].id ].isOwner ) 798 result.my_calendars.push( calendars[i] ); 799 else 800 result.others_calendars.push( calendars[i] ); 801 } 802 803 return { agendas_usuario: result }; 580 var result = { my_calendars: [], others_calendars: [] }; 581 582 for( var i = 0; i < calendars.length; i++ ) 583 { 584 !!Calendar.signatureOf[ calendars[i].id ].isOwner ? 585 result.my_calendars.push( calendars[i] ) : 586 result.others_calendars.push( calendars[i] ); 587 } 588 589 return { agendas_usuario: result }; 804 590 805 591 } … … 927 713 928 714 var calendar = DataLayer.get('calendar', evt.calendar); 929 930 var timesEvent = function(time, timezone){ 931 return getDateTimezone(time, User.timezones[timezone], false ) 932 }; 933 715 934 716 grouped[ evt.calendar ].push( { id: evt.URI || evt.id, 935 717 title: Encoder.htmlDecode(evt.summary), 936 start: timesEvent(new Date( parseInt( evt.startTime )), calendar.timezone),937 end: !!parseInt(evt.allDay) ? timesEvent(new Date( (parseInt( evt.endTime ) - 86400000) )) : timesEvent(new Date( parseInt( evt.endTime ) ), calendar.timezone),938 allDay: !!parseInt( evt.allDay ) } );718 start: Timezone.getDateTimezone(new Date(parseInt( evt.startTime )), calendar.timezone, false), 719 end: Timezone.getDateTimezone(new Date(parseInt( evt.endTime ) - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, false ), 720 allDay: parseInt( evt.allDay ) } ); 939 721 }); 940 722 … … 944 726 criteria: function( filter ){ 945 727 946 if( $.type(filter.start) !== 'date' )947 948 if( $.type(filter.end) !== 'date' )949 950 951 return { filter: ["AND",952 953 954 955 956 957 ],728 if( $.type(filter.start) !== 'date' ) 729 filter.start = new Date( filter.start * 1000 ); 730 if( $.type(filter.end) !== 'date' ) 731 filter.end = new Date( filter.end * 1000 ); 732 733 return { filter: ["AND", 734 735 [ ">=", "rangeStart", filter.start.toString( "dd-MM-yyyy" ) ], 736 [ "<=", "rangeEnd", filter.end.toString( "dd-MM-yyyy" ) ], 737 [ "IN", "calendar", Calendar.calendarIds ] 738 739 ], 958 740 criteria: { deepness: 2 } } 959 741 } … … 963 745 DataLayer.codec( "preference", "detail", { 964 746 965 decoder:function( pref ){ 966 967 var res = []; 968 969 pref.defaultAlarm = $.map( pref.alarmTime || [], function( alarmTime, i ){ 970 971 return { type: pref.alarmType[i], 972 time: alarmTime, 973 unit: pref.alarmUnit[i] }; 974 975 }); 976 977 $.each( pref, function( i, el ){ 978 979 res[ res.length ] = { name: i, value: el }; 980 981 }); 982 983 return( res ); 747 decoder:function( pref ){ 748 749 var res = []; 750 751 pref.defaultAlarm = $.map( pref.alarmTime || [], function( alarmTime, i ){ 752 753 return { type: pref.alarmType[i], 754 time: alarmTime, 755 unit: pref.alarmUnit[i] }; 756 }); 757 758 $.each( pref, function( i, el ){ 759 760 res[ res.length ] = { name: i, value: el }; 761 762 }); 763 764 return( res ); 984 765 985 }, 986 987 encoder:function( pref ){ 988 989 return( pref ); 990 991 } 766 }, 767 768 encoder:function( pref ){ 769 return( pref ); 770 } 992 771 993 772 }); … … 995 774 DataLayer.codec( "schedulable", "export", { 996 775 997 decoder: function(){ 998 999 1000 1001 }, 776 decoder: function(){}, 1002 777 1003 encoder: function( signatures ){ 1004 1005 1006 1007 }, 778 encoder: function( signatures ){}, 1008 779 1009 criteria: function( filter ){ 1010 1011 if( isCal = filter && filter.calendar ) 1012 filter = filter.calendar; 1013 1014 return { 1015 1016 filter: filter ? [ "=", ( isCal ? "calendar" : "id" ), filter ] : false, 1017 1018 criteria: { format: 'iCal', deepness: 2 } 1019 }; 1020 } 1021 1022 780 criteria: function( filter ){ 781 782 if( isCal = filter && filter.calendar ) 783 filter = filter.calendar; 784 return { 785 filter: filter ? [ "=", ( isCal ? "calendar" : "id" ), filter ] : false, 786 criteria: { format: 'iCal', deepness: 2 } 787 }; 788 } 1023 789 }); 1024 790 -
trunk/prototype/modules/calendar/js/helpers.js
r5392 r5409 1 /*2 Todo Otimizar caulculo de timezone3 Objeto Date.toString() retorna a data com inserção do offset4 Objeto Date.getTime() retorna a data sem inserção do offset5 */6 function checkTimezoneCalendar(idCalendar, timezone){7 var obj = DataLayer.get('calendar', idCalendar);8 if(User.timezones[obj.timezone] == timezone)9 return true;10 else11 return false;12 }13 14 function setDateTimezone(date, timezone, existsTimezone, idCalendar){15 16 if(!existsTimezone)17 return date;18 if(idCalendar)19 if(checkTimezoneCalendar(idCalendar, timezone))20 return getDateTimezone(date, timezone, false);21 22 var timezoneOffset = '';23 if(User.isDaylightSaving == '1')24 timezoneOffset = parseInt(timezone.substr(2)) - 100;25 else26 timezoneOffset = parseInt(timezone.substr(2));27 28 var timeCurrent = parseInt((date.getTimezoneOffset()/60)+'00')29 var times = 0;30 if(timezone.charAt(0) != date.getUTCOffset().charAt(0))31 times = timeCurrent + timezoneOffset ;32 else33 times = timezoneOffset - timeCurrent ;34 35 if(times == 0)36 return date;37 else if(times > 0)38 return date.setTimezoneOffset('-0'+(times));39 else40 return date.setTimezoneOffset('+0'+((times * -1)));41 }42 43 44 function getDateTimezone(date, timezone, recursive){45 if(!timezone)46 return date;47 48 var times = 0;49 currentTimezone = parseInt((date.getTimezoneOffset()/60)+'00');50 var timezoneOffset = 0;51 if(User.isDaylightSaving == '1')52 timezoneOffset = parseInt(timezone.substr(2)) - 100;53 else54 timezoneOffset = parseInt(timezone.substr(2));55 56 var times = timezoneOffset - currentTimezone;57 if(times == 0){58 if((timezone.charAt(0) == date.getUTCOffset().charAt(0)) && recursive)59 return date.setTimezoneOffset( timezone.charAt(0)+'0'+(currentTimezone));60 else61 return date;62 }else if (times > 0)63 return date.setTimezoneOffset('+0'+(times));64 else{65 return date.setTimezoneOffset('-0'+((times * -1) + (currentTimezone * 2)));66 }67 }68 69 function getDateUTC(date, timezone){70 currentTimezone = parseInt(timezone.substr(2));71 if(User.isDaylightSaving == '1')72 currentTimezone = currentTimezone - 100;73 return(date.setTimezoneOffset(timezone.charAt(0)+'0'+currentTimezone));74 }75 76 function createDateTimezone(date, timezone, idCalendar){77 78 if(checkTimezoneCalendar(idCalendar, timezone))79 return getDateTimezone(date, timezone, true);80 81 var times = 0;82 83 if(timezone.charAt(0) == '+')84 times = parseInt(timezone.substr(2)) - parseInt((date.getTimezoneOffset()/60)+'00');85 else86 times = (parseInt(timezone.substr(2)) + parseInt((date.getTimezoneOffset()/60)+'00')) * (-1);87 if(times == 0)88 return date.setTimezoneOffset('0000');89 else if (times > 0)90 return date.setTimezoneOffset('+0'+times);91 else92 return date.setTimezoneOffset('-0'+(times * -1));93 }94 95 function defaultToAmPm( Hour )96 {97 var HourAmPm = Hour.split(":");98 if(HourAmPm[0] == 0)99 HourAmPm[0] = 12;100 if(HourAmPm[0] < 12){101 Hour += (Hour.length == 5) ? " am" : "";102 }else if(HourAmPm[0] == 12){103 Hour += (Hour.length == 5) ? " pm" : "";104 }else105 Hour = "0"+(HourAmPm[0]-12)+":"+HourAmPm[1]+ ((Hour.length == 5) ? " pm" : "");106 return Hour;107 }108 109 1 function validDateEvent(){ 110 2 var start_date = $(".new-event-win.active .start-date").val(); … … 112 4 var start_time = $(".new-event-win.active .start-time").val(); 113 5 var end_time = $(".new-event-win.active .end-time").val(); 114 var isAllDay = $('.new-event-win.active input[name="allDay"]').is(':checked');6 var isAllDay = $('.new-event-win.active input[name="allDay"]').is(':checked'); 115 7 116 8 if(start_date == "") … … 124 16 125 17 var formatString = (isAllDay)? User.preferences.dateFormat+" HH:mm" : User.preferences.dateFormat + " " + User.preferences.hourFormat; 126 127 var spaces = function(hours){ 128 return hours.replace(/\s$/, ""); 129 }; 130 131 var startDate = Date.parseExact( isAllDay ? start_date+ " 00:00": start_date + " " + spaces(start_time) , formatString ); 132 var endDate = Date.parseExact( isAllDay ? end_date+ " 00:00": end_date + " " + spaces(end_time) , formatString ); 18 19 var startDate = Date.parseExact( isAllDay ? start_date+ " 00:00": start_date + " " + $.trim(start_time) , formatString ); 20 var endDate = Date.parseExact( isAllDay ? end_date+ " 00:00": end_date + " " + $.trim(end_time) , formatString ); 133 21 134 22 if(startDate == null || startDate.getTime() < 0 ) … … 138 26 139 27 if((endDate.compareTo(startDate) != 1) && !((endDate.compareTo(startDate) == 0) && (isAllDay))){ 140 if(start_date == end_date){ 141 if(end_time == start_time) 142 return 'Hora inicial igual a final'; 143 else 144 return 'Hora final menor que a inicial'; 145 146 }else 147 return 'Data final menor que a inicial'; 28 return (start_date == end_date) ? 29 ((end_time == start_time) ? 'Hora inicial igual a final' : 'Hora final menor que a inicial') : 30 'Data final menor que a inicial'; 148 31 } 149 32 return false; … … 173 56 174 57 if(typeof(objEvent.id) == 'undefined'){ 175 objEvent.alarms = Calendar.signatureOf[ !!User.preferences.defaultCalendar ? User.preferences.defaultCalendar : Calendar.calendarIds[0]].defaultAlarms;58 objEvent.alarms = Calendar.signatureOf[User.preferences.defaultCalendar || Calendar.calendarIds[0]].defaultAlarms || false; 176 59 objEvent.useAlarmDefault = 1; 177 60 } … … 259 142 $(this).addClass('hidden'); 260 143 $('.calendar-addevent-details-txt-timezone').removeClass('hidden'); 261 262 144 e.preventDefault(); 263 145 }); … … 267 149 if( id = $(this).parent().find('input[name="alarmId[]"]').val()) 268 150 DataLayer.remove('alarm', id); 269 if( $(this).parent().remove().find('li').is(':empty') ) { 270 //alert('nao tem'); 271 } 151 $(this).parent().remove().find('li').is(':empty'); 272 152 }); 273 153 … … 277 157 /*Adicionar alarms padrões, quando alterado a agenda do usuário*/ 278 158 UI.dialogs.addEvent.find('select[name="calendar"]').change(function(){ 279 if((typeof($('input[name = "idEvent"]').val()) == 'undefined') || ( $('input[name = "idEvent"]').val() == '')) {159 if((typeof($('input[name = "idEvent"]').val()) == 'undefined') || (!!!$('input[name = "idEvent"]').val())) { 280 160 $('input[name = "isDefaultAlarm[]"]').parent().remove(); 281 161 UI.dialogs.addEvent.find('input[name="defaultAlarm"]').parent().removeClass('hidden'); … … 285 165 var li_attach = DataLayer.render(path+'templates/alarms_add_itemlist.ejs', {alarm:calendarSelected}); 286 166 jQuery('.event-alarms-list').append(li_attach).find('.button.remove').button({text:false, icons:{primary:'ui-icon-close'}}).click(function(el) { 287 if( $(this).parent().remove().find('li').is(':empty') ) { 288 //alert('nao tem'); 289 } 290 167 $(this).parent().remove().find('li').is(':empty'); 291 168 }); 292 169 }else{ … … 308 185 if( id = $(this).parent().find('input[name="alarmId[]"]').val()) 309 186 DataLayer.remove('alarm', id); 310 if( $(this).parent().remove().find('li').is(':empty') ) { 311 //alert('nao tem'); 312 } 313 187 $(this).parent().remove().find('li').is(':empty') 314 188 }); 315 189 } … … 320 194 /* Checkbox allday */ 321 195 UI.dialogs.addEvent.find('input[name="allDay"]').click(function(){ 322 if($(this).attr("checked")) 323 UI.dialogs.addEvent.find('.start-time, .end-time').addClass('hidden'); 324 else 196 $(this).attr("checked") ? 197 UI.dialogs.addEvent.find('.start-time, .end-time').addClass('hidden') : 325 198 UI.dialogs.addEvent.find('.start-time, .end-time').removeClass('hidden'); 326 199 }); … … 342 215 UI.dialogs.addEvent.find(".end-time, .start-time").mask("99:99 {}", { 343 216 completed:function(){ 344 $(this).val(d efaultToAmPm($(this).val()));217 $(this).val(date.Calendar.defaultToAmPm($(this).val())); 345 218 $(this).timepicker("refresh"); 346 219 $(this).val($(this).val().replace(/[\.]/gi, "")); … … 349 222 } 350 223 UI.dialogs.addEvent.find(".number").numeric(); 351 if(User.preferences.dateFormat.indexOf('-') > 0) 352 UI.dialogs.addEvent.find(".date").mask("99-99-9999"); 353 else 224 User.preferences.dateFormat.indexOf('-') > 0 ? 225 UI.dialogs.addEvent.find(".date").mask("99-99-9999") : 354 226 UI.dialogs.addEvent.find(".date").mask("99/99/9999"); 355 227 … … 415 287 416 288 jQuery('.event-alarms-list').append(li_attach).find('.button.remove').button({text:false, icons:{primary:'ui-icon-close'}}).click(function(el) { 417 if( $(this).parent().remove().find('li').is(':empty') ) { 418 //alert('nao tem'); 419 } 420 421 }); 422 289 $(this).parent().remove().find('li').is(':empty') 290 }); 423 291 // valicacao de campos numericos 424 292 $('.number').numeric(); … … 496 364 newAttendeeEmail = currentTip.find('input[name="mail"]').val(); 497 365 498 var isValidMail = newAttendeeEmail.match(/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/); 499 if (!isValidMail) { 366 if (!(!!newAttendeeEmail.match(/^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/))) { 500 367 currentTip.find('.messages').removeClass('hidden').find('.message label').html('Email inválido.'); 501 368 return false; … … 522 389 $('.qtip-active .button').button() 523 390 .filter('.save').click(function(event, ui) { 524 if (saveContact()) {391 if(saveContact()) 525 392 lastEditAttendeeToolTip.qtip("destroy"); 526 } else {393 else 527 394 return false; 528 }529 395 }).end() 530 396 .filter('.cancel').click(function(event, ui) { … … 538 404 $('.qtip-active input').keydown(function(event) { 539 405 if (event.keyCode == '13') { 540 if (saveContact()) {406 if (saveContact()) 541 407 lastEditAttendeeToolTip.qtip("destroy"); 542 } 543 408 544 409 lastEditAttendeeToolTip.qtip("destroy"); 545 410 event.preventDefault(); … … 549 414 .filter('[name="mail"]').Watermark("informe o email do contato"); 550 415 } 551 552 416 553 417 /** … … 726 590 }); 727 591 728 592 /* 729 593 UI.dialogs.addEvent.find('.attendees-list li').hover( 730 594 function () { … … 735 599 } 736 600 ); 737 601 */ 738 602 //$('.block-add-attendee .search-result-list').selectable(); 739 603 … … 1010 874 } 1011 875 1012 function get NotSelectedCalendars(){876 function getSelectedCalendars( reverse ){ 1013 877 var selecteds = {}; 1014 878 var cont = 0; … … 1016 880 jQuery(".my-calendars .calendar-view").each(function(i, obj) { 1017 881 var check_box = obj; 1018 if(!check_box.checked) { 1019 selecteds[cont] = obj.value; 1020 cont++; 1021 }; 1022 }); 1023 }); 1024 if (!cont) 1025 return false; 1026 1027 selecteds.length = cont; 1028 return $.makeArray( selecteds ); 1029 } 1030 1031 function getSelectedCalendars(){ 1032 var selecteds = {}; 1033 var cont = 0; 1034 jQuery(function() { 1035 jQuery(".my-calendars .calendar-view").each(function(i, obj) { 1036 var check_box = obj; 1037 if(check_box.checked) { 882 if( reverse ? !check_box.checked : check_box.checked ) { 1038 883 selecteds[cont] = obj.value; 1039 884 cont++; … … 1080 925 if(idCalendar == User.preferences.defaultCalendar) 1081 926 DataLayer.remove( 'modulePreference', User.preferenceIds['defaultCalendar']); 927 } 1082 928 $('.positionHelper').css('display', 'none'); 1083 }else{ 1084 $('.positionHelper').css('display', 'none'); 1085 } 929 1086 930 } 1087 931 }); … … 1309 1153 case 'basicDay': 1310 1154 var date = new Date().add({days: page_index}); 1311 return ( weekOfDay(date.getDay()))+", "+(date.toString('dd MMM yyyy'));1155 return (dateCalendar.dayNames[date.getDay()])+", "+(date.toString('dd MMM yyyy')); 1312 1156 case 'agendaWeek': 1313 1157 case 'week': 1314 var dateStart = new Date().moveToDayOfWeek(da yOfWeek(User.preferences.weekDefault));1158 var dateStart = new Date().moveToDayOfWeek(dateCalendar.dayOfWeek[User.preferences.weekStart]); 1315 1159 dateStart.add({days: (7 * page_index)}); 1316 var dateEnd = new Date().moveToDayOfWeek(da yOfWeek(User.preferences.weekDefault));1160 var dateEnd = new Date().moveToDayOfWeek(dateCalendar.dayOfWeek[User.preferences.weekStart]); 1317 1161 dateEnd.add({days: (page_index * 7)+7}); 1318 1162 if(dateStart.toString('MM') != dateEnd.toString('MM')) 1319 return dateStart.toString('dd')+' de '+ sortMonthOfNumber(dateStart.getMonth())+' a '+dateEnd.toString('dd')+' de '+monthOfNumber(dateEnd.getMonth())+' - '+dateEnd.toString('yyyy');1320 return +dateStart.toString("dd")+" a "+dateEnd.toString("dd")+" de "+ monthOfNumber(dateEnd.getMonth())+" - "+dateEnd.toString('yyyy');1163 return dateStart.toString('dd')+' de '+dateCalendar.monthNamesShort[dateStart.getMonth()]+' a '+dateEnd.toString('dd')+' de '+dateCalendar.monthNames[dateEnd.getMonth()]+' - '+dateEnd.toString('yyyy'); 1164 return +dateStart.toString("dd")+" a "+dateEnd.toString("dd")+" de "+dateCalendar.monthNames[dateEnd.getMonth()]+" - "+dateEnd.toString('yyyy'); 1321 1165 case 'month': 1322 1166 var date = new Date().add({months: page_index}) 1323 return monthOfNumber(date.getMonth())+" "+date.toString("yyyy");1167 return dateCalendar.monthNames[date.getMonth()]+" "+date.toString("yyyy"); 1324 1168 case 'year': 1325 1169 var date = new Date().add({years: page_index}); … … 1405 1249 1406 1250 function mountCriteriaList(view, page_index, calerdars_selecteds){ 1251 var criteria = {deepness: 2, order: 'startTime'} 1407 1252 switch (view){ 1408 1253 case 'basicDay': 1409 1254 case 'day': 1410 return {filter: ['AND', ['IN', 'calendar', calerdars_selecteds], ['=', 'rangeEnd', new Date().add({days: page_index}).toString("yyyy-MM-dd")]], criteria: {order: 'startTime'}};1255 return {filter: ['AND', ['IN', 'calendar', calerdars_selecteds], ['=', 'rangeEnd', new Date().add({days: page_index}).toString("yyyy-MM-dd")]], criteria: criteria}; 1411 1256 case 'agendaWeek': 1412 1257 case 'week': 1413 var dateStart = new Date().moveToDayOfWeek(da yOfWeek(User.preferences.weekDefault));1414 var dateEnd = new Date().moveToDayOfWeek(da yOfWeek(User.preferences.weekDefault));1415 return {filter: ['AND', ['IN', 'calendar', calerdars_selecteds], ['AND',['>=', 'rangeEnd', dateStart.add({days: (7 * page_index)}).toString("yyyy-MM-dd")], ['<=', 'rangeEnd', dateEnd.add({days: (7 * page_index)+7}).toString("yyyy-MM-dd")]]], criteria: {order: 'startTime'}};1258 var dateStart = new Date().moveToDayOfWeek(dateCalendar.dayOfWeek[User.preferences.weekDefault]); 1259 var dateEnd = new Date().moveToDayOfWeek(dateCalendar.dayOfWeek[User.preferences.weekDefault]); 1260 return {filter: ['AND', ['IN', 'calendar', calerdars_selecteds], ['AND',['>=', 'rangeEnd', dateStart.add({days: (7 * page_index)}).toString("yyyy-MM-dd")], ['<=', 'rangeEnd', dateEnd.add({days: (7 * page_index)+7}).toString("yyyy-MM-dd")]]], criteria: criteria}; 1416 1261 case 'month': 1417 1262 var date = new Date().add({months: page_index}) 1418 return {filter: ['AND',['IN', 'calendar', calerdars_selecteds], ['AND',['>=', 'rangeEnd', date.moveToFirstDayOfMonth().toString("yyyy-MM-dd")], ['<=', 'rangeEnd', date.moveToLastDayOfMonth().toString("yyyy-MM-dd")]]], criteria: {order: 'startTime'}};1263 return {filter: ['AND',['IN', 'calendar', calerdars_selecteds], ['AND',['>=', 'rangeEnd', date.moveToFirstDayOfMonth().toString("yyyy-MM-dd")], ['<=', 'rangeEnd', date.moveToLastDayOfMonth().toString("yyyy-MM-dd")]]], criteria: criteria}; 1419 1264 case 'year': 1420 1265 var dateStart = new Date().add({years: page_index}); … … 1424 1269 if(dateEnd.getMonth() != 11) 1425 1270 dateEnd.moveToMonth(11) 1426 return {filter: ['AND', ['IN', 'calendar', calerdars_selecteds], ['AND',['>=', 'rangeEnd', dateStart.moveToFirstDayOfMonth().toString("yyyy-MM-dd")], ['<=', 'rangeEnd', dateEnd.moveToLastDayOfMonth().toString("yyyy-MM-dd")]]], criteria: {order: 'startTime'}};1271 return {filter: ['AND', ['IN', 'calendar', calerdars_selecteds], ['AND',['>=', 'rangeEnd', dateStart.moveToFirstDayOfMonth().toString("yyyy-MM-dd")], ['<=', 'rangeEnd', dateEnd.moveToLastDayOfMonth().toString("yyyy-MM-dd")]]], criteria: criteria}; 1427 1272 } 1428 1273 } … … 1442 1287 criteria = mountCriteriaList(!!view ? view : User.preferences.defaultCalView, page_index, selecteds) 1443 1288 else 1444 criteria = {filter: ['AND', ['OR', ["i*", "summary", keyword], ["i*", "description", keyword]], ['IN', 'calendar', selecteds]], criteria: {order: 'startTime', offset: (25 * page_index), limit: (((25 * page_index) + 25) + 1) }};1289 criteria = {filter: ['AND', ['OR', ["i*", "summary", keyword], ["i*", "description", keyword]], ['IN', 'calendar', selecteds]], criteria: {order: 'startTime', offset: (25 * page_index), limit: (((25 * page_index) + 25) + 1), deepness: 2}}; 1445 1290 var results = DataLayer.get('schedulable:detail', criteria); 1446 1291 keyword = ( keyword || '' ).replace( /\s+/g, "_" ); … … 1555 1400 }); 1556 1401 } 1557 1558 function dayOfWeek(day) {1559 switch (day) {1560 case 'SUN':1561 return 0;1562 break;1563 case 'MON':1564 return 1;1565 break;1566 case 'TUE':1567 return 2;1568 break;1569 case 'WED':1570 return 3;1571 break;1572 case 'THU':1573 return 4;1574 break;1575 case 'FRI':1576 return 5;1577 break;1578 case 'SAT':1579 return 6;1580 break;1581 default:1582 return false;1583 break;1584 }1585 }1586 1587 function weekOfDay(week) {1588 switch (week) {1589 case 0:1590 return 'Domingo';1591 case 1:1592 return 'Segunda';1593 case 2:1594 return 'Terça';1595 case 3:1596 return 'Quarta';1597 case 4:1598 return 'Quinta';1599 case 5:1600 return 'Sexta';1601 case 6:1602 return 'Sábado';1603 default:1604 return false;1605 }1606 }1607 1608 function monthOfNumber(number) {1609 switch (number) {1610 case 0:1611 return 'Janeiro';1612 case 1:1613 return 'Fevereiro';1614 case 2:1615 return 'Março';1616 case 3:1617 return 'Abril';1618 case 4:1619 return 'Maio';1620 case 5:1621 return 'Junho';1622 case 6:1623 return 'Julho';1624 case 7:1625 return 'Agosto';1626 case 8:1627 return 'Setembro';1628 case 9:1629 return 'Outubro';1630 case 10:1631 return 'Novembro';1632 case 11:1633 return 'Dezembro';1634 default:1635 return false;1636 }1637 }1638 1639 function sortMonthOfNumber(number) {1640 switch (number) {1641 case 0:1642 return 'Jan';1643 case 1:1644 return 'Fev';1645 case 2:1646 return 'Mar';1647 case 3:1648 return 'Abr';1649 case 4:1650 return 'Mai';1651 case 5:1652 return 'Jun';1653 case 6:1654 return 'Jul';1655 case 7:1656 return 'Ago';1657 case 8:1658 return 'Set';1659 case 9:1660 return 'Out';1661 case 10:1662 return 'Nov';1663 case 11:1664 return 'Dez';1665 default:1666 return false;1667 }1668 } -
trunk/prototype/modules/calendar/js/init.js
r5401 r5409 4 4 $tabs = $('#tabs').tabs({ 5 5 add: function( event, ui ) { 6 User.lastView = $tabs.tabs('option' ,'selected'); 6 Calendar.lastView = $tabs.tabs('option' ,'selected'); 7 $('#tabs .events-list-win.active').removeClass('active'); 7 8 $tabs.tabs('select', '#' + ui.panel.id); 8 9 }, 9 10 remove: function( event, ui ) { 10 $tabs.tabs('select', User.lastView);11 $tabs.tabs('select', Calendar.lastView); 11 12 }, 12 13 show: function( event, ui ){ … … 23 24 var index = $( "li", $tabs ).index( $( this ).parent() ); 24 25 if($tabs.tabs('option' ,'selected') == index){ 25 if($tabs.tabs("length") == 2 && User.lastView != 1)26 if($tabs.tabs("length") == 2 && Calendar.lastView != 1) 26 27 $tabs.tabs( "select", 0); 27 $tabs.tabs( "select", User.lastView);28 $tabs.tabs( "select", Calendar.lastView); 28 29 } 29 30 if($tabs.tabs('option' ,'selected') == 0 || $tabs.tabs('option' ,'selected') == 1) 30 User.lastView = $tabs.tabs('option' ,'selected');31 Calendar.lastView = $tabs.tabs('option' ,'selected'); 31 32 if(index != -1) 32 33 $tabs.tabs( "remove", index ); … … 51 52 //dateFormat: 'DD, d MM, yy', 52 53 //inline: true, 53 firstDay: da yOfWeek(User.preferences.weekStart),54 firstDay: dateCalendar.dayOfWeek[User.preferences.weekStart], 54 55 onSelect: function(dateText, inst) 55 56 { 56 57 $tabs.tabs("select", "#calendar"); 57 var date = dateText.split('-'); 58 var dateFullCalendar = $.fullCalendar.formatDate($('#calendar').fullCalendar('getDate'), "yyyy-MM-dd").split('-'); 59 $('#calendar').fullCalendar('gotoDate',date[0],date[1]-1,date[2]); 58 $('#calendar').fullCalendar('gotoDate',$(this).siblings('span').html(), Date.getMonthNumberFromName($(this).html() == 'Março' ? 'Mar' : $(this).html()),'01'); 60 59 $('#calendar').fullCalendar( 'changeView', 'agendaDay' ); 61 60 } … … 67 66 $('.ui-datepicker-title .ui-datepicker-month').live('click',function(){ 68 67 $tabs.tabs("select", "#calendar"); 69 var currentDate = $.fullCalendar.formatDate($('#calendar').fullCalendar('getDate'), "yyyy-MM-dd").split('-'); 70 $('#calendar').fullCalendar('gotoDate',$('.ui-datepicker-title .ui-datepicker-year').html(), Date.getMonthNumberFromName($('.ui-datepicker-title .ui-datepicker-month').html()),currentDate[2]); 68 $('#calendar').fullCalendar('gotoDate',$(this).html(), '0', '01'); 71 69 $('#calendar').fullCalendar( 'changeView', 'month'); 72 70 }); … … 131 129 -----------------------------------------------------------------*/ 132 130 $(".button.add.add-event").click(function(event){ 131 var startEvent = new Date(); 132 if(startEvent.toString('mm') < 30) 133 startEvent.add({minutes: (30 - parseInt(startEvent.toString('mm')))}); 134 else 135 startEvent.add({hours: 1, minutes: '-'+startEvent.toString('mm')}); 136 var endEvent = function(date){ 137 if(!!User.preferences.defaultCalendar){ 138 return parseInt(date.getTime()) + 139 ( !!Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration ? 140 (Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration * 60000) : 141 (User.preferences.defaultDuration * 60000) 142 ); 143 }else 144 return parseInt(date.getTime()) + (User.preferences.defaultDuration * 60000); 145 }; 146 133 147 eventDetails({ 134 startTime: $.now(), 135 endTime:!!User.preferences.defaultCalendar ? Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration != "" ? ($.now() + Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration * 60000) : (User.preferences.defaultDuration * 60000) 136 : $.now() + (User.preferences.defaultDuration * 60000) 148 startTime: startEvent.getTime(), 149 endTime: endEvent(startEvent) 137 150 }, true ); 138 151 }); 139 152 140 var calendar = $('#calendar').fullCalendar( {153 var calendar = $('#calendar').fullCalendar(DataLayer.merge({ 141 154 142 155 defaultView: User.preferences.defaultCalView, … … 150 163 right: 'agendaDay,agendaWeek,month,year' 151 164 }, 152 firstDay: da yOfWeek(!!User.preferences.weekStart),165 firstDay: dateCalendar.dayOfWeek[User.preferences.weekStart], 153 166 editable: true, 154 167 selectable: true, … … 169 182 day: 'dddd dd/MM' 170 183 }, 171 monthNames: ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro' ], 172 monthNamesShort: ['Jan','Fev','Mar','Abr','Maio','Jun','Jul','Ago','Set','Out','Nov','Dez'], 173 dayNames: [ 'Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'], 174 dayNamesShort: ['Dom','Seg','Ter','Qua','Qui','Sex','Sáb'], 175 dayNamesShortest: ['D','S','T','Q','Q','S','S'], 184 176 185 allDayText: 'Dia todo', 177 186 buttonText: { … … 182 191 year: 'ano' 183 192 }, 184 193 /* 185 194 eventRender: function( event, element, view ){ 186 195 $(element).attr( 'event-id', event.id ); 187 196 }, 188 197 */ 189 198 select: function( start, end, allDay, event, view ){ 190 199 eventDetails( { 'start': start, … … 204 213 eventDetails( DataLayer.get( "schedulable", evt.id), true); 205 214 } 206 } );215 }, dateCalendar)); 207 216 208 217 if($(window).height() < $('body').height()){ -
trunk/prototype/modules/calendar/templates/attendee_add.ejs
r5358 r5409 19 19 <li class="organizer"> 20 20 <div style="overflow:hidden; width:100%; display:table;"> 21 <input type="checkbox" value="<%= data.event.organizer. uid %>" disabled="disabled">22 <input type="hidden" name="attendee[]" value="<%=data.event.organizer. uid%>">21 <input type="checkbox" value="<%= data.event.organizer.id %>" disabled="disabled"> 22 <input type="hidden" name="attendee[]" value="<%=data.event.organizer.id%>"> 23 23 <input type="hidden" name="attendeeType[]" value="0"> 24 <input type="hidden" name="attendee_organizer[]" value="<%=data.event.organizer. uid%>">24 <input type="hidden" name="attendee_organizer[]" value="<%=data.event.organizer.id%>"> 25 25 <label for="attendee_organizer" title="<%= data.event.organizer.name ? data.event.organizer.name: '' %>" class="name"><%= data.event.organizer.name ? data.event.organizer.name : '' %></label> 26 26 <label for="attendee_organizer" title="<%= data.event.organizer.mail ? data.event.organizer.mail: '' %>" class="mail"><%= data.event.organizer.mail ? data.event.organizer.mail : '' %></label> 27 <% if (data.event.me. uid == data.event.organizer.uid && false) { %>27 <% if (data.event.me.id == data.event.organizer.id && false) { %> 28 28 <span class="button small swap">Mudar organizador</span> 29 29 <% } %> … … 36 36 <li class="attendee"> 37 37 <div style="overflow:hidden; width:100%; display:table;"> 38 <input type="checkbox" value="<%= data.event.attendee[i]. uid %>" disabled="disabled">39 <input type="hidden" name="attendee[]" value="<%=data.event.attendee[i]. uid%>">38 <input type="checkbox" value="<%= data.event.attendee[i].id %>" disabled="disabled"> 39 <input type="hidden" name="attendee[]" value="<%=data.event.attendee[i].id%>"> 40 40 <input type="hidden" name="attendeeType[]" value="<%=data.event.attendee[i].isExternal%>"> 41 41 <label title="<%= data.event.attendee[i].name ? data.event.attendee[i].name: '' %>" class="name"><%= data.event.attendee[i].name ? data.event.attendee[i].name : '' %></label> -
trunk/prototype/modules/calendar/templates/event_add.ejs
r5376 r5409 107 107 <fieldset id="calendar_addevent_details4" class="tab-level2"> 108 108 <legend class="hidden">Lembretes</legend> 109 <%if(!data.event.id && data.event.alarms.length){%>110 <p class="default-alarm-event">111 112 113 114 <%}%>109 110 <p class="default-alarm-event <%= (!data.event.id && data.event.alarms) ? '' : 'hidden'%>"> 111 <input type="checkbox" name="defaultAlarm" value="true" checked="checked"/> 112 <label class="input-default-alarm" for="defautAlarm">Usar alarmes padrões</label> 113 </p> 114 115 115 <ul class="event-alarms-list"> 116 116 <% if (data.event && data.event.alarms) { -
trunk/prototype/modules/calendar/templates/event_list.ejs
r5341 r5409 88 88 <div class="details-event-list hidden"> 89 89 <fieldset class="fields-details-event-list"> 90 <p class="input-group date-info"> 91 <label>Início:</label> 92 <span class="date start-date"><%= _event.startDate %> às </span> 93 <span class="time start-time"><%= _event.startHour %></span> 94 95 </p> 96 <p class="input-group"> 97 <label>Término:</label> 98 <span class="date end-date"><%= _event.endDate %> às </span> 99 <span class="time end-time"><%= _event.endHour %></span> 100 <span><%= _event.timeZone %></span> 101 </p> 90 <%if(_event.allDay){%> 91 <p class="input-group date-info"> 92 <label>Duração</label> 93 <span class="date start-date">Dia inteiro</span> 94 </p> 95 <%}else{%> 96 97 <p class="input-group date-info"> 98 <label>Início:</label> 99 <span class="date start-date"><%= _event.startDate %> às </span> 100 <span class="time start-time"><%= _event.startHour %></span> 101 102 </p> 103 <p class="input-group"> 104 <label>Término:</label> 105 <span class="date end-date"><%= _event.endDate %> às </span> 106 <span class="time end-time"><%= _event.endHour %></span> 107 <span><%= _event.timeZone %></span> 108 </p> 109 <%}%> 102 110 <p class="input-group"> 103 111 <label>Repete em</label> … … 108 116 <% if(_event.alarms) { %> 109 117 <span class="large" > 110 <% for (var l=0; l < _event.alarms.length; l++) { %> 111 Você será notificado por <%= _event.alarms[l].typee %> <%= _event.alarms[l].time %> <%= _event.alarms[l].unit %> antes do evento<br /> <!-- Tirar esse br --> 112 113 <% } %> 118 <% for (var l=0; l < _event.alarms.length; l++) { %> 119 <span class="large" >Você será notificado por um <%=dateCalendar.alarmtype[_event.alarms[l].type]%> <%= _event.alarms[l].time %> <%= dateCalendar.timeunit[_event.alarms[l].unit]%><%=_event.alarms[l].time > 1 ? 's' : '' %> antes do evento</span> 120 <% } %> 114 121 </span> 115 122 <% } %> 116 123 </p> 117 124 <p class="input-group"> … … 128 135 </p> 129 136 <p class="input-group"> 137 <label>Organizador</label> 138 <span class="large"><%=_event.organizer.name%> (<%= _event.organizer.mail %>)</span> 139 </p> 140 <p class="input-group"> 130 141 <label>Participantes</label> 131 <span> 132 <% if(_event.participants) { %> 142 <% if(_event.attendee) { %> 133 143 <span class="large" > 134 <% for (var m=0; m < _event.participants.length; m++) { %> 135 <%= _event.participants[m].name %> (<%= _event.participants[m].email %>) <br /> 136 137 <% } %> 144 <% for (var m=0; m < _event.attendee.length; m++) { %> 145 <span class="large"><%=_event.attendee[m].name%> (<%= _event.attendee[m].mail %>)</span> 146 <%}%> 138 147 </span> 139 148 <% } %> 140 149 </p> 141 150 <p class="input-group"> … … 156 165 <div class="menu-container footer-container"> 157 166 <input name="eventid" type="hidden" value="<%=_event.id%>"></input> 167 <a class="button delete" href="#">Excluir</a> 158 168 <a class="button edit" href="#">Editar</a> 159 <a class="button delete" href="#">Excluir</a>160 169 </div> 161 170 </div> -
trunk/prototype/modules/calendar/templates/import_export.ejs
r5341 r5409 11 11 12 12 <div id="tab-import"> 13 <form method="POST" action="../ ../converter.php" class="import-event-form">13 <form method="POST" action="../prototype/converter.php" class="import-event-form"> 14 14 <fieldset class="import-calendar"> 15 15 <input type="hidden" name="type" value="iCal"> … … 31 31 </form> 32 32 <div class="menu-container footer-container menu-import-event"> 33 <a class="button import calendar-import-btn-import" href="#">Importar</a>34 33 <a class="button cancel calendar-import-btn-cancel" href="#">Cancelar</a> 34 <a class="button import calendar-import-btn-import" href="#">Importar</a> 35 35 </div> 36 36 </div> 37 37 38 38 <div id="tab-export"> 39 <form method="GET" action=" export.php" class="export-event-form">39 <form method="GET" action="../prototype/modules/calendar/export.php" class="export-event-form"> 40 40 <fieldset class="export_calendar"> 41 41 <legend class="hidden">Exportar agenda</legend> … … 53 53 </form> 54 54 <div class="menu-container footer-container menu-export-event"> 55 <a class="button export calendar-export-btn-export" href="#">Exportar</a>56 55 <a class="button cancel calendar-export-btn-cancel" href="#">Cancelar</a> 56 <a class="button export calendar-export-btn-export" href="#">Exportar</a> 57 57 </div> 58 58 </div> -
trunk/prototype/modules/calendar/templates/index.ejs
r5399 r5409 81 81 82 82 <script type='text/javascript' src='<?= MODULESURL ?>/js/base64.js'></script> 83 <script type='text/javascript' src='<?= MODULESURL ?>/js/calendar.date.js'></script> 84 83 85 <script type='text/javascript' src='<?= MODULESURL ?>/js/helpers.js'></script> 84 86 <script type='text/javascript' src='<?= MODULESURL ?>/js/calendar.codecs.js'></script> 87 <script type='text/javascript' src='<?= MODULESURL ?>/js/timezone.js'></script> 85 88 <script type='text/javascript' src='<?= MODULESURL ?>/js/I18n.js'></script> 86 89 <script type="text/javascript" src="<?= MODULESURL ?>/js/init.js"></script> -
trunk/prototype/timezones.php
r5341 r5409 457 457 "UTC":"+0000" 458 458 }, 459 "isDaylightSaving":"<?php 460 $time = time(); 461 $hora = localtime($time, true); 462 if($hora['tm_isdst']){ 463 echo true; 464 }else{ 465 echo false; 466 } 467 ?>" 459 "isDaylightSaving":"<?php $localtime = localtime(time(), true); echo !!$localtime['tm_isdst']; ?>" 468 460 }
Note: See TracChangeset
for help on using the changeset viewer.