diff options
Diffstat (limited to 'js/controllers/document-controller.js')
-rwxr-xr-x | js/controllers/document-controller.js | 198 |
1 files changed, 132 insertions, 66 deletions
diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js index c6bf4c6b..1e894f02 100755 --- a/js/controllers/document-controller.js +++ b/js/controllers/document-controller.js | |||
@@ -33,6 +33,10 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
33 | value: false | 33 | value: false |
34 | }, | 34 | }, |
35 | 35 | ||
36 | _hackInitialStyles: { | ||
37 | value: true | ||
38 | }, | ||
39 | |||
36 | _activeDocument: { value: null }, | 40 | _activeDocument: { value: null }, |
37 | _iframeCounter: { value: 1, enumerable: false }, | 41 | _iframeCounter: { value: 1, enumerable: false }, |
38 | _iframeHolder: { value: null, enumerable: false }, | 42 | _iframeHolder: { value: null, enumerable: false }, |
@@ -44,8 +48,10 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
44 | return this._activeDocument; | 48 | return this._activeDocument; |
45 | }, | 49 | }, |
46 | set: function(doc) { | 50 | set: function(doc) { |
47 | if(!!this._activeDocument){ this._activeDocument.isActive = false;} | 51 | // if(!!this._activeDocument){ this._activeDocument.isActive = false;} |
52 | |||
48 | this._activeDocument = doc; | 53 | this._activeDocument = doc; |
54 | |||
49 | if(!!this._activeDocument){ | 55 | if(!!this._activeDocument){ |
50 | if(this._documents.indexOf(doc) === -1) this._documents.push(doc); | 56 | if(this._documents.indexOf(doc) === -1) this._documents.push(doc); |
51 | this._activeDocument.isActive = true; | 57 | this._activeDocument.isActive = true; |
@@ -70,36 +76,28 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
70 | 76 | ||
71 | this.eventManager.addEventListener("styleSheetDirty", this, false); | 77 | this.eventManager.addEventListener("styleSheetDirty", this, false); |
72 | 78 | ||
73 | this.eventManager.addEventListener("addComponentFirstDraw", this, false); | ||
74 | |||
75 | // Temporary add listeners for the new stage templates | 79 | // Temporary add listeners for the new stage templates |
76 | this.eventManager.addEventListener("executeWebpageOpen", this, false); | 80 | this.eventManager.addEventListener("executeWebpageOpen", this, false); |
77 | this.eventManager.addEventListener("executeNewWebpage", this, false); | 81 | this.eventManager.addEventListener("executeNewWebpage", this, false); |
78 | } | 82 | } |
79 | }, | 83 | }, |
80 | 84 | ||
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 | 85 | ||
92 | //////////////////////////////////////////////////////////////////// | 86 | //TODO: Ensure these APIs are not needed |
87 | //////////////////////////////////////////////////////////////////// | ||
93 | // | 88 | // |
94 | handleWebRequest: { | 89 | handleWebRequest: { |
95 | value: function (request) { | 90 | value: function (request) { |
96 | //TODO: Check if frameId is proper | 91 | //TODO: Check if frameId is proper |
97 | if (this._hackRootFlag && request.parentFrameId !== -1) { | 92 | if (this._hackRootFlag && request.parentFrameId !== -1) { |
98 | //TODO: Optimize creating string | 93 | //Checking for proper URL redirect (from different directories) |
99 | //console.log(request); | 94 | 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); | 95 | 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]}; | 96 | } 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]}; | 97 | 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]}; |
98 | } else { | ||
99 | //Error, not a valid folder | ||
100 | } | ||
103 | } | 101 | } |
104 | } | 102 | } |
105 | }, | 103 | }, |
@@ -155,32 +153,43 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
155 | }, | 153 | }, |
156 | 154 | ||
157 | handleExecuteNewFile: { | 155 | handleExecuteNewFile: { |
158 | value: function(event) { | 156 | value: function(event) { |
159 | var newFileSettings = event._event.settings || {}; | 157 | var newFileSettings = event._event.settings || {}; |
160 | if (this.application.ninja.coreIoApi.cloudAvailable()) { | 158 | if (this.application.ninja.coreIoApi.cloudAvailable()) { |
161 | newFileSettings.callback = this.createNewFile.bind(this); | 159 | newFileSettings.callback = this.createNewFile.bind(this); |
162 | this.application.ninja.newFileController.showNewFileDialog(newFileSettings); | 160 | this.application.ninja.newFileController.showNewFileDialog(newFileSettings); |
163 | } | ||
164 | } | 161 | } |
162 | } | ||
165 | }, | 163 | }, |
166 | //////////////////////////////////////////////////////////////////// | 164 | //////////////////////////////////////////////////////////////////// |
167 | //TODO: Check for appropiate structures | 165 | // |
168 | handleExecuteSave: { | 166 | handleExecuteSave: { |
169 | value: function(event) { | 167 | value: function(event) { |
170 | if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ | 168 | // |
171 | //Text and HTML document classes should return the same save object for fileSave | 169 | if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ |
172 | this.application.ninja.ioMediator.fileSave(this.activeDocument.save(), this.fileSaveResult.bind(this)); | 170 | // |
173 | } | 171 | this.activeDocument.model.save(this.testCallback.bind(this)); //this.fileSaveResult.bind(this) |
172 | } else { | ||
173 | //Error: | ||
174 | } | ||
174 | } | 175 | } |
175 | }, | 176 | }, |
177 | testCallback: { | ||
178 | value: function (value) { | ||
179 | console.log(value); | ||
180 | } | ||
181 | }, | ||
176 | //////////////////////////////////////////////////////////////////// | 182 | //////////////////////////////////////////////////////////////////// |
177 | //TODO: Check for appropiate structures | 183 | //TODO: Check for appropiate structures |
178 | handleExecuteSaveAll: { | 184 | handleExecuteSaveAll: { |
179 | value: function(event) { | 185 | value: function(event) { |
180 | if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ | 186 | // |
181 | //Text and HTML document classes should return the same save object for fileSave | 187 | if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ |
182 | this.application.ninja.ioMediator.fileSave(this.activeDocument.saveAll(), this.fileSaveResult.bind(this)); | 188 | // |
183 | } | 189 | this.activeDocument.model.saveAll(this.testCallback.bind(this)); //this.fileSaveResult.bind(this) |
190 | } else { | ||
191 | //Error: | ||
192 | } | ||
184 | } | 193 | } |
185 | }, | 194 | }, |
186 | //////////////////////////////////////////////////////////////////// | 195 | //////////////////////////////////////////////////////////////////// |
@@ -198,9 +207,10 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
198 | //////////////////////////////////////////////////////////////////// | 207 | //////////////////////////////////////////////////////////////////// |
199 | handleExecuteFileClose:{ | 208 | handleExecuteFileClose:{ |
200 | value: function(event) { | 209 | value: function(event) { |
201 | if(this.activeDocument && this.application.ninja.coreIoApi.cloudAvailable()){ | 210 | if (this.activeDocument) { |
202 | this.closeDocument(this.activeDocument.uuid); | 211 | // this.activeDocument.closeDocument(); |
203 | } | 212 | this.closeFile(this.activeDocument); |
213 | } | ||
204 | } | 214 | } |
205 | }, | 215 | }, |
206 | //////////////////////////////////////////////////////////////////// | 216 | //////////////////////////////////////////////////////////////////// |
@@ -219,7 +229,7 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
219 | fileSaveResult: { | 229 | fileSaveResult: { |
220 | value: function (result) { | 230 | value: function (result) { |
221 | if((result.status === 204) || (result.status === 404)){//204=>existing file || 404=>new file... saved | 231 | if((result.status === 204) || (result.status === 404)){//204=>existing file || 404=>new file... saved |
222 | this.activeDocument.needsSave = false; | 232 | this.activeDocument.model.needsSave = false; |
223 | if(this.application.ninja.currentDocument !== null){ | 233 | if(this.application.ninja.currentDocument !== null){ |
224 | //clear Dirty StyleSheets for the saved document | 234 | //clear Dirty StyleSheets for the saved document |
225 | this.application.ninja.stylesController.clearDirtyStyleSheets(this.application.ninja.currentDocument); | 235 | this.application.ninja.stylesController.clearDirtyStyleSheets(this.application.ninja.currentDocument); |
@@ -228,20 +238,20 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
228 | } | 238 | } |
229 | }, | 239 | }, |
230 | 240 | ||
241 | |||
242 | |||
243 | //////////////////////////////////////////////////////////////////// | ||
244 | // | ||
231 | createNewFile:{ | 245 | createNewFile:{ |
232 | value:function(newFileObj){ | 246 | value:function(newFileObj){ |
233 | //console.log(newFileObj);//contains the template uri and the new file uri | 247 | // |
234 | if(!newFileObj) return; | 248 | if(!newFileObj) return; |
235 | this.application.ninja.ioMediator.fileNew(newFileObj.newFilePath, newFileObj.fileTemplateUri, this.openNewFileCallback.bind(this)); | 249 | // |
236 | 250 | this.application.ninja.ioMediator.fileNew(newFileObj.newFilePath, newFileObj.fileTemplateUri, this.openNewFileCallback.bind(this), newFileObj.template); | |
237 | if((newFileObj.fileExtension !== ".html") && (newFileObj.fileExtension !== ".htm")){//open code view | ||
238 | |||
239 | } else { | ||
240 | //open design view | ||
241 | } | ||
242 | } | 251 | } |
243 | }, | 252 | }, |
244 | 253 | //////////////////////////////////////////////////////////////////// | |
254 | |||
245 | /** | 255 | /** |
246 | * Public method | 256 | * Public method |
247 | * doc contains: | 257 | * doc contains: |
@@ -358,6 +368,12 @@ var DocumentController = exports.DocumentController = Montage.create(Component, | |||
358 | }, | 368 | }, |
359 | openWebDocument: { | 369 | openWebDocument: { |
360 | value: function(doc) { | 370 | value: function(doc) { |
371 | var template, dimensions; | ||
372 | if (doc.content.body.indexOf('Ninja-Banner Dimensions@@@') !== -1) { | ||
373 | dimensions = (doc.content.body.split('Ninja-Banner Dimensions@@@'))[1].split('-->')[0].split('x'); | ||
374 | dimensions = {width: parseInt(dimensions[0]), height: parseInt(dimensions[1])}; | ||
375 | template = {type: 'banner', size: dimensions}; | ||
376 | } | ||
361 | // TODO: HACKS to remo |