Changeset 6876 for sandbox/2.4.2-expresso1/prototype/modules
- Timestamp:
- 07/25/12 17:05:36 (12 years ago)
- Location:
- sandbox/2.4.2-expresso1/prototype/modules/calendar
- Files:
-
- 3 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
sandbox/2.4.2-expresso1/prototype/modules/calendar/constants.php
r6797 r6876 56 56 define('CALENDAR_ACL_SHARED', 's'); 57 57 define('CALENDAR_ACL_REQUIRED', 'p'); 58 59 define('PRIORITY_HIGH', 1); 60 define('PRIORITY_NORMAL', 2); 61 define('PRIORITY_LOW', 3); 62 63 define('STATUS_TODO_NEED_ACTION', 1); 64 define('STATUS_TODO_IN_PROGRESS', 2); 65 define('STATUS_TODO_COMPLETED', 3); 66 define('STATUS_TODO_CANCELLED', 4); 58 67 ?> -
sandbox/2.4.2-expresso1/prototype/modules/calendar/css/layout.css
r6811 r6876 217 217 /* -- event details styles -- */ 218 218 219 .new-event-win.active {219 .new-event-win.active, .new-task-win.active { 220 220 width:700px;height:510px;text-align:left; 221 221 } 222 222 223 .new-event-win > .content.ui-tabs.ui-widget-content {223 .new-event-win > .content.ui-tabs.ui-widget-content, .new-task-win > .content.ui-tabs.ui-widget-content { 224 224 border: none; 225 225 } 226 226 227 .new-event-win ul.attendee-permissions-list, li.attendee-permissions-list {text-align: left;}227 .new-event-win ul.attendee-permissions-list, li.attendee-permissions-list, .new-task-win ul.attendee-permissions-list{text-align: left;} 228 228 229 229 li.attendee-permissions-list input{width: 20px !important; margin: 3px 0 0 0 !important;} … … 234 234 p.request-update label{width: 150px !important;} 235 235 236 .new-event-win .menu-addevent {236 .new-event-win .menu-addevent, .new-task-win .menu-addevent { 237 237 text-align: right; 238 238 } 239 239 240 fieldset.block-add-attendee .add-attendee-search { max-width: 250px; margin: 5px;} 241 fieldset.block-add-attendee .add-attendee-search input { max-width: 220px; width: 220px; padding: 0 0 0 7px;} 240 .new-event-win fieldset.block-add-attendee .add-attendee-search { max-width: 250px; margin: 5px;} 241 .new-task-win fieldset.block-add-attendee .add-attendee-search { max-width: 323px; margin: 5px;} 242 243 .new-event-win fieldset.block-add-attendee .add-attendee-search input { max-width: 220px; width: 220px; padding: 0 0 0 7px;} 244 .new-task-win fieldset.block-add-attendee .add-attendee-search input { max-width: 290px; width: 290px; padding: 0 0 0 7px;} 245 246 242 247 fieldset.block-add-attendee .search-result-list { width: 255px; max-height: 215px; overflow: auto;} 243 248 fieldset.block-add-attendee .search-result-list .ui-widget-content { border: none;} … … 249 254 .block-attendee-list, .block-add-attendee { float:left;} 250 255 .block-attendee-list { width:400px; margin-right: 5px; } 251 .block-add-attendee { width:260px; margin-right: 5px; } 256 .new-event-win .block-add-attendee { width:260px; margin-right: 5px; } 257 .new-task-win .block-add-attendee { width:335px; margin-right: 5px; } 252 258 .block-attendee-list dd, .block-add-attendee dd { border: 1px solid #BFBFBF; } 253 259 .block-attendee-list dt, .block-add-attendee dt { background-color:#FFF; margin: 5px 0 -6px 5px; font-weight: bold; display: table; position: relative;} … … 263 269 } 264 270 265 dl.block-add-attendee dd.add-attendee {271 .new-event-win dl.block-add-attendee dd.add-attendee { 266 272 width: 260px; 273 min-height: 260px; 274 display: block; 275 } 276 277 .new-task-win dl.block-add-attendee dd.add-attendee { 278 width: 343px; 267 279 min-height: 260px; 268 280 display: block; … … 740 752 /* -- alarm dysplay -- */ 741 753 742 .new-event-alarm {754 .new-event-alarm, .new-task-alarm{ 743 755 margin: 5px; 744 756 font: bold; 745 757 } 746 758 747 .title-event-alarm {759 .title-event-alarm, .title-task-alarm{ 748 760 margin: 5px; 749 761 } 750 762 751 .description-event-alarm {763 .description-event-alarm, .description-task-alarm{ 752 764 margin: 5px; 753 765 } 754 766 755 .inicialize-event-alarm {767 .inicialize-event-alarm, .inicialize-task-alarm{ 756 768 margin: 5px; 757 769 } … … 856 868 .ui-dialog .ui-button-text-only .ui-button-text { padding: 0.4em 1em; } 857 869 858 .new-event-win fieldset { border: none; margin: 0; padding: 0; } 859 .new-event-win fieldset.tab-level2 { padding: 0px 5px; } 860 .new-event-win fieldset fieldset, .new-event-win fieldset.tab-level2 fieldset { padding: 5px 0; } 870 .new-event-win fieldset, .new-task-win fieldset { border: none; margin: 0; padding: 0; } 871 .new-event-win fieldset.tab-level2, .new-task-win fieldset.tab-level2 { padding: 0px 5px; } 872 .new-event-win fieldset fieldset, .new-task-win fieldset.tab-level2 fieldset, 873 .new-task-win fieldset fieldset, .new-task-win fieldset.tab-level2 fieldset{ padding: 5px 0; } 861 874 862 875 .hidden { … … 899 912 } 900 913 901 .new- event-win div.div-addtask { padding: 0; width: 770px; border: 0;}914 .new-task-win div.div-addtask { padding: 0; width: 770px; border: 0;} 902 915 .new-event-win form.form-addevent { padding: 9px; } 903 916 904 917 .ui-dialog .ui-dialog-content { padding: 0; } 905 .new-event-win div.div-addevent { padding: 0; width: 700px; border: 0;}906 .new-event-win form.form-addevent { padding: 9px; }918 .new-event-win div.div-addevent, .new-task-win div.div-addtask { padding: 0; width: 700px; border: 0;} 919 .new-event-win form.form-addevent, .new-task-win form.form-addtask { padding: 9px; } 907 920 908 921 .expresso-calendar-container input[type="text"] { height: 18px; } … … 927 940 928 941 .expresso-calendar-container input.h1, 929 .new-event-win input.h1 {942 .new-event-win input.h1, .new-task-win input.h1 { 930 943 font-size: 150%; 931 944 font-weight: bold; … … 934 947 } 935 948 936 .new-event-win textarea {949 .new-event-win textarea, .new-task-win textarea { 937 950 width:600px; 938 951 height: 210px; … … 943 956 span.input-group { display: block; } 944 957 /*p.input-group label { vertical-align: top; }*/ 945 .new-event-win p.input-group label { display: inline-block; width: 65px;}946 .new-event-win p.input-group label.input-group { display: inline-block; width: 110px; font-weight: bold;}958 .new-event-win p.input-group label, .new-task-win p.input-group label { display: inline-block; width: 65px;} 959 .new-event-win p.input-group label.input-group, .new-task-win p.input-group label.input-group { display: inline-block; width: 110px; font-weight: bold;} 947 960 948 961 input.number {text-align: right} … … 964 977 .new-event-win fieldset.event-repeat-container label, 965 978 .new-event-win p.input-group.event-repeat-weekly label, 966 .new-event-win p.input-group.event-repeat-monthly label { 979 .new-event-win p.input-group.event-repeat-monthly label, 980 .new-task-win fieldset.task-repeat-container label, 981 .new-task-win p.input-group.task-repeat-weekly label, 982 .new-task-win p.input-group.task-repeat-monthly label 983 { 967 984 width: auto; 968 985 } … … 971 988 .new-event-win fieldset.search-field, 972 989 .new-event-win fieldset.block-add-attendee-permissions, 973 .new-event-win fieldset.block-attendee-list { 990 .new-event-win fieldset.block-attendee-list, 991 .new-task-win fieldset.input-field-rounded, 992 .new-task-win fieldset.search-field, 993 .new-task-win fieldset.block-add-attendee-permissions, 994 .new-task-win fieldset.block-attendee-list 995 { 974 996 border:1px solid #CFCFCF; 975 997 } 976 998 977 .new-event-win fieldset.block-attendee-list { width: 300px; max-height:180px; padding: 5px; float: left;}978 .new-event-win fieldset.block-attendee-list ul { height:160px; overflow: auto;}999 .new-event-win fieldset.block-attendee-list, .new-task-win fieldset.block-attendee-list { width: 300px; max-height:180px; padding: 5px; float: left;} 1000 .new-event-win fieldset.block-attendee-list ul, .new-task-win fieldset.block-attendee-list ul { height:160px; overflow: auto;} 979 1001 980 1002 -
sandbox/2.4.2-expresso1/prototype/modules/calendar/css/style.css
r6811 r6876 45 45 .ui-dialog .ui-button-text-only .ui-button-text { padding: 0.4em 1em; } 46 46 47 .new-event-win fieldset { border: none; margin: 0; padding: 0; }48 .new-event-win fieldset.tab-level2 { padding: 0px 5px; min-height: 310px; max-height: 310px; overflow: auto;}49 .new-event-win .overflow_add_calender { overflow: auto; max-height: 320px; }50 .new-event-win fieldset#calendar_addevent_details7 { overflow: hidden}51 .new-event-win fieldset#calendar_addevent_details5 .button-files-upload {margin: 15px 0 0 0}52 .new-event-win fieldset fieldset, .new-event-win fieldset.tab-level2 fieldset { padding: 5px 0; }47 .new-event-win fieldset, .new-task-win fieldset { border: none; margin: 0; padding: 0; } 48 .new-event-win fieldset.tab-level2, .new-task-win fieldset.tab-level2 { padding: 0px 5px; min-height: 310px; max-height: 310px; overflow: auto;} 49 .new-event-win .overflow_add_calender, .new-task-win .overflow_add_calender { overflow: auto; max-height: 320px; } 50 .new-event-win fieldset#calendar_addevent_details7, .new-task-win fieldset#calendar_addevent_details7 { overflow: hidden} 51 .new-event-win fieldset#calendar_addevent_details5 .button-files-upload, .new-task-win fieldset#calendar_addevent_details5 .button-files-upload{margin: 15px 0 0 0} 52 .new-event-win fieldset fieldset, .new-event-win fieldset.tab-level2 fieldset, .new-task-win fieldset fieldset, .new-event-win fieldset.tab-level2 fieldset { padding: 5px 0; } 53 53 54 54 .hidden { … … 92 92 93 93 .ui-dialog .ui-dialog-content { padding: 0; } 94 .new-event-win div.div-addevent { padding: 0; width: 700px; border: 0;} 95 .new-event-win form.form-addevent { padding: 9px; } 94 .new-event-win div.div-addevent{ padding: 0; width: 700px; border: 0;} 95 .new-task-win div.div-addtask { padding: 0; width: 774px; border: 0;} 96 .new-event-win form.form-addevent, .new-task-win form.form-addtask { padding: 9px; } 96 97 97 98 .expresso-calendar-container input[type="text"] { height: 18px; } … … 116 117 117 118 .expresso-calendar-container input.h1, 118 .new-event-win input.h1 { 119 .new-event-win input.h1, 120 .new-task-win input.h1{ 119 121 font-size: 150%; 120 122 font-weight: bold; … … 123 125 } 124 126 125 .new-event-win textarea { 127 .expresso-calendar-container input.h1, 128 .new-task-win input.h1 { 129 font-size: 150%; 130 font-weight: bold; 131 width: 64%; 132 height: 150%; 133 } 134 135 .new-event-win textarea, .new-task-win textarea { 126 136 width:600px; 127 137 height: 210px; … … 132 142 span.input-group { display: block; } 133 143 /*p.input-group label { vertical-align: top; }*/ 134 .new-event-win p.input-group label { display: inline-block; width: 65px;}135 .new-event-win p.input-group label.input-group { display: inline-block; width: 110px; font-weight: bold;}144 .new-event-win p.input-group label, .new-task-win p.input-group label { display: inline-block; width: 65px;} 145 .new-event-win p.input-group label.input-group, .new-task-win p.input-group label.input-group { display: inline-block; width: 110px; font-weight: bold;} 136 146 137 147 input.number {text-align: right} … … 153 163 .new-event-win fieldset.event-repeat-container label, 154 164 .new-event-win p.input-group.event-repeat-weekly label, 155 .new-event-win p.input-group.event-repeat-monthly label { 165 .new-event-win p.input-group.event-repeat-monthly label, 166 .new-task-win fieldset.task-repeat-container label, 167 .new-task-win p.input-group.task-repeat-weekly label, 168 .new-task-win p.input-group.task-repeat-monthly label 169 { 156 170 width: auto; 157 171 } … … 160 174 .new-event-win fieldset.search-field, 161 175 .new-event-win fieldset.block-add-attendee-permissions, 162 .new-event-win fieldset.block-attendee-list { 176 .new-event-win fieldset.block-attendee-list, 177 .new-task-win fieldset.input-field-rounded, 178 .new-task-win fieldset.search-field, 179 .new-task-win fieldset.block-add-attendee-permissions, 180 .new-task-win fieldset.block-attendee-list{ 163 181 border:1px solid #CFCFCF; 164 182 } 165 183 166 .new-event-win fieldset.block-attendee-list { width: 300px; max-height:180px; padding: 5px; float: left;}167 .new-event-win fieldset.block-attendee-list ul { height:160px; overflow: auto;}184 .new-event-win fieldset.block-attendee-list, .new-task-win fieldset.block-attendee-list { width: 300px; max-height:180px; padding: 5px; float: left;} 185 .new-event-win fieldset.block-attendee-list ul, .new-task-win fieldset.block-attendee-list ul { height:160px; overflow: auto;} 168 186 169 187 … … 475 493 } 476 494 495 .calendar-addevent-details-txt-timezone, .calendar-addtask-details-txt-timezone{width: 227px;} 496 477 497 .div-addtask #calendar_addtask_details1 .time-previsao { width: 40px; } 478 498 … … 483 503 .div-addtask #calendar_addtask_details1 .end-time{ width: 40px; } 484 504 .div-addtask #calendar_addtask_details1 .end-date{ width: 80px; } 485 .div-addtask #calendar_addtask_details1 .previsao-termino { margin: 0 0 0 5 0px; }505 .div-addtask #calendar_addtask_details1 .previsao-termino { margin: 0 0 0 5px; } 486 506 .div-addtask #calendar_addtask_details1 .subitem { margin: 5px; display: block;} 487 507 .div-addtask #calendar_addtask_details1 .subitem .span_done{ margin: 0 30px;} -
sandbox/2.4.2-expresso1/prototype/modules/calendar/interceptors/DBMapping.php
r6832 r6876 16 16 $params['summary'] = 'Evento sem título'; 17 17 18 if (!is_numeric($params['startTime'])) 19 $params['startTime'] = self::parseTimeDate($params['startTime'], $params['timezone']); 20 21 if (!is_numeric($params['endTime'])) { 22 $params['endTime'] = self::parseTimeDate($params['endTime'], $params['timezone']); 23 24 if ($params['allDay']) 25 $params['endTime'] = $params['endTime'] + 86400000; 26 } 27 28 $params['rangeEnd'] = $params['endTime']; 29 $params['rangeStart'] = $params['startTime']; 30 31 /////////////////////////////////////////////////////////////////// 32 33 $params['dtstamp'] = (isset($params['dtstamp'])) ? $params['dtstamp'] : time() . '000'; 34 $params['lastUpdate'] = (isset($params['lastUpdate'])) ? $params['lastUpdate'] : time() . '000'; 35 $params['uid'] = isset($params['uid']) ? $params['uid'] : self::_makeUid(); 36 } 18 if (!is_numeric($params['startTime'])) 19 $params['startTime'] = self::parseTimeDate($params['startTime'], $params['timezone']); 20 21 if (!is_numeric($params['endTime'])) { 22 $params['endTime'] = self::parseTimeDate($params['endTime'], $params['timezone']); 23 24 if ($params['allDay']) 25 $params['endTime'] = $params['endTime'] + 86400000; 26 } 27 28 if (isset($params['due']) && $params['due'] != '' && !is_numeric($params['due'])) 29 $params['due'] = self::parseTimeDate($params['due'], $params['timezone']); 30 31 32 $params['rangeEnd'] = $params['endTime']; 33 $params['rangeStart'] = $params['startTime']; 34 35 /////////////////////////////////////////////////////////////////// 36 37 $params['dtstamp'] = (isset($params['dtstamp'])) ? $params['dtstamp'] : time() . '000'; 38 $params['lastUpdate'] = (isset($params['lastUpdate'])) ? $params['lastUpdate'] : time() . '000'; 39 $params['uid'] = isset($params['uid']) ? $params['uid'] : self::_makeUid(); 40 } 37 41 38 42 static function parseTimeDate($time, $timezone) { … … 136 140 .'calendar_object.dtstart as "startTime", calendar_object.summary as "summary", ' 137 141 .'calendar_object.description as "description", calendar_object.dtend as "endTime" , ' 142 .'calendar_object.priority as "priority", calendar_object.due as "due", ' 143 .'calendar_object.percentage as "percentage", calendar_object.status as "status", ' 138 144 .'calendar_object.location as "location", calendar_object.allday as "allDay", ' 139 145 .'calendar_object.transp as "transparent", calendar_object.class_id as "class", ' … … 422 428 public function encodeUpdateSchedulable(&$uri, &$params, &$criteria, $original) { 423 429 424 $event = Controller::read(array('concept' => 'schedulable', 'id' => $params['id'])); 425 426 if (isset($params['startTime'])) { 427 428 if (!is_numeric($params['startTime'])) 429 $params['startTime'] = self::parseTimeDate($params['startTime'], $event['timezone']); 430 431 $params['rangeStart'] = $params['startTime']; 432 }if (isset($params['endTime'])) { 433 434 if (!is_numeric($params['endTime'])) { 435 $params['endTime'] = self::parseTimeDate($params['endTime'], $event['timezone']); 436 437 if ((isset($params['allDay']) && $params['allDay']) || ( !isset($params['allDay']) && $event['allDay'])) 438 $params['endTime'] = $params['endTime'] + 86400000; 439 } 440 $params['rangeEnd'] = $params['endTime']; 441 } 430 $event = Controller::read(array('concept' => 'schedulable', 'id' => $params['id'])); 431 432 if (isset($params['startTime'])) { 433 434 if (!is_numeric($params['startTime'])) 435 $params['startTime'] = self::parseTimeDate($params['startTime'], $event['timezone']); 436 437 $params['rangeStart'] = $params['startTime']; 438 } 439 440 if (isset($params['endTime'])) { 441 442 if (!is_numeric($params['endTime'])) { 443 $params['endTime'] = self::parseTimeDate($params['endTime'], $event['timezone']); 444 445 if ((isset($params['allDay']) && $params['allDay']) || ( !isset($params['allDay']) && $event['allDay'])) 446 $params['endTime'] = $params['endTime'] + 86400000; 447 } 448 $params['rangeEnd'] = $params['endTime']; 449 } 450 451 452 if (isset($params['due']) && $params['due'] != '' && !is_numeric($params['due'])) 453 $params['due'] = self::parseTimeDate($params['due'], $event['timezone']); 442 454 } 443 455 -
sandbox/2.4.2-expresso1/prototype/modules/calendar/js/calendar.codecs.js
r6797 r6876 596 596 }); 597 597 598 DataLayer.codec( "schedulable", "task", { 599 600 decoder: function( evtObj ){ 601 Encoder.EncodeType = "entity"; 602 603 if( notArray = $.type(evtObj) !== "array" ) 604 evtObj = [ evtObj ]; 605 606 var pref = User.preferences; 607 608 var res = $.map(evtObj, function( form ){ 609 610 var tzId = form.timezone || Calendar.signatureOf[form.group].calendar.timezone || User.preferences.timezone, 611 612 formatString = pref.dateFormat + " " + pref.hourFormat; 613 614 return DataLayer.merge({ 615 "class": form["class"], 616 startTime: Date.parseExact(form.startDate + " "+$.trim(form.startHour) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 617 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) , 618 due: (form.dueDate == '' )? 0 : Date.parseExact(form.dueDate + " "+$.trim(form.dueTime) , formatString ).toString(!!form.allDay ? 'yyyy-MM-dd 00:00:00' : 'yyyy-MM-dd HH:mm:00'), 619 allDay: ( !!form.allDay ? 1 : 0 ), 620 status: form.taskStatus, 621 id: form.idTask, 622 location: form.location, 623 type: 2, 624 percentage: form.percentage, 625 priority: form.priority, 626 category: form.category, 627 summary: form.summary, 628 description: form.description, 629 timezone: tzId, 630 attachments: $.map(form.attachment || [], function( attachment, i ){ 631 return { 632 attachment: attachment 633 } 634 }), 635 participants: $.map( form.attendee || [], function( attendee, i ){ 636 637 if( !attendee || attendee === "" ) 638 return( null ); 639 640 var participant = {}; 641 participant.user = (attendee!= User.me.id) ? DataLayer.get('participant', attendee).user : attendee ; 642 643 if( participant.user === User.me.id ){ 644 return DataLayer.merge({ 645 id: attendee, 646 isOrganizer: (form.attendee_organizer == attendee ? 1 : 0 ), 647 alarms: participant.alarms = $.map( form.alarmTime || [], function( alarmTime, i ){ 648 if( alarmTime === "" ) 649 return( null ); 650 return !!form.alarmId[i] ? { 651 type: form.alarmType[i], 652 unit: form.alarmUnit[i], 653 time: form.alarmTime[i], 654 id: form.alarmId[i] 655 }: 656 657 { 658 type: form.alarmType[i], 659 unit: form.alarmUnit[i], 660 time: form.alarmTime[i] 661 }; 662 }), 663 status: !!form.status ? form.status : 3 664 }, (form.delegatedFrom[i] != '0' && form.delegatedFrom[i] != '') ? { 665 delegatedFrom: form.delegatedFrom[i] 666 } : {}); 667 }else{ 668 return { 669 id: attendee, 670 isOrganizer: (form.attendee_organizer == attendee ? 1 : 0 ), 671 isExternal: !!parseInt(form.attendeeType[i]) ? 1 : 0, 672 }; 673 }; 674 }) 675 }, form.lastGroup ? (( form.lastGroup == form.group ) ? {} : {calendar: form.group, lastGroup: form.lastGroup}) : {calendar: form.group}); 676 }); 677 678 return notArray ? res[0] : res; 679 }, 680 681 encoder: function( evtObj ){ 682 683 var notArray = false; 684 685 if( notArray = $.type(evtObj) !== "array" ) 686 evtObj = [ evtObj ]; 687 688 var statusParticipants = {}, isAttendee = false, 689 690 statusLabels = [ '', 'accepted', 'tentative', 'cancelled', 'unanswered', 'delegated' ], 691 692 participantInfo = {}, delegatedFrom = {}, me = DataLayer.copy( User.me ); 693 694 var delegateAttendee = {}; 695 696 for( var i = 0; i < statusLabels.length; i++ ) 697 statusParticipants[ statusLabels[i] ] = 0; 698 699 var res = $.map(evtObj, function( objEvent ){ 700 701 if(!(typeof(objEvent) == 'object')) 702 return (null); 703 704 var limitAttendee = false; 705 706 return { 707 "class": objEvent["class"], 708 id: objEvent.id, 709 location: objEvent.location, 710 category: objEvent.category, 711 taskStatus: objEvent.status, 712 groups: Calendar.groups, 713 group: objEvent.group, 714 summary: objEvent.summary, 715 description: objEvent.description, 716 timezone: objEvent.timezone, 717 timezones: Timezone.timezones, 718 percentage: (objEvent.percentage) ? objEvent.percentage : '0', 719 priority: objEvent.priority, 720 startDate: new Date( parseInt(objEvent.startTime) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 721 startHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date( parseInt(objEvent.startTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'startTime'), User.preferences.hourFormat), 722 endDate: new Date( parseInt(objEvent.endTime) - (!!parseInt(objEvent.allDay) ? 86400000 : 0) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 723 endHour: dateCalendar.formatDate(Timezone.getDateEvent(new Date(parseInt(objEvent.endTime)), objEvent.timezone, objEvent.calendar, objEvent.DayLigth, 'endTime'), User.preferences.hourFormat), 724 dueDate: (!objEvent.due || objEvent.due == '' || objEvent.due == '0') ? '' : new Date( parseInt(objEvent.due) ).setTimezoneOffset( Timezone.timezone( objEvent.timezone ) ).toString( User.preferences.dateFormat ), 725 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), 726 allDay: !!parseInt( objEvent.allDay ), 727 historic: [], 728 attachments: $.map(objEvent.attachments || [], function( attachment, i ){ 729 var attach = DataLayer.get('schedulableToAttachment', attachment, false); 730 //TODO - Verificar na API retorno de id sobre os conceitos em que s?o utilizados tabelas de liga??o 731 if(!attach.name) return(null); 732 733 var ext = attach.name.split('.'); 734 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])); 735 attach.size = formatBytes(attach.size); 736 return attach; 737 }), 738 attendee: $.map(objEvent.participants || [], function( participant, i ){ 739 740 if(delegateAttendee[participant]) 741 return(null); 742 743 var attend = DataLayer.get('participant', (participant.id || participant)); 744 attend.user = DataLayer.get('user', attend.user); 745 746 statusParticipants[ statusLabels[attend.status] ]++; 747 748 if(attend.user.mail == User.me.mail) 749 isAttendee = true; 750 751 if( attend.user.id === me.id ){ 752 participantInfo.user = { 753 id: attend.id, 754 status : attend.status, 755 delegatedFrom: attend.delegatedFrom || '0', 756 acl: attend.acl, 757 receiveNotification : attend.receiveNotification, 758 alarms : $.map(attend.alarms || [], function( alarm ){ 759 var alarm = DataLayer.get('alarm', alarm); 760 return (alarm == "" ? (null) : alarm); 761 }) 762 }; 763 me = attend; 764 return(null); 765 }; 766 767 var person = { 768 id: attend.id, 769 name: attend.user.name != 'false' ? attend.user.name : '', 770 mail: attend.user.mail, 771 status : attend.status, 772 isExternal: attend.isExternal, 773 acl: attend.acl, 774 delegatedFrom: attend.delegatedFrom 775 }; 776 777 if(!!parseInt(attend.delegatedFrom)){ 778 delegatedFrom[attend.delegatedFrom] = DataLayer.copy(person); 779 return(null); 780 } 781 782 if( !!parseInt(attend.isOrganizer)){ 783 participantInfo.organizer = DataLayer.copy(person); 784 return(null); 785 }; 786 787 return (person); 788 }), 789 organizer: participantInfo.organizer || me, 790 alarms: !!participantInfo.user ? participantInfo.user.alarms : [], 791 status: !!participantInfo.user ? participantInfo.user.status : 1, 792 isAttendee: isAttendee, 793 me: me, 794 delegatedFrom: delegatedFrom, 795 statusParticipants: (objEvent.sizeAttendees != "") ? objEvent.statusAttendees : statusParticipants, 796 sizeAttendeeLimit: (objEvent.sizeAttendees != "") ? objEvent.sizeAttendees : false 797 }; 798 }); 799 console.log(res[0]); 800 return (notArray ? res[0] : res); 801 } 802 }); 598 803 599 804 function decodeOwnerCalendar(calendar){ … … 1055 1260 ] 1056 1261 ], 1057 ['IN', 'calendar', Calendar.calendarIds]1262 ['IN', 'calendar', $.merge( Calendar.calendarIds, Calendar.groupIds )] 1058 1263 ], 1059 1264 criteria: { -
sandbox/2.4.2-expresso1/prototype/modules/calendar/js/helpers.js
r6857 r6876 942 942 callbackAttendee(); 943 943 /** 944 945 944 Opções de delegação do participante/organizer 945 */ 946 946 blkAddAtendee.find(".button.participant-delegate").button({ 947 947 icons: { … … 971 971 972 972 UI.dialogs.addEvent.find(".attendee-list-add .add-attendee-input input").Watermark("digite um email para convidar"); 973 /* Trata a edição de um novo participante adicionado974 * 975 973 /* 974 * Trata a edição de um novo participante adicionado 975 */ 976 976 var hasNewAttendee = false; 977 977 … … 1197 1197 } else if (!skipAddNewLine) { 1198 1198 /** 1199 1200 1201 1199 * a) salva como novo usuario externo no banco (apenas com email) e... 1200 * adiciona novo contato externo à lista de convidados 1201 */ 1202 1202 1203 1203 userId = DataLayer.put('user', { … … 1560 1560 } 1561 1561 1562 disponibily(objEvent, path, attendees );1562 disponibily(objEvent, path, attendees, 'event'); 1563 1563 1564 1564 /*Seleciona a agenda padrão para criação de um evento*/ … … 1576 1576 1577 1577 UI.dialogs.addEvent.dialog('open'); 1578 //$('[href="#calendar_addevent_details7"]').trigger('click'); 1579 //$('[href="#calendar_addevent_details2"]').trigger('click'); 1578 1580 1579 } 1581 1580 -
sandbox/2.4.2-expresso1/prototype/modules/calendar/js/init.js
r6857 r6876 247 247 248 248 $('.qtip-active .button.advanced').button().click(function(){ 249 250 $(componente).qtip('destroy'); 251 249 252 250 var startEvent = new Date(); 253 251 var configData = (startEvent.toString('mm') < 30) ? {minutes: (30 - parseInt(startEvent.toString('mm')))} : {hours: 1, minutes: '-'+startEvent.toString('mm')}; … … 255 253 256 254 var componente = $(this); 257 258 taskDetails({ 255 var description = $('div.qtip div.add-simple-task textarea[name="description"]').val(); 256 257 taskDetails({ 258 summary: $('div.qtip div.add-simple-task input[name="summary"]').val(), 259 description: description == 'Descrição' ? '' : description, 259 260 startTime: startEvent.getTime(), 260 261 endTime: dateCalendar.decodeRange(startEvent, (!!User.preferences.defaultCalendar ? ( !!Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration ? 261 262 (Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration) : (User.preferences.defaultDuration)) : (User.preferences.defaultDuration))) 262 263 }, true ); 263 264 265 $(componente).qtip('destroy'); 264 266 }); 265 267 … … 450 452 }else{ 451 453 var schedulable = DataLayer.get( "schedulable", evt.id); 452 schedulable. calendar= evt.calendar;454 schedulable.group = evt.calendar; 453 455 eventDetails( schedulable, true); 454 456 } 455 457 } 456 }else 457 alert('Editar Tarefa'); 458 }else{ 459 var task = DataLayer.get( "schedulable", evt.id); 460 task.group = evt.calendar; 461 taskDetails( task, true); 462 } 458 463 }, 459 464 -
sandbox/2.4.2-expresso1/prototype/modules/calendar/js/load.js
r6768 r6876 54 54 } 55 55 56 this.calendarIds = [], this. signatureOf = {}, this.calendars = [], this.calendarOf= {};56 this.calendarIds = [], this.groupIds = [], this.signatureOf = {}, this.calendars = [], this.groups = [], this.calendarOf = {}, this.groupOf= {}; 57 57 58 58 for( var i = 0; i < this.signatures.length; i++ ){ 59 59 if(this.signatures[i].isOwner == "0") 60 60 this.signatures[i].permission = DataLayer.encode('calendarToPermission:detail', this.signatures[i].permission); 61 this.signatureOf[ this.calendarIds[i] = ( this.calendars[ this.calendars.length ] = this.calendarOf[ this.signatures[i].id ] = this.signatures[i].calendar ).id ] = this.signatures[i]; 61 62 if(this.signatures[i].calendar.type == '1') 63 this.signatureOf[ this.groupIds[this.groupIds.length] = ( this.groups[ this.groups.length ] = this.groupOf[ this.signatures[i].id ] = this.signatures[i].calendar ).id ] = this.signatures[i]; 64 else 65 this.signatureOf[ this.calendarIds[ this.calendarIds.length] = ( this.calendars[ this.calendars.length ] = this.calendarOf[ this.signatures[i].id ] = this.signatures[i].calendar ).id ] = this.signatures[i]; 62 66 } 63 67 -
sandbox/2.4.2-expresso1/prototype/modules/calendar/js/map.disponibility.js
r6444 r6876 8 8 9 9 10 function updateMap( data){11 var start_date = $(".new- event-win.active .start-date").val();12 var end_date = $(".new- event-win.active .end-date").val();13 var start_time = $(".new- event-win.active .start-time").val();14 var end_time = $(".new- event-win.active .end-time").val();15 var isAllDay = $('.new- event-win.active input[name="allDay"]').is(':checked');10 function updateMap(viewName){ 11 var start_date = $(".new-"+viewName+"-win.active .start-date").val(); 12 var end_date = $(".new-"+viewName+"-win.active .end-date").val(); 13 var start_time = $(".new-"+viewName+"-win.active .start-time").val(); 14 var end_time = $(".new-"+viewName+"-win.active .end-time").val(); 15 var isAllDay = $('.new-'+viewName+'-win.active input[name="allDay"]').is(':checked'); 16 16 17 17 var formatString = User.preferences.dateFormat + " " + User.preferences.hourFormat; … … 21 21 22 22 23 var event = $( "#new_event_map").fullCalendar('clientEvents', 'map')[0];23 var event = $('.new-'+viewName+'-win .map_disponibility').fullCalendar('clientEvents', 'map')[0]; 24 24 25 25 … … 28 28 event.end = endDate; 29 29 event.allDay = isAllDay; 30 $( "#new_event_map").fullCalendar( 'updateEvent', event )30 $('.new-'+viewName+'-win .map_disponibility').fullCalendar( 'updateEvent', event ) 31 31 } 32 32 … … 35 35 36 36 37 function disponibily(objEvent, path, attendees ){37 function disponibily(objEvent, path, attendees, viewName){ 38 38 var formatString = User.preferences.dateFormat + " " + User.preferences.hourFormat; 39 39 var startDate = Date.parseExact( objEvent.startDate + " " + $.trim(objEvent.startHour) , formatString ); 40 40 var endDate = Date.parseExact( objEvent.endDate + " " + $.trim(objEvent.endHour) , formatString ); 41 42 var dialogName = {event: 'addEvent', task: 'addTask', activity: 'addActivity'} 41 43 42 44 var mapHtml = DataLayer.render( path+'templates/availability_map.ejs', {}); 43 $( "#calendar_addevent_details7").html(mapHtml);44 $( "#new_event_map").fullCalendar(DataLayer.merge({45 $('#calendar_add'+viewName+'_details7').html(mapHtml); 46 $('.new-'+viewName+'-win .map_disponibility').fullCalendar(DataLayer.merge({ 45 47 height : 300, 46 48 timeFormat: User.preferences.hourFormat, … … 77 79 if(!allDay){ 78 80 $('[name="allDay"]').attr("checked", false); 79 UI.dialogs .addEvent.find('.start-time, .end-time').removeClass('hidden');81 UI.dialogs[dialogName[viewName]].find('.start-time, .end-time').removeClass('hidden'); 80 82 81 83 $('[name="startHour"]').val(start.toString(User.preferences.hourFormat)); … … 85 87 }else{ 86 88 $('[name="allDay"]').attr("checked", true); 87 UI.dialogs .addEvent.find('.start-time, .end-time').addClass('hidden');89 UI.dialogs[dialogName[viewName]].find('.start-time, .end-time').addClass('hidden'); 88 90 } 89 91 }, … … 98 100 className : "map-event", 99 101 backgroundColor : "transparent !important", 100 editable : objEvent.acl .write || objEvent.acl.organization102 editable : objEvent.acl ? (objEvent.acl.write || objEvent.acl.organization) : true 101 103 } 102 104 ], … … 104 106 if(event.allDay){ 105 107 $('[name="allDay"]').attr("checked", true); 106 UI.dialogs .addEvent.find('.start-time, .end-time').addClass('hidden');108 UI.dialogs[dialogName[viewName]].find('.start-time, .end-time').addClass('hidden'); 107 109 108 110 $('[name="startDate"]').val(dateCalendar.toString(event.start, User.preferences.dateFormat)); … … 111 113 }else{ 112 114 $('[name="allDay"]').attr("checked", false); 113 UI.dialogs .addEvent.find('.start-time, .end-time').removeClass('hidden');115 UI.dialogs[dialogName[viewName]].find('.start-time, .end-time').removeClass('hidden'); 114 116 115 117 $('[name="startHour"]').val(dateCalendar.formatDate(event.start, User.preferences.hourFormat)); … … 132 134 var eventSource = new Array(); 133 135 var updateMapView = function(){ 134 updateMap( );135 var view = $( "#new_event_map").fullCalendar('getView');136 updateMap(viewName); 137 var view = $('.new-'+viewName+'-win .map_disponibility').fullCalendar('getView'); 136 138 var map = {}; 137 $( "#new_event_map").fullCalendar( 'removeEventSource', eventSource );139 $('.new-'+viewName+'-win .map_disponibility').fullCalendar( 'removeEventSource', eventSource ); 138 140 eventSource = new Array(); 139 141 map = {startTime : view.start.getTime(), endTime : view.end.getTime(), attendees: {}, timezone: (objEvent.timezone || User.preferences.timezone)}; … … 167 169 } 168 170 if(eventSource.length) 169 $( "#new_event_map").fullCalendar( 'addEventSource', eventSource );171 $('.new-'+viewName+'-win .map_disponibility').fullCalendar( 'addEventSource', eventSource ); 170 172 }; 171 $('[href="#calendar_addevent_details7"]').click(function(eventData, eventObject){ 172 $("#new_event_map").fullCalendar( 'gotoDate', Date.parseExact($('[name="startDate"]').val() + " " + $.trim($('[name="startHour"]').val()), formatString) , formatString); 173 //if(eventObject == undefined) 174 updateMapView(); 173 $('[href="#calendar_add'+viewName+'_details7"]').click(function(eventData, eventObject){ 174 $('.new-'+viewName+'-win .map_disponibility').fullCalendar( 'gotoDate', Date.parseExact($('[name="startDate"]').val() + " " + $.trim($('[name="startHour"]').val()), formatString) , formatString); 175 updateMapView(); 175 176 }); 176 $( "#new_event_map").find(".fc-button-prev, .fc-button-next, .fc-button-today").click(function(){177 $('.new-'+viewName+'-win .map_disponibility').find(".fc-button-prev, .fc-button-next, .fc-button-today").click(function(){ 177 178 updateMapView(); 178 179 }); -
sandbox/2.4.2-expresso1/prototype/modules/calendar/js/task.helpers.js
r6815 r6876 1 function taskDetails( objEvent, decoded, path, isMail, repeat){ 1 function taskDetails(objTask, decoded, path, isMail, repeat) { 2 3 $('.qtip.qtip-blue').remove(); 2 4 3 5 attendees = {}; 4 5 if(path == undefined) 6 path = ""; 7 8 if( !decoded ) 9 objEvent = DataLayer.decode( "schedulable:calendar", objEvent ); 10 11 if(!isMail) 12 objEvent = DataLayer.encode( "schedulable:preview", objEvent ); 13 14 if(typeof(objEvent.id) == 'undefined'){ 15 objEvent.alarms = Calendar.signatureOf[User.preferences.defaultCalendar || Calendar.calendarIds[0]].defaultAlarms || false; 16 objEvent.useAlarmDefault = 1; 6 7 if (path == undefined) path = ""; 8 9 if (!decoded) objTask = DataLayer.decode("task:calendar", objTask); 10 11 if (!isMail) objTask = DataLayer.encode("schedulable:task", objTask); 12 13 if (typeof (objTask.id) == 'undefined') { 14 objTask.alarms = Calendar.signatureOf[User.preferences.defaultCalendar || Calendar.calendarIds[0]].defaultAlarms || false; 15 objTask.useAlarmDefault = 1; 17 16 } 18 17 18 19 if(objTask.me.id == User.me.id){ 20 objTask.me.id = DataLayer.put('participant', { 21 user: objTask.me.id, 22 mail: objTask.me.mail 23 }); 24 objTask.organizer.id = objTask.me.id; 25 } 26 27 var dependsDelegate = function(reference, inverse){ 28 if(inverse){ 29 if(reference.find('input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val()) 30 blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val()); 31 }else{ 32 if(blkAddAtendee.find('.me input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val()) 33 blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(reference.find('input[name="attendee[]"]').val()); 34 } 35 }; 36 37 var removeOthers = function(){ 38 var other = blkAddAtendee.find('.delegate.attendee-permissions-change-button'); 39 if(other.lenght) 40 dependsDelegate(other.parents('li'), true); 41 42 blkAddAtendee.find('.delegate').removeClass('attendee-permissions-change-button'); 43 blkAddAtendee.find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change'); 44 45 }; 46 47 var callbackAttendee = function(){ 48 var checked = false; 49 blkAddAtendee.find("li.not-attendee").addClass('hidden'); 50 51 blkAddAtendee.find("li .button").filter(".close.new").button({ 52 icons: { 53 primary: "ui-icon-close" 54 }, 55 text: false 56 }).click(function () { 57 DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val()); 58 if($(this).parent().find('.button.delegate').hasClass('attendee-permissions-change-button')){ 59 removeOthers(); 60 blkAddAtendee.find('.request-update').addClass('hidden'); 61 blkAddAtendee.find('.status option').toggleClass('hidden'); 62 63 blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change'); 64 } 65 66 $(this).parents('li').remove(); 67 68 if(blkAddAtendee.find(".attendee-list li").length == 1) 69 blkAddAtendee.find("li.not-attendee").removeClass('hidden'); 70 }) 71 .addClass('tiny disable ui-button-disabled ui-state-disabled') 72 .removeClass('new').end() 73 74 .filter(".delegate.new").button({ 75 icons: { 76 primary: "ui-icon-transferthick-e-w" 77 }, 78 text: false 79 }).click(function () { 80 var me = $(this).parents('li'); 81 if($(this).hasClass('attendee-permissions-change-button')){ 82 $(this).removeClass('attendee-permissions-change-button') 83 .find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change').end(); 84 85 me.find('input[name="delegatedFrom[]"]').val(''); 86 dependsDelegate(me, true); 87 88 blkAddAtendee.find('.request-update').addClass('hidden'); 89 blkAddAtendee.find('.status option').toggleClass('hidden'); 90 91 blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change'); 92 93 }else{ 94 removeOthers(); 95 96 $(this).addClass('attendee-permissions-change-button') 97 .find('.ui-icon-transferthick-e-w').addClass('attendee-permissions-change').end(); 98 99 me.find('input[name="delegatedFrom[]"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val()); 100 101 dependsDelegate(me, false); 102 103 blkAddAtendee.find('.request-update').removeClass('hidden'); 104 if(blkAddAtendee.find('.status option.hidden').length == 1) 105 blkAddAtendee.find('.status option').toggleClass('hidden'); 106 107 blkAddAtendee.find('option[value=5]').attr('selected','selected').trigger('change'); 108 } 109 }) 110 .addClass('tiny disable ui-button-disabled ui-state-disabled') 111 .removeClass('new').end() 112 113 .filter(".open-delegate.new").click(function(){ 114 if($(this).hasClass('ui-icon-triangle-1-e')){ 115 $(this).removeClass('ui-icon-triangle-1-e').addClass('ui-icon-triangle-1-s'); 116 $(this).parents('li').find('.list-delegates').removeClass('hidden'); 117 }else{ 118 $(this).removeClass('ui-icon-triangle-1-s').addClass('ui-icon-triangle-1-e'); 119 $(this).parents('li').find('.list-delegates').addClass('hidden'); 120 } 121 122 }).removeClass('new'); 123 124 UI.dialogs.addTask.find('.attendees-list li').hover( 125 function () { 126 $(this).addClass("hover-attendee"); 127 $(this).find('.button').removeClass('disable ui-button-disabled ui-state-disabled').end() 128 .find('.attendee-options').addClass('hover-attendee'); 129 }, 130 function () { 131 $(this).removeClass("hover-attendee"); 132 $(this).find('.button').addClass('disable ui-button-disabled ui-state-disabled').end() 133 .find('.attendee-options').removeClass('hover-attendee'); 134 } 135 ); 136 } 137 19 138 /** 20 * canDiscardEventDialog deve ser true se não houver alterações no evento 21 22 canDiscard EventDialog = true;139 * canDiscardTaskDialog deve ser true se não houver alterações no task 140 */ 141 canDiscardTaskDialog = true; 23 142 /** 24 * zebraDiscardEventDialog é uma flag indicando que uma janela de confirmação (Zebra_Dialog) 25 * já está aberta na tela, uma vez que não é possivel acessar o evento ESC utilizado para fechá-la 26 */ 27 zebraDiscardEventDialog = false; 28 29 /** 30 ACLs do participant 31 */ 32 acl_names = { 33 'w': 'acl-white', 34 'i': 'acl-invite-guests', 35 'p': 'acl-participation-required' 36 }; 37 38 var dependsDelegate = function(reference, inverse){ 39 if(inverse){ 40 if(reference.find('input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val()) 41 blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(blkAddAtendee.find('.me input[name="attendee[]"]').val()); 42 }else{ 43 if(blkAddAtendee.find('.me input[name="attendee[]"]').val() == blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val()) 44 blkAddAtendee.find('li.organizer input[name="attendee_organizer"]').val(reference.find('input[name="attendee[]"]').val()); 45 } 46 47 }; 48 49 var removeOthers = function(){ 50 var other = blkAddAtendee.find('.delegate.attendee-permissions-change-button'); 51 if(other.lenght){ 52 dependsDelegate(other.parents('li'), true); 53 } 54 blkAddAtendee.find('.delegate').removeClass('attendee-permissions-change-button'); 55 blkAddAtendee.find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change'); 56 57 }; 58 59 var html = DataLayer.render( path+'templates/task_add.ejs', { 60 event:objEvent 61 }); 62 63 if (!UI.dialogs.addTask) { 64 65 UI.dialogs.addTask = jQuery('#sandbox').append('<div title="Criar tarefa" class="new-event-win active"> <div>').find('.new-event-win.active').html(html).dialog({ 66 resizable: false, 67 modal:true, 68 autoOpen: false, 69 width:774, 70 position: 'center', 71 close: function(event, ui) { 72 /** 73 * Remove tooltip possivelmente existente 74 */ 75 if ($('.qtip.qtip-blue.qtip-active').length) 76 $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 77 attendees = {}; 78 }, 79 beforeClose: function(event, ui) { 80 81 if (!canDiscardEventDialog && !zebraDiscardEventDialog) { 82 zebraDiscardEventDialog = true; 83 window.setTimeout(function() { 84 $.Zebra_Dialog('Suas alterações no evento não foram salvas. Deseja descartar as alterações?', { 85 'type': 'question', 86 'overlay_opacity': '0.5', 87 'buttons': ['Descartar alterações', 'Continuar editando'], 88 'onClose': function(clicked) { 89 if(clicked == 'Descartar alterações') { 90 canDiscardEventDialog = true; 91 /** 92 *Remoção dos anexos do eventos caso seja cancelado a edição 93 */ 94 DataLayer.rollback(); 95 96 var ids = false; 97 $.each($('.attachment-list input'), function (i, input) { 98 DataLayer.put('attachment', {id: ''+input.value}); 99 DataLayer.remove('attachment', ''+input.value); 100 ids = true; 101 }); 102 if(ids) 103 DataLayer.commit(); 104 105 106 107 UI.dialogs.addTask.dialog('close'); 108 }else{ 109 zebraDiscardEventDialog = false; 110 } 111 112 /** 113 * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la 114 * com ESC, para que o evento ESC não seja propagado para fechamento da 115 * janela de edição de eventos, deve ser setada uma flag indicando que 116 * já existe uma janela de confirmação aberta. 117 */ 118 if (!clicked) { 119 window.setTimeout(function() { 120 zebraDiscardEventDialog = false; 121 }, 200); 122 } 123 } 124 }); 125 126 }, 300); 127 128 } 129 //DataLayer.rollback(); 130 return canDiscardEventDialog; 131 }, 132 dragStart: function(event, ui) { 133 if ($('.qtip.qtip-blue.qtip-active').length) 134 $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 135 } 136 }); 137 138 } else { 139 UI.dialogs.addTask.html(html); 140 } 141 142 var tabs = UI.dialogs.addTask.children('.content').tabs({ 143 select: function(event, ui) { 144 if ($('.qtip.qtip-blue.qtip-active').length) 145 $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 146 } 147 }); 148 var calendar = DataLayer.get('calendar', objEvent.calendar); 149 150 if (calendar.timezone != objEvent.timezone){ 151 UI.dialogs.addTask.find('.calendar-addevent-details-txt-timezone').find('option[value="'+objEvent.timezone+'"]').attr('selected','selected').trigger('change'); 152 UI.dialogs.addTask.find('.calendar_addevent_details_lnk_timezone').addClass('hidden'); 153 $('.calendar-addevent-details-txt-timezone').removeClass('hidden'); 154 143 * zebraDiscardTaskDialog é uma flag indicando que uma janela de confirmação (Zebra_Dialog) 144 * já estão aberta na tela, uma vez que não é possivel acessar o task ESC utilizado para fechá-la 145 */ 146 zebraDiscardTaskDialog = false; 147 148 var html = DataLayer.render(path + 'templates/task_add.ejs', { 149 task: objTask 150 }); 151 152 if (!UI.dialogs.addTask) { 153 154 UI.dialogs.addTask = jQuery('#sandbox').append('<div title="Criar tarefa" class="new-task-win active"> <div>').find('.new-task-win.active').html(html).dialog({ 155 resizable: false, 156 modal: true, 157 autoOpen: false, 158 width: 774, 159 position: 'center', 160 close: function (event, ui) { 161 /** 162 * Remove tooltip possivelmente existente 163 */ 164 if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 165 attendees = {}; 166 }, 167 beforeClose: function (event, ui) { 168 169 if (!canDiscardTaskDialog && !zebraDiscardTaskDialog) { 170 zebraDiscardTaskDialog = true; 171 window.setTimeout(function () { 172 $.Zebra_Dialog('Suas alterações na tarefa não foram salvas. Deseja descartar as alterações?', { 173 'type': 'question', 174 'overlay_opacity': '0.5', 175 'buttons': ['Descartar alterações', 'Continuar editando'], 176 'onClose': function (clicked) { 177 if (clicked == 'Descartar alterações') { 178 canDiscardTaskDialog = true; 179 /** 180 *Remoção dos anexos da task caso seja cancelado a ediçãoo 181 */ 182 DataLayer.rollback(); 183 184 var ids = false; 185 $.each($('.attachment-list input'), function (i, input) { 186 DataLayer.put('attachment', { 187 id: '' + input.value 188 }); 189 DataLayer.remove('attachment', '' + input.value); 190 ids = true; 191 }); 192 if (ids) DataLayer.commit(); 193 194 UI.dialogs.addTask.dialog('close'); 195 } else { 196 zebraDiscardTaskDialog = false; 197 } 198 199 /** 200 * Uma vez aberta uma janela de confirmação (Zebra_Dialog), ao fechá-la 201 * com ESC, para que o task ESC nÃo seja propagado para fechamento da 202 * janela de edição de tasks, deve ser setada uma flag indicando que 203 * já existe uma janela de confirmação aberta. 204 */ 205 if (!clicked) { 206 window.setTimeout(function () { 207 zebraDiscardTaskDialog = false; 208 }, 200); 209 } 210 } 211 }); 212 213 }, 300); 214 215 } 216 //DataLayer.rollback(); 217 return canDiscardTaskDialog; 218 }, 219 dragStart: function (task, ui) { 220 if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 221 } 222 }); 223 224 } else { 225 UI.dialogs.addTask.html(html); 226 } 227 228 var tabs = UI.dialogs.addTask.children('.content').tabs({ 229 select: function (task, ui) { 230 if ($('.qtip.qtip-blue.qtip-active').length) $('.qtip.qtip-blue.qtip-active').qtip('destroy'); 231 } 232 }); 233 var group = DataLayer.get('calendar', objTask.group); 234 235 if (group.timezone != objTask.timezone) { 236 UI.dialogs.addTask.find('.calendar-addtask-details-txt-timezone').find('option[value="' + objTask.timezone + '"]').attr('selected', 'selected').trigger('change'); 237 UI.dialogs.addTask.find('.calendar_addtask_details_lnk_timezone').addClass('hidden'); 238 $('.calendar-addtask-details-txt-timezone').removeClass('hidden'); 239 240 } 241 242 UI.dialogs.addTask.find('.calendar_addtask_details_lnk_timezone').click(function (e) { 243 $(this).addClass('hidden'); 244 $('.calendar-addtask-details-txt-timezone').removeClass('hidden'); 245 e.prtaskDefault(); 246 }); 247 248 UI.dialogs.addTask.find('.button.remove').button({ 249 text:false, 250 icons:{ 251 primary:'ui-icon-close' 252 } 253 }).click(function(el){ 254 var id; 255 if( id = $(this).parent().find('input[name="alarmId[]"]').val()) 256 DataLayer.remove('alarm', id); 257 $(this).parent().remove().find('li').is(':empty'); 258 }); 259 260 /*Seleciona a agenda padrão para visualização edição de um task*/ 261 if (objTask.id) UI.dialogs.addTask.find('option[value="' + objTask.group + '"]').attr('selected', 'selected').trigger('change'); 262 263 /* Checkbox allday */ 264 UI.dialogs.addTask.find('input[name="allDay"]').click(function () { 265 $(this).attr("checked") ? UI.dialogs.addTask.find('.start-time, .end-time').addClass('hidden') : UI.dialogs.addTask.find('.start-time, .end-time').removeClass('hidden'); 266 updateMap(true); 267 }); 268 269 UI.dialogs.addTask.find('.button').button(); 270 UI.dialogs.addTask.find('.button.add').button({ 271 icons: { 272 secondary: "ui-icon-plus" 273 } 274 }); 275 276 // ==== validation tasks ==== 277 UI.dialogs.addTask.find(".input-group .h1").Watermark("Tarefa sem título"); 278 if (User.preferences.hourFormat.length == 5) { 279 UI.dialogs.addTask.find(".end-time, .start-time").mask("99:99", { 280 completed: function () { 281 updateMap(); 282 } 283 }); 284 } else { 285 $.mask.definitions['{'] = '[ap]'; 286 $.mask.definitions['}'] = '[m]'; 287 UI.dialogs.addTask.find(".end-time, .start-time").mask("99:99 {}", { 288 completed: function () { 289 $(this).val(date.Calendar.defaultToAmPm($(this).val())); 290 $(this).timepicker("refresh"); 291 $(this).val($(this).val().replace(/[\.]/gi, "")); 292 updateMap(); 293 } 294 }); 295 } 296 UI.dialogs.addTask.find(".number").numeric(); 297 User.preferences.dateFormat.indexOf('-') > 0 ? UI.dialogs.addTask.find(".date").mask("99-99-9999", { 298 completed: function () { 299 updateMap(); 300 } 301 }) : UI.dialogs.addTask.find(".date").mask("99/99/9999", { 302 completed: function () { 303 updateMap(); 304 } 305 }); 306 307 UI.dialogs.addTask.find(".menu-addtask").children(".delete").click(function () { 308 $.Zebra_Dialog('Tem certeza que deseja excluir esta tarefa?', { 309 'type': 'question', 310 'overlay_opacity': '0.5', 311 'buttons': ['Sim', 'Não'], 312 'onClose': function (clicked) { 313 if (clicked == 'Sim') { 314 canDiscardTaskDialog = true; /* Remove por filtro */ 315 DataLayer.removeFilter('schedulable', { 316 filter: ['AND', ['=', 'id', objTask.id], 317 ['=', 'calendar', objTask.group], 318 ['=', 'user', (objTask.me.user ? objTask.me.user.id : objTask.me.id)] 319 ] 320 }); 321 Calendar.rerenderView(true); /********************/ 322 UI.dialogs.addTask.dialog("close"); 323 } 324 } 325 }); 326 }).end() 327 328 .children(".cancel").click(function () { 329 UI.dialogs.addTask.dialog("close"); 330 }).end() 331 332 .children(".save").click(function () { /* Validação */ 333 /*if (msg = validDateTask()) { 334 $(".new-task-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg); 335 return false; 336 }*/ 337 338 UI.dialogs.addTask.children().find('form.form-addtask').submit(); 339 UI.dialogs.addTask.dialog("close"); 340 341 }).end() 342 343 .children(".export").click(function () { 344 UI.dialogs.addTask.children().find(".form-export").submit(); 345 }); 346 347 var attendeeHtml = DataLayer.render(path + 'templates/attendees_task.ejs', { 348 task: objTask 349 }); 350 351 // load template of attendees 352 var blkAddAtendee = UI.dialogs.addTask.find('#calendar_addtask_details6').append(attendeeHtml); 353 354 if(objTask.attendee.length) 355 callbackAttendee(); 356 357 /* 358 * Opções de delegação do participante/organizer 359 */ 360 blkAddAtendee.find(".button.participant-delegate").button({ 361 icons: { 362 primary: "ui-icon-transferthick-e-w" 363 }, 364 text: false 365 }).click(function () { 366 if($(this).hasClass('attendee-permissions-change-button')){ 367 if(!$(this).hasClass('disable')){ 368 $(this).removeClass('attendee-permissions-change-button') 369 .find('.ui-icon-transferthick-e-w').removeClass('attendee-permissions-change').end(); 370 blkAddAtendee.find('.block-add-attendee.search').addClass('hidden'); 371 blkAddAtendee.find('.block-add-attendee.search dt').html('Adicionar outros contatos'); 372 } 373 }else{ 374 $(this).addClass('attendee-permissions-change-button') 375 .find('.ui-icon-transferthick-e-w').addClass('attendee-permissions-change').end(); 376 blkAddAtendee.find('.block-add-attendee.search dt').html('Delegar participação para'); 377 blkAddAtendee.find('.block-add-attendee.search').removeClass('hidden'); 378 blkAddAtendee.find('.block-add-attendee.search input.search').focus(); 379 } 380 }) 381 .addClass('tiny'); 382 383 var dates = UI.dialogs.addTask.find('input.date').datepicker({ 384 dateFormat: User.preferences.dateFormat.replace(/M/g, 'm').replace(/yyyy/g, 'yy'), 385 onSelect: function (selectedDate) { 386 updateMap(); 387 } 388 }); 389 390 UI.dialogs.addTask.find('input.time').timepicker({ 391 closeText: 'Ok', 392 hourGrid: 4, 393 minuteGrid: 10, 394 ampm: ((User.preferences.hourFormat.length > 5) ? true : false), 395 timeFormat: "hh:mm tt", 396 onSelect: function (selectedDateTime) { 397 if (!(User.preferences.hourFormat.length == 5)) $(this).val(selectedDateTime.replace(/[\.]/gi, "")); 398 updateMap(); 399 }, 400 onClose: function (selectedDateTime) { 401 if (!(User.preferences.hourFormat.length == 5)) $(this).val(selectedDateTime.replace(/[\.]/gi, "")); 402 } 403 }); 404 405 blkAddAtendee.find('.add-attendee-search .ui-icon-search').click(function (task) { 406 blkAddAtendee.find('.add-attendee-search input').keydown(); 407 }); 408 409 blkAddAtendee.find('.add-attendee-search input').keydown(function (task) { 410 411 if (task.keyCode == '13' || typeof (task.keyCode) == 'undefined') { 412 var result = DataLayer.get('user', ["*", "name", $(this).val()], true); 413 414 /** 415 * TODO: trocar por template 416 */ 417 blkAddAtendee.find('ul.search-result-list').empty().css('overflow', 'hidden'); 418 if (!result) { 419 blkAddAtendee.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>'); 420 } 421 422 for (i = 0; i < result.length; i++) 423 result[i].enabled = (blkAddAtendee.find('dd.attendee-list ul.attendee-list label.mail[title="' + result[i].mail + '"]').length) ? false : true; 424 425 blkAddAtendee.find('ul.search-result-list').append(DataLayer.render(path + 'templates/participants_search_itemlist.ejs', result)); 426 427 blkAddAtendee.find('ul.search-result-list li').click(function (task, ui) { 428 if ($(task.target).is('input')) { 429 old_item = $(task.target).parents('li'); 430 newAttendeeId = DataLayer.put('participant', { 431 user: old_item.find('.id').html(), 432 isExternal: old_item.find('.isExternal').html() 433 }); 434 435 attendees[old_item.find('.id').html()] = old_item.find('.name').html(); 436 437 blkAddAtendee.find('dd.attendee-list ul.attendee-list').append(DataLayer.render(path + 'templates/participants_add_itemlist.ejs', [{ 438 id: newAttendeeId, 439 name: old_item.find('.name').html(), 440 mail: old_item.find('.mail').html(), 441 isExternal: old_item.find('.isExternal').html(), 442 notEvent: true, 443 isDirty: !! !objTask.id 444 }])).scrollTo('max'); 445 /** 446 * Delegação de participação de um participante com permissão apenas de leitura 447 * 448 */ 449 if (objTask.me.id != objTask.organizer.id) { 450 451 blkAddAtendee.find('.block-add-attendee.search').addClass('hidden'); 452 blkAddAtendee.find('.block-add-attendee.search dt').html('Adicionar outros contatos'); 453 454 blkAddAtendee.find('.status option').toggleClass('hidden'); 455 blkAddAtendee.find('option[value=5]').attr('selected', 'selected').trigger('change'); 456 blkAddAtendee.find('.request-update').removeClass('hidden'); 457 458 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()); 459 460 blkAddAtendee.find('.me .participant-delegate').addClass('disable ui-button-disabled ui-state-disabled'); 461 blkAddAtendee.find(".button.close").button({ 462 icons: { 463 primary: "ui-icon-close" 464 }, 465 text: false 466 }).click(function () { 467 468 $(this).parents('li').find('input[name="delegatedFrom[]"]').val(''); 469 blkAddAtendee.find('.request-update').addClass('hidden'); 470 blkAddAtendee.find('.status option').toggleClass('hidden'); 471 blkAddAtendee.find('option[value=1]').attr('selected', 'selected').trigger('change'); 472 blkAddAtendee.find('.me .participant-delegate').removeClass('disable ui-button-disabled ui-state-disabled attendee-permissions-change-button').find('.ui-icon-person').removeClass('attendee-permissions-change').end(); 473 474 DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val()); 475 $(this).parents('li').remove(); 476 }).addClass('tiny'); 477 } else { 478 callbackAttendee(); 479 old_item.remove(); 480 } 481 } 482 }); 483 484 event.preventDefault(); 485 } 486 }); 487 488 UI.dialogs.addTask.find('.row.fileupload-buttonbar-task .button').filter('.delete').button({ 489 icons: { 490 primary: "ui-icon-close" 491 }, 492 text: 'Excluir' 493 }).click(function () { 494 $.Zebra_Dialog('Tem certeza que deseja excluir todos anexos?', { 495 'type': 'question', 496 'overlay_opacity': '0.5', 497 'buttons': ['Sim', 'Não'], 498 'onClose': function (clicked) { 499 if (clicked == 'Sim') { 500 501 var ids = []; 502 $.each($('.attachment-list input'), function (i, input) { 503 DataLayer.remove('schedulableToAttachment', { 504 filter: ['=', 'id', '' + input.value] 505 }); 506 }); 507 $('.attachment-list input').remove(); 508 $('.row.fileupload-buttonbar .attachments-list p').remove(); 509 } 510 } 511 }); 512 }).end().filter('.close').button({ 513 icons: { 514 primary: "ui-icon-close" 515 }, 516 text: false 517 }).click(function () { 518 DataLayer.remove('schedulableToAttachment', $(this).parents('p').find('input[name="fileId[]"]').val()); 519 $(this).parents('p').remove(); 520 }).end().filter('.downlaod-archive').button({ 521 icons: { 522 primary: "ui-icon-arrowthickstop-1-s" 523 }, 524 text: false 525 }); 526 var maxSizeFile = 2000000; 527 $('#fileupload').fileupload({ 528 sequentialUploads: true, 529 add: function (e, data) { 530 if (data.files[0].size < maxSizeFile) data.submit(); 531 }, 532 change: function (e, data) { 533 $.each(data.files, function (index, file) { 534 var attach = {}; 535 attach.fileName = file.name; 536 var ext = file.name.split('.'); 537 if (file.name.length > 10) attach.fileName = ext.length == 1 ? file.name.substr(0, 10) : file.name.substr(0, 6) + '.' + ext[ext.length - 1]; 538 attach.fileSize = formatBytes(file.size); 539 if (file.size > maxSizeFile) attach.error = 'Tamanho de arquivo nao permitido!!' 540 541 $('.attachments-list').append(DataLayer.render(path + 'templates/attachment_add_itemlist.ejs', { 542 file: attach 543 })); 544 545 if (file.size < maxSizeFile) { 546 $('.fileinput-button.new').append(data.fileInput[0]).removeClass('new'); 547 $('.attachments-list').find('[type=file]').addClass('hidden'); 548 549 } else $('.fileinput-button.new').removeClass('new'); 550 551 552 $('.attachments-list').find('.button.close').button({ 553 icons: { 554 primary: "ui-icon-close" 555 }, 556 text: false 557 }).click(function () { 558 var idAttach = $(this).parent().find('input[name="fileId[]"]').val(); 559 $('.attachment-list').find('input[value="' + idAttach + '"]') 560 $(this).parent().remove(); 561 }); 562 563 }) 564 }, 565 done: function (e, data) { 566 var currentUpload = $('.progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide(); 567 568 if ( !! data.result && data.result != "[]") { 569 var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data); 570 $('.attachment-list').append('<input tyepe="hidden" name="attachment[]" value="' + newAttach['attachment'][0][0].id + '"/>'); 571 currentUpload.removeClass('on-complete').parents('p').append('<input type="hidden" name="fileId[]" value="' + newAttach['attachment'][0][0].id + '"/>').find('.status-upload').addClass('ui-icon ui-icon-check'); 572 } else currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel'); 573 } 574 }); 575 $('.attachments-list .button').button(); 576 577 if ( !! window.FormData) $('#fileupload').bind('fileuploadstart', function () { 578 var widget = $(this), 579 progressElement = $('#fileupload-progress').fadeIn(), 580 interval = 500, 581 total = 0, 582 loaded = 0, 583 loadedBefore = 0, 584 progressTimer, progressHandler = function (e, data) { 585 loaded = data.loaded; 586 total = data.total; 587 }, 588 stopHandler = function () { 589 widget.unbind('fileuploadprogressall', progressHandler).unbind('fileuploadstop', stopHandler); 590 window.clearInterval(progressTimer); 591 progressElement.fadeOut(function () { 592 progressElement.html(''); 593 }); 594 }, 595 formatTime = function (seconds) { 596 var date = new Date(seconds * 1000); 597 return ('0' + date.getUTCHours()).slice(-2) + ':' + ('0' + date.getUTCMinutes()).slice(-2) + ':' + ('0' + date.getUTCSeconds()).slice(-2); 598 }, 599 600 formatPercentage = function (floatValue) { 601 return (floatValue * 100).toFixed(2) + ' %'; 602 }, 603 updateProgressElement = function (loaded, total, bps) { 604 progressElement.html( 605 formatBytes(bps) + 'ps | ' + formatTime((total - loaded) / bps) + ' | ' + formatPercentage(loaded / total) + ' | ' + formatBytes(loaded) + ' / ' + formatBytes(total)); 606 }, 607 intervalHandler = function () { 608 var diff = loaded - loadedBefore; 609 if (!diff) { 610 return; 611 } 612 loadedBefore = loaded; 613 updateProgressElement( 614 loaded, total, diff * (1000 / interval)); 615 }; 616 widget.bind('fileuploadprogressall', progressHandler).bind('fileuploadstop', stopHandler); 617 progressTimer = window.setInterval(intervalHandler, interval); 618 }); 619 620 disponibily(objTask, path, attendees, 'task'); 621 622 UI.dialogs.addTask.find('.button-add-alarms').click(function () { 623 var li_attach = DataLayer.render(path + 'templates/alarms_add_itemlist.ejs', { 624 type: 1 625 }); 626 627 jQuery('.task-alarms-list').append(li_attach).find('.button.remove').button({ 628 text: false, 629 icons: { 630 primary: 'ui-icon-close' 631 } 632 }).click(function (el) { 633 $(this).parent().remove().find('li').is(':empty') 634 }); 635 // valicacao de campos numericos 636 $('.number').numeric(); 637 }); 638 639 640 UI.dialogs.addTask.dialog('open'); 155 641 } 156 157 UI.dialogs.addTask.find('.calendar_addevent_details_lnk_timezone').click(function(e){158 $(this).addClass('hidden');159 $('.calendar-addtask-details-txt-timezone').removeClass('hidden');160 e.preventDefault();161 });162 163 /*Seleciona a agenda padrão para visualização/edição de um evento*/164 if(objEvent.id)165 UI.dialogs.addTask.find('option[value="'+objEvent.calendar+'"]').attr('selected','selected').trigger('change');166 167 /* Checkbox allday */168 169 UI.dialogs.addTask.find('input[name="allDay"]').click(function(){170 $(this).attr("checked") ?171 UI.dialogs.addTask.find('.start-time, .end-time').addClass('hidden') :172 UI.dialogs.addTask.find('.start-time, .end-time').removeClass('hidden');173 updateMap(true);174 });175 176 UI.dialogs.addTask.find('.button').button();177 UI.dialogs.addTask.find('.button.add').button({178 icons: {179 secondary: "ui-icon-plus"180 }181 });182 183 // ==== validation events ====184 UI.dialogs.addTask.find(".input-group .h1").Watermark("Tarefa sem título");185 if(User.preferences.hourFormat.length == 5) {186 UI.dialogs.addTask.find(".end-time, .start-time").mask("99:99", {187 completed: function(){188 updateMap();189 }190 });191 } else {192 $.mask.definitions['{']='[ap]';193 $.mask.definitions['}']='[m]';194 UI.dialogs.addTask.find(".end-time, .start-time").mask("99:99 {}", {195 completed:function(){196 $(this).val(date.Calendar.defaultToAmPm($(this).val()));197 $(this).timepicker("refresh");198 $(this).val($(this).val().replace(/[\.]/gi, ""));199 updateMap();200 }201 });202 }203 UI.dialogs.addTask.find(".number").numeric();204 User.preferences.dateFormat.indexOf('-') > 0 ?205 UI.dialogs.addTask.find(".date").mask("99-99-9999", {206 completed:function(){207 updateMap();208 }209 }) :210 UI.dialogs.addTask.find(".date").mask("99/99/9999", {211 completed:function(){212 updateMap();213 }214 });215 216 UI.dialogs.addTask.find(".menu-addtask")217 .children(".delete").click(function(){218 $.Zebra_Dialog('Tem certeza que deseja excluir o evento?', {219 'type': 'question',220 'overlay_opacity': '0.5',221 'buttons': ['Sim', 'Não'],222 'onClose': function(clicked) {223 if(clicked == 'Sim'){224 canDiscardEventDialog = true;225 /* Remove por filtro */226 DataLayer.removeFilter('schedulable', {filter: ['AND', ['=', 'id', objEvent.id], ['=', 'calendar', objEvent.calendar], ['=','user',(objEvent.me.user ? objEvent.me.user.id : objEvent.me.id)]]});227 Calendar.rerenderView(true);228 /********************/229 UI.dialogs.addTask.dialog("close");230 }231 }232 });233 }).end()234 235 .children(".cancel").click(function(){236 UI.dialogs.addTask.dialog("close");237 }).end()238 239 .children(".save").click(function(){240 /* Validação */241 var msg = false;242 if(msg = validDateEvent()){243 $(".new-event-win.active").find('.messages-validation').removeClass('hidden').find('.message label').html(msg);244 return false;245 }246 247 canDiscardEventDialog = true;248 249 var exit = function(event){250 if(event)251 DataLayer.remove('schedulable', event, false);252 253 UI.dialogs.addTask.children().find('form.form-addevent').submit();254 UI.dialogs.addTask.dialog("close"); }255 256 if(repeat){257 DataLayer.remove('repeat', false);258 DataLayer.put('repeat', repeat);259 DataLayer.commit('repeat', false, exit(repeat.schedulable));260 }else261 exit();262 }).end()263 264 .children(".export").click(function(){265 UI.dialogs.addTask.children().find(".form-export").submit();266 });267 268 var attendeeHtml = DataLayer.render( path+'templates/attendee_add.ejs', {269 event:objEvent270 });271 272 // load template of attendees273 var blkAddAtendee = UI.dialogs.addTask.find('#calendar_addtask_details6').append(attendeeHtml);274 275 var dates = UI.dialogs.addTask.find('input.date').datepicker({276 dateFormat: User.preferences.dateFormat.replace(/M/g, 'm').replace(/yyyy/g, 'yy'),277 onSelect : function( selectedDate ){278 updateMap();279 }280 });281 282 UI.dialogs.addTask.find('input.time').timepicker({283 closeText: 'Ok',284 hourGrid: 4,285 minuteGrid: 10,286 ampm : ((User.preferences.hourFormat.length > 5) ? true: false),287 timeFormat: "hh:mm tt",288 onSelect: function (selectedDateTime){289 if(!(User.preferences.hourFormat.length == 5))290 $(this).val(selectedDateTime.replace(/[\.]/gi, ""));291 updateMap();292 },293 onClose : function (selectedDateTime){294 if(!(User.preferences.hourFormat.length == 5))295 $(this).val(selectedDateTime.replace(/[\.]/gi, ""));296 }297 298 299 });300 301 blkAddAtendee.find('.add-attendee-search .ui-icon-search').click(function(event) {302 blkAddAtendee.find('.add-attendee-search input').keydown();303 });304 305 306 blkAddAtendee.find('.add-attendee-search input').keydown(function(event) {307 308 if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') {309 var result = DataLayer.get('user', ["*", "name", $(this).val()], true);310 311 /**312 * TODO: trocar por template313 */314 blkAddAtendee.find('ul.search-result-list').empty().css('overflow', 'hidden');315 if (!result) {316 blkAddAtendee.find('ul.search-result-list').append('<li><label class="empty">Nenhum resultado encontrado.</label></li>');317 }318 319 for(i=0; i<result.length; i++)320 result[i].enabled = (blkAddAtendee.find('dd.attendee-list ul.attendee-list label.mail[title="' + result[i].mail + '"]').length) ? false : true;321 322 blkAddAtendee.find('ul.search-result-list').append(DataLayer.render( path+'templates/participants_search_itemlist.ejs', result));323 324 blkAddAtendee.find('ul.search-result-list li').click(function(event, ui){325 if ($(event.target).is('input')) {326 old_item = $(event.target).parents('li');327 newAttendeeId = DataLayer.put('participant', {328 user: old_item.find('.id').html(),329 isExternal: old_item.find('.isExternal').html()330 });331 332 attendees[old_item.find('.id').html()] = old_item.find('.name').html();333 334 blkAddAtendee.find('dd.attendee-list ul.attendee-list')335 .append(DataLayer.render(path+'templates/participants_add_itemlist.ejs', [{336 id: newAttendeeId,337 name: old_item.find('.name').html(),338 mail: old_item.find('.mail').html(),339 isExternal: old_item.find('.isExternal').html(),340 acl: objEvent.acl,341 isDirty: !!!objEvent.id342 }]))343 .scrollTo('max');344 /**345 * Delegação de participação de um participante com permissão apenas de leitura346 *347 */348 if(!objEvent.acl.organization && !objEvent.acl.write && !objEvent.acl.inviteGuests && objEvent.acl.read ){349 350 blkAddAtendee.find('.block-add-attendee.search').addClass('hidden');351 blkAddAtendee.find('.block-add-attendee.search dt').html('Adicionar outros contatos');352 353 blkAddAtendee.find('.status option').toggleClass('hidden');354 blkAddAtendee.find('option[value=5]').attr('selected','selected').trigger('change');355 blkAddAtendee.find('.request-update').removeClass('hidden');356 357 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());358 359 blkAddAtendee.find('.me .participant-delegate').addClass('disable ui-button-disabled ui-state-disabled');360 blkAddAtendee.find(".button.close").button({361 icons: {362 primary: "ui-icon-close"363 },364 text: false365 }).click(function () {366 367 $(this).parents('li').find('input[name="delegatedFrom[]"]').val('');368 blkAddAtendee.find('.request-update').addClass('hidden');369 blkAddAtendee.find('.status option').toggleClass('hidden');370 blkAddAtendee.find('option[value=1]').attr('selected','selected').trigger('change');371 blkAddAtendee.find('.me .participant-delegate').removeClass('disable ui-button-disabled ui-state-disabled attendee-permissions-change-button')372 .find('.ui-icon-person').removeClass('attendee-permissions-change').end();373 374 DataLayer.remove('participant', $(this).parents('li').find('[type=checkbox]').val());375 $(this).parents('li').remove();376 })377 .addClass('tiny');378 }else{379 callbackAttendee();380 old_item.remove();381 }382 }383 });384 385 event.preventDefault();386 }387 });388 389 UI.dialogs.addTask.find('.row.fileupload-buttonbar .button').filter('.delete').button({390 icons: {391 primary: "ui-icon-close"392 },393 text: 'Excluir'394 }).click(function () {395 $.Zebra_Dialog('Tem certeza que deseja excluir todos anexos?', {396 'type': 'question',397 'overlay_opacity': '0.5',398 'buttons': ['Sim', 'Não'],399 'onClose': function(clicked) {400 if(clicked == 'Sim'){401 402 var ids = [];403 $.each($('.attachment-list input'), function (i, input) {404 DataLayer.remove('schedulableToAttachment', {405 filter: ['=', 'id', ''+input.value]406 });407 });408 $('.attachment-list input').remove();409 $('.row.fileupload-buttonbar .attachments-list p').remove();410 }411 }});412 }).end()413 .filter('.close').button({414 icons: {415 primary: "ui-icon-close"416 },417 text: false418 }).click(function () {419 DataLayer.remove('schedulableToAttachment', $(this).parents('p').find('input[name="fileId[]"]').val());420 $(this).parents('p').remove();421 }).end()422 .filter('.downlaod-archive').button({423 icons: {424 primary: "ui-icon-arrowthickstop-1-s"425 },426 text: false427 });428 var maxSizeFile = 2000000;429 $('#fileupload').fileupload({430 sequentialUploads: true,431 add: function (e, data) {432 if(data.files[0].size < maxSizeFile)433 data.submit();434 },435 change: function (e, data) {436 $.each(data.files, function (index, file) {437 var attach = {};438 attach.fileName = file.name;439 var ext = file.name.split('.');440 if(file.name.length > 10)441 attach.fileName = ext.length == 1 ? file.name.substr(0, 10) : file.name.substr(0, 6) + '.' + ext[ext.length -1];442 attach.fileSize = formatBytes(file.size);443 if(file.size > maxSizeFile)444 attach.error = 'Tamanho de arquivo nao permitido!!'445 446 $('.attachments-list').append(DataLayer.render(path+'templates/attachment_add_itemlist.ejs', {447 file : attach448 }));449 450 if(file.size < maxSizeFile){451 $('.fileinput-button.new').append(data.fileInput[0]).removeClass('new');452 $('.attachments-list').find('[type=file]').addClass('hidden');453 454 }else455 $('.fileinput-button.new').removeClass('new');456 457 458 $('.attachments-list').find('.button.close').button({459 icons: {460 primary: "ui-icon-close"461 },462 text: false463 }).click(function(){464 var idAttach = $(this).parent().find('input[name="fileId[]"]').val();465 $('.attachment-list').find('input[value="'+idAttach+'"]')466 $(this).parent().remove();467 });468 469 })470 },471 done: function(e, data){472 var currentUpload = $('.progress.after-upload:first').removeClass('after-upload').addClass('on-complete').hide();473 474 if(!!data.result && data.result != "[]"){475 var newAttach = (attch = jQuery.parseJSON(data.result)) ? attch : jQuery.parseJSON(data.result[0].activeElement.childNodes[0].data);476 $('.attachment-list').append('<input tyepe="hidden" name="attachment[]" value="'+newAttach['attachment'][0][0].id+'"/>');477 currentUpload.removeClass('on-complete').parents('p')478 .append('<input type="hidden" name="fileId[]" value="'+newAttach['attachment'][0][0].id+'"/>')479 .find('.status-upload').addClass('ui-icon ui-icon-check');480 }else481 currentUpload.removeClass('on-complete').parents('p').find('.status-upload').addClass('ui-icon ui-icon-cancel');482 }483 });484 $('.attachments-list .button').button();485 486 if(!!window.FormData)487 $('#fileupload').bind('fileuploadstart', function () {488 var widget = $(this),489 progressElement = $('#fileupload-progress').fadeIn(),490 interval = 500,491 total = 0,492 loaded = 0,493 loadedBefore = 0,494 progressTimer,495 progressHandler = function (e, data) {496 loaded = data.loaded;497 total = data.total;498 },499 stopHandler = function () {500 widget501 .unbind('fileuploadprogressall', progressHandler)502 .unbind('fileuploadstop', stopHandler);503 window.clearInterval(progressTimer);504 progressElement.fadeOut(function () {505 progressElement.html('');506 });507 },508 formatTime = function (seconds) {509 var date = new Date(seconds * 1000);510 return ('0' + date.getUTCHours()).slice(-2) + ':' +511 ('0' + date.getUTCMinutes()).slice(-2) + ':' +512 ('0' + date.getUTCSeconds()).slice(-2);513 },514 /* formatBytes = function (bytes) {515 if (bytes >= 1000000000) {516 return (bytes / 1000000000).toFixed(2) + ' GB';517 }518 if (bytes >= 1000000) {519 return (bytes / 1000000).toFixed(2) + ' MB';520 }521 if (bytes >= 1000) {522 return (bytes / 1000).toFixed(2) + ' KB';523 }524 return bytes + ' B';525 },*/526 formatPercentage = function (floatValue) {527 return (floatValue * 100).toFixed(2) + ' %';528 },529 updateProgressElement = function (loaded, total, bps) {530 progressElement.html(531 formatBytes(bps) + 'ps | ' +532 formatTime((total - loaded) / bps) + ' | ' +533 formatPercentage(loaded / total) + ' | ' +534 formatBytes(loaded) + ' / ' + formatBytes(total)535 );536 },537 intervalHandler = function () {538 var diff = loaded - loadedBefore;539 if (!diff) {540 return;541 }542 loadedBefore = loaded;543 updateProgressElement(544 loaded,545 total,546 diff * (1000 / interval)547 );548 };549 widget550 .bind('fileuploadprogressall', progressHandler)551 .bind('fileuploadstop', stopHandler);552 progressTimer = window.setInterval(intervalHandler, interval);553 });554 555 if(objEvent.isShared){556 557 var acls = Calendar.signatureOf[objEvent.calendar].permission.acl;558 559 if(!acls.write){560 UI.dialogs.addTask.find(':input').attr('disabled', 'disabled');561 UI.dialogs.addTask.find('.button').hide();562 }563 564 if(acls.remove)565 UI.dialogs.addTask.find('.button.remove').show();566 567 UI.dialogs.addTask.find('.button.cancel').show();568 }569 570 disponibily(objEvent, path, attendees);571 572 UI.dialogs.addTask.find('.button-add-alarms').click(function(){573 var li_attach = DataLayer.render(path+'templates/alarms_add_itemlist.ejs', {type: 1});574 575 jQuery('.task-alarms-list').append(li_attach).find('.button.remove').button({576 text:false,577 icons:{578 primary:'ui-icon-close'579 }580 }).click(function(el) {581 $(this).parent().remove().find('li').is(':empty')582 });583 // valicacao de campos numericos584 $('.number').numeric();585 });586 587 588 UI.dialogs.addTask.dialog('open');589 } -
sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/availability_map.ejs
r5636 r6876 1 <fieldset id="availability_map"class="tab-level2">2 <div id="new_event_map" class="map" style="width : 100%;">1 <fieldset class="tab-level2"> 2 <div class="map_disponibility" style="width : 100%;"> 3 3 </div> 4 4 </fieldset> -
sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/participants_add_itemlist.ejs
r6203 r6876 2 2 <div style="overflow:hidden; width:100%; display:table;"> 3 3 <div class="attendee-options"> 4 <%if( !data[0].isDirty && (data[0].acl.organization || data[0].acl.write || data[0].acl.inviteGuests)){%>4 <%if( (!data[0].isDirty && data[0].notEvent) || (!data[0].isDirty && data[0].acl && (data[0].acl.organization || data[0].acl.write || data[0].acl.inviteGuests))){%> 5 5 <a href="#" class="button delegate attendee-options-button-delegate new">Delegar participação a este participante</a> 6 6 <%}%> 7 <%if( data[0].acl.organization || data[0].acl.write){%>7 <%if(!data[0].noEvent && data[0].acl && (data[0].acl.organization || data[0].acl.write)){%> 8 8 <a class="button edit attendee-options-button-edit new">Editar permissões</a> 9 9 <%}%> … … 14 14 <input type="hidden" name="attendee[]" value="<%= data[0].id %>"> 15 15 <input type="hidden" name="attendeeType[]" value="<%=data[0].isExternal%>"> 16 <input type="hidden" name="attendeeAcl[]" value="r"> 16 <%if(!data[0].noEvent){%> 17 <input type="hidden" name="attendeeAcl[]" value="r"> 18 <%}%> 17 19 <input type="hidden" name="delegatedFrom[]" value="0"> 18 20 <label title="<%= data[0].name ? data[0].name : '' %>" class="name"><%= data[0].name ? data[0].name : '' %></label> … … 20 22 21 23 </div> 22 23 24 </li> -
sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/task_add.ejs
r6811 r6876 1 1 <div title="Criar Tarefa" class="div-addtask content"> 2 <form method="POST" action=" <%=(data.event.acl.organization || data.event.acl.write) ? "schedulable:detail" : "schedulable:preview"%>" class="form-addeventcontent">2 <form method="POST" action="schedulable:task" class="form-addtask content"> 3 3 4 4 <fieldset id="calendar_addtask_details1"> 5 5 <legend class="hidden">Detalhes da tarefa</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 %>"/>10 11 <% if( data.event.id && data.event.calendar){ %>12 <input type="hidden" class="last-calendar" name="lastCalendar" value="<%= data.event.calendar%>"/>13 7 <input type="text" class="h1" name="summary" value="<%= (data.task.summary) ? data.task.summary : '' %>"/> 8 <% if( data.task.id ){ %> 9 <input type="hidden" class="id-task" name="idTask" value="<%= data.task.id %>"/> 10 <% } %> 11 <% if( data.task.id && data.task.group ){ %> 12 <input type="hidden" class="last-group" name="lastGroup" value="<%= data.task.group %>"/> 13 <% } %> 14 14 </p> 15 15 <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" />16 <input type="text" class="date start-date" value="<%= (data.task.startDate) ? data.task.startDate : '' %>" name="startDate" /> 17 <input type="text" class="time start-time<%= (data.task.allDay) ? ' hidden' : '' %>" value="<%= (data.task.startHour) ? data.task.startHour : '' %>" name="startHour" /> 18 18 <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" />19 <input type="text" class="date end-date" value="<%= (data.task.endDate) ? data.task.endDate : '' %>" name="endDate" /> 20 <input type="text" class="time end-time<%= (data.task.allDay) ? ' hidden' : '' %>" value="<%= (data.task.endHour) ? data.task.endHour : '' %>" name="endHour" /> 21 21 22 22 <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_add event_details_lnk_timezone <%=((!data.event.acl.organization || !data.event.acl.write) && (data.event.id)) ? "hidden" : '' %>">Fuso horário</a>23 <input type="text" name="dueDate" class="date date-previsao" value="<%= data.task.dueDate %>"> 24 <input type="text" name="dueTime" class="time time-previsao" value="<%= data.task.dueTime %>"> 25 26 <a href="#" class="calendar_addtask_details_lnk_timezone">Fuso horário</a> 27 27 28 28 … … 30 30 <select name="timezone" class="hidden calendar-addtask-details-txt-timezone"> 31 31 <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>32 <% for( var tzId in data.task.timezones ){ %> 33 <option value="<%= tzId %>" <%= data.timezone === tzId ? 'selected="selected"' : '' %>><%= tzId + ' (' + data.task.timezones[ tzId ] + ')' %></option> 34 34 <% } %> 35 35 </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 36 39 37 </p> 40 38 … … 49 47 50 48 <p class="input-group task-type"> 51 <input type="checkbox" name="allDay" value="true" <%= (data. event.acl.organization || data.event.acl.write) ? '' : 'disabled="disabled"' %> <%= (data.event.allDay) ? 'checked="checked"' : '' %>/>49 <input type="checkbox" name="allDay" value="true" <%= (data.task.allDay) ? 'checked="checked"' : '' %>/> 52 50 <label for="allDay">Dia inteiro</label> 53 51 <!-- 54 52 <input type="checkbox" class="button-repeat" /> 55 <label for="calendar_add event_details_chk_repeat">Repetir</label>-->53 <label for="calendar_addtask_details_chk_repeat">Repetir</label>--> 56 54 </p> 57 55 <div class="subitem"> 58 % Conclusão: <input type="number" class="done" value="1"> 59 <span class="span_done"><input type="checkbox" class="button-repeat" /> Completo<span> 60 <select style="margin: 0 0 0 20px;"> 61 <option>Desenvolvimento</option> 62 </select> 63 <span style="margin:0 0 0 20px;">Prioridade<span> 64 <select> 65 <option>Alta</option> 66 <option selected="selected">Média</option> 67 <option>Baixa</option> 68 </select> 56 % Conclusão: <input type="number" name="percentage" class="done" value="<%= data.task.percentage %>"> 57 <span style="margin:0 0 0 5px;">Status:<span> 58 <select name="taskStatus" style="margin: 0 0 0 5px;"> 59 <option <%= (data.task.taskStatus == '1') ? 'selected="selected"' : '' %> value="1">Sem ações</option> 60 <option <%= (data.task.taskStatus == '2') ? 'selected="selected"' : '' %> value="2">Em Processo</option> 61 <option <%= (data.task.taskStatus == '3') ? 'selected="selected"' : '' %> value="3">Finalizada</option> 62 <option <%= (data.task.taskStatus == '4') ? 'selected="selected"' : '' %> value="4">Cancelada</option> 63 </select> 64 <span style="margin:0 0 0 5px;">Prioridade<span> 65 <select name="priority"> 66 <option <%= (data.task.priority == '1') ? 'selected="selected"' : '' %> value="1">Alta</option> 67 <option <%= (data.task.priority == '2') ? 'selected="selected"' : '' %> value="2">Normal</option> 68 <option <%= (data.task.priority == '3') ? 'selected="selected"' : '' %> value="3">Baixa</option> 69 </select> 70 <span class="span_done"><img src="../prototype/modules/calendar/img/empty-status.png"/> Completo<span> 69 71 </div> 70 72 </fieldset> … … 78 80 </ul> 79 81 <fieldset id="calendar_addtask_details2" class="tab-level2"> 80 <legend class="hidden">Detalhes d o evento</legend>82 <legend class="hidden">Detalhes da tarefa</legend> 81 83 82 84 <p class="input-group"> 83 85 <label for="calendar_addtask_details_txtarea_description" class="for-textarea" >Descrição</label> 84 <textarea name="description" <%= (data.event.acl.organization || data.event.acl.write) ? '' : 'disabled="disabled"' %> ><%=(data.event) ? data.event.description : '' %></textarea>86 <textarea name="description"><%=(data.task) ? data.task.description : '' %></textarea> 85 87 </p> 86 88 87 89 <p class="input-group"> 88 90 <label for="calendar_addtask_details_slt_cal">Grupo</label> 89 <select >91 <select name="group" > 90 92 <% 91 for (var i=0; i< data.event.calendars.length; i++) { 92 console.log(data); 93 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) ) 94 continue; 93 for (var i=0; i< data.task.groups.length; i++) { 95 94 %> 96 <option value="<%= data. event.calendars[i].id %>" <%= data.event.calendars[i].id == data.event.calendar? 'selected="selected"':'' %>>97 <%= data. event.calendars[i].name %>95 <option value="<%= data.task.groups[i].id %>" <%= data.task.groups[i].id == data.task.group ? 'selected="selected"':'' %>> 96 <%= data.task.groups[i].name %> 98 97 </option> 99 98 <% } %> 100 99 </select> 101 <!--<select name="calendar" >102 <%103 for (var i=0; i< data.event.calendars.length; i++) {104 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)105 continue;106 %>107 <option value="<%= data.event.calendars[i].id %>" <%= data.event.calendars[i].id == data.event.calendar ? 'selected="selected"':'' %>>108 <%= data.event.calendars[i].name %>109 </option>110 <% } %>111 </select>112 -->113 100 </p> 114 101 115 102 <fieldset class="hidden"> 116 103 <legend class="hidden">Publicidade</legend> 117 <!-- 118 <p class="input-group"> 119 <label class="input-group">Mostrar-me como</label> 120 <input type="radio" checked="checked"/> 121 <label for="calendar_addevent_details_rdo_status1">Dispon?vel</label> 122 <input type="radio"/> 123 <label for="calendar_addevent_details_rdo_status2">Ocupado</label> 124 </p> 125 --> 104 126 105 <p class="input-group"> 127 106 <label class="input-group">Privacidade</label> … … 142 121 <legend class="hidden">Lembretes</legend> 143 122 144 <p class="default-alarm- event <%= (!data.event.id && data.event.alarms) ? '' : 'hidden'%>">123 <p class="default-alarm-task <%= (!data.task.id && data.task.alarms) ? '' : 'hidden'%>"> 145 124 <input type="checkbox" name="defaultAlarm" value="true" checked="checked"/> 146 125 <label class="input-default-alarm" for="defautAlarm">Usar alarmes padrões</label> … … 148 127 149 128 <ul class="task-alarms-list"> 150 <% if (data. event && data.event.alarms) {151 for (var i=0; i< data. event.alarms.length; i++) {129 <% if (data.task && data.task.alarms) { 130 for (var i=0; i< data.task.alarms.length; i++) { 152 131 %> 153 132 <li class="input-group"> 154 133 <label>Avisar-me por </label> 155 134 <select name="alarmType[]"> 156 <option value="alert" <%= data.event.alarms[i].type=='alert' ? 'selected="selected"':'' %>>Alerta</option>157 <option value="mail" <%= data.event.alarms[i].type=='mail' ? 'selected="selected"':'' %>>E-mail</option>158 <!--<option value="sms" <%= data.event.alarms[i].type=='sms' ? 'selected="selected"':'' %>>SMS</option>-->159 </select> 160 <input type="text" name="alarmTime[]" class="number input-small" value="<%= data. event.alarms[i].time %>"/>135 <option value="alert" <%= data.task.alarms[i].type=='alert' ? 'selected="selected"':'' %>>Alerta</option> 136 <option value="mail" <%= data.task.alarms[i].type=='mail' ? 'selected="selected"':'' %>>E-mail</option> 137 <!--<option value="sms" <%= data.task.alarms[i].type=='sms' ? 'selected="selected"':'' %>>SMS</option>--> 138 </select> 139 <input type="text" name="alarmTime[]" class="number input-small" value="<%= data.task.alarms[i].time %>"/> 161 140 <select name="alarmUnit[]"> 162 <option value="m" <%= data. event.alarms[i].unit=='m' ? 'selected="selected"':'' %>>Minutos</option>163 <option value="h" <%= data. event.alarms[i].unit=='h' ? 'selected="selected"':'' %>>Horas</option>164 <option value="d" <%= data. event.alarms[i].unit=='d' ? 'selected="selected"':'' %>>Dias</option>165 </select> 166 <input type="hidden" name="alarmId[]" value="<%=data. event.useAlarmDefault ? '' : data.event.alarms[i].id%>" />167 <input type="hidden" name="isDefaultAlarm[]" value="<%=data. event.useAlarmDefault ? 1 : 0%>" />168 <label> antes de cada evento.</label>141 <option value="m" <%= data.task.alarms[i].unit=='m' ? 'selected="selected"':'' %>>Minutos</option> 142 <option value="h" <%= data.task.alarms[i].unit=='h' ? 'selected="selected"':'' %>>Horas</option> 143 <option value="d" <%= data.task.alarms[i].unit=='d' ? 'selected="selected"':'' %>>Dias</option> 144 </select> 145 <input type="hidden" name="alarmId[]" value="<%=data.task.useAlarmDefault ? '' : data.task.alarms[i].id%>" /> 146 <input type="hidden" name="isDefaultAlarm[]" value="<%=data.task.useAlarmDefault ? 1 : 0%>" /> 147 <label> antes de cada tasko.</label> 169 148 <a class="button remove tiny"></a> 170 149 </li> … … 193 172 194 173 <div class="child-bottom"> 195 <% for(var i=0; i<15; i++){ %>196 197 <div class="date-hour"><span>17/05 - 23:43</span></div>198 <div class="organization"><span>thiago da silva sauro</span></div>199 200 174 <% for(var i=0; i< data.task.historic.length; i++){ %> 175 <div class="child-bottom-each"> 176 <div class="date-hour"><span><%= data.task.historic[i].date %></span></div> 177 <div class="organization"><span><%= data.task.historic[i].description %></span></div> 178 </div> 179 <% } %> 201 180 </div> 202 181 … … 205 184 206 185 <fieldset class="attachment-list hidden"> 207 <%if(data. event && data.event.attachments){208 for (var i=0; i< data. event.attachments.length; i++) {%>209 <input type="hidden" name="fileId[]" value="<%=data. event.attachments[i].id%>"/>186 <%if(data.task && data.task.attachments){ 187 for (var i=0; i< data.task.attachments.length; i++) {%> 188 <input type="hidden" name="fileId[]" value="<%=data.task.attachments[i].id%>"/> 210 189 <%} 211 190 }%> … … 219 198 <div class="row fileupload-buttonbar-task"> 220 199 <div class="button-files-upload"> 221 <!-- The fileinput-button span is used to style the file input field as button --> 222 <%if(data.event.acl.organization || data.event.acl.write){%> 223 <span class="button btn-success fileinput-button"> 200 <!-- The fileinput-button span is used to style the file input field as button --> 201 <span class="button btn-success fileinput-button"> 224 202 <span><i class="icon-plus icon-white"></i> Adicionar</span> 225 203 <input type="file" name="files[]" multiple> 226 204 </span> 227 <%}%> 228 <%if(data.event.acl.organization || data.event.acl.write){%> 229 <button type="button" class="button btn-danger delete"> 230 <i class="icon-trash icon-white"></i> Remover Todos 231 </button> 232 <%}%> 205 <button type="button" class="button btn-danger delete"> 206 <i class="icon-trash icon-white"></i> Remover Todos 207 </button> 233 208 </div> 234 209 <div id="fileupload-progress"></div> 235 210 <div class="files-list"> 236 211 <ul class="attachments-list"> 237 <%if(data.event && data.event.attachments){ 238 for (var i=0; i< data.event.attachments.length; i++) { 239 %> 240 <p class="input-group arquive-info"> 241 <label class="lbl-archive-nome">Nome:</label> 242 <span class="archive-nome"><%=data.event.attachments[i].name%></span> 243 244 <label class="lbl-archive-size">Tamanho:</label> 245 <span class="archive-size"><%=data.event.attachments[i].size%></span> 246 <a href="../prototype/getArchive.php?attachment=<%=data.event.attachments[i].id%>" class="button tiny upload downlaod-archive">Download</a> 247 <%if(data.event.acl.organization || data.event.acl.write){%> 248 <span class="button close tiny upload edit delete-upload" title="Deletar">Deletar</span> 249 <%}%> 250 <input type="hidden" name="fileId[]" value="<%=data.event.attachments[i].id%>"/> 251 </p> 252 <%} 253 }%> 212 <% 213 for (var i=0; i< data.task.attachments.length; i++) { 214 %> 215 <p class="input-group arquive-info"> 216 <label class="lbl-archive-nome">Nome:</label> 217 <span class="archive-nome"><%=data.task.attachments[i].name%></span> 218 219 <label class="lbl-archive-size">Tamanho:</label> 220 <span class="archive-size"><%=data.task.attachments[i].size%></span> 221 <a href="../prototype/getArchive.php?attachment=<%=data.task.attachments[i].id%>" class="button tiny upload downlaod-archive">Download</a> 222 223 <span class="button close tiny upload edit delete-upload" title="Deletar">Deletar</span> 224 225 <input type="hidden" name="fileId[]" value="<%=data.task.attachments[i].id%>"/> 226 </p> 227 <%}%> 254 228 255 229 … … 263 237 </div> 264 238 <form action="../prototype/modules/calendar/export.php" method="GET" class="form-export content"> 265 <input type="hidden" class="id-task" name="task" value="<%= data. event.id %>"/>239 <input type="hidden" class="id-task" name="task" value="<%= data.task.id %>"/> 266 240 </form> 267 <!-- <div id="calendar_add event_addattendee"></div>-->241 <!-- <div id="calendar_addtask_addattendee"></div>--> 268 242 269 243 <div title="" class="menu-container footer-container menu-addtask"> 270 <% if (data. event.id) { %>244 <% if (data.task.id) { %> 271 245 <a title="Exportar" class="button export" href="#">Exportar</a> 272 246 <a title="Excluir" class="button delete" href="#">Excluir</a> -
sandbox/2.4.2-expresso1/prototype/modules/calendar/templates/task_quick_add.ejs
r6797 r6876 1 1 <div class="add-simple-task"> 2 2 3 <input type="text" class="task" name=" title" value=""/>3 <input type="text" class="task" name="summary" value=""/> 4 4 <textarea name="description" class="task"></textarea> 5 5
Note: See TracChangeset
for help on using the changeset viewer.