From d747b91aef60a67868e544e9a9c9b0c9945d05de Mon Sep 17 00:00:00 2001 From: Antoine Nguyen Date: Tue, 14 Oct 2014 12:59:04 +0200 Subject: [PATCH] End of fix :p see #610 --- modoboa/extensions/admin/forms/account.py | 2 +- .../extensions/admin/static/admin/js/admin.js | 30 +++++++++++++++---- .../admin/templates/admin/identities.html | 17 +++-------- modoboa/lib/permissions.py | 3 +- modoboa/static/js/autocompleter.js | 13 ++++---- 5 files changed, 36 insertions(+), 29 deletions(-) diff --git a/modoboa/extensions/admin/forms/account.py b/modoboa/extensions/admin/forms/account.py index 0e5e9f2f2..1aa23d606 100644 --- a/modoboa/extensions/admin/forms/account.py +++ b/modoboa/extensions/admin/forms/account.py @@ -6,7 +6,7 @@ from modoboa.lib.exceptions import PermDeniedException, Conflict, NotFound from modoboa.lib.permissions import get_account_roles from modoboa.lib.emailutils import split_mailbox from modoboa.lib.formutils import ( - DomainNameField, DynamicForm, TabForms, YesNoField + DomainNameField, DynamicForm, TabForms ) from modoboa.core.models import User from modoboa.extensions.admin.models import ( diff --git a/modoboa/extensions/admin/static/admin/js/admin.js b/modoboa/extensions/admin/static/admin/js/admin.js index 0ed43c300..54d7fd245 100644 --- a/modoboa/extensions/admin/static/admin/js/admin.js +++ b/modoboa/extensions/admin/static/admin/js/admin.js @@ -268,6 +268,7 @@ var Identities = function(options) { Identities.prototype = { initialize: function(options) { Admin.prototype.initialize.call(this, options); + this.domain_list = []; this.register_tag_handler("idt", this.generic_tag_handler); this.register_tag_handler("grp", this.grp_tag_handler); }, @@ -320,10 +321,29 @@ Identities.prototype = { return false; }, + /** + * Retrieve a list of domain from the server. + * + * @this Identities + * @return {Array} a list of domain names + */ + get_domain_list: function() { + if (!this.domain_list.length) { + $.ajax({ + url: this.options.domain_list_url, + dataType: "json", + async: false + }).done($.proxy(function(data) { + this.domain_list = data; + }, this)); + } + return this.domain_list; + }, + simpleuser_mode: function() { $("#id_username").autocompleter({ from_character: "@", - choices: get_domains_list + choices: $.proxy(this.get_domain_list, this) }); $("#id_email").addClass("disabled") .attr("readonly", "") @@ -356,11 +376,11 @@ Identities.prototype = { mailform_init: function() { $("#id_aliases").autocompleter({ from_character: "@", - choices: get_domains_list + choices: $.proxy(this.get_domain_list, this) }).dynamic_input(); $("#id_email").autocompleter({ from_character: "@", - choices: get_domains_list + choices: $.proxy(this.get_domain_list, this) }); if ($("#id_role").length) { $("#id_role").trigger("change"); @@ -369,7 +389,7 @@ Identities.prototype = { } $("#id_domains") .autocompleter({ - choices: get_domains_list + choices: $.proxy(this.get_domain_list, this) }) .dynamic_input(); activate_widget.call($("#id_quota_act")); @@ -412,7 +432,7 @@ Identities.prototype = { aliasform_cb: function() { $("#id_email").autocompleter({ from_character: "@", - choices: get_domains_list + choices: $.proxy(this.get_domain_list, this) }); $("#id_recipients").dynamic_input(); $(".submit").on('click', $.proxy(function(e) { diff --git a/modoboa/extensions/admin/templates/admin/identities.html b/modoboa/extensions/admin/templates/admin/identities.html index 632a6f31c..77d45299d 100644 --- a/modoboa/extensions/admin/templates/admin/identities.html +++ b/modoboa/extensions/admin/templates/admin/identities.html @@ -4,20 +4,11 @@ {{ block.super }} {% extra_static_content "identities" user %} diff --git a/modoboa/lib/permissions.py b/modoboa/lib/permissions.py index 8834a5cfe..84a2cdd5d 100644 --- a/modoboa/lib/permissions.py +++ b/modoboa/lib/permissions.py @@ -4,7 +4,6 @@ from django.utils.translation import ugettext as _ from django.db import IntegrityError from modoboa.core.models import ObjectAccess, User from modoboa.lib import events -from modoboa.lib.exceptions import ModoboaException def get_account_roles(user, account=None): @@ -19,7 +18,7 @@ def get_account_roles(user, account=None): """ std_roles = [("SimpleUsers", _("Simple user"))] if user.is_superuser: - std_roles += [("SuperAdmins", _("Super administrator"))] + std_roles += [("SuperAdmins", _("Super administrator"))] filters = events.raiseQueryEvent( 'UserCanSetRole', user, 'DomainAdmins', account ) diff --git a/modoboa/static/js/autocompleter.js b/modoboa/static/js/autocompleter.js index c726ba256..c5b63b62d 100644 --- a/modoboa/static/js/autocompleter.js +++ b/modoboa/static/js/autocompleter.js @@ -9,13 +9,10 @@ initialize: function(element, options) { this.$element = $(element); this.options = $.extend({}, $.fn.autocompleter.defaults, options); - this.choices = { - value: null - }; if (typeof this.options.choices === "function") { - this.options.choices(this.choices); + this.choices = this.options.choices(); } else { - this.choices.value = this.options.choices(); + this.choices = this.options.choices; } this.$menu = $('