Changeset 6286 for trunk/prototype/modules/calendar
- Timestamp:
- 05/23/12 17:11:17 (12 years ago)
- Location:
- trunk/prototype/modules/calendar
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/calendar/interceptors/DBMapping.php
r6250 r6286 560 560 public function deepnessReadParticipant( &$uri , &$result , &$criteria , $original ){ 561 561 562 563 562 if(isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) 564 563 { 565 if(isset($result['id']) )564 if(isset($result['id']) && isset($result['user'])) 566 565 { 567 566 $result['user'] = Controller::read( array( 'concept' => 'user' , 'id' => $result['user'] , 'service' => ( $result['isExternal'] == 1 ? 'PostgreSQL' : 'OpenLDAP' ) ) ); … … 713 712 if (Config::module('useCaldav', 'expressoCalendar')) 714 713 require_once ROOTPATH . '/modules/calendar/interceptors/DAViCalAdapter.php'; 714 715 if(isset($criteria['filter']) && $criteria['filter'] && isset($criteria['filter'][1][2])){ 716 $idSchedulable = $criteria['filter'][1][2]; 717 $idCalendar = $criteria['filter'][2][2]; 718 719 if(!self::ownerSchedulable($idSchedulable)){ 720 $isPermissionFromOwner = self::permissionFromCalendarSignature($idCalendar, $idSchedulable); 721 722 if($isPermissionFromOwner){ 723 Controller::delete(array('concept' => 'schedulable', 'id' => $idSchedulable)); 724 725 }else{ 726 $calendarsToSchedulable = self::schedulable2calendarToObject($idSchedulable); 727 728 foreach($calendarsToSchedulable as $value) 729 if($value['calendar_id'] == $idCalendar){ 730 Controller::delete(array('concept' => 'calendarToSchedulable', 'id' => $value['calendar_to_calendar_object'])); 731 break; 732 } 733 } 734 return false; 735 } 736 737 $uri['id'] = $idSchedulable; 738 } 715 739 716 740 $calendarsToSchedulable = self::schedulable2calendarToObject($uri['id']); … … 973 997 } 974 998 999 private static function permissionFromCalendarSignature($idCalendar, $idEvent) { 1000 $signature = Controller::find(array('concept' => 'calendarSignature'), false, array( 'filter' => array('AND', array('=', 'calendar', $idCalendar), array('=', 'isOwner', '1')), 'deepness' => 2)); 1001 1002 $signature = is_array($signature) ? $signature[0] : $signature; 1003 1004 if($signature['user']['id'] == Config::me('uidNumber')){ 1005 return false; 1006 }else{ 1007 $isOwner = Controller::find(array('concept' => 'participant'), array('id'), array('filter' => 1008 array('AND', 1009 array('=', 'isOrganizer', '1'), 1010 array('=', 'user', $signature['user']['id']), 1011 array('=', 'schedulable', $idEvent) 1012 ))); 1013 1014 return ( isset($isOwner[0]['id']) ) ? true : false; 1015 } 1016 } 1017 1018 975 1019 private static function ownerSchedulable($id) { 976 1020 -
trunk/prototype/modules/calendar/js/calendar.codecs.js
r6198 r6286 1062 1062 return (attendee.acl.indexOf('w') >= 0 || attendee.acl.indexOf('o') >= 0 ) ? { 1063 1063 selectable: true, 1064 className: 'fullcalendar-context-menu event-id-'+idEvent+ (isRecurrence ? ' isRecurrence Recurrence-id-'+Recurrence : '')1064 className: 'fullcalendar-context-menu event-id-'+idEvent+' calendar-id-'+calendar.id+ (isRecurrence ? ' isRecurrence Recurrence-id-'+Recurrence : '') 1065 1065 } : { 1066 1066 editable: false, … … 1071 1071 return { 1072 1072 editable: false, 1073 className: 'blocked-event-permision fullcalendar-not-context-menu event-id-'+idEvent ,1073 className: 'blocked-event-permision fullcalendar-not-context-menu event-id-'+idEvent+' calendar-id-'+calendar.id, 1074 1074 selectable: true, 1075 1075 disableDragging: isRecurrence … … 1082 1082 var returns = "" 1083 1083 returns += acl['write'] ? "" : 'blocked-event-permision '; 1084 returns += acl['busy'] ? 'fullcalendar-not-context-menu ' : (acl['read'] ? 'fullcalendar-context-menu '+ idEvent +(isRecurrence ? ' isRecurrence Recurrence-id-'+Recurrence : '') : '');1085 returns += 'event-id-'+idEvent ;1084 returns += acl['busy'] ? 'fullcalendar-not-context-menu ' : (acl['read'] ? 'fullcalendar-context-menu '+ (isRecurrence ? ' isRecurrence Recurrence-id-'+Recurrence : '') : ''); 1085 returns += 'event-id-'+idEvent+' calendar-id-'+calendar.id; 1086 1086 return returns; 1087 1087 } -
trunk/prototype/modules/calendar/js/calendar.contentMenu.js
r5863 r6286 8 8 9 9 var classes = $(this).attr('class').split(" "); 10 var idEvent = false; 11 var idRecurrence = false; 10 var idEvent = false, idRecurrence = false, idCalendar = false; 12 11 13 12 //recupera o id do calendar eo id do evento para tratamento … … 19 18 idRecurrence = classes[i].replace(/[a-zA-Z-]+/g, ''); 20 19 continue; 20 }else if (classes[i].indexOf("calendar-id-") >= 0 ){ 21 idCalendar = classes[i].replace(/[a-zA-Z-]+/g, ''); 22 continue; 21 23 } 22 24 } 23 25 24 26 var schedulable = DataLayer.get('schedulable', idEvent); 25 27 26 28 var isRecurrence = DataLayer.get('repeat', schedulable.repeat).frequency; 27 29 28 30 var template = DataLayer.render( 'templates/menu_context_event.ejs', {event: schedulable.id , 29 31 top: (event.clientY - 135), left: (event.clientX - 445), 30 signature: Calendar.signatureOf[ schedulable.calendar],32 signature: Calendar.signatureOf[idCalendar], 31 33 calendars: Calendar.calendars, isRecurrence: isRecurrence == 'none' ? false : true, 32 34 idRecurrence: idRecurrence -
trunk/prototype/modules/calendar/js/helpers.js
r6209 r6286 780 780 if(clicked == 'Sim'){ 781 781 canDiscardEventDialog = true; 782 DataLayer.remove( "schedulable", UI.dialogs.addEvent.find(".id-event").val() ); 782 /* Remove por filtro */ 783 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', objEvent.id], ['=', 'calendar', objEvent.calendar]]}); 784 Calendar.rerenderView(true); 785 /********************/ 783 786 UI.dialogs.addEvent.dialog("close"); 784 787 } … … 1905 1908 } 1906 1909 1907 function remove_event(eventId ){1910 function remove_event(eventId, idCalendar){ 1908 1911 $.Zebra_Dialog('Tem certeza que deseja excluir o evento?', { 1909 1912 'type': 'question', … … 1912 1915 'onClose': function(clicked) { 1913 1916 if(clicked == 'Sim'){ 1914 DataLayer.remove ('schedulable', ''+eventId);1915 DataLayer.commit();1917 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=','id',eventId], ['=','calendar',idCalendar]]}) 1918 Calendar.rerenderView(true); 1916 1919 } 1917 1920 } -
trunk/prototype/modules/calendar/templates/menu_context_event.ejs
r5746 r6286 12 12 <li role="menuitem" class="menu-item"><a href="../prototype/modules/calendar/export.php?event=<%=data.event%>" class="ui-corner-all">Exportar</a></li> 13 13 <%if(data.isRecurrence){%> 14 <li role="menuitem" class="menu-item"><a href="#" onclick="remove_event(<%= data.event%> );" class="ui-corner-all">Remover repetição</a></li>14 <li role="menuitem" class="menu-item"><a href="#" onclick="remove_event(<%= data.event%>, <%= signature.calendar.id %>);" class="ui-corner-all">Remover repetição</a></li> 15 15 <li role="menuitem" class="menu-item"><a href="#" onclick="remove_ocurrence(<%= data.event%>, <%= data.idRecurrence%>);" class="ui-corner-all">Remover ocorrência</a></li> 16 16 <%}else{%> 17 <li role="menuitem" class="menu-item"><a href="#" onclick="remove_event(<%= data.event%> );" class="ui-corner-all">Remover</a></li>17 <li role="menuitem" class="menu-item"><a href="#" onclick="remove_event(<%= data.event%>, <%= signature.calendar.id %>);" class="ui-corner-all">Remover</a></li> 18 18 <%}%> 19 19 <%}else{%> … … 25 25 <%if(signature.permission.acl['write'] || signature.permission.acl['remove']){%> 26 26 <%if(data.isRecurrence){%> 27 <li role="menuitem" class="menu-item"><a href="#" onclick="remove_event(<%= data.event%> );" class="ui-corner-all">Remover repetição</a></li>27 <li role="menuitem" class="menu-item"><a href="#" onclick="remove_event(<%= data.event%>, <%= signature.calendar.id %>);" class="ui-corner-all">Remover repetição</a></li> 28 28 <li role="menuitem" class="menu-item"><a href="#" onclick="remove_ocurrence(<%= data.event%>, <%= data.idRecurrence%>);" class="ui-corner-all">Remover ocorrência</a></li> 29 29 <%}else{%> 30 <li role="menuitem" class="menu-item"><a href="#" onclick="remove_event(<%= data.event%> );" class="ui-corner-all">Remover</a></li>30 <li role="menuitem" class="menu-item"><a href="#" onclick="remove_event(<%= data.event%>, <%= signature.calendar.id %>);" class="ui-corner-all">Remover</a></li> 31 31 <%}%> 32 32 <%}%>
Note: See TracChangeset
for help on using the changeset viewer.