mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
fix: ticket #53 : automatic folder refresh
This commit is contained in:
@@ -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 = []
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
@@ -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"):
|
||||
|
||||
Reference in New Issue
Block a user