fix: #63, keep track of search parameters.

This commit is contained in:
tonio
2010-07-19 16:00:06 +02:00
parent f7807c5436
commit e066543d5b
5 changed files with 39 additions and 9 deletions
+2 -1
View File
@@ -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":
+1 -1
View File
@@ -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
View File
@@ -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
+13 -1
View File
@@ -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 -3
View File
@@ -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>