Changeset 5592 for trunk/prototype/modules/calendar/js
- Timestamp:
- 03/01/12 03:35:01 (13 years ago)
- Location:
- trunk/prototype/modules/calendar/js
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/calendar/js/calendar.codecs.js
r5530 r5592 39 39 } 40 40 41 constantsCalendarShared = { 42 'r' : 'read', 43 'w' : 'write', 44 'd' : 'remove', 45 'b' : 'busy', 46 's' : 'shared' 47 } 48 41 49 UI = { 42 50 dialogs: { 43 51 addEvent: null, 44 52 importCalendar: null, 45 sharedCalendar: null 53 sharedCalendar: null, 54 copyCalendar: null 46 55 } 47 56 } … … 74 83 }); 75 84 85 DataLayer.codec( "calendarToPermission", "detail", { 86 decoder: function( evtObj ){ 87 /* Encoder.EncodeType = "entity"; 88 89 if( notArray = $.type(evtObj) !== "array" ) 90 evtObj = [ evtObj ]; 91 92 var res = $.map(evtObj, function( form){ 93 return [$.map(form.user , function( user, i){ 94 return { 95 calendar: form.calendar, 96 user: user, 97 acl: form.attendeeAcl[i], 98 type: 0 99 }; 100 })]; 101 }); 102 103 return notArray ? res[0] : res; 104 */ 105 }, 106 107 encoder: function( evtObj ){ 108 109 if(evtObj == "") 110 return ""; 111 112 var notArray = false; 113 114 if( notArray = $.type(evtObj) !== "array" ) 115 evtObj = [ evtObj ]; 116 117 var constantAcl = function(acl){ 118 var returns = {}; 119 for (var i in constantsCalendarShared){ 120 returns[constantsCalendarShared[i]] = acl.indexOf(i) >= 0 ? true : false 121 } 122 return returns; 123 }; 124 125 var res = $.map(evtObj, function( objEvent ){ 126 return { 127 id: objEvent.id, 128 type: objEvent.type, 129 calendar: objEvent.calendar, 130 user: objEvent.user, 131 acl: constantAcl(objEvent.acl) , 132 aclValues: objEvent.acl 133 }; 134 }); 135 return notArray ? res[0] : res; 136 } 137 }); 138 139 76 140 Calendar = { 77 141 … … 82 146 * quando forçado um get do banco, deverá ser criado uma condição para o mesmo 83 147 */ 84 var descart = DataLayer.get("calendarSignature", {filter: ['=', 'user', User.me.id], criteria: {deepness: 2}}) 148 var descart = DataLayer.get("calendarSignature", {filter: ['=', 'user', User.me.id], criteria: {deepness: 2}}); 85 149 this.signatures = DataLayer.get("calendarSignature", {filter: ['=', 'user', User.me.id], criteria: {deepness: 2}}, true); 86 150 … … 104 168 105 169 for( var i = 0; i < this.signatures.length; i++ ){ 170 if(this.signatures[i].isOwner == "0") 171 this.signatures[i].permission = DataLayer.encode('calendarToPermission:detail', this.signatures[i].permission); 106 172 this.signatureOf[ this.calendarIds[i] = ( this.calendars[ this.calendars.length ] = this.calendarOf[ this.signatures[i].id ] = this.signatures[i].calendar ).id ] = this.signatures[i]; 107 173 } … … 128 194 Alarms = { 129 195 load: function(){ 130 var eventsDay = DataLayer.get('alarm:schedulable',['=', 'date', new Date().toString("yyyy-MM-dd")]);196 var eventsDay = DataLayer.get('alarm:schedulable',['=', 'date', Date.today().getTime()]); 131 197 for(var i = 0; i < eventsDay.length; i++){ 132 198 this.addAlarm( eventsDay[i] ); … … 197 263 if( status === 'serverclient' ){ 198 264 DataLayer.commit( false, false, function(){ 199 if(!!$('#calendar').fullCalendar) 265 if(!!$('#calendar').fullCalendar){ 200 266 Calendar.rerenderView(true); 267 contentMenu(); 268 } 201 269 //Atualiza a listagem de eventos apenas se estiver na aba de listagem 202 270 if((typeof($tabs) != "undefined") && $tabs.tabs('option' ,'selected') != 0) … … 334 402 sendTime: objEvent.sendTime, 335 403 schedulable: { 336 startTime: dateCalendar.formatDate(Timezone. setDateTimezone(new Date(time), objEvent.schedulable.timezone, true), User.preferences.hourFormat),404 startTime: dateCalendar.formatDate(Timezone.getDateEvent(new Date(time), objEvent.schedulable.timezone, objEvent.schedulable.DayLigth, 'startTime'), User.preferences.hourFormat), 337 405 id: objEvent.schedulable.id, 338 406 summary: objEvent.schedulable.summary, … … 363 431 return { 364 432 participant : meAttendee(form.attendee), 365 startTime: Timezone.getDateUTC(Date.parseExact(form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ), tzId).getTime(),366 endTime: parseInt(Timezone.getDateUTC(Date.parseExact(form.endDate + ( !!form.allDay ? " 00:00": " "+$.trim(form.endHour)), formatString ), tzId).getTime()) + (!!form.allDay ? 86400000 : 0),433 startTime: Date.parseExact(form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ).toString('yyyy-MM-dd hh:mm:00'), 434 endTime: Date.parseExact(form.endDate + ( !!form.allDay ? " 00:00": " "+$.trim(form.endHour)), formatString ).toString('yyyy-MM-dd hh:mm:00'), 367 435 allDay: ( !!form.allDay ? 1 : 0 ), 368 436 schedulable: form.idEvent … … 450 518 participant: me.id, 451 519 type: 'suggestion', 452 startTime: Timezone.getDateUTC(Date.parseExact(form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ), tzId).getTime(),453 endTime: parseInt(Timezone.getDateUTC(Date.parseExact(form.endDate + ( !!form.allDay ? " 00:00": " "+$.trim(form.endHour)), formatString ), tzId).getTime()) + (!!form.allDay ? 86400000 : 0),520 startTime: Date.parseExact(form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ).toString('yyyy-MM-dd hh:mm:00'), 521 endTime: Date.parseExact(form.endDate + ( !!form.allDay ? " 00:00": " "+$.trim(form.endHour)), formatString ).toString('yyyy-MM-dd hh:mm:00'), 454 522 allDay: ( !!form.allDay ? 1 : 0 ), 455 523 schedulable: form.idEvent … … 484 552 var res = $.map(evtObj, function( objEvent ){ 485 553 554 if(!(typeof(objEvent) == 'object')) 555 return (null); 556 486 557 var participantInfo = {}, delegatedFrom = {}, me = DataLayer.copy(User.me); 487 558 … … 506 577 timezones: Timezone.timezones, 507 578 startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 508 startHour: dateCalendar.formatDate(Timezone. setDateTimezone(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar), User.preferences.hourFormat),579 startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 509 580 endDate: new Date( parseInt(objEvent.endTime) - (!!parseInt(objEvent.allDay) ? 86400000 : 0) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 510 endHour: dateCalendar.formatDate(Timezone. setDateTimezone(new Date(parseInt(objEvent.endTime)), objEvent.timezone, objEvent.calendar), User.preferences.hourFormat),581 endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(objEvent.endTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'endTime'), User.preferences.hourFormat), 511 582 allDay: !!parseInt( objEvent.allDay ), 512 583 attachments: $.map(objEvent.attachments || [], function( attachment, i ){ … … 566 637 alarms: !!participantInfo.user ? participantInfo.user.alarms : [], 567 638 status: !!participantInfo.user ? participantInfo.user.status : 1, 568 acl: !!participantInfo.user ? constantAcl(participantInfo.user.acl) : constantAcl('rowi'), 569 me: !!participantInfo.user ? DataLayer.merge(participantInfo.user, me) : DataLayer.merge(me, {acl: 'rowi', delegatedFrom: 0, receiveNotification: 1}), 639 acl: !!participantInfo.user ? constantAcl(participantInfo.user.acl) : constantAcl( 'rowi' ), 640 isShared: objEvent.calendar && Calendar.signatureOf[objEvent.calendar].isOwner ? true : false, 641 me: !!participantInfo.user ? DataLayer.merge(participantInfo.user, me) : DataLayer.merge(this.isShared ? this.organizer : me, {acl: this.isShared ? 'rowi' : Calendar.signatureOf[objEvent.calendar].permission.aclValues, delegatedFrom: 0, receiveNotification: 1}), 570 642 delegatedFrom: delegatedFrom, 571 643 statusParticipants: statusParticipants … … 598 670 return { 599 671 "class": form["class"], 600 startTime: Timezone.getDateUTC(Date.parseExact(form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ), tzId).getTime(),601 endTime: parseInt(Timezone.getDateUTC(Date.parseExact(form.endDate + ( !!form.allDay ? " 00:00": " "+$.trim(form.endHour)), formatString ), tzId).getTime())+ (!!form.allDay ? 86400000 : 0) ,672 startTime: Date.parseExact(form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ).toString('yyyy-MM-dd hh:mm:00'), 673 endTime: Date.parseExact(form.endDate + ( !!form.allDay ? " 00:00": " "+$.trim(form.endHour)), formatString ).toString('yyyy-MM-dd hh:mm:00'), //+ (!!form.allDay ? 86400000 : 0) , 602 674 allDay: ( !!form.allDay ? 1 : 0 ), 603 675 id: form.idEvent, … … 837 909 838 910 $.map(filtered, function( evt ){ 911 912 if(!(typeof(evt) == 'object') || (evt.id.indexOf('java') >= 0)) 913 return (null); 839 914 840 915 evt.calendar = evt.calendar || "1"; … … 845 920 var calendar = DataLayer.get('calendar', evt.calendar); 846 921 847 var eventEditable = function(){ 848 var attendee = {}; 849 for(var i = 0; i < evt.participants.length; i++){ 850 attendee = DataLayer.get('participant', evt.participants[i]); 851 if(attendee.user == User.me.id) 852 return (attendee.acl.indexOf('w') >= 0 || attendee.acl.indexOf('o') >= 0 ) ? true : false; 922 var eventEditable = function(idEvent){ 923 if(Calendar.signatureOf[calendar.id].isOwner == "1"){ 924 var attendee = {}; 925 for(var i = 0; i < evt.participants.length; i++){ 926 attendee = DataLayer.get('participant', evt.participants[i]); 927 if(attendee.user == User.me.id) 928 return (attendee.acl.indexOf('w') >= 0 || attendee.acl.indexOf('o') >= 0 ) ? {selectable: true, className: 'fullcalendar-context-menu event-id-'+idEvent} : {editable: false, className: 'blocked-event-permision fullcalendar-not-context-menu event-id-'+idEvent}; 929 } 930 return {editable: false, className: 'blocked-event-permision fullcalendar-not-context-menu event-id-'+idEvent, selectable: true}; 853 931 } 932 else{ 933 var aclSignature = Calendar.signatureOf[calendar.id].permission; 934 935 var mountClass = function(acl){ 936 var returns = "" 937 returns += acl['write'] ? "" : 'blocked-event-permision '; 938 returns += acl['busy'] ? 'fullcalendar-not-context-menu ' : (acl['read'] ? 'fullcalendar-context-menu ' : ''); 939 returns += 'event-id-'+idEvent; 940 return returns; 941 } 942 return DataLayer.merge({ 943 editable: aclSignature.acl['write'], 944 disableResizing : (((aclSignature.acl['busy'] && !aclSignature.acl['write']) || (!aclSignature.acl['write'] && aclSignature.acl['read'])) ? true : false), 945 disableDragging : (((aclSignature.acl['busy'] && !aclSignature.acl['write']) || (!aclSignature.acl['write'] && aclSignature.acl['read'])) ? true: false), 946 className: mountClass(aclSignature.acl) 947 }, aclSignature.acl['busy'] ? {title: 'Ocupado', selectable: false } : {selectable: true}); 948 } 949 854 950 } 855 951 856 952 grouped[ evt.calendar ].push( DataLayer.merge({ id: evt.URI || evt.id, 857 953 title: Encoder.htmlDecode(evt.summary), 858 start: Timezone.getDate Timezone(new Date(parseInt( evt.startTime )), calendar.timezone, false),859 end: Timezone.getDate Timezone(new Date(parseInt( evt.endTime ) - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, false),860 allDay: parseInt( evt.allDay ) }, eventEditable( ) ? {} : {editable: false, className: 'blocked-event-permision'}) );954 start: Timezone.getDateCalendar(new Date(parseInt( evt.startTime )), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 955 end: Timezone.getDateCalendar(new Date(parseInt( evt.endTime ) - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 956 allDay: parseInt( evt.allDay ) }, eventEditable(evt.id) ) ); 861 957 }); 862 958 … … 871 967 filter.end = new Date( filter.end * 1000 ); 872 968 969 var timezone = {}; 970 for(var i in Calendar.signatureOf) 971 timezone[i] = Calendar.signatureOf[i].calendar.timezone; 972 873 973 return { filter: ["AND", 874 974 875 [ ">=", "rangeStart", filter.start. toString( "dd-MM-yyyy") ],876 [ "<=", "rangeEnd", filter.end. toString( "dd-MM-yyyy") ],975 [ ">=", "rangeStart", filter.start.getTime() ], 976 [ "<=", "rangeEnd", filter.end.getTime() ], 877 977 [ "IN", "calendar", Calendar.calendarIds ] 878 978 879 979 ], 880 criteria: { deepness: 2 } }980 criteria: { deepness: 2, timezones: timezone } } 881 981 } 882 982 }); -
trunk/prototype/modules/calendar/js/helpers.js
r5530 r5592 59 59 */ 60 60 61 function eventDetails( objEvent, decoded, path )61 function eventDetails( objEvent, decoded, path, isMail) 62 62 { 63 63 if(path == undefined) … … 67 67 objEvent = DataLayer.decode( "schedulable:calendar", objEvent ); 68 68 69 if(!isMail) 69 70 objEvent = DataLayer.encode( "schedulable:preview", objEvent ); 70 71 … … 730 731 if (user){ 731 732 if (!skipAddNewLine) { 732 user[0].id = DataLayer.put('participant', {user: user[0].id, isExternal: isExternal}); 733 user[0].id = DataLayer.put('participant', {user: user[0].id, isExternal: isExternal, acl: 'r'}); 734 user[0].acl = objEvent.acl 735 733 736 blkAddAtendee.find('dd.attendee-list ul.attendee-list').append( 734 DataLayer.render(path+'templates/participants_add_itemlist.ejs', {user:user, acl: objEvent.acl})737 DataLayer.render(path+'templates/participants_add_itemlist.ejs', user) 735 738 ) 736 739 .scrollTo('max'); … … 794 797 * Trata a busca de usuários para adição de participantes 795 798 */ 799 blkAddAtendee.find('.add-attendee-search .ui-icon-search').click(function(event) { 800 blkAddAtendee.find('.add-attendee-search input').keydown(); 801 }); 802 803 796 804 blkAddAtendee.find('.add-attendee-search input').keydown(function(event) { 797 805 798 if(event.keyCode == '13' ) {806 if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') { 799 807 var result = DataLayer.get('user', ["*", "name", $(this).val()], true); 800 808 … … 899 907 sequentialUploads: true, 900 908 add: function (e, data) { 901 if(data.files[0].size < 30000000)909 if(data.files[0].size < 2000000) 902 910 data.submit(); 903 911 }, … … 909 917 attach.fileName = file.name.substr(0, 6) + file.name.substr(file.name.length-4, file.name.length); 910 918 attach.fileSize = formatBytes(file.size); 911 if(file.size > 30000000)919 if(file.size > 2000000) 912 920 attach.error = 'Tamanho de arquivo nao permitido!!' 913 921 914 922 $('.attachments-list').append(DataLayer.render(path+'templates/attachment_add_itemlist.ejs', {file : attach})); 915 923 916 if(file.size < 30000000){924 if(file.size < 2000000){ 917 925 $('.fileinput-button.new').append(data.fileInput[0]).removeClass('new'); 918 926 $('.attachments-list').find('[type=file]').addClass('hidden'); … … 1034 1042 canDiscardEventDialog = false; 1035 1043 }); 1036 1037 1038 UI.dialogs.addEvent.dialog('open'); 1044 1045 if(objEvent.isShared){ 1046 1047 var acls = Calendar.signatureOf[objEvent.calendar].permission.acl; 1048 1049 if(!acls.write){ 1050 UI.dialogs.addEvent.find(':input').attr('disabled', 'disabled'); 1051 UI.dialogs.addEvent.find('.button').hide(); 1052 } 1053 1054 if(acls.remove) 1055 UI.dialogs.addEvent.find('.button.remove').show(); 1056 1057 UI.dialogs.addEvent.find('.button.cancel').show(); 1058 1059 1060 } 1061 1062 1063 UI.dialogs.addEvent.dialog('open'); 1039 1064 } 1040 1065 … … 1368 1393 } 1369 1394 1395 function remove_event(eventId){ 1396 $.Zebra_Dialog('Tem certeza que deseja excluir o evento?', { 1397 'type': 'question', 1398 'overlay_opacity': '0.5', 1399 'buttons': ['Sim', 'Não'], 1400 'onClose': function(clicked) { 1401 if(clicked == 'Sim'){ 1402 DataLayer.remove('schedulable', ''+eventId); 1403 window.setTimeout(function() {DataLayer.commit();}, 500); 1404 } 1405 } 1406 }); 1407 } 1408 1409 1370 1410 function remove_calendar(){ 1371 1411 /* Pode ser assim $('.cal-list-options-btn.ui-state-active').attr('class').replace(/[a-zA-Z-]+/g, ''); */ … … 1377 1417 if(clicked == 'Sim'){ 1378 1418 var idCalendar = $('.cal-list-options-btn.ui-state-active').attr('class').match(/[0-9]+/g); 1379 var signature = ''; 1380 for(var i =0; i < Calendar.signatures.length; i++){ 1381 if(idCalendar[0] == Calendar.signatures[i].calendar.id){ 1382 signature = Calendar.signatures[i].id; 1383 break; 1384 } 1385 } 1386 DataLayer.remove('calendarSignature', signature); 1419 1420 DataLayer.remove('calendarSignature', Calendar.signatureOf[idCalendar[0]].id ); 1421 1387 1422 if(idCalendar == User.preferences.defaultCalendar) 1388 1423 DataLayer.remove( 'modulePreference', User.preferenceIds['defaultCalendar']); … … 1428 1463 }); 1429 1464 1430 1431 meu_container.find(".button.new").button({ 1465 meu_container.find(".button.new-calendar").button({ 1432 1466 icons: { 1433 1467 primary: "ui-icon-plus" … … 1462 1496 }) 1463 1497 .click(function(){ 1464 meu_container.find(".button.new ").qtip('destroy');1498 meu_container.find(".button.new-calendar").qtip('destroy'); 1465 1499 }); 1466 1500 //TODO emplementar tratamento de duplicação de valores no location … … 1543 1577 }); 1544 1578 1579 meu_container.find(".button.new-calendar-shared").button({ 1580 icons: { 1581 primary: "ui-icon-plus" 1582 }, 1583 text: false 1584 }).click(function (event) { 1585 show_modal_search_shared(); 1586 }); 1587 1588 1589 //TODO Implementar ocultar agendas. 1590 meu_container.find('.title-signed-calendars').click(function(evt){ 1591 var status = $(this).parent().find('.status-list-shared'); 1592 1593 if(status.hasClass('ui-icon-triangle-1-s')) 1594 status.removeClass('ui-icon-triangle-1-s').addClass('ui-icon-triangle-1-e'); 1595 else 1596 status.removeClass('ui-icon-triangle-1-e').addClass('ui-icon-triangle-1-s'); 1597 }); 1598 1545 1599 $('.calendar-view').click(function(evt){ 1546 1600 if($tabs.tabs('option' ,'selected') == 1){ … … 1715 1769 case 'basicDay': 1716 1770 case 'day': 1717 rangeStart = new Date().add({days: page_index}). toString("yyyy-MM-dd");1771 rangeStart = new Date().add({days: page_index}).getTime(); 1718 1772 rangeEnd = rangeStart; 1719 1773 break; … … 1722 1776 var dateStart = new Date().moveToDayOfWeek(dateCalendar.dayOfWeek[User.preferences.weekStart]); 1723 1777 var dateEnd = new Date().moveToDayOfWeek(dateCalendar.dayOfWeek[User.preferences.weekStart]); 1724 rangeStart = dateStart.add({days: (7 * page_index)}). toString("yyyy-MM-dd");1725 rangeEnd = dateEnd.add({days: (7 * page_index)+7}). toString("yyyy-MM-dd");1778 rangeStart = dateStart.add({days: (7 * page_index)}).getTime(); 1779 rangeEnd = dateEnd.add({days: (7 * page_index)+7}).getTime(); 1726 1780 break; 1727 1781 case 'month': 1728 var date = new Date().add({months: page_index})1729 rangeStart = date.moveToFirstDayOfMonth(). toString("yyyy-MM-dd");1730 rangeEnd = date.moveToLastDayOfMonth(). toString("yyyy-MM-dd");1782 var date = Date.today().add({months: page_index}) 1783 rangeStart = date.moveToFirstDayOfMonth().getTime(); 1784 rangeEnd = date.moveToLastDayOfMonth().getTime(); 1731 1785 break; 1732 1786 case 'year': … … 1737 1791 if(dateEnd.getMonth() != 11) 1738 1792 dateEnd.moveToMonth(11) 1739 rangeStart = dateStart.moveToFirstDayOfMonth(). toString("yyyy-MM-dd");1740 rangeEnd = dateEnd.moveToLastDayOfMonth(). toString("yyyy-MM-dd");1793 rangeStart = dateStart.moveToFirstDayOfMonth().getTime(); 1794 rangeEnd = dateEnd.moveToLastDayOfMonth().getTime(); 1741 1795 break; 1742 1796 } … … 1872 1926 }); 1873 1927 } 1928 1929 function copyAndMoveTo(calendar, eventId){ 1930 1931 var type = $('.calendar-copy-move input[name="typeEvent"]').val(); 1932 1933 var schedulable = DataLayer.get('schedulable' , ''+eventId); 1934 1935 if(typeof(schedulable) == "array") 1936 schedulable = schedulable[0]; 1937 1938 //Move eventos entre agendas 1939 if(!!parseInt(type)){ 1940 1941 schedulable.calendar = calendar; 1942 DataLayer.put('schedulable', schedulable); 1943 1944 DataLayer.commit(); 1945 //copia eventos entre agendas 1946 }else{ 1947 1948 var newSchedulable = schedulable; 1949 1950 delete newSchedulable.id; 1951 delete newSchedulable.uid; 1952 delete newSchedulable.sequence; 1953 delete newSchedulable.dtstamp; 1954 delete schedulable.calendar; 1955 1956 schedulable.calendar = calendar; 1957 1958 newSchedulable.endTime = new Date(parseInt(newSchedulable.endTime) - (newSchedulable.allDay ? 86400000 : 0)).toString('yyyy-MM-dd hh:mm:00'); 1959 newSchedulable.startTime = new Date(parseInt(newSchedulable.startTime)).toString('yyyy-MM-dd hh:mm:00'); 1960 1961 var participants = DataLayer.copy(schedulable.participants); 1962 delete schedulable.participants; 1963 1964 schedulable.participants = $.map( participants, function( attendee, i ){ 1965 1966 var participant = DataLayer.get('participant', attendee); 1967 1968 if(typeof(participant) == 'array') 1969 participant = participant[0]; 1970 1971 delete participant.id; 1972 1973 return participant ; 1974 }); 1975 1976 1977 1978 DataLayer.put('schedulable', newSchedulable); 1979 1980 } 1981 1982 1983 } -
trunk/prototype/modules/calendar/js/init.js
r5510 r5592 97 97 } 98 98 }); 99 99 100 //efetua pesquisas pelo click na lupa de pesquisa 101 $('.main-search span.ui-icon-search').click(function(event){ 102 add_events_list($(this).parent().find('input.search').val()); 103 $(this).parent().find('input.search').val(); 104 }); 105 100 106 $('.block-horizontal-toolbox .main-config-menu').menu({ 101 107 content: $('.main-config-menu-content').html(), … … 226 232 227 233 eventDrop: function( event ){ 234 if(!event.disableDragging){ 235 DataLayer.put( "schedulable:calendar", event ); 236 237 event.editable = false; 238 event.className = "blocked-event"; 239 calendar.fullCalendar( 'updateEvent', event ); 240 }else 241 Calendar.rerenderView(true); 242 }, 243 244 eventResize: function( event ){ 245 if(!event.disableDragging){ 228 246 DataLayer.put( "schedulable:calendar", event ); 229 247 … … 231 249 event.className = "blocked-event"; 232 250 calendar.fullCalendar( 'updateEvent', event ); 233 }, 234 235 eventResize: function( event ){ 236 DataLayer.put( "schedulable:calendar", event ); 237 238 event.editable = false; 239 event.className = "blocked-event"; 240 calendar.fullCalendar( 'updateEvent', event ); 251 }else 252 Calendar.rerenderView(true); 241 253 }, 242 254 243 255 eventClick: function( evt, event, view ){ 244 eventDetails( DataLayer.get( "schedulable", evt.id), true); 256 if(evt.selectable) 257 eventDetails( DataLayer.get( "schedulable", evt.id), true); 245 258 } 246 259 }, dateCalendar)); 247 260 261 contentMenu(); 262 263 $('body').click(function(){ 264 $('#context-menu-event').html(''); 265 }); 266 248 267 if($(window).height() < $('body').height()){ 249 268 var hei = $('body').height() - $(window).height(); -
trunk/prototype/modules/calendar/js/timezone.js
r5550 r5592 6 6 7 7 var objTime = DataLayer.dispatch( "timezones" ); 8 8 9 Timezone = { 9 10 daylightSaving: isNaN(objTime.isDaylightSaving) ? parseInt( objTime.isDaylightSaving ) : 0,10 currentOffset : new Date().getUTCOffset(), 11 daylightSaving: isNaN(parseInt( objTime.isDaylightSaving )) ? 0 : parseInt( objTime.isDaylightSaving ), 11 12 12 13 timezones: objTime.timezones, … … 16 17 17 18 }, 18 19 compareTZID: function( fromTZID, toTZID ){20 21 return( this.timezones[ fromTZID ] === this.timezones[ toTZID ] );22 23 },24 25 checkTimezoneCalendar: function(idCalendar, tzId){26 27 return idCalendar && this.compareTZID( DataLayer.get('calendar', idCalendar).timezone, tzId );28 29 },30 19 31 setDateTimezone: function (date, tzId, idCalendar){ 32 33 if( !!!tzId || this.checkTimezoneCalendar(idCalendar, tzId) ) 34 return date; 35 36 var timezone = this.timezone( tzId ); 37 38 var timezoneOffset = parseInt(timezone.substr(2)) - this.daylightSaving * 100; 39 40 var timeCurrent = parseInt((date.getTimezoneOffset()/60)+'00') * ( ( timezone.charAt(0) != date.getUTCOffset().charAt(0) )? 1 : -1 ); 41 42 var times = timezoneOffset + timeCurrent; 43 44 if(times == 0) 45 return date; 46 else if(times > 0) 47 return date.setTimezoneOffset('-0'+(times)); 48 else 49 return date.setTimezoneOffset('+0'+((times * -1))); 50 }, 51 52 getDateTimezone: function(date, tzId, recursive){ 53 20 getDateCalendar: function(date, tzId, isDay){ 54 21 var timezone = this.timezone( tzId ); 55 22 … … 57 24 return date; 58 25 59 var currentTimezone = parseInt((date.getTimezoneOffset()/60)+'00');26 date = this.normalizeDate(date, false, true); 60 27 61 var timezoneOffset = parseInt(timezone.substr(2)) - this.daylightSaving * 100; 62 63 var times = timezoneOffset - currentTimezone; 64 65 if(times == 0){ 66 if((timezone.charAt(0) == date.getUTCOffset().charAt(0)) && recursive) 67 return date.setTimezoneOffset( timezone.charAt(0)+'0'+(currentTimezone)); 68 69 return date; 70 }else if (times > 0) 71 return date.setTimezoneOffset('+0'+(times)); 72 else{ 73 return date.setTimezoneOffset('-0'+((times * -1) + (currentTimezone * 2))); 74 } 28 return date.add({hours: parseInt(timezone.charAt(0) + timezone.charAt(2)) + parseInt(isDay) }); 75 29 }, 76 30 77 getDateUTC: function (date, tzId){ 31 getDateEvent: function(date, tzId, idCalendar, isDay, type){ 32 var timezone = this.timezone( tzId ); 33 var timezoneCurrent = this.timezone(DataLayer.get('calendar', idCalendar).timezone); 78 34 79 var timezone = this.timezone( tzId ), currentTimezone = parseInt(timezone.substr(2)) - this.daylightSaving * 100; 80 return(date.setTimezoneOffset(timezone.charAt(0)+'0'+currentTimezone)); 35 if(timezone == timezoneCurrent) 36 return date; 37 38 var to = parseInt(timezone.charAt(0) + timezone.charAt(2)) + parseInt(isDay.event[type]); 39 var current = parseInt(timezoneCurrent.charAt(0) + timezoneCurrent.charAt(2)) + parseInt(isDay.calendar[type]); 40 41 if(timezone.charAt(0) == timezoneCurrent.charAt(0)) 42 hours = ( to + (current * - 1)) ; 43 else 44 hours = to + (( current ) * (timezone.charAt(0) == '+' ? -1 : 1)) ; 45 46 return date.add({hours: hours}); 81 47 }, 82 83 createDateTimezone: function(date, tzId, idCalendar){ 84 if(this.checkTimezoneCalendar(idCalendar, tzId)) 85 return this.getDateTimezone(date, tzId, true); 86 87 var times = 0, timezone = this.timezone( tzId ); 88 89 if(timezone.charAt(0) == '+') 90 times = parseInt(timezone.substr(2)) - parseInt((date.getTimezoneOffset()/60)+'00'); 91 else 92 times = (parseInt(timezone.substr(2)) + parseInt((date.getTimezoneOffset()/60)+'00')) * (-1); 93 if(times == 0) 94 return date.setTimezoneOffset('0000'); 95 else if (times > 0) 96 return date.setTimezoneOffset('+0'+times); 97 else 98 return date.setTimezoneOffset('-0'+(times * -1)); 48 49 normalizeDate: function(date, current, inverse){ 50 var offsetDate = !!current ? this.currentOffset : date.getUTCOffset(); 51 return date.add({hours: (parseInt(offsetDate.charAt(0) + offsetDate.charAt(2)) * (!!inverse ? -1 : 1) )}); 99 52 } 100 101 102 103 53 }
Note: See TracChangeset
for help on using the changeset viewer.