diff --git a/modoboa/extensions/admin/static/admin/js/admin.js b/modoboa/extensions/admin/static/admin/js/admin.js index 6888f565f..e57bdf823 100644 --- a/modoboa/extensions/admin/static/admin/js/admin.js +++ b/modoboa/extensions/admin/static/admin/js/admin.js @@ -191,6 +191,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); }, @@ -243,10 +244,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", "") @@ -279,11 +299,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"); @@ -292,7 +312,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")); @@ -335,7 +355,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 40cc67cde..a4b3487d3 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 0b826cbe8..1467343b4 100644 --- a/modoboa/static/js/autocompleter.js +++ b/modoboa/static/js/autocompleter.js @@ -148,7 +148,7 @@ evt.preventDefault(); this.activate_next(); break; - }; + } }, keyup: function(evt) {