mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-19 05:58:34 +02:00
wip: #65, adding some information messages everywhere.
This commit is contained in:
+3
-3
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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");
|
||||
},
|
||||
|
||||
@@ -11,4 +11,5 @@ window.addEvent('domready', function() {
|
||||
}
|
||||
}, $('accordion'));
|
||||
|
||||
saveparams("uparams_form", gettext("Preferences saved"));
|
||||
});
|
||||
|
||||
@@ -17,5 +17,5 @@ window.addEvent('domready', function() {
|
||||
toggler.setStyle('color', '#222');
|
||||
}
|
||||
}, $('accordion'));
|
||||
|
||||
saveparams("params_form", gettext("Parameters saved"));
|
||||
});
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user