diff options
author | Jose Antonio Marquez | 2012-05-09 16:28:13 -0700 |
---|---|---|
committer | Jose Antonio Marquez | 2012-05-09 16:28:13 -0700 |
commit | 3811f72f8cd8caaa2d13fa695b918f25facb85c5 (patch) | |
tree | 4198a41aacf42d16d2d0c75574c98d4ec299390e /js | |
parent | 258f006074616f1c654125059e73d94752afb896 (diff) | |
download | ninja-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-x | js/document/models/html.js | 25 | ||||
-rwxr-xr-x | js/document/views/design.js | 14 | ||||
-rw-r--r-- | js/mediators/io-mediator.js | 40 |
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 | // |
16 | exports.IoMediator = Montage.create(Component, { | 16 | exports.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 | /* | ||
233 | var 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) { | 492 | for (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 | //////////////////////////////////////////////////////////////////// |