diff --git a/extensions/webmail/lib.py b/extensions/webmail/lib.py index 6d1555730..9bc27f8fd 100644 --- a/extensions/webmail/lib.py +++ b/extensions/webmail/lib.py @@ -403,7 +403,8 @@ class ImapListing(EmailListing): if old == "": return c return "OR (%s) (%s)" % (old, c) - + if criterion == "both": + criterion = "from_addr, subject" criterions = "" for c in criterion.split(','): if c == "from_addr": diff --git a/extensions/webmail/templates/index.html b/extensions/webmail/templates/index.html index 4fb3338ac..9b6714a6a 100644 --- a/extensions/webmail/templates/index.html +++ b/extensions/webmail/templates/index.html @@ -206,7 +206,7 @@ "border" : "1px solid #333", "background" : "white", "z-index" : 3}) - .setStyles(item.getPosition()) + .setPosition(item.getPosition()) .inject(document.body); block.set("html", "Moving " + selectedRows.length + " messages"); this.oldelement = this.element; diff --git a/static/js/common.js b/static/js/common.js index a19ae3a8c..13d7fd7cd 100644 --- a/static/js/common.js +++ b/static/js/common.js @@ -116,6 +116,10 @@ function HashWrapper(deflocation) { } }; + this.deleteParam = function(str) { + this.params.erase(str); + }; + this.updateparams = function(str) { if (str.charAt(0) == '?') { str = str.substring(1); @@ -305,9 +309,14 @@ searchbox_init = function() { $$("input[name=scriteria]:checked").each(function(obj) { criteria = obj.value; }); - var params = "pattern=" + $("searchfield").value - + "&criteria=" + criteria; - current_anchor.updateparams(params); + var pattern = $("searchfield").get("value"); + if (pattern != "") { + var params = "pattern=" + pattern + "&criteria=" + criteria; + current_anchor.updateparams(params); + } else { + current_anchor.deleteParam("pattern"); + current_anchor.deleteParam("criteria"); + } current_anchor.update(); }); $("searchfield").addEvent("click", function(event) { @@ -320,6 +329,14 @@ searchbox_init = function() { } }); $("searchbox").setStyle("float", "left"); + var uri = new URI(location.href); + var params = uri.get("fragment").parseQueryString(); + if ($defined(params.pattern)) { + $("searchfield").set("value", params.pattern); + } + if ($defined(params.criteria)) { + $("crit_" + params.criteria).checked = true; + } } // The following code prevents a bug under IE7 because fullpath is diff --git a/static/js/mootools-more.js b/static/js/mootools-more.js index bf8611d2e..dd7b1597a 100644 --- a/static/js/mootools-more.js +++ b/static/js/mootools-more.js @@ -1,7 +1,19 @@ MooTools.More={'version':'1.2.4.4','build':'6f6057dc645fdb7547689183b2311063bd653ddf'};(function(){var global=this;var log=function(){if(global.console&&console.log){try{console.log.apply(console,arguments);}catch(e){console.log(Array.slice(arguments));}}else{Log.logged.push(arguments);} return this;};var disabled=function(){this.logged.push(arguments);return this;};this.Log=new Class({logged:[],log:disabled,resetLog:function(){this.logged.empty();return this;},enableLog:function(){this.log=log;this.logged.each(function(args){this.log.apply(this,args);},this);return this.resetLog();},disableLog:function(){this.log=disabled;return this;}});Log.extend(new Log).enableLog();Log.logger=function(){return this.log.apply(this,arguments);};})();Class.refactor=function(original,refactors){$each(refactors,function(item,name){var origin=original.prototype[name];if(origin&&(origin=origin._origin)&&typeof item=='function')original.implement(name,function(){var old=this.previous;this.previous=origin;var value=item.apply(this,arguments);this.previous=old;return value;});else original.implement(name,item);});return original;};Class.Occlude=new Class({occlude:function(property,element){element=document.id(element||this.element);var instance=element.retrieve(property||this.property);if(instance&&!$defined(this.occluded)) -return this.occluded=instance;this.occluded=false;element.store(property||this.property,this);return this.occluded;}});(function(addEvent,removeEvent){var match=/(.*?):relay\(([^)]+)\)$/,combinators=/[+>~\s]/,splitType=function(type){var bits=type.match(match);return!bits?{event:type}:{event:bits[1],selector:bits[2]};},check=function(e,selector){var t=e.target;if(combinators.test(selector=selector.trim())){var els=this.getElements(selector);for(var i=els.length;i--;){var el=els[i];if(t==el||el.hasChild(t))return el;}}else{for(;t&&t!=this;t=t.parentNode){if(Element.match(t,selector))return document.id(t);}} +return this.occluded=instance;this.occluded=false;element.store(property||this.property,this);return this.occluded;}});String.implement({parseQueryString:function(){var vars=this.split(/[&;]/),res={};if(vars.length)vars.each(function(val){var index=val.indexOf('='),keys=index<0?['']:val.substr(0,index).match(/[^\]\[]+/g),value=decodeURIComponent(val.substr(index+1)),obj=res;keys.each(function(key,i){var current=obj[key];if(i0)result.pop();else if(dir!='.')result.push(dir);});return result.join('/')+'/';},combine:function(bits){return bits.value||bits.scheme+'://'+ +(bits.user?bits.user+(bits.password?':'+bits.password:'')+'@':'')+ +(bits.host||'')+(bits.port&&bits.port!=this.schemes[bits.scheme]?':'+bits.port:'')+ +(bits.directory||'/')+(bits.file||'')+ +(bits.query?'?'+bits.query:'')+ +(bits.fragment?'#'+bits.fragment:'');},set:function(part,value,base){if(part=='value'){var scheme=value.match(URI.regs.scheme);if(scheme)scheme=scheme[1];if(scheme&&!$defined(this.schemes[scheme.toLowerCase()]))this.parsed={scheme:scheme,value:value};else this.parsed=this.parse(value,(base||this).parsed)||(scheme?{scheme:scheme,value:value}:{value:value});}else if(part=='data'){this.setData(value);}else{this.parsed[part]=value;} +return this;},get:function(part,base){switch(part){case'value':return this.combine(this.parsed,base?base.parsed:false);case'data':return this.getData();} +return this.parsed[part]||'';},go:function(){document.location.href=this.toString();},toURI:function(){return this;},getData:function(key,part){var qs=this.get(part||'query');if(!$chk(qs))return key?null:{};var obj=qs.parseQueryString();return key?obj[key]:obj;},setData:function(values,merge,part){if(typeof values=='string'){data=this.getData();data[arguments[0]]=arguments[1];values=data;}else if(merge){values=$merge(this.getData(),values);} +return this.set(part||'query',Hash.toQueryString(values));},clearData:function(part){return this.set(part||'query','');}});URI.prototype.toString=URI.prototype.valueOf=function(){return this.get('value');};URI.regs={endSlash:/\/$/,scheme:/^(\w+):/,directoryDot:/\.\/|\.$/};URI.base=new URI(document.getElements('base[href]',true).getLast(),{base:document.location});String.implement({toURI:function(options){return new URI(this,options);}});(function(addEvent,removeEvent){var match=/(.*?):relay\(([^)]+)\)$/,combinators=/[+>~\s]/,splitType=function(type){var bits=type.match(match);return!bits?{event:type}:{event:bits[1],selector:bits[2]};},check=function(e,selector){var t=e.target;if(combinators.test(selector=selector.trim())){var els=this.getElements(selector);for(var i=els.length;i--;){var el=els[i];if(t==el||el.hasChild(t))return el;}}else{for(;t&&t!=this;t=t.parentNode){if(Element.match(t,selector))return document.id(t);}} return null;};Element.implement({addEvent:function(type,fn){var splitted=splitType(type);if(splitted.selector){var monitors=this.retrieve('$moo:delegateMonitors',{});if(!monitors[type]){var monitor=function(e){var el=check.call(this,e,splitted.selector);if(el)this.fireEvent(type,[e,el],0,el);}.bind(this);monitors[type]=monitor;addEvent.call(this,splitted.event,monitor);}} return addEvent.apply(this,arguments);},removeEvent:function(type,fn){var splitted=splitType(type);if(splitted.selector){var events=this.retrieve('events');if(!events||!events[type]||(fn&&!events[type].keys.contains(fn)))return this;if(fn)removeEvent.apply(this,[type,fn]);else removeEvent.apply(this,type);events=this.retrieve('events');if(events&&events[type]&&events[type].keys.length==0){var monitors=this.retrieve('$moo:delegateMonitors',{});removeEvent.apply(this,[splitted.event,monitors[type]]);delete monitors[type];} return this;} diff --git a/templates/common/email_searchbar.html b/templates/common/email_searchbar.html index 99b7e9f9f..2f2fd8e01 100644 --- a/templates/common/email_searchbar.html +++ b/templates/common/email_searchbar.html @@ -3,8 +3,8 @@
- {% trans "From address" %}
- {% trans "Subject" %}
- {% trans "Both" %}
+ {% trans "From address" %}
+ {% trans "Subject" %}
+ {% trans "Both" %}