Changeset 6945 for sandbox/2.4.2-expresso1/prototype
- Timestamp:
- 08/06/12 10:03:03 (12 years ago)
- Location:
- sandbox/2.4.2-expresso1/prototype
- Files:
-
- 1 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/2.4.2-expresso1/prototype/config/schedulable.ini
r6876 r6945 5 5 participants = participant.schedulable 6 6 attachments = schedulableToAttachment.schedulable 7 taskToActivity = taskToActivity.activity 7 8 8 9 [model.hasOne] … … 14 15 [after.create] 15 16 createCalendarToSchedulable = modules/calendar/interceptors/DBMapping.php 17 ;createTasksToActivity = modules/calendar/interceptors/DBMapping.php 16 18 17 19 [before.find] 18 20 findSchedulable = modules/calendar/interceptors/DBMapping.php 21 findTask = modules/calendar/interceptors/DBMapping.php 19 22 20 23 [after.find] … … 25 28 encodeUpdateSchedulable = modules/calendar/interceptors/DBMapping.php 26 29 updateEvent = modules/calendar/interceptors/Notifications.php 27 28 30 29 31 [after.update] -
sandbox/2.4.2-expresso1/prototype/modules/calendar/css/layout.css
r6881 r6945 264 264 #calendar_addactivity_details8 .block-attendee-list, #calendar_addactivity_details8 .block-activity-list { width:430px; margin-right: 5px; } 265 265 266 .block-attendee-list, .block-activity-list, .block-add-activity { float:left;} 266 .block-activity-list, .block-activity-group-select{width: 405px} 267 .block-add-activity.search{width: 298px} 268 269 .block-attendee-list, .block-activity-list, .block-add-activity, .block-activity-group-select { float:left;} 267 270 .block-attendee-list { width:400px; margin-right: 5px; } 268 271 .new-event-win .block-add-attendee { width:260px; margin-right: 5px; } 269 272 .new-task-win .block-add-attendee { width:335px; margin-right: 5px; } 270 .block-attendee-list dd, .block-add-attendee dd, .block-activity-list dd, .block-add-activity dd { border: 1px solid #BFBFBF; }271 .block-attendee-list dt, .block-add-attendee dt,.block-activity-list dt, .block-add-activity dt { background-color:#FFF; margin: 5px 0 -6px 5px; font-weight: bold; display: table; position: relative; display: table;}273 .block-attendee-list dd, .block-add-attendee dd, .block-activity-list dd, .block-add-activity dd, .block-activity-group-select dd { border: 1px solid #BFBFBF; } 274 .block-attendee-list dt, .block-add-attendee dt,.block-activity-list dt, .block-add-activity dt, .block-activity-group-select dt { background-color:#FFF; margin: 5px 0 -6px 5px; font-weight: bold; display: table; position: relative; display: table;} 272 275 .block-attendee-list dd.attendee-list { height: 196px; } 273 276 .block-attendee-list dd.attendee-list ul, .block-activity-list dd.task-activity-list ul { max-height: 186px; overflow: auto; margin-top: 10px;} … … 276 279 .block-attendee-list dd.attendee-list-brief, .block-activity-list dd.activity-list-brief { border:none !important; margin: 5px 0; color:#777; } 277 280 #calendar_addactivity_details8 .block-attendee-list, #calendar_addactivity_details8 .block-activity-list { width:430px; margin-right: 5px; } 278 .block-activity-list dd.task-activity-list { height: 292px; } 281 282 /* Pesquisa de tarefas */ 283 .block-activity-group-select dd.task-activity-list { height: 181px; } 284 .block-activity-group-select dd.group-select { height: 40px; } 285 286 fieldset.block-add-activity ul.search-result-list li{ width: 9999px; } 287 fieldset.block-add-activity ul.search-result-list{width: 290px;} 288 289 fieldset.block-add-activity fieldset.add-activity-search{max-width: 320px; width: 282px} 290 fieldset.block-add-activity fieldset.add-activity-search input{max-width: 260px; width: 245px;} 291 292 .block-activity-group-select dd.group-select select{margin: 12px 8px;} 293 .block-activity-group-select dd.task-activity-list{padding: 10px 5px} 294 295 /** Pesquisa de tarefas **/ 296 297 select.group-addactivity-details-txt-timezone{width: 175px;} 298 279 299 280 300 dl.block-add-attendee, dl.block-add-activity { … … 283 303 } 284 304 285 .new-event-win dl.block-add-attendee dd.add-attendee, dl.block-add-activity dd.add-activity { 305 dl.block-add-activity dd.add-activity{ 306 width: 295px; 307 min-height: 254px; 308 display: block; 309 } 310 311 .new-event-win dl.block-add-attendee dd.add-attendee{ 286 312 width: 260px; 287 313 min-height: 260px; … … 294 320 display: block; 295 321 } 322 323 .new-activity-win dl.block-activity-group-select li.task{overflow: hidden; position: relative;} 324 .new-activity-win dl.block-activity-group-select ul{overflow: hidden;} 296 325 297 326 #calendar_addactivity_details8 dl.block-add-attendee dd.add-attendee ,#calendar_addactivity_details8 dl.block-add-activity dd.add-activity { … … 322 351 */ 323 352 324 .attendee-options { position: absolute; top: 0; left: 287px; background-color: white; z-index: 100; width: 90px; background-color: #FFF; padding: 0 20px 0 3px; text-align: right;}353 .attendee-options, .activity-options{ position: absolute; top: 0; left: 287px; background-color: white; z-index: 100; width: 90px; background-color: #FFF; padding: 0 20px 0 3px; text-align: right;} 325 354 .attendees-list .not-attendee, .activitys-list .not-activity { height:16px; } 326 355 … … 383 412 min-width: 99999px; 384 413 } 414 415 ul.task-activity-list li label.name{display: table-cell;} 416 385 417 dd.task-activity-list ul.task-activity-list li label[title=''] { display:none } 386 418 /* … … 754 786 755 787 .button.add.button-add-attachment{margin: -9px 0 0 8px;} 756 .button.btn-danger.delete{margin: 0 0 0 0; }788 .button.btn-danger.delete{margin: 0 0 0 0; min-width: 143px;} 757 789 758 790 .button.upload{top: 4px;} -
sandbox/2.4.2-expresso1/prototype/modules/calendar/css/style.css
r6881 r6945 53 53 54 54 .new-activity-win fieldset { border: none; margin: 0; padding: 0; } 55 .new-activity-win fieldset.tab-level2 { padding: 0px 5px; min-height: 310px; max-height: 310px; overflow: auto;}55 .new-activity-win fieldset.tab-level2 { padding: 0px 5px; min-height: 250px; max-height: 310px; overflow: auto;} 56 56 57 57 .new-activity-win .overflow_add_calender { overflow: auto; max-height: 320px; } … … 102 102 .new-event-win div.div-addevent{ padding: 0; width: 700px; border: 0;} 103 103 .new-task-win div.div-addtask { padding: 0; width: 774px; border: 0;} 104 .new-event-win form.form-addevent, .new-task-win form.form-addtask { padding: 9px; } 105 106 .new-activity-win div.div-addevent { padding: 0; width: 700px; border: 0;} 107 .new-activity-win form.form-addevent { padding: 9px; } 104 105 .new-event-win form.form-addevent, 106 .new-task-win form.form-addtask, 107 .new-activity-win form.form-addactivity { padding: 9px; } 108 109 .new-activity-win input.time{width: 45px;} 110 .new-activity-win input.date{width: 80px;} 111 112 .new-activity-win div.div-addactivity { padding: 0; width: 734px; border: 0;} 113 .new-activity-win form.form-addactivity { padding: 9px; } 108 114 109 115 .expresso-calendar-container input[type="text"] { height: 18px; } … … 590 596 .div-addactivity #calendar_addactivity_details1 .subitem .done { width: 45px;} 591 597 592 593 .div-addactivity #calendar_addactivity_details6 .parent {width: 680px; min-height: 268px; float: left;} 594 .div-addactivity #calendar_addactivity_details6 .parent .child-top {width: 690px; height: 30px; background: #E8F4FD; border-left: 1px solid #CCC; border-right: 1px solid #CCC; border-bottom: 1px solid #CCC;} 595 .div-addactivity #calendar_addactivity_details6 .parent .child-bottom {width: 690px; height: 220px; overflow: auto; float: left; border-left: 1px solid #CCC; border-right: 1px solid #CCC; border-bottom: 1px solid #CCC;} 596 .div-addactivity #calendar_addactivity_details6 .parent .child-bottom .child-bottom-each { height: 30px; } 597 .div-addactivity #calendar_addactivity_details6 .parent .child-bottom .child-bottom-each:hover { background: #FFF2F2; cursor: pointer;} 598 599 600 .div-addactivity #calendar_addactivity_details6 .parent .child-bottom .child-bottom-each .date-hour { width: 30%; float: left; height: 30px} 601 .div-addactivity #calendar_addactivity_details6 .parent .child-bottom .child-bottom-each .date-hour span { margin: 8px; float: left; } 602 .div-addactivity #calendar_addactivity_details6 .parent .child-bottom .child-bottom-each .organization{ width: 69%; float: left; height: 30px; border-left: 1px solid #CCC; } 603 .div-addactivity #calendar_addactivity_details6 .parent .child-bottom .child-bottom-each .organization span{ margin: 8px; float: left; } 604 605 606 .div-addactivity #calendar_addactivity_details6 .parent .child-top .date-hour { width: 29%; float: left; background: #E8F4FD; height: 30px; } 607 .div-addactivity #calendar_addactivity_details6 .parent .child-top .date-hour span{ margin: 8px; float: left; font-weight: bold; color: #2E6E9E; } 608 .div-addactivity #calendar_addactivity_details6 .parent .child-top .organization { width: 70%; float: left; background: #E8F4FD; height: 30px; border-left: 1px solid #CCC; font-weight: bold; color: #2E6E9E; } 609 .div-addactivity #calendar_addactivity_details6 .parent .child-top .organization span{margin: 8px; float: left; } 598 .div-addactivity #group_addactivity_details6 .parent {width: 680px; min-height: 268px; float: left;} 599 .div-addactivity #group_addactivity_details6 .parent .child-top {width: 690px; height: 30px; background: #E8F4FD; border-left: 1px solid #CCC; border-right: 1px solid #CCC; border-bottom: 1px solid #CCC;} 600 .div-addactivity #group_addactivity_details6 .parent .child-bottom {width: 690px; height: 220px; overflow: auto; float: left; border-left: 1px solid #CCC; border-right: 1px solid #CCC; border-bottom: 1px solid #CCC;} 601 .div-addactivity #group_addactivity_details6 .parent .child-bottom .child-bottom-each { height: 30px; } 602 .div-addactivity #group_addactivity_details6 .parent .child-bottom .child-bottom-each:hover { background: #FFF2F2; cursor: pointer;} 603 604 .div-addactivity #group_addactivity_details6 .parent .child-bottom .child-bottom-each .date-hour { width: 30%; float: left; height: 30px} 605 .div-addactivity #group_addactivity_details6 .parent .child-bottom .child-bottom-each .date-hour span { margin: 8px; float: left; } 606 .div-addactivity #group_addactivity_details6 .parent .child-bottom .child-bottom-each .organization{ width: 69%; float: left; height: 30px; border-left: 1px solid #CCC; } 607 .div-addactivity #group_addactivity_details6 .parent .child-bottom .child-bottom-each .organization span{ margin: 8px; float: left; } 608 609 .div-addactivity #group_addactivity_details6 .parent .child-top .date-hour { width: 29%; float: left; background: #E8F4FD; height: 30px; } 610 .div-addactivity #group_addactivity_details6 .parent .child-top .date-hour span{ margin: 8px; float: left; font-weight: bold; color: #2E6E9E; } 611 .div-addactivity #group_addactivity_details6 .parent .child-top .organization { width: 70%; float: left; background: #E8F4FD; height: 30px; border-left: 1px solid #CCC; font-weight: bold; color: #2E6E9E; } 612 .div-addactivity #group_addactivity_details6 .parent .child-top .organization span{margin: 8px; float: left; } -
sandbox/2.4.2-expresso1/prototype/modules/calendar/interceptors/DBMapping.php
r6891 r6945 150 150 .'calendar FROM calendar_to_calendar_object , calendar_object ' 151 151 .'WHERE ( calendar_to_calendar_object.calendar_id IN (\'' . implode('\',\'', $criteria['filter'][2][2]) . '\')) ' 152 .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id '; 152 .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id ' 153 .'AND calendar_object.id NOT IN(select calendar_object_task_id from calendar_task_to_activity_object where owner = \'' . Config::me('uidNumber') . '\') '; 153 154 154 155 if(isset($criteria['searchEvent']) && $criteria['searchEvent']){ … … 180 181 $params = array_merge($params, $occ); 181 182 } 183 $params = self::deepnessFindEvent($uri, $params, $criteria, $original); 184 return false; 185 } 186 } 187 188 public function findTask(&$uri, &$params, &$criteria, $original) { 189 190 ob_start(); 191 print_r('$uri' . "\n"); 192 print_r($uri); 193 print_r('$params' . "\n"); 194 print_r($params); 195 print_r('$criteria' . "\n"); 196 print_r($criteria); 197 print_r('$original' . "\n"); 198 print_r($original); 199 $output = ob_get_clean(); 200 file_put_contents( "/tmp/acoutinho.log", $output , FILE_APPEND); 201 if (isset($criteria['filterTasks']) && $criteria['filterTasks']) { 202 203 $sql = ' SELECT calendar_object.id as id ,calendar_object.cal_uid as "uid", calendar_object.type_id as "type", ' 204 .'calendar_object.dtstart as "startTime", calendar_object.summary as "summary", ' 205 .'calendar_object.description as "description", calendar_object.dtend as "endTime" , ' 206 .'calendar_object.priority as "priority", calendar_object.due as "due", ' 207 .'calendar_object.percentage as "percentage", calendar_object.status as "status", ' 208 .'calendar_object.location as "location", calendar_object.allday as "allDay", ' 209 .'calendar_object.transp as "transparent", calendar_object.class_id as "class", ' 210 .'calendar_object.repeat as "repeat", calendar_object.range_start as "rangeStart", ' 211 .'calendar_object.range_end as "rangeEnd", calendar_object.last_update as "lastUpdate", ' 212 .'calendar_object.dtstamp as "dtstamp", calendar_object.sequence as "sequence", ' 213 .'calendar_object.tzid as "timezone" ,calendar_to_calendar_object.calendar_id as ' 214 .'calendar FROM calendar_to_calendar_object , calendar_object ' 215 .'WHERE ( calendar_to_calendar_object.calendar_id IN (\'' . implode('\',\'', $criteria['filter'][3][2]) . '\')) ' 216 .'AND calendar_to_calendar_object.calendar_object_id = calendar_object.id ' 217 .'AND calendar_to_calendar_object.calendar_object_id NOT IN (select calendar_object_activity_id from calendar_task_to_activity_object where owner = \'' . Config::me("uidNumber") . '\' ) ' 218 .'AND calendar_to_calendar_object.calendar_object_id NOT IN (select calendar_object_task_id from calendar_task_to_activity_object where owner = \'' . Config::me("uidNumber") . '\' ) '; 219 220 if(isset($criteria['filter'][4])) 221 $sql .= 'AND (((upper("summary") like upper(\'%'.$criteria['filter'][4][1][2].'%\') OR upper("description") like upper(\'%'.$criteria['filter'][4][1][2].'%\'))))'; 222 223 $sql .= 'AND (range_start >= \'' . $criteria['filter'][2][2] . '\' AND type_id <= \'' . $criteria['filter'][1][2] . '\')'; 224 225 $params = Controller::service('PostgreSQL')->execResultSql($sql); 182 226 $params = self::deepnessFindEvent($uri, $params, $criteria, $original); 183 227 return false; … … 495 539 } 496 540 541 //TODO: Remover apos suporte a ManytoMany na api 542 public function createTasksToActivity(&$uri, &$result, &$criteria, $original) { 543 544 ob_start(); 545 print_r('$uri' . "\n"); 546 print_r($uri); 547 print_r('$params' . "\n"); 548 print_r($params); 549 print_r('$criteria' . "\n"); 550 print_r($criteria); 551 print_r('$original' . "\n"); 552 print_r($original); 553 $output = ob_get_clean(); 554 file_put_contents( "/tmp/acoutinho.log", $output , FILE_APPEND); 555 556 if(isset($original['properties']['taskToActivity']) && $original['properties']['taskToActivity']){ 557 558 foreach($original['properties']['taskToActivity'] as $relational) 559 560 Controller::create(array('concept' => 'taskToActivity'), array('task' => $relational['task'], 'owner' => $relational['owner'], 'activity' => $result['id'])); 561 562 } 563 } 564 497 565 public function createCreateSchedulableToAttachment(&$uri, &$params, &$criteria, $original) { 498 566 if (array_key_exists('attachments', $original['properties'])) … … 541 609 542 610 //TODO: Remover apos suporte a deepness na api 611 public function deepnessFindTask(&$uri, &$result, &$criteria, $original) { 612 if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) 613 foreach($result as &$value) 614 $value['task'] = Controller::read(array('concept' => 'schedulable', 'id' => $value['task'])); 615 616 617 return $result; 618 } 619 620 621 622 //TODO: Remover apos suporte a deepness na api 543 623 public function deepnessFindEvent(&$uri, &$result, &$criteria, $original) { 544 624 if (isset($original['criteria']['deepness']) && $original['criteria']['deepness'] != 0) { … … 572 652 573 653 $result[$i]['DayLigth'] = $DayLigth; 654 655 if(((int)$v['type']) == 2){ 656 657 $taskToActivity = Controller::find(array('concept' => 'taskToActivity'), false, array('filter' => array('AND', array('=', 'activity', $v['id']), array('=','owner', Config::me('uidNumber'))) , 'deepness' => 2)); 658 659 if($taskToActivity) 660 $result[$i]['taskToActivity'] = $taskToActivity; 661 662 } 574 663 575 664 if (isset($v['id'])) { -
sandbox/2.4.2-expresso1/prototype/modules/calendar/js/activity.helpers.js
r6881 r6945 1 function activityDetails( objEvent, decoded, path, isMail, repeat){ 2 3 4 attendees = {}; 1 function activityDetails( objActivity, decoded, path, isMail, repeat){ 2 3 tasks = {length: 0}; 5 4 6 5 if(path == undefined) … … 8 7 9 8 if( !decoded ) 10 obj Event = DataLayer.decode( "schedulable:calendar", objEvent);9 objActivity = DataLayer.decode( "schedulable:group", objActivity ); 11 10 12 11 if(!isMail) 13 objEvent = DataLayer.encode( "schedulable:preview", objEvent ); 14 15 if(typeof(objEvent.id) == 'undefined'){ 16 objEvent.alarms = Calendar.signatureOf[User.preferences.defaultCalendar || Calendar.calendarIds[0]].defaultAlarms || false; 17 objEvent.useAlarmDefault = 1; 18 //Código provisório ... Mockup 19 objEvent.alarms.taskActivity = {}; 20 } 21 12 objActivity = DataLayer.encode( "schedulable:activity", objActivity ); 13 14 var registerStatus = function(){ 15 var blkAuto = UI.dialogs.addActivity.find('#group_addactivity_details1'); 16 17 var startDate = false; 18 var endDate = new Date; 19 var dueDate = new Date; 20 var percentage = 0; 21 22 var allDay = true; 23 24 var formatString = User.preferences.dateFormat + " " + User.preferences.hourFormat; 25 26 if(tasks.length == 0){ 27 28 startDate = new Date(); 29 var configData = (startDate.toString('mm') < 30) ? {minutes: (30 - parseInt(startDate.toString('mm')))} : {hours: 1, minutes: '-'+startDate.toString('mm')}; 30 startDate.add(configData); 31 32 endDate = new Date(dateCalendar.decodeRange(startDate, (!!User.preferences.defaultCalendar ? ( !!Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration ? (Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration) : (User.preferences.defaultDuration)) : (User.preferences.defaultDuration)))); 33 34 blkAuto.find('input[name="startDate"]').val(startDate.toString(User.preferences.dateFormat )); 35 blkAuto.find('input[name="startHour"]').val(startDate.toString(User.preferences.hourFormat )); 36 37 blkAuto.find('input[name="endDate"]').val(endDate.toString(User.preferences.dateFormat )); 38 blkAuto.find('input[name="endHour"]').val(endDate.toString(User.preferences.hourFormat )); 39 40 blkAuto.find('input[name="dueDate"]').val(''); 41 blkAuto.find('input[name="dueHour"]').val(''); 42 43 blkAuto.find('input[name="percentage"]').val(percentage); 44 45 blkAuto.find('input[name="allDay"]').attr('checked', false); 46 47 return true; 48 } 49 50 for (var i in tasks){ 51 52 if(i == 'length') 53 continue; 54 55 stTime = Date.parseExact( tasks[i].startDate + " "+$.trim( tasks[i].startHour) , formatString); 56 enTime = Date.parseExact( tasks[i].endDate + " "+$.trim( tasks[i].endHour), formatString ); 57 58 startDate = (startDate && startDate.compareTo(stTime) == -1) ? startDate : stTime; 59 endDate = endDate.compareTo(enTime) == -1 ? enTime : endDate; 60 61 if(tasks[i].dueDate != ''){ 62 pvTime = Date.parseExact( tasks[i].dueDate + " "+$.trim( tasks[i].dueTime), formatString ); 63 dueDate = dueDate.compareTo(pvTime) == -1 ? pvTime : dueDate; 64 } 65 66 if(parseInt(tasks[i].percentage) > 0) 67 percentage += parseInt((100 / tasks.length)) * ( parseInt(tasks[i].percentage) / 100); 68 } 69 70 dueDate = dueDate.compareTo(endDate) == -1 ? endDate : dueDate; 71 72 blkAuto.find('input[name="startDate"]').val(startDate.toString(User.preferences.dateFormat )); 73 blkAuto.find('input[name="startHour"]').val(startDate.toString(User.preferences.hourFormat )); 74 75 blkAuto.find('input[name="endDate"]').val(endDate.toString(User.preferences.dateFormat )); 76 blkAuto.find('input[name="endHour"]').val(endDate.toString(User.preferences.hourFormat )); 77 78 blkAuto.find('input[name="dueDate"]').val(dueDate.toString(User.preferences.dateFormat )); 79 blkAuto.find('input[name="dueHour"]').val(dueDate.toString(User.preferences.hourFormat )); 80 81 blkAuto.find('input[name="percentage"]').val(percentage); 82 83 blkAuto.find('input[name="allDay"]').attr('checked', (!!(startDate.compareTo(endDate) == 0) || (startDate.toString('HH:mm') == endDate.toString('HH:mm')) ? true : false)); 84 } 85 86 87 var callbackTask = function(){ 88 89 blkAddTask.find("li .button").filter(".close.new").button({ 90 icons: { 91 primary: "ui-icon-close" 92 }, 93 text: false 94 }).click(function () { 95 96 delete tasks[$(this).parents('li').find('input[name="idtask[]"]').val()] 97 tasks.length += -1; 98 99 idTaskToActivity = $(this).parents('li').find('input[name="idTaskToActivity[]"]').val() 100 101 if(idTaskToActivity != '') 102 DataLayer.remove('taskToActivity', idTaskToActivity); 103 104 $(this).parents('li').remove(); 105 106 if(blkAddTask.find(".task-activity-list li").length == 1) 107 blkAddTask.find("li.not-activity ").removeClass('hidden'); 108 109 registerStatus(); 110 }) 111 .addClass('tiny disable ui-button-disabled ui-state-disabled') 112 .removeClass('new').end() 113 114 .filter(".info.new").button({ 115 icons: { 116 primary: "ui-icon-notice" 117 }, 118 text: false 119 }).click(function () { 120 var positionY = $(this).parents("li").offset().top; 121 122 var name = $(this).parents('li').find("div").find(".name").text(); 123 var email = $(this).parents('li').find("div").find(".mail").text() 124 125 if( $('.qtip.qtip-blue.qtip-active').val() !== ''){ 126 $(this).qtip({ 127 show: { 128 ready: true, 129 solo: true, 130 when: { 131 event: 'click' 132 } 133 }, 134 hide: false, 135 content: { 136 text: $('<div></div>').html( DataLayer.render( path + 'templates/activity_information_task.ejs', { 137 'name' : name 138 } ) ), 139 title: { 140 text:'Informações', 141 button: '<a class="button close" href="#">close</a>' 142 } 143 }, 144 style: { 145 name: 'blue', 146 tip: { 147 }, 148 border: { 149 width: 4, 150 radius: 8 151 }, 152 width: { 153 min: 230, 154 max:230 155 } 156 }, 157 position: { 158 corner: { 159 target: 'rightMiddle', 160 tooltip: 'leftMiddle' 161 }, 162 adjust: { 163 x: 30, 164 y: 0 165 } 166 } 167 }) 168 .qtip("api").onShow = function(arg0) { 169 $('.qtip-active .button.close').button({ 170 icons: { 171 primary: "ui-icon-close" 172 }, 173 text: false 174 }) 175 .click(function(){ 176 blkAddAtendee.find('dd.task-activity-list').qtip('destroy'); 177 }); 178 179 $('.qtip-active .button.cancel').button().click(function(){ 180 blkAddAtendee.find('dd.activity-list [type=checkbox]').attr('checked', false); 181 blkAddAtendee.find('dd.activity-list').qtip('destroy'); 182 }); 183 184 $('.qtip .button').button(); 185 186 }; 187 } 188 }) 189 .addClass('tiny disable ui-button-disabled ui-state-disabled') 190 .removeClass('new').end() 191 192 UI.dialogs.addActivity.find('.task-activity-list li').hover( 193 function () { 194 $(this).addClass("hover-attendee"); 195 $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end() 196 .find('.activity-options').addClass('hover-attendee'); 197 }, 198 function () { 199 $(this).removeClass("hover-attendee"); 200 $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end() 201 .find('.activity-options').removeClass('hover-attendee'); 202 } 203 ); 204 } 205 206 22 207 /** 23 * canDiscardEventDialog deve ser true se n ão houver alterações no evento208 * canDiscardEventDialog deve ser true se não houver alterações no evento 24 209 */ 25 210 canDiscardEventDialog = true; 26 211 /** 27 * zebraDiscardEventDialog é uma flag indicando que uma janela de confirmação (Zebra_Dialog)28 * j á está aberta na tela, uma vez que não é possivel acessar o evento ESC utilizado para fechá-la212 * zebraDiscardEventDialog é uma flag indicando que uma janela de confirmação (Zebra_Dialog) 213 * já está aberta na tela, uma vez que não é possivel acessar o evento ESC utilizado para fechá-la 29 214 */ 30 215 zebraDiscardEventDialog = false; 31 216 32 /**33 ACLs do participant34 */35 acl_names = {36 'w': 'acl-white',37 'i': 'acl-invite-guests',38 'p': 'acl-participation-required'39 };40 41 42 var callbackAttendee = function(){43 //Cria qtip de permissões pelo click do checkbox44 var checked = false;45 blkAddAtendee.find("li.not-activity").addClass('hidden');46 47 blkAddAtendee.find("li .button").filter(".close.new").button({48 icons: {49 primary: "ui-icon-close"50 },51 text: false52 }).click(function () {53 DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val());54 if($(this).parent().find('.button.delegate').hasClass('activity-permissions-change-button')){55 removeOthers();56 blkAddAtendee.find('.request-update').addClass('hidden');57 blkAddAtendee.find('.status option').toggleClass('hidden');58 59 blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change');60 }61 62 $(this).parents('li').remove();63 64 if(blkAddAtendee.find(".activity-list li").length == 1)65 blkAddAtendee.find("li.not-activity").removeClass('hidden');66 })67 .addClass('tiny disable ui-button-disabled ui-state-disabled')68 .removeClass('new').end()69 70 .filter(".delegate.new").button({71 icons: {72 primary: "ui-icon-transferthick-e-w"73 },74 text: false75 }).click(function () {76 var me = $(this).parents('li');77 if($(this).hasClass('activity-permissions-change-button')){78 $(this).removeClass('activity-permissions-change-button')79 .find('.ui-icon-transferthick-e-w').removeClass('activity-permissions-change').end();80 81 me.find('input[name="delegatedFrom[]"]').val('');82 dependsDelegate(me, true);83 84 blkAddAtendee.find('.request-update').addClass('hidden');85 blkAddAtendee.find('.status option').toggleClass('hidden');86 87 blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change');88 89 }else{90 removeOthers();91 92 $(this).addClass('activity-permissions-change-button')93 .find('.ui-icon-transferthick-e-w').addClass('activity-permissions-change').end();94 95 me.find('input[name="delegatedFrom[]"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val());96 97 dependsDelegate(me, false);98 99 blkAddAtendee.find('.request-update').removeClass('hidden');100 if(blkAddAtendee.find('.status option.hidden').length == 1)101 blkAddAtendee.find('.status option').toggleClass('hidden');102 103 blkAddAtendee.find('option[value=5]').attr('selected','selected').trigger('change');104 }105 })106 .addClass('tiny disable ui-button-disabled ui-state-disabled')107 .removeClass('new').end()108 109 .filter(".edit.new").button({110 icons: {111 primary: "ui-icon-notice"112 },113 text: false114 }).click(function() {115 116 console.log($(this).parents("li").position().top);117 118 var positionY = $(this).parents("li").offset().top;119 120 if(!!!checked)121 $(this).parents('li').find('[type=checkbox]').attr('checked', (!$(this).parent().find('[type=checkbox]').is(':checked'))).end();122 123 var name = $(this).parents('li').find("div").find(".name").text();124 var email = $(this).parents('li').find("div").find(".mail").text()125 //var aclsParticipant = $(this).parents('li')126 checked = false;127 128 if( $('.qtip.qtip-blue.qtip-active').val() !== ''){129 $(this).qtip({130 show: {131 ready: true,132 solo: true,133 when: {134 event: 'click'135 }136 },137 hide: false,138 content: {139 text: $('<div></div>').html( DataLayer.render( path + 'templates/activity_information_task.ejs', {140 'name' : name141 } ) ),142 title: {143 text:'Informações',144 button: '<a class="button close" href="#">close</a>'145 }146 },147 style: {148 name: 'blue',149 tip: {150 corner: 'leftMiddle'151 },152 border: {153 width: 4,154 radius: 8155 },156 width: {157 min: 230,158 max:230159 }160 },161 position: {162 corner: {163 target: 'rightMiddle',164 tooltip: 'leftMiddle'165 },166 adjust: {167 x: 30,168 y: 0169 }170 }171 })172 .qtip("api").onShow = function(arg0) {173 $('.qtip-active .button.close').button({174 icons: {175 primary: "ui-icon-close"176 },177 text: false178 })179 .click(function(){180 blkAddAtendee.find('dd.task-activity-list').qtip('destroy');181 });182 183 $('.qtip-active .button.save').button().click(function(){184 185 var acl = '';186 $('.qtip-active').find('[type=checkbox]:checked').each(function(i, obj) {187 acl+= obj.value;188 });189 190 blkAddAtendee.find('dd.task-activity-list [type=checkbox]:checked').siblings('input[name="attendeeAcl[]"]').each(function(i, obj) {191 obj.value = 'r'+acl;192 }).parents('li').find('.button.edit').addClass('activity-permissions-change-button')193 .find('.ui-icon-key').addClass('activity-permissions-change');194 195 blkAddAtendee.find('dd.task-activity-list [type=checkbox]').attr('checked', false);196 197 blkAddAtendee.find('dd.task-activity-list').qtip('destroy');198 199 });200 $('.qtip-active .button.cancel').button().click(function(){201 blkAddAtendee.find('dd.activity-list [type=checkbox]').attr('checked', false);202 blkAddAtendee.find('dd.activity-list').qtip('destroy');203 });204 205 if(aclsParticipant)206 for(var i = 1; i < aclsParticipant.length; i++){207 $('.qtip-active').find('input[name="'+acl_names[aclsParticipant.charAt(i)]+'"]').attr('checked', true);208 }209 210 $('.qtip .button').button();211 212 };213 }else{214 if(!$('.new-activity-win dd.task-activity-list').find('[type=checkbox]:checked').length){215 blkAddAtendee.find('dd.attendee-list').qtip('destroy');216 }else{217 $('.qtip-active .button.save .ui-button-text').html('Aplicar a todos')218 }219 220 };221 })222 .addClass('tiny disable ui-button-disabled ui-state-disabled')223 .removeClass('new').end()224 225 .filter(".open-delegate.new").click(function(){226 if($(this).hasClass('ui-icon-triangle-1-e')){227 $(this).removeClass('ui-icon-triangle-1-e').addClass('ui-icon-triangle-1-s');228 $(this).parents('li').find('.list-delegates').removeClass('hidden');229 }else{230 $(this).removeClass('ui-icon-triangle-1-s').addClass('ui-icon-triangle-1-e');231 $(this).parents('li').find('.list-delegates').addClass('hidden');232 }233 234 }).removeClass('new');235 236 237 blkAddAtendee.find("li input[type=checkbox].new").click(function(){238 if(!$('.new-activity-win dd.task-activity-list').find('[type=checkbox]:checked').length){239 blkAddAtendee.find('dd.task-activity-list').qtip('destroy');240 }else{241 checked = true;242 $(this).parents('li').find('.button.edit').click();243 }244 }).removeClass('new');245 246 UI.dialogs.addActivity.find('.task-activity-list li').hover(247 function () {248 $(this).addClass("hover-activity");249 $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end()250 .find('.activity-options').addClass('hover-activity');251 },252 function () {253 $(this).removeClass("hover-activity");254 $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end()255 .find('.activity-options').removeClass('hover-activity');;256 }257 );258 259 }260 var dependsDelegate = function(reference, inverse){261 if(inverse){262 if(reference.find('input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val())263 blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val());264 }else{265 if(blkAddAtendee.find('.me input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val())266 blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(reference.find('input[name="attendee[]"]').val());267 }268 269 };270 271 var removeOthers = function(){272 var other = blkAddAtendee.find('.delegate.attendee-permissions-change-button');273 if(other.lenght){274 dependsDelegate(other.parents('li'), true);275 }276 blkAddAtendee.find('.delegate').removeClass('attendee-permissions-change-button');277 blkAddAtendee.find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change');278 279 };280 281 217 var html = DataLayer.render( path+'templates/activity_add.ejs', { 282 event:objEvent218 activity:objActivity 283 219 }); 284 220 … … 286 222 287 223 UI.dialogs.addActivity = jQuery('#sandbox').append('<div title="Criar Atividade" class="new-activity-win active"> <div>').find('.new-activity-win.active').html(html).dialog({ 288 resizable: false, 289 modal:true, 290 autoOpen: false, 291 width:734, 292 position: 'center', 293 close: function(event, ui) { 294 /** 295 * Remove tooltip possivelmente existente 296 */ 297 if ($('.qtip.qtip-blue.qtip-active').length) 298 $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 299 attendees = {}; 300 }, 301 beforeClose: function(event, ui) { 302 303 if (!canDiscardEventDialog && !zebraDiscardEventDialog) { 304 zebraDiscardEventDialog = true; 305 window.setTimeout(function() { 306 $.Zebra_Dialog('Suas alterações na atividade não foram salvas. Deseja descartar as alterações?', { 307 'type': 'question', 308 'overlay_opacity': '0.5', 309 'buttons': ['Descartar alterações', 'Continuar editando'], 310 'onClose': function(clicked) { 311 if(clicked == 'Descartar alterações') { 312 canDiscardEventDialog = true; 313 /** 314 *Remoção dos anexos do eventos caso seja cancelado a edição 315 */ 316 DataLayer.rollback(); 317 318 var ids = false; 319 $.each($('.attachment-list input'), function (i, input) { 320 DataLayer.put('attachment', {id: ''+input.value}); 321 DataLayer.remove('attachment', ''+input.value); 322 ids = true; 323 }); 324 if(ids) 325 DataLayer.commit(); 326 327 328 329 UI.dialogs.addActivity.dialog('close'); 330 }else{ 331 zebraDiscardEventDialog = false; 332 } 333 334 /** 335 * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la 336 * com ESC, para que o evento ESC não seja propagado para fechamento da 337 * janela de edição de eventos, deve ser setada uma flag indicando que 338 * já existe uma janela de confirmação aberta. 339 */ 340 if (!clicked) { 341 window.setTimeout(function() { 342 zebraDiscardEventDialog = false; 343 }, 200); 344 } 345 } 346 }); 347 348 }, 300); 349 350 } 351 //DataLayer.rollback(); 352 return canDiscardEventDialog; 353 }, 354 dragStart: function(event, ui) { 355 if ($('.qtip.qtip-blue.qtip-active').length) 356 $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 357 } 358 }); 224 resizable: false, 225 modal:true, 226 autoOpen: false, 227 width:734, 228 position: 'center', 229 close: function(event, ui) { 230 /** 231 * Remove tooltip possivelmente existente 232 */ 233 if ($('.qtip.qtip-blue.qtip-active').length) 234 $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 235 236 attendees = {}; 237 }, 238 beforeClose: function(event, ui) { 239 240 if (!canDiscardEventDialog && !zebraDiscardEventDialog) { 241 zebraDiscardEventDialog = true; 242 window.setTimeout(function() { 243 $.Zebra_Dialog('Suas alterações na atividade não foram salvas. Deseja descartar as alterações?', { 244 'type': 'question', 245 'overlay_opacity': '0.5', 246 'buttons': ['Descartar alterações', 'Continuar editando'], 247 'onClose': function(clicked) { 248 if(clicked == 'Descartar alterações') { 249 canDiscardEventDialog = true; 250 /** 251 *Remoção dos anexos do eventos caso seja cancelado a edição 252 */ 253 DataLayer.rollback(); 254 255 var ids = false; 256 $.each($('.attachment-list input'), function (i, input) { 257 DataLayer.put('attachment', {id: ''+input.value}); 258 DataLayer.remove('attachment', ''+input.value); 259 ids = true; 260 }); 261 if(ids) 262 DataLayer.commit(); 263 264 UI.dialogs.addActivity.dialog('close'); 265 }else{ 266 zebraDiscardEventDialog = false; 267 } 268 269 /** 270 * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la 271 * com ESC, para que o evento ESC não seja propagado para fechamento da 272 * janela de edição de eventos, deve ser setada uma flag indicando que 273 * já existe uma janela de confirmação aberta. 274 */ 275 if (!clicked) { 276 window.setTimeout(function() { 277 zebraDiscardEventDialog = false; 278 }, 200); 279 } 280 } 281 }); 282 283 }, 300); 284 } 285 //DataLayer.rollback(); 286 return canDiscardEventDialog; 287 }, 288 dragStart: function(event, ui) { 289 if ($('.qtip.qtip-blue.qtip-active').length) 290 $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 291 } 292 }); 359 293 360 294 } else { 361 295 UI.dialogs.addActivity.html(html); 362 296 } 297 298 /* Checkbox allday */ 299 UI.dialogs.addActivity.find('input[name="allDay"]').click(function(){ 300 $(this).attr("checked") ? 301 UI.dialogs.addActivity.find('.start-time, .end-time').addClass('hidden') : 302 UI.dialogs.addActivity.find('.start-time, .end-time').removeClass('hidden'); 303 }); 363 304 364 305 var tabs = UI.dialogs.addActivity.children('.content').tabs({ … … 368 309 } 369 310 }); 370 var calendar = DataLayer.get('calendar', objEvent.calendar); 311 312 var group = DataLayer.get('calendar', objActivity.group); 371 313 372 if ( calendar.timezone != objEvent.timezone){373 UI.dialogs.addActivity.find('. calendar_addactivity_details_lnk_timezone').find('option[value="'+objEvent.timezone+'"]').attr('selected','selected').trigger('change');374 UI.dialogs.addActivity.find('. calendar_addactivity_details_lnk_timezone').addClass('hidden');375 $('. calendar-addevent-details-txt-timezone').removeClass('hidden');314 if (group.timezone != objActivity.timezone){ 315 UI.dialogs.addActivity.find('.group_addactivity_details_lnk_timezone').find('option[value="'+objActivity.timezone+'"]').attr('selected','selected').trigger('change'); 316 UI.dialogs.addActivity.find('.group_addactivity_details_lnk_timezone').addClass('hidden'); 317 $('.group-addevent-details-txt-timezone').removeClass('hidden'); 376 318 377 319 } 378 320 379 UI.dialogs.addActivity.find('. calendar_addactivity_details_lnk_timezone').click(function(e){321 UI.dialogs.addActivity.find('.group_addactivity_details_lnk_timezone').click(function(e){ 380 322 $(this).addClass('hidden'); 381 $('. calendar-addactivity-details-txt-timezone').removeClass('hidden');323 $('.group-addactivity-details-txt-timezone').removeClass('hidden'); 382 324 e.preventDefault(); 383 325 }); 384 326 385 /*Seleciona a agenda padrão para visualização/edição de um evento*/ 386 if(objEvent.id) 387 UI.dialogs.addActivity.find('option[value="'+objEvent.calendar+'"]').attr('selected','selected').trigger('change'); 388 389 /* Checkbox allday */ 390 391 UI.dialogs.addActivity.find('input[name="allDay"]').click(function(){ 392 $(this).attr("checked") ? 393 UI.dialogs.addActivity.find('.start-time, .end-time').addClass('hidden') : 394 UI.dialogs.addActivity.find('.start-time, .end-time').removeClass('hidden'); 395 updateMap(true); 396 }); 327 UI.dialogs.addActivity.find('.button.remove').button({ 328 text:false, 329 icons:{ 330 primary:'ui-icon-close' 331 } 332 }).click(function(el){ 333 var id; 334 if( id = $(this).parent().find('input[name="alarmId[]"]').val()) 335 DataLayer.remove('alarm', id); 336 $(this).parent().remove().find('li').is(':empty'); 337 }); 338 339 UI.dialogs.addActivity.find('.button-add-alarms').click(function(){ 340 DataLayer.render( 'templates/alarms_add_itemlist.ejs', {type: 0}, function( template ){ 341 jQuery('.activity-alarms-list').append(template) 342 .find('li:last label:eq(0)').remove().end() 343 .find('.number').numeric().end() 344 .find('.button.remove').button({ 345 text:false, 346 icons:{ 347 primary:'ui-icon-close' 348 } 349 }).click(function(el) { 350 $(this).parent().remove(); 351 }); 352 }); 353 }); 354 355 /*Seleciona a agenda padrão para visualização/edição de um evento*/ 356 if(objActivity.id) 357 UI.dialogs.addActivity.find('option[value="'+objActivity.group+'"]').attr('selected','selected').trigger('change'); 397 358 398 359 UI.dialogs.addActivity.find('.button').button(); 399 UI.dialogs.addActivity.find('.button.add').button({400 icons: {401 402 }360 UI.dialogs.addActivity.find('.button.add').button({ 361 icons: { 362 secondary: "ui-icon-plus" 363 } 403 364 }); 404 365 405 366 // ==== validation events ==== 406 UI.dialogs.addActivity.find(".input-group .h1").Watermark("Atividade sem título"); 407 if(User.preferences.hourFormat.length == 5) { 408 UI.dialogs.addActivity.find(".end-time, .start-time").mask("99:99", { 409 completed: function(){ 410 updateMap(); 411 } 412 }); 413 } else { 414 $.mask.definitions['{']='[ap]'; 415 $.mask.definitions['}']='[m]'; 416 UI.dialogs.addActivity.find(".end-time, .start-time").mask("99:99 {}", { 417 completed:function(){ 418 $(this).val(date.Calendar.defaultToAmPm($(this).val())); 419 $(this).timepicker("refresh"); 420 $(this).val($(this).val().replace(/[\.]/gi, "")); 421 updateMap(); 422 } 423 }); 424 } 367 UI.dialogs.addActivity.find(".input-group .h1").Watermark("Atividade sem tÃtulo"); 368 425 369 UI.dialogs.addActivity.find(".number").numeric(); 370 426 371 User.preferences.dateFormat.indexOf('-') > 0 ? 427 372 UI.dialogs.addActivity.find(".date").mask("99-99-9999", { … … 430 375 } 431 376 }) : 377 432 378 UI.dialogs.addActivity.find(".date").mask("99/99/9999", { 433 379 completed:function(){ … … 436 382 }); 437 383 438 UI.dialogs.addActivity.find(".menu-add Activity")384 UI.dialogs.addActivity.find(".menu-addactivity") 439 385 .children(".delete").click(function(){ 440 386 $.Zebra_Dialog('Tem certeza que deseja excluir a atividade?', { 441 387 'type': 'question', 442 388 'overlay_opacity': '0.5', 443 'buttons': ['Sim', 'N ão'],389 'buttons': ['Sim', 'Não'], 444 390 'onClose': function(clicked) { 445 391 if(clicked == 'Sim'){ 446 392 canDiscardEventDialog = true; 447 393 /* Remove por filtro */ 448 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', obj Event.id], ['=', 'calendar', objEvent.calendar], ['=','user',(objEvent.me.user ? objEvent.me.user.id : objEvent.me.id)]]});394 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', objActivity.id], ['=', 'group', objActivity.group], ['=','user',(objActivity.me.user ? objActivity.me.user.id : objActivity.me.id)]]}); 449 395 Calendar.rerenderView(true); 450 396 /********************/ … … 460 406 461 407 .children(".save").click(function(){ 462 /* Valida ção */408 /* Validação 463 409 var msg = false; 464 410 if(msg = validDateEvent()){ 465 $(".new-activity-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg);466 return false;467 } 468 411 $(".new-activity-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg); 412 return false; 413 } 414 */ 469 415 canDiscardEventDialog = true; 470 416 471 var exit = function(event){ 472 if(event) 473 DataLayer.remove('schedulable', event, false); 474 475 UI.dialogs.addActivity.children().find('form.form-addevent').submit(); 476 UI.dialogs.addActivity.dialog("close"); } 477 478 if(repeat){ 479 DataLayer.remove('repeat', false); 480 DataLayer.put('repeat', repeat); 481 DataLayer.commit('repeat', false, exit(repeat.schedulable)); 482 }else 483 exit(); 417 UI.dialogs.addActivity.children().find('form.form-addactivity').submit(); 418 UI.dialogs.addActivity.dialog("close"); 419 484 420 }).end() 485 421 … … 488 424 }); 489 425 490 var task_activityHtml = DataLayer.render( path+'templates/task_activity_add.ejs', { 491 event:objEvent 492 }); 493 494 495 var blkAddAtendee = UI.dialogs.addActivity.find('#calendar_addactivity_details8').append(task_activityHtml); 426 var task_activityHtml = DataLayer.render( path+'templates/task_activity_add.ejs', { activity: objActivity}); 427 var blkAddTask = UI.dialogs.addActivity.find('#group_addactivity_details8').append(task_activityHtml); 496 428 497 429 var dates = UI.dialogs.addActivity.find('input.date').datepicker({ … … 502 434 }); 503 435 504 UI.dialogs.addActivity.find('input.time').timepicker({ 505 closeText: 'Ok', 506 hourGrid: 4, 507 minuteGrid: 10, 508 ampm : ((User.preferences.hourFormat.length > 5) ? true: false), 509 timeFormat: "hh:mm tt", 510 onSelect: function (selectedDateTime){ 511 if(!(User.preferences.hourFormat.length == 5)) 512 $(this).val(selectedDateTime.replace(/[\.]/gi, "")); 513 updateMap(); 514 }, 515 onClose : function (selectedDateTime){ 516 if(!(User.preferences.hourFormat.length == 5)) 517 $(this).val(selectedDateTime.replace(/[\.]/gi, "")); 518 } 519 520 521 }); 522 523 blkAddAtendee.find('.add-activity-search .ui-icon-search').click(function(event) { 524 blkAddAtendee.find('.add-activity-search input').keydown(); 436 blkAddTask.find('.add-activity-search .ui-icon-search').click(function(event) { 437 blkAddTask.find('.add-activity-search input').keydown(); 525 438 }); 526 439 527 440 528 blkAdd Atendee.find('.add-activity-search input').keydown(function(event) {441 blkAddTask.find('.add-activity-search input').keydown(function(event) { 529 442 530 443 if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') { 531 444 // Fazer get das tarefas 532 var result = [ {'name': 'Tarefa 01'} , {'name': 'Tarefa 02'} , {'name' : 'Tarefa 03'} ]; 533 //DataLayer.get('user', ["*", "name", $(this).val()], true); 534 535 445 var filter = 446 { 447 filter: 448 ['AND', 449 ['=', 'type', '2'], 450 ['>=','startTime', $.now()], 451 ['in', 'calendar', 452 [$('div.new-activity-win.active select[name="groupFilter"]').val()] 453 ] 454 ], criteria: {'filterTasks': true} 455 }; 456 if($(this).val() != ''){ 457 filter['filter'].push(['OR', 458 ["i*", "summary", $(this).val()], 459 ["i*", "description", $(this).val()] 460 ]); 461 } 462 463 var result = DataLayer.get('schedulable:taskSearch', filter, true) 536 464 /** 537 538 539 blkAdd Atendee.find('ul.search-result-list').empty().css('overflow', 'hidden');465 * TODO: trocar por template 466 */ 467 blkAddTask.find('ul.search-result-list').empty().css('overflow', 'hidden'); 540 468 if (!result) { 541 blkAddAtendee.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>'); 542 } 543 544 for(i=0; i<result.length; i++) 545 result[i].enabled = (blkAddAtendee.find('dd.task-helpers-list ul.task-helpers-list label.mail[title="' + result[i].mail + '"]').length) ? false : true; 546 547 blkAddAtendee.find('ul.search-result-list').append(DataLayer.render( path+'templates/task_search_itemlist.ejs', result)); 548 549 550 blkAddAtendee.find('ul.search-result-list li').click(function(event, ui){ 551 if ($(event.target).is('input')) { 552 old_item = $(event.target).parents('li'); 553 newAttendeeId = DataLayer.put('participant', { 554 user: old_item.find('.id').html(), 555 isExternal: old_item.find('.isExternal').html() 556 }); 557 558 attendees[old_item.find('.id').html()] = old_item.find('.name').html(); 559 560 blkAddAtendee.find('dd.task-activity-list ul.task-activity-list') 561 .append(DataLayer.render(path+'templates/task_add_itemlist.ejs', [{ 562 id: newAttendeeId, 563 name: old_item.find('.name').html(), 564 mail: old_item.find('.mail').html(), 565 isExternal: old_item.find('.isExternal').html(), 566 acl: objEvent.acl, 567 isDirty: !!!objEvent.id 568 }])) 569 .scrollTo('max'); 570 /** 571 * Delegação de participação de um participante com permissão apenas de leitura 572 * 573 */ 574 if(!objEvent.acl.organization && !objEvent.acl.write && !objEvent.acl.inviteGuests && objEvent.acl.read ){ 575 576 blkAddAtendee.find('.block-add-attendee.search').addClass('hidden'); 577 blkAddAtendee.find('.block-add-attendee.search dt').html('Adicionar outros contatos'); 578 579 blkAddAtendee.find('.status option').toggleClass('hidden'); 580 blkAddAtendee.find('option[value=5]').attr('selected','selected').trigger('change'); 581 blkAddAtendee.find('.request-update').removeClass('hidden'); 582 583 blkAddAtendee.find('dd.attendee-list ul.attendee-list li .button.close').parents('li').find('input[name="delegatedFrom[]"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val()); 584 585 blkAddAtendee.find('.me .participant-delegate').addClass('disable ui-button-disabled ui-state-disabled'); 586 blkAddAtendee.find(".button.close").button({ 587 icons: { 588 primary: "ui-icon-close" 589 }, 590 text: false 591 }).click(function () { 592 593 $(this).parents('li').find('input[name="delegatedFrom[]"]').val(''); 594 blkAddAtendee.find('.request-update').addClass('hidden'); 595 blkAddAtendee.find('.status option').toggleClass('hidden'); 596 blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change'); 597 blkAddAtendee.find('.me .participant-delegate').removeClass('disable ui-button-disabled ui-state-disabled attendee-permissions-change-button') 598 .find('.ui-icon-person').removeClass('attendee-permissions-change').end(); 599 600 DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val()); 601 $(this).parents('li').remove(); 602 }) 603 .addClass('tiny'); 604 }else{ 605 callbackAttendee(); 606 old_item.remove(); 607 } 608 } 609 }); 610 611 469 blkAddTask.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>'); 470 }else{ 471 for(i=0; i<result.length; i++) 472 result[i].enabled = (blkAddTask.find('dd.task-activity-list ul.task-activity-list input[value="' + result[i].id + '"]').length) ? false : true; 473 474 blkAddTask.find('ul.search-result-list').append(DataLayer.render( path+'templates/task_search_itemlist.ejs', result)); 475 476 /* TODO - Verificar id da aitividade*/ 477 blkAddTask.find('ul.search-result-list li').click(function(event, ui){ 478 if ($(event.target).is('input')) { 479 old_item = $(event.target).parents('li'); 480 481 tasks[old_item.find('[name="id"]').val()] = { 482 startDate: old_item.find('[name="taskStartDate"]').val(), 483 startHour: old_item.find('[name="taskStartHour"]').val(), 484 endDate: old_item.find('[name="taskEndDate"]').val(), 485 endHour: old_item.find('[name="taskEndHour"]').val(), 486 dueDate: old_item.find('[name="taskDueDate"]').val(), 487 dueTime: old_item.find('[name="taskDueTime"]').val(), 488 allDay: old_item.find('[name="taskAllDay"]').val(), 489 percentage: old_item.find('[name="taskPercentage"]').val(), 490 }; 491 492 tasks.length += 1; 493 494 /* 495 newTaskToActivity = DataLayer.put('taskToActivity', { 496 owner: User.me.id, 497 task: old_item.find('.id').html(), 498 activity: 'VER ISSO AQUI' 499 }); 500 */ 501 //attendees[old_item.find('.id').html()] = old_item.find('.name').html(); 502 503 blkAddTask.find('dd.task-activity-list ul.task-activity-list') 504 .append(DataLayer.render(path+'templates/task_add_itemlist.ejs', [{ 505 idTask: old_item.find('[name="id"]').val(), 506 description: old_item.find('.description').html() 507 }])) 508 .scrollTo('max'); 509 510 callbackTask(); 511 registerStatus(); 512 blkAddTask.find('.not-activity').addClass('hidden'); 513 old_item.remove(); 514 } 515 }); 516 517 } 612 518 event.preventDefault(); 613 519 } 614 520 }); 615 521 616 UI.dialogs.addActivity.find('.row.fileupload-buttonbar .button').filter('.delete').button({ 522 /*Carrega as tarefas já existentes em uma atividade*/ 523 if(objActivity.tasks.length){ 524 tasks = objActivity.tasks; 525 526 for(var i in objActivity.tasks){ 527 if(i != 'length') 528 blkAddTask.find('dd.task-activity-list ul.task-activity-list') 529 .append(DataLayer.render(path+'templates/task_add_itemlist.ejs', [{ 530 idTask: i, 531 description: tasks[i].description, 532 idTaskToActivity: tasks[i].taskToActivity 533 }])) 534 .scrollTo('max'); 535 } 536 537 callbackTask(); 538 registerStatus(); 539 blkAddTask.find('.not-activity').addClass('hidden'); 540 } 541 542 UI.dialogs.addActivity.find('.row.fileupload-buttonbar-activity .button').filter('.delete').button({ 617 543 icons: { 618 primary: "ui-icon-close"544 primary: "ui-icon-close" 619 545 }, 620 546 text: 'Excluir' … … 623 549 'type': 'question', 624 550 'overlay_opacity': '0.5', 625 'buttons': ['Sim', 'N ão'],551 'buttons': ['Sim', 'Não'], 626 552 'onClose': function(clicked) { 627 553 if(clicked == 'Sim'){ … … 640 566 .filter('.close').button({ 641 567 icons: { 642 primary: "ui-icon-close"568 primary: "ui-icon-close" 643 569 }, 644 570 text: false … … 649 575 .filter('.downlaod-archive').button({ 650 576 icons: { 651 primary: "ui-icon-arrowthickstop-1-s"577 primary: "ui-icon-arrowthickstop-1-s" 652 578 }, 653 579 text: false … … 697 623 }, 698 624 done: function(e, data){ 699 var currentUpload = $('.progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide();700 701 if(!!data.result && data.result != "[]"){702 var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data);703 $('.attachment-list').append('<input tyepe="hidden" name="attachment[]" value="'+newAttach['attachment'][0][0].id+'"/>');704 currentUpload.removeClass('on-complete').parents('p')705 .append('<input type="hidden" name="fileId[]" value="'+newAttach['attachment'][0][0].id+'"/>')706 .find('.status-upload').addClass('ui-icon ui-icon-check');707 }else708 currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel');709 }625 var currentUpload = $('.progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide(); 626 627 if(!!data.result && data.result != "[]"){ 628 var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data); 629 $('.attachment-list').append('<input tyepe="hidden" name="attachment[]" value="'+newAttach['attachment'][0][0].id+'"/>'); 630 currentUpload.removeClass('on-complete').parents('p') 631 .append('<input type="hidden" name="fileId[]" value="'+newAttach['attachment'][0][0].id+'"/>') 632 .find('.status-upload').addClass('ui-icon ui-icon-check'); 633 }else 634 currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel'); 635 } 710 636 }); 711 637 $('.attachments-list .button').button(); … … 779 705 progressTimer = window.setInterval(intervalHandler, interval); 780 706 }); 781 782 if(objEvent.isShared){783 784 var acls = Calendar.signatureOf[objEvent.calendar].permission.acl;785 786 if(!acls.write){787 UI.dialogs.addActivity.find(':input').attr('disabled', 'disabled');788 UI.dialogs.addActivity.find('.button').hide();789 }790 791 if(acls.remove)792 UI.dialogs.addActivity.find('.button.remove').show();793 794 UI.dialogs.addActivity.find('.button.cancel').show();795 }796 797 disponibily(objEvent, path, attendees);798 799 UI.dialogs.addActivity.find('.button-add-alarms').click(function(){800 var li_attach = DataLayer.render(path+'templates/alarms_add_itemlist.ejs', {type: 1});801 802 jQuery('.activity-alarms-list').append(li_attach).find('.button.remove').button({803 text:false,804 icons:{805 primary:'ui-icon-close'806 }807 }).click(function(el) {808 $(this).parent().remove().find('li').is(':empty')809 });810 // valicacao de campos numericos811 $('.number').numeric();812 });813 814 707 815 708 UI.dialogs.addActivity.dialog('open'); -
sandbox/2.4.2-expresso1/prototype/modules/calendar/js/calendar.codecs.js
r6903 r6945 799 799 }; 800 800 }); 801 801 return (notArray ? res[0] : res); 802 } 803 }); 804 805 DataLayer.codec( "schedulable", "taskSearch", { 806 807 decoder: function( evtObj ){ 808 809 }, 810 811 encoder: function( evtObj ){ 812 813 var notArray = false; 814 815 if( notArray = $.type(evtObj) !== "array" ) 816 evtObj = [ evtObj ]; 817 818 var res = $.map(evtObj, function( objEvent ){ 819 820 if(!(typeof(objEvent) == 'object')) 821 return (null); 822 823 return { 824 id: objEvent.id, 825 description: !!objEvent.summary ? objEvent.summary : objEvent.description, 826 startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 827 startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 828 endDate: new Date( parseInt(objEvent.endTime) - (!!parseInt(objEvent.allDay) ? 86400000 : 0) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 829 endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(objEvent.endTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'endTime'), User.preferences.hourFormat), 830 dueDate: (!objEvent.due || objEvent.due == '' || objEvent.due == '0') ? '' : new Date( parseInt(objEvent.due) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 831 dueTime: (!objEvent.due || objEvent.due == '' || objEvent.due == '0') ? '' : dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.due)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 832 allDay: !!parseInt( objEvent.allDay ), 833 percentage: (objEvent.percentage) ? objEvent.percentage : '0' 834 } 835 }); 836 return (notArray ? res[0] : res); 837 } 838 }); 839 840 DataLayer.codec( "schedulable", "activity", { 841 842 decoder: function( evtObj ){ 843 Encoder.EncodeType = "entity"; 844 845 if( notArray = $.type(evtObj) !== "array" ) 846 evtObj = [ evtObj ]; 847 848 var pref = User.preferences; 849 850 var res = $.map(evtObj, function( form ){ 851 852 var tzId = form.timezone || Calendar.signatureOf[form.group].calendar.timezone || User.preferences.timezone, 853 854 formatString = pref.dateFormat + " " + pref.hourFormat; 855 856 var decodeParticipants = function(attend){ 857 return [DataLayer.merge( 858 { 859 user: User.me.id, 860 isOrganizer: 1, 861 acl: 'row', 862 alarms: $.map( form.alarmTime || [], function( alarmTime, i ){ 863 if( alarmTime === "" ) 864 return( null ); 865 return !!form.alarmId[i] ? { 866 type: form.alarmType[i], 867 unit: form.alarmUnit[i], 868 time: form.alarmTime[i], 869 id: form.alarmId[i] 870 }: 871 872 { 873 type: form.alarmType[i], 874 unit: form.alarmUnit[i], 875 time: form.alarmTime[i] 876 }; 877 }) 878 }, attend != '0' ? {id: attend} : {})]; 879 }; 880 881 return DataLayer.merge({ 882 "class": form["class"], 883 startTime: Date.parseExact(form.startDate + " "+$.trim(form.startHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 884 endTime: Date.parseExact(form.endDate + " "+$.trim(form.endHour), formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), //+ (!!form.allDay ? 86400000 : 0) , 885 due: (form.dueDate == '' )? 0 : Date.parseExact(form.dueDate + " "+$.trim(form.dueHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 886 allDay: ( !!form.allDay ? 1 : 0 ), 887 status: form.taskStatus, 888 id: form.idActivity, 889 type: !!form.type ? form.type : 2, 890 percentage: form.percentage, 891 priority: form.priority, 892 category: form.category, 893 summary: form.summary, 894 description: form.description, 895 timezone: tzId, 896 attachments: $.map(form.attachment || [], function( attachment, i ){ 897 return { 898 attachment: attachment 899 } 900 }), 901 participants: decodeParticipants(form.idAttendee), 902 taskToActivity:$.map( form.idtask || [], function( task, i ){ 903 904 return DataLayer.merge({ 905 task: task, 906 owner: User.me.id 907 }, form.idTaskToActivity[i] != '' ? {id: form.idTaskToActivity[i]} : {}); 908 909 }) 910 }, form.lastGroup ? (( form.lastGroup == form.group ) ? {} : {calendar: form.group, lastGroup: form.lastGroup}) : {calendar: form.group}); 911 }); 912 913 return notArray ? res[0] : res; 914 }, 915 916 encoder: function( evtObj ){ 917 918 var notArray = false; 919 920 if( notArray = $.type(evtObj) !== "array" ) 921 evtObj = [ evtObj ]; 922 923 var res = $.map(evtObj, function( objEvent ){ 924 925 if(!(typeof(objEvent) == 'object')) 926 return (null); 927 928 var decodeTasks = function(obj){ 929 930 var tasks = {}, task = {}; 931 932 for(var i =0; i < obj.taskToActivity.length; i++){ 933 934 taskToActivity = DataLayer.get('taskToActivity', obj.taskToActivity[i]); 935 task = taskToActivity.task; 936 937 if($.type(task) != 'object') 938 task = DataLayer.get('schedulable', task); 939 940 tasks[task.id] = { 941 taskToActivity: taskToActivity.id, 942 allDay: !!parseInt(task.allDay), 943 dueDate: (!task.due || task.due == '' || task.due == '0') ? '' : new Date( parseInt(task.due) ).setTimezoneOffset( Timezone.timezone( task.timezone ) ).toString( User.preferences.dateFormat ), 944 dueTime: (!task.due || task.due == '' || task.due == '0') ? '' : dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(task.due)), task.timezone, obj.calendar, obj.DayLigth, 'startTime'), User.preferences.hourFormat), 945 startDate: new Date( parseInt(task.startTime) ).setTimezoneOffset( Timezone.timezone( task.timezone ) ).toString( User.preferences.dateFormat ), 946 startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(task.startTime)), task.timezone, task.calendar, obj.DayLigth, 'startTime'), User.preferences.hourFormat), 947 endDate: new Date( parseInt(task.endTime) - (!!parseInt(task.allDay) ? 86400000 : 0) ).setTimezoneOffset( Timezone.timezone( task.timezone ) ).toString( User.preferences.dateFormat ), 948 endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(task.endTime)), task.timezone, obj.calendar, obj.DayLigth, 'endTime'), User.preferences.hourFormat), 949 } 950 951 tasks[task.id].description = tasks[task.id].startDate + ' - ' + (!!task.summary ? task.summary : task.description); 952 953 } 954 955 tasks.length = obj.taskToActivity.length; 956 return tasks; 957 958 }; 959 960 return { 961 "class": objEvent["class"], 962 id: objEvent.id, 963 location: objEvent.location, 964 category: objEvent.category, 965 activityStatus: objEvent.status, 966 groups: Calendar.groups, 967 group: objEvent.group ? objEvent.group : objEvent.calendar, 968 summary: objEvent.summary, 969 type: !!objEvent.type ? objEvent.type : 2, 970 description: objEvent.description, 971 timezone: objEvent.timezone, 972 timezones: Timezone.timezones, 973 percentage: (objEvent.percentage) ? objEvent.percentage : '0', 974 priority: objEvent.priority, 975 startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 976 startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 977 endDate: new Date( parseInt(objEvent.endTime) - (!!parseInt(objEvent.allDay) ? 86400000 : 0) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 978 endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(objEvent.endTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'endTime'), User.preferences.hourFormat), 979 dueDate: (!objEvent.due || objEvent.due == '' || objEvent.due == '0') ? '' : new Date( parseInt(objEvent.due) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 980 dueTime: (!objEvent.due || objEvent.due == '' || objEvent.due == '0') ? '' : dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.due)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 981 allDay: !!parseInt( objEvent.allDay ), 982 historic: [], 983 tasks: objEvent.taskToActivity ? decodeTasks(objEvent) : {}, 984 attachments: $.map(objEvent.attachments || [], function( attachment, i ){ 985 var attach = DataLayer.get('schedulableToAttachment', attachment, false); 986 //TODO - Verificar na API retorno de id sobre os conceitos em que s?o utilizados tabelas de liga??o 987 if(!attach.name) return(null); 988 989 var ext = attach.name.split('.'); 990 attach.name = attach.name.length < 10 ? attach.name : ( ext.length == 1 ? attach.name.substr(0, 10) : (attach.name.substr(0, 6) + '.' + ext[ext.length -1])); 991 attach.size = formatBytes(attach.size); 992 return attach; 993 }), 994 me : User.me, 995 attendee: $.map(objEvent.participants || [], function( participant, i ){ 996 997 var attend = DataLayer.get('participant', (participant.id || participant)); 998 attend.user = DataLayer.get('user', attend.user); 999 1000 return { 1001 id: attend.id, 1002 alarms : $.map(attend.alarms || [], function( alarm ){ 1003 var alarm = DataLayer.get('alarm', alarm); 1004 return (alarm == "" ? (null) : alarm); 1005 }) 1006 }; 1007 }), 1008 1009 }; 1010 }); 802 1011 return (notArray ? res[0] : res); 803 1012 } … … 1089 1298 1090 1299 if(!(!!evtObj)) 1091 return undefined;1300 evtObj = []; 1092 1301 1093 1302 var notArray = false; … … 1314 1523 1315 1524 //occurrences = DataLayer.unique( occurrences ).sort(); 1316 1317 for( var i = 0; i < occurrences.length; i++ ) 1318 grouped[ evt.calendar ].push( DataLayer.merge( 1319 { 1320 id: evt.URI || evt.id+ '-' + i, 1321 title: Encoder.htmlDecode(evt.summary), 1322 start: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) ), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 1323 end: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) + duration - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 1324 allDay: parseInt( evt.allDay ), 1325 isRepeat: isRepeat, 1326 occurrence: i, 1327 type: evt.type, 1328 calendar: evt.calendar 1329 }, eventEditable(evt.id, isRepeat, i ) ) ); 1525 var typeEvent; 1526 for( var i = 0; i < occurrences.length; i++ ){ 1527 1528 typeEvent = (evt.type == 2 && evt.taskToActivity ? 3 : evt.type) 1529 grouped[ evt.calendar ].push( DataLayer.merge( 1530 { 1531 id: evt.URI || evt.id+ '-' + i, 1532 title: Encoder.htmlDecode(evt.summary), 1533 start: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) ), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 1534 end: Timezone.getDateCalendar(new Date( parseInt( occurrences[i] ) + duration - (!!parseInt(evt.allDay) ? 86400000 : 0)), calendar.timezone, !!evt.DayLigth ? evt.DayLigth.calendar.startTime : Timezone.daylightSaving), 1535 allDay: parseInt( evt.allDay ), 1536 isRepeat: isRepeat, 1537 occurrence: i, 1538 type: typeEvent, 1539 calendar: evt.calendar 1540 }, (parseInt(typeEvent) == 1 ? eventEditable(evt.id, isRepeat, i ) : (parseInt(typeEvent) == 2 ? {editable: true, disableResizing: false, disableDragging: false} : {editable: false, disableResizing: true, disableDragging: true}) )) ); 1541 } 1330 1542 }); 1331 1543 -
sandbox/2.4.2-expresso1/prototype/modules/calendar/js/helpers.js
r6916 r6945 2522 2522 var data = { 2523 2523 type : type == "tasks" ? "task-list" : ( type == "events" ? "event-list" : "search"), 2524 html : listEvents ,2524 html : listEvents 2525 2525 } 2526 2526 window_print.document.open(); … … 2713 2713 var data = { 2714 2714 type : $(this).parents('.details-event-list').hasClass("details-event") ? "event-detail" : "task-detail", 2715 html : html ,2715 html : html 2716 2716 } 2717 2717 window_print.document.open(); -
sandbox/2.4.2-expresso1/prototype/modules/calendar/js/init.js
r6934 r6945 440 440 evt.id = evt.id.split('-')[0]; 441 441 442 if(evt.type == 1){443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 442 switch (parseInt(evt.type)){ 443 case 1: 444 if(evt.selectable){ 445 if(evt.isRepeat){ 446 $.Zebra_Dialog(evt.title + ' é um evento com repetição.', { 447 'type': 'question', 448 'overlay_opacity': '0.5', 449 'buttons': ['Editar todas ocorrências', 'Editar essa ocorrência'], 450 'onClose': function(clicked) { 451 if(clicked == 'Editar todas ocorrências') { 452 eventDetails( DataLayer.get( "schedulable", evt.id), true); 453 }else{ 454 /* 455 * TODO - repeat foi adicionado pois melhorias devem ser feitas no rollback do 456 *DataLayer, repeat somente é usado quando se trata da criação de um evento 457 *pela edição de uma ocorrência. 458 */ 459 var repeat = mount_exception(evt.id, evt.occurrence); 460 461 $('.calendar-copy-move input[name="typeEvent"]').val("3"); 462 463 eventDetails(copyAndMoveTo(false , evt.id , false, "3", evt), true, '', false, repeat); 464 } 465 } 466 }); 467 }else{ 468 var schedulable = DataLayer.get( "schedulable", evt.id); 469 schedulable.group = evt.calendar; 470 eventDetails( schedulable, true); 471 } 472 472 } 473 }else{ 474 var task = DataLayer.get( "schedulable", evt.id); 475 task.group = evt.calendar; 476 taskDetails( task, true); 473 break; 474 case 2: 475 var task = DataLayer.get( "schedulable", evt.id); 476 task.group = evt.calendar; 477 taskDetails( task, true); 478 break; 479 case 3: 480 var activity = DataLayer.get( "schedulable", evt.id); 481 activity.group = evt.calendar; 482 activityDetails( activity, true); 483 break; 477 484 } 478 485 }, -
sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/activity_add.ejs
r6881 r6945 1 1 <div title="Criar Tarefa" class="div-addactivity content"> 2 <form method="POST" action=" <%=(data.event.acl.organization || data.event.acl.write) ? "schedulable:detail" : "schedulable:preview"%>" class="form-addeventcontent">3 4 <fieldset id=" calendar_addactivity_details1">5 <legend class="hidden">Detalhes da tarefa</legend>2 <form method="POST" action="schedulable:activity" class="form-addactivity content"> 3 4 <fieldset id="group_addactivity_details1"> 5 <legend class="hidden">Detalhes da atividade</legend> 6 6 <p class="input-group"> 7 <input type="text" class="h1" name="summary" <%=(data.event.acl.organization || data.event.acl.write) ? '' : 'disabled="disabled"' %> value="<%= (data.event.summary) ? data.event.summary : '' %>"/>8 <% if( data. event.id ){ %>9 <input type="hidden" class="id-event" name="idEvent" value="<%= data.event.id %>"/>7 <input type="text" class="h1" name="summary" value="<%= (data.activity.summary) ? data.activity.summary : '' %>"/> 8 <% if( data.activity.id ){ %> 9 <input type="hidden" class="id-activity" name="idActivity" value="<%= data.activity.id %>"/> 10 10 <% } %> 11 <% if( data.event.id && data.event.calendar){ %>12 <input type="hidden" class="last- calendar" name="lastCalendar" value="<%= data.event.calendar%>"/>11 <% if( data.activity.id && data.activity.group ){ %> 12 <input type="hidden" class="last-group" name="lastCalendar" value="<%= data.activity.group %>"/> 13 13 <% } %> 14 <input type="hidden" class="id-attendee" name="idAttendee" value="<%= data.activity.attendee[0] ? data.activity.attendee[0].id : '0'%>"/> 14 15 </p> 15 16 <p class="input-group date-info"> 16 <input type="text" class="date start-date" value="<%= (data. event.startDate) ? data.event.startDate : '' %>" <%=(data.event.acl.organization || data.event.acl.write) ? '' : 'disabled="disabled"' %>name="startDate" />17 <input type="text" class="time start-time<%= (data. event.allDay) ? ' hidden' : '' %>" value="<%= (data.event.startHour) ? data.event.startHour : '' %>" <%= (data.event.acl.organization || data.event.acl.write) ? '' : 'disabled="disabled"' %>name="startHour" />17 <input type="text" class="date start-date" value="<%= (data.activity.startDate) ? data.activity.startDate : '' %>" name="startDate" /> 18 <input type="text" class="time start-time<%= (data.activity.allDay) ? ' hidden' : '' %>" value="<%= (data.activity.startHour) ? data.activity.startHour : '' %>" name="startHour" /> 18 19 <span>até</span> 19 <input type="text" class="date end-date" value="<%= (data. event.endDate) ? data.event.endDate : '' %>" <%= (data.event.acl.organization || data.event.acl.write) ? '' : 'disabled="disabled"' %>name="endDate" />20 <input type="text" class="time end-time<%= (data. event.allDay) ? ' hidden' : '' %>" value="<%= (data.event.endHour) ? data.event.endHour : '' %>" <%=(data.event.acl.organization || data.event.acl.write) ? '' : 'disabled="disabled"' %>name="endHour" />20 <input type="text" class="date end-date" value="<%= (data.activity.endDate) ? data.activity.endDate : '' %>" name="endDate" /> 21 <input type="text" class="time end-time<%= (data.activity.allDay) ? ' hidden' : '' %>" value="<%= (data.activity.endHour) ? data.activity.endHour : '' %>" name="endHour" /> 21 22 22 23 <span class="previsao-termino">Previsão término:</span> 23 <input type="text" class="date date-previsao"> 24 <input type="text" class="time time-previsao"> 25 26 <a href="#" class="calendar_addactivity_details_lnk_timezone <%=((!data.event.acl.organization || !data.event.acl.write) && (data.event.id)) ? "hidden" : '' %>">Fuso horário</a> 27 28 29 <!-- <input type="text" name="timezone" style="display: none;" />--> 30 <select name="timezone" class="hidden calendar-addactivity-details-txt-timezone"> 24 <input type="text" class="date date-due" name="dueDate"> 25 <input type="text" class="time time-due" name="dueHour"> 26 27 <a href="#" class="group_addactivity_details_lnk_timezone">Fuso horário</a> 28 29 <select name="timezone" class="hidden group-addactivity-details-txt-timezone"> 31 30 <option value="">- None selected -</option> 32 <% for( var tzId in data. event.timezones ){ %>33 <option value="<%= tzId %>" <%= data.timezone === tzId ? 'selected="selected"' : '' %>><%= tzId + ' (' + data. event.timezones[ tzId ] + ')' %></option>31 <% for( var tzId in data.activity.timezones ){ %> 32 <option value="<%= tzId %>" <%= data.timezone === tzId ? 'selected="selected"' : '' %>><%= tzId + ' (' + data.activity.timezones[ tzId ] + ')' %></option> 34 33 <% } %> 35 34 </select> 36 37 <a class="button suggestion-hours small <%=(data.event.acl.organization || data.event.acl.write || !data.event.isAttendee) ? "hidden" : '' %>" href="#">Sugerir horário</a>38 35 39 36 </p> … … 49 46 50 47 <p class="input-group activity-type"> 51 <input type="checkbox" name="allDay" value="true" <%= (data. event.acl.organization || data.event.acl.write) ? '' : 'disabled="disabled"' %> <%= (data.event.allDay) ? 'checked="checked"' : '' %>/>48 <input type="checkbox" name="allDay" value="true" <%= (data.activity.allDay) ? 'checked="checked"' : '' %>/> 52 49 <label for="allDay">Dia inteiro</label> 53 50 </p> 54 51 <div class="subitem"> 55 % Conclusão: <input type="number" class="done" value="1"> 56 <span class="span_done"><input type="checkbox" class="button-repeat" /> Completo<span> 57 <select style="margin: 0 0 0 20px;"> 58 <option>Desenvolvimento</option> 59 </select> 60 <span style="margin:0 0 0 20px;">Prioridade<span> 61 <select> 62 <option>Alta</option> 63 <option selected="selected">Média</option> 64 <option>Baixa</option> 65 </select> 66 </div> 52 % Conclusão: <input type="number" name="percentage" class="done" value="<%= data.activity.percentage %>"> 53 <span style="margin:0 0 0 5px;">Status:<span> 54 <select name="activityStatus" style="margin: 0 0 0 5px;"> 55 <option <%= (data.activity.activityStatus == '1') ? 'selected="selected"' : '' %> value="1">Sem ações</option> 56 <option <%= (data.activity.activityStatus == '2') ? 'selected="selected"' : '' %> value="2">Em Processo</option> 57 <option <%= (data.activity.activityStatus == '3') ? 'selected="selected"' : '' %> value="3">Finalizada</option> 58 <option <%= (data.activity.activityStatus == '4') ? 'selected="selected"' : '' %> value="4">Cancelada</option> 59 </select> 60 <span style="margin:0 0 0 5px;">Prioridade<span> 61 <select name="priority"> 62 <option <%= (data.activity.priority == '1') ? 'selected="selected"' : '' %> value="1">Alta</option> 63 <option <%= (data.activity.priority == '2') ? 'selected="selected"' : '' %> value="2">Normal</option> 64 <option <%= (data.activity.priority == '3') ? 'selected="selected"' : '' %> value="3">Baixa</option> 65 </select> 66 <span class="span_done"><img src="../prototype/modules/calendar/img/empty-status.png"/> Completo<span> 67 </div> 67 68 </fieldset> 68 69 <ul style="width: 710px"> 69 <li><a href="# calendar_addactivity_details2">Detalhes da tarefa</a></li>70 <li><a href="# calendar_addactivity_details8">Tarefas</a></li>71 <li><a href="# calendar_addactivity_details4">Lembretes</a></li>72 <li><a href="# calendar_addactivity_details5">Anexos</a></li>73 <li><a href="# calendar_addactivity_details6">Histórico</a></li>70 <li><a href="#group_addactivity_details2">Detalhes da atividade</a></li> 71 <li><a href="#group_addactivity_details8">Tarefas</a></li> 72 <li><a href="#group_addactivity_details4">Lembretes</a></li> 73 <li><a href="#group_addactivity_details5">Anexos</a></li> 74 <li><a href="#group_addactivity_details6">Histórico</a></li> 74 75 </ul> 75 <fieldset id=" calendar_addactivity_details2" class="tab-level2">76 <legend class="hidden">Detalhes d o evento</legend>76 <fieldset id="group_addactivity_details2" class="tab-level2"> 77 <legend class="hidden">Detalhes da atividade</legend> 77 78 78 79 <p class="input-group"> 79 <label for=" calendar_addactivity_details_txtarea_description" class="for-textarea" >Descrição</label>80 <textarea name="description" <%= (data.event.acl.organization || data.event.acl.write) ? '' : 'disabled="disabled"' %> ><%=(data.event) ? data.event.description : '' %></textarea>80 <label for="group_addactivity_details_txtarea_description" class="for-textarea" >Descrição</label> 81 <textarea name="description"><%=(data.activity) ? data.activity.description : '' %></textarea> 81 82 </p> 82 83 83 84 <p class="input-group"> 84 <label for="calendar_addactivity_details_slt_cal">Grupo</label> 85 <select> 86 <% 87 for (var i=0; i< data.event.calendars.length; i++) { 88 if(data.event.calendars[i].id != data.event.calendar && Calendar.signatureOf[data.event.calendars[i].id].isOwner != '1' && (!Calendar.signatureOf[data.event.calendars[i].id].permission.acl.write) ) 89 continue; 90 %> 91 <option value="<%= data.event.calendars[i].id %>" <%= data.event.calendars[i].id == data.event.calendar ? 'selected="selected"':'' %>> 92 <%= data.event.calendars[i].name %> 93 </option> 94 <% } %> 95 </select> 96 <!--<select name="calendar" > 97 <% 98 for (var i=0; i< data.event.calendars.length; i++) { 99 if(data.event.calendars[i].id != data.event.calendar && Calendar.signatureOf[data.event.calendars[i].id].isOwner != '1' && !Calendar.signatureOf[data.event.calendars[i].id].permission.acl.write) 100 continue; 101 %> 102 <option value="<%= data.event.calendars[i].id %>" <%= data.event.calendars[i].id == data.event.calendar ? 'selected="selected"':'' %>> 103 <%= data.event.calendars[i].name %> 104 </option> 105 <% } %> 85 <label for="group_addactivity_details_slt_cal">Grupo</label> 86 <select name="group"> 87 <% for (var i=0; i< data.activity.groups.length; i++) { %> 88 <option value="<%= data.activity.groups[i].id %>" <%= data.activity.groups[i].id == data.activity.group ? 'selected="selected"':'' %>> 89 <%= data.activity.groups[i].name %> 90 </option> 91 <% } %> 106 92 </select> 107 -->108 93 </p> 109 94 … … 114 99 <label class="input-group">Mostrar-me como</label> 115 100 <input type="radio" checked="checked"/> 116 <label for=" calendar_addevent_details_rdo_status1">Dispon?vel</label>101 <label for="group_addactivity_details_rdo_status1">Dispon?vel</label> 117 102 <input type="radio"/> 118 <label for=" calendar_addevent_details_rdo_status2">Ocupado</label>103 <label for="group_addactivity_details_rdo_status2">Ocupado</label> 119 104 </p> 120 105 --> … … 122 107 <label class="input-group">Privacidade</label> 123 108 <input type="radio" name="class" value="1" checked="checked"/> 124 <label for=" calendar_addactivity_details_rdo_class1">Padrão</label>109 <label for="group_addactivity_details_rdo_class1">Padrão</label> 125 110 <input type="radio" name="class" value="2" /> 126 <label for=" calendar_addactivity_details_rdo_class2">Público</label>111 <label for="group_addactivity_details_rdo_class2">Público</label> 127 112 <input type="radio" name="class" value="3" /> 128 <label for=" calendar_addactivity_details_rdo_class3">Privado</label>113 <label for="group_addactivity_details_rdo_class3">Privado</label> 129 114 </p> 130 115 … … 134 119 135 120 <div class="overflow_add_calender"> 136 <fieldset id=" calendar_addactivity_details4" class="tab-level2">121 <fieldset id="group_addactivity_details4" class="tab-level2"> 137 122 <legend class="hidden">Lembretes</legend> 138 123 139 <p class="default-alarm- event <%= (!data.event.id && data.event.alarms) ? '' : 'hidden'%>">124 <p class="default-alarm-activity <%= (!data.activity.id && data.activity.alarms) ? '' : 'hidden'%>"> 140 125 <input type="checkbox" name="defaultAlarm" value="true" checked="checked"/> 141 126 <label class="input-default-alarm" for="defautAlarm">Usar alarmes padrões</label> … … 143 128 144 129 <ul class="activity-alarms-list"> 145 <% if (data.event && data.event.alarms) { 146 for (var i=0; i< data.event.alarms.length; i++) { 130 <% if (data.activity && data.activity.attendee && !!data.activity.attendee.length && data.activity.attendee[0].alarms) { 131 var alarms = data.activity.attendee[0].alarms; 132 for (var i=0; i< alarms.length; i++) { 147 133 %> 148 134 <li class="input-group"> 149 150 151 <option value="alert" <%= data.event.alarms[i].type=='alert' ? 'selected="selected"':'' %>>Alerta</option>152 <option value="mail" <%= data.event.alarms[i].type=='mail' ? 'selected="selected"':'' %>>E-mail</option>153 <!--<option value="sms" <%= data.event.alarms[i].type=='sms' ? 'selected="selected"':'' %>>SMS</option>-->154 155 <input type="text" name="alarmTime[]" class="number input-small" value="<%= data.event.alarms[i].time %>"/>156 157 <option value="m" <%= data.event.alarms[i].unit=='m' ? 'selected="selected"':'' %>>Minutos</option>158 <option value="h" <%= data.event.alarms[i].unit=='h' ? 'selected="selected"':'' %>>Horas</option>159 <option value="d" <%= data.event.alarms[i].unit=='d' ? 'selected="selected"':'' %>>Dias</option>160 161 <input type="hidden" name="alarmId[]" value="<%=data. event.useAlarmDefault ? '' : data.event.alarms[i].id%>" />162 <input type="hidden" name="isDefaultAlarm[]" value="<%=data. event.useAlarmDefault ? 1 : 0%>" />163 <label> antes de cada evento.</label>135 <label>Avisar-me por </label> 136 <select name="alarmType[]"> 137 <option value="alert" <%= alarms[i].type=='alert' ? 'selected="selected"':'' %>>Alerta</option> 138 <option value="mail" <%= alarms[i].type=='mail' ? 'selected="selected"':'' %>>E-mail</option> 139 <!--<option value="sms" <%= alarms[i].type=='sms' ? 'selected="selected"':'' %>>SMS</option>--> 140 </select> 141 <input type="text" name="alarmTime[]" class="number input-small" value="<%= alarms[i].time %>"/> 142 <select name="alarmUnit[]"> 143 <option value="m" <%= alarms[i].unit=='m' ? 'selected="selected"':'' %>>Minutos</option> 144 <option value="h" <%= alarms[i].unit=='h' ? 'selected="selected"':'' %>>Horas</option> 145 <option value="d" <%= alarms[i].unit=='d' ? 'selected="selected"':'' %>>Dias</option> 146 </select> 147 <input type="hidden" name="alarmId[]" value="<%=data.activity.useAlarmDefault ? '' : alarms[i].id%>" /> 148 <input type="hidden" name="isDefaultAlarm[]" value="<%=data.activity.useAlarmDefault ? 1 : 0%>" /> 149 <label> antes de cada activityo.</label> 164 150 <a class="button remove tiny"></a> 165 151 </li> 166 <% 152 <%} 167 153 } 168 154 %> … … 173 159 </div> 174 160 175 <fieldset id=" calendar_addactivity_details6" class="tab-level2" title="Participantes">161 <fieldset id="group_addactivity_details6" class="tab-level2" title="Participantes"> 176 162 <div class="parent" > 177 163 … … 193 179 </fieldset> 194 180 195 <fieldset id=" calendar_addactivity_details8" class="tab-level2" title="Tarefas">181 <fieldset id="group_addactivity_details8" class="tab-level2" title="Tarefas"> 196 182 197 183 </fieldset> 198 184 199 185 <fieldset class="attachment-list hidden"> 200 <%if(data. event && data.event.attachments){201 for (var i=0; i< data. event.attachments.length; i++) {%>202 <input type="hidden" name="fileId[]" value="<%=data. event.attachments[i].id%>"/>186 <%if(data.activity && data.activity.attachments){ 187 for (var i=0; i< data.activity.attachments.length; i++) {%> 188 <input type="hidden" name="fileId[]" value="<%=data.activity.attachments[i].id%>"/> 203 189 <%} 204 190 }%> … … 207 193 208 194 <div class="overflow_add_calender"> 209 <fieldset id=" calendar_addactivity_details5" class="tab-level2">195 <fieldset id="group_addactivity_details5" class="tab-level2"> 210 196 <form id="fileupload" action="attachment:detail" method="POST"> 211 197 <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload --> … … 213 199 <div class="button-files-upload"> 214 200 <!-- The fileinput-button span is used to style the file input field as button --> 215 <%if(data.event.acl.organization || data.event.acl.write){%>216 201 202 <span class="button btn-success fileinput-button"> 217 203 <span><i class="icon-plus icon-white"></i> Adicionar</span> 218 204 <input type="file" name="files[]" multiple> 219 205 </span> 220 <%}%> 221 <%if(data.event.acl.organization || data.event.acl.write){%> 222 <button type="button" class="button btn-danger delete"> 223 <i class="icon-trash icon-white"></i> Remover Todos 224 </button> 225 <%}%> 206 207 <button type="button" class="button btn-danger delete"> 208 <i class="icon-trash icon-white"></i> Remover Todos 209 </button> 210 226 211 </div> 227 212 <div id="fileupload-progress"></div> 228 213 <div class="files-list"> 229 214 <ul class="attachments-list"> 230 <%if(data. event && data.event.attachments){231 for (var i=0; i< data. event.attachments.length; i++) {215 <%if(data.activity && data.activity.attachments){ 216 for (var i=0; i< data.activity.attachments.length; i++) { 232 217 %> 233 218 <p class="input-group arquive-info"> 234 219 <label class="lbl-archive-nome">Nome:</label> 235 <span class="archive-nome"><%=data. event.attachments[i].name%></span>220 <span class="archive-nome"><%=data.activity.attachments[i].name%></span> 236 221 237 222 <label class="lbl-archive-size">Tamanho:</label> 238 <span class="archive-size"><%=data. event.attachments[i].size%></span>239 <a href="../prototype/getArchive.php?attachment=<%=data. event.attachments[i].id%>" class="button tiny upload downlaod-archive">Download</a>240 <%if(data.event.acl.organization || data.event.acl.write){%>241 242 <%}%>243 <input type="hidden" name="fileId[]" value="<%=data. event.attachments[i].id%>"/>223 <span class="archive-size"><%=data.activity.attachments[i].size%></span> 224 <a href="../prototype/getArchive.php?attachment=<%=data.activity.attachments[i].id%>" class="button tiny upload downlaod-archive">Download</a> 225 226 <span class="button close tiny upload edit delete-upload" title="Deletar">Deletar</span> 227 228 <input type="hidden" name="fileId[]" value="<%=data.activity.attachments[i].id%>"/> 244 229 </p> 245 230 <%} … … 255 240 </fieldset> 256 241 </div> 257 <form action="../prototype/modules/ calendar/export.php" method="GET" class="form-export content">258 <input type="hidden" class="id-activity" name="activity" value="<%= data. event.id %>"/>242 <form action="../prototype/modules/group/export.php" method="GET" class="form-export content"> 243 <input type="hidden" class="id-activity" name="activity" value="<%= data.activity.id %>"/> 259 244 </form> 260 245 261 246 <div title="" class="menu-container footer-container menu-addactivity"> 262 <% if (data. event.id) { %>247 <% if (data.activity.id) { %> 263 248 <a title="Exportar" class="button export" href="#">Exportar</a> 264 249 <a title="Excluir" class="button delete" href="#">Excluir</a> -
sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/index.ejs
r6881 r6945 158 158 </div> 159 159 </body> 160 161 160 </html> 162 -
sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/task_activity_add.ejs
r6881 r6945 1 <dl class="block-activity-list activitys-list"> 2 <dt class="activity-list">Tarefas</dt> 1 <dl class="block-activity-group-select activitys-list"> 2 <dt class="activity-group-select">Grupo de evento</dt> 3 <dd class="group-select"> 4 <ul class="activity-group-select"> 5 <select name="groupFilter"> 6 <%for(var i = 0; i < Calendar.groups.length; i++){%> 7 <option value="<%= Calendar.groups[i].id %>"><%= Calendar.groups[i].name %></option> 8 <%}%> 9 </select> 10 </ul> 11 </dd> 12 13 <dt class="activity-list">Tarefas</dt> 3 14 <dd class="task-activity-list"> 4 15 <ul class="task-activity-list"> 5 16 6 <% if(data. event.me.id == data.event.organizer.id && !(data.event.attendee.length > 0)) { %>7 <li class="not-activity">Não há outros participantes.</li>17 <% if(data.activity.tasks.length <= 0) { %> 18 <li class="not-activity">Não há outras tarefas.</li> 8 19 <% } %> 9 20 … … 13 24 14 25 <dl class="block-add-activity search" style=""> 15 <dt class="add-activity search"> Adicionar tarefa</dt>26 <dt class="add-activity search">Pesquisar tarefa</dt> 16 27 <dd class="add-activity"> 17 28 <fieldset class="block-add-activity" title="Participantes"> -
sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/task_add.ejs
r6876 r6945 77 77 <li><a href="#calendar_addtask_details6">Participantes</a></li> 78 78 <li><a href="#calendar_addtask_details7">Disponibilidade</a></li> 79 <li><a href="#calendar_addtask_details8">Histórico de alterações</a></li>79 <li><a href="#calendar_addtask_details8">Histórico</a></li> 80 80 </ul> 81 81 <fieldset id="calendar_addtask_details2" class="tab-level2"> … … 163 163 </fieldset> 164 164 165 <fieldset id="calendar_addtask_details8" class="tab-level2" title="Histórico de alterações">165 <fieldset id="calendar_addtask_details8" class="tab-level2" title="Histórico"> 166 166 <div class="parent" > 167 167 -
sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/task_add_itemlist.ejs
r6881 r6945 1 <li class="attendee"> 1 <%console.log(data)%> 2 <li class="task"> 2 3 <div style="overflow:hidden; width:100%; display:table;"> 3 4 <div class="activity-options" style="float: right; margin: 0 10px 0 0;"> 4 <a class="button editactivity-options-button-edit new ui-icon-notice">Informações</a>5 <a class="button info activity-options-button-edit new ui-icon-notice">Informações</a> 5 6 <a class="button close new">Remover</a> 6 7 </div> 7 <input class="new" type="checkbox" value="<%= data[0].id %>"> 8 <input type="hidden" name="attendee[]" value="<%= data[0].id %>"> 9 <input type="hidden" name="attendeeType[]" value="<%=data[0].isExternal%>"> 10 <input type="hidden" name="attendeeAcl[]" value="r"> 11 <input type="hidden" name="delegatedFrom[]" value="0"> 12 <label title="<%= data[0].name ? data[0].name : '' %>" class="name"><%= data[0].name ? data[0].name : '' %></label> 13 <label title="<%= data[0].mail ? data[0].mail : '' %>" class="mail <%= data[0].name ? 'hidden' : ''%>"><%= data[0].mail ? data[0].mail : '' %></label> 14 </div> 8 <input class="new" type="checkbox" value="<%= data[0].idTask %>"> 9 <input type="hidden" name="idtask[]" value="<%= data[0].idTask %>"> 10 <input type="hidden" name="idTaskToActivity[]" value="<%= data[0].idTaskToActivity %>"> 11 <label title="<%= data[0].description %>" class="name"><%= data[0].description %></label> 15 12 </li> -
sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/task_search_itemlist.ejs
r6881 r6945 1 1 <% for (var i=0; i < data.length; i++) { %> 2 2 <li class="ui-widget-content" title="<%=data[i]['name']%>" style="border: 0;"> 3 <input type="checkbox" name="opcao" /> 4 <input type="hidden" value="<%=data[i]['id']%>" /> 5 <input class="id hidden" value="<%=data[i]['id']%>"/> 6 <input class="isExternal hidden" value="<%=data[i]['isExternal']%>"/> 7 8 <label class="name"><%=data[i]['name']%></label> 9 <label class="mail hidden"><%=data[i]['mail']%></label> 3 <input type="checkbox" name="option" <%= (data[i].enabled) ? '' : 'disabled="disabled"' %> value="<%= data[i].id %>" /> 4 <input type="hidden" name="id" value="<%=data[i]['id']%>" /> 5 <input type="hidden" name="taskStartDate" value="<%=data[i]['startDate']%>" /> 6 <input type="hidden" name="taskStartHour" value="<%=data[i]['startHour']%>" /> 7 <input type="hidden" name="taskEndDate" value="<%=data[i]['endDate']%>" /> 8 <input type="hidden" name="taskEndHour" value="<%=data[i]['endHour']%>" /> 9 <input type="hidden" name="taskDueDate" value="<%=data[i]['dueDate']%>" /> 10 <input type="hidden" name="taskDueTime" value="<%=data[i]['dueTime']%>" /> 11 <input type="hidden" name="taskAllDay" value="<%=data[i]['allDay']%>" /> 12 <input type="hidden" name="taskPercentage" value="<%=data[i]['percentage']%>" /> 13 <label class="description"><%=data[i]['startDate']%> - <%=data[i]['description']%></label> 10 14 </li> 11 15 <% } %>
Note: See TracChangeset
for help on using the changeset viewer.