mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
+25
-3
@@ -88,7 +88,7 @@ if (!Object.keys) {
|
||||
*/
|
||||
function simple_ajax_form_post(e, options) {
|
||||
e.preventDefault();
|
||||
var $form = $("form");
|
||||
var $form = (options.formid != undefined) ? $("#" + options.formid) : $("form");
|
||||
var defaults = {reload_on_success: true, reload_mode: 'full'};
|
||||
var opts = $.extend({}, defaults, options);
|
||||
var args = $form.serialize();
|
||||
@@ -96,7 +96,6 @@ function simple_ajax_form_post(e, options) {
|
||||
if (options.extradata != undefined) {
|
||||
args += "&" + options.extradata;
|
||||
}
|
||||
|
||||
$.post($form.attr("action"), args, function(data) {
|
||||
if (data.status == "ok") {
|
||||
if (opts.success_cb != undefined) {
|
||||
@@ -163,6 +162,18 @@ function parse_qs(raw) {
|
||||
return res;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return the target associated to an event object.
|
||||
*/
|
||||
function get_target(e, tag) {
|
||||
var $target = $(e.target);
|
||||
|
||||
if (tag === undefined || $target.is(tag)) {
|
||||
return $target;
|
||||
}
|
||||
return $target.parent();
|
||||
}
|
||||
|
||||
/*
|
||||
* Simple wrapper around Request.JSON. We just ensure that
|
||||
* redirections are correctly catched. (on session timeout for
|
||||
@@ -179,4 +190,15 @@ function parse_qs(raw) {
|
||||
// $(document.body).set("html", xhr.responseText);
|
||||
// }
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
|
||||
/*
|
||||
* 'Change password' form initialization.
|
||||
*/
|
||||
function chpasswordform_cb() {
|
||||
$(".submit").one('click', function(e) {
|
||||
simple_ajax_form_post(e, {
|
||||
error_cb: chpasswordform_cb
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{% load i18n %}
|
||||
<div class="modal-header">
|
||||
<a class="close" data-dismiss="modal">x</a>
|
||||
<h3>{% trans "Change password" %}</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="error">{% if error %}{{ error }}{% endif %}</div>
|
||||
<form class="form-horizontal"
|
||||
action="{% url userprefs.views.changepassword %}"
|
||||
method="POST" id="chpwdform" name="chpwdform">
|
||||
{% include "common/genericform.html" %}
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" class="btn btn-primary submit">{% trans "Update" %}</a>
|
||||
<a class="btn" data-dismiss="modal">{% trans "Close" %}</a>
|
||||
</div>
|
||||
@@ -37,7 +37,8 @@ def user_menu(user):
|
||||
"url" : reverse("modoboa.userprefs.views.changepassword"),
|
||||
"img" : "icon-edit",
|
||||
"label" : _("Change password"),
|
||||
"modal" : True},
|
||||
"modal" : True,
|
||||
"modalcb" : "chpasswordform_cb"},
|
||||
{"name" : "preferences",
|
||||
"img" : "icon-list",
|
||||
"label" : _("Preferences"),
|
||||
|
||||
+14
-8
@@ -1,3 +1,4 @@
|
||||
# coding: utf-8
|
||||
import copy
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import HttpResponseRedirect
|
||||
@@ -18,12 +19,20 @@ def index(request):
|
||||
return HttpResponseRedirect(reverse(preferences))
|
||||
|
||||
@login_required
|
||||
def changepassword(request, tplname="userprefs/chpassword.html"):
|
||||
def changepassword(request, tplname="common/generic_modal_form.html"):
|
||||
res = events.raiseQueryEvent("PasswordChange", request.user)
|
||||
if True in res:
|
||||
ctx = dict(error=_("Password change is disabled for this user"))
|
||||
return _render_error(request, errortpl="error_simple", user_context=ctx)
|
||||
|
||||
ctx = dict(
|
||||
title=_("Change password"),
|
||||
formid="chpasswordform",
|
||||
action=reverse(changepassword),
|
||||
action_label=_("Update"),
|
||||
action_classes="submit",
|
||||
)
|
||||
|
||||
error = None
|
||||
if request.method == "POST":
|
||||
form = ChangePasswordForm(request.user, request.POST)
|
||||
@@ -38,14 +47,11 @@ def changepassword(request, tplname="userprefs/chpassword.html"):
|
||||
request.user.save()
|
||||
if error is None:
|
||||
return ajax_response(request, respmsg=_("Password changed"))
|
||||
ctx.update(form=form, error=error)
|
||||
return ajax_response(request, status="ko", template=tplname, **ctx)
|
||||
|
||||
return ajax_response(request, status="ko", template=tplname,
|
||||
form=form, error=error)
|
||||
|
||||
form = ChangePasswordForm(request.user)
|
||||
return _render(request, 'userprefs/chpassword.html', {
|
||||
"form" : form
|
||||
})
|
||||
ctx.update(form=ChangePasswordForm(request.user))
|
||||
return _render(request, tplname, ctx)
|
||||
|
||||
@login_required
|
||||
@user_passes_test(lambda u: u.belongs_to_group('SimpleUsers'))
|
||||
|
||||
Reference in New Issue
Block a user