Changeset 7869


Ignore:
Timestamp:
02/06/13 17:33:31 (7 years ago)
Author:
eduardow
Message:

Ticket #3341 - Implementacao da DFD0151 - Nova funcionalidade ao alterar o grupo de uma atividade

Location:
sandbox/2.5.1-expresso2/prototype/modules/calendar
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • sandbox/2.5.1-expresso2/prototype/modules/calendar/interceptors/DBMapping.php

    r7795 r7869  
    599599                    $isAllDay = 1; 
    600600 
     601                    $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'activity', $taskToActivity[0]['activity']), array('=', 'owner', Config::me('uidNumber'))), 'deepness' => 2)); 
     602 
    601603                    if(!empty($activity)){ 
    602604                        $start = $params['startTime']; 
    603605                        $end = $params['endTime']; 
    604606                        foreach($taskToActivity as $t){ 
    605                          if($t['task']['id'] != $params['id']){ 
    606                             $start = $t['task']['startTime'] < $start ? $t['task']['startTime'] : $start; 
    607                             $end = $t['task']['endTime'] > $end ? $t['task']['endTime'] : $end; 
    608                             $isAllDay = (($isAllDay == 1) && ($t['task']['allDay'] == '1')) ? 1 : 0; 
     607                         if($t['task']['id'] != $params['id']){  
     608                             $start = $t['task']['startTime'] < $start ? $t['task']['startTime'] : $start;  
     609                             $end = $t['task']['endTime'] > $end ? $t['task']['endTime'] : $end;  
     610                             $isAllDay = (($isAllDay == 1) && ($t['task']['allDay'] == '1')) ? 1 : 0;  
    609611                         } 
    610612                        } 
     
    841843    } 
    842844 
     845    //Função que traz o 'calendar'(grupo) das tarefas. 
     846    public function getCalendarTask( $task ){ 
     847 
     848        $sql = 'select co.calendar_id as "calendar" from calendar_to_calendar_object as "co", calendar_signature as "cs" where cs.user_uidnumber = '. Config::me('uidNumber')  
     849        .' AND cs.is_owner = 1 AND cs.calendar_id = co.calendar_id AND co.calendar_object_id = '. $task; 
     850 
     851 
     852        $returns = Controller::service('PostgreSQL')->execResultSql($sql); 
     853 
     854        return $returns[0]['calendar']; 
     855 
     856    } 
     857 
    843858    //TODO: Remover apos suporte a deepness na api  
    844859    public function deepnessFindTask(&$uri, &$result, &$criteria, $original) { 
    845         if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0)  
    846            foreach($result as &$value) 
     860 
     861        if (isset($criteria['deepness']) && $criteria['deepness'] != 0){  
     862              foreach($result as &$value){ 
    847863                $value['task'] = Controller::read(array('concept' => 'schedulable', 'id' => $value['task'])); 
    848             
     864                $value['task']['calendar'] = self::getCalendarTask( $value['task']['id'] );     
     865 
     866            } 
    849867         
    850868        return $result; 
    851869    } 
     870    } 
    852871 
    853872    //TODO: Remover apos suporte a deepness na api  
    854873    public function deepnessFindHistoric(&$uri, &$result, &$criteria, $original) { 
    855         if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) { 
     874        if (isset($criteria['deepness']) && $criteria['deepness'] != 0) { 
    856875            foreach($result as &$v){ 
    857876                $v['user'] = Controller::read(array('concept' => 'user', 'id' => $v['user'])); 
     
    883902                .'calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", ' 
    884903                .'calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence", ' 
    885                 .'calendar_object.tzid as "timezone" ' 
    886                 .'FROM calendar_object ' 
    887                 .'WHERE ( calendar_object.id = '. $criteria['schedulable'] .')'; 
     904                .'calendar_object.tzid as "timezone", calendar_to_calendar_object.calendar_id as "calendar" '  
     905                .'FROM calendar_object, calendar_to_calendar_object '  
     906                .'WHERE ( calendar_object.id = '. $criteria['schedulable'] .' AND calendar_to_calendar_object.calendar_object_id = calendar_object.id)'; 
     907 
    888908 
    889909            $params = Controller::service('PostgreSQL')->execResultSql($sql); 
     910 
     911            foreach( $params as &$event ){  
     912                if(isset( $event['repeat'] ) && isset( $event['repeat']['id'] ) ){  
     913                    $occurrences = Controller::service('PostgreSQL')->execResultSql('SELECT DISTINCT occurrence FROM calendar_object as "c", calendar_repeat_occurrence as "o", calendar_repeat as "r" WHERE r.object_id = '. $event['id'] .' AND o.repeat_id = r.id ' );  
     914    
     915                    if($occurrences){  
     916                        $event['occurrences'] = array();  
     917 
     918                        foreach($occurrences as $o)  
     919                            $event['occurrences'][] = $o['occurrence'];  
     920                    }else  
     921                        unset( $event['occurrences'] );  
     922                }  
     923            } 
    890924 
    891925            $params = self::deepnessFindEvent($uri, $params, $criteria, $original); 
     
    899933    //TODO: Remover apos suporte a deepness na api  
    900934    public function deepnessFindEvent(&$uri, &$result, &$criteria, $original) { 
    901         if ((isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) ) { 
     935        if ((isset($criteria['deepness']) && $criteria['deepness'] != 0) ) { 
    902936 
    903937            $date = new DateTime('now', new DateTimeZone('UTC')); 
     
    9881022    public static function deepnessReadParticipant( &$uri , &$result , &$criteria , $original ){ 
    9891023         
    990        if(isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) 
     1024       if(isset($criteria['deepness']) && $criteria['deepness'] != 0) 
    9911025       { 
    9921026            if(isset($result['id']) && isset($result['user'])) 
  • sandbox/2.5.1-expresso2/prototype/modules/calendar/js/activity.helpers.js

    r7680 r7869  
    222222    } 
    223223    */ 
    224         UI.dialogs.addActivity.find('select[name="activityStatus"], input[name="allDay"]').removeAttr('disabled'); 
    225     canDiscardActivityDialog = true; 
    226          
    227         UI.dialogs.addActivity.children().find('form.form-addactivity').submit(); 
    228         UI.dialogs.addActivity.dialog("close"); 
     224 
     225    //Código o qual será chamado para o salvamento da Atividade. 
     226    var handler_save = function (objsToSave){ 
     227        UI.dialogs.addActivity.find('select[name="activityStatus"], input[name="allDay"]').removeAttr('disabled'); 
     228        canDiscardActivityDialog = true; 
     229 
     230        var activity_tst = DataLayer.form( UI.dialogs.addActivity.children().find('form') ); 
     231        if(objsToSave) 
     232            objsToSave[objsToSave.length] = activity_tst; 
     233        
     234        else  
     235            objsToSave = activity_tst; 
     236        DataLayer.put('schedulable', objsToSave); 
     237         
     238        UI.dialogs.addActivity.dialog("close"); 
     239    } 
     240 
     241    //Verifica se o grupo da atividade mudou 
     242    if (group.id != UI.dialogs.addActivity.children().find('form select[name="group"] :selected').val() && typeof group.id != 'undefined') { 
     243        //Janela de dialogo 
     244        $.Zebra_Dialog('Você alterou o grupo da atividade, deseja alterar também o grupo das tarefas pertencentes à essa atividade?', { 
     245            'type':     'question', 
     246            'overlay_opacity': '0.5', 
     247            'modal': true, 
     248            'buttons':  ['Não Alterar', 'Alterar'], 
     249            'onClose':  function(clicked) { 
     250                if(clicked == 'Não Alterar') { 
     251                   
     252                    handler_save(); 
     253                }else{ 
     254                    var objsToSave = []; 
     255                    //percorre as tarefas da atividade para verificar se o grupo mudou 
     256                    for(var t in objActivity.tasks){ 
     257                        if(typeof objActivity.tasks[t].group != 'undefined') 
     258                            if (objActivity.tasks[t].group != UI.dialogs.addActivity.children().find('form select[name="group"] :selected').val()){ 
     259                                objActivity.tasks[t].group = UI.dialogs.addActivity.children().find('form select[name="group"] :selected').val(); 
     260                                objsToSave[objsToSave.length] = {'calendar' : objActivity.tasks[t].group, 'id': t}; 
     261                            } 
     262                    } 
     263                    handler_save(objsToSave); 
     264                     
     265                } 
     266                 
     267            } 
     268        }); 
     269                         
     270     
     271    } else { 
     272        handler_save(); 
     273    } 
    229274 
    230275}).end() 
     
    259304                    ['=', 'type', '2'],  
    260305                    ['>=','startTime', $.now()],  
    261                     ['in', 'calendar',  
    262                         [$('div.new-activity-win.active select[name="groupFilter"]').val()] 
    263                     ] 
     306                    ['in', 'calendar', [$('div.new-activity-win.active select[name="groupFilter"]').val()]] 
    264307                ], criteria: {filterTasks: true, deepness: 2} 
    265308        }; 
     
    412455    updateActivity = false; 
    413456 
    414     var objActivity = DataLayer.get('schedulable:activity', UI.dialogs.addActivity.find('input[name="idActivity"]').val()); 
     457    var idTask = UI.dialogs.addActivity.find('input[name="idActivity"]').val();  
     458       
     459    getSchedulable( idTask );  
     460       
     461    var objActivity = DataLayer.get('schedulable:activity', idTask );  
    415462    var blkAddTask = UI.dialogs.addActivity.find('#group_addactivity_details8'); 
    416463    var blkAuto = UI.dialogs.addActivity.find('#group_addactivity_details1'); 
     
    671718            text: false 
    672719        }).click(function () { 
    673             var task = DataLayer.get('schedulable:task', $(this).parents('li').find('input[name="idtask[]"]').val()); 
    674             taskDetails(task, true, '',true, null, true);            
     720            var idTask = $(this).parents('li').find('input[name="idtask[]"]').val()  
     721        getSchedulable(idTask);  
     722        var task = DataLayer.get('schedulable:task', idTask);  
     723        taskDetails(task, true, '',true, null, true);      
    675724        }) 
    676725        .addClass('tiny disable ui-button-disabled ui-state-disabled') 
  • sandbox/2.5.1-expresso2/prototype/modules/calendar/js/calendar.codecs.js

    r7790 r7869  
    11711171                                        percentage: task.percentage, 
    11721172                                        priority: task.priority, 
    1173                                         summary: task.summary 
     1173                                        summary: task.summary, 
     1174                                        group: task.calendar 
    11741175                } 
    11751176 
  • sandbox/2.5.1-expresso2/prototype/modules/calendar/js/init.js

    r7787 r7869  
    503503                    break; 
    504504                case 3: 
     505                    DataLayer.remove('taskToActivity', false);//Limpa o cache 
    505506                    var activity = getSchedulable(evt.id, ''); 
    506507                    activity.group = evt.calendar; 
Note: See TracChangeset for help on using the changeset viewer.