From a3024011a91d3941f81481dd4d600e9684eb0fd4 Mon Sep 17 00:00:00 2001 From: Valerio Virgillito Date: Thu, 2 Feb 2012 00:11:51 -0800 Subject: upgrading to Montage v0.6 Signed-off-by: Valerio Virgillito --- node_modules/montage/core/serializer.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'node_modules/montage/core/serializer.js') diff --git a/node_modules/montage/core/serializer.js b/node_modules/montage/core/serializer.js index 129c3e80..449ebf7d 100755 --- a/node_modules/montage/core/serializer.js +++ b/node_modules/montage/core/serializer.js @@ -12,6 +12,14 @@ var Montage = require("montage").Montage; var Uuid = require("core/uuid").Uuid; var Deserializer = require("core/deserializer").Deserializer; +var logger = require("core/logger").logger("serializer"); +var Element; + +// Shadowing the global with a local allows us to feature-test without typeof +// Element does not exist on the server-side +if (typeof window !== "undefined") { + Element = window.Element; +} /** @class module:montage/core/serializer.Serializer @@ -19,6 +27,7 @@ var Deserializer = require("core/deserializer").Deserializer; @extends module:montage/core/core.Montage */ var Serializer = Montage.create(Montage, /** @lends module:montage/serializer.Serializer# */ { + _MONTAGE_ID_ATTRIBUTE: {value: "data-montage-id"}, _serializedObjects: {value: {}}, // uuid -> string _serializedReferences: {value: {}}, // uuid -> string _externalObjects: {value: null}, // label -> object @@ -358,7 +367,7 @@ var Serializer = Montage.create(Montage, /** @lends module:montage/serializer.Se if (value instanceof RegExp) { return this._serializeRegExp(value); } else if (value && (typeof value === "object" || typeof value === "function")) { - if (value instanceof Element) { + if (Element && value instanceof Element) { return this._serializeElement(value); } else if (Array.isArray(value)) { return this._serializeArray(value, indent + 1); @@ -378,11 +387,15 @@ var Serializer = Montage.create(Montage, /** @lends module:montage/serializer.Se @private */ _serializeElement: {value: function(element) { - if (element.id) { + var attribute = element.getAttribute(this._MONTAGE_ID_ATTRIBUTE), + // TODO: element.id only here for backwards compatibility + id = attribute || element.id; + + if (id) { this._externalElements.push(element); - return '{"#":"' + element.id + '"}'; + return '{"#":"' + id + '"}'; } else { - throw "Error: Not possible to serialize a DOM element with no id assigned: " + element.outerHTML; + logger.error("Error: Not possible to serialize a DOM element with no id assigned: " + element.outerHTML); } }}, -- cgit v1.2.3