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) {