aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Antonio Marquez2012-05-09 16:28:13 -0700
committerJose Antonio Marquez2012-05-09 16:28:13 -0700
commit3811f72f8cd8caaa2d13fa695b918f25facb85c5 (patch)
tree4198a41aacf42d16d2d0c75574c98d4ec299390e
parent258f006074616f1c654125059e73d94752afb896 (diff)
downloadninja-3811f72f8cd8caaa2d13fa695b918f25facb85c5.tar.gz
Preliminary Montage Template Cleanup
The template creator is currently not returning serializing code, but does clean the document. Need to investigate reason why, currently all components are removed on save.
-rwxr-xr-xjs/document/models/html.js25
-rwxr-xr-xjs/document/views/design.js14
-rw-r--r--js/mediators/io-mediator.js40
-rwxr-xr-x[-rw-r--r--]node_modules/tools/template/template-creator.js (renamed from node_modules/tools/template-creator.js)40
4 files changed, 75 insertions, 44 deletions
diff --git a/js/document/models/html.js b/js/document/models/html.js
index 2764a6d6..b57ff832 100755
--- a/js/document/models/html.js
+++ b/js/document/models/html.js
@@ -24,28 +24,28 @@ exports.HtmlDocumentModel = Montage.create(BaseDocumentModel, {
24 }, 24 },
25 //////////////////////////////////////////////////////////////////// 25 ////////////////////////////////////////////////////////////////////
26 // 26 //
27 baseHref: {
28 value: null
29 },
30 ////////////////////////////////////////////////////////////////////
31 //
27 webGlHelper: { 32 webGlHelper: {
28 value: webGlDocumentHelper 33 value: webGlDocumentHelper
29 }, 34 },
30 //////////////////////////////////////////////////////////////////// 35 ////////////////////////////////////////////////////////////////////
31 //////////////////////////////////////////////////////////////////// 36 //
32 userComponents: { 37 userComponents: {
33 value: {} 38 value: {}
34 }, 39 },
35 40 ////////////////////////////////////////////////////////////////////
36 /** 41 //Add a reference to a component instance to the userComponents hash using the element UUID
37 * Add a reference to a component instance to the userComponents hash using the
38 * element UUID
39 */
40 setComponentInstance: { 42 setComponentInstance: {
41 value: function(instance, el) { 43 value: function(instance, el) {
42 this.userComponents[el.uuid] = instance; 44 this.userComponents[el.uuid] = instance;
43 } 45 }
44 }, 46 },
45 47 ////////////////////////////////////////////////////////////////////
46 /** 48 //Returns the component instance obj from the element
47 * Returns the component instance obj from the element
48 */
49 getComponentFromElement: { 49 getComponentFromElement: {
50 value: function(el) { 50 value: function(el) {
51 if(el) { 51 if(el) {
@@ -55,7 +55,8 @@ exports.HtmlDocumentModel = Montage.create(BaseDocumentModel, {
55 } 55 }
56 } 56 }
57 } 57 }
58 58 ////////////////////////////////////////////////////////////////////
59 ////////////////////////////////////////////////////////////////////
59}); 60});
60//////////////////////////////////////////////////////////////////////// 61////////////////////////////////////////////////////////////////////////
61//////////////////////////////////////////////////////////////////////// \ No newline at end of file 62//////////////////////////////////////////////////////////////////////// \ No newline at end of file
diff --git a/js/document/views/design.js b/js/document/views/design.js
index 9ad088cb..765099e6 100755
--- a/js/document/views/design.js
+++ b/js/document/views/design.js
@@ -42,6 +42,11 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, {
42 value: null 42 value: null
43 }, 43 },
44 //////////////////////////////////////////////////////////////////// 44 ////////////////////////////////////////////////////////////////////
45 //TODO: Remove usage
46 model: {
47 value: null
48 },
49 ////////////////////////////////////////////////////////////////////
45 // 50 //
46 document: { 51 document: {
47 get: function() {return this._document;}, 52 get: function() {return this._document;},
@@ -78,6 +83,8 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, {
78 // 83 //
79 onTemplateLoad: { 84 onTemplateLoad: {
80 value: function (e) { 85 value: function (e) {
86 //TODO: Add support to constructing URL with a base HREF
87 var basetag = this.content.document.getElementsByTagName('base');
81 //Removing event 88 //Removing event
82 this.iframe.removeEventListener("load", this.onTemplateLoad.bind(this), false); 89 this.iframe.removeEventListener("load", this.onTemplateLoad.bind(this), false);
83 //TODO: Improve usage of this reference 90 //TODO: Improve usage of this reference
@@ -88,6 +95,13 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, {
88 this.document.styleSheets[k].ownerNode.setAttribute('data-ninja-template', 'true'); 95 this.document.styleSheets[k].ownerNode.setAttribute('data-ninja-template', 'true');
89 } 96 }
90 } 97 }
98 //Checking for a base URL
99 if (basetag.length) {
100 if (basetag[basetag.length-1].getAttribute && basetag[basetag.length-1].getAttribute('href')) {
101 //Setting base HREF in model
102 this.model.baseHref = basetag[basetag.length-1].getAttribute('href');
103 }
104 }
91 //Creating temp code fragement to load head 105 //Creating temp code fragement to load head
92 this._headFragment = this.document.createElement('head'); 106 this._headFragment = this.document.createElement('head');
93 //Adding event listener to know when head is ready, event only dispatched once when using innerHTML 107 //Adding event listener to know when head is ready, event only dispatched once when using innerHTML
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index 6d146c97..cf44ab9d 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -10,7 +10,7 @@ var Montage = require("montage/core/core").Montage,
10 Component = require("montage/ui/component").Component, 10 Component = require("montage/ui/component").Component,
11 FileIo = require("js/io/system/fileio").FileIo, 11 FileIo = require("js/io/system/fileio").FileIo,
12 ProjectIo = require("js/io/system/projectio").ProjectIo, 12 ProjectIo = require("js/io/system/projectio").ProjectIo,
13 TemplateCreator = require("node_modules/tools/template-creator").TemplateCreator; 13 TemplateCreator = require("node_modules/tools/template/template-creator").TemplateCreator;
14//////////////////////////////////////////////////////////////////////// 14////////////////////////////////////////////////////////////////////////
15// 15//
16exports.IoMediator = Montage.create(Component, { 16exports.IoMediator = Montage.create(Component, {
@@ -203,20 +203,38 @@ exports.IoMediator = Montage.create(Component, {
203 var regexRootUrl, rootUrl = this.application.ninja.coreIoApi.rootUrl + escape((this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1])); 203 var regexRootUrl, rootUrl = this.application.ninja.coreIoApi.rootUrl + escape((this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1]));
204 regexRootUrl = new RegExp(rootUrl.replace(/\//gi, '\\\/'), 'gi'); 204 regexRootUrl = new RegExp(rootUrl.replace(/\//gi, '\\\/'), 'gi');
205 //Injecting head and body into old document 205 //Injecting head and body into old document
206 template.file.content.document.head.innerHTML = template.head.innerHTML.replace(regexRootUrl, ''); 206 //template.file.content.document.head.innerHTML = template.head.innerHTML.replace(regexRootUrl, '');
207 template.file.content.document.body.innerHTML = template.body.innerHTML.replace(regexRootUrl, ''); 207 //template.file.content.document.body.innerHTML = template.body.innerHTML.replace(regexRootUrl, '');
208
209
210
211 //Testing using montage clean up method
212 var mjscode, mjsTemp = TemplateCreator.create();
213
214 //mjscode = mjsTemp.initWithHeadAndBodyElements(template.head, template.body);
215 mjscode = mjsTemp.initWithDocument(template.file.content.document);
216
217 console.log(template.head, mjscode._document.head);
218 template.file.content.document.head.innerHTML = mjscode._document.head.innerHTML.replace(regexRootUrl, '');
219 template.file.content.document.body.innerHTML = mjscode._document.body.innerHTML.replace(regexRootUrl, '');
220
221
222
223
208 //Getting all CSS (style or link) tags 224 //Getting all CSS (style or link) tags
209 var styletags = template.file.content.document.getElementsByTagName('style'), 225 var styletags = template.file.content.document.getElementsByTagName('style'),
210 linktags = template.file.content.document.getElementsByTagName('link'), 226 linktags = template.file.content.document.getElementsByTagName('link'),
211 toremovetags = [], 227 toremovetags = [],
212 njtemplatetags = template.file.content.document.querySelectorAll('[data-ninja-template]'), 228 njtemplatetags = template.file.content.document.querySelectorAll('[data-ninja-template]');
213 basetags = template.file.content.document.getElementsByTagName('base');
214 229
215 ////////////////////////////////////////////////// 230 //////////////////////////////////////////////////
216 //TODO: Remove, temp hack to avoid montage 231 //TODO: Remove, temp hack, this is to be fixed by Montage
232 /*
233var basetags = template.file.content.document.getElementsByTagName('base');
217 for (var g in basetags) { 234 for (var g in basetags) {
218 if (basetags[g].getAttribute) toremovetags.push(basetags[g]); 235 if (basetags[g].getAttribute) toremovetags.push(basetags[g]);
219 } 236 }
237*/
220 ////////////////////////////////////////////////// 238 //////////////////////////////////////////////////
221 239
222 // 240 //
@@ -469,9 +487,9 @@ function loadWebGL (e) {\n\
469 487
470 488
471 // 489 //
472 var mjsCounter = 0, mjsComponents = [], temp = TemplateCreator.create(); 490
473 // 491 /*
474 for (var m in template.mjs) { 492for (var m in template.mjs) {
475 mjsComponents.push(template.mjs[m]); 493 mjsComponents.push(template.mjs[m]);
476 mjsCounter++; 494 mjsCounter++;
477 } 495 }
@@ -509,6 +527,7 @@ function loadWebGL (e) {\n\
509 // 527 //
510 mjstag.innerHTML = mjscode; 528 mjstag.innerHTML = mjscode;
511 } 529 }
530*/
512 531
513 532
514 533
@@ -570,7 +589,8 @@ function loadWebGL (e) {\n\
570 // 589 //
571 getDocRootUrl: { 590 getDocRootUrl: {
572 value: function () { 591 value: function () {
573 return this.application.ninja.coreIoApi.rootUrl + escape((this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1]).replace(/\/\//gi, '/')); 592 //TODO: Add support for model.baseHref (base tag)
593 return this.application.ninja.coreIoApi.rootUrl + escape((this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1]).replace(/\/\//gi, '/'));
574 } 594 }
575 }, 595 },
576 //////////////////////////////////////////////////////////////////// 596 ////////////////////////////////////////////////////////////////////
diff --git a/node_modules/tools/template-creator.js b/node_modules/tools/template/template-creator.js
index e312cd32..1cd65ddd 100644..100755
--- a/node_modules/tools/template-creator.js
+++ b/node_modules/tools/template/template-creator.js
@@ -23,39 +23,38 @@ var TemplateCreator = exports.TemplateCreator = Montage.create(Template, /** @le
23 return this.initWithHeadAndBodyElements(doc.head, doc.body, montageJsPath); 23 return this.initWithHeadAndBodyElements(doc.head, doc.body, montageJsPath);
24 } 24 }
25 }, 25 },
26 26
27 initWithBodyElement: { 27 initWithBodyElement: {
28 value: function(body, montageJsPath) { 28 value: function(body, montageJsPath) {
29 return this.initWithHeadAndBodyElements(null, body, montageJsPath); 29 return this.initWithHeadAndBodyElements(null, body, montageJsPath);
30 } 30 }
31 }, 31 },
32 32
33 initWithHeadAndBodyElements: {