Changeset 6996 for trunk/expressoMail1_2
- Timestamp:
- 08/10/12 19:11:37 (12 years ago)
- Location:
- trunk/expressoMail1_2
- Files:
-
- 11 edited
- 4 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/inc/hook_settings.inc.php
r6858 r6996 345 345 create_check_box('Show previous message, after delete actual message?','delete_and_show_previous_message','Enable this option if you want to read the next message everytime you delete a message'); 346 346 create_check_box('Do you wanna receive an alert for new messages?','alert_new_msg','Everytime you receive new messages you will be informed'); 347 348 349 create_check_box('Wish you receive notifications for: "New messages", "Filter criteria", "Event alerts"?','notifications','Everytime you receive new messages you will be informed'); 350 351 352 347 353 create_check_box('Show default view on main screen?','mainscreen_showmail','Show unread messages in your home page'); 348 354 create_check_box('Do you want to use remove attachments function?','remove_attachments_function','It allow you to remove attachments from messages'); -
trunk/expressoMail1_2/index.php
r6858 r6996 23 23 echo "<script src='js/modal/modal.js'></script>"; 24 24 //jquery and Editor 25 echo ' 25 echo ' 26 26 <link rel="stylesheet" type="text/css" href="templates/default/main.css"></link> 27 27 28 <link rel="stylesheet" type="text/css" href="../phpgwapi/js/dftree/dftree.css"></link> 29 30 <link rel="stylesheet" type="text/css" href="../prototype/plugins/jquery.spinner/jquery.spinner.css"></link> 28 31 <link rel="stylesheet" type="text/css" href="../prototype/plugins/fullcalendar/fullcalendar.css"></link> 29 32 <link rel="stylesheet" type="text/css" href="../prototype/plugins/fullcalendar/fullcalendar.print.css"></link> … … 32 35 <script type="text/javascript" src="../prototype/plugins/jquery/jquery.min.js"></script> 33 36 <link href="../prototype/modules/filters/filters.css" rel="stylesheet" type="text/css"> 37 34 38 <script type="text/javascript" src="../prototype/plugins/jquery/jquery-ui.min.js"></script> 35 39 <script src="../prototype/plugins/json2/json2.js" language="javascript"></script> … … 72 76 <script type="text/javascript" src="../prototype/plugins/contextmenu/jquery.contextMenu.js"></script> 73 77 <!-- <script type="text/javascript" src="../prototype/plugins/contextmenu/jquery.ui.position.js"></script> --> 74 78 75 79 <script type="text/javascript" src="../prototype/modules/calendar/js/timezone.js"></script> 76 80 <script type="text/javascript" src="../prototype/plugins/dateFormat/dateFormat.js"></script> 77 81 <script type="text/javascript" src="../prototype/modules/calendar/js/calendar.date.js"></script> 82 <script type="text/javascript" src="../prototype/modules/calendar/js/desktop.notification.js"></script> 78 83 <script type="text/javascript" src="../prototype/modules/calendar/js/calendar.codecs.js"></script> 84 <script type="text/javascript" src="../prototype/modules/calendar/js/calendar.alarms.js"></script> 79 85 <link rel="stylesheet" type="text/css" href="../prototype/plugins/freeow/style/freeow/freeow.css" > 80 86 <script type="text/javascript" src="../prototype/plugins/freeow/jquery.freeow.min.js"></script> -
trunk/expressoMail1_2/js/common_functions.js
r6930 r6996 1286 1286 return folderName; 1287 1287 } 1288 1289 function useDesktopNotification(){ 1290 return !!parseInt(preferences.notifications); 1291 } -
trunk/expressoMail1_2/js/draw_api.js
r6975 r6996 3220 3220 subject.className = "header_message_field"; 3221 3221 if(defaultCalendar == "expressoCalendar" && $("#expressoCalendarid")[0]){ 3222 var new_task_logo = document.createElement("IMG"); 3223 new_task_logo.title = "Criar uma nova tarefa a partir deste email."; 3224 new_task_logo.alt = "Criar uma nova tarefa a partir deste email."; 3225 new_task_logo.src = "./templates/default/images/big-task.png"; 3226 new_task_logo.style.cursor = "pointer"; 3227 new_task_logo.style.marginLeft = "5px"; 3228 new_task_logo.onclick = function(){ 3229 import_implements_calendar(); 3230 3231 3232 DataLayer.dispatchPath = "../prototype/"; 3233 var path = "../prototype/modules/calendar/"; 3234 taskDetails(decodeCreateSchedulable('task', ID), true, path, true); 3235 } 3236 3222 3237 var new_event_logo = document.createElement("IMG"); 3223 3238 new_event_logo.title = "Criar evento a partir deste email"; 3224 3239 new_event_logo.alt = "Criar evento a partir deste email"; 3225 new_event_logo.src = "./templates/default/images/calendar_add.png"; 3240 //new_event_logo.src = "./templates/default/images/calendar_add.png"; 3241 new_event_logo.src = "./templates/default/images/big-event.png"; 3226 3242 new_event_logo.style.cursor = "pointer"; 3227 3243 new_event_logo.style.marginLeft = "5px"; … … 3232 3248 DataLayer.dispatchPath = "../prototype/"; 3233 3249 var path = "../prototype/modules/calendar/"; 3234 3235 var startEvent = new Date(); 3236 if(startEvent.toString('mm') < 30) 3237 startEvent.add({minutes: (30 - parseInt(startEvent.toString('mm')))}); 3238 else 3239 startEvent.add({hours: 1, minutes: '-'+startEvent.toString('mm')}); 3240 var endEvent = function(date){ 3241 if(!!User.preferences.defaultCalendar){ 3242 return new Date(parseInt(date.getTime()) + 3243 (!!Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration ? 3244 (Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration * 60000) : 3245 (User.preferences.defaultDuration * 60000) 3246 )); 3247 }else 3248 return new Date(parseInt(date.getTime()) + (User.preferences.defaultDuration * 60000)); 3249 }; 3250 3251 var emails = $("#to_values_"+ID).val().split(','); 3252 3253 3254 //Normalização dos dados evita ter que reemplementar toda as funcionalidades do calendar 3255 eventDetails({ 3256 3257 acl: {inviteGuests: true, organization: true ,participationRequired: false, read: true, write: true}, 3258 alarms: [], 3259 allDay: false, 3260 attachments: [], 3261 isAttendee: true, 3262 attendee: '',//TODOOOOOO, 3263 calendar: User.preferences.defaultCalendar ? User.preferences.defaultCalendar : Calendar.calendars[0], 3264 calendars: Calendar.calendars, 3265 category: '', 3266 'class': '1', 3267 delegatedFrom: {}, 3268 endDate: startEvent.toString(User.preferences.dateFormat), 3269 startDate: endEvent(startEvent).toString(User.preferences.dateFormat), 3270 startHour: startEvent.toString(User.preferences.hourFormat), 3271 endHour: endEvent(startEvent).toString(User.preferences.hourFormat), 3272 timezone: User.preferences.defaultCalendar ? Calendar.signatureOf[User.preferences.defaultCalendar].calendar.timezone : User.preferences.timezone, 3273 summary : $("#subject_"+ID).text(), 3274 description : $("#body_" + ID).text(), 3275 startTime: startEvent.getTime(), 3276 endTime: endEvent(startEvent), 3277 timezones: Timezone.timezones, 3278 me: {name: User.me.name, mail: User.me.mail, acl: 'rowi', status: '1', delegatedFrom: '0', id: User.me.id}, 3279 organizer: {name: User.me.name, mail: User.me.mail, acl: 'rowi', status: '1', delegatedFrom: '0' , id: User.me.id}, 3280 statusParticipants: {accepted: 0, cancelled: 0, tentative: 0, unanswered:emails.length}, 3281 location: '', 3282 attendee: $.map(emails, function( mail ){ 3283 var contact = false; 3284 var decoded = Encoder.htmlDecode(mail); 3285 var newAttendeeName = ""; 3286 3287 var name = decoded.match(/"([^"]*)"/) ? decoded.match(/"([^"]*)"/)[1] : ''; 3288 var mail = decoded.match(/<([^<]*)>[\s]*$/) ? decoded.match(/<([^<]*)>[\s]*$/)[1].toLowerCase() : decoded; 3289 3290 3291 var user = DataLayer.get('user', ["=", "mail", mail], true); 3292 3293 if( $.type(user) == "array") 3294 user = user[0]; 3295 3296 if(user != ''){ 3297 //user = {name : name , mail : mail}; 3298 if(User.me.mail == user.mail) 3299 return(null); 3300 user.isExternal = (!!user && !(!!user.isExternal)) ? 0 : 1; 3301 3302 return DataLayer.merge({ 3303 name: user.name, 3304 mail: user.mail, 3305 acl: 'r', 3306 delegatedFrom: '0', 3307 status: '4', 3308 isExternal: user.isExternal 3309 }, !!user.id ? {id : DataLayer.put('participant', {user: user.id, isExternal: user.isExternal})} : {id: DataLayer.put('participant', {user: user})}); 3310 }else if(mail.match(/[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])/)){ 3311 3312 var userId = DataLayer.put('user', { 3313 name: name, 3314 mail: mail, 3315 isExternal: '1' 3316 }); 3317 var newAttendeeId = DataLayer.put('participant', { 3318 user: userId, 3319 isExternal: '1' 3320 }); 3321 3322 return { 3323 id: newAttendeeId, 3324 name: name, 3325 mail: mail, 3326 acl: 'r', 3327 delegatedFrom: '0', 3328 status: '4', 3329 isExternal: '1' 3330 }; 3331 3332 }else 3333 return (null); 3334 }) 3335 3336 }, true, path, true); 3250 3251 eventDetails(decodeCreateSchedulable('event', ID), true, path, true); 3337 3252 } 3338 3253 subject.appendChild(new_event_logo); 3254 subject.appendChild(new_task_logo); 3339 3255 } 3340 3256 tr5.appendChild(td5); -
trunk/expressoMail1_2/js/main.js
r6980 r6996 1 1 // Tempo do auto refresh (em milisegundos) 2 2 var time_refresh = 300000; 3 3 4 // tempo do auto save (em milisegundos) 4 5 // 20000 = 20 segundos … … 6 7 var results_search_messages = ""; 7 8 var cabecalho = '<h4>ExpressoLivre - ExpressoMail</h4>'; 8 // Variavel para controle de atualização das mensagens listadas na modal de alerta de filtro por remetente 9 var checkAlarmsFilter = false; 9 10 var auxNotificationCriteriaVetor = []; 11 var auxNotification; 12 13 var countNewMessage = 0; 14 var notifyNewMessageFilter = []; 10 15 11 16 var dynamicPersonalContacts = new Array(); … … 20 25 } 21 26 } 22 27 23 28 function mount_url_folder(folders){ 24 29 return folders.join(cyrus_delimiter); … … 75 80 76 81 if(preferences.show_name_print_messages == "1") { 77 82 var getUserName = document.getElementById("user_info"); 78 83 var userName = getUserName.innerHTML; 79 84 var position = userName.indexOf("-"); … … 572 577 573 578 function auto_refresh(){ 574 refresh(preferences.alert_new_msg );579 refresh(preferences.alert_new_msg, preferences.notifications); 575 580 setTimeout('auto_refresh()', time_refresh); 576 581 } … … 581 586 } 582 587 583 function refresh(alert_new_msg){ 588 function notificationFilter(data, notifyCriteria){ 589 590 if(parseInt(notifyCriteria) && data.length > 0 && !activePage ){ 591 592 var howManyCriteria = $('div.gray.filtersDeadline .message-list li').length; 593 var differenceOfNewCriteria = data.length - howManyCriteria; 594 595 if(differenceOfNewCriteria > 0){ 596 for(var i=data.length - differenceOfNewCriteria; i < data.length; i++){ 597 598 desktopNotification.sentNotification("",get_lang("Filter criteria"), truncate(new Date(data[i].udate).toString('dd/MM HH:mm') + ' - ' + data[i].from+' - '+data[i].subject, 75)); 599 desktopNotification.showNotification(false, function(){ 600 window.focus(); 601 this.cancel(); 602 }); 603 } 604 } 605 } 606 } 607 608 function refresh(alert_new_msg, notifyPermission){ 609 584 610 getFromAlertRules(); 585 611 var handler_refresh = function(data){ 586 if(checkAlarmsFilter){ 587 handlerMessageFilter = function (data) { 588 alarmFollowupflagged('filtersAlarms', data); 589 } 590 /* Busca nas pastas indexadas para ver se há novas mensagens com a flag $FilteredMessage */ 591 cExecute ("$this.imap_functions.getFlaggedAlertMessages&folders="+fromRules, handlerMessageFilter); 592 } 593 checkAlarmsFilter = true; 612 handlerMessageFilter = function (data) { 613 alarmFollowupflagged('filtersAlarms', data); 614 notificationFilter(data, notifyPermission); 615 } 616 /* Busca nas pastas indexadas para ver se há novas mensagens com a flag $FilteredMessage */ 617 cExecute ("$this.imap_functions.getFlaggedAlertMessages&folders="+fromRules, handlerMessageFilter); 618 594 619 if(data['msg_range_end']) 595 620 if(data['msg_range_end'] > 0) … … 603 628 showEmptyBoxMsg(box); 604 629 605 if (data.length > 0 ){630 if (data.length > 0 || countNewMessage > 0){ 606 631 for(var i=0;i< data.length;i++){ 607 632 if (!onceOpenedHeadersMessages[current_folder]) … … 742 767 if(parseInt(preferences.use_shortcuts)) 743 768 select_msg("null","reload_msg","null"); 744 745 if(parseInt(alert_new_msg) && data.new_msgs > 0 )769 770 if(parseInt(alert_new_msg) && data.new_msgs > 0 && activePage) 746 771 alert(data['new_msgs'] > 1 ? get_lang("You have %1 new messages", data['new_msgs']) + "!" : get_lang("You have 1 new message") +"!"); 772 773 774 if(parseInt(notifyPermission) && (data.new_msgs > 0 || !!countNewMessage) && !activePage ){ 775 776 countNewMessage += data.length; 777 778 desktopNotificationAux = desktopNotification.sentNotification("",get_lang("Notification"), countNewMessage > 1 ? get_lang("You have %1 new messages", countNewMessage) + "!" : get_lang("You have 1 new message") + "!"); 779 780 if(auxNotification !== 'undefined') 781 desktopNotification.cancelByReference(auxNotification); 782 783 desktopNotification.showNotification(function(){ 784 countNewMessage = 0; 785 }, function(){ 786 window.focus(); 787 this.cancel(); 788 countNewMessage = 0; 789 }); 790 791 auxNotification = desktopNotificationAux; 792 } 747 793 build_quota(data['quota']); 748 794 } … … 4018 4064 } 4019 4065 4066 //Normalização dos dados evita ter que reemplementar toda as funcionalidades do calendar 4067 function decodeCreateSchedulable(type, ID){ 4068 var startEvent = new Date(); 4069 if(startEvent.toString('mm') < 30) 4070 startEvent.add({minutes: (30 - parseInt(startEvent.toString('mm')))}); 4071 else 4072 startEvent.add({hours: 1, minutes: '-'+startEvent.toString('mm')}); 4073 var endEvent = function(date){ 4074 if(!!User.preferences.defaultCalendar){ 4075 return new Date(parseInt(date.getTime()) + 4076 (!!Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration ? 4077 (Calendar.signatureOf[User.preferences.defaultCalendar].calendar.defaultDuration * 60000) : 4078 (User.preferences.defaultDuration * 60000) 4079 )); 4080 }else 4081 return new Date(parseInt(date.getTime()) + (User.preferences.defaultDuration * 60000)); 4082 }; 4083 4084 var emails = $("#to_values_"+ID).val().split(','); 4085 4086 var schedulable = {}; 4087 4088 schedulable = { 4089 acl: {inviteGuests: true, organization: true ,participationRequired: false, read: true, write: true}, 4090 alarms: [], 4091 allDay: false, 4092 attachments: [], 4093 isAttendee: true, 4094 attendee: '',//TODOOOOOO, 4095 category: '', 4096 'class': '1', 4097 delegatedFrom: {}, 4098 endDate: startEvent.toString(User.preferences.dateFormat), 4099 startDate: endEvent(startEvent).toString(User.preferences.dateFormat), 4100 startHour: startEvent.toString(User.preferences.hourFormat), 4101 endHour: endEvent(startEvent).toString(User.preferences.hourFormat), 4102 timezone: User.preferences.defaultCalendar ? Calendar.signatureOf[User.preferences.defaultCalendar].calendar.timezone : User.preferences.timezone, 4103 summary : $("#subject_"+ID).text(), 4104 description : $("#body_" + ID).text(), 4105 startTime: startEvent.getTime(), 4106 endTime: endEvent(startEvent), 4107 timezones: Timezone.timezones, 4108 me: {name: User.me.name, mail: User.me.mail, acl: 'rowi', status: '1', delegatedFrom: '0', id: User.me.id}, 4109 organizer: {name: User.me.name, mail: User.me.mail, acl: 'rowi', status: '1', delegatedFrom: '0' , id: User.me.id}, 4110 statusParticipants: {accepted: 0, cancelled: 0, tentative: 0, unanswered:emails.length}, 4111 location: '', 4112 attendee: $.map(emails, function( mail ){ 4113 var contact = false; 4114 var decoded = Encoder.htmlDecode(mail); 4115 var newAttendeeName = ""; 4116 4117 var name = decoded.match(/"([^"]*)"/) ? decoded.match(/"([^"]*)"/)[1] : ''; 4118 var mail = decoded.match(/<([^<]*)>[\s]*$/) ? decoded.match(/<([^<]*)>[\s]*$/)[1].toLowerCase() : decoded; 4119 4120 4121 var user = DataLayer.get('user', ["=", "mail", mail], true); 4122 4123 if( $.type(user) == "array" ) 4124 user = user[0]; 4125 4126 if(user != ''){ 4127 //user = {name : name , mail : mail}; 4128 if(User.me.mail == user.mail) 4129 return(null); 4130 user.isExternal = (!!user && !(!!user.isExternal)) ? 0 : 1; 4131 4132 return DataLayer.merge({ 4133 name: user.name, 4134 mail: user.mail, 4135 acl: 'r', 4136 delegatedFrom: '0', 4137 status: '4', 4138 isExternal: user.isExternal 4139 }, !!user.id ? {id : DataLayer.put('participant', {user: user.id, isExternal: user.isExternal})} : {id: DataLayer.put('participant', {user: user})}); 4140 }else if(mail.match(/[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])/)){ 4141 4142 var userId = DataLayer.put('user', { 4143 name: name, 4144 mail: mail, 4145 isExternal: '1' 4146 }); 4147 var newAttendeeId = DataLayer.put('participant', { 4148 user: userId, 4149 isExternal: '1' 4150 }); 4151 4152 return { 4153 id: newAttendeeId, 4154 name: name, 4155 mail: mail, 4156 acl: 'r', 4157 delegatedFrom: '0', 4158 status: '4', 4159 isExternal: '1' 4160 }; 4161 4162 }else 4163 return (null); 4164 }) 4165 }; 4166 4167 schedulable = DataLayer.merge(schedulable, 4168 type == 'event' ? 4169 {calendar: User.preferences.defaultCalendar ? User.preferences.defaultCalendar : Calendar.calendars[0], calendars: Calendar.calendars} 4170 : {group: Calendar.groups[0].id, groups: Calendar.groups, percentage: 0} 4171 ); 4172 4173 return schedulable; 4174 4175 4176 } 4177 4020 4178 function import_implements_calendar(){ 4021 4179 … … 4031 4189 $.ajax({url: "../prototype/modules/calendar/js/map.disponibility.js", async: false, beforeSend: function( xhr ) {xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}}); 4032 4190 $.ajax({url: "../prototype/modules/calendar/js/helpers.js", async: false, beforeSend: function( xhr ) {xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}}); 4191 $.ajax({url: "../prototype/modules/calendar/js/task.helpers.js", async: false, beforeSend: function( xhr ) {xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}}); 4033 4192 //$.ajax({ url: "../prototype/modules/calendar/js/timezone.js", async: false}); 4034 4193 //$.ajax({ url: "../prototype/modules/calendar/js/calendar.codecs.js", async: false}); 4035 4194 $.ajax({url: "../prototype/plugins/encoder/encoder.js", async: false, beforeSend: function( xhr ) {xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}}); 4195 $.ajax({url: "../prototype/plugins/jquery.spinner/jquery.spinner.min.js", async: false, beforeSend: function( xhr ) {xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}}); 4036 4196 //$.ajax({url: "../prototype/plugins/dateFormat/dateFormat.js", async: false, beforeSend: function( xhr ) { xhr.overrideMimeType('text/javascript; charset=ISO-8859-1')}}); 4037 4197 … … 4073 4233 wfolders.makeWindow('null','import'); 4074 4234 } 4075 4076 function decodeOwner(){4235 //Verifica o contexto de importação 4236 function decodeOwner(){ 4077 4237 owner = User.me.id; 4078 4238 var imapBox = openTab.imapBox[currentTab].split(cyrus_delimiter); … … 4082 4242 } 4083 4243 return owner; 4084 } 4085 function import_calendar(data){ 4086 var import_url = '$this.db_functions.import_vcard&msg_folder='+data; 4087 var logUser; 4088 var up; 4089 var owner; 4090 function handler_import_calendar(data){ 4091 if(data === true){ 4092 write_msg(get_lang("The event was imported successfully.")); 4093 } 4094 else if( data['url'] ) 4095 { 4096 var form = document.createElement( "form" ); 4097 4098 form.setAttribute( "action", DEFAULT_URL + data['url'] + '&isPost=true' ); 4099 form.setAttribute( "method", "POST" ); 4100 4101 document.body.appendChild( form ); 4102 4103 form.submit(); 4104 } 4105 else 4106 write_msg(get_lang(data)); 4107 } 4244 } 4245 4246 function import_calendar(data){ 4247 var import_url = '$this.db_functions.import_vcard&msg_folder='+data; 4248 var logUser; 4249 var up; 4250 var owner; 4251 4252 function handler_import_calendar(data){ 4253 if(data === true){ 4254 write_msg(get_lang("The event was imported successfully.")); 4255 } 4256 else if( data['url'] ) 4257 { 4258 var form = document.createElement( "form" ); 4259 4260 form.setAttribute( "action", DEFAULT_URL + data['url'] + '&isPost=true' ); 4261 form.setAttribute( "method", "POST" ); 4262 4263 document.body.appendChild( form ); 4264 4265 form.submit(); 4266 } 4267 else 4268 write_msg(get_lang(data)); 4269 } 4108 4270 if(defaultCalendar == "expressoCalendar" && $("#expressoCalendarid")[0]){ 4109 4271 import_implements_calendar(); 4110 4272 $( "#import-dialog" ).dialog({ 4111 autoOpen: false, 4112 height: 220, 4113 modal: true, 4114 resizable : false, 4115 open: function(event, ui) 4116 { 4117 if(typeof(shortcut) != 'undefined') shortcut.disabled = true; 4118 }, 4119 close: function(event, ui) 4120 { 4121 event.stopPropagation(); 4122 if(typeof(shortcut) != 'undefined') shortcut.disabled = false; 4123 }, 4124 closeOnEscape: true 4273 autoOpen: false, 4274 height: 220, 4275 modal: true, 4276 resizable : false, 4277 open: function(event, ui) { 4278 if(typeof(shortcut) != 'undefined') shortcut.disabled = true; 4279 }, 4280 close: function(event, ui){ 4281 event.stopPropagation(); 4282 if(typeof(shortcut) != 'undefined') shortcut.disabled = false; 4283 }, 4284 closeOnEscape: true 4125 4285 }); 4126 4286 4127 4287 $.ajax({ 4128 url: "controller.php?action="+import_url+'&from_ajax=true&id_user='+User.me.id+'&readable=true&cirus_delimiter='+cyrus_delimiter+'&analize=true&uidAccount='+decodeOwner(), 4129 async: false, 4130 success: function(data){ 4131 data = connector.unserialize(data); 4132 4133 4134 var createDialog = function(typeImport, propaget){ 4135 4136 if(typeof(typeImport) == "object"){ 4137 var calendarPermission = typeImport.calendar; 4138 typeImport = typeImport.action; 4288 url: "controller.php?action="+import_url+'&from_ajax=true&id_user='+User.me.id+'&readable=true&cirus_delimiter='+cyrus_delimiter+'&analize=true&uidAccount='+decodeOwner(), 4289 async: false, 4290 success: function(data){ 4291 data = connector.unserialize(data); 4292 var createDialog = function(typeImport, propaget){ 4293 4294 if(typeof(typeImport) == "object"){ 4295 var calendarIds = !!typeImport.calendar ? typeImport.calendar : Calendar[typeImport.type]; 4296 typeImport = typeImport.action; 4297 } 4298 4299 switch(parseInt(typeImport)){ 4300 case 1: 4301 case 7: 4302 case 10: 4303 $("#select-agenda").html(''); 4304 4305 var options = ''; 4306 4307 if(calendarIds){ 4308 for(var i = 0; i < calendarIds.length; i++) 4309 options += '<option value="'+calendarIds[i]+'">'+Calendar.signatureOf[calendarIds[i]].calendar.name+'</option>' 4310 } 4311 4312 $("#select-agenda").append(options); 4313 $("#select-agenda").css("display", "block"); 4314 4315 $("#import-dialog" ).dialog({ 4316 buttons: { 4317 Cancel: function() { 4318 $( this ).dialog( "close" ); 4319 }, 4320 "Importar" : function(){ 4321 $.ajax({ 4322 url: "controller.php?action="+import_url+'&from_ajax=true&selected='+$("#select-agenda option:selected").val()+'&status='+$("#select-status option:selected").val()+'&uidAccount='+decodeOwner(), 4323 success: function(msg){ 4324 var alt = ( (msg = connector.unserialize(msg)) == "ok") ? "Importado com sucesso para " : "Ocorreu um erro ao importar o evento/tarefa para a agenda "; 4325 alert( alt + $("#select-agenda option:selected").text() ); 4326 } 4327 }); 4328 $( this ).dialog( "close" ); 4329 } 4330 } 4331 }); 4332 4333 if(typeImport == 7){ 4334 $("#import-dialog").find('#select-status option[value=1]').attr('selected','selected').trigger('change'); 4335 $("#import-dialog").find('#select-status').attr('disabled','disabled'); 4336 } 4337 break; 4338 case 3: 4339 $.ajax({ 4340 url: "controller.php?action="+import_url+'&from_ajax=true&selected=true', 4341 success: function(msg){ 4342 alert( ( ( connector.unserialize(msg)) == "ok") ? "Seu evento/tarefa foi removido " : "Ocorreu um erro ao remover o evento/tarefa" ); 4343 } 4344 }); 4345 return; 4346 break; 4347 case 5: 4348 $.ajax({ 4349 url: "controller.php?action="+import_url+'&from_ajax=true&selected=true', 4350 success: function(msg){ 4351 alert( ( ( connector.unserialize(msg)) == "ok") ? "Seu evento/tarefa foi Atualizado com sucesso" : "Ocorreu um erro ao atualizar evento/tarefa" ); 4352 } 4353 }); 4354 return; 4355 break; 4356 case 6: 4357 var acceptedSuggestion = confirm("Deseja atualizar o evento/tarefa de acordo com a sugestão ?"); 4358 $.ajax({ 4359 url: "controller.php?action="+import_url+'&from_ajax=true&id_user='+User.me.id+'&selected=true&cirus_delimiter='+cyrus_delimiter+'&acceptedSuggestion='+acceptedSuggestion+"&from="+document.getElementById('from_values_'+currentTab).value+'&uidAccount='+decodeOwner(), 4360 success: function(msg){ 4361 if(acceptedSuggestion) 4362 alert( ( ( connector.unserialize(msg)) == "ok") ? "Evento/tarefa atualizado com sucesso " : "Ocorreu um erro ao atualizar o evento" ); 4139 4363 } 4140 4141 switch(parseInt(typeImport)){ 4142 case 1: 4143 case 7: 4144 case 10: 4145 $("#select-agenda").html(''); 4146 4147 var options = ''; 4148 4149 if(typeImport == 10){ 4150 for(var i = 0; i < calendarPermission.length; i++) 4151 options += '<option value="'+calendarPermission[i]+'">'+Calendar.signatureOf[calendarPermission[i]].calendar.name+'</option>' 4152 }else{ 4153 for(var id in Calendar.signatures) 4154 options += parseInt(Calendar.signatures[id].isOwner) ? '<option value="'+Calendar.signatures[id].calendar.id+'">'+Calendar.signatures[id].calendar.name+'</option>' : ''; 4364 }); 4365 return; 4366 break; 4367 case 9: 4368 alert('Seu evento/tarefa não possui alterações!'); 4369 return; 4370 break; 4371 case 11: 4372 alert('Este evento/tarefa já fora importando por algum dos particpantes e já se encontra disponível em sua agenda compartilhada!'); 4373 return; 4374 break; 4375 default: 4376 up = true; 4377 $("#select-agenda").css("display", "none"); 4378 $("#import-dialog" ).children("p:first-child").css("display", "none"); 4379 $("#import-dialog" ).dialog({ 4380 height: 160, 4381 title: 'Atualizar Evento/Tarefa', 4382 buttons: { 4383 Cancel: function() { 4384 $( this ).dialog( "close" ); 4385 }, 4386 "Atualizar": function() { 4387 $.ajax({ 4388 url: "controller.php?action="+import_url+'&from_ajax=true&cirus_delimiter='+cyrus_delimiter+'&selected='+ (parseInt(typeImport) == 2 || parseInt(typeImport) == 4 ? 'true' : $("#select-agenda option:selected").val()) +'&status='+$("#select-status option:selected").val()+'&uidAccount='+decodeOwner(), 4389 success: function(msg){ 4390 alert( ( (msg = connector.unserialize(msg)) == "ok") ? "Atualizado com sucesso" : "Ocorreu um erro ao atualizar o evento" ); 4391 } 4392 }); 4393 $( this ).dialog( "close" ); 4155 4394 } 4156 4157 $("#select-agenda").append(options); 4158 $("#select-agenda").css("display", "block"); 4159 4160 $("#import-dialog" ).dialog({ 4161 buttons: { 4162 Cancel: function() { 4163 $( this ).dialog( "close" ); 4164 }, 4165 "Importar" : function(){ 4166 $.ajax({ 4167 url: "controller.php?action="+import_url+'&from_ajax=true&selected='+$("#select-agenda option:selected").val()+'&status='+$("#select-status option:selected").val()+'&uidAccount='+decodeOwner(), 4168 success: function(msg){ 4169 var alt = ( (msg = connector.unserialize(msg)) == "ok") ? "Importado com sucesso para " : "Ocorreu um erro ao importar o evento para a agenda "; 4170 alert( alt + $("#select-agenda option:selected").text() ); 4171 } 4172 }); 4173 $( this ).dialog( "close" ); 4174 } 4175 } 4176 }); 4177 4178 if(typeImport == 7){ 4179 $("#import-dialog").find('#select-status option[value=1]').attr('selected','selected').trigger('change'); 4180 $("#import-dialog").find('#select-status').attr('disabled','disabled'); 4181 } 4182 break; 4183 case 3: 4184 $.ajax({ 4185 url: "controller.php?action="+import_url+'&from_ajax=true&selected=true', 4186 success: function(msg){ 4187 alert( ( ( connector.unserialize(msg)) == "ok") ? "Seu evento foi removido " : "Ocorreu um erro ao remover o evento" ); 4188 } 4189 }); 4190 return; 4191 break; 4192 case 5: 4193 $.ajax({ 4194 url: "controller.php?action="+import_url+'&from_ajax=true&selected=true', 4195 success: function(msg){ 4196 alert( ( ( connector.unserialize(msg)) == "ok") ? "Seu evento foi Atualizado com sucesso" : "Ocorreu um erro ao atualizar evento" ); 4197 } 4198 }); 4199 return; 4200 break; 4201 case 6: 4202 var acceptedSuggestion = confirm("Deseja atualizar o evento de acordo com a sugestão ?"); 4203 $.ajax({ 4204 url: "controller.php?action="+import_url+'&from_ajax=true&id_user='+User.me.id+'&selected=true&cirus_delimiter='+cyrus_delimiter+'&acceptedSuggestion='+acceptedSuggestion+"&from="+document.getElementById('from_values_'+currentTab).value+'&uidAccount='+decodeOwner(), 4205 success: function(msg){ 4206 if(acceptedSuggestion) 4207 alert( ( ( connector.unserialize(msg)) == "ok") ? "Evento atualizado com sucesso " : "Ocorreu um erro ao atualizar o evento" ); 4208 } 4209 }); 4210 return; 4211 break; 4212 case 9: 4213 alert('Seu evento não possui alterações!'); 4214 return; 4215 break; 4216 case 11: 4217 alert('Este evento já fora importando por algum dos particpantes e já se encontra disponível em sua agenda compartilhada!'); 4218 return; 4219 break; 4220 default: 4221 up = true; 4222 $("#select-agenda").css("display", "none"); 4223 $("#import-dialog" ).children("p:first-child").css("display", "none"); 4224 $("#import-dialog" ).dialog({ 4225 height: 160, 4226 title: 'Atualizar Evento', 4227 buttons: { 4228 Cancel: function() { 4229 $( this ).dialog( "close" ); 4230 }, 4231 "Atualizar": function() { 4232 4233 $.ajax({ 4234 url: "controller.php?action="+import_url+'&from_ajax=true&cirus_delimiter='+cyrus_delimiter+'&selected='+ (parseInt(typeImport) == 2 || parseInt(typeImport) == 4 ? 'true' : $("#select-agenda option:selected").val()) +'&status='+$("#select-status option:selected").val()+'&uidAccount='+decodeOwner(), 4235 success: function(msg){ 4236 alert( ( (msg = connector.unserialize(msg)) == "ok") ? "Atualizado com sucesso" : "Ocorreu um erro ao atualizar o evento" ); 4237 } 4238 }); 4239 $( this ).dialog( "close" ); 4240 } 4241 }, 4242 close:function(event, ui) 4243 { 4244 if(typeof(shortcut) != 'undefined') shortcut.disabled = false; 4245 }, 4246 open: function(event, ui) 4247 { 4248 if(typeof(shortcut) != 'undefined') shortcut.disabled = true; 4249 } 4250 }); 4251 $(".ui-dialog-buttonpane").find(".ui-button:last").children().html("Atualizar"); 4395 }, 4396 close:function(event, ui) 4397 { 4398 if(typeof(shortcut) != 'undefined') shortcut.disabled = false; 4399 }, 4400 open: function(event, ui) 4401 { 4402 if(typeof(shortcut) != 'undefined') shortcut.disabled = true; 4252 4403 } 4253 $( "#import-dialog" ).dialog( "open" ); 4254 4255 }; 4256 createDialog(data, true); 4257 4258 }, 4259 beforeSend: function( jqXHR, settings ){ 4260 connector.showProgressBar(); 4261 }, 4262 complete: function( jqXHR, settings ){ 4263 connector.hideProgressBar(); 4264 } 4265 }); 4266 4267 } 4268 else 4269 { 4270 if(confirm(get_lang("Do you confirm this import to your Calendar?"))){ 4271 cExecute( import_url + "&from_ajax=true", handler_import_calendar); 4272 } 4273 } 4274 } 4404 }); 4405 $(".ui-dialog-buttonpane").find(".ui-button:last").children().html("Atualizar"); 4406 } 4407 $( "#import-dialog" ).dialog( "open" ); 4408 4409 }; 4410 createDialog(data, true); 4411 4412 }, 4413 beforeSend: function( jqXHR, settings ){ 4414 connector.showProgressBar(); 4415 }, 4416 complete: function( jqXHR, settings ){ 4417 connector.hideProgressBar(); 4418 } 4419 }); 4420 } 4421 else 4422 { 4423 if(confirm(get_lang("Do you confirm this import to your Calendar?"))){ 4424 cExecute( import_url + "&from_ajax=true", handler_import_calendar); 4425 } 4426 } 4427 } 4428 4275 4429 function open_msg_part(data){ 4276 4430 var handler_open_msg_part = function (data) -
trunk/expressoMail1_2/setup/phpgw_pt-br.lang
r6952 r6996 135 135 Do you really want to empty your trash folder? expressoMail1_2 pt-br Você tem certeza que deseja limpar sua lixeira? 136 136 Do you wanna receive an alert for new messages? expressoMail1_2 pt-br Você quer receber um alerta para mensagens novas? 137 Wish you receive notifications for: "New messages", "Filter criteria", "Event alerts"? expressoMail1_2 pt-br Exibir notificações de: "Nova mensagem", "Criterio atendido", "Alerta de evento"? 137 138 Do you want to automatically display the message header? expressoMail1_2 pt-br Você deseja exibir automaticamente o cabecalho da mensagem? 138 139 Do you want to block this e-mail? expressoMail1_2 pt-br Você gostaria de bloquear este e-mail? … … 393 394 Number of dynamic contacts admin pt-br Número de contatos dinâmicos 394 395 Number of messages to send: expressoMail1_2 pt-br Número de mensagens à enviar: 396 Notification expressoMail1_2 pt-br Notificação 397 Filter criteria expressoMail1_2 pt-br Critério de filtro 395 398 Offline Pass expressoMail1_2 pt-br Senha do Offline 396 399 Offline success installed expressoMail1_2 pt-br Offline instalado com sucesso … … 929 932 Permission denied to folder "%1". expressoMail1_2 pt-br Permissão negada para pasta "%1". 930 933 Success expressoMail1_2 pt-br Concluído 934 The contact was moved from recent contacts to personal contacts successful. expressoMail1_2 pt-br O Contato foi movido dos contatos recentes para os contatos pessoais com sucesso. -
trunk/expressoMail1_2/setup/setup.inc.php
r6528 r6996 13 13 $setup_info['expressoMail1_2']['name'] = 'expressoMail1_2'; 14 14 $setup_info['expressoMail1_2']['title'] = 'Expresso Mail'; 15 $setup_info['expressoMail1_2']['version'] = '2.4.8 ';15 $setup_info['expressoMail1_2']['version'] = '2.4.8.1'; 16 16 $setup_info['expressoMail1_2']['app_order'] = 2; 17 17 $setup_info['expressoMail1_2']['tables'][] = 'phpgw_certificados'; -
trunk/expressoMail1_2/setup/tables_current.inc.php
r6528 r6996 78 78 'alarm_deadline' => array('type' => 'timestamp', 'nullable' => true), 79 79 'done_deadline' => array('type' => 'timestamp', 'nullable' => true), 80 'is_done' => array('type' => 'int', 'precision' => '8','nullable' => true) 80 'is_done' => array('type' => 'int', 'precision' => '2','nullable' => true), 81 'sent' => array('type' => 'int', 'precision' => '2','nullable' => false, 'default' => 0) 81 82 ), 82 83 'pk' => array('id'), … … 96 97 'size' => array('type' => 'int','precision' => '16','nullable' => False), 97 98 'dtstamp' => array('type' => 'int','precision' => '16','nullable' => False), 98 'owner' => array('type' => 'int', 'precision' => '8','nullable' => True) 99 'owner' => array('type' => 'int', 'precision' => '8','nullable' => True), 100 99 101 ), 100 102 'pk' => array('id'), -
trunk/expressoMail1_2/setup/tables_update.inc.php
r6543 r6996 312 312 return $GLOBALS['setup_info']['expressoMail1_2']['currentver']; 313 313 } 314 315 $test[] = '2.4.8'; 316 function expressoMail1_2_upgrade2_4_8() { 317 $oProc = $GLOBALS['phpgw_setup']->oProc; 318 319 $oProc->query("ALTER TABLE expressomail_message_followupflag ADD COLUMN sent smallint not null default 0"); 320 321 $GLOBALS['setup_info']['expressoMail1_2']['currentver'] = '2.4.8.1'; 322 return $GLOBALS['setup_info']['expressoMail1_2']['currentver']; 323 } 314 324 ?> -
trunk/expressoMail1_2/templates/default/index.tpl
r6487 r6996 186 186 </fieldset> 187 187 </div> 188 <div id="import-dialog" title="Importar Evento " style="display:none">188 <div id="import-dialog" title="Importar Evento/Tarefa" style="display:none"> 189 189 <p>Seleciona uma Agenda para o Evento :</p> 190 190 <p> -
trunk/expressoMail1_2/templates/default/main.css
r6930 r6996 898 898 899 899 900 901 900 /* 902 901 * Este arquivo limpa o estilo para a nova agenda, .new-event-win.active sobrescrevendo o código CSS … … 928 927 /* font-family: Arial,Helvetica,sans-serif;*/ 929 928 /*}*/ 930 .new-event-win.active:focus {929 .new-event-win.active:focus, .new-task-win.active:focus { 931 930 outline: 0; 932 931 } 933 .new-event-win.active body {932 .new-event-win.active body , .new-task-win.active body { 934 933 line-height: 1; 935 934 color: black; 936 935 background: white; 937 936 } 938 .new-event-win.active ol, .new-event-win.active ul {937 .new-event-win.active ol, .new-event-win.active ul , .new-task-win.active ol, .new-task-win.active ul { 939 938 list-style: none; 940 939 list-style-image : none; … … 942 941 } 943 942 944 .new-event-win.active table {943 .new-event-win.active table , .new-task-win.active table { 945 944 border-collapse: separate; 946 945 border-spacing: 0; 947 946 } 948 .new-event-win.active caption, .new-event-win.active th, .new-event-win.active td {947 .new-event-win.active caption, .new-event-win.active th, .new-event-win.active td, .new-task-win.active caption, .new-task-win.active th, .new-task-win.active td { 949 948 /*text-align: left;*/ 950 949 font-weight: normal; 951 950 } 952 951 .new-event-win.active blockquote:before, .new-event-win.active blockquote:after, 953 .new-event-win.active q:before, .new-event-win.active q:after { 952 .new-event-win.active q:before, .new-event-win.active q:after, 953 .new-task-win.active blockquote:before, .new-task-win.active blockquote:after, 954 .new-task-win.active q:before, .new-task-win.active q:after { 954 955 content: ""; 955 956 } 956 .new-event-win.active blockquote, .new-event-win.active q { 957 .new-event-win.active blockquote, .new-event-win.active q , 958 .new-task-win.active blockquote, .new-task-win.active q 959 { 957 960 quotes: "" ""; 958 961 } 959 .new-event-win.active .mail.name-special, .new-event-win.active .name.name-special{ 962 .new-event-win.active .mail.name-special, .new-event-win.active .name.name-special, 963 .new-task-win.active .mail.name-special, .new-task-win.active .name.name-special 964 { 960 965 padding: 0 0 0 35px; 961 966 } 962 967 963 .new-event-win.active .add-attendee-search.search-field { 968 .new-event-win.active .add-attendee-search.search-field , 969 .new-task-win.active .add-attendee-search.search-field 970 { 964 971 width: 249px; 965 972 } 966 973 967 .new-event-win.active #calendar_addevent_details4 {974 .new-event-win.active #calendar_addevent_details4, .new-task-win.active #calendar_addtask _details4 { 968 975 margin: 10px 0 0 0; 969 976 } 970 977 971 .new-event-win.active input {978 .new-event-win.active input, .new-task-win.active input{ 972 979 color: #000; 973 980 } 974 981 975 .new-event-win.active #calendar_addevent_details5 {982 .new-event-win.active #calendar_addevent_details5 , .new-task-win.active #calendar_addtask_details5 { 976 983 margin: 10px 0 11px 0; 977 984 } 978 985 979 .new-event-win.active select { 986 .new-event-win fieldset.tab-level2, .new-task-win fieldset.tab-level2 { padding: 0px 5px; min-height: 110px; max-height: 310px; overflow: hidden;} 987 988 .new-event-win.active select , .new-task-win.active select { 980 989 border: 1px solid #CFCFCF; 981 990 border-color: #CFCFCF; … … 983 992 background-color: #FFF; 984 993 } 985 .new-event-win.active a:link, .new-event-win.active a:visited { 994 .new-event-win.active a:link, .new-event-win.active a:visited 995 .new-task-win.active a:link, .new-task-win.active a:visited 996 { 997 986 998 color: #2E6E9E; 987 999 } 988 1000 989 .new-event-win.active dd, .new-event-win.active dl, .new-event-win.active dt{ 1001 .new-event-win.active dd, .new-event-win.active dl, .new-event-win.active dt, 1002 .new-task-win.active dd, .new-task-win.active dl, .new-task-win.active dt 1003 { 990 1004 margin: 0; 991 1005 } … … 1001 1015 { color: #ff9933; }*/ 1002 1016 1003 .new-event-win.active #divAppbox{ 1017 .new-event-win.active #divAppbox 1018 .new-task-win.active #divAppbox 1019 { 1004 1020 overflow-x: auto; 1005 1021 overflow-y: scroll; … … 1007 1023 1008 1024 .new-event-win.active select 1025 .new-task-win.active select 1009 1026 { border-color: #CFCFCF; color: #555; padding-left:0px;} 1010 1027 … … 1045 1062 } 1046 1063 1064 div.new-event-win.active div.button-files-upload {margin: 15px 0 0 0;} 1065 1047 1066 fieldset.alarm{ 1048 1067 border: none !important; … … 1051 1070 } 1052 1071 1053 div.new-event-win.active div.button-files-upload{ 1054 margin: 15px 0 0 0; 1055 } 1056 1057 div.new-event-win.active div.files-list{ 1058 margin: 45px 0 0 0; 1072 .new-task-win dl.block-add-attendee{ 1073 width: 350px; 1074 } 1075 .new-task-win.active .add-attendee-search.search-field{ 1076 width: 322px; 1077 } 1078 1079 .new-task-win .menu-container.footer-container{ 1080 width: 774px; 1059 1081 } 1060 1082 … … 1170 1192 border-top: 0px; 1171 1193 }*/ 1172 1173 1194 1174 1195 … … 1423 1444 1424 1445 .fileupload_msg_tooltip{ 1425 1426 1427 1428 1429 1446 width: 99.7%; 1447 text-align: center; 1448 background: #DFEFFC; 1449 font-weight: bold; 1450 border-radius: 5px; 1430 1451 height: 115px; 1431 1452 line-height: 115px; … … 1457 1478 background-color: #5194d2; 1458 1479 } 1480 1481 /*freeow*/ 1482 div.gray.alarmDeadline .button.delete 1483 { 1484 /* 1485 display: block; 1486 position: absolute; 1487 right: 19px; 1488 top: 50px; 1489 */ 1490 } 1491 1492 /*div.gray.alarmDeadline ul.message-list{overflow: hidden;}*/ 1493 1494 /*div.gray.alarmDeadline ul.message-list li{ margin: 5px 0;}*/ 1495 1496 div.gray li{float: left; width: 253px;} 1497 1498 div.gray li a.button.delete{float: right;} 1499 1500 1501 .div-addtask #calendar_addtask_details1 .h1{ 1502 width: 100%; 1503 } 1504 1505 .div-addtask #calendar_addtask_details2 textarea { 1506 width: 675px; 1507 } 1508 1509 .div-addtask .button-files-upload{width: 100%;} 1510 .div-addtask fieldset.block-add-attendee .search-result-list, fieldset.block-add-activity .search-result-list{width: 330px;} 1511 1512 .new-event-win div.div-addevent, .new-task-win div.div-addtask{width: 775px;} 1513 1514 .calendar-addevent-details-txt-timezone, .calendar-addtask-details-txt-timezone{width: 212px;} 1515 1516 .div-addtask #calendar_addtask_details1 .time-previsao { width: 40px; } 1517 1518 .div-addtask #calendar_addtask_details1 .date-previsao{ width: 80px; } 1519 1520 .div-addtask #calendar_addtask_details6{ width: 756px; } 1521 .div-addtask #calendar_addtask_details1 .start-time{ width: 40px; } 1522 .div-addtask #calendar_addtask_details1 .start-date{ width: 80px; } 1523 .div-addtask #calendar_addtask_details1 .end-time{ width: 40px; } 1524 .div-addtask #calendar_addtask_details1 .end-date{ width: 80px; } 1525 .div-addtask #calendar_addtask_details1 .previsao-termino { margin: 0 0 0 20px; } 1526 .div-addtask #calendar_addtask_details1 .subitem { margin: 5px; display: block;} 1527 .div-addtask #calendar_addtask_details1 .subitem .span_done{ margin: 0 30px;} 1528 .div-addtask #calendar_addtask_details1 .subitem .span_done img{position: relative; top:4px; width:16px; height:16px;} 1529 .div-addtask #calendar_addtask_details1 .calendar_addevent_details_lnk_timezone { margin: 0 0 0 20px;} 1530 .div-addtask #calendar_addtask_details1 .subitem .done { width: 45px;} 1531 .div-addtask #calendar_addtask_details1 .ui-spinner-buttons{ top: -2px !important;} 1532 .div-addtask #calendar_addtask_details1 .ui-spinner-buttons .ui-spinner-up{height: 7px !important;} 1533 .div-addtask #calendar_addtask_details1 .ui-spinner-buttons .ui-spinner-down{height: 8px !important;} 1534 1535 .div-addtask #calendar_addtask_details1 .subitem .span_done.noAction{background-image: url("../../../prototype/modules/calendar/img/gray.png"); background-repeat: no-repeat; } 1536 .div-addtask #calendar_addtask_details1 .subitem .span_done.inProcess{background-image: url("../../../prototype/modules/calendar/img/yellow.png"); background-repeat: no-repeat;} 1537 .div-addtask #calendar_addtask_details1 .subitem .span_done.finished{background-image: url("../../../prototype/modules/calendar/img/green.png"); background-repeat: no-repeat;} 1538 .div-addtask #calendar_addtask_details1 .subitem .span_done.canceled{background-image: url("../../../prototype/modules/calendar/img/red.png"); background-repeat: no-repeat;} 1539 1540 #calendar_addtask_details4{margin: 0;} 1541 #calendar_addtask_details5{margin: -2px 0 0 0;} 1542 #calendar_addtask_details7{margin: 3px 0 0 0;} 1543 .div-addtask #calendar_addtask_details1 .subitem .span_done label{position: relative; left: 28px;} 1544 1545 .div-addtask fieldset#calendar_addtask_details5.tab-level2{ margin: 0 } 1546 1547 .div-addtask #calendar_addtask_details8 .parent {width: 746px; min-height: 208px; float: left;} 1548 /*.div-addtask #calendar_addtask_details8 .parent .child-top {width: 745px; height: 20px; background: #E8F4FD; border-left: 1px solid #CCC; border-right: 1px solid #CCC; border-bottom: 1px solid #CCC;}*/ 1549 .div-addtask #calendar_addtask_details8 .parent .child-top {width: 745px; height: 25px; background: #E8F4FD; border-left: 1px solid #CCC; border-right: 1px solid #CCC; border-bottom: 1px solid #CCC; border-top: 1px solid #CCC;} 1550 .div-addtask #calendar_addtask_details8 .parent .child-bottom {width: 745px; height: 208px; overflow: auto; float: left; border-left: 1px solid #CCC; border-right: 1px solid #CCC; border-bottom: 1px solid #CCC;} 1551 .div-addtask #calendar_addtask_details8 .parent .child-bottom .child-bottom-each { height: 20px; } 1552 .div-addtask #calendar_addtask_details8 .parent .child-bottom .child-bottom-each:hover { background: #FFF2F2; cursor: pointer;} 1553 1554 .div-addtask #calendar_addtask_details8 .parent .child-bottom .child-bottom-each .date-hour {overflow: hidden; width: 140px; float: left; height: 20px} 1555 .div-addtask #calendar_addtask_details8 .parent .child-bottom .child-bottom-each .date-hour span { margin: 8px; float: left; } 1556 .div-addtask #calendar_addtask_details8 .parent .child-bottom .child-bottom-each .user{overflow: hidden; width: 150px; float: left; height: 20px; border-left: 1px solid #CCC; } 1557 .div-addtask #calendar_addtask_details8 .parent .child-bottom .child-bottom-each .user span{ margin: 8px; float: left; } 1558 .div-addtask #calendar_addtask_details8 .parent .child-bottom .child-bottom-each .attribute{overflow: hidden; width: 130px; float: left; height: 20px; border-left: 1px solid #CCC; } 1559 .div-addtask #calendar_addtask_details8 .parent .child-bottom .child-bottom-each .attribute span{ margin: 8px; float: left; } 1560 .div-addtask #calendar_addtask_details8 .parent .child-bottom .child-bottom-each .beforeValue{overflow: hidden; width: 150px; float: left; height: 20px; border-left: 1px solid #CCC; } 1561 .div-addtask #calendar_addtask_details8 .parent .child-bottom .child-bottom-each .beforeValue span{ margin: 8px; float: left; } 1562 .div-addtask #calendar_addtask_details8 .parent .child-bottom .child-bottom-each .afterValue{overflow: hidden; width: 150px; float: left; height: 20px; border-left: 1px solid #CCC; } 1563 .div-addtask #calendar_addtask_details8 .parent .child-bottom .child-bottom-each .afterValue span{ margin: 8px; float: left; } 1564 1565 .div-addtask #calendar_addtask_details8 .parent .child-top .date-hour { width: 140px; float: left; background: #E8F4FD; height: 20px; text-align: center; } 1566 .div-addtask #calendar_addtask_details8 .parent .child-top .date-hour span{ display: block; padding: 6px; font-weight: bold; color: #2E6E9E; } 1567 .div-addtask #calendar_addtask_details8 .parent .child-top .user { width: 150px; float: left; background: #E8F4FD; height: 20px; font-weight: bold; color: #2E6E9E; text-align: center;} 1568 .div-addtask #calendar_addtask_details8 .parent .child-top .user span{display: block; padding: 6px;} 1569 .div-addtask #calendar_addtask_details8 .parent .child-top .attribute { width: 130px; float: left; background: #E8F4FD; height: 20px; font-weight: bold; color: #2E6E9E; text-align: center;} 1570 .div-addtask #calendar_addtask_details8 .parent .child-top .attribute span{display: block; padding: 6px;} 1571 .div-addtask #calendar_addtask_details8 .parent .child-top .beforeValue { width: 150px; float: left; background: #E8F4FD; height: 20px; font-weight: bold; color: #2E6E9E; text-align: center;} 1572 .div-addtask #calendar_addtask_details8 .parent .child-top .beforeValue span{display: block; padding: 6px; } 1573 .div-addtask #calendar_addtask_details8 .parent .child-top .afterValue { width: 150px; float: left; background: #E8F4FD; height: 20px; font-weight: bold; color: #2E6E9E; text-align: center;} 1574 .div-addtask #calendar_addtask_details8 .parent .child-top .afterValue span{display: block; padding: 6px; }
Note: See TracChangeset
for help on using the changeset viewer.