From 4504972c1f3b9bf1d02a4484a07a8a85cf9ccee2 Mon Sep 17 00:00:00 2001 From: Jose Antonio Marquez Date: Tue, 8 May 2012 10:37:38 -0700 Subject: Adding Chrome Preview --- js/document/models/base.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'js/document/models/base.js') diff --git a/js/document/models/base.js b/js/document/models/base.js index 746922ad..5667fb24 100755 --- a/js/document/models/base.js +++ b/js/document/models/base.js @@ -68,19 +68,24 @@ exports.BaseDocumentModel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // switchViewTo: { - value: function () { + value: function (view) { // } }, //////////////////////////////////////////////////////////////////// - // + //TODO: Add API to allow other browser support browserPreview: { value: function (browser) { - // + + //TODO: Add file save before previewing + + //Currently only supporting current browser (Chrome, obviously) switch (browser) { case 'chrome': + window.open(this.application.ninja.coreIoApi.rootUrl + this.file.uri.split(this.application.ninja.coreIoApi.cloudData.root)[1]); break; default: + window.open(this.application.ninja.coreIoApi.rootUrl + this.file.uri.split(this.application.ninja.coreIoApi.cloudData.root)[1]); break; } } -- cgit v1.2.3 From a1e8540f5656e62db6a89f3af7829be6b259b7ed Mon Sep 17 00:00:00 2001 From: Jose Antonio Marquez Date: Tue, 8 May 2012 17:33:13 -0700 Subject: Adding SAVE for I/O Adding save functionality to new template. Need to implement user UI for prompts and also clean up... --- js/document/models/base.js | 102 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 86 insertions(+), 16 deletions(-) (limited to 'js/document/models/base.js') diff --git a/js/document/models/base.js b/js/document/models/base.js index 5667fb24..2bbbe501 100755 --- a/js/document/models/base.js +++ b/js/document/models/base.js @@ -76,39 +76,104 @@ exports.BaseDocumentModel = Montage.create(Component, { //TODO: Add API to allow other browser support browserPreview: { value: function (browser) { - - //TODO: Add file save before previewing - - //Currently only supporting current browser (Chrome, obviously) - switch (browser) { - case 'chrome': - window.open(this.application.ninja.coreIoApi.rootUrl + this.file.uri.split(this.application.ninja.coreIoApi.cloudData.root)[1]); - break; - default: - window.open(this.application.ninja.coreIoApi.rootUrl + this.file.uri.split(this.application.ninja.coreIoApi.cloudData.root)[1]); - break; - } + //Generating URL for document + var url = this.application.ninja.coreIoApi.rootUrl + this.file.uri.split(this.application.ninja.coreIoApi.cloudData.root)[1]; + //TODO: Add logic to prompt user to save (all) before preview + this.saveAll(function (result) { + //Currently only supporting current browser (Chrome, obviously) + switch (this.browser) { + case 'chrome': + window.open(this.url); + break; + default: + window.open(this.url); + break; + } + }.bind({browser: browser, url: url})); } }, + //////////////////////////////////////////////////////////////////// + // + getStyleSheets: { + value: function () { + // + var styles = []; + // + for (var k in this.views.design.iframe.contentWindow.document.styleSheets) { + if (this.views.design.iframe.contentWindow.document.styleSheets[k].ownerNode && this.views.design.iframe.contentWindow.document.styleSheets[k].ownerNode.getAttribute) { + if (this.views.design.iframe.contentWindow.document.styleSheets[k].ownerNode.getAttribute('data-ninja-template') === null) { + styles.push(this.views.design.iframe.contentWindow.document.styleSheets[k]); + } + } + } + // + return styles; + } + }, //////////////////////////////////////////////////////////////////// // save: { - value: function () { + value: function (callback) { // + if (this.currentView === this.views.design) { + // + this.application.ninja.ioMediator.fileSave({ + mode: 'html', + file: this.file, + webgl: this.webGlHelper.glData, + styles: this.getStyleSheets(), + document: this.views.design.iframe.contentWindow.document, + head: this.views.design.iframe.contentWindow.document.head, + body: this.views.design.iframe.contentWindow.document.body + }, callback.bind(this)); + } else { + //TODO: Add logic to save code view data + } + // + if (this.needsSave) { + //Save + } else { + //Ignore command + } } }, //////////////////////////////////////////////////////////////////// // - saveAs: { - value: function () { + saveAll: { + value: function (callback) { + // + if (this.currentView === this.views.design) { + // + this.application.ninja.ioMediator.fileSave({ + mode: 'html', + file: this.file, + webgl: this.webGlHelper.glData, + css: this.getStyleSheets(), + document: this.views.design.iframe.contentWindow.document, + head: this.views.design.iframe.contentWindow.document.head, + body: this.views.design.iframe.contentWindow.document.body + }, callback.bind(this)); + } else { + //TODO: Add logic to save code view data + } // + if (this.needsSave) { + //Save + } else { + //Ignore command + } } }, //////////////////////////////////////////////////////////////////// // - saveAll: { + saveAs: { value: function () { // + if (this.needsSave) { + //Save current file on memory + } else { + //Copy file from disk + } } }, //////////////////////////////////////////////////////////////////// @@ -116,6 +181,11 @@ exports.BaseDocumentModel = Montage.create(Component, { close: { value: function () { // + if (this.needsSave) { + //Prompt user to save of lose data + } else { + //Close file + } } } //////////////////////////////////////////////////////////////////// -- cgit v1.2.3 From fb7a3aa9ce0d9b99dca79cfb89951b5c51523250 Mon Sep 17 00:00:00 2001 From: Jose Antonio Marquez Date: Thu, 10 May 2012 14:54:38 -0700 Subject: Adding partial close functionality --- js/document/models/base.js | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) (limited to 'js/document/models/base.js') diff --git a/js/document/models/base.js b/js/document/models/base.js index 2bbbe501..ebfb73b8 100755 --- a/js/document/models/base.js +++ b/js/document/models/base.js @@ -60,6 +60,11 @@ exports.BaseDocumentModel = Montage.create(Component, { get: function() {return this._currentView;}, set: function(value) {this._currentView = value;} }, + //////////////////////////////////////////////////////////////////// + // + parentContainer: { + value: null + }, //////////////////////////////////////////////////////////////////// // views: { @@ -114,6 +119,12 @@ exports.BaseDocumentModel = Montage.create(Component, { // save: { value: function (callback) { + // + if (this.needsSave) { + //Save + } else { + //Ignore command + } // if (this.currentView === this.views.design) { // @@ -129,18 +140,18 @@ exports.BaseDocumentModel = Montage.create(Component, { } else { //TODO: Add logic to save code view data } - // - if (this.needsSave) { - //Save - } else { - //Ignore command - } } }, //////////////////////////////////////////////////////////////////// // saveAll: { value: function (callback) { + // + if (this.needsSave) { + //Save + } else { + //Ignore command + } // if (this.currentView === this.views.design) { // @@ -156,12 +167,7 @@ exports.BaseDocumentModel = Montage.create(Component, { } else { //TODO: Add logic to save code view data } - // - if (this.needsSave) { - //Save - } else { - //Ignore command - } + } }, //////////////////////////////////////////////////////////////////// @@ -179,13 +185,24 @@ exports.BaseDocumentModel = Montage.create(Component, { //////////////////////////////////////////////////////////////////// // close: { - value: function () { + value: function (view, callback) { + //Outcome of close (pending on save logic) + var success; // if (this.needsSave) { //Prompt user to save of lose data } else { //Close file + success = true; + } + // + if (this.views.design && (!view || view === 'design')) { + // + this.parentContainer.removeChild(this.views.design.iframe); + this.views.design = null; } + // + if (callback) callback(success); } } //////////////////////////////////////////////////////////////////// -- cgit v1.2.3 From c87e538fdc337639bc4d54bb087dbf2b4f20297f Mon Sep 17 00:00:00 2001 From: Jose Antonio Marquez Date: Fri, 11 May 2012 14:41:20 -0700 Subject: Adding support for new templates This is supported for NEW and OPEN, SAVE is not supported yet by I/O. Saving works, but it will not be a banner template. --- js/document/models/base.js | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'js/document/models/base.js') diff --git a/js/document/models/base.js b/js/document/models/base.js index ebfb73b8..0f58e75c 100755 --- a/js/document/models/base.js +++ b/js/document/models/base.js @@ -60,6 +60,11 @@ exports.BaseDocumentModel = Montage.create(Component, { get: function() {return this._currentView;}, set: function(value) {this._currentView = value;} }, + //////////////////////////////////////////////////////////////////// + // + fileTemplate: { + value: null + }, //////////////////////////////////////////////////////////////////// // parentContainer: { -- cgit v1.2.3 From bffc9b2a4bd3480a6e369a36660ce402f7e16aba Mon Sep 17 00:00:00 2001 From: Jose Antonio Marquez Date: Tue, 15 May 2012 12:01:37 -0700 Subject: File save for banner template Adding file save for templates, completing I/O. --- js/document/models/base.js | 2 ++ 1 file changed, 2 insertions(+) (limited to 'js/document/models/base.js') diff --git a/js/document/models/base.js b/js/document/models/base.js index 0f58e75c..5f2a5893 100755 --- a/js/document/models/base.js +++ b/js/document/models/base.js @@ -138,6 +138,7 @@ exports.BaseDocumentModel = Montage.create(Component, { file: this.file, webgl: this.webGlHelper.glData, styles: this.getStyleSheets(), + template: this.fileTemplate, document: this.views.design.iframe.contentWindow.document, head: this.views.design.iframe.contentWindow.document.head, body: this.views.design.iframe.contentWindow.document.body @@ -165,6 +166,7 @@ exports.BaseDocumentModel = Montage.create(Component, { file: this.file, webgl: this.webGlHelper.glData, css: this.getStyleSheets(), + template: this.fileTemplate, document: this.views.design.iframe.contentWindow.document, head: this.views.design.iframe.contentWindow.document.head, body: this.views.design.iframe.contentWindow.document.body -- cgit v1.2.3