diff options
Diffstat (limited to 'js')
23 files changed, 386 insertions, 174 deletions
diff --git a/js/components/textfield.reel/textfield.js b/js/components/textfield.reel/textfield.js index 5e22fcc7..e16dd786 100755 --- a/js/components/textfield.reel/textfield.js +++ b/js/components/textfield.reel/textfield.js | |||
@@ -27,6 +27,7 @@ exports.TextField = Montage.create(Component, { | |||
27 | }, | 27 | }, |
28 | set: function(value) { | 28 | set: function(value) { |
29 | this._value = value; | 29 | this._value = value; |
30 | this._valueSyncedWithInputField = false; | ||
30 | this.needsDraw = true; | 31 | this.needsDraw = true; |
31 | } | 32 | } |
32 | }, | 33 | }, |
@@ -41,7 +42,7 @@ exports.TextField = Montage.create(Component, { | |||
41 | 42 | ||
42 | handleBlur: { | 43 | handleBlur: { |
43 | value: function(event) { | 44 | value: function(event) { |
44 | this._value = this.element.value; | 45 | this.value = this.element.value; |
45 | this._valueSyncedWithInputField = true; | 46 | this._valueSyncedWithInputField = true; |
46 | 47 | ||
47 | var e = document.createEvent("CustomEvent"); | 48 | var e = document.createEvent("CustomEvent"); |
@@ -51,27 +52,10 @@ exports.TextField = Montage.create(Component, { | |||
51 | this.dispatchEvent(e); | 52 | this.dispatchEvent(e); |
52 | } | 53 | } |
53 | }, | 54 | }, |
54 | /* | ||
55 | handleChange: | ||
56 | { | ||
57 | value:function(event) | ||
58 | { | ||
59 | this._value = this.element.value; | ||
60 | this._valueSyncedWithInputField = true; | ||
61 | |||
62 | var e = document.createEvent("CustomEvent"); | ||
63 | e.initEvent("change", true, true); | ||
64 | e.type = "change"; | ||
65 | e.value = this._value; | ||
66 | this.dispatchEvent(e); | ||
67 | } | ||
68 | }, | ||
69 | */ | ||
70 | 55 | ||
71 | draw: { | 56 | draw: { |
72 | value: function() { | 57 | value: function() { |
73 | if(!this._valueSyncedWithInputField) | 58 | if(!this._valueSyncedWithInputField) { |
74 | { | ||
75 | this.element.value = this._value; | 59 | this.element.value = this._value; |
76 | this._valueSyncedWithInputField = true; | 60 | this._valueSyncedWithInputField = true; |
77 | } | 61 | } |
@@ -80,7 +64,6 @@ exports.TextField = Montage.create(Component, { | |||
80 | 64 | ||
81 | prepareForDraw: { | 65 | prepareForDraw: { |
82 | value: function() { | 66 | value: function() { |
83 | //this.element.addEventListener("change", this, false); | ||
84 | this.element.addEventListener("blur", this, false); | 67 | this.element.addEventListener("blur", this, false); |
85 | this.element.addEventListener("keyup", this, false); | 68 | this.element.addEventListener("keyup", this, false); |
86 | } | 69 | } |
diff --git a/js/controllers/elements/body-controller.js b/js/controllers/elements/body-controller.js index 0ca6c417..604b22d0 100755 --- a/js/controllers/elements/body-controller.js +++ b/js/controllers/elements/body-controller.js | |||
@@ -19,6 +19,14 @@ exports.BodyController = Montage.create(ElementController, { | |||
19 | el.elementModel.props3D.matrix3d = mat; | 19 | el.elementModel.props3D.matrix3d = mat; |
20 | el.elementModel.props3D.perspectiveDist = dist; | 20 | el.elementModel.props3D.perspectiveDist = dist; |
21 | 21 | ||
22 | if(this.application.ninja.currentDocument.model.views.design._template) { | ||
23 | if(!MathUtils.isIdentityMatrix(mat)) { | ||
24 | el.parentNode.style.backgroundColor = "transparent"; | ||
25 | } else { | ||
26 | el.parentNode.style.removeProperty("background-color"); | ||
27 | } | ||
28 | } | ||
29 | |||
22 | this.application.ninja.stage.updatedStage = true; | 30 | this.application.ninja.stage.updatedStage = true; |
23 | 31 | ||
24 | if(update3DModel) { | 32 | if(update3DModel) { |
@@ -32,7 +40,11 @@ exports.BodyController = Montage.create(ElementController, { | |||
32 | switch(p) { | 40 | switch(p) { |
33 | case "background" : | 41 | case "background" : |
34 | case "background-color": | 42 | case "background-color": |
35 | return this.application.ninja.colorController.getColorObjFromCss(this.application.ninja.stylesController.getElementStyle(el, "background-color")); | 43 | if(this.application.ninja.currentDocument.model.views.design._template) { |
44 | return this.application.ninja.colorController.getColorObjFromCss(this.application.ninja.stylesController.getElementStyle(el.parentNode, "background-color")); | ||
45 | } else { | ||
46 | return this.application.ninja.colorController.getColorObjFromCss(this.application.ninja.stylesController.getElementStyle(el, "background-color")); | ||
47 | } | ||
36 | case "border": | 48 | case "border": |
37 | return 0; | 49 | return 0; |
38 | case "height": | 50 | case "height": |
@@ -51,7 +63,11 @@ exports.BodyController = Montage.create(ElementController, { | |||
51 | switch(p) { | 63 | switch(p) { |
52 | case "background": | 64 | case "background": |
53 | case "background-color": | 65 | case "background-color": |
54 | this.application.ninja.stylesController.setElementStyle(el, "background-color", value); | 66 | if(this.application.ninja.currentDocument.model.views.design._template) { |
67 | this.application.ninja.stylesController.setElementStyle(el.parentNode, "background-color", value); | ||
68 | } else { | ||
69 | this.application.ninja.stylesController.setElementStyle(el, "background-color", value); | ||
70 | } | ||
55 | break; | 71 | break; |
56 | case "overflow": | 72 | case "overflow": |
57 | case "width": | 73 | case "width": |
diff --git a/js/document/helpers/url-parser.js b/js/document/helpers/url-parser.js index 5e71d148..7bded27d 100755 --- a/js/document/helpers/url-parser.js +++ b/js/document/helpers/url-parser.js | |||
@@ -53,7 +53,7 @@ exports.UrlParser = Montage.create(Component, { | |||
53 | //Getting file URI (not URL since we must load through I/O API) | 53 | //Getting file URI (not URL since we must load through I/O API) |
54 | var css = {}, file; | 54 | var css = {}, file; |
55 | css.cssUrl = href.split(this.application.ninja.coreIoApi.rootUrl)[1]; | 55 | css.cssUrl = href.split(this.application.ninja.coreIoApi.rootUrl)[1]; |
56 | css.fileUri = this.application.ninja.coreIoApi.cloudData.root + css.cssUrl; | 56 | css.fileUri = this.application.ninja.coreIoApi.cloudData.root + unescape(css.cssUrl); |
57 | //Loading data from CSS file | 57 | //Loading data from CSS file |
58 | file = this.application.ninja.coreIoApi.readFile({uri: css.fileUri}); | 58 | file = this.application.ninja.coreIoApi.readFile({uri: css.fileUri}); |
59 | //Checking for file to be writable on disk | 59 | //Checking for file to be writable on disk |
diff --git a/js/document/mediators/template.js b/js/document/mediators/template.js index c5b46c3a..f43b1a2c 100755 --- a/js/document/mediators/template.js +++ b/js/document/mediators/template.js | |||
@@ -158,6 +158,15 @@ exports.TemplateDocumentMediator = Montage.create(Component, { | |||
158 | ninjaContentTagDoc.removeAttribute('style'); | 158 | ninjaContentTagDoc.removeAttribute('style'); |
159 | ninjaContentTagDoc.removeAttribute('data-ninja-style'); | 159 | ninjaContentTagDoc.removeAttribute('data-ninja-style'); |
160 | } | 160 | } |
161 | // TODO - clean up into single method | ||
162 | ninjaContentTagMem = template.document.getElementsByTagName('ninja-viewport')[0], ninjaContentTagDoc = template.file.content.document.getElementsByTagName('ninja-viewport')[0]; | ||
163 | if (ninjaContentTagMem && ninjaContentTagMem.getAttribute('data-ninja-style') !== null) { | ||
164 | ninjaContentTagDoc.setAttribute('style', ninjaContentTagMem.getAttribute('data-ninja-style')); | ||
165 | ninjaContentTagDoc.removeAttribute('data-ninja-style'); | ||
166 | } else if (ninjaContentTagMem && ninjaContentTagMem.getAttribute('data-ninja-style') === null) { | ||
167 | ninjaContentTagDoc.removeAttribute('style'); | ||
168 | ninjaContentTagDoc.removeAttribute('data-ninja-style'); | ||
169 | } | ||
161 | } else { | 170 | } else { |
162 | if (template.body && template.body.getAttribute('data-ninja-style') !== null) { | 171 | if (template.body && template.body.getAttribute('data-ninja-style') !== null) { |
163 | template.file.content.document.body.setAttribute('style', template.body.getAttribute('data-ninja-style')); | 172 | template.file.content.document.body.setAttribute('style', template.body.getAttribute('data-ninja-style')); |
diff --git a/js/document/views/design.js b/js/document/views/design.js index 44c61617..d5c5c6c4 100755 --- a/js/document/views/design.js +++ b/js/document/views/design.js | |||
@@ -281,6 +281,7 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { | |||
281 | this.document.body.removeChild(this.document.getElementsByTagName('ninjaloadinghack')[0]); | 281 | this.document.body.removeChild(this.document.getElementsByTagName('ninjaloadinghack')[0]); |
282 | //Getting style and link tags in document | 282 | //Getting style and link tags in document |
283 | var htags = this.document.getElementsByTagName('html'), | 283 | var htags = this.document.getElementsByTagName('html'), |
284 | bannerWrapper, | ||
284 | userStyles, | 285 | userStyles, |
285 | stags = this.document.getElementsByTagName('style'), | 286 | stags = this.document.getElementsByTagName('style'), |
286 | ltags = this.document.getElementsByTagName('link'), i, orgNodes, | 287 | ltags = this.document.getElementsByTagName('link'), i, orgNodes, |
@@ -326,6 +327,7 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { | |||
326 | //TODO: Verify appropiate location for this operation | 327 | //TODO: Verify appropiate location for this operation |
327 | if (this._template && this._template.type === 'banner') { | 328 | if (this._template && this._template.type === 'banner') { |
328 | this.documentRoot = this.document.body.getElementsByTagName('ninja-content')[0]; | 329 | this.documentRoot = this.document.body.getElementsByTagName('ninja-content')[0]; |
330 | bannerWrapper = this.documentRoot.parentNode; | ||
329 | } else { | 331 | } else { |
330 | this.documentRoot = this.document.body; | 332 | this.documentRoot = this.document.body; |
331 | } | 333 | } |
@@ -349,6 +351,11 @@ exports.DesignDocumentView = Montage.create(BaseDocumentView, { | |||
349 | this.documentRoot.setAttribute('data-ninja-style', userStyles); | 351 | this.documentRoot.setAttribute('data-ninja-style', userStyles); |
350 | } | 352 | } |
351 | } | 353 | } |
354 | if(bannerWrapper) { | ||
355 | if(userStyles = bannerWrapper.getAttribute('style')) { | ||
356 | bannerWrapper.setAttribute('data-ninja-style', userStyles); | ||
357 | } | ||