From f94e442469deca30b39f3fa08aade83cbd0ede70 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Fri, 16 Dec 2011 13:38:59 -0500 Subject: [PATCH] Add more classes and options to HTML elements for better styleability --- program/js/app.js | 60 +++++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 41 insertions(+), 19 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index 22ff4c9..46326ce 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -228,7 +228,8 @@ this.enable_command('reply-list', this.env.list_post); if (this.env.action == 'show') { - this.http_request('pagenav', '_uid='+this.env.uid+'&_mbox='+urlencode(this.env.mailbox), + this.http_request('pagenav', '_uid='+this.env.uid+'&_mbox='+urlencode(this.env.mailbox) + + (this.env.search_request ? '&_search='+this.env.search_request : ''), this.display_message('', 'loading')); } @@ -906,7 +907,7 @@ if (!this.gui_objects.messageform) break; - if (!this.check_compose_input()) + if (!props.nocheck && !this.check_compose_input(command)) break; // Reset the auto-save timer @@ -930,8 +931,8 @@ case 'send-attachment': // Reset the auto-save timer self.clearTimeout(this.save_timer); - - this.upload_file(props) + + this.upload_file(props || this.gui_objects.uploadform); break; case 'insert-sig': @@ -2959,7 +2960,7 @@ }; // checks the input fields before sending a message - this.check_compose_input = function() + this.check_compose_input = function(cmd) { // check input fields var ed, input_to = $("[name='_to']"), @@ -2994,15 +2995,28 @@ // display localized warning for missing subject if (input_subject.val() == '') { - var subject = prompt(this.get_label('nosubjectwarning'), this.get_label('nosubject')); + var myprompt = $('<div class="prompt">').html('<div class="message">' + this.get_label('nosubjectwarning') + '</div>').appendTo(document.body); + var prompt_value = $('<input>').attr('type', 'text').attr('size', 30).appendTo(myprompt).val(this.get_label('nosubject')); - // user hit cancel, so don't send - if (!subject && subject !== '') { + var buttons = {}; + buttons[this.get_label('cancel')] = function(){ input_subject.focus(); - return false; - } - else - input_subject.val((subject ? subject : this.get_label('nosubject'))); + $(this).dialog('close'); + }; + buttons[this.get_label('sendmessage')] = function(){ + input_subject.val(prompt_value.val()); + $(this).dialog('close'); + ref.command(cmd, { nocheck:true }); // repeat command which triggered this + }; + + myprompt.dialog({ + modal: true, + resizable: false, + buttons: buttons, + close: function(event, ui) { $(this).remove() } + }); + prompt_value.select(); + return false; } // Apply spellcheck changes if spell checker is active @@ -3034,6 +3048,11 @@ this.display_spellcheck_controls(false); this.plain2html($('#'+props.id).val(), props.id); tinyMCE.execCommand('mceAddControl', false, props.id); + + if (this.env.default_font) + window.setTimeout(function() { + $(tinyMCE.get(props.id).getBody()).css('font-family', rcmail.env.default_font); + }, 500); } else { var thisMCE = tinyMCE.get(props.id), existingHtml; @@ -3338,9 +3357,9 @@ ts = frame_name.replace(/^rcmupload/, ''); if (this.env.loadingicon) - content = '<img src="'+this.env.loadingicon+'" alt="" />'+content; + content = '<img src="'+this.env.loadingicon+'" alt="" class="uploading" />'+content; if (this.env.cancelicon) - content = '<a title="'+this.get_label('cancel')+'" onclick="return rcmail.cancel_attachment_upload(\''+ts+'\', \''+frame_name+'\');" href="#cancelupload"><img src="'+this.env.cancelicon+'" alt="" /></a>'+content; + content = '<a title="'+this.get_label('cancel')+'" onclick="return rcmail.cancel_attachment_upload(\''+ts+'\', \''+frame_name+'\');" href="#cancelupload" class="cancelupload"><img src="'+this.env.cancelicon+'" alt="" /></a>'+content; this.add2attachment_list(ts, { name:'', html:content, complete:false }); // upload progress support @@ -3361,7 +3380,7 @@ if (!this.gui_objects.attachmentlist) return false; - var indicator, li = $('<li>').attr('id', name).html(att.html); + var indicator, li = $('<li>').attr('id', name).addClass(att.classname).html(att.html); // replace indicator's li if (upload_id && (indicator = document.getElementById(upload_id))) { @@ -4056,7 +4075,7 @@ this.delete_contacts = function() { var selection = this.contact_list.get_selection(), - undelete = this.env.address_sources[this.env.source].undelete; + undelete = this.env.source && this.env.address_sources[this.env.source].undelete; // exit if no mailbox specified or if selection is empty if (!(selection.length || this.env.cid) || (!undelete && !confirm(this.get_label('deletecontactconfirm')))) @@ -5605,7 +5624,7 @@ } if (mycount && text_obj.length) - text_obj.html(' ('+mycount+')'); + text_obj.html(this.env.unreadwrap.replace(/%[sd]/, mycount)); else if (text_obj.length) text_obj.remove(); @@ -5765,10 +5784,13 @@ }); }; - this.plain2html = function(plainText, id) + this.plain2html = function(plain, id) { var lock = this.set_busy(true, 'converting'); - $('#'+id).val(plainText ? '<pre>'+plainText+'</pre>' : ''); + + plain = plain.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); + $('#'+id).val(plain ? '<pre>'+plain+'</pre>' : ''); + this.set_busy(false, null, lock); }; -- Gitblit v1.9.1