Ignore:
Timestamp:
03/23/12 16:39:10 (12 years ago)
Author:
acoutinho
Message:

Ticket #2434 - Implementada funcionalidade de criacao de agenda para contas compartilhadas e imposicao de agendas

Location:
trunk/prototype/modules/calendar
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/calendar/constants.php

    r5780 r5804  
    4444define('CALENDAR_ACL_BUSY', 'b'); 
    4545define('CALENDAR_ACL_SHARED', 's'); 
     46define('CALENDAR_ACL_REQUIRED', 'p'); 
    4647?> 
  • trunk/prototype/modules/calendar/interceptors/DBMapping.php

    r5798 r5804  
    468468                         
    469469                        foreach($newResult as $key => &$value){ 
    470                                 if($value['user']  != 0) 
    471                                         $value['user'] = Controller::read( array( 'concept' => 'user' , 'id' => $value['user'] )); 
     470                                if($value['user']  != 0){ 
     471                                    $user = $value['user']; 
     472                                    $value['user'] = Controller::read( array( 'concept' => 'user' , 'id' => $user )); 
     473 
     474                                    if(!$value['user']) 
     475                                        $value['user'] = Controller::read( array( 'concept' => 'group' , 'id' => $user )); 
     476                                } 
    472477                        } 
    473478 
     
    640645                if(isset($v['calendar'])){ 
    641646                    $result[$i]['calendar'] = Controller::read( array( 'concept' => 'calendar' , 'id' => $v['calendar']), false, false);  
    642                                         $result[$i]['defaultAlarms'] = Controller::find( array( 'concept' => 'calendarSignatureAlarm' ) , false ,array( 'filter' => array('=', 'calendarSignature'  ,  $v['id']) ));     
    643                                         //Caso não seja o dono da agenda retorna o objeto permission com as acls 
    644                                         if($result[$i]['isOwner'] == 0){ 
    645                                                 $permission = Controller::find( array( 'concept' => 'calendarToPermission'), false ,array( 'filter' => array('AND', array('=', 'calendar' ,  $v['calendar']), array('=', 'user', Config::me('uidNumber') ) ) ) );  
    646  
    647                                                 if(!is_array($permission) || !$permission  ){ 
    648  
    649                                                         $permission = Controller::find( array( 'concept' => 'calendarToPermission'), false ,array( 'filter' => array('AND', array('=', 'calendar' ,  $v['calendar']), array('=', 'type', '1' ) ) ) );     
    650  
    651                                                 } 
    652                                                 $result[$i]['permission'] = $permission[0]; 
    653                                         } 
    654                                 } 
    655            } 
     647                    $result[$i]['defaultAlarms'] = Controller::find( array( 'concept' => 'calendarSignatureAlarm' ) , false ,array( 'filter' => array('=', 'calendarSignature'  ,  $v['id']) ));     
     648                    //Caso não seja o dono da agenda retorna o objeto permission com as acls 
     649                    if($result[$i]['isOwner'] == 0){ 
     650                            $permission = Controller::find( array( 'concept' => 'calendarToPermission'), false ,array( 'filter' => array('AND', array('=', 'calendar' ,  $v['calendar']), array('=', 'user', Config::me('uidNumber') ) ) ) );  
     651 
     652                            if(!is_array($permission) || !$permission  ){ 
     653 
     654                                    $permission = Controller::find( array( 'concept' => 'calendarToPermission'), false ,array( 'filter' => array('AND', array('=', 'calendar' ,  $v['calendar']), array('=', 'type', '1' ) ) ) );     
     655 
     656                            } 
     657                            $result[$i]['permission'] = $permission[0]; 
     658                    } 
     659            } 
     660            //TODO - Padronizar retorno do deepness 
     661//            if(isset($v['user'])) 
     662//                $result[$i]['user'] = Controller::read( array( 'concept' => 'user' , 'id' => $v['user']), false, false);  
     663          } 
    656664       }        
    657665   }  
  • trunk/prototype/modules/calendar/interceptors/LDAPMapping.php

    r5437 r5804  
    3636                                                          ) 
    3737                                                ); 
     38             
     39                else 
     40                     $criteria['filter'] = array('AND', 
     41                                                array('AND' ,  
     42                                                            array('=' , 'objectClass' , 'phpgwAccount'), 
     43                                                            array('OR' ,  
     44                                                                        array('=' , 'phpgwAccountType' , 'i'), 
     45                                                                        array('=' , 'phpgwAccountType' , 'u'), 
     46                                                                        array('=' , 'phpgwAccountType' , 's') 
     47                                                                 ) 
     48                                                     ),$criteria['filter'] 
     49                                                );                       
    3850            } 
    3951           
    4052    }   
    4153    
     54 
     55       public function encodeFindGroup( &$uri , &$params , &$criteria , $original ){ 
     56            if(isset($criteria['filter'])) 
     57            { 
     58                if($criteria['filter'][0] === '*' && $criteria['filter'][1] === 'name') //Busca pelo nome group DFD00032 
     59                    $criteria['filter'] = array('AND', 
     60                                                array('AND' ,  
     61                                                            array('=' , 'objectClass' , 'phpgwAccount'), 
     62                                                            array('=' , 'phpgwAccountType' , 'g') 
     63                                                                  
     64                                                    ), 
     65                                                 array('AND' ,   
     66                                                                array('!','phpgwAccountVisible','-1'), 
     67                                                                array('OR',  
     68                                                                        array('=','accountStatus','active'), 
     69                                                                        array('=','objectClass','posixGroup') 
     70                                                                    ), 
     71                                                                array('OR',  
     72                                                                        array('*','name',$criteria['filter'][2]), 
     73                                                                        array('*','id',$criteria['filter'][2]), 
     74                                                                        array('*','mail',$criteria['filter'][2]), 
     75                                                                        array('*','mailAlternateAddress',$criteria['filter'][2]), 
     76                                                                    ) 
     77                                                          ) 
     78                                                ); 
     79                 
     80                 
     81                    else 
     82                        $criteria['filter'] = array('AND', 
     83                            array('AND' ,  
     84                                        array('=' , 'objectClass' , 'phpgwAccount'), 
     85                                        array('=' , 'phpgwAccountType' , 'g') 
     86                                    ),$criteria['filter'] 
     87                            );                       
     88            } 
     89           
     90    }   
     91      
     92     
     93     
    4294} 
    4395 
  • trunk/prototype/modules/calendar/interceptors/Notifications.php

    r5523 r5804  
    148148 
    149149                $data['nowStartDate'] = date_format( $sTime , 'd/m/Y'); 
    150         $data['nowStartTime'] = ($schedulableReference['allDay']) ? '' : date_format( $sTime , 'H:i'); 
    151         $data['nowEndDate'] = date_format( $eTime , 'd/m/Y'); 
    152         $data['nowEndTime'] = ($schedulableReference['allDay']) ? '' :  date_format( $eTime , 'H:i'); 
     150                $data['nowStartTime'] = ($schedulableReference['allDay']) ? '' : date_format( $sTime , 'H:i'); 
     151                $data['nowEndDate'] = date_format( $eTime , 'd/m/Y'); 
     152                $data['nowEndTime'] = ($schedulableReference['allDay']) ? '' :  date_format( $eTime , 'H:i'); 
    153153                $data['userRequest'] = Config::me('uid'); 
    154154                 
     
    161161                $params['body'] = parseTPL::load_tpl( $data ,ROOTPATH.'/modules/calendar/templates/notify_suggestion_body.tpl'); 
    162162                $params['subject'] = parseTPL::load_tpl( $subject ,ROOTPATH.'/modules/calendar/templates/notify_subject.tpl');; 
    163                 $params['from'] = Config::me('mail');    
     163                $params['from'] ='"'.Config::me('cn').'" <'.Config::me('mail').'>';    
    164164                $params['to'] = $organizer['user']['mail']; 
    165165                 
     
    192192                $params['subject'] = parseTPL::load_tpl( $subject ,ROOTPATH.'/modules/calendar/templates/notify_subject.tpl');; 
    193193                $params['to'] = $params['from']; 
    194                 $params['from'] = Config::me('mail');    
     194                $params['from'] = $params['from'] ='"'.Config::me('cn').'" <'.Config::me('mail').'>'; 
    195195        } 
    196196         
     
    435435       $mail['body'] = parseTPL::load_tpl( $data ,ROOTPATH.'/modules/calendar/templates/'.$template.'.tpl'); 
    436436       $mail['subject'] = parseTPL::load_tpl( $subject ,ROOTPATH.'/modules/calendar/templates/notify_subject.tpl');; 
    437        $mail['from'] = Config::me('mail');    
     437       $mail['from'] = '"'.Config::me('cn').'" <'.Config::me('mail').'>'; 
    438438       $mail['to'] = $to; 
    439439       Controller::create( array( 'service' => 'SMTP' ), $mail );  
  • trunk/prototype/modules/calendar/js/calendar.codecs.js

    r5752 r5804  
    4444        'd' : 'remove', 
    4545        'b' : 'busy', 
    46         's' : 'shared' 
     46        's' : 'shared', 
     47        'p' : 'required' 
    4748} 
    4849 
     
    145146                *  quando forçado um get do banco, deverá ser criado uma condição para o mesmo 
    146147                */ 
    147                 var descart = DataLayer.get("calendarSignature", {filter: ['=', 'user', User.me.id], criteria: {deepness: 2}}); 
    148                 this.signatures  = DataLayer.get("calendarSignature", {filter: ['=', 'user', User.me.id], criteria: {deepness: 2}}, true); 
     148                var filter = ['=', 'user', User.me.id]; 
     149                if(!!User.me.gidNumber){ 
     150                        if(!$.isArray(User.me.gidNumber)) 
     151                                User.me.gidNumber = [User.me.gidNumber]; 
     152 
     153                        filter = ['OR', filter, ['IN', 'user', User.me.gidNumber]]; 
     154                } 
     155                 
     156                var descart = DataLayer.get("calendarSignature", {filter: filter, criteria: {deepness: 2}}); 
     157                this.signatures  = DataLayer.get("calendarSignature", {filter: filter, criteria: {deepness: 2}}, true); 
    149158           
    150159                var prevSources = this.sources; 
  • trunk/prototype/modules/calendar/templates/calendar_list.ejs

    r5596 r5804  
    11<div class="all-list-calendars"> 
    2 <% var signature = data.signatures %> 
    3 <% var external = false %> 
    4 <div class="my-calendars"> 
    5         <a title='Minhas agendas' class="title-my-calendars" aria-expanded='false' role='button' tabindex='0'>Minhas agendas</a> 
    6         <span class="status-list ui-icon ui-icon-triangle-1-s"></span> 
    7         <a href="#" class="button new new-calendar">Nova Agenda</a> 
    8         <ul class="list-calendars my-list-calendars"> 
    9                                 <% for (var i=0; i < signature.length; i++) { 
    10                                         if(signature[i].isOwner == 1){ 
    11                                 %> 
    12                                         <li class="list-calendars-item list-calendars-item-<%= signature[i].calendar.id %>"> 
    13                                                  
    14                                                 <div> 
    15                                                         <input class="calendar-view" type="checkbox" name="" value="<%= signature[i].calendar.id %>" checked="checked"/> 
    16                                                         <label><%= signature[i].calendar.name %></label> 
    17                                                          
    18                                                 </div>  
    19                                                         <a class="cal-list-options-btn my-cal-list-options-btn-<%= signature[i].calendar.id %>" style="background-color:#<%=signature[i].backgroundColor%>; border-color:#<%= signature[i].borderColor%>;"> 
    20                                                                 <img src="../prototype/modules/calendar/img/arrow_down.png" width="10" height="10" class="cal-list-img"/> 
    21                                                         </a> 
    22                                                          
    23                                                          
    24                                                 <div class="cal-list-options my-cal-list-options-<%= signature[i].calendar.id %> hidden"> 
    25                                                         <ul> 
    26                                                                 <li><a href="#" onclick="add_tab_configure_calendar(<%= signature[i].calendar.id%>);">Configurações</a></li> 
    27                                                                 <li><a href="#" onclick="show_modal_import_export(0, <%= signature[i].calendar.id%>);">Importar</a></li> 
    28                                                                 <li><a href="#" onclick="show_modal_import_export(1, <%= signature[i].calendar.id%>);">Exportar</a></li> 
    29                                                                 <li><a href="#" onclick="show_modal_shared(<%= signature[i].calendar.id%>);">Compartilhar agenda</a></li> 
    30                                 <li><a href="#" onclick="remove_calendar();">Remover agenda</a></li> 
    31                                                         </ul> 
    32                                                          
    33                                                 </div> 
    34                                         </li> 
    35                         <%               
    36                                         }else 
    37                                                 external = true; 
    38                                 } 
    39                         %> 
    40                     
    41         </ul> 
     2    <% var signature = data.signatures %> 
     3    <% var external = false %> 
     4    <div class="my-calendars"> 
     5        <a title='Minhas agendas' class="title-my-calendars" aria-expanded='false' role='button' tabindex='0'>Minhas agendas</a> 
     6        <span class="status-list ui-icon ui-icon-triangle-1-s"></span> 
     7        <a href="#" class="button new new-calendar">Nova Agenda</a> 
     8        <ul class="list-calendars my-list-calendars"> 
     9            <% for (var i=0; i < signature.length; i++) { 
     10            if(signature[i].isOwner == 1){ 
     11            %> 
     12            <li class="list-calendars-item list-calendars-item-<%= signature[i].calendar.id %>"> 
     13 
     14                <div> 
     15                    <input class="calendar-view" type="checkbox" name="" value="<%= signature[i].calendar.id %>" checked="checked"/> 
     16                    <label><%= signature[i].calendar.name %></label> 
     17 
     18                </div>  
     19                <a class="cal-list-options-btn my-cal-list-options-btn-<%= signature[i].calendar.id %>" style="background-color:#<%=signature[i].backgroundColor%>; border-color:#<%= signature[i].borderColor%>;"> 
     20                    <img src="../prototype/modules/calendar/img/arrow_down.png" width="10" height="10" class="cal-list-img"/> 
     21                </a> 
     22 
     23 
     24                <div class="cal-list-options my-cal-list-options-<%= signature[i].calendar.id %> hidden"> 
     25                    <ul> 
     26                        <li><a href="#" onclick="add_tab_configure_calendar(<%= signature[i].calendar.id%>);">Configurações</a></li> 
     27                        <li><a href="#" onclick="show_modal_import_export(0, <%= signature[i].calendar.id%>);">Importar</a></li> 
     28                        <li><a href="#" onclick="show_modal_import_export(1, <%= signature[i].calendar.id%>);">Exportar</a></li> 
     29                        <li><a href="#" onclick="show_modal_shared(<%= signature[i].calendar.id%>);">Compartilhar agenda</a></li> 
     30                        <li><a href="#" onclick="remove_calendar();">Remover agenda</a></li> 
     31                    </ul> 
     32 
     33                </div> 
     34            </li> 
     35            <%           
     36            }else 
     37            external = true; 
     38            } 
     39            %> 
     40 
     41        </ul> 
     42    </div> 
     43 
     44    <div class="signed-calendars"> 
     45        <a title='Agendas assinadas' class="title-signed-calendars" aria-expanded='false' role='button' tabindex='0'>Agendas assinadas</a>                       
     46        <span class="status-list-shared ui-icon ui-icon-triangle-1-s"></span> 
     47        <a href="#" class="button new new-calendar-shared tiny">Nova Agenda</a> 
     48 
     49        <% if (external) { %>    
     50        <ul class="list-calendars signed-list-calendars"> 
     51            <% for (var i=0; i < signature.length; i++) { 
     52            if(signature[i].isOwner == 0){ 
     53            %> 
     54            <li class="list-calendars-item list-calendars-item-<%= signature[i].calendar.id %>"> 
     55                <input class="calendar-view" type="checkbox" name="" value="<%= signature[i].calendar.id %>" checked="checked"/> 
     56                <label><%= signature[i].calendar.name %></label> 
     57 
     58                <a class="cal-list-options-btn my-cal-list-options-btn-<%= signature[i].calendar.id %>" style="background-color:#<%=signature[i].backgroundColor%>; border-color:#<%= signature[i].borderColor%>;"> 
     59                    <img src="../prototype/modules/calendar/img/arrow_down.png" width="10" height="10" class="cal-list-img"/></a> 
     60                <div class="cal-list-options my-cal-list-options-<%= signature[i].calendar.id  %> hidden"> 
     61                    <ul> 
     62                        <!--<li><a href="#" onclick="add_tab_configure_calendar(<%= signature[i].calendar.id %>);">Configurações</a></li>--> 
     63                        <li><a href="#" onclick="show_modal_import_export(0, <%= signature[i].calendar.id %>);">Importar</a></li> 
     64                        <li><a href="#" onclick="show_modal_import_export(1, <%= signature[i].calendar.id %>);">Exportar</a></li> 
     65                        <%if(!signature[i].permission.acl['required']){%> 
     66                            <li><a href="#" onclick="cancel_signature(<%= signature[i].id %>);">Cancelar assinatura</a></li> 
     67                        <%}%> 
     68                    </ul> 
     69 
     70                </div> 
     71 
     72            </li> 
     73            <%           
     74            } 
     75            } 
     76            %> 
     77        </ul> 
     78        <% } %> 
     79    </div> 
    4280</div> 
    43  
    44 <div class="signed-calendars"> 
    45         <a title='Agendas assinadas' class="title-signed-calendars" aria-expanded='false' role='button' tabindex='0'>Agendas assinadas</a>                       
    46         <span class="status-list-shared ui-icon ui-icon-triangle-1-s"></span> 
    47         <a href="#" class="button new new-calendar-shared tiny">Nova Agenda</a> 
    48          
    49         <% if (external) { %>    
    50                 <ul class="list-calendars signed-list-calendars"> 
    51                                 <% for (var i=0; i < signature.length; i++) { 
    52                                                 if(signature[i].isOwner == 0){ 
    53                                         %> 
    54                                                 <li class="list-calendars-item list-calendars-item-<%= signature[i].calendar.id %>"> 
    55                                                         <input class="calendar-view" type="checkbox" name="" value="<%= signature[i].calendar.id %>" checked="checked"/> 
    56                                                         <label><%= signature[i].calendar.name %></label> 
    57  
    58                                                         <a class="cal-list-options-btn my-cal-list-options-btn-<%= signature[i].calendar.id %>" style="background-color:#<%=signature[i].backgroundColor%>; border-color:#<%= signature[i].borderColor%>;"> 
    59                                                         <img src="../prototype/modules/calendar/img/arrow_down.png" width="10" height="10" class="cal-list-img"/></a> 
    60                                                         <div class="cal-list-options my-cal-list-options-<%= signature[i].calendar.id  %> hidden"> 
    61                                                                 <ul> 
    62                                                                         <!--<li><a href="#" onclick="add_tab_configure_calendar(<%= signature[i].calendar.id %>);">Configurações</a></li>--> 
    63                                                                         <li><a href="#" onclick="show_modal_import_export(0, <%= signature[i].calendar.id %>);">Importar</a></li> 
    64                                                                         <li><a href="#" onclick="show_modal_import_export(1, <%= signature[i].calendar.id %>);">Exportar</a></li> 
    65                                                                         <li><a href="#" onclick="cancel_signature(<%= signature[i].id %>);">Cancelar assinatura</a></li> 
    66                                                                 </ul> 
    67  
    68                                                 </div> 
    69  
    70                                                 </li> 
    71                                         <%               
    72                                                 } 
    73                                         } 
    74                                         %> 
    75                 </ul> 
    76         <% } %> 
    77         </div> 
    78 </div> 
Note: See TracChangeset for help on using the changeset viewer.