aboutsummaryrefslogtreecommitdiff
path: root/js/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'js/controllers')
-rwxr-xr-xjs/controllers/document-controller.js59
-rwxr-xr-xjs/controllers/elements/element-controller.js3
-rwxr-xr-xjs/controllers/selection-controller.js36
-rwxr-xr-xjs/controllers/styles-controller.js7
4 files changed, 83 insertions, 22 deletions
diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js
index b1a22c1b..7491ef9f 100755
--- a/js/controllers/document-controller.js
+++ b/js/controllers/document-controller.js
@@ -14,7 +14,7 @@ var Montage = require("montage/core/core").Montage,
14 DocumentController; 14 DocumentController;
15//////////////////////////////////////////////////////////////////////// 15////////////////////////////////////////////////////////////////////////
16// 16//
17DocumentController = exports.DocumentController = Montage.create(Component, { 17var DocumentController = exports.DocumentController = Montage.create(Component, {
18 hasTemplate: { 18 hasTemplate: {
19 value: false 19 value: false
20 }, 20 },
@@ -22,6 +22,10 @@ DocumentController = exports.DocumentController = Montage.create(Component, {
22 _documents: { 22 _documents: {
23 value: [] 23 value: []
24 }, 24 },
25
26 _hackRootFlag: {
27 value: false
28 },
25 29
26 _activeDocument: { value: null }, 30 _activeDocument: { value: null },
27 _iframeCounter: { value: 1, enumerable: false }, 31 _iframeCounter: { value: 1, enumerable: false },
@@ -56,15 +60,43 @@ DocumentController = exports.DocumentController = Montage.create(Component, {
56 this.eventManager.addEventListener("executeSave", this, false); 60 this.eventManager.addEventListener("executeSave", this, false);
57 61
58 this.eventManager.addEventListener("recordStyleChanged", this, false); 62 this.eventManager.addEventListener("recordStyleChanged", this, false);
63
59 } 64 }
60 }, 65 },
61 66
67
68
69
70
71
72
73 ////////////////////////////////////////////////////////////////////
74 //
75 handleWebRequest: {
76 value: function (request) {
77 if (this._hackRootFlag && request.url.indexOf('js/document/templates/montage-html') !== -1) {
78 //TODO: Optimize creating string
79 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]};
80 }
81 }
82 },
83 ////////////////////////////////////////////////////////////////////
84 //
62 handleAppLoaded: { 85 handleAppLoaded: {
63 value: function() { 86 value: function() {
64 // 87 //Adding an intercept to resources loaded to ensure user assets load from cloud simulator
88 chrome.webRequest.onBeforeRequest.addListener(this.handleWebRequest.bind(this), {urls: ["<all_urls>"]}, ["blocking"]);
65 } 89 }
66 }, 90 },
91 ////////////////////////////////////////////////////////////////////
67 92
93
94
95
96
97
98
99
68 handleExecuteFileOpen: { 100 handleExecuteFileOpen: {
69 value: function(event) { 101 value: function(event) {
70 var pickerSettings = event._event.settings || {}; 102 var pickerSettings = event._event.settings || {};
@@ -88,28 +120,21 @@ DocumentController = exports.DocumentController = Montage.create(Component, {
88 //TODO: Check for appropiate structures 120 //TODO: Check for appropiate structures
89 handleExecuteSave: { 121 handleExecuteSave: {
90 value: function(event) { 122 value: function(event) {
123 if(!!this.activeDocument){
91 //Text and HTML document classes should return the same save object for fileSave 124 //Text and HTML document classes should return the same save object for fileSave
92 this.application.ninja.ioMediator.fileSave(this.activeDocument.save(), this.fileSaveResult.bind(this)); 125 this.application.ninja.ioMediator.fileSave(this.activeDocument.save(), this.fileSaveResult.bind(this));
93 } 126 }
127 }
94 }, 128 },
95 //////////////////////////////////////////////////////////////////// 129 ////////////////////////////////////////////////////////////////////
96 // 130 //
97 fileSaveResult: { 131 fileSaveResult: {
98 value: function (result) { 132 value: function (result) {
99 if(result.status === 204){ 133 if(result.status === 204){
100 this.clearDocumentDirtyFlag(); 134 this.activeDocument.needsSave = false;
101 } 135 }
102 } 136 }
103 }, 137 },
104 ////////////////////////////////////////////////////////////////////
105
106
107 clearDocumentDirtyFlag:{
108 value: function(){
109 this.activeDocument.dirtyFlag = false;
110 }
111 },
112
113 138
114 createNewFile:{ 139 createNewFile:{
115 value:function(newFileObj){ 140 value:function(newFileObj){
@@ -180,6 +205,9 @@ DocumentController = exports.DocumentController = Montage.create(Component, {
180 // 205 //
181 openDocument: { 206 openDocument: {
182 value: function(doc) { 207 value: function(doc) {
208
209 //
210 this.documentHackReference = doc;
183 // 211 //
184 switch (doc.extension) { 212 switch (doc.extension) {
185 case 'html': case 'html': 213 case 'html': case 'html':
@@ -245,7 +273,7 @@ DocumentController = exports.DocumentController = Montage.create(Component, {
245 273
246 closeDocument: { 274 closeDocument: {
247 value: function(id) { 275 value: function(id) {
248 if(this.activeDocument.dirtyFlag === true){ 276 if(this.activeDocument.needsSave === true){
249 //if file dirty then alert user to save 277 //if file dirty then alert user to save
250 } 278 }
251 279
@@ -268,6 +296,8 @@ DocumentController = exports.DocumentController = Montage.create(Component, {
268 this._removeDocumentView(doc.container); 296 this._removeDocumentView(doc.container);
269 this.application.ninja.stage.stageView.hideRulers(); 297 this.application.ninja.stage.stageView.hideRulers();
270 document.getElementById("iframeContainer").style.display="block"; 298 document.getElementById("iframeContainer").style.display="block";
299
300 this.application.ninja.stage.hideCanvas(true);
271 } 301 }
272 } 302 }
273 }, 303 },
@@ -277,7 +307,6 @@ DocumentController = exports.DocumentController = Montage.create(Component, {
277 _onOpenDocument: { 307 _onOpenDocument: {
278 value: function(doc){ 308 value: function(doc){
279 //var data = DocumentManager.activeDocument; 309 //var data = DocumentManager.activeDocument;
280
281 this._hideCurrentDocument(); 310 this._hideCurrentDocument();
282 this.application.ninja.stage.stageView.hideOtherDocuments(doc.uuid); 311 this.application.ninja.stage.stageView.hideOtherDocuments(doc.uuid);
283 312
diff --git a/js/controllers/elements/element-controller.js b/js/controllers/elements/element-controller.js
index 65d26bdd..ac14def4 100755
--- a/js/controllers/elements/element-controller.js
+++ b/js/controllers/elements/element-controller.js
@@ -12,6 +12,9 @@ var ElementController = exports.ElementController = Montage.create(NJComponent,
12 addElement: { 12 addElement: {
13 value: function(el, styles) { 13 value: function(el, styles) {
14 this.application.ninja.currentDocument.documentRoot.appendChild(el); 14 this.application.ninja.currentDocument.documentRoot.appendChild(el);
15 // Nested elements -
16 // TODO make sure the CSS is correct before nesting elements
17 // this.application.ninja.currentSelectedContainer.appendChild(el);
15 this.application.ninja.stylesController.setElementStyles(el, styles); 18 this.application.ninja.stylesController.setElementStyles(el, styles);
16 } 19 }
17 }, 20 },
diff --git a/js/controllers/selection-controller.js b/js/controllers/selection-controller.js
index 833e6f04..d69b53e0 100755
--- a/js/controllers/selection-controller.js
+++ b/js/controllers/selection-controller.js
@@ -20,6 +20,26 @@ exports.SelectionController = Montage.create(Component, {
20 } 20 }
21 }, 21 },
22 22
23 /*
24 * Bound property to the ninja currentSelectedContainer
25 */
26 _selectionContainer: {
27 value: null
28 },
29
30 selectionContainer: {
31 get: function() {
32 return this._selectionContainer
33 },
34 set: function(value) {
35 if(this._selectionContainer && this._selectionContainer !== value) {
36 this.executeSelectElement();
37 }
38
39 this._selectionContainer = value;
40 }
41 },
42
23 deserializedFromTemplate: { 43 deserializedFromTemplate: {
24 value: function() { 44 value: function() {
25 this.eventManager.addEventListener("openDocument", this, false); 45 this.eventManager.addEventListener("openDocument", this, false);
@@ -53,7 +73,9 @@ exports.SelectionController = Montage.create(Component, {
53 } 73 }
54 } 74 }
55 75
56 this.dispatchEvent(selectionEvent.event); 76 //
77 this._selectionContainer = this.application.ninja.currentSelectedContainer;
78
57 } 79 }
58 }, 80 },
59 81
@@ -66,13 +88,10 @@ exports.SelectionController = Montage.create(Component, {
66 handleElementDeleted: { 88 handleElementDeleted: {
67 value: function(event) { 89 value: function(event) {
68 if(!this._isDocument) {