mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-19 05:58:34 +02:00
fix: #63, keep track of search parameters.
This commit is contained in:
@@ -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":
|
||||
|
||||
@@ -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;
|
||||
|
||||
+20
-3
@@ -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
|
||||
|
||||
@@ -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(i<keys.length-1)
|
||||
obj=obj[key]=current||{};else if($type(current)=='array')
|
||||
current.push(value);else
|
||||
obj[key]=$defined(current)?[current,value]:value;});});return res;},cleanQueryString:function(method){return this.split('&').filter(function(val){var index=val.indexOf('='),key=index<0?'':val.substr(0,index),value=val.substr(index+1);return method?method.run([key,value]):$chk(value);}).join('&');}});var URI=new Class({Implements:Options,options:{},regex:/^(?:(\w+):)?(?:\/\/(?:(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)?(\.\.?$|(?:[^?#\/]*\/)*)([^?#]*)(?:\?([^#]*))?(?:#(.*))?/,parts:['scheme','user','password','host','port','directory','file','query','fragment'],schemes:{http:80,https:443,ftp:21,rtsp:554,mms:1755,file:0},initialize:function(uri,options){this.setOptions(options);var base=this.options.base||URI.base;if(!uri)uri=base;if(uri&&uri.parsed)this.parsed=$unlink(uri.parsed);else this.set('value',uri.href||uri.toString(),base?new URI(base):false);},parse:function(value,base){var bits=value.match(this.regex);if(!bits)return false;bits.shift();return this.merge(bits.associate(this.parts),base);},merge:function(bits,base){if((!bits||!bits.scheme)&&(!base||!base.scheme))return false;if(base){this.parts.every(function(part){if(bits[part])return false;bits[part]=base[part]||'';return true;});}
|
||||
bits.port=bits.port||this.schemes[bits.scheme.toLowerCase()];bits.directory=bits.directory?this.parseDirectory(bits.directory,base?base.directory:''):'/';return bits;},parseDirectory:function(directory,baseDirectory){directory=(directory.substr(0,1)=='/'?'':(baseDirectory||'/'))+directory;if(!directory.test(URI.regs.directoryDot))return directory;var result=[];directory.replace(URI.regs.endSlash,'').split('/').each(function(dir){if(dir=='..'&&result.length>0)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;}
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
<img src="/static/pics/search.png" id="searchopts" />
|
||||
<input type="text" name="searchfield" id="searchfield" value="{% trans "Search..." %}" />
|
||||
<div id="searchparams">
|
||||
<input type="radio" name="scriteria" value="from_addr" checked>{% trans "From address" %}<br/>
|
||||
<input type="radio" name="scriteria" value="subject">{% trans "Subject" %}<br/>
|
||||
<input type="radio" name="scriteria" value="from_addr,subject">{% trans "Both" %}<br/>
|
||||
<input type="radio" id="crit_from_addr" name="scriteria" value="from_addr" checked>{% trans "From address" %}<br/>
|
||||
<input type="radio" id="crit_subject" name="scriteria" value="subject">{% trans "Subject" %}<br/>
|
||||
<input type="radio" id="crit_both" name="scriteria" value="both">{% trans "Both" %}<br/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user