aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorValerio Virgillito2012-05-18 15:43:30 -0700
committerValerio Virgillito2012-05-18 15:43:30 -0700
commit1056a45e0cbf92d578324ce70b8a17183320e64b (patch)
tree826a7149a65b5160e1c6bf64d33aef2f126b1d00 /js
parent66edf78c7e5df11218ef733686965beab05c7c7d (diff)
parentd878aa470074d5698a316512b513949fa22073f2 (diff)
downloadninja-1056a45e0cbf92d578324ce70b8a17183320e64b.tar.gz
Merge pull request #246 from joseeight/Document
Fixing Save Logic
Diffstat (limited to 'js')
-rwxr-xr-xjs/controllers/document-controller.js15
-rwxr-xr-xjs/document/models/base.js18
-rwxr-xr-xjs/document/views/design.js29
-rw-r--r--js/mediators/io-mediator.js79
4 files changed, 83 insertions, 58 deletions
diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js
index f1523d87..cf618360 100755
--- a/js/controllers/document-controller.js
+++ b/js/controllers/document-controller.js
@@ -145,18 +145,19 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
145 value: function(event) { 145 value: function(event) {
146 // 146 //
147 if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ 147 if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){
148 // 148 //Currently we don't need a callback handler
149 this.activeDocument.model.save(this.testCallback.bind(this)); //this.fileSaveResult.bind(this) 149 //this.activeDocument.model.save(this.saveExecuted.bind(this));
150 this.activeDocument.model.save();
150 } else { 151 } else {
151 //Error: 152 //Error: cloud not available and/or no active document
152 } 153 }
153 } 154 }
154 }, 155 },
155 testCallback: { 156 ////////////////////////////////////////////////////////////////////
157 //
158 saveExecuted: {
156 value: function (value) { 159 value: function (value) {
157 console.log(value); 160 //File saved, any callbacks or events should go here
158 //TODO: Move this to the model.save()
159 this.activeDocument.model.needsSave = false;
160 } 161 }
161 }, 162 },
162 //////////////////////////////////////////////////////////////////// 163 ////////////////////////////////////////////////////////////////////
diff --git a/js/document/models/base.js b/js/document/models/base.js
index df341b2f..c99e36c7 100755
--- a/js/document/models/base.js
+++ b/js/document/models/base.js
@@ -151,7 +151,7 @@ exports.BaseDocumentModel = Montage.create(Component, {
151 head: this.views.design.iframe.contentWindow.document.head, 151 head: this.views.design.iframe.contentWindow.document.head,
152 body: this.views.design.iframe.contentWindow.document.body, 152 body: this.views.design.iframe.contentWindow.document.body,
153 mjsTemplateCreator: this.views.design.iframe.contentWindow.mjsTemplateCreator 153 mjsTemplateCreator: this.views.design.iframe.contentWindow.mjsTemplateCreator
154 }, callback.bind(this)); 154 }, this.handleSaved.bind({callback: callback, model: this}));
155 } else { 155 } else {
156 //TODO: Add logic to save code view data 156 //TODO: Add logic to save code view data
157 } 157 }
@@ -180,7 +180,7 @@ exports.BaseDocumentModel = Montage.create(Component, {
180 head: this.views.design.iframe.contentWindow.document.head, 180 head: this.views.design.iframe.contentWindow.document.head,
181 body: this.views.design.iframe.contentWindow.document.body, 181 body: this.views.design.iframe.contentWindow.document.body,
182 mjsTemplateCreator: this.views.design.iframe.contentWindow.mjsTemplateCreator 182 mjsTemplateCreator: this.views.design.iframe.contentWindow.mjsTemplateCreator
183 }, callback.bind(this)); 183 }, this.handleSaved.bind({callback: callback, model: this}));
184 } else { 184 } else {
185 //TODO: Add logic to save code view data 185 //TODO: Add logic to save code view data
186 } 186 }
@@ -190,7 +190,7 @@ exports.BaseDocumentModel = Montage.create(Component, {
190 //////////////////////////////////////////////////////////////////// 190 ////////////////////////////////////////////////////////////////////
191 // 191 //
192 saveAs: { 192 saveAs: {
193 value: function () { 193 value: function (callback) {
194 // 194 //
195 if (this.needsSave) { 195 if (this.needsSave) {
196 //Save current file on memory 196 //Save current file on memory
@@ -201,6 +201,18 @@ exports.BaseDocumentModel = Montage.create(Component, {
201 }, 201 },
202 //////////////////////////////////////////////////////////////////// 202 ////////////////////////////////////////////////////////////////////
203 // 203 //
204 handleSaved: {
205 value: function (result) {
206 //
207 if (result.status === 204) {
208 this.model.needsSave = false;
209 }
210 //
211 if (this.callback) this.callback(result);
212 }
213 },
214 ////////////////////////////////////////////////////////////////////
215 //
204 close: { 216 close: {
205 value: function (view, callback) { 217 value: function (view, callback) {
206 //Outcome of close (pending on save logic) 218 //Outcome of close (pending on save logic)
diff --git a/js/document/views/design.js b/js/document/views/design.js
index 2ccb82d1..bd8c25ec 100755
--- a/js/document/views/design.js
+++ b/js/document/views/design.js
@@ -184,8 +184,7 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, {
184 this._bodyFragment = null; 184 this._bodyFragment = null;
185 //Calling standard method to finish opening document 185 //Calling standard method to finish opening document
186 this.bodyContentLoaded(null); 186 this.bodyContentLoaded(null);
187 187 //TODO: Move this to be set via the controller
188 // TODO: Clean up this code
189 this.application.ninja.stage.documentOffsetLeft = parseInt((this.document.body.scrollWidth - this._template.size.width)/2); 188 this.application.ninja.stage.documentOffsetLeft = parseInt((this.document.body.scrollWidth - this._template.size.width)/2);
190 this.application.ninja.stage.documentOffsetTop = parseInt((this.document.body.scrollHeight - this._template.size.height)/2); 189 this.application.ninja.stage.documentOffsetTop = parseInt((this.document.body.scrollHeight - this._template.size.height)/2);
191 } 190 }
@@ -243,17 +242,15 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, {
243 } 242 }
244 } 243 }
245 } 244 }
246 //Checking and initializing webGL 245 //Checking for script tags then parsing check for montage and webgl
247 if (scripttags.length > 0) { 246 if (scripttags.length > 0) {
247 //Checking and initializing webGL
248 this.initWebGl(scripttags); 248 this.initWebGl(scripttags);
249 } //Else there is not data to parse 249 //Checking and initializing Montage
250 250 this.initMontage(scripttags);
251 251 } else {
252 252 //Else there is not data to parse
253 //TODO: Load Montage Components (blocking) 253 }
254 //this.initMontage();
255
256
257 //Makign callback if specified 254 //Makign callback if specified
258 if (this._callback) this._callback(); 255 if (this._callback) this._callback();
259 } 256 }
@@ -350,8 +347,14 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, {
350 //////////////////////////////////////////////////////////////////// 347 ////////////////////////////////////////////////////////////////////
351 // 348 //
352 initMontage: { 349 initMontage: {
353 value: function () { 350 value: function (scripttags) {
354 //initWithDocument(window.document) instantiateWithOwnerAndDocument(null, window.document) 351 //
352 this.iframe.contentWindow.document.body.addEventListener('mjsTemplateReady', function () {
353 //Initializing template with user's seriliazation
354 var template = this.iframe.contentWindow.mjsTemplate.create();
355 template.initWithDocument(this.iframe.contentWindow.document);
356 template.instantiateWithOwnerAndDocument(null, this.iframe.contentWindow.document, function (e){/*Nothing just a required extra parameter*/});
357 }.bind(this), false);
355 } 358 }
356 }, 359 },
357 //////////////////////////////////////////////////////////////////// 360 ////////////////////////////////////////////////////////////////////
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index b1916446..ade27728 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -225,7 +225,7 @@ exports.IoMediator = Montage.create(Component, {
225 mjsCreator = template.mjsTemplateCreator.create(), 225 mjsCreator = template.mjsTemplateCreator.create(),
226 mJsSerialization, 226 mJsSerialization,
227 montageTemplate; 227 montageTemplate;
228 // 228 //Creating instance of template creator
229 montageTemplate = mjsCreator.initWithDocument(template.document); 229 montageTemplate = mjsCreator.initWithDocument(template.document);
230 //Setting up expression for parsing URLs 230 //Setting up expression for parsing URLs
231 regexRootUrl = new RegExp(rootUrl.replace(/\//gi, '\\\/'), 'gi'); 231 regexRootUrl = new RegExp(rootUrl.replace(/\//gi, '\\\/'), 'gi');
@@ -239,7 +239,6 @@ exports.IoMediator = Montage.create(Component, {
239 template.file.content.document.head.innerHTML = template.head.innerHTML.replace(regexRootUrl, ''); 239 template.file.content.document.head.innerHTML = template.head.innerHTML.replace(regexRootUrl, '');
240 template.file.content.document.body.innerHTML = template.body.innerHTML.replace(regexRootUrl, ''); 240 template.file.content.document.body.innerHTML = template.body.innerHTML.replace(regexRootUrl, '');
241 } 241 }
242
243 //Copying attributes to maintain same properties as the <body> 242 //Copying attributes to maintain same properties as the <body>
244 for (var n in template.body.attributes) { 243 for (var n in template.body.attributes) {
245 if (template.body.attributes[n].value) { 244 if (template.body.attributes[n].value) {
@@ -250,6 +249,7 @@ exports.IoMediator = Montage.create(Component, {
250 //TODO: Add attribute copying for <HEAD> and <HTML> 249 //TODO: Add attribute copying for <HEAD> and <HTML>
251 250
252 251
252 //console.log(template.file.content.document.getElementsByTagName('html')[0].innerHTML);
253 253
254 254
255 //Getting all CSS (style or link) tags 255 //Getting all CSS (style or link) tags
@@ -266,7 +266,7 @@ exports.IoMediator = Montage.create(Component, {
266 } 266 }
267 ////////////////////////////////////////////////// 267 //////////////////////////////////////////////////
268 268
269 // 269 //Adding to tags to be removed form template
270 for (var f in njtemplatetags) { 270 for (var f in njtemplatetags) {
271 if (njtemplatetags[f].getAttribute) toremovetags.push(njtemplatetags[f]); 271 if (njtemplatetags[f].getAttribute) toremovetags.push(njtemplatetags[f]);
272 } 272 }
@@ -405,6 +405,31 @@ exports.IoMediator = Montage.create(Component, {
405 } 405 }
406 } 406 }
407 } 407 }
408 //
409 var matchingtags = [], scripts = template.file.content.document.getElementsByTagName('script'), webgltag, webgljstag, webgllibtag, webglrdgetag, mjstag, mjslibtag;
410 //
411 for (var i in scripts) {
412 if (scripts[i].getAttribute) {
413 if (scripts[i].getAttribute('data-ninja-webgl') !== null) {//TODO: Use querySelectorAll
414 matchingtags.push(scripts[i]);
415 }
416 if (scripts[i].getAttribute('data-ninja-webgl-js') !== null) {
417 webgljstag = scripts[i]; // TODO: Add logic to delete unneccesary tags
418 }
419 if (scripts[i].getAttribute('data-ninja-webgl-lib') !== null) {
420 webgllibtag = scripts[i]; // TODO: Add logic to delete unneccesary tags