[Mapbender-commits] r5749 - trunk/mapbender/http/javascripts
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Thu Mar 11 09:49:22 EST 2010
Author: christoph
Date: 2010-03-11 09:49:21 -0500 (Thu, 11 Mar 2010)
New Revision: 5749
Modified:
trunk/mapbender/http/javascripts/mod_savewmc.js
Log:
refactored
Modified: trunk/mapbender/http/javascripts/mod_savewmc.js
===================================================================
--- trunk/mapbender/http/javascripts/mod_savewmc.js 2010-03-11 14:32:47 UTC (rev 5748)
+++ trunk/mapbender/http/javascripts/mod_savewmc.js 2010-03-11 14:49:21 UTC (rev 5749)
@@ -67,263 +67,296 @@
// button behaviour
//
var $this = $(this);
-$this.click(function () {
- mod_savewmc();
-}).mouseover(function () {
- if (options.src) {
- this.src = options.src.replace(/_off/, "_over");
- }
-}).mouseout(function () {
- if (options.src) {
- this.src = options.src;
- }
-});
+var SaveWmcApi = function () {
+ var that = this;
-// not used at the moment (?)
-var setOnUnload = function () {
- $(window).unload(function () {
- mod_savewmc_session();
- });
-};
+ this.extensionData = {};
+
+ this.events = {
+ saved: new Mapbender.Event()
+ };
+
+ this.setExtensionData = function (key, value) {
+ if (typeof key === "string") {
+ this.extensionData[key] = value;
+ }
+ return this;
+ };
+
+ this.save = function (obj) {
+ if (typeof obj !== "object") {
+ new Mapbender.Exception("Invalid parameters.");
+ return this;
+ }
+ if (obj.session === true) {
+ sendMapDataToServer("session", 1, function(result, status) {});
+ return this;
+ }
+ if (typeof obj.attributes === "object" && typeof obj.callback === "function") {
+ sendMapDataToServer(obj.attributes, 0, obj.callback);
+ }
+ return this;
+ };
-var getExistingWmcData = function (callback) {
- // get WMC data from server
- var req = new Mapbender.Ajax.Request({
- url: "../php/mod_loadwmc_server.php",
- method: "getWmc",
- callback: function(obj, result, message){
- if (!result) {
- new Mb_exception(message);
- return;
+ var sendMapDataToServer = function (attributes, storeInSession, callbackFunction) {
+ var extensionDataString = "";
+ if (that.extensionData !== null) {
+ extensionDataString = $.toJSON(that.extensionData);
+ }
+
+ if (storeInSession) {
+ $.ajaxSetup({async:false});
+ }
+
+ //
+ // WORKAROUND....cannot serialize map object,
+ // as it contains a jQuery collection, which is
+ // cyclic.
+ // Removing the $target from the map object before
+ // serialization, and re-appending it afterwards
+ //
+ var $target = [];
+ for (var i = 0; i < mb_mapObj.length; i++) {
+ $target.push(mb_mapObj[i].$target);
+ delete mb_mapObj[i].$target;
+ }
+
+ // actual save request
+ var req = new Mapbender.Ajax.Request({
+ url: "../php/mod_savewmc_server.php",
+ method: "saveWMC",
+ parameters : {
+ saveInSession:storeInSession,
+ attributes:attributes,
+ overwrite: overwrite,
+ extensionData:extensionDataString,
+ mapObject:$.toJSON(mb_mapObj)
+ },
+ callback: function(result, status, message) {
+ callbackFunction(result, status, message);
+ that.events.saved.trigger();
}
- if (typeof callback === "function") {
- callback(obj.wmc);
- }
+ });
+ req.send();
+
+ //
+ // reversal of above WORKAROUND
+ //
+ for (var i = 0; i < mb_mapObj.length; i++) {
+ mb_mapObj[i].$target = $target[i];
}
- });
- req.send();
-};
+ };
-var createSelectBoxForExistingWmcs = function (obj) {
- (function () {
- $select = $("#" + options.id + "_wmctype").empty();
- var select = "<option value=''>" + translatedI18nObj.labelNewWmc + "</option>";
- if (typeof obj === "object" && obj.length) {
- for (var i = 0; i < obj.length; i++) {
- var wmc = obj[i];
- if (wmc.disabled) {
- continue;
+ var localize = function () {
+ //
+ // buttons
+ //
+ $("#" + options.id + "_saveWMCForm").dialog('option', 'buttons', getButtons());
+
+ // title
+ $("#" + options.id + "_saveWMCForm").dialog('option', 'title', translatedI18nObj.title);
+
+ //
+ // form
+ //
+ var $form = $("#" + options.id + "_saveWMCForm > form > fieldset");
+ $form.children("label").each(function () {
+ var forId = $(this).attr("for");
+ switch (forId) {
+ case options.id + "_wmctype" :
+ $(this).text(translatedI18nObj.labelNewOrOverwrite).next()
+ .children().eq(0).text(translatedI18nObj.labelNewWmc);
+ break;
+ case options.id + ":wmcname" :
+ $(this).text(translatedI18nObj.labelName);
+ break;
+ case options.id + "_wmcabstract" :
+ $(this).text(translatedI18nObj.labelAbstract);
+ break;
+ case options.id + "_wmckeywords" :
+ $(this).text(translatedI18nObj.labelKeywords);
+ break;
+ case options.id + "_wmckeywords" :
+ $(this).text(translatedI18nObj.labelKeywords);
+ break;
+ }
+ });
+ var $legend = $form.next().children("legend");
+ $legend.text(translatedI18nObj.labelCategories);
+ };
+
+ var getExistingWmcData = function (callback) {
+ // get WMC data from server
+ var req = new Mapbender.Ajax.Request({
+ url: "../php/mod_loadwmc_server.php",
+ method: "getWmc",
+ callback: function(obj, result, message){
+ if (!result) {
+ new Mb_exception(message);
+ return;
}
- select += "<option value='" + wmc.id + "'>" +
- wmc.title + "</option>";
+ if (typeof callback === "function") {
+ callback(obj.wmc);
+ }
}
- }
- select += "</select>";
- $select.html(select).change(function () {
- //
- // reset fields if new wmc is saved
- //
- if (this.value === "") {
- $("#" + options.id + "_wmcname").val("");
- $("#" + options.id + "_wmcabstract").val("");
- $("#" + options.id + "_wmckeywords").val("");
- $("input[id^='" + options.id + "_wmcinspire_']").removeAttr("checked");
- return false;
+ });
+ req.send();
+ };
+
+ var createSelectBoxForExistingWmcs = function (obj) {
+ (function () {
+ $select = $("#" + options.id + "_wmctype").empty();
+ var select = "<option value=''>" + translatedI18nObj.labelNewWmc + "</option>";
+ if (typeof obj === "object" && obj.length) {
+ for (var i = 0; i < obj.length; i++) {
+ var wmc = obj[i];
+ if (wmc.disabled) {
+ continue;
+ }
+ select += "<option value='" + wmc.id + "'>" +
+ wmc.title + "</option>";
+ }
}
- //
- // set fields according to wmc
- //
- for (var i = 0; i < obj.length; i++) {
- var wmc = obj[i];
- if (wmc.id === this.value) {
- $("#" + options.id + "_wmcname").val(wmc.title);
- $("#" + options.id + "_wmcabstract").val(wmc.abstract);
- $("#" + options.id + "_wmckeywords").val(wmc.keywords.join(","));
+ select += "</select>";
+ $select.html(select).change(function () {
+ //
+ // reset fields if new wmc is saved
+ //
+ if (this.value === "") {
+ $("#" + options.id + "_wmcname").val("");
+ $("#" + options.id + "_wmcabstract").val("");
+ $("#" + options.id + "_wmckeywords").val("");
$("input[id^='" + options.id + "_wmcinspire_']").removeAttr("checked");
- for (var j = 0; j < wmc.categories.length; j++) {
- var cat = wmc.categories[j];
- $("#" + options.id + "_wmcinspire_" + cat).attr("checked", "checked");
- }
return false;
}
- }
- });
- })();
-};
-
-var getButtons = function () {
- var buttonObj = {};
- buttonObj[translatedI18nObj.labelSave] = function() {
- var inspire_cat = {};
- var regExp = new RegExp(options.id + "_");
- $("#" + options.id + "_wmcinspire:checkbox").each(function(){
- if(!!$(this).attr('checked')) {
- inspire_cat[$(this).attr('id').replace(regExp, "")] = true;
- }
- });
- var attributes = {};
- attributes.title = $("#" + options.id + "_wmcname").val();
- attributes.abstract = $("#" + options.id + "_wmcabstract").val();
- attributes.keywords = $("#" + options.id + "_wmckeywords").val();
- attributes.inspirecat = inspire_cat;
- if (!!attributes.title) {
- sendMapDataToServer(attributes, 0, (function(result, status, message) {
- alert(message);
- $("#" + options.id + "_saveWMCForm form")[0].reset();
- }));
- }else{
- //perfom validation
- }
- $(this).dialog('close');
+ //
+ // set fields according to wmc
+ //
+ for (var i = 0; i < obj.length; i++) {
+ var wmc = obj[i];
+ if (wmc.id === this.value) {
+ $("#" + options.id + "_wmcname").val(wmc.title);
+ $("#" + options.id + "_wmcabstract").val(wmc.abstract);
+ $("#" + options.id + "_wmckeywords").val(wmc.keywords.join(","));
+ $("input[id^='" + options.id + "_wmcinspire_']").removeAttr("checked");
+ for (var j = 0; j < wmc.categories.length; j++) {
+ var cat = wmc.categories[j];
+ $("#" + options.id + "_wmcinspire_" + cat).attr("checked", "checked");
+ }
+ return false;
+ }
+ }
+ });
+ })();
};
- buttonObj[translatedI18nObj.labelCancel] = function() {
- $("#" + options.id + "_saveWMCForm form")[0].reset();
- $(this).dialog('close');
- };
- return buttonObj;
-};
-
-Mapbender.events.init.register(function () {
- if (saveInSession === 1 && typeof options.target === "object"
- && options.target.length && options.target.length > 0) {
- try {
- Mapbender.modules[options.target[0]].afterMapRequest.register(function () {
- mod_savewmc_session();
+
+ var getButtons = function () {
+ var buttonObj = {};
+ buttonObj[translatedI18nObj.labelSave] = function() {
+ var inspire_cat = {};
+ var regExp = new RegExp(options.id + "_");
+ $("#" + options.id + "_wmcinspire:checkbox").each(function(){
+ if(!!$(this).attr('checked')) {
+ inspire_cat[$(this).attr('id').replace(regExp, "")] = true;
+ }
});
- }
- catch (exc) {
- new Mb_exception(options.target[0] + " is not in this application.");
- }
- }
-
- var t = translatedI18nObj;
- var savewmcHtml = '<div id="' + options.id + '_saveWMCForm" ' +
- 'title="' + translatedI18nObj.title + '">' +
- '<style> fieldset label { display: block; }</style>' +
- wmcSaveFormHtml +
- '</div>';
-
- var $saveWmcDialog = $(savewmcHtml).dialog({
- bgiframe: true,
- autoOpen: false,
- height: 400,
- width: 500,
- modal: true,
- beforeclose: function (event, ui) {
- try {
- $saveWmcDialog.parent().effect("transfer", {
- to: $this
- }, 300);
+ var attributes = {};
+ attributes.title = $("#" + options.id + "_wmcname").val();
+ attributes.abstract = $("#" + options.id + "_wmcabstract").val();
+ attributes.keywords = $("#" + options.id + "_wmckeywords").val();
+ attributes.inspirecat = inspire_cat;
+ if (!!attributes.title) {
+ sendMapDataToServer(attributes, 0, (function(result, status, message) {
+ alert(message);
+ $("#" + options.id + "_saveWMCForm form")[0].reset();
+ }));
}
- catch (exc) {
- new Mb_warning("jq_ui_effect is missing.");
+ else{
+ //perfom validation
}
- },
- buttons: getButtons()
- });
-});
-
-function mod_savewmc_session(){
- sendMapDataToServer("session", 1, function(result, status) {});
-}
-
-var localize = function () {
- //
- // buttons
- //
- $("#" + options.id + "_saveWMCForm").dialog('option', 'buttons', getButtons());
+ $(this).dialog('close');
+ };
+ buttonObj[translatedI18nObj.labelCancel] = function() {
+ $("#" + options.id + "_saveWMCForm form")[0].reset();
+ $(this).dialog('close');
+ };
+ return buttonObj;
+ };
- // title
- $("#" + options.id + "_saveWMCForm").dialog('option', 'title', translatedI18nObj.title);
+ var mod_savewmc = function () {
+ getExistingWmcData(function (obj) {
+ createSelectBoxForExistingWmcs(obj);
+ $("#" + options.id + "_saveWMCForm").dialog('open');
+ });
+ };
//
- // form
+ // constructor
//
- var $form = $("#" + options.id + "_saveWMCForm > form > fieldset");
- $form.children("label").each(function () {
- var forId = $(this).attr("for");
- switch (forId) {
- case options.id + "_wmctype" :
- $(this).text(translatedI18nObj.labelNewOrOverwrite).next()
- .children().eq(0).text(translatedI18nObj.labelNewWmc);
- break;
- case options.id + ":wmcname" :
- $(this).text(translatedI18nObj.labelName);
- break;
- case options.id + "_wmcabstract" :
- $(this).text(translatedI18nObj.labelAbstract);
- break;
- case options.id + "_wmckeywords" :
- $(this).text(translatedI18nObj.labelKeywords);
- break;
- case options.id + "_wmckeywords" :
- $(this).text(translatedI18nObj.labelKeywords);
- break;
- }
- });
- var $legend = $form.next().children("legend");
- $legend.text(translatedI18nObj.labelCategories);
-};
-Mapbender.events.localize.register(function () {
- Mapbender.modules.i18n.queue(options.id, originalI18nObj, function (translatedObj) {
- if (typeof translatedObj !== "object") {
- return;
+ $this.click(function () {
+ mod_savewmc();
+ }).mouseover(function () {
+ if (options.src) {
+ this.src = options.src.replace(/_off/, "_over");
}
- translatedI18nObj = translatedObj;
- try {
- localize();
+ }).mouseout(function () {
+ if (options.src) {
+ this.src = options.src;
}
- catch (exc) {
- new Mb_warning("Error when translating: " . exc.message);
- }
});
-});
-var mod_savewmc = function () {
- getExistingWmcData(function (obj) {
- createSelectBoxForExistingWmcs(obj);
- $("#" + options.id + "_saveWMCForm").dialog('open');
+ Mapbender.events.init.register(function () {
+ if (saveInSession === 1) {
+ options.$target.each(function () {
+ this.events.afterMapRequest.register(function () {
+ mod_savewmc_session();
+ });
+ });
+ }
+
+ var t = translatedI18nObj;
+ var savewmcHtml = '<div id="' + options.id + '_saveWMCForm" ' +
+ 'title="' + translatedI18nObj.title + '">' +
+ '<style> fieldset label { display: block; }</style>' +
+ wmcSaveFormHtml +
+ '</div>';
+
+ var $saveWmcDialog = $(savewmcHtml).dialog({
+ bgiframe: true,
+ autoOpen: false,
+ height: 400,
+ width: 500,
+ modal: true,
+ beforeclose: function (event, ui) {
+ try {
+ $saveWmcDialog.parent().effect("transfer", {
+ to: $this
+ }, 300);
+ }
+ catch (exc) {
+ new Mb_warning("jq_ui_effect is missing.");
+ }
+ },
+ buttons: getButtons()
+ });
});
+
+ Mapbender.events.localize.register(function () {
+ Mapbender.modules.i18n.queue(options.id, originalI18nObj, function (translatedObj) {
+ if (typeof translatedObj !== "object") {
+ return;
+ }
+ translatedI18nObj = translatedObj;
+ try {
+ localize();
+ }
+ catch (exc) {
+ new Mapbender.Warning("Error when translating: " . exc.message);
+ }
+ });
+ });
};
-var sendMapDataToServer = function (attributes, storeInSession, callbackFunction) {
- var extensionDataString = "";
- if (currentWmcExtensionData !== null) {
- extensionDataString = $.toJSON(currentWmcExtensionData);
- }
-
- if (storeInSession) {
- $.ajaxSetup({async:false});
- }
-
- //
- // WORKAROUND....cannot serialize map object,
- // as it contains a jQuery collection, which is
- // cyclic.
- // Removing the $target from the map object before
- // serialization, and re-appending it afterwards
- //
- var $target = [];
- for (var i = 0; i < mb_mapObj.length; i++) {
- $target.push(mb_mapObj[i].$target);
- delete mb_mapObj[i].$target;
- }
- var req = new Mapbender.Ajax.Request({
- url: "../php/mod_savewmc_server.php",
- method: "saveWMC",
- parameters : {
- saveInSession:storeInSession,
- attributes:attributes,
- overwrite: overwrite,
- extensionData:extensionDataString,
- mapObject:$.toJSON(mb_mapObj)
- },
- callback: callbackFunction
- });
- req.send();
- for (var i = 0; i < mb_mapObj.length; i++) {
- mb_mapObj[i].$target = $target[i];
- }
-};
+$this.mapbender(new SaveWmcApi());
More information about the Mapbender_commits
mailing list