aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xjs/controllers/document-controller.js4
-rwxr-xr-xjs/controllers/elements/component-controller.js4
-rwxr-xr-xjs/document/mediators/template.js756
-rwxr-xr-xjs/document/models/base.js21
-rw-r--r--js/document/templates/app/main.js52
-rwxr-xr-xjs/document/views/design.js14
-rwxr-xr-xjs/helper-classes/3D/draw-utils.js2
-rw-r--r--js/io/system/ninjalibrary.js42
-rw-r--r--js/mediators/io-mediator.js712
-rwxr-xr-xjs/ninja.reel/ninja.js41
-rw-r--r--js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js96
-rwxr-xr-xjs/panels/components-panel.reel/components-panel.js56
-rw-r--r--node_modules/components-data/feed-reader.json1
-rw-r--r--node_modules/components-data/picasa-carousel.json1
-rw-r--r--node_modules/montage-google/feed-reader/feed-entry.reel/feed-entry.html3
-rw-r--r--node_modules/montage-google/feed-reader/feed-reader.reel/feed-reader.js8
-rw-r--r--node_modules/montage-google/map.reel/map.js96
17 files changed, 1091 insertions, 818 deletions
diff --git a/js/controllers/document-controller.js b/js/controllers/document-controller.js
index a90375af..bb0041eb 100755
--- a/js/controllers/document-controller.js
+++ b/js/controllers/document-controller.js
@@ -174,9 +174,9 @@ exports.DocumentController = Montage.create(Component, {
174 handleExecuteSaveAll: { 174 handleExecuteSaveAll: {
175 value: function(event) { 175 value: function(event) {
176 // 176 //
177 if((typeof this.activeDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){ 177 if((typeof this.currentDocument !== "undefined") && this.application.ninja.coreIoApi.cloudAvailable()){
178 // 178 //
179 this.activeDocument.model.saveAll(); 179 this.currentDocument.model.saveAll();
180 } else { 180 } else {
181 //TODO: Add error handling 181 //TODO: Add error handling
182 } 182 }
diff --git a/js/controllers/elements/component-controller.js b/js/controllers/elements/component-controller.js
index 5b0aaeac..dd0766df 100755
--- a/js/controllers/elements/component-controller.js
+++ b/js/controllers/elements/component-controller.js
@@ -11,7 +11,7 @@ exports.ComponentController = Montage.create(ElementController, {
11 11
12 getProperty: { 12 getProperty: {
13 value: function(el, prop) { 13 value: function(el, prop) {
14 var component = el.controller || this.application.ninja.currentDocument.model.getComponentFromElement(el); 14 var component = el.controller;
15 15
16 switch(prop) { 16 switch(prop) {
17 case "id": 17 case "id":
@@ -34,7 +34,7 @@ exports.ComponentController = Montage.create(ElementController, {
34 34
35 setProperty: { 35 setProperty: {
36 value: function(el, p, value) { 36 value: function(el, p, value) {
37 var component = el.controller || this.application.ninja.currentDocument.model.getComponentFromElement(el); 37 var component = el.controller;
38 38
39 switch(p) { 39 switch(p) {
40 case "id": 40 case "id":
diff --git a/js/document/mediators/template.js b/js/document/mediators/template.js
index c5b45ba1..068a1f48 100755
--- a/js/document/mediators/template.js
+++ b/js/document/mediators/template.js
@@ -6,16 +6,766 @@ No rights, expressed or implied, whatsoever to this software are provided by Mot
6 6
7//////////////////////////////////////////////////////////////////////// 7////////////////////////////////////////////////////////////////////////
8// 8//
9var Montage = require("montage/core/core").Montage, 9var Montage = require("montage/core/core").Montage,
10 Component = require("montage/ui/component").Component; 10 Component = require("montage/ui/component").Component,
11 TemplateCreator = require("node_modules/tools/template/template-creator").TemplateCreator;
11//////////////////////////////////////////////////////////////////////// 12////////////////////////////////////////////////////////////////////////
12// 13//
13exports.TemplateDocumentMediator = Montage.create(Component, { 14exports.TemplateDocumentMediator = Montage.create(Component, {
14 //////////////////////////////////////////////////////////////////// 15 ////////////////////////////////////////////////////////////////////
15 // 16 //
16 hasTemplate: { 17 hasTemplate: {
17 enumerable: false,
18 value: false 18 value: false
19 },
20 ////////////////////////////////////////////////////////////////////
21 //
22 getAppTemplatesUrlRegEx: {
23 value: function () {
24 var regex = new RegExp(chrome.extension.getURL(this.application.ninja.currentDocument.model.views.design.iframe.src.split(chrome.extension.getURL('/'))[1]).replace(/\//gi, '\\\/'), 'gi');
25 return regex;
26 }
27 },
28 ////////////////////////////////////////////////////////////////////
29 //
30 getDataDirectory: {
31 value: function (path) {
32 //TODO: Implement user overwrite
33 return this._getUserDirectory(path+'data/');
34 }
35 },
36 ////////////////////////////////////////////////////////////////////
37 //
38 getNinjaDirectory: {
39 value: function (path) {
40 //TODO: Implement user overwrite
41 return this._getUserDirectory(this.getDataDirectory(path)+'ninja/');
42 }
43 },
44 ////////////////////////////////////////////////////////////////////
45 //
46 getCanvasDirectory: {
47 value: function (path) {
48 //TODO: Implement user overwrite
49 return this._getUserDirectory(this.getNinjaDirectory(path)+'canvas/');
50 }
51 },
52 ////////////////////////////////////////////////////////////////////
53 //
54 _getUserDirectory: {
55 value: function (path) {
56 //Checking for data directory
57 var check = this.application.ninja.coreIoApi.fileExists({uri: path}), directory;
58 //Creating directory if doesn't exists
59 switch (check.status) {
60 case 204: //Exists
61 directory = path;
62 break;
63 case 404: //Doesn't exists
64 directory = this.application.ninja.coreIoApi.createDirectory({uri: path});
65 //Checking for success
66 if (directory.status === 201) {
67 directory = path;
68 } else {
69 //Error
70 directory = null;
71 }
72 break;
73 default: //Error
74 directory = null;
75 break;
76 }
77 //Returning the path to the directory on disk (null for any error)
78 return directory;
79 }
80 },
81 ////////////////////////////////////////////////////////////////////
82 //
83 parseHtmlToNinjaTemplate: {
84 value: function (html) {
85 //Creating temp object to mimic HTML
86 var doc = window.document.implementation.createHTMLDocument(), template;
87 //Setting content to temp
88 doc.getElementsByTagName('html')[0].innerHTML = html;
89 //Creating return object
90 return {head: doc.head.innerHTML, body: doc.body.innerHTML, document: doc};
91 }
92 },
93 ////////////////////////////////////////////////////////////////////
94 //TODO: Expand to allow more templates, clean up variables
95 parseNinjaTemplateToHtml: {
96 value: function (template, ninjaWrapper, libCopyCallback) {
97 //TODO: Improve reference for rootUrl
98 var regexRootUrl,
99 rootUrl = this.application.ninja.coreIoApi.rootUrl + escape((this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1])),
100 mjsCreator = template.mjsTemplateCreator.create(),
101 mJsSerialization,
102 toremovetags = [],
103 presentNodes,
104 montageTemplate;
105 //Creating instance of template creator
106 montageTemplate = mjsCreator.initWithDocument(template.document);
107 //Setting up expression for parsing URLs
108 regexRootUrl = new RegExp(rootUrl.replace(/\//gi, '\\\/'), 'gi');
109 //Injecting head and body into old document
110 if (montageTemplate._ownerSerialization.length > 0) {
111 template.file.content.document.head.innerHTML = montageTemplate._document.head.innerHTML.replace(regexRootUrl, '');
112 template.file.content.document.body.innerHTML = montageTemplate._document.body.innerHTML.replace(regexRootUrl, '');
113 //
114 mJsSerialization = montageTemplate._ownerSerialization;
115 } else {
116 template.file.content.document.head.innerHTML = template.head.innerHTML.replace(regexRootUrl, '');
117 template.file.content.document.body.innerHTML = template.body.innerHTML.replace(regexRootUrl, '');
118 }
119 //Copying attributes to maintain same properties as the <body>
120 for (var n in template.body.attributes) {
121 if (template.body.attributes[n].value) {
122 //
123 template.file.content.document.body.setAttribute(template.body.attributes[n].name, template.body.attributes[n].value);
124 }
125 }
126
127
128
129 //TODO: Add attribute copying for <HEAD> and <HTML>
130
131
132
133 //Getting list of current nodes (Ninja DOM)
134 presentNodes = template.file.content.document.getElementsByTagName('*');
135 //Looping through nodes to determine origin and removing if not inserted by Ninja
136 for (var n in presentNodes) {
137 if (presentNodes[n].getAttribute && presentNodes[n].getAttribute('data-ninja-node') === null) {
138 toremovetags.push(presentNodes[n]);
139 } else if (presentNodes[n].getAttribute && presentNodes[n].getAttribute('data-ninja-node') !== null) {
140 //Removing attribute
141 presentNodes[n].removeAttribute('data-ninja-node');
142 }
143 }
144 //Getting all CSS (style or link) tags
145 var styletags = template.file.content.document.getElementsByTagName('style'),
146 linktags = template.file.content.document.getElementsByTagName('link'),
147 njtemplatetags = template.file.content.document.querySelectorAll('[data-ninja-template]');
148
149 //////////////////////////////////////////////////