X-Git-Url: https://dev.renevier.net/gitweb.cgi?p=syp.git;a=blobdiff_plain;f=js%2Fadmin.js;h=8101799156f8b7ec4c0fda46692df9459e08eb54;hp=d950aeba91275e5055d3f0dda8f87508d8e3ea6b;hb=3c74920cb66b4e6c47c7e8a0eaeed40ffb7e8544;hpb=b6cae6a5698c5d0655d921f78f0ccab470bf034c diff --git a/js/admin.js b/js/admin.js index d950aeb..8101799 100644 --- a/js/admin.js +++ b/js/admin.js @@ -176,6 +176,9 @@ var Admin = { }, closeEditor: function() { + if ($("#editor").css("display") == "none") { + return; + } if (this.currentFeature && this.currentFeature.layer) { this.selFeatureControl.unselect(this.currentFeature); } @@ -196,6 +199,8 @@ var Admin = { showEditor: function (feature) { $("#newfeature_button").hide(); + userMgr.closeAddUser(); + if (feature.fid) { $("#delete").show(); } else { @@ -263,6 +268,8 @@ var Admin = { }, addNewFeature: function () { + userMgr.closeAddUser(); + function cancel() { $(document).unbind("keydown"); Admin.reset() @@ -285,15 +292,18 @@ var Admin = { cancelCurrentFeature: function() { if (AjaxMgr.running) { - return; + return false; } var feature = this.currentFeature; - if (feature.fid) { - FeatureMgr.move (feature, this.currentFeatureLocation); - } else { - this.dataLayer.removeFeatures([feature]); + if (feature) { + if (feature.fid) { + FeatureMgr.move (feature, this.currentFeatureLocation); + } else { + this.dataLayer.removeFeatures([feature]); + } } this.closeEditor(); + return true; }, reloadLayer: function (layer) { @@ -469,13 +479,12 @@ var FeatureMgr = { case "error": switch (xml.documentElement.getAttribute("reason")) { case "unauthorized": - $("#login_area").show(); - $("#password").val(""); - $("#user").val(sypSettings.loggedUser).focus().select(); + pwdMgr.reset(); $("#cookie_warning").show(); this.reset(); Admin.cancelCurrentFeature(); Admin.reset(); + userMgr.uninit(); break; case "server": this.commError(SypStrings.ServerError); @@ -505,7 +514,7 @@ var FeatureMgr = { $("#image_file").focus(); break; default: - this.commError(SypStrings.UnknownError); + this.commError(SypStrings.UnconsistentError); $("title").focus(); break; } @@ -591,12 +600,12 @@ var FeatureMgr = { commSuccess: function (message) { $("#server_comm").text(message); - $("#server_comm").removeClass().addClass("success"); + $("#server_comm").removeClass("error success").addClass("success"); }, commError: function (message) { $("#server_comm").text(message); - $("#server_comm").removeClass().addClass("error"); + $("#server_comm").removeClass("error success").addClass("error"); } } @@ -666,6 +675,9 @@ var pwdMgr = { reset: function() { this.commError (""); + $("#login_area").show(); + $("#password").val(""); + $("#user").val(sypSettings.loggedUser).focus().select(); }, submit: function () { @@ -693,7 +705,6 @@ var pwdMgr = { }, ajaxReply: function (data) { - $("#pwd_throbber").css("visibility", "hidden"); // here, we need a timeout because onsend timeout sometimes has not been triggered yet window.setTimeout(function() { @@ -723,7 +734,7 @@ var pwdMgr = { this.commError(SypStrings.RequestError); break; default: - this.commError(SypStrings.UnknownError); + this.commError(SypStrings.UnconsistentError); break; } $("#login_error").show(); @@ -737,6 +748,10 @@ var pwdMgr = { user = $(xml).find("USER,user").text(); sypSettings.loggedUser = user; + if (sypSettings.loggedUser == "admin") { + userMgr.init(); + } + if (Admin.selFeatureControl) { Admin.selFeatureControl.destroy(); } @@ -771,6 +786,168 @@ var pwdMgr = { } } +var userMgr = { + _adduserDisplayed: false, + _deluserDisplayed: false, + + init: function() { + if (sypSettings.loggedUser != "admin") { + return; + } + + $("#add_user").show(); + + $("#add_user").click(function () { + userMgr.toggleAddUser(); + return false; + }); + $("#newuser_close").click(function () { + userMgr.closeAddUser() + }); + $("#newuser").submit(function() { + try { + userMgr.add(); + } catch(e) {} + return false; + }); + }, + + uninit: function() { + if (this._adduserDisplayed) { + this.closeAddUser(); + } + $("#add_user").unbind("click"); + $("#add_user").hide(); + $("#newuser_close").unbind("click"); + $("#newuser").unbind("submit"); + }, + + toggleAddUser: function() { + if (this._adduserDisplayed) { + this.closeAddUser(); + } else { + this.showAddUser(); + } + }, + + showAddUser: function() { + if (!Admin.cancelCurrentFeature()) { + return; + } + + $(document).unbind("keydown").keydown(function(e) { + if (e.keyCode == 27) { + userMgr.closeAddUser() + e.preventDefault(); + } + }); + + Admin.reset(); + $("#newuser_area").show(); + $("#newuser_name, #newuser_password, #newuser_password_confirm").val(""); + $("#newuser_name, #newuser_password, #newuser_password_confirm, #newuser_submit").removeAttr('disabled'); + $("#newuser_name").focus();; + this.commError(""); + + this._adduserDisplayed = true; + }, + + closeAddUser: function() { + $("#newuser_area").hide(); + $(document).unbind("keydown"); + this._adduserDisplayed = false; + }, + + add: function() { + var newuser_name = $("#newuser_name").val(); + if (!newuser_name) { + this.commError(SypStrings.newUserNonameError); + $("#newuser_name").focus(); + return; + } + + var newuser_pass = $("#newuser_password").val(); + var newuser_pass_confirm = $("#newuser_password_confirm").val(); + if (newuser_pass != newuser_pass_confirm) { + this.commError(SypStrings.newUserPasswordmatchError); + $("#newuser_password").focus().select(); + return; + } + + this.commError(""); + + AjaxMgr.add({ + form: $("#newuser"), + oncomplete: OpenLayers.Function.bind(this.ajaxReply, this), + onsend: function() { $("#newuser_throbber").css("visibility", "visible"); } + }); + }, + + ajaxReply: function (data) { + $("#newuser_throbber").css("visibility", "hidden"); + if (!data) { + this.commError(SypStrings.ServerError); + return; + } + + var xml = new OpenLayers.Format.XML().read(data); + switch (xml.documentElement.nodeName.toLowerCase()) { + case "error": + switch (xml.documentElement.getAttribute("reason")) { + case "unauthorized": + pwdMgr.reset(); + $("#cookie_warning").show(); + Admin.reset(); + this.uninit(); + break; + case "server": + this.commError(SypStrings.ServerError); + $("#newuser_name").focus().select(); + break; + case "request": + this.commError(SypStrings.RequestError); + $("#newuser_name").focus().select(); + break; + case "newuser_exists": + this.commError(SypStrings.newUserExistsError); + $("#newuser_name").focus().select(); + break; + default: + this.commError(SypStrings.UnconsistentError); + $("#newuser_name").focus().select(); + break; + } + break; + case "success": + switch (xml.documentElement.getAttribute("request")) { + case "newuser": + this.commSuccess(SypStrings.newUserSuccess); + $("#newuser_name, #newuser_password, #newuser_password_confirm, #newuser_submit").attr('disabled', 'disabled'); + break; + default: + this.commError(SypStrings.UnconsistentError); + $("newuser_name").focus().select(); + break; + } + break; + default: + this.commError(SypStrings.UnconsistentError); + $("newuser_name").focus().select(); + break; + } + }, + + commSuccess: function (message) { + $("#newuser_comm").text(message); + $("#newuser_comm").removeClass("error success").addClass("success"); + }, + + commError: function (message) { + $("#newuser_comm").text(message); + $("#newuser_comm").removeClass("error success").addClass("error"); + } +} + $(window).load(function () { // if using .ready, ie triggers an error when trying to access // document.namespaces @@ -803,5 +980,6 @@ $(window).load(function () { $("#image_file").parent().show(); }); + userMgr.init(); Admin.init(); });