aboutsummaryrefslogtreecommitdiff
path: root/js/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'js/controllers')
-rwxr-xr-xjs/controllers/document-controller.js68
-rwxr-xr-xjs/controllers/selection-controller.js21
-rwxr-xr-xjs/controllers/styles-controller.js10
-rwxr-xr-xjs/controllers/undo-controller.js17
4 files changed, 96 insertions, 20 deletions
diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js
index 64ff2c7e..87e93465 100755
--- a/js/controllers/document-controller.js
+++ b/js/controllers/document-controller.js
@@ -60,8 +60,9 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
60 this.eventManager.addEventListener("executeSave", this, false); 60 this.eventManager.addEventListener("executeSave", this, false);
61 this.eventManager.addEventListener("executeSaveAs", this, false); 61 this.eventManager.addEventListener("executeSaveAs", this, false);
62 this.eventManager.addEventListener("executeSaveAll", this, false); 62 this.eventManager.addEventListener("executeSaveAll", this, false);
63 this.eventManager.addEventListener("executeFileClose", this, false);
63 64
64 this.eventManager.addEventListener("recordStyleChanged", this, false); 65 this.eventManager.addEventListener("styleSheetDirty", this, false);
65 66
66 } 67 }
67 }, 68 },
@@ -76,11 +77,14 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
76 // 77 //
77 handleWebRequest: { 78 handleWebRequest: {
78 value: function (request) { 79 value: function (request) {
79 if (this._hackRootFlag && request.url.indexOf('js/document/templates/montage-html') !== -1) { 80 //TODO: Check if frameId is proper
81 if (this._hackRootFlag && request.parentFrameId !== -1) {
80 //TODO: Optimize creating string 82 //TODO: Optimize creating string
81 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]}; 83 //console.log(this.application.ninja.coreIoApi.rootUrl+this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1], request.url);
82 } 84 //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]};
85 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]};
83 } 86 }
87 }
84 }, 88 },
85 //////////////////////////////////////////////////////////////////// 89 ////////////////////////////////////////////////////////////////////
86 // 90 //
@@ -154,17 +158,29 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
154 if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ 158 if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){
155 saveAsSettings.fileName = this.activeDocument.name; 159 saveAsSettings.fileName = this.activeDocument.name;
156 saveAsSettings.folderUri = this.activeDocument.uri.substring(0, this.activeDocument.uri.lastIndexOf("/")); 160 saveAsSettings.folderUri = this.activeDocument.uri.substring(0, this.activeDocument.uri.lastIndexOf("/"));
157 //add callback 161 saveAsSettings.callback = this.saveAsCallback.bind(this);
158 this.application.ninja.newFileController.showSaveAsDialog(saveAsSettings); 162 this.application.ninja.newFileController.showSaveAsDialog(saveAsSettings);
159 } 163 }
160 } 164 }
161 }, 165 },
162 166 ////////////////////////////////////////////////////////////////////
167 handleExecuteFileClose:{
168 value: function(event) {
169 if(this.activeDocument && this.application.ninja.coreIoApi.cloudAvailable()){
170 this.closeDocument(this.activeDocument.uuid);
171 }
172 }
173 },
174 ////////////////////////////////////////////////////////////////////
163 // 175 //
164 fileSaveResult: { 176 fileSaveResult: {
165 value: function (result) { 177 value: function (result) {
166 if(result.status === 204){ 178 if((result.status === 204) || (result.status === 404)){//204=>existing file || 404=>new file... saved
167 this.activeDocument.needsSave = false; 179 this.activeDocument.needsSave = false;
180 if(this.application.ninja.currentDocument !== null){
181 //clear Dirty StyleSheets for the saved document
182 this.application.ninja.stylesController.clearDirtyStyleSheets(this.application.ninja.currentDocument);
183 }
168 } 184 }
169 } 185 }
170 }, 186 },
@@ -246,6 +262,29 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
246 }, 262 },
247 //////////////////////////////////////////////////////////////////// 263 ////////////////////////////////////////////////////////////////////
248 // 264 //
265 saveAsCallback:{
266 value:function(saveAsDetails){
267 var fileUri = null, filename = saveAsDetails.filename, destination = saveAsDetails.destination;
268 //update document metadata
269 this.activeDocument.name = ""+filename;
270 //prepare new file uri
271 if(destination && (destination.charAt(destination.length -1) !== "/")){
272 destination = destination + "/";
273 }
274 fileUri = destination+filename;
275
276 this.activeDocument.uri = fileUri;
277 //save a new file
278 //use the ioMediator.fileSaveAll when implemented
279 this.activeDocument._userDocument.name=filename;
280 this.activeDocument._userDocument.root=destination;
281 this.activeDocument._userDocument.uri=fileUri;
282 this.application.ninja.ioMediator.fileSave(this.activeDocument.save(), this.fileSaveResult.bind(this));
283 //
284 }
285 },
286
287 ////////////////////////////////////////////////////////////////////
249 openDocument: { 288 openDocument: {
250 value: function(doc) { 289 value: function(doc) {
251 290
@@ -333,14 +372,23 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
333 nextDocumentIndex = closeDocumentIndex - 1; 372 nextDocumentIndex = closeDocumentIndex - 1;
334 } 373 }
335 this.application.ninja.stage.stageView.switchDocument(this._documents[nextDocumentIndex]); 374 this.application.ninja.stage.stageView.switchDocument(this._documents[nextDocumentIndex]);
375 if(typeof this.activeDocument.stopVideos !== "undefined"){doc.stopVideos();}
336 this._removeDocumentView(doc.container); 376 this._removeDocumentView(doc.container);
337 }else if(this._documents.length === 0){ 377 }else if(this._documents.length === 0){
378 if(typeof this.activeDocument.pauseAndStopVideos !== "undefined"){
379 this.activeDocument.pauseAndStopVideos();
380 }
338 this.activeDocument = null; 381 this.activeDocument = null;
339 this._removeDocumentView(doc.container); 382 this._removeDocumentView(doc.container);
340 this.application.ninja.stage.stageView.hideRulers(); 383 this.application.ninja.stage.stageView.hideRulers();
341 document.getElementById("iframeContainer").style.display="block"; 384 document.getElementById("iframeContainer").style.display="block";
342 385
343 this.application.ninja.stage.hideCanvas(true); 386 this.application.ninja.stage.hideCanvas(true);
387 }else{//closing inactive document tab - just clear DOM
388 if(typeof doc.pauseAndStopVideos !== "undefined"){
389 doc.pauseAndStopVideos();
390 }
391 this._removeDocumentView(doc.container);
344 } 392 }
345 393
346 NJevent("closeDocument", doc.uri); 394 NJevent("closeDocument", doc.uri);
@@ -503,5 +551,11 @@ var DocumentController = exports.DocumentController = Montage.create(Component,
503 value: function() { 551 value: function() {
504 return "userDocument_" + (this._iframeCounter++); 552 return "userDocument_" + (this._iframeCounter++);
505 } 553 }
554 },
555
556 handleStyleSheetDirty:{
557 value:function(){
558 this.activeDocument.needsSave = true;
506 } 559 }
560 }
507}); 561});
diff --git a/js/controllers/selection-controller.js b/js/controllers/selection-controller.js
index c4623d3f..c713b6e5 100755
--- a/js/controllers/selection-controller.js
+++ b/js/controllers/selection-controller.js
@@ -48,6 +48,7 @@ exports.SelectionController = Montage.create(Component, {
48 this.eventManager.addEventListener("selectAll", this, false); 48 this.eventManager.addEventListener("selectAll", this, false);
49 this.eventManager.addEventListener("deleteSelection", this, false); 49 this.eventManager.addEventListener("deleteSelection", this, false);
50 this.eventManager.addEventListener("switchDocument", this, false); 50 this.eventManager.addEventListener("switchDocument", this, false);
51 this.eventManager.addEventListener("closeDocument", this, false);
51// defaultEventManager.addEventListener( "undo", this, false); 52// defaultEventManager.addEventListener( "undo", this, false);
52// defaultEventManager.addEventListener( "redo", this, false); 53// defaultEventManager.addEventListener( "redo", this, false);
53 } 54 }
@@ -76,7 +77,7 @@ exports.SelectionController = Montage.create(Component, {
76 77
77 78
78 this.application.ninja.selectedElements = currentSelectionArray; 79 this.application.ninja.selectedElements = currentSelectionArray;
79 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument} ); 80 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument});
80 81
81 82
82 83
@@ -89,15 +90,17 @@ exports.SelectionController = Montage.create(Component, {
89 } 90 }
90 }, 91 },
91 92
92 handleSwitchDocument: { 93 handleSwitchDocument: {
93 value: function() { 94 value: function() {
94 this._selectedItems = this.application.ninja.selectedElements.slice(0); 95 if(this.application.ninja.documentController.activeDocument.currentView === "design"){
95 if(this._selectedItems.length === 0 ){ 96 this._selectedItems = this.application.ninja.selectedElements.slice(0);
96 this._isDocument = true; 97 if(this._selectedItems.length === 0 ){
97 }else{ 98 this._isDocument = true;
98 this._isDocument = false; 99 }else{
100 this._isDocument = false;
101 }
102 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument} );
99 } 103 }
100 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument} );
101 } 104 }
102 }, 105 },
103 106
@@ -137,7 +140,7 @@ exports.SelectionController = Montage.create(Component, {
137 value: function(event) { 140 value: function(event) {
138 this.application.ninja.selectedElements = []; 141 this.application.ninja.selectedElements = [];
139 this._isDocument = true; 142 this._isDocument = true;
140 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument} ); 143 NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument});
141 } 144 }
142 }, 145 },