Fixed broken password form.

see #204
This commit is contained in:
Antoine Nguyen
2012-04-03 12:51:08 +02:00
parent 28e8e736ee
commit d84058d5dc
4 changed files with 41 additions and 29 deletions
+25 -3
View File
@@ -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
});
});
}
-17
View File
@@ -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>
+2 -1
View File
@@ -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
View File
@@ -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'))