aboutsummaryrefslogtreecommitdiff
path: root/js/document
diff options
context:
space:
mode:
Diffstat (limited to 'js/document')
-rwxr-xr-xjs/document/html-document.js70
1 files changed, 63 insertions, 7 deletions
diff --git a/js/document/html-document.js b/js/document/html-document.js
index c36e61d5..75628731 100755
--- a/js/document/html-document.js
+++ b/js/document/html-document.js
@@ -177,15 +177,15 @@ exports.HTMLDocument = Montage.create(TextDocument, {
177 cdm.collectGLData( elt, this._glData ); 177 cdm.collectGLData( elt, this._glData );
178 } 178 }
179 179
180 return this._glData 180 return this._glData;
181 }, 181 },
182 182
183 set: function(value) 183 set: function(value)
184 { 184 {
185 var elt = this.iframe.contentWindow.document.getElementById("UserContent"); 185 var elt = this.documentRoot;
186 if (elt) 186 if (elt)
187 { 187 {
188 console.log( "load canvas data: " + value ); 188 console.log( "load canvas data: " , value );
189 var cdm = new CanvasDataManager(); 189 var cdm = new CanvasDataManager();
190 cdm.loadGLData(elt, value); 190 cdm.loadGLData(elt, value);
191 } 191 }
@@ -381,7 +381,7 @@ exports.HTMLDocument = Montage.create(TextDocument, {
381 // 381 //
382 for (var k in this._document.styleSheets) { 382 for (var k in this._document.styleSheets) {
383 if (this._document.styleSheets[k].ownerNode && this._document.styleSheets[k].ownerNode.setAttribute) { 383 if (this._document.styleSheets[k].ownerNode && this._document.styleSheets[k].ownerNode.setAttribute) {
384 this._document.styleSheets[k].ownerNode.setAttribute('ninjatemplate', 'true'); 384 this._document.styleSheets[k].ownerNode.setAttribute('data-ninja-template', 'true');
385 } 385 }
386 } 386 }
387 // 387 //
@@ -389,6 +389,25 @@ exports.HTMLDocument = Montage.create(TextDocument, {
389 //Inserting user's document into template 389 //Inserting user's document into template
390 this._templateDocument.head.innerHTML = this._userDocument.content.head; 390 this._templateDocument.head.innerHTML = this._userDocument.content.head;
391 this._templateDocument.body.innerHTML = this._userDocument.content.body; 391 this._templateDocument.body.innerHTML = this._userDocument.content.body;
392 //TODO: Use querySelectorAll
393 var scripttags = this._templateDocument.html.getElementsByTagName('script'), webgldata;
394 //
395 for (var w in scripttags) {
396 if (scripttags[w].getAttribute) {
397 if (scripttags[w].getAttribute('data-ninja-webgl') !== null) {
398 //TODO: Add logic to handle more than one data tag
399 webgldata = JSON.parse((scripttags[w].innerHTML.replace("(", "")).replace(")", ""));
400 }
401 }
402 }
403 //
404 if (webgldata) {
405 for (var n=0; webgldata.data[n]; n++) {
406 webgldata.data[n] = unescape(webgldata.data[n]);
407 }
408 this._templateDocument.webgl = webgldata.data;
409 }
410
392 411
393 //Adding a handler for the main user document reel to finish loading 412 //Adding a handler for the main user document reel to finish loading
394 this._document.body.addEventListener("userTemplateDidLoad", this.userTemplateDidLoad.bind(this), false); 413 this._document.body.addEventListener("userTemplateDidLoad", this.userTemplateDidLoad.bind(this), false);
@@ -430,9 +449,10 @@ exports.HTMLDocument = Montage.create(TextDocument, {
430 //Creating tag with file content 449 //Creating tag with file content
431 tag = this.iframe.contentWindow.document.createElement('style'); 450 tag = this.iframe.contentWindow.document.createElement('style');
432 tag.setAttribute('type', 'text/css'); 451 tag.setAttribute('type', 'text/css');
433 tag.setAttribute('ninjauri', fileUri); 452 tag.setAttribute('data-ninja-uri', fileUri);
434 tag.setAttribute('ninjafileurl', cssUrl); 453 tag.setAttribute('data-ninja-file-url', cssUrl);
435 tag.setAttribute('ninjafilename', cssUrl.split('/')[cssUrl.split('/').length-1]); 454 tag.setAttribute('data-ninja-file-read-only', JSON.parse(this.application.ninja.coreIoApi.isFileWritable({uri: fileUri}).content).readOnly);
455 tag.setAttribute('data-ninja-file-name', cssUrl.split('/')[cssUrl.split('/').length-1]);
436 tag.innerHTML = cssData.content; 456 tag.innerHTML = cssData.content;
437 //Looping through DOM to insert style tag at location of link element 457 //Looping through DOM to insert style tag at location of link element
438 query = this._templateDocument.html.querySelectorAll(['link']); 458 query = this._templateDocument.html.querySelectorAll(['link']);
@@ -444,6 +464,38 @@ exports.HTMLDocument = Montage.create(TextDocument, {
444 this._templateDocument.head.insertBefore(tag, query[j]); 464 this._templateDocument.head.insertBefore(tag, query[j]);
445 } 465 }
446 } 466 }
467 } else {
468 /*
469//None local stylesheet, probably on a CDN (locked)
470 tag = this.iframe.contentWindow.document.createElement('style');
471 tag.setAttribute('type', 'text/css');
472 tag.setAttribute('data-ninja-external-url', this._document.styleSheets[i].href);
473 tag.setAttribute('data-ninja-file-read-only', "true");
474 tag.setAttribute('data-ninja-file-name', this._document.styleSheets[i].href.split('/')[this._document.styleSheets[i].href.split('/').length-1]);
475
476 //TODO: Figure out cross-domain XHR issue, might need cloud to handle
477 var xhr = new XMLHttpRequest();
478 xhr.open("GET", this._document.styleSheets[i].href, true);
479 xhr.send();
480 //
481 if (xhr.readyState === 4) {
482 console.log(xhr);
483 }
484 //tag.innerHTML = xhr.responseText //xhr.response;
485
486 //Currently no external styles will load if unable to load via XHR request
487
488 //Disabling external style sheets
489 query = this._templateDocument.html.querySelectorAll(['link']);
490 for (var j in query) {
491 if (query[j].href === this._document.styleSheets[i].href) {
492 //Disabling style sheet to reload via inserting in style tag
493 query[j].setAttribute('disabled', 'true');
494 //Inserting tag
495 this._templateDocument.head.insertBefore(tag, query[j]);
496 }
497 }
498*/
447 } 499 }
448 } 500 }
449 } 501 }
@@ -502,6 +554,10 @@ exports.HTMLDocument = Montage.create(TextDocument, {
502 554
503 this.callback(this); 555 this.callback(this);
504 556
557 //Setting webGL data
558 if (this._templateDocument.webgl) {
559 this.glData = this._templateDocument.webgl;
560 }
505 } 561 }
506 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 562 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
507 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 563 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////