aboutsummaryrefslogtreecommitdiff
path: root/js/io
diff options
context:
space:
mode:
authorJose Antonio Marquez2012-02-12 16:50:33 -0800
committerJose Antonio Marquez2012-02-12 16:50:33 -0800
commitb1fc4f84d92efeaa33ec239b662235c9e8218d0c (patch)
tree8f8c9aacb3c2a2315b8f44ca4400dfea95e21833 /js/io
parent9f2356c48b831d32d7278648656fe44b98bc4a1f (diff)
downloadninja-b1fc4f84d92efeaa33ec239b662235c9e8218d0c.tar.gz
File Save (HTML only)
Added the ability to save an HTML file from design view, need to add CSS detection and saving (of styles in <style> only). Also need to add 'Save All' for all file attached to the HTML file.
Diffstat (limited to 'js/io')
-rwxr-xr-xjs/io/document/html-document.js24
-rwxr-xr-xjs/io/system/coreioapi.js2
-rwxr-xr-xjs/io/system/fileio.js28
3 files changed, 50 insertions, 4 deletions
diff --git a/js/io/document/html-document.js b/js/io/document/html-document.js
index fbb34a1d..2ece76c5 100755
--- a/js/io/document/html-document.js
+++ b/js/io/document/html-document.js
@@ -14,6 +14,7 @@ var HTMLDocument = exports.HTMLDocument = Montage.create(baseDocumentModule.Base
14 _htmlTemplateUrl: { value: "user-document-templates/montage-application-cloud/index.html", enumerable: false}, 14 _htmlTemplateUrl: { value: "user-document-templates/montage-application-cloud/index.html", enumerable: false},
15 _iframe: { value: null, enumerable: false }, 15 _iframe: { value: null, enumerable: false },
16 _server: { value: null, enumerable: false }, 16 _server: { value: null, enumerable: false },
17 _templateDocument: { value: null, enumerable: false },
17 _selectionModel: { value: [], enumerable: false }, 18 _selectionModel: { value: [], enumerable: false },
18 _undoModel: { value: { "queue" : [], "position" : 0 }, enumerable: false}, 19 _undoModel: { value: { "queue" : [], "position" : 0 }, enumerable: false},
19 20
@@ -359,6 +360,10 @@ var HTMLDocument = exports.HTMLDocument = Montage.create(baseDocumentModule.Base
359 // 360 //
360 handleEvent: { 361 handleEvent: {
361 value: function(event){ 362 value: function(event){
363 //TODO: Clean up, using for prototyping save
364 this._templateDocument = {};
365 this._templateDocument.head = this.iframe.contentWindow.document.getElementById("userHead");;
366 this._templateDocument.body = this.iframe.contentWindow.document.getElementById("UserContent");;
362 // 367 //
363 this.documentRoot = this.iframe.contentWindow.document.getElementById("UserContent"); 368 this.documentRoot = this.iframe.contentWindow.document.getElementById("UserContent");
364 this.stageBG = this.iframe.contentWindow.document.getElementById("stageBG"); 369 this.stageBG = this.iframe.contentWindow.document.getElementById("stageBG");
@@ -373,7 +378,7 @@ var HTMLDocument = exports.HTMLDocument = Montage.create(baseDocumentModule.Base
373 this.iframe.contentWindow.document.getElementById("userHead").innerHTML = this._userDocument.content.head; 378 this.iframe.contentWindow.document.getElementById("userHead").innerHTML = this._userDocument.content.head;
374 379
375 380
376 381 //TODO: Look at code below and clean up
377 382
378 383
379 384
@@ -461,7 +466,21 @@ var HTMLDocument = exports.HTMLDocument = Montage.create(baseDocumentModule.Base
461 * public method 466 * public method
462 * 467 *
463 */ 468 */
464 save:{ 469 ////////////////////////////////////////////////////////////////////
470 //
471 save: {
472 enumerable: false,
473 value: function () {
474 //TODO: Add code view logic
475 return {mode: 'html', document: this._userDocument, head: this._templateDocument.head.innerHTML, body: this._templateDocument.body.innerHTML};
476 }
477 }
478 ////////////////////////////////////////////////////////////////////
479 ////////////////////////////////////////////////////////////////////
480
481
482 /*
483save:{
465 value:function(){ 484 value:function(){
466 try{ 485 try{
467 if(this.currentView === "design"){ 486 if(this.currentView === "design"){
@@ -477,5 +496,6 @@ var HTMLDocument = exports.HTMLDocument = Montage.create(baseDocumentModule.Base
477 } 496 }
478 } 497 }
479 } 498 }
499*/
480 500
481}); \ No newline at end of file 501}); \ No newline at end of file
diff --git a/js/io/system/coreioapi.js b/js/io/system/coreioapi.js
index b19f1e70..614b0850 100755
--- a/js/io/system/coreioapi.js
+++ b/js/io/system/coreioapi.js
@@ -450,7 +450,7 @@ window.hack = function (name, type) {
450 enumerable: false, 450 enumerable: false,
451 value: function(file) { 451 value: function(file) {
452 var retValue = { success:null, status:null }; 452 var retValue = { success:null, status:null };
453 if(file && file.uri && file.uri.length && file.contents && file.contents.length) { 453 if(file && file.uri && file.uri.length && file.contents) {
454 try { 454 try {
455 var serviceURL = this._prepareServiceURL(this.fileServiceURL, file.uri), 455 var serviceURL = this._prepareServiceURL(this.fileServiceURL, file.uri),
456 xhr = new XMLHttpRequest(); 456 xhr = new XMLHttpRequest();
diff --git a/js/io/system/fileio.js b/js/io/system/fileio.js
index 045fa2fd..f363ef9f 100755
--- a/js/io/system/fileio.js
+++ b/js/io/system/fileio.js
@@ -104,13 +104,39 @@ exports.FileIo = Montage.create(Component, {
104 // 104 //
105 saveFile: { 105 saveFile: {
106 enumerable: true, 106 enumerable: true,
107 value: function() { 107 value: function(file) {
108 //Checking for API to be available 108 //Checking for API to be available
109 if (!this.application.ninja.coreIoApi.cloudAvailable()) { 109 if (!this.application.ninja.coreIoApi.cloudAvailable()) {
110 //API not available, no IO action taken 110 //API not available, no IO action taken
111 return null; 111 return null;
112 } 112 }
113 //Peforming check for file to exist
114 var check = this.application.ninja.coreIoApi.fileExists({uri: file.uri}), status, result;
115 //Upon successful check, handling results
116 if (check.success) {
117 //Handling status of check
118 switch (check.status) {
119 case 204:
120 //File exists
121 result = this.application.ninja.coreIoApi.updateFile(file);
122 status = 204;
123 break;
124 case 404://createFile
125 //File does not exists, ready to be created
126 result = this.application.ninja.coreIoApi.createFile(file);
127 status = 404;
128 break;
129 default:
130 //Unknown Error
131 status = 500;
132 break;
133 }
134 } else {
135 //Unknown Error
136 status = 500;
137 }
113 // 138 //
139 return {status: status, result: result};
114 } 140 }
115 }, 141 },
116 //////////////////////////////////////////////////////////////////// 142 ////////////////////////////////////////////////////////////////////