From d87cded11dcc0faf41a4a3e6b587e5549c0da6df Mon Sep 17 00:00:00 2001
From: Jose Antonio Marquez
Date: Thu, 22 Mar 2012 16:23:40 -0700
Subject: Adding Ninja URL method to io-mediator

---
 js/mediators/io-mediator.js | 56 +++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 52 insertions(+), 4 deletions(-)

(limited to 'js/mediators')

diff --git a/js/mediators/io-mediator.js b/js/mediators/io-mediator.js
index d81f4543..df0a41df 100644
--- a/js/mediators/io-mediator.js
+++ b/js/mediators/io-mediator.js
@@ -470,8 +470,6 @@ function loadWebGL (e) {\n\
     getUrlfromNinjaUrl: {
     	enumerable: false,
     	value: function (url, fileRootUrl, fileUrl) {
-    		//console.log("Params: ", url, fileRootUrl, fileUrl);
-    		//console.log("Getting: " + url);
     		//
     		if (url.indexOf(fileRootUrl) !== -1) {
     			url = url.replace(new RegExp(fileRootUrl.replace(/\//gi, '\\\/'), 'gi'), '');
@@ -499,13 +497,63 @@ function loadWebGL (e) {\n\
     			//
    				url = (path+newURL).replace(/\/\//gi, '/');
    			}
-    		//console.log("Returning: " + url);
-    		//console.log("-----");
     		//
     		return url;
     	}
     },
     ////////////////////////////////////////////////////////////////////
+    //
+    getDocRootUrl: {
+    	value: function () {
+    		return this.application.ninja.coreIoApi.rootUrl+escape((this.application.ninja.documentController.documentHackReference.root.split(this.application.ninja.coreIoApi.cloudData.root)[1]).replace(/\/\//gi, '/'));
+    	}
+    },
+    ////////////////////////////////////////////////////////////////////
+    //
+    getNinjaPropUrlRedirect: {
+    	enumerable: false,
+    	value: function (prop/* , root */) {
+    		//Checking for property value to not contain a full direct URL
+            if (!prop.match(/(\b(?:(?:https?|ftp|file|[A-Za-z]+):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#\/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#\/%=~_|$?!:,.]*\)|[A-Z0-9+&@#\/%=~_|$]))/gi)) {
+           		//Checking for attributes and type of source
+            	if (prop.indexOf('href') !== -1 || prop.indexOf('src') !== -1) {
+            		//From HTML attribute
+            		//if (root) {
+            			//prop = (root+prop).replace(/"([^"]*)"/gi, this.getNinjaUrlPrepend.bind(this));
+            		//} else {
+            			prop = prop.replace(/"([^"]*)"/gi, this.getNinjaUrlPrepend.bind(this));
+            		//}
+	            } else if (prop.indexOf('url') !== -1) {
+	            	//From CSS property
+	            	//if (root) {
+	            		//prop = (root+prop).replace(/[^()\\""\\'']+/g, cssUrlToNinjaUrl.bind(this));
+	            	//} else {
+    	        		prop = prop.replace(/[^()\\""\\'']+/g, cssUrlToNinjaUrl.bind(this));
+    	        	//}
+    	        	function cssUrlToNinjaUrl (s) {
+    	       			if (s !== 'url') {
+    	       				s = this.getDocRootUrl() + s;
+    	       			}
+    	       			return s;
+    	       		}
+        	    }
+       		}
+            return prop;
+    	}
+    },
+    ////////////////////////////////////////////////////////////////////
+    //
+    getNinjaUrlPrepend: {
+    	enumerable: false,
+    	value: function (url) {
+    		if (url.indexOf('data:') !== -1) {
+            	return url;
+            } else {
+            	return '"'+this.getDocRootUrl()+url.replace(/\"/gi, '')+'"';
+            }
+    	}
+    },
+    ////////////////////////////////////////////////////////////////////
     //Method to return a string from CSS rules (to be saved to a file)
     getCssFromRules: {
     	enumerable: false,
-- 
cgit v1.2.3