aboutsummaryrefslogtreecommitdiff
path: root/js/document
diff options
context:
space:
mode:
authorArmen Kesablyan2012-05-25 11:22:58 -0700
committerArmen Kesablyan2012-05-25 11:22:58 -0700
commit81239571c538f72e398fafa5b07725bf1bbb2d5d (patch)
treed31c876f5af61565eff8c934c9e5f119696d46e0 /js/document
parente8c4e98c24092a360eb2f637983fd104fbb67f66 (diff)
parent9c8d724dd1605ee2e5257591e0bfaad575cbc906 (diff)
downloadninja-81239571c538f72e398fafa5b07725bf1bbb2d5d.tar.gz
Merge branch 'refs/heads/dom-architecture' into binding
Diffstat (limited to 'js/document')
-rwxr-xr-xjs/document/_toDelete/html-document.js (renamed from js/document/html-document.js)0
-rwxr-xr-xjs/document/_toDelete/text-document.js (renamed from js/document/text-document.js)0
-rwxr-xr-xjs/document/document-html.js34
-rwxr-xr-xjs/document/models/html.js5
-rwxr-xr-xjs/document/views/base.js2
-rwxr-xr-xjs/document/views/design.js44
6 files changed, 53 insertions, 32 deletions
diff --git a/js/document/html-document.js b/js/document/_toDelete/html-document.js
index 447d90e3..447d90e3 100755
--- a/js/document/html-document.js
+++ b/js/document/_toDelete/html-document.js
diff --git a/js/document/text-document.js b/js/document/_toDelete/text-document.js
index 2574b67c..2574b67c 100755
--- a/js/document/text-document.js
+++ b/js/document/_toDelete/text-document.js
diff --git a/js/document/document-html.js b/js/document/document-html.js
index f92a425c..c60a12a2 100755
--- a/js/document/document-html.js
+++ b/js/document/document-html.js
@@ -6,10 +6,10 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
6 6
7//////////////////////////////////////////////////////////////////////// 7////////////////////////////////////////////////////////////////////////
8// 8//
9var Montage = require("montage/core/core").Montage, 9var Montage = require("montage/core/core").Montage,
10 Component = require("montage/ui/component").Component, 10 Component = require("montage/ui/component").Component,
11 HtmlDocumentModel = require("js/document/models/html").HtmlDocumentModel, 11 HtmlDocumentModel = require("js/document/models/html").HtmlDocumentModel,
12 DesignDocumentView = require("js/document/views/design").DesignDocumentView; 12 DesignDocumentView = require("js/document/views/design").DesignDocumentView;
13//////////////////////////////////////////////////////////////////////// 13////////////////////////////////////////////////////////////////////////
14// 14//
15exports.HtmlDocument = Montage.create(Component, { 15exports.HtmlDocument = Montage.create(Component, {
@@ -33,15 +33,10 @@ exports.HtmlDocument = Montage.create(Component, {
33 _observer: { 33 _observer: {
34 value: null 34 value: null
35 }, 35 },
36 ////////////////////////////////////////////////////////////////////
37 //
38 _document: {
39 value: null //TODO: Figure out if this will be needed, probably not
40 },
41 //////////////////////////////////////////////////////////////////// 36 ////////////////////////////////////////////////////////////////////
42 // 37 //
43 exclusionList: { 38 exclusionList: {
44 value: ["HTML", "BODY", "NINJA-CONTENT"] //TODO: Update to correct list 39 value: ["HTML", "BODY", "NINJA-CONTENT"]
45 }, 40 },
46 //////////////////////////////////////////////////////////////////// 41 ////////////////////////////////////////////////////////////////////
47 // 42 //
@@ -72,7 +67,7 @@ exports.HtmlDocument = Montage.create(Component, {
72 //Hiding iFrame, just initiliazing 67 //Hiding iFrame, just initiliazing
73 this.model.views.design.hide(); 68 this.model.views.design.hide();
74 } else { 69 } else {
75 //ERROR: Design View not initilized 70 //ERROR: Design View not initialized
76 } 71 }
77 // 72 //
78 if (view === 'design') { 73 if (view === 'design') {
@@ -84,23 +79,10 @@ exports.HtmlDocument = Montage.create(Component, {
84 this.model.views.design.show(); 79 this.model.views.design.show();
85 this.model.views.design.iframe.style.opacity = 0; 80 this.model.views.design.iframe.style.opacity = 0;
86 this.model.views.design.content = this.model.file.content; 81 this.model.views.design.content = this.model.file.content;
87 //TODO: Improve reference 82 //TODO: Improve reference (probably through binding values)
88 this.model.views.design.model = this.model; 83 this.model.views.design.model = this.model;
89 // 84 //Rendering design view, using observers to know when template is ready
90 //TODO: Clean up
91 this.model.views.design.render(function () { 85 this.model.views.design.render(function () {
92 //TODO: Identify and remove usage of '_document'
93 this._document = this.model.views.design.document;
94 //TODO: Remove usage, seems as not needed
95 if (template && template.type === 'banner') {
96 this.documentRoot = this.model.views.design.document.body.getElementsByTagName('ninja-content')[0];
97 } else {
98 this.documentRoot = this.model.views.design.document.body;
99 }
100 //TODO: Why is this needed?
101 this._liveNodeList = this.documentRoot.getElementsByTagName('*');
102 //Initiliazing document model
103 document.application.njUtils.makeElementModel(this.documentRoot, "Body", "body");
104 //Adding observer to know when template is ready 86 //Adding observer to know when template is ready
105 this._observer = new WebKitMutationObserver(this.handleTemplateReady.bind(this)); 87 this._observer = new WebKitMutationObserver(this.handleTemplateReady.bind(this));
106 this._observer.observe(this.model.views.design.document.head, {childList: true}); 88 this._observer.observe(this.model.views.design.document.head, {childList: true});
diff --git a/js/document/models/html.js b/js/document/models/html.js
index 9cc8ce92..fd42d4de 100755
--- a/js/document/models/html.js
+++ b/js/document/models/html.js
@@ -64,6 +64,11 @@ exports.HtmlDocumentModel = Montage.create(BaseDocumentModel, {
64 userComponents: { 64 userComponents: {
65 value: {} 65 value: {}
66 }, 66 },
67 ////////////////////////////////////////////////////////////////////
68 //
69 documentRoot: {
70 value: null
71 },
67 //////////////////////////////////////////////////////////////////// 72 ////////////////////////////////////////////////////////////////////
68 //Add a reference to a component instance to the userComponents hash using the element UUID 73 //Add a reference to a component instance to the userComponents hash using the element UUID
69 setComponentInstance: { 74 setComponentInstance: {
diff --git a/js/document/views/base.js b/js/document/views/base.js
index db72cc60..d13dce1a 100755
--- a/js/document/views/base.js
+++ b/js/document/views/base.js
@@ -28,7 +28,7 @@ exports.BaseDocumentView = Montage.create(Component, {
28 value: null 28 value: null
29 }, 29 },
30 //////////////////////////////////////////////////////////////////// 30 ////////////////////////////////////////////////////////////////////
31 // 31 //TODO: This should be renamed to better illustrate it's a container (iframe for design, div for code view)
32 iframe: { 32 iframe: {
33 get: function() {return this._iframe;}, 33 get: function() {return this._iframe;},
34 set: function(value) {this._iframe= value;} 34 set: function(value) {this._iframe= value;}
diff --git a/js/document/views/design.js b/js/document/views/design.js
index b3887fdf..d772aa86 100755
--- a/js/document/views/design.js
+++ b/js/document/views/design.js
@@ -67,8 +67,34 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, {
67 propertiesPanel: { 67 propertiesPanel: {
68 value: null 68 value: null
69 }, 69 },
70
70 //////////////////////////////////////////////////////////////////// 71 ////////////////////////////////////////////////////////////////////
71 // 72 //
73 _liveNodeList: {
74 value: null
75 },
76
77 getLiveNodeList: {
78 value: function(useFilter) {
79 if(useFilter) {
80 var filteredNodes = [],
81 childNodes = Array.prototype.slice.call(this._liveNodeList, 0);
82
83 childNodes.forEach(function(item) {
84 if( (item.nodeType === 1) && (item.nodeName !== "STYLE") && (item.nodeName !== "SCRIPT")) {
85 filteredNodes.push(item);
86 }
87 });
88 return filteredNodes;
89 } else {
90 return Array.prototype.slice.call(this._liveNodeList, 0);
91 }
92 }
93 },
94 ////////////////////////////////////////////////////////////////////
95 //
96
97 //
72 initialize: { 98 initialize: {
73 value: function (parent) { 99 value: function (parent) {
74 //Creating iFrame for view 100 //Creating iFrame for view
@@ -87,7 +113,7 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, {
87 render: { 113 render: {
88 value: function (callback, template) { 114 value: function (callback, template) {
89 //TODO: Remove, this is a temp patch for webRequest API gate 115 //TODO: Remove, this is a temp patch for webRequest API gate
90 this.application.ninja.documentController._hackRootFlag = false; 116 this.application.ninja.documentController.redirectRequests = false;
91 //Storing callback for dispatch ready 117 //Storing callback for dispatch ready
92 this._callback = callback; 118 this._callback = callback;
93 this._template = template; 119 this._template = template;
@@ -105,7 +131,8 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, {
105 // 131 //
106 onTemplateLoad: { 132 onTemplateLoad: {
107 value: function (e) { 133 value: function (e) {
108 this.application.ninja.documentController._hackRootFlag = true; 134 //console.log(this.iframe.contentWindow);
135 this.application.ninja.documentController.redirectRequests = true;
109 //TODO: Add support to constructing URL with a base HREF 136 //TODO: Add support to constructing URL with a base HREF
110 var basetag = this.content.document.getElementsByTagName('base'); 137 var basetag = this.content.document.getElementsByTagName('base');
111 //Removing event 138 //Removing event
@@ -189,9 +216,6 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, {
189 this._bodyFragment = null; 216 this._bodyFragment = null;
190 //Calling standard method to finish opening document 217 //Calling standard method to finish opening document
191 this.bodyContentLoaded(null); 218 this.bodyContentLoaded(null);
192 //TODO: Move this to be set via the controller
193 this.application.ninja.stage.documentOffsetLeft = parseInt((this.document.body.scrollWidth - this._template.size.width)/2);
194 this.application.ninja.stage.documentOffsetTop = parseInt((this.document.body.scrollHeight - this._template.size.height)/2);
195 } 219 }
196 }, 220 },
197 //////////////////////////////////////////////////////////////////// 221 ////////////////////////////////////////////////////////////////////
@@ -256,6 +280,16 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, {
256 } else { 280 } else {
257 //Else there is not data to parse 281 //Else there is not data to parse
258 } 282 }
283 //TODO: Verify appropiate location for this operation
284 if (this._template && this._template.type === 'banner') {
285 this.model.documentRoot = this.document.body.getElementsByTagName('ninja-content')[0];
286 } else {
287 this.model.documentRoot = this.document.body;
288 }
289 //Storing node list for reference (might need to store in the model)
290 this._liveNodeList = this.model.documentRoot.getElementsByTagName('*');
291 //Initiliazing document model
292 document.application.njUtils.makeElementModel(this.model.documentRoot, "Body", "body");
259 //Makign callback if specified 293 //Makign callback if specified
260 if (this._callback) this._callback(); 294 if (this._callback) this._callback();
261 } 295 }