aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Antonio Marquez Russo2012-07-23 23:05:06 -0700
committerJose Antonio Marquez Russo2012-07-23 23:05:06 -0700
commit2952c2465b9a66076344087f899c5c836ad15ad6 (patch)
tree34274616fd6e0964c9102dde2dd32f20d0cd0089
parent5946ec8651547f846520add097850470a09df635 (diff)
downloadninja-2952c2465b9a66076344087f899c5c836ad15ad6.tar.gz
New: Adding method to display document in code view
Added method to parse in memory document in code view. This allows users to view current in memory document in code view while not saving the document or external files. Still need to handle naming of paths for files that require saving but are not saved (webGL and Montage libraries). Also, need to implement method to switch back from code view to design view, but will need Timeline fixes.
-rwxr-xr-xjs/components/layout/document-bar.reel/document-bar.js13
-rwxr-xr-xjs/document/document-html.js18
-rwxr-xr-xjs/document/mediators/template.js12
3 files changed, 26 insertions, 17 deletions
diff --git a/js/components/layout/document-bar.reel/document-bar.js b/js/components/layout/document-bar.reel/document-bar.js
index f5e61a18..77f05bc1 100755
--- a/js/components/layout/document-bar.reel/document-bar.js
+++ b/js/components/layout/document-bar.reel/document-bar.js
@@ -238,7 +238,18 @@ exports.DocumentBar = Montage.create(Component, {
238 iBtn.setAttribute('class', 'inactive'); 238 iBtn.setAttribute('class', 'inactive');
239 aBtn.removeAttribute('class'); 239 aBtn.removeAttribute('class');
240 //TODO: Add document parsing to reload view 240 //TODO: Add document parsing to reload view
241 this._currentDocument.reloadView(view, this.fileTemplate); 241 this._currentDocument.reloadView(view, this.fileTemplate, {
242 mode: 'html',
243 libs: this._currentDocument.model.libs,
244 file: this._currentDocument.model.file,
245 webgl: this._currentDocument.model.webGlHelper.glData,
246 styles: this._currentDocument.model.getStyleSheets(),
247 template: this._currentDocument.fileTemplate,
248 document: this._currentDocument.model.views.design.iframe.contentWindow.document,
249 head: this._currentDocument.model.views.design.iframe.contentWindow.document.head,
250 body: this._currentDocument.model.views.design.iframe.contentWindow.document.body,
251 mjsTemplateCreator: this._currentDocument.model.views.design.iframe.contentWindow.mjsTemplateCreator
252 });
242 } 253 }
243 } 254 }
244 }, 255 },
diff --git a/js/document/document-html.js b/js/document/document-html.js
index 569b6d8b..81a8912b 100755
--- a/js/document/document-html.js
+++ b/js/document/document-html.js
@@ -135,8 +135,7 @@ exports.HtmlDocument = Montage.create(Component, {
135 //////////////////////////////////////////////////////////////////// 135 ////////////////////////////////////////////////////////////////////
136 //TODO: Make into one method to use here and one init 136 //TODO: Make into one method to use here and one init
137 reloadView: { 137 reloadView: {
138 value: function (view, template) { 138 value: function (view, template, doc) {
139 var content;
140 // 139 //
141 this.model.parentContainer.removeChild(this.model.views.design.iframe); 140 this.model.parentContainer.removeChild(this.model.views.design.iframe);
142 //Initiliazing views and hiding 141 //Initiliazing views and hiding
@@ -167,14 +166,13 @@ exports.HtmlDocument = Montage.create(Component, {
167 this._observer.observe(this.model.views.design.document.head, {childList: true}); 166 this._observer.observe(this.model.views.design.document.head, {childList: true});
168 }.bind(this), template, {viewCallback: this.handleViewReady, context: this}); 167 }.bind(this), template, {viewCallback: this.handleViewReady, context: this});
169 } else if(view === 'code'){ 168 } else if(view === 'code'){
170 169 //TODO: Add logic to handle external changed files
171 170 //Checking for template type and not saving external data
172 //TODO: Parse in memory document through template to get current document 171 if (doc.template && (doc.template.type === 'banner' || doc.template.type === 'animation')) {
173 content = '<html><head>'+this.model.file.content.head+'</head><body>'+this.model.file.content.body+'</body></html>';//dummy 172 this.model.views.code.load(this.application.ninja.ioMediator.tmplt.parseNinjaTemplateToHtml(false, doc, true, null).content);
174 173 } else {
175 174 this.model.views.code.load(this.application.ninja.ioMediator.tmplt.parseNinjaTemplateToHtml(false, doc, false, null).content);
176 // 175 }
177 this.model.views.code.load(content);
178 //Setting current view object to code 176 //Setting current view object to code
179 this.currentView = 'code'; 177 this.currentView = 'code';
180 this.model.currentView = this.model.views.code; 178 this.model.currentView = this.model.views.code;
diff --git a/js/document/mediators/template.js b/js/document/mediators/template.js
index 4065f471..c68cfe72 100755
--- a/js/document/mediators/template.js
+++ b/js/document/mediators/template.js
@@ -47,7 +47,7 @@ exports.TemplateDocumentMediator = Montage.create(Component, {
47 // 47 //
48 getAppTemplatesUrlRegEx: { 48 getAppTemplatesUrlRegEx: {
49 value: function () { 49 value: function () {
50 var regex = new RegExp(chrome.extension.getURL(this.application.ninja.currentDocument.model.views.design.iframe.src.split(chrome.extension.getURL('/'))[1]).replace(/\//gi, '\\\/'), 'gi'); 50 var regex = new RegExp(chrome.extension.getURL(this.application.ninja.currentDocument.model.views.design.document.baseURI.split(chrome.extension.getURL('/'))[1]).replace(/\//gi, '\\\/'), 'gi');
51 return regex; 51 return regex;
52 } 52 }
53 }, 53 },
@@ -326,7 +326,7 @@ exports.TemplateDocumentMediator = Montage.create(Component, {
326 } 326 }
327 } 327 }
328 } 328 }
329 } else if (template.css) { 329 } else if (template.css && saveExternalData) {
330 //Getting all style and link tags 330 //Getting all style and link tags
331 var styleCounter = 0, 331 var styleCounter = 0,
332 docStyles = template.file.content.document.getElementsByTagName('style'), 332 docStyles = template.file.content.document.getElementsByTagName('style'),
@@ -480,7 +480,7 @@ exports.TemplateDocumentMediator = Montage.create(Component, {
480 //Copy webGL library if needed 480 //Copy webGL library if needed
481 for (var i in this.application.ninja.coreIoApi.ninjaLibrary.libs) { 481 for (var i in this.application.ninja.coreIoApi.ninjaLibrary.libs) {
482 //Checking for RDGE library to be available 482 //Checking for RDGE library to be available
483 if (this.application.ninja.coreIoApi.ninjaLibrary.libs[i].name === 'RDGE') { 483 if (this.application.ninja.coreIoApi.ninjaLibrary.libs[i].name === 'RDGE' && saveExternalData) {
484 rdgeDirName = (this.application.ninja.coreIoApi.ninjaLibrary.libs[i].name + this.application.ninja.coreIoApi.ninjaLibrary.libs[i].version).toLowerCase(); 484 rdgeDirName = (this.application.ninja.coreIoApi.ninjaLibrary.libs[i].name + this.application.ninja.coreIoApi.ninjaLibrary.libs[i].version).toLowerCase();
485 rdgeVersion = this.application.ninja.coreIoApi.ninjaLibrary.libs[i].version; 485 rdgeVersion = this.application.ninja.coreIoApi.ninjaLibrary.libs[i].version;
486 this.application.ninja.coreIoApi.ninjaLibrary.copyLibToCloud(template.file.root, rdgeDirName, function(result) {libsobserver.canvasCopied = result; this.libCopied(libsobserver);}.bind(this)); 486 this.application.ninja.coreIoApi.ninjaLibrary.copyLibToCloud(template.file.root, rdgeDirName, function(result) {libsobserver.canvasCopied = result; this.libCopied(libsobserver);}.bind(this));
@@ -564,7 +564,7 @@ exports.TemplateDocumentMediator = Montage.create(Component, {
564 webgllibtag.setAttribute('data-ninja-canvas-json', this.application.ninja.coreIoApi.rootUrl+'/'+cvsDataFileUrl); 564 webgllibtag.setAttribute('data-ninja-canvas-json', this.application.ninja.coreIoApi.rootUrl+'/'+cvsDataFileUrl);
565 webgllibtag.setAttribute('data-ninja-canvas-libpath', rdgeDirName); 565 webgllibtag.setAttribute('data-ninja-canvas-libpath', rdgeDirName);
566 // 566 //
567 if (cvsDataFileCheck.status === 404 || cvsDataFileCheck.status === 204) { 567 if (saveExternalData && (cvsDataFileCheck.status === 404 || cvsDataFileCheck.status === 204)) {
568 //Saving file 568 //Saving file
569 cvsDataFileOperation = this.application.ninja.ioMediator.fio.saveFile({uri: cvsDataFilePath, contents: json}); 569 cvsDataFileOperation = this.application.ninja.ioMediator.fio.saveFile({uri: cvsDataFilePath, contents: json});
570 } else { 570 } else {
@@ -592,13 +592,13 @@ exports.TemplateDocumentMediator = Montage.create(Component, {
592 592
593 593
594 //TODO: Make proper Montage method 594 //TODO: Make proper Montage method
595 595 var mjsDirName, mjsVersion;
596 //Checking for Montage 596 //Checking for Montage
597 if (mJsSerialization) { 597 if (mJsSerialization) {
598 //Copy Montage library if needed 598 //Copy Montage library if needed
599 for (var i in this.application.ninja.coreIoApi.ninjaLibrary.libs) { 599 for (var i in this.application.ninja.coreIoApi.ninjaLibrary.libs) {
600 //Checking for Montage library to be available 600 //Checking for Montage library to be available
601 if (this.application.ninja.coreIoApi.ninjaLibrary.libs[i].name === 'Montage') { 601 if (this.application.ninja.coreIoApi.ninjaLibrary.libs[i].name === 'Montage' && saveExternalData) {
602 mjsDirName = (this.application.ninja.coreIoApi.ninjaLibrary.libs[i].name + this.application.ninja.coreIoApi.ninjaLibrary.libs[i].version).toLowerCase(); 602 mjsDirName = (this.application.ninja.coreIoApi.ninjaLibrary.libs[i].name + this.application.ninja.coreIoApi.ninjaLibrary.libs[i].version).toLowerCase();
603 mjsVersion = this.application.ninja.coreIoApi.ninjaLibrary.libs[i].version; 603 mjsVersion = this.application.ninja.coreIoApi.ninjaLibrary.libs[i].version;
604 this.application.ninja.coreIoApi.ninjaLibrary.copyLibToCloud(template.file.root, mjsDirName, function(result) {libsobserver.montageCopied = result; this.libCopied(libsobserver);}.bind(this)); 604 this.application.ninja.coreIoApi.ninjaLibrary.copyLibToCloud(template.file.root, mjsDirName, function(result) {libsobserver.montageCopied = result; this.libCopied(libsobserver);}.bind(this));