aboutsummaryrefslogtreecommitdiff
path: root/js
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 /js
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.
Diffstat (limited to 'js')
-rwxr-xr-xjs/document/models/html.js25
-rwxr-xr-xjs/document/views/design.js14
-rw-r--r--js/mediators/io-mediator.js40
3 files changed, 57 insertions, 22 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 ////////////////////////////////////////////////////////////////////