Changeset 5576
- Timestamp:
- 02/28/12 13:52:26 (11 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoMail1_2/js/draw_api.js
r5575 r5576 219 219 } 220 220 } 221 221 /* 222 222 tree_folders.draw(Element('content_folders')); 223 223 if (!expresso_offline) { … … 229 229 tree_folders.getNodeById('local_Inbox')._select(); 230 230 } 231 231 */ 232 232 var trash_span = document.getElementById(mount_url_folder(["lINBOX",special_folders["Trash"]]) + 'tree_folders'); 233 233 var draft_span = document.getElementById(mount_url_folder(["lINBOX",special_folders["Drafts"]]) + 'tree_folders'); … … 346 346 myLabels.html("<div class='my-labels'>" + 347 347 "<img src='../prototype/modules/mail/img/tag.png'/>" + 348 "<a class='title-my-labels' tabindex='0' role='button' aria-expanded='false' title='"+get_lang("My Label ")+"'>"+get_lang("My Label")+"</a>" +348 "<a class='title-my-labels' tabindex='0' role='button' aria-expanded='false' title='"+get_lang("My Labels")+"'>"+get_lang("My Label")+"</a>" + 349 349 350 350 "<span class='status-list-labels ui-icon ui-icon-triangle-1-s'></span>" + … … 355 355 var labelId = $(this).parents("li").attr('class').match(/label-item-([\d]+[()a-zA-Z]*)/)[1]; 356 356 search_emails("UNDELETED KEYWORD \"$Label"+labelId+"\""); 357 }) 357 }).end() 358 358 .find(".square-color").css("display","").click(function(){ 359 359 $(this).parent(".label-item").each(function(){ -
trunk/expressoMail1_2/templates/default/index.tpl
r5571 r5576 207 207 <div id="sandbox" class="expresso-calendar-container hidden"> 208 208 </div> 209 <div id="windowLabels" class="label-configure-win" ></div>210 <div id="followupFlag" class="followupflag-configure-win" ></div>209 <div id="windowLabels" class="label-configure-win" style="display: none;"></div> 210 <div id="followupFlag" class="followupflag-configure-win" style="display: none;"></div> 211 211 <!-- END list --> -
trunk/prototype/modules/mail/js/followupflag.js
r5575 r5576 1 /**2 * constrói as duas possíveis janela de alerta, utilizando o mesmo template3 */4 var toIterate = [5 {6 attrDeadline: 'doneDeadline',7 caption: {singular:'Você tem uma mensagem concluindo hoje:', plural:"Você tem %1 mensagens concluindo hoje:"},8 onOk: function(event){9 if($(event.target).parents('.followupflag-alarm').find('[name="stopAlert"]').is(':checked')){10 $.cookie("fadeCompleted", (new Date).toString("dd/MM/yyyy"), { expires: 1 });11 }12 },13 enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy"))14 },15 {16 attrDeadline: 'alarmDeadline',17 caption: {singular:'Você tem uma mensagem sinalizada para hoje:', plural:'Você tem %1 mensagens sinalizadas para hoje:'},18 onOk: function(event){19 if($(event.target).parents('.followupflag-alarm').find('[name="stopAlert"]').is(':checked')){20 $.cookie("fadeAlarm", (new Date).toString("dd/MM/yyyy"), { expires: 1 });21 }22 },23 enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy"))24 }25 ];26 27 while (it = toIterate.pop()){28 if (!it.enable) continue;29 30 var alarmInRange = DataLayer.get('followupflagged', {filter: ['AND', ['>', it.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).toString('yyyy-MM-dd 00:00:00')], ['<', toIterate.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).addHours(24).toString('yyyy-MM-dd 00:00:00')]], criteria: {deepness: 1}});31 if(alarmInRange.length > 0){32 for(var i=0; i<alarmInRange.length; i++){33 var date = Date.parseExact(alarmInRange[i].alarmDeadline, 'yyyy-MM-dd hh:mm:ss');34 alarmInRange[i].alarmDeadline = date.toString('hh:mm');35 }36 var caption = (alarmInRange.length == 1) ?37 get_lang(it.caption.singular):38 get_lang(it.caption.plural, alarmInRange.length);39 40 var data = {alarmInRange : alarmInRange, caption: caption};41 var dialogText = DataLayer.render("../prototype/modules/mail/templates/followupflag_alarm_list.ejs", data);42 43 /**44 * A última dialog criada é a dialog mais ao alto45 */46 var offsetHeight = $('.ZebraDialog.right-bottom:last').length ?47 $(window).height() - $('.ZebraDialog.right-bottom:last').position().top : 0;48 49 /**50 * Se for a primeira, desloca para cima do rodapé do grid51 * caso contrário desloca para um pouco acima da última dialog criada52 */53 offsetHeight = !offsetHeight ? 35 : offsetHeight + 20 ;54 var dialog = new $.Zebra_Dialog(dialogText, {55 'buttons': ['Ok'],56 'modal': false,57 'vcenter_short_message': false,58 'position': ['right - 20', 'bottom - ' + offsetHeight.toString() ],59 'custom_class': 'right-bottom followupflag-alarm',60 }).dialog;61 62 $(".ZebraDialog.followupflag-alarm .ZebraDialog_Button0").click(it.onOk);63 64 $(".ZebraDialog.followupflag-alarm .display-options .more").click(function(event) {65 $(event.target).parents('.followupflag-alarm').find('.message-list').css('height', 'auto');66 });67 68 }69 }70 71 1 function init_followup(data){ 72 2 … … 124 54 } 125 55 }); 56 /* 126 57 if ( !valid ) { 127 58 // remove invalid value, as it didn't match anything … … 130 61 input.data( "autocomplete" ).term = ""; 131 62 return false; 63 } 64 */ 65 if ( !valid ) { 66 if(select.has('option[value="custom"]').length > 0) { 67 select.find('option:last').val('custom').html($(this).val()).attr('selected', 'selected'); 68 } else { 69 select.append(select.find('option:last').clone().val('custom').html($(this).val())); 70 select.find('option[value="custom"]').attr('selected', 'selected'); 71 } 132 72 } 133 73 } … … 192 132 var backgroundColor = winElement.find('[name="backgroundColor"]').val(); 193 133 var followupflagId = winElement.find('[name="name"] option:selected').val(); 134 if (followupflagId == 'custom') { 135 DataLayer.put('followupflag', {name:winElement.find('[name="name"] option:selected').text(), uid:User.me.id}); 136 DataLayer.commit(false, false, function(data){ 137 followupflags = DataLayer.get('followupflag',{criteria:{order: 'id'}}, true); 138 followupflagId = followupflags[followupflags.length - 1].id; 139 winElement.find('[name="name"] option[value="custom"]').val(followupflagId); 140 }); 141 } 142 143 194 144 var isDone = winElement.find('[name="done"]').is(':checked') ? 1 : 0; 195 145 var alarmDate = false; … … 209 159 folders.push(folder_name); 210 160 211 //var followupflag = DataLayer.get('followupflag', followupflagId.toString()), 212 var idFollowupflagged = winElement.find('.id-followup').val(); 161 var idFollowupflagged = winElement.find('[name="followupflagId"]').val(); 213 162 var followupflagged = DataLayer.merge({ 214 163 uid : User.me.id, 215 164 followupflagId : followupflagId, 216 165 folderName : folder_name, 217 messageNumber : messageNumber, 218 //alarmDeadline : winElement.find('[name="alarmDate"]').datepicker("getDate"), 219 //doneDeadline: winElement.find('[name="doneDate"]').datepicker("getDate"), 166 messageNumber : messageNumber, 220 167 isDone: isDone, 221 168 backgroundColor : backgroundColor … … 236 183 } 237 184 185 /** 186 * Aplica o ícone correspondente na lista de mensagens do expressoMail 187 */ 238 188 var flagged = $('#td_message_followup_' + messageNumber + ', ' + '#td_message_followup_search_' + messageNumber+':first').find(".flag-edited"); 239 189 if(isDone){ … … 245 195 $('#td_message_followup_' + messageNumber + ', ' + 246 196 '#td_message_followup_search_' + messageNumber+':first').find(".flag-edited").css("background", backgroundColor); 197 198 /** 199 * Salva ou, caso já exista, atualiza 200 */ 247 201 DataLayer.put('followupflagged', followupflagged); 248 202 } 203 249 204 DataLayer.commit(false, false, function(data){ 250 205 followupflags = DataLayer.get('followupflagged',{criteria:{order: 'id'}}, true); 251 206 var id = followupflags[followupflags.length - 1].id; 252 winElement.find('.id-followup').val(id); 253 }); 207 winElement.find('[name="followupflagId"]').val(id); 208 winElement.find('.menu-configure-followupflag .save').button("option", "disabled", true); 209 }); 210 254 211 var extend = DataLayer.get('followupflagged', { 255 filter: ['AND', ['IN', 'messageNumber', selectedMessageIds], ['IN', 'folderName', folders]],criteria: {deepness: 1}}); 212 filter: ['AND', ['IN', 'messageNumber', selectedMessageIds], ['IN', 'folderName', folders]], 213 criteria: {deepness: 1} 214 }); 215 256 216 if(extend != "" || extend != 'undefined' || extend != []){ 257 for(var ex = 0; ex < extend.length; ex++){258 if(onceOpenedHeadersMessages[extend[ ex].folderName]){259 if(onceOpenedHeadersMessages[extend[ ex].folderName][extend[ex].messageNumber]){260 onceOpenedHeadersMessages[extend[ ex].folderName][extend[ex].messageNumber]['followupflagged'] = {};261 DataLayer.merge(onceOpenedHeadersMessages[extend[ ex].folderName][extend[ex].messageNumber]['followupflagged'], extend[ex]);217 for(var i = 0; i < extend.length; i++){ 218 if(onceOpenedHeadersMessages[extend[i].folderName]){ 219 if(onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]){ 220 onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]['followupflagged'] = {}; 221 DataLayer.merge(onceOpenedHeadersMessages[extend[i].folderName][extend[i].messageNumber]['followupflagged'], extend[i]); 262 222 } 263 223 } … … 270 230 271 231 .filter('.menu-configure-followupflag .delete').click(function(){ 272 232 if (selectedMessageIds.length == 0) $(this).button("option", "disabled", true); 233 273 234 for(i = 0; i < selectedMessageIds.length; i++){ 274 235 var folder_name; … … 280 241 folder_name = tr.getAttribute('name'); 281 242 } 282 var messageNumber 243 var messageNumber = selectedMessageIds[i]; 283 244 if(onceOpenedHeadersMessages[folder_name][messageNumber]['followupflagged']){ 284 245 if(onceOpenedHeadersMessages[folder_name][messageNumber]['followupflagged'].id){ … … 297 258 DataLayer.commit(); 298 259 winElement.dialog("close"); 299 300 260 }); 301 261 262 263 if(!winElement.find('[name="followupflagId"]').val()) 264 winElement.find('.menu-configure-followupflag .delete').button("option", "disabled", true); 265 266 /** 267 * Se houver mudança, habilita o botão "Save" 268 */ 269 winElement.find(':input').change(function(event){ 270 if (event.keyCode != '27' && event.keyCode != '13') 271 $(this).button("option", "disabled", true); 272 }).keydown(function(event){ 273 if (event.keyCode != '27' && event.keyCode != '13') 274 $(this).button("option", "disabled", true); 275 }); 276 302 277 winElement.find('.date').datepicker(); 303 278 winElement.find('.time').timepicker({}); 304 279 winElement.find('[name="name"]').combobox(); 305 280 306 281 307 282 winElement.find('[name="alarmDate"],[name="alarmTime"]').attr("disabled","disabled"); … … 371 346 372 347 } 348 349 350 351 352 /** 353 * constrói as duas possíveis janela de alerta, utilizando o mesmo template 354 */ 355 356 $('#main_table').ready(function(){ 357 var toIterate = [ 358 { 359 attrDeadline: 'doneDeadline', 360 caption: {singular:'Você tem uma mensagem concluindo hoje:', plural:"Você tem %1 mensagens concluindo hoje:"}, 361 onOk: function(event){ 362 if($(event.target).parents('.followupflag-alarm').find('[name="stopAlert"]').is(':checked')){ 363 $.cookie("fadeCompleted", (new Date).toString("dd/MM/yyyy"), { expires: 1 }); 364 } 365 }, 366 enable: ($.cookie("fadeCompleted") != (new Date).toString("dd/MM/yyyy")) 367 }, 368 { 369 attrDeadline: 'alarmDeadline', 370 caption: {singular:'Você tem uma mensagem sinalizada para hoje:', plural:'Você tem %1 mensagens sinalizadas para hoje:'}, 371 onOk: function(event){ 372 if($(event.target).parents('.followupflag-alarm').find('[name="stopAlert"]').is(':checked')){ 373 $.cookie("fadeAlarm", (new Date).toString("dd/MM/yyyy"), { expires: 1 }); 374 } 375 }, 376 enable: ($.cookie("fadeAlarm") != (new Date).toString("dd/MM/yyyy")) 377 } 378 ]; 379 380 while (it = toIterate.pop()){ 381 if (!it.enable) continue; 382 383 var alarmInRange = DataLayer.get('followupflagged', {filter: ['AND', ['>', it.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).toString('yyyy-MM-dd 00:00:00')], ['<', toIterate.attrDeadline, (new Date()).set({hour:0, minute:0, second:0}).addHours(24).toString('yyyy-MM-dd 00:00:00')]], criteria: {deepness: 1}}); 384 if(alarmInRange.length > 0){ 385 for(var i=0; i<alarmInRange.length; i++){ 386 var date = Date.parseExact(alarmInRange[i].alarmDeadline, 'yyyy-MM-dd hh:mm:ss'); 387 alarmInRange[i].alarmDeadline = date.toString('hh:mm'); 388 } 389 var caption = (alarmInRange.length == 1) ? 390 get_lang(it.caption.singular): 391 get_lang(it.caption.plural, alarmInRange.length); 392 393 var data = {alarmInRange : alarmInRange, caption: caption}; 394 var dialogText = DataLayer.render("../prototype/modules/mail/templates/followupflag_alarm_list.ejs", data); 395 396 /** 397 * A última dialog criada é a dialog mais ao alto 398 */ 399 var offsetHeight = $('.ZebraDialog.right-bottom:last').length ? 400 $(window).height() - $('.ZebraDialog.right-bottom:last').position().top : 0; 401 402 /** 403 * Se for a primeira, desloca para cima do rodapé do grid 404 * caso contrário desloca para um pouco acima da última dialog criada 405 */ 406 offsetHeight = !offsetHeight ? 35 : offsetHeight + 20 ; 407 var dialog = new $.Zebra_Dialog(dialogText, { 408 'buttons': ['Ok'], 409 'modal': false, 410 'vcenter_short_message': false, 411 'position': ['right - 20', 'bottom - ' + offsetHeight.toString() ], 412 'custom_class': 'right-bottom followupflag-alarm', 413 }).dialog; 414 415 $(".ZebraDialog.followupflag-alarm .ZebraDialog_Button0").click(it.onOk); 416 417 $(".ZebraDialog.followupflag-alarm .display-options .more").click(function(event) { 418 $(event.target).parents('.followupflag-alarm').find('.message-list').css('height', 'auto'); 419 }); 420 421 } 422 } 423 }); -
trunk/prototype/modules/mail/templates/followupflag_configure.ejs
r5575 r5576 45 45 <legend><%= get_lang("Basic")%></legend> 46 46 <div class="followupflag-configure"> 47 <input type="hidden" class="id-followup" value="<%= (data.messages[0].followupflagged) ? data.messages[0].followupflagged.id : '' %>" name="followupFlag">47 <input type="hidden" class="id-followup" value="<%=(followupflagged.id)?followupflagged.id:''%>" name="followupflagId"> 48 48 <label class="label-name"><%= get_lang("Flag as")%>:</label> 49 49 <select name="name">
Note: See TracChangeset
for help on using the changeset viewer.