- Timestamp:
- 05/23/12 17:11:17 (12 years ago)
- Location:
- trunk/prototype
- Files:
-
- 1 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/api/datalayer.js
r6008 r6286 554 554 if( oneSide ) 555 555 this.commit( concept, ids ); 556 557 this.broadcast( concept, oneSide ? 'server' : bothSides ? 'serverclient' : 'client', false ); 558 }, 559 560 /* 561 * RemoveFilter = método para remoção de objetos por critério, funcionalidade não implementada no método remove 562 * TODO - A remoção é feira em tempo real, onde ainda o mesmo não suporta remoção apenas na camada do cliente 563 * caso necessária tao funcionalidade a mesma será implementada no futuro 564 **/ 565 removeFilter: function( concept, filter, oneSide ){ 566 //remover 567 oneSide = true; 568 569 if(filter) 570 filter = this.criteria(concept, filter); 571 else 572 return; 573 574 if ( $.type(filter) === "array" ) 575 filter = { filter: filter, criteria: false }; 576 577 var toRemove = {}; 578 579 toRemove[concept] = []; 580 581 toRemove[concept][toRemove[concept].length] = {filter: filter.filter, criteria: filter.criteria, method: 'delete'}; 582 583 this.dispatch( 'call', toRemove, false, true ); 556 584 557 585 this.broadcast( concept, oneSide ? 'server' : bothSides ? 'serverclient' : 'client', false ); -
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 <%}%> -
trunk/prototype/post.php
r6071 r6286 8 8 if( count($_FILES) ) 9 9 { 10 $files = array(); 11 foreach( $_FILES as $name => $file ) 10 $files = array(); 11 foreach( $_FILES as $name => $file ) 12 { 13 if( is_array( $file['name'] ) ) 12 14 { 13 if( is_array( $file['name'] ) ) 14 { 15 foreach( $file['name'] as $key => $value ){ 16 $counter = count($files); 17 $files[$name.$counter] = array('name' => $file['name'][$counter], 18 'type' => $file['type'][$counter], 19 'source' => base64_encode(file_get_contents( $file['tmp_name'][$counter], $file['size'][$counter])), 20 'size' => $file['size'][$counter], 21 'error' => $file['error'][$counter] 22 ); 23 } 24 }else 25 $files[$name] = $file; 26 } 27 28 $_FILES = $files; 15 foreach( $file['name'] as $key => $value ){ 16 $counter = count($files); 17 $files[$name.$counter] = array('name' => $file['name'][$counter], 18 'type' => $file['type'][$counter], 19 'source' => base64_encode(file_get_contents( $file['tmp_name'][$counter], $file['size'][$counter])), 20 'size' => $file['size'][$counter], 21 'error' => $file['error'][$counter] 22 ); 23 } 24 }else 25 $files[$name] = $file; 26 } 27 28 $_FILES = $files; 29 30 31 if(isset($data['MAX_FILE_SIZE'])) 32 unset($data['MAX_FILE_SIZE']); 29 33 } 30 34 31 if(isset($data['MAX_FILE_SIZE']))32 unset($data['MAX_FILE_SIZE']);33 35 34 36 require_once "api/controller.php";
Note: See TracChangeset
for help on using the changeset viewer.