Changeset 6988


Ignore:
Timestamp:
08/10/12 15:52:37 (7 years ago)
Author:
acoutinho
Message:

Ticket #2966 - Correcao de bugs e refactoring das novas funcionalidades

Location:
sandbox/2.4.2-expresso1/prototype/modules/calendar
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • sandbox/2.4.2-expresso1/prototype/modules/calendar/interceptors/DBMapping.php

    r6985 r6988  
    1313    { 
    1414 
    15         if (!is_numeric($params['startTime'])) 
     15        if (isset($params['startTime']) && !is_numeric($params['startTime'])){ 
    1616            $params['startTime'] = self::parseTimeDate($params['startTime'], $params['timezone']); 
    17  
    18         if (!is_numeric($params['endTime'])) { 
     17            $params['rangeStart'] = $params['startTime']; 
     18        } 
     19        if (isset($params['endTime']) && !is_numeric($params['endTime'])) { 
    1920            $params['endTime'] = self::parseTimeDate($params['endTime'], $params['timezone']); 
    2021 
    2122            if ($params['allDay']) 
    2223                $params['endTime'] = $params['endTime'] + 86400000; 
     24             
     25            $params['rangeEnd'] = $params['endTime']; 
    2326        } 
    2427 
    2528        if (isset($params['due']) && $params['due'] != '' && !is_numeric($params['due'])) 
    2629            $params['due'] = self::parseTimeDate($params['due'], $params['timezone']); 
    27  
    28  
    29         $params['rangeEnd'] = $params['endTime']; 
    30         $params['rangeStart'] = $params['startTime']; 
    3130 
    3231        /////////////////////////////////////////////////////////////////// 
  • sandbox/2.4.2-expresso1/prototype/modules/calendar/js/calendar.codecs.js

    r6985 r6988  
    391391}); 
    392392 
     393DataLayer.codec( "schedulable", "taskEdit", { 
     394 
     395    decoder: function( evtObj ){ 
     396        Encoder.EncodeType = "entity"; 
     397         
     398        if( notArray = $.type(evtObj) !== "array" ) 
     399            evtObj = [ evtObj ]; 
     400 
     401        var pref = User.preferences; 
     402                 
     403        var res = $.map(evtObj, function( form ){ 
     404                         
     405            return DataLayer.merge({ 
     406                id: form.idTask, 
     407                percentage: form.percentage, 
     408                type: '2',  
     409                status: form.taskStatus, 
     410                participants : $.map(form.attendee, function( attendee, i ){ 
     411                    if(isNaN(attendee)){ 
     412                        return{ 
     413                            id: attendee, 
     414                            acl: form.attendeeAcl[i], 
     415                            delegatedFrom: !!form.delegatedFrom[i] ? form.delegatedFrom[i] : 0, 
     416                            isOrganizer: (form.attendee_organizer == attendee ? 1 : 0 ), 
     417                            isExternal: !!parseInt(form.attendeeType[i]) ? 1 : 0, 
     418                            acl: form.attendeeAcl[i].replace('o', '') 
     419                        }; 
     420                    }else{ 
     421                        if(DataLayer.get('participant', attendee).user == User.me.id){ 
     422                            var me = { 
     423                                user: User.me.id, 
     424                                status: form.status, 
     425                                id: attendee, 
     426                                isOrganizer: 0, 
     427                                receiveNotification : (!!form.receiveNotification ? 1 : 0), 
     428                                alarms: typeof(form.alarmTime) != 'undefined' ?  
     429                                $.map( form.alarmTime || [], function( alarmTime, i ){ 
     430 
     431                                    if( alarmTime === "" ) 
     432                                        return( null ); 
     433 
     434                                    return !!form.alarmId[i] ? 
     435                                    { 
     436                                        type: form.alarmType[i],  
     437                                        unit: form.alarmUnit[i],  
     438                                        time: form.alarmTime[i],  
     439                                        id: form.alarmId[i] 
     440                                        } :  
     441{ 
     442                                        type: form.alarmType[i], 
     443                                        unit: form.alarmUnit[i],  
     444                                        time: form.alarmTime[i] 
     445                                        }; 
     446                                }) : [] 
     447                            }; 
     448                                                         
     449                            if(form.startDate){ 
     450                                var tzId =  DataLayer.get('schedulable', form.idEvent).timezone || User.preferences.timezone, 
     451                                formatString = pref.dateFormat + " " + pref.hourFormat; 
     452                                                                 
     453                                DataLayer.put('notification', { 
     454                                    participant: me.id, 
     455                                    type: 'suggestion', 
     456                                    startTime: Date.parseExact(form.startDate + (!!form.allDay ? " 00:00": " "+$.trim(form.startHour)) , formatString ).toString('yyyy-MM-dd HH:mm:00'), 
     457                                    endTime:  Date.parseExact(form.endDate + ( !!form.allDay ? " 00:00": " "+$.trim(form.endHour)), formatString ).toString('yyyy-MM-dd HH:mm:00'), 
     458                                    allDay: ( !!form.allDay ? 1 : 0 ), 
     459                                    schedulable: form.idEvent 
     460                                }); 
     461                                                         
     462                            } 
     463                            return me; 
     464                        }else return(null); 
     465                    }; 
     466                }) 
     467            }, (form.group != form.lastGroup? {calendar: form.group, lastCalendar: form.lastGroup} : {})) 
     468        }); 
     469        return notArray ? res[0] : res; 
     470    }, 
     471 
     472    encoder: function( evtObj ){} 
     473 
     474}); 
     475 
    393476DataLayer.codec( "schedulable", "preview", { 
    394477 
     
    794877        }), 
    795878        organizer: participantInfo.organizer || me, 
     879        isOrganizer: (participantInfo.organizer || me).id == me.id, 
    796880        alarms: !!participantInfo.user ? participantInfo.user.alarms : [], 
    797881        status: !!participantInfo.user ? participantInfo.user.status : 1, 
  • sandbox/2.4.2-expresso1/prototype/modules/calendar/js/helpers.js

    r6985 r6988  
    26292629    DataLayer.render( 'templates/import_export.ejs', { 
    26302630        calendars: typeView == 0 ? Calendar.calendars : Calendar.groups,  
    2631         owner: User.me.id 
     2631        owner: User.me.id, 
     2632        typeView: typeView 
    26322633        }, function( html ){ 
    26332634 
  • sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/attendees_task.ejs

    r6974 r6988  
    1515                <%}%> 
    1616            </select> 
    17                                 <% if (data.task.id && (data.task.me.id != data.task.organizer.id) && !data.task.delegatedFrom[data.task.me.id]) { %> 
    18                                         <fieldset class="add-attendee-options-read"> 
    19                                                 <a href="#" class="button participant-delegate add-attendee-options-button">Delegar participação a um novo participante</a> 
    20                                         </fieldset> 
    21                                 <%}%> 
     17            <% if (data.task.id && !data.task.delegatedFrom[data.task.me.id]) { %> 
     18                    <fieldset class="add-attendee-options-read"> 
     19                            <a href="#" class="button participant-delegate add-attendee-options-button">Delegar participação a um novo participante</a> 
     20                    </fieldset> 
     21            <%}%> 
    2222            <p class="input-group request-update <%=data.task.delegatedFrom[data.task.me.id] ? '' : "hidden"%>"> 
    2323                <input type="checkbox" name="receiveNotification" value="true" <%=data.task.me.receiveNotification =='1' ? 'checked="checked"' : ''%>/> 
    24                 <label for="request-update">Receber atualizações</label> 
     24                <label for="request-update">Receber atualizações</label> 
    2525            </p> 
    2626             
     
    3535                <label for="attendee" title="<%=  data.task.me.user ? data.task.me.user.mail : data.task.me.mail %>" class="mail hidden"></label> 
    3636                 
    37                 <li class="organizer <%= data.task.me.id == data.task.organizer.id ? "hidden" : "" %>">  
     37                <li class="organizer <%= data.task.isOrganizer ? "hidden" : "" %>">  
    3838                    <div style="overflow:hidden; width:100%; display:table;"> 
    3939                        <span class="space-status ui-icon <%=iconStatus[data.task.organizer.status]%>" title="<%=legendStatus[data.task.organizer.status]%>"></span> 
     
    7474                            <span class="space-special ui-icon <%= !!data.task.delegatedFrom[data.task.attendee[i].id] ? iconStatus[5] : iconStatus[6]%>" title="<%=!!data.task.delegatedFrom[data.task.attendee[i].id] ? legendStatus[5] : legendStatus[6]%>"></span> 
    7575 
    76                             <input type="checkbox" class="new" value="<%= data.task.attendee[i].id %>"> 
     76                            <input type="checkbox" class="new" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= data.task.attendee[i].id %>"> 
    7777 
    7878                            <input type="hidden" name="attendee[]" value="<%=data.task.attendee[i].id%>"> 
     
    8383                            <label title="<%= data.task.attendee[i].mail ? data.task.attendee[i].mail : ''%>" class="mail <%= !!data.task.delegatedFrom[data.task.attendee[i].id] ? "name-special-delegated" : "name-special"%>"><%= data.task.attendee[i].mail ? data.task.attendee[i].mail : '' %></label> 
    8484                            <span class="ui-icon ui-icon-close ui-corner-all ui-icon-float-right"></span> 
    85                         </div>  
    86                         <div class="attendee-options"> 
    87                             <a class="button close new">Remover</a> 
    8885                        </div> 
    89  
     86                        <%if(data.isOrganizer){%> 
     87                            <div class="attendee-options"> 
     88                                <a class="button close new">Remover</a> 
     89                            </div> 
     90                        <%}%> 
    9091 
    9192                        <%if(!!data.task.delegatedFrom[data.task.attendee[i].id]){%> 
     
    117118            </ul> 
    118119        </dd> 
    119         <dd class="attendee-list-add"> 
     120        <dd class="attendee-list-add" <%= data.isOrganizer ? '' : 'disabled="disabled"'%>> 
    120121            <fieldset class="add-attendee-input input-field-rounded ui-corner-all"> 
    121                 <span class="ui-icon ui-icon-plus"></span> 
    122                 <input class="plus" type="text" /> 
     122                <span class="ui-icon ui-icon-plus" <%= data.isOrganizer ? '' : 'disabled="disabled"'%>></span> 
     123                <input class="plus" <%= data.isOrganizer ? '' : 'disabled="disabled"'%> type="text" /> 
    123124            </fieldset> 
    124125        </dd> 
     
    137138          <ul class="attendees-count"> 
    138139            <li><label>Sim:</label><%=data.task.statusParticipants.accepted%></li> 
    139             <li><label>Não:</label><%=data.task.statusParticipants.cancelled%></li> 
     140            <li><label>Não:</label><%=data.task.statusParticipants.cancelled%></li> 
    140141            <li><label>Talvez:</label><%=data.task.statusParticipants.tentative%></li> 
    141142            <li><label>Aguardando:</label><%=data.task.statusParticipants.unanswered%></li> 
     
    151152    </dl> 
    152153 
    153 <dl class="block-add-attendee search"> 
     154    <dl class="block-add-attendee search <%= data.isOrganizer ? '' : 'hidden'%>"> 
    154155    <dt class="add-attendee search">Adicionar outros convidados</dt> 
    155156    <dd class="add-attendee"> 
  • sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/import_export.ejs

    r5901 r6988  
    1515                <input type="hidden" name="type" value="iCal"> 
    1616                <input type="hidden" name="params[owner]" value="<%= data.owner %>"> 
    17                 <legend class="hidden">Importar agenda</legend> 
     17                <legend class="hidden">Importar <%=data.typeView == 0 ? 'eventos' : 'tarefas'%></legend> 
    1818                <p class="input-group"> 
    1919                        <label for="data">Arquivo:</label> 
     
    2121                        <input type="file" name="data" value=""/> 
    2222                        <span class="tip">Escolha o arquivo que contenha um ou vários eventos. A Agenda do Expresso pode importar informações de evento no formato iCal.</span> 
    23                         <label for="calendar">Agenda:</label> 
     23                        <label for="calendar"><%=data.typeView == 0 ? 'Agenda:' : 'Grupo:'%></label> 
    2424                        <select name="params[calendar]"> 
    2525                        <% for( var i = 0; i < data.calendars.length; i++ ){ %> 
     
    2727                        <% } %> 
    2828                        </select> 
    29                         <span class="tip">Agenda da qual os eventos serão importados</span> 
     29                        <span class="tip"><%=data.typeView == 0 ? 'Agenda da' : 'Grupo do'%> qual os eventos serão importados</span> 
    3030                </p> 
    3131        </fieldset> 
     
    4242                <legend class="hidden">Exportar agenda</legend> 
    4343                <p class="input-group"> 
    44                         <label for="calendar">Agenda:</label> 
     44                        <label for="calendar"><%=data.typeView == 0 ? 'Agenda:' : 'Grupo:'%></label> 
    4545                        <select name="calendar"> 
    4646                            <!--<option value="cal_all">Todas agendas</option>--> 
     
    4949                            <% } %> 
    5050                        </select> 
    51                         <span class="tip">Escolha a agenda que deseja exportar. A Agenda do Expresso pode exportar informações de evento no formato iCal.</span> 
     51                        <span class="tip">Escolha <%=data.typeView == 0 ? 'a agenda' : 'o grupo'%> que deseja exportar. <%=data.typeView == 0 ? 'A Agenda' : 'O Grupo'%> do Expresso pode exportar informações de <%=data.typeView == 0 ? 'eventos' : 'tarefas'%> no formato iCal.</span> 
    5252                </p> 
    5353        </fieldset> 
  • sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/task_activity_add.ejs

    r6945 r6988  
    11    <dl class="block-activity-group-select activitys-list"> 
    2         <dt class="activity-group-select">Grupo de evento</dt> 
     2        <dt class="activity-group-select">Grupo de tarefas</dt> 
    33        <dd class="group-select"> 
    44            <ul class="activity-group-select"> 
  • sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/task_add.ejs

    r6981 r6988  
    11<div title="Criar Tarefa" class="div-addtask content"> 
    2     <form method="POST" action="schedulable:task" class="form-addtask content"> 
     2    <form method="POST" action="<%= data.task.isOrganizer ? 'schedulable:task' : 'schedulable:taskEdit' %>" class="form-addtask content"> 
    33 
    44        <fieldset id="calendar_addtask_details1"> 
    55                <legend class="hidden">Detalhes da tarefa</legend> 
    66                <p class="input-group"> 
    7                     <input type="text" class="h1" name="summary" value="<%= (data.task.summary) ? data.task.summary : '' %>"/> 
     7                    <input type="text" class="h1" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> name="summary" value="<%= (data.task.summary) ? data.task.summary : '' %>"/> 
    88                    <% if( data.task.id ){ %> 
    99                            <input type="hidden" class="id-task" name="idTask" value="<%= data.task.id %>"/> 
     
    1414                </p> 
    1515                <p class="input-group date-info"> 
    16                         <input type="text" class="date start-date" value="<%= (data.task.startDate) ? data.task.startDate : '' %>" name="startDate" /> 
    17                         <input type="text" class="time start-time<%= (data.task.allDay) ? ' hidden' : '' %>" value="<%= (data.task.startHour) ? data.task.startHour : '' %>" name="startHour" />  
     16                        <input type="text" class="date start-date" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= (data.task.startDate) ? data.task.startDate : '' %>" name="startDate" /> 
     17                        <input type="text" class="time start-time<%= (data.task.allDay) ? ' hidden' : '' %>" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= (data.task.startHour) ? data.task.startHour : '' %>" name="startHour" />  
    1818                        <span>até</span> 
    19                         <input type="text" class="date end-date" value="<%= (data.task.endDate) ? data.task.endDate : '' %>" name="endDate" /> 
    20                         <input type="text" class="time end-time<%= (data.task.allDay) ? ' hidden' : '' %>" value="<%= (data.task.endHour) ? data.task.endHour : '' %>" name="endHour" /> 
     19                        <input type="text" class="date end-date" value="<%= (data.task.endDate) ? data.task.endDate : '' %>" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> name="endDate" /> 
     20                        <input type="text" class="time end-time<%= (data.task.allDay) ? ' hidden' : '' %>" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= (data.task.endHour) ? data.task.endHour : '' %>" name="endHour" /> 
    2121 
    2222                                <span class="previsao-termino">Previsão término:</span> 
    23                                 <input type="text" name="dueDate" class="date date-previsao" value="<%= data.task.dueDate %>"> 
    24                                 <input type="text" name="dueTime" class="time time-previsao" value="<%= data.task.dueTime %>"> 
    25  
    26                                 <a href="#" class="calendar_addtask_details_lnk_timezone">Fuso horário</a> 
     23                                <input type="text" name="dueDate" class="date date-previsao" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= data.task.dueDate %>"> 
     24                                <input type="text" name="dueTime" class="time time-previsao" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%> value="<%= data.task.dueTime %>"> 
     25 
     26                                <a href="#" class="calendar_addtask_details_lnk_timezone" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%>>Fuso horário</a> 
    2727                         
    2828                         
    2929<!--                    <input type="text" name="timezone" style="display: none;" />--> 
    30                         <select name="timezone" class="hidden calendar-addtask-details-txt-timezone"> 
     30                        <select name="timezone" class="hidden calendar-addtask-details-txt-timezone" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%>> 
    3131                                <option value="">- None selected -</option> 
    3232                                <% for( var tzId in data.task.timezones ){ %> 
     
    3434                                <% } %> 
    3535                        </select> 
     36 
     37                        <a class="button suggestion-hours small hidden" href="#">Sugerir horário</a> 
     38 
    3639 
    3740                </p> 
     
    4750                 
    4851                <p class="input-group task-type"> 
    49                         <input type="checkbox" name="allDay" value="true" <%= (data.task.allDay) ? 'checked="checked"' : '' %>/> 
     52                        <input type="checkbox" name="allDay" value="true" <%= (data.task.allDay) ? 'checked="checked"' : '' %> <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%>/> 
    5053                        <label for="allDay">Dia inteiro</label> 
    5154<!-- 
     
    5659                                % Conclusão: <input type="text" name="percentage" class="done" value="<%= data.task.percentage %>"> 
    5760                                <span style="margin:0 0 0 5px;">Status:</span>  
    58                 <select name="taskStatus" style="margin: 0 0 0 5px;"> 
     61                    <select name="taskStatus" style="margin: 0 0 0 5px;"> 
    5962                    <option class="taskStatus-noAction"<%= (data.task.taskStatus == '1') ? 'selected="selected"' : '' %> value="1">Sem ações</option> 
    6063                    <option class="taskStatus-inProcess"<%= (data.task.taskStatus == '2') ? 'selected="selected"' : '' %> value="2">Em Processo</option> 
     
    6366                                </select> 
    6467                                <span style="margin:0 0 0 5px;">Prioridade:</span>  
    65                                 <select name="priority"> 
     68                                <select name="priority" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%>> 
    6669                                        <option <%= (data.task.priority == '1') ? 'selected="selected"' : '' %> value="1">Alta</option> 
    6770                                        <option <%= (data.task.priority == '2') ? 'selected="selected"' : '' %> value="2">Normal</option> 
     
    8487                <p class="input-group"> 
    8588                        <label for="calendar_addtask_details_txtarea_description" class="for-textarea" >Descrição</label> 
    86                         <textarea name="description"><%=(data.task) ? data.task.description : '' %></textarea> 
     89                        <textarea name="description" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%>><%=(data.task) ? data.task.description : '' %></textarea> 
    8790                </p> 
    8891 
     
    208211            <div class="button-files-upload"> 
    209212                <!-- The fileinput-button span is used to style the file input field as button -->  
    210                       <span class="button btn-success fileinput-button"> 
     213                      <span class="button btn-success fileinput-button" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%>> 
    211214                    <span><i class="icon-plus icon-white"></i> Adicionar</span> 
    212                     <input type="file" name="files[]" multiple> 
     215                    <input type="file" name="files[]" multiple <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%>> 
    213216                </span> 
    214                 <button type="button" class="button btn-danger delete <%= data.task && data.task.attachments && data.task.attachments.length ? '' : 'hidden' %>"> 
     217                <button type="button" class="button btn-danger delete <%= data.task && data.task.attachments && data.task.attachments.length ? '' : 'hidden' %>" <%= data.task.isOrganizer ? '' : 'disabled="disabled"'%>> 
    215218                        <i class="icon-trash icon-white"></i> Remover Todos 
    216219                </button> 
Note: See TracChangeset for help on using the changeset viewer.