diff options
Diffstat (limited to 'js/controllers')
-rwxr-xr-x | js/controllers/document-controller.js | 59 | ||||
-rwxr-xr-x | js/controllers/elements/element-controller.js | 3 | ||||
-rwxr-xr-x | js/controllers/selection-controller.js | 36 | ||||
-rwxr-xr-x | js/controllers/styles-controller.js | 7 |
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 | // |
17 | DocumentController = exports.DocumentController = Montage.create(Component, { | 17 | var 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) { |