wip: #65, adding some information messages everywhere.

This commit is contained in:
tonio
2010-07-22 17:16:01 +02:00
parent e066543d5b
commit 499d8e9d16
11 changed files with 74 additions and 44 deletions
+3 -3
View File
@@ -15,7 +15,7 @@ from modoboa import admin, userprefs
from modoboa.admin.models import Domain, Mailbox, Alias
from forms import MailboxForm, DomainForm, AliasForm, PermissionForm
from modoboa.lib.authbackends import crypt_password
from modoboa.lib import _render, _ctx_ok, _ctx_ko
from modoboa.lib import _render, _ctx_ok, _ctx_ko, getctx
from modoboa.lib import events, parameters
from modoboa.lib.models import Parameter
import string
@@ -440,5 +440,5 @@ def saveparameters(request):
continue
app, name = pname.split('.')
parameters.save_admin(app, name, v)
request.user.message_set.create(message=_("Configuration saved."))
return HttpResponseRedirect(reverse(admin.views.viewparameters))
ctx = getctx("ok")
return HttpResponse(simplejson.dumps(ctx), mimetype="application/json")
@@ -153,7 +153,6 @@ textarea {
background-color: #eee;
width: 80%;
height: 30px;
font-size: medium;
}
textarea:hover {
+17 -16
View File
@@ -25,14 +25,6 @@
}
$$("a[name=loadfolder]").addEvent("click", foldercallback);
$$("a[name=compose]").addEvent("click", loadCompose);
$$("a[name=empty]").addEvent("click", empty);
}
empty = function(event) {
event.stop();
new Request.JSON({url : event.target.get("href"), onSuccess : function(resp) {
wm_updatelisting(resp);
}}).get();
}
select = function(obj) {
@@ -232,13 +224,25 @@
msgset.include(item.get("id"));
});
{% url extensions.webmail.views.move as moveurl %}
new Request.JSON({url: "{{ moveurl }}",
onSuccess: get_callback("folder")}
).get({msgset : msgset.join(), to : dest});
simple_request("{{ moveurl }}", {msgset : msgset.join(), to : dest});
}
});
};
simple_request = function(url, params) {
infobox.show(gettext("Waiting..."), {
profile: "gray",
spinner: true
});
new Request.JSON({url : url,
onSuccess : function(response) {
get_callback("folder")(response);
infobox.notice(gettext("Done"));
infobox.hide(1);
}
}).get(params);
}
buildmarkrequest = function(evt) {
evt.stop();
if (!selectedRows.length) {
@@ -248,16 +252,13 @@
selectedRows.each(function(item, index) {
ids.include(item.get("id"));
});
new Request.JSON({url : evt.target.get("href"),
onSuccess : get_callback("folder")}).get({ids : ids.join()});
simple_request(evt.target.get("href"), {ids : ids.join()});
}
$$("a[name=mark-read]").addEvent("click", buildmarkrequest);
$$("a[name=mark-unread]").addEvent("click", buildmarkrequest);
$$("a[name=fdaction]").addEvent("click", function(evt) {
new Request.JSON({url : evt.target.get("href"),
onSuccess : get_callback("folder")
}).get();
simple_request(evt.target.get("href"), {});
evt.stop();
});
+7 -6
View File
@@ -83,15 +83,16 @@ def listing_menu(selection, folder, user):
"label" : _("Compress folder"),
"img" : "/static/pics/compress.png",
"url" : "compact/%s/" % folder},
{"name" : "fdaction",
"label" : _("Empty folder"),
"img" : "/static/pics/clear.png",
"url" : folder == parameters.get_user(user, "webmail",
"TRASH_FOLDER") \
and reverse(webmail.views.empty, args=[folder]) or ""}
]
}
]
if folder == parameters.get_user(user, "webmail", "TRASH_FOLDER"):
entries[2]["menu"] += [
{"name" : "fdaction",
"label" : _("Empty folder"),
"img" : "/static/pics/clear.png",
"url" : reverse(webmail.views.empty, args=[folder])}
]
menu = render_to_string("common/menu.html",
{"selection" : selection, "entries" : entries,
"user" : user})
+19 -1
View File
@@ -33,7 +33,10 @@ check_anchor = function() {
} else {
query = current_anchor.serialized.substring(1);
}
infobox.show(gettext("Loading..."), "gray");
infobox.show(gettext("Loading..."), {
profile: "gray",
spinner: true
});
new Request.JSON({url: query, noCache : true, onSuccess: function(resp) {
callback = ($defined(resp.callback)) ? resp.callback : "default";
callbacks[callback](resp);
@@ -349,3 +352,18 @@ gethref = function(obj) {
return url.replace(baseurl, "");
}
saveparams = function(id, message) {
$$("input[name=update]").addEvent("click", function(evt) {
evt.stop();
$(id).set("send", {
onSuccess: function(response) {
var decode = JSON.decode(response);
if (decode.status == "ok") {
infobox.notice(message);
infobox.hide(1);
}
}
}).send();
});
}
+20 -12
View File
@@ -56,40 +56,48 @@ var InfoBox = new Class({
},
notice: function(message) {
this.setProfile("green");
this.setMessage(message);
this.show(message, {
profile: "green"
});
},
error: function(message) {
this.setProfile("red");
this.setMessage(message);
this.show(message, {
profile: "red"
});
},
warning: function(message) {
this.setProfile("yellow");
this.setMessage(message);
this.show(message, {
profile: "yellow"
});
},
show: function(message, prof, delay) {
show: function(message, arguments) {
if ($defined(this.start)) {
if ($time() - this.start > this.delay) {
$clear(this.showtimer);
delete(this.start);
delete(this.delay);
} else {
this.showtimer = this.show.delay(100, this, [message, prof]);
this.showtimer = this.show.delay(100, this, [message, arguments]);
return;
}
}
if ($defined(message)) {
this.setMessage(message);
}
if ($defined(prof)) {
this.setProfile(prof);
if ($defined(arguments.profile)) {
this.setProfile(arguments.profile);
}
if ($defined(delay)) {
if ($defined(arguments.delay)) {
this.start = $time();
this.delay = delay * 1000;
this.delay = arguments.delay * 1000;
}
if ($defined(arguments.spinner) && arguments.spinner) {
this.spinner.setStyle("display", "block");
} else {
this.spinner.setStyle("display", "none");
}
this.box.setStyle("display", "block");
},
+1
View File
@@ -11,4 +11,5 @@ window.addEvent('domready', function() {
}
}, $('accordion'));
saveparams("uparams_form", gettext("Preferences saved"));
});
+1 -1
View File
@@ -17,5 +17,5 @@ window.addEvent('domready', function() {
toggler.setStyle('color', '#222');
}
}, $('accordion'));
saveparams("params_form", gettext("Parameters saved"));
});
+1 -1
View File
@@ -5,7 +5,7 @@
{% endblock %}
{% block setcontent %}
{% url admin.views.saveparameters as action %}
<form method="POST" action="{{ action }}">
<form method="POST" action="{{ action }}" id="params_form">
{% include "common/parameters.html" %}
</form>
{% endblock %}
+2 -1
View File
@@ -7,7 +7,8 @@
{% block middletitle %}{% trans "Preferences" %}{% endblock %}
{% block menu %}{% uprefs_menu user %}{% endblock %}
{% block content %}
<form method="POST" action="{% url userprefs.views.savepreferences %}">
<form method="POST" action="{% url userprefs.views.savepreferences %}"
id="uparams_form">
{% include "common/parameters.html" %}
</form>
{% endblock %}
+3 -2
View File
@@ -8,7 +8,7 @@ from django.contrib.auth.decorators \
import login_required
from django.utils import simplejson
from django.utils.translation import ugettext as _
from modoboa.lib import _render, _ctx_ok, _ctx_ko, parameters
from modoboa.lib import _render, _ctx_ok, _ctx_ko, getctx, parameters
from modoboa.lib.authbackends import crypt_password
from forms import ChangePasswordForm
from modoboa.admin.models import Mailbox
@@ -77,7 +77,8 @@ def savepreferences(request):
app, name = pname.split('.')
parameters.save_user(request.user, app, name, v)
return HttpResponseRedirect(reverse(preferences))
ctx = getctx("ok")
return HttpResponse(simplejson.dumps(ctx), mimetype="application/json")
@login_required
def confirm(request):