fix: ticket #53 : automatic folder refresh

This commit is contained in:
tonio
2010-07-15 14:02:28 +02:00
parent 0398a614b0
commit 0bba9f68b6
4 changed files with 34 additions and 10 deletions
+2
View File
@@ -352,6 +352,8 @@ class ImapListing(EmailListing):
if kwargs.has_key("reset"):
self.mbc.criterions = []
EmailListing.__init__(self, **kwargs)
self.extravars["refreshrate"] = \
int(parameters.get_user(user, "webmail", "REFRESH_INTERVAL")) * 1000
def __parse_folders(self, folders):
result = []
+2
View File
@@ -32,6 +32,8 @@ def init():
deflt="no",
help=_("Use a secured connection to access SMTP server"))
parameters.register_user("webmail", "REFRESH_INTERVAL", type="int", deflt=300,
help=_("Automatic folder refresh rate (in seconds)"))
parameters.register_user("webmail", "TRASH_FOLDER", type="string", deflt="Trash",
help=_("Folder where deleted messages go"))
parameters.register_user("webmail", "SENT_FOLDER", type="string", deflt="Sent",
+16
View File
@@ -105,18 +105,34 @@
location.hash += event.target.get("href");
}
register_callback("forward", compose_callback);
var rtimer = null;
refreshFolder = function() {
var query = current_anchor.serialized.substring(1);
$clear(rtimer);
infobox.show('{% trans "Refreshing..." %}', "gray");
new Request.JSON({url: query, noCache : true, onSuccess: function(resp) {
callback = ($defined(resp.callback)) ? resp.callback : "default";
callbacks[callback](resp);
infobox.notice('{% trans "Done" %}');
infobox.hide(1);
}}).get();
}
loadFolder = function(event, obj) {
event.stop();
if (!$defined(obj)) {
obj = $(event.target);
}
console.log($defined(rtimer));
$clear(rtimer);
current_anchor.parse_string(gethref(obj), true).setparams(navparams);
current_anchor.update();
}
register_callback("folder", function(resp) {
wm_updatelisting(resp);
rtimer = refreshFolder.periodical({{ refreshrate }});
select($$("a[href=" + current_anchor.getbaseurl() + "]"));
$$("li[class*=clickable]").removeEvents();
$$("li[class*=clickable]").addEvent("click", function(evt) {
+14 -10
View File
@@ -90,6 +90,7 @@ class EmailListing:
self.folder = folder
self.elems_per_page = elems_per_page
self.navparams = navparams
self.extravars = {}
order = "order" in kwargs.keys() and kwargs["order"] or None
self.empty = "empty" in kwargs.keys() and kwargs["empty"] or False
if not self.empty:
@@ -125,16 +126,19 @@ class EmailListing:
else:
listing = self.fetch(request, page.id_start, page.id_stop)
elapsed = kwargs.has_key("start") and time.time() - kwargs["start"] or 0
return _render(request, self.tpl, {
"listing" : listing,
"elapsed" : elapsed,
"navbar" : self.render_navbar(page),
"selection" : self.folder,
"navparams" : self.navparams,
"deflocation" : self.deflocation,
"defcallback" : self.defcallback,
"reset_wm_url" : self.reset_wm_url
})
context = {
"listing" : listing,
"elapsed" : elapsed,
"navbar" : self.render_navbar(page),
"selection" : self.folder,
"navparams" : self.navparams,
"deflocation" : self.deflocation,
"defcallback" : self.defcallback,
"reset_wm_url" : self.reset_wm_url
}
for k, v in self.extravars.iteritems():
context[k] = v
return _render(request, self.tpl, context)
class Email(object):
def __init__(self, msg, mode="plain", links="0"):