From 86837d69186bc4d1d6f54fc893c523de0972a0b9 Mon Sep 17 00:00:00 2001 From: Jose Antonio Marquez Date: Fri, 1 Jun 2012 11:53:57 -0700 Subject: Creating template mediator class This is to simplify code, more to be changed and added. --- js/document/views/design.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'js/document/views') diff --git a/js/document/views/design.js b/js/document/views/design.js index dedfe8b6..02e78e6e 100755 --- a/js/document/views/design.js +++ b/js/document/views/design.js @@ -159,7 +159,7 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { this._observer.body = new WebKitMutationObserver(this.insertBannerContent.bind(this)); this._observer.body.observe(this._bodyFragment, {childList: true}); //Inserting HTML and parsing URLs via mediator method - this._bodyFragment.innerHTML = ''+(this.content.body.replace(/\b(href|src)\s*=\s*"([^"]*)"/g, this.application.ninja.ioMediator.getNinjaPropUrlRedirect.bind(this.application.ninja.ioMediator))).replace(/url\(([^"]*)(.+?)\1\)/g, this.application.ninja.ioMediator.getNinjaPropUrlRedirect.bind(this.application.ninja.ioMediator)); + this._bodyFragment.innerHTML = ''+(this.content.body.replace(/\b(href|src)\s*=\s*"([^"]*)"/g, this.application.ninja.ioMediator.tmplt.getNinjaPropUrlRedirect.bind(this.application.ninja.ioMediator.tmplt))).replace(/url\(([^"]*)(.+?)\1\)/g, this.application.ninja.ioMediator.tmplt.getNinjaPropUrlRedirect.bind(this.application.ninja.ioMediator.tmplt)); } } else { //Creating temp code fragement to load head @@ -168,12 +168,12 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { this._observer.head = new WebKitMutationObserver(this.insertHeadContent.bind(this)); this._observer.head.observe(this._headFragment, {childList: true}); //Inserting HTML and parsing URLs via mediator method - this._headFragment.innerHTML = (this.content.head.replace(/\b(href|src)\s*=\s*"([^"]*)"/g, this.application.ninja.ioMediator.getNinjaPropUrlRedirect.bind(this.application.ninja.ioMediator))).replace(/url\(([^"]*)(.+?)\1\)/g, this.application.ninja.ioMediator.getNinjaPropUrlRedirect.bind(this.application.ninja.ioMediator)); + this._headFragment.innerHTML = (this.content.head.replace(/\b(href|src)\s*=\s*"([^"]*)"/g, this.application.ninja.ioMediator.tmplt.getNinjaPropUrlRedirect.bind(this.application.ninja.ioMediator.tmplt))).replace(/url\(([^"]*)(.+?)\1\)/g, this.application.ninja.ioMediator.tmplt.getNinjaPropUrlRedirect.bind(this.application.ninja.ioMediator.tmplt)); //Adding event listener to know when the body is ready and make callback (using HTML5 new DOM Mutation Events) this._observer.body = new WebKitMutationObserver(this.bodyContentLoaded.bind(this)); this._observer.body.observe(this.document.body, {childList: true}); //Inserting HTML and parsing URLs via mediator method - this.document.body.innerHTML += ''+(this.content.body.replace(/\b(href|src)\s*=\s*"([^"]*)"/g, this.application.ninja.ioMediator.getNinjaPropUrlRedirect.bind(this.application.ninja.ioMediator))).replace(/url\(([^"]*)(.+?)\1\)/g, this.application.ninja.ioMediator.getNinjaPropUrlRedirect.bind(this.application.ninja.ioMediator)); + this.document.body.innerHTML += ''+(this.content.body.replace(/\b(href|src)\s*=\s*"([^"]*)"/g, this.application.ninja.ioMediator.tmplt.getNinjaPropUrlRedirect.bind(this.application.ninja.ioMediator.tmplt))).replace(/url\(([^"]*)(.+?)\1\)/g, this.application.ninja.ioMediator.tmplt.getNinjaPropUrlRedirect.bind(this.application.ninja.ioMediator.tmplt)); //Copying attributes to maintain same properties as the for (var n in this.content.document.body.attributes) { if (this.content.document.body.attributes[n].value) { -- cgit v1.2.3 From 54c53c326ebde0631fe5720dc912c39341966f1f Mon Sep 17 00:00:00 2001 From: Jose Antonio Marquez Date: Fri, 1 Jun 2012 16:55:31 -0700 Subject: Adding open draw to reel components --- js/document/views/design.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'js/document/views') diff --git a/js/document/views/design.js b/js/document/views/design.js index 02e78e6e..05431d85 100755 --- a/js/document/views/design.js +++ b/js/document/views/design.js @@ -405,7 +405,13 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { //Initializing template with user's seriliazation var template = this.iframe.contentWindow.mjsTemplate.create(); template.initWithDocument(this.iframe.contentWindow.document); - template.instantiateWithOwnerAndDocument(null, this.iframe.contentWindow.document, function (e){/*Nothing just a required extra parameter*/}); + template.instantiateWithOwnerAndDocument(null, this.iframe.contentWindow.document, function (){ + //TODO: Verify this is properly done, seems like a hack + for (var c in template._deserializer._objects) { + //Forcing draw on components + template._deserializer._objects[c].needsDraw = true; + } + }); }.bind(this), false); } }, -- cgit v1.2.3 From e28eb9158a50d7e6d97dbc68066e591ac600c241 Mon Sep 17 00:00:00 2001 From: Valerio Virgillito Date: Tue, 5 Jun 2012 21:40:44 -0700 Subject: removing all model creators. The elementModel is now a getter that will create a new model when needed. Signed-off-by: Valerio Virgillito --- js/document/views/design.js | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'js/document/views') diff --git a/js/document/views/design.js b/js/document/views/design.js index f7fbf3c5..0e42dcc2 100755 --- a/js/document/views/design.js +++ b/js/document/views/design.js @@ -7,7 +7,8 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot //////////////////////////////////////////////////////////////////////// // var Montage = require("montage/core/core").Montage, - BaseDocumentView = require("js/document/views/base").BaseDocumentView; + BaseDocumentView = require("js/document/views/base").BaseDocumentView, + ElementModel = require("js/models/element-model"); //////////////////////////////////////////////////////////////////////// // exports.DesignDocumentView = Montage.create(BaseDocumentView, { @@ -21,6 +22,11 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { _callback: { value: null }, + //////////////////////////////////////////////////////////////////// + // + _viewCallback: { + value: null + }, //////////////////////////////////////////////////////////////////// // _template: { @@ -104,12 +110,13 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { //////////////////////////////////////////////////////////////////// // render: { - value: function (callback, template) { + value: function (callback, template, viewCallback) { //TODO: Remove, this is a temp patch for webRequest API gate this.application.ninja.documentController.redirectRequests = false; //Storing callback for dispatch ready this._callback = callback; this._template = template; + this._viewCallback = viewCallback; //Adding listener to know when template is loaded to then load user content this.iframe.addEventListener("load", this.onTemplateLoad.bind(this), false); //TODO: Add source parameter and root (optional) @@ -264,6 +271,10 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { } } } + + // Assign the modelGenerator reference from the template to our own modelGenerator + this.document.modelGenerator = ElementModel.modelGenerator; + //Checking for script tags then parsing check for montage and webgl if (scripttags.length > 0) { //Checking and initializing webGL @@ -272,6 +283,9 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { this.initMontage(scripttags); } else { //Else there is not data to parse + if(this._viewCallback) { + this._viewCallback.viewCallback.call(this._viewCallback.context); + } } //TODO: Verify appropiate location for this operation if (this._template && this._template.type === 'banner') { @@ -287,8 +301,9 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { for (var n in orgNodes) { if (orgNodes[n].getAttribute) orgNodes[n].setAttribute('data-ninja-node', 'true'); } - //Initiliazing document model - document.application.njUtils.makeElementModel(this.model.documentRoot, "Body", "body"); + + + //Makign callback if specified if (this._callback) this._callback(); } @@ -395,6 +410,7 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { // initMontage: { value: function (scripttags) { + var self = this; // this.iframe.contentWindow.document.body.addEventListener('mjsTemplateReady', function () { //Initializing template with user's seriliazation @@ -406,6 +422,12 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { //Forcing draw on components template._deserializer._objects[c].needsDraw = true; } + + // Now call the view callback + if(self._viewCallback) { + self._viewCallback.viewCallback.call(self._viewCallback.context); + } + }); }.bind(this), false); } -- cgit v1.2.3 From 6a0f150f49be656e0725bc77b452a3141dddd47c Mon Sep 17 00:00:00 2001 From: Jose Antonio Marquez Date: Wed, 6 Jun 2012 13:46:02 -0700 Subject: Cleaning up Removed reference of model in design view, clean up slightly, need to implement binding later. --- js/document/views/design.js | 46 ++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) (limited to 'js/document/views') diff --git a/js/document/views/design.js b/js/document/views/design.js index f7fbf3c5..53590944 100755 --- a/js/document/views/design.js +++ b/js/document/views/design.js @@ -51,11 +51,6 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { content: { value: null }, - //////////////////////////////////////////////////////////////////// - //TODO: Remove usage - model: { - value: null - }, //////////////////////////////////////////////////////////////////// // document: { @@ -69,6 +64,33 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { }, //////////////////////////////////////////////////////////////////// // + _baseHref: { + value: null + }, + //////////////////////////////////////////////////////////////////// + // + baseHref: { + get: function() {return this._baseHref;}, + set: function(value) {this._baseHref = value;} + }, + //////////////////////////////////////////////////////////////////// + // + _documentRoot: { + value: null + }, + //////////////////////////////////////////////////////////////////// + // + documentRoot: { + get: function() {return this._documentRoot;}, + set: function(value) {this._documentRoot = value;} + }, + //////////////////////////////////////////////////////////////////// + // + _webGlHelper: { + value: null + }, + //////////////////////////////////////////////////////////////////// + // getLiveNodeList: { value: function(useFilter) { if(useFilter) { @@ -142,7 +164,7 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { if (basetag.length) { if (basetag[basetag.length-1].getAttribute && basetag[basetag.length-1].getAttribute('href')) { //Setting base HREF in model - this.model.baseHref = basetag[basetag.length-1].getAttribute('href'); + this.baseHref = basetag[basetag.length-1].getAttribute('href'); } } //Checking to content to be template @@ -275,12 +297,12 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { } //TODO: Verify appropiate location for this operation if (this._template && this._template.type === 'banner') { - this.model.documentRoot = this.document.body.getElementsByTagName('ninja-content')[0]; + this.documentRoot = this.document.body.getElementsByTagName('ninja-content')[0]; } else { - this.model.documentRoot = this.document.body; + this.documentRoot = this.document.body; } //Storing node list for reference (might need to store in the model) - this._liveNodeList = this.model.documentRoot.getElementsByTagName('*'); + this._liveNodeList = this.documentRoot.getElementsByTagName('*'); //Getting list of original nodes orgNodes = this.document.getElementsByTagName('*'); //TODO: Figure out if this is ideal for identifying nodes created by Ninja @@ -288,7 +310,7 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { if (orgNodes[n].getAttribute) orgNodes[n].setAttribute('data-ninja-node', 'true'); } //Initiliazing document model - document.application.njUtils.makeElementModel(this.model.documentRoot, "Body", "body"); + document.application.njUtils.makeElementModel(this.documentRoot, "Body", "body"); //Makign callback if specified if (this._callback) this._callback(); } @@ -358,8 +380,6 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { value: function (scripttags) { // var n, webgldata, fileRead; - //Setting the iFrame property for reference in helper class - this.model.webGlHelper.iframe = this.model.views.design.iframe; //Checking for webGL Data for (var w in scripttags) { // @@ -385,7 +405,7 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { webgldata.data[n] = unescape(webgldata.data[n]); } //TODO: Improve setter of webGL and reference - this.model.webGlHelper.glData = webgldata.data; + this._webGlHelper.glData = webgldata.data; } } } -- cgit v1.2.3 From 98d8cf7fdc1b14a6ac4eaa54f9086a558f3a60cb Mon Sep 17 00:00:00 2001 From: Jose Antonio Marquez Date: Wed, 6 Jun 2012 13:50:05 -0700 Subject: Cleaning more. --- js/document/views/design.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'js/document/views') diff --git a/js/document/views/design.js b/js/document/views/design.js index 53590944..5af24546 100755 --- a/js/document/views/design.js +++ b/js/document/views/design.js @@ -26,11 +26,6 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { _template: { value: null }, - //////////////////////////////////////////////////////////////////// - // - _document: { - value: null - }, //////////////////////////////////////////////////////////////////// // _bodyFragment: { @@ -52,14 +47,13 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { value: null }, //////////////////////////////////////////////////////////////////// - // - document: { - get: function() {return this._document;}, - set: function(value) {this._document = value;} + // + _liveNodeList: { + value: null }, //////////////////////////////////////////////////////////////////// // - _liveNodeList: { + _webGlHelper: { value: null }, //////////////////////////////////////////////////////////////////// @@ -73,6 +67,17 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { get: function() {return this._baseHref;}, set: function(value) {this._baseHref = value;} }, + //////////////////////////////////////////////////////////////////// + // + _document: { + value: null + }, + //////////////////////////////////////////////////////////////////// + // + document: { + get: function() {return this._document;}, + set: function(value) {this._document = value;} + }, //////////////////////////////////////////////////////////////////// // _documentRoot: { @@ -86,11 +91,6 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { }, //////////////////////////////////////////////////////////////////// // - _webGlHelper: { - value: null - }, - //////////////////////////////////////////////////////////////////// - // getLiveNodeList: { value: function(useFilter) { if(useFilter) { -- cgit v1.2.3