diff options
-rwxr-xr-x | js/document/mediators/template.js | 49 | ||||
-rwxr-xr-x | js/document/models/base.js | 33 | ||||
-rw-r--r-- | js/mediators/io-mediator.js | 10 |
3 files changed, 66 insertions, 26 deletions
diff --git a/js/document/mediators/template.js b/js/document/mediators/template.js index 068a1f48..c9d46f79 100755 --- a/js/document/mediators/template.js +++ b/js/document/mediators/template.js | |||
@@ -8,7 +8,8 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot | |||
8 | // | 8 | // |
9 | var Montage = require("montage/core/core").Montage, | 9 | var Montage = require("montage/core/core").Montage, |
10 | Component = require("montage/ui/component").Component, | 10 | Component = require("montage/ui/component").Component, |
11 | TemplateCreator = require("node_modules/tools/template/template-creator").TemplateCreator; | 11 | TemplateCreator = require("node_modules/tools/template/template-creator").TemplateCreator, |
12 | ClassUuid = require("js/components/core/class-uuid").ClassUuid; | ||
12 | //////////////////////////////////////////////////////////////////////// | 13 | //////////////////////////////////////////////////////////////////////// |
13 | // | 14 | // |
14 | exports.TemplateDocumentMediator = Montage.create(Component, { | 15 | exports.TemplateDocumentMediator = Montage.create(Component, { |
@@ -93,7 +94,7 @@ exports.TemplateDocumentMediator = Montage.create(Component, { | |||
93 | //////////////////////////////////////////////////////////////////// | 94 | //////////////////////////////////////////////////////////////////// |
94 | //TODO: Expand to allow more templates, clean up variables | 95 | //TODO: Expand to allow more templates, clean up variables |
95 | parseNinjaTemplateToHtml: { | 96 | parseNinjaTemplateToHtml: { |
96 | value: function (template, ninjaWrapper, libCopyCallback) { | 97 | value: function (saveExternalData, template, ninjaWrapper, libCopyCallback) { |
97 | //TODO: Improve reference for rootUrl | 98 | //TODO: Improve reference for rootUrl |
98 | var regexRootUrl, | 99 | var regexRootUrl, |
99 | rootUrl = this.application.ninja.coreIoApi.rootUrl + escape((this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1])), | 100 | rootUrl = this.application.ninja.coreIoApi.rootUrl + escape((this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1])), |
@@ -328,7 +329,7 @@ exports.TemplateDocumentMediator = Montage.create(Component, { | |||
328 | 329 | ||
329 | 330 | ||
330 | 331 | ||
331 | //TODO: Make proper webGL/Canvas method | 332 | |
332 | 333 | ||
333 | // | 334 | // |
334 | var webgltag, webgllibtag, webglrdgetag, mjstag, mjslibtag, matchingtags = [], | 335 | var webgltag, webgllibtag, webglrdgetag, mjstag, mjslibtag, matchingtags = [], |
@@ -357,19 +358,33 @@ exports.TemplateDocumentMediator = Montage.create(Component, { | |||
357 | } | 358 | } |
358 | } | 359 | } |
359 | } | 360 | } |
361 | |||
362 | |||
363 | |||
364 | |||
365 | //TODO: Make proper webGL/Canvas method | ||
366 | |||
367 | |||
360 | //Checking for webGL elements in document | 368 | //Checking for webGL elements in document |
361 | if (template.webgl && template.webgl.length > 1) {//TODO: Should be length 0, hack for a temp fix | 369 | if (template.webgl && template.webgl.length > 1) {//TODO: Should be length 0, hack for a temp fix |
362 | var rdgeDirName, rdgeVersion, cvsDataDir = this.getCanvasDirectory(template.file.root), fileCvsDir, fileCvsDirAppend, cvsDirCounter = 1, fileOrgDataSrc; | 370 | var rdgeDirName, rdgeVersion, cvsDataDir = this.getCanvasDirectory(template.file.root), fileCvsDir, fileCvsDirAppend, cvsDirCounter = 1, fileOrgDataSrc; |
363 | // | 371 | // |
364 | if (cvsDataDir && !matchingtags.length && !webgllibtag) { | 372 | if (cvsDataDir && !matchingtags.length && !webgllibtag) { |
365 | fileCvsDir = cvsDataDir+template.file.name.split('.'+template.file.extension)[0]; | 373 | |
374 | if (template.libs.canvasId) { | ||
375 | libsobserver.canvasId = template.libs.canvasId; | ||
376 | } else { | ||
377 | libsobserver.canvasId = ClassUuid.generate(); | ||
378 | } | ||
379 | |||
380 | //Creating data directory, will include materials at a later time | ||
381 | fileCvsDir = cvsDataDir+template.file.name.split('.'+template.file.extension)[0]+'_'+libsobserver.canvasId; | ||
382 | |||
366 | if (!this._getUserDirectory(fileCvsDir)) { | 383 | if (!this._getUserDirectory(fileCvsDir)) { |
367 | fileCvsDirAppend = fileCvsDir+cvsDirCounter; | 384 | //TODO: create proper logic not to overwrite files |
368 | while (!this._getUserDirectory(fileCvsDirAppend)) { | 385 | console.log('error'); |
369 | fileCvsDirAppend = fileCvsDir+(cvsDirCounter++); | ||
370 | } | ||
371 | } | 386 | } |
372 | //TODO: Allow user overwrite | 387 | |
373 | fileCvsDir += '/'; | 388 | fileCvsDir += '/'; |
374 | } else if (webgllibtag && webgllibtag.getAttribute && webgllibtag.getAttribute('data-ninja-canvas-json') !== null) { | 389 | } else if (webgllibtag && webgllibtag.getAttribute && webgllibtag.getAttribute('data-ninja-canvas-json') !== null) { |
375 | fileOrgDataSrc = template.file.root+webgllibtag.getAttribute('data-ninja-canvas-json'); | 390 | fileOrgDataSrc = template.file.root+webgllibtag.getAttribute('data-ninja-canvas-json'); |
@@ -437,17 +452,9 @@ exports.TemplateDocumentMediator = Montage.create(Component, { | |||
437 | //Looping through data to create escaped array | 452 | //Looping through data to create escaped array |
438 | for (var j = 0; template.webgl[j]; j++) { | 453 | for (var j = 0; template.webgl[j]; j++) { |
439 | if (j === 0) { | 454 | if (j === 0) { |
440 | //if (fileCvsDir) { | 455 | json += '\n\t\t\t"' + escape(template.webgl[j]) + '"'; |
441 | // json += '\n\t\t\t"' + template.webgl[j] + '"'; | ||
442 | //} else { | ||
443 | json += '\n\t\t\t"' + escape(template.webgl[j]) + '"'; | ||
444 | //} | ||
445 | } else { | 456 | } else { |
446 | //if (fileCvsDir) { | 457 | json += ',\n\t\t\t"' + escape(template.webgl[j]) + '"'; |
447 | // json += ',\n\t\t\t"' + template.webgl[j] + '"'; | ||
448 | //} else { | ||
449 | json += ',\n\t\t\t"' + escape(template.webgl[j]) + '"'; | ||
450 | //} | ||
451 | } | 458 | } |
452 | } | 459 | } |
453 | //Closing array (make-shift JSON string to validate data in <script> tag) | 460 | //Closing array (make-shift JSON string to validate data in <script> tag) |
@@ -590,9 +597,9 @@ exports.TemplateDocumentMediator = Montage.create(Component, { | |||
590 | } | 597 | } |
591 | // | 598 | // |
592 | if (libsobserver.montage || libsobserver.canvas) { | 599 | if (libsobserver.montage || libsobserver.canvas) { |
593 | return {content: this.getPrettyHtml(cleanHTML.replace(this.getAppTemplatesUrlRegEx(), '')), libs: true}; | 600 | return {content: this.getPrettyHtml(cleanHTML.replace(this.getAppTemplatesUrlRegEx(), '')), libs: true, montageId: libsobserver.montageId, canvasId: libsobserver.canvasId}; |
594 | } else { | 601 | } else { |
595 | return {content: this.getPrettyHtml(cleanHTML.replace(this.getAppTemplatesUrlRegEx(), '')), libs: false}; | 602 | return {content: this.getPrettyHtml(cleanHTML.replace(this.getAppTemplatesUrlRegEx(), '')), libs: false, montageId: libsobserver.montageId, canvasId: libsobserver.canvasId}; |
596 | } | 603 | } |
597 | } | 604 | } |
598 | }, | 605 | }, |
diff --git a/js/document/models/base.js b/js/document/models/base.js index a3644815..c69c54a9 100755 --- a/js/document/models/base.js +++ b/js/document/models/base.js | |||
@@ -92,6 +92,11 @@ exports.BaseDocumentModel = Montage.create(Component, { | |||
92 | }, | 92 | }, |
93 | //////////////////////////////////////////////////////////////////// | 93 | //////////////////////////////////////////////////////////////////// |
94 | // | 94 | // |
95 | libs: { | ||
96 | value: {montage: false, canvas: false, montageId: null, canvasId: null} | ||
97 | }, | ||
98 | //////////////////////////////////////////////////////////////////// | ||
99 | // | ||
95 | switchViewTo: { | 100 | switchViewTo: { |
96 | value: function (view) { | 101 | value: function (view) { |
97 | // | 102 | // |
@@ -167,8 +172,9 @@ exports.BaseDocumentModel = Montage.create(Component, { | |||
167 | // | 172 | // |
168 | if (this.currentView === this.views.design) { | 173 | if (this.currentView === this.views.design) { |
169 | // | 174 | // |
170 | this.application.ninja.ioMediator.fileSave({ | 175 | var save = this.application.ninja.ioMediator.fileSave({ |
171 | mode: 'html', | 176 | mode: 'html', |
177 | libs: this.libs, | ||
172 | file: this.file, | 178 | file: this.file, |
173 | webgl: this.webGlHelper.glData, | 179 | webgl: this.webGlHelper.glData, |
174 | styles: this.getStyleSheets(), | 180 | styles: this.getStyleSheets(), |
@@ -178,6 +184,17 @@ exports.BaseDocumentModel = Montage.create(Component, { | |||
178 | body: this.views.design.iframe.contentWindow.document.body, | 184 | body: this.views.design.iframe.contentWindow.document.body, |
179 | mjsTemplateCreator: this.views.design.iframe.contentWindow.mjsTemplateCreator | 185 | mjsTemplateCreator: this.views.design.iframe.contentWindow.mjsTemplateCreator |
180 | }, this.handleSaved.bind({callback: callback, model: this}), libCopyCallback); | 186 | }, this.handleSaved.bind({callback: callback, model: this}), libCopyCallback); |
187 | //TODO: Improve detection during save routine | ||
188 | if (save) { | ||
189 | if (save.montageId) { | ||
190 | this.libs.montageId = save.montageId; | ||
191 | this.libs.montage = true; | ||
192 | } | ||
193 | if (save.canvasId) { | ||
194 | this.libs.canvasId = save.canvasId; | ||
195 | this.libs.canvas = true; | ||
196 | } | ||
197 | } | ||
181 | } else { | 198 | } else { |
182 | //TODO: Add logic to save code view data | 199 | //TODO: Add logic to save code view data |
183 | } | 200 | } |
@@ -196,8 +213,9 @@ exports.BaseDocumentModel = Montage.create(Component, { | |||
196 | // | 213 | // |
197 | if (this.currentView === this.views.design) { | 214 | if (this.currentView === this.views.design) { |
198 | // | 215 | // |
199 | this.application.ninja.ioMediator.fileSave({ | 216 | var save = this.application.ninja.ioMediator.fileSave({ |
200 | mode: 'html', | 217 | mode: 'html', |
218 | libs: this.libs, | ||
201 | file: this.file, | 219 | file: this.file, |
202 | webgl: this.webGlHelper.glData, | 220 | webgl: this.webGlHelper.glData, |
203 | css: this.getStyleSheets(), | 221 | css: this.getStyleSheets(), |
@@ -207,6 +225,17 @@ exports.BaseDocumentModel = Montage.create(Component, { | |||
207 | body: this.views.design.iframe.contentWindow.document.body, | 225 | body: this.views.design.iframe.contentWindow.document.body, |
208 | mjsTemplateCreator: this.views.design.iframe.contentWindow.mjsTemplateCreator | 226 | mjsTemplateCreator: this.views.design.iframe.contentWindow.mjsTemplateCreator |
209 | }, this.handleSaved.bind({callback: callback, model: this}), libCopyCallback); | 227 | }, this.handleSaved.bind({callback: callback, model: this}), libCopyCallback); |
228 | //TODO: Improve detection during save routine | ||
229 | if (save) { | ||
230 | if (save.montageId) { | ||
231 | this.libs.montageId = save.montageId; | ||
232 | this.libs.montage = true; | ||
233 | } | ||
234 | if (save.canvasId) { | ||
235 | this.libs.canvasId = save.canvasId; | ||
236 | this.libs.canvas = true; | ||
237 | } | ||
238 | } | ||
210 | } else { | 239 | } else { |
211 | //TODO: Add logic to save code view data | 240 | //TODO: Add logic to save code view data |
212 | } | 241 | } |
diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js index c9e10896..c487fef5 100644 --- a/js/mediators/io-mediator.js +++ b/js/mediators/io-mediator.js | |||
@@ -162,9 +162,9 @@ exports.IoMediator = Montage.create(Component, { | |||
162 | case 'html': | 162 | case 'html': |
163 | //Getting content from function to properly handle saving assets (as in external if flagged) | 163 | //Getting content from function to properly handle saving assets (as in external if flagged) |
164 | if (doc.template && (doc.template.type === 'banner' || doc.template.type === 'animation')) { | 164 | if (doc.template && (doc.template.type === 'banner' || doc.template.type === 'animation')) { |
165 | parsedDoc = this.tmplt.parseNinjaTemplateToHtml(doc, true, libCopyCallback); | 165 | parsedDoc = this.tmplt.parseNinjaTemplateToHtml(true, doc, true, libCopyCallback); |
166 | } else { | 166 | } else { |
167 | parsedDoc = this.tmplt.parseNinjaTemplateToHtml(doc, false, libCopyCallback); | 167 |