aboutsummaryrefslogtreecommitdiff
path: root/js/controllers/document-controller.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/controllers/document-controller.js')
-rwxr-xr-xjs/controllers/document-controller.js391
1 files changed, 188 insertions, 203 deletions
diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js
index c6bf4c6b..cf46e73e 100755
--- a/js/controllers/document-controller.js
+++ b/js/controllers/document-controller.js
@@ -21,10 +21,6 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
21 value: false 21 value: false
22 }, 22 },
23 23
24 webTemplate: {
25 value: false
26 },
27
28 _documents: { 24 _documents: {
29 value: [] 25 value: []
30 }, 26 },
@@ -33,6 +29,10 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
33 value: false 29 value: false
34 }, 30 },
35 31
32 _hackInitialStyles: {
33 value: true
34 },
35
36 _activeDocument: { value: null }, 36 _activeDocument: { value: null },
37 _iframeCounter: { value: 1, enumerable: false }, 37 _iframeCounter: { value: 1, enumerable: false },
38 _iframeHolder: { value: null, enumerable: false }, 38 _iframeHolder: { value: null, enumerable: false },
@@ -44,8 +44,10 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
44 return this._activeDocument; 44 return this._activeDocument;
45 }, 45 },
46 set: function(doc) { 46 set: function(doc) {
47 if(!!this._activeDocument){ this._activeDocument.isActive = false;} 47// if(!!this._activeDocument){ this._activeDocument.isActive = false;}
48
48 this._activeDocument = doc; 49 this._activeDocument = doc;
50
49 if(!!this._activeDocument){ 51 if(!!this._activeDocument){
50 if(this._documents.indexOf(doc) === -1) this._documents.push(doc); 52 if(this._documents.indexOf(doc) === -1) this._documents.push(doc);
51 this._activeDocument.isActive = true; 53 this._activeDocument.isActive = true;
@@ -69,37 +71,25 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
69 this.eventManager.addEventListener("executeFileCloseAll", this, false); 71 this.eventManager.addEventListener("executeFileCloseAll", this, false);
70 72
71 this.eventManager.addEventListener("styleSheetDirty", this, false); 73 this.eventManager.addEventListener("styleSheetDirty", this, false);
72
73 this.eventManager.addEventListener("addComponentFirstDraw", this, false);
74
75 // Temporary add listeners for the new stage templates
76 this.eventManager.addEventListener("executeWebpageOpen", this, false);
77 this.eventManager.addEventListener("executeNewWebpage", this, false);
78 } 74 }
79 }, 75 },
80 76
81 handleAddComponentFirstDraw: {
82 value: function (e) {
83 //TODO: Add logic to reparse the document for dynamically added styles
84 //console.log(e);
85 }
86 },
87
88
89
90
91 77
92//////////////////////////////////////////////////////////////////// 78 //TODO: Ensure these APIs are not needed
79 ////////////////////////////////////////////////////////////////////
93 // 80 //
94 handleWebRequest: { 81 handleWebRequest: {
95 value: function (request) { 82 value: function (request) {
96 //TODO: Check if frameId is proper 83 //TODO: Check if frameId is proper
97 if (this._hackRootFlag && request.parentFrameId !== -1) { 84 if (this._hackRootFlag && request.parentFrameId !== -1) {
98 //TODO: Optimize creating string 85 //Checking for proper URL redirect (from different directories)
99 //console.log(request); 86 if (request.url.indexOf('js/document/templates/banner') !== -1) {
100 //console.log(this.application.ninja.coreIoApi.rootUrl+this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1], request.url); 87 return {redirectUrl: this.application.ninja.coreIoApi.rootUrl+this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1]+request.url.split(chrome.extension.getURL('js/document/templates/banner/'))[1]};
101 //return {redirectUrl: this.application.ninja.coreIoApi.rootUrl+this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1]+request.url.split('/')[request.url.split('/').length-1]}; 88 } else if (request.url.indexOf('js/document/templates/html') !== -1) {
102 return {redirectUrl: this.application.ninja.coreIoApi.rootUrl+this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1]+request.url.split(chrome.extension.getURL('js/document/templates/montage-html/'))[1]}; 89 return {redirectUrl: this.application.ninja.coreIoApi.rootUrl+this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1]+request.url.split(chrome.extension.getURL('js/document/templates/html/'))[1]};
90 } else {
91 //Error, not a valid folder
92 }
103 } 93 }
104 } 94 }
105 }, 95 },
@@ -140,47 +130,46 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
140 } 130 }
141 }, 131 },
142 132
143 handleExecuteWebpageOpen: {
144 value: function(event) {
145 this.webTemplate = true;
146 this.handleExecuteFileOpen(event);
147 }
148 },
149
150 handleExecuteNewWebpage: {
151 value: function(event) {
152 this.webTemplate = true;
153 this.handleExecuteNewFile(event);
154 }
155 },
156
157 handleExecuteNewFile: { 133 handleExecuteNewFile: {
158 value: function(event) { 134 value: function(event) {
159 var newFileSettings = event._event.settings || {}; 135 var newFileSettings = event._event.settings || {};
160 if (this.application.ninja.coreIoApi.cloudAvailable()) { 136 if (this.application.ninja.coreIoApi.cloudAvailable()) {
161 newFileSettings.callback = this.createNewFile.bind(this); 137 newFileSettings.callback = this.createNewFile.bind(this);
162 this.application.ninja.newFileController.showNewFileDialog(newFileSettings); 138 this.application.ninja.newFileController.showNewFileDialog(newFileSettings);
163 }
164 } 139 }
140 }
165 }, 141 },
166 //////////////////////////////////////////////////////////////////// 142 ////////////////////////////////////////////////////////////////////
167 //TODO: Check for appropiate structures 143 //
168 handleExecuteSave: { 144 handleExecuteSave: {
169 value: function(event) { 145 value: function(event) {
170 if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ 146 //
171 //Text and HTML document classes should return the same save object for fileSave 147 if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){
172 this.application.ninja.ioMediator.fileSave(this.activeDocument.save(), this.fileSaveResult.bind(this)); 148 //
173 } 149 this.activeDocument.model.save(this.testCallback.bind(this)); //this.fileSaveResult.bind(this)
150 } else {
151 //Error:
152 }
174 } 153 }
175 }, 154 },
155 testCallback: {
156 value: function (value) {
157 console.log(value);
158 //TODO: Move this to the model.save()
159 this.activeDocument.model.needsSave = false;
160 }
161 },
176 //////////////////////////////////////////////////////////////////// 162 ////////////////////////////////////////////////////////////////////
177 //TODO: Check for appropiate structures 163 //TODO: Check for appropiate structures
178 handleExecuteSaveAll: { 164 handleExecuteSaveAll: {
179 value: function(event) { 165 value: function(event) {
180 if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ 166 //
181 //Text and HTML document classes should return the same save object for fileSave 167 if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){
182 this.application.ninja.ioMediator.fileSave(this.activeDocument.saveAll(), this.fileSaveResult.bind(this)); 168 //
183 } 169 this.activeDocument.model.saveAll(this.testCallback.bind(this)); //this.fileSaveResult.bind(this)
170 } else {
171 //Error:
172 }
184 } 173 }
185 }, 174 },
186 //////////////////////////////////////////////////////////////////// 175 ////////////////////////////////////////////////////////////////////
@@ -198,9 +187,10 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
198 //////////////////////////////////////////////////////////////////// 187 ////////////////////////////////////////////////////////////////////
199 handleExecuteFileClose:{ 188 handleExecuteFileClose:{
200 value: function(event) { 189 value: function(event) {
201 if(this.activeDocument && this.application.ninja.coreIoApi.cloudAvailable()){ 190 if (this.activeDocument) {
202 this.closeDocument(this.activeDocument.uuid); 191// this.activeDocument.closeDocument();
203 } 192 this.closeFile(this.activeDocument);
193 }
204 } 194 }
205 }, 195 },
206 //////////////////////////////////////////////////////////////////// 196 ////////////////////////////////////////////////////////////////////
@@ -219,7 +209,7 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
219 fileSaveResult: { 209 fileSaveResult: {
220 value: function (result) { 210 value: function (result) {
221 if((result.status === 204) || (result.status === 404)){//204=>existing file || 404=>new file... saved 211 if((result.status === 204) || (result.status === 404)){//204=>existing file || 404=>new file... saved
222 this.activeDocument.needsSave = false; 212 this.activeDocument.model.needsSave = false;
223 if(this.application.ninja.currentDocument !== null){ 213 if(this.application.ninja.currentDocument !== null){
224 //clear Dirty StyleSheets for the saved document 214 //clear Dirty StyleSheets for the saved document
225 this.application.ninja.stylesController.clearDirtyStyleSheets(this.application.ninja.currentDocument); 215 this.application.ninja.stylesController.clearDirtyStyleSheets(this.application.ninja.currentDocument);
@@ -228,20 +218,20 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
228 } 218 }
229 }, 219 },
230 220
221
222
223 ////////////////////////////////////////////////////////////////////
224 //
231 createNewFile:{ 225 createNewFile:{
232 value:function(newFileObj){ 226 value:function(newFileObj){
233 //console.log(newFileObj);//contains the template uri and the new file uri 227 //
234 if(!newFileObj) return; 228 if(!newFileObj) return;
235 this.application.ninja.ioMediator.fileNew(newFileObj.newFilePath, newFileObj.fileTemplateUri, this.openNewFileCallback.bind(this)); 229 //
236