diff --git a/components/desirae/desirae.js b/components/desirae/desirae.js index d1ff193..8f6e56f 100644 --- a/components/desirae/desirae.js +++ b/components/desirae/desirae.js @@ -8,6 +8,65 @@ angular.module('myApp.services', []). Desi.registerDataMapper('ruhoh', window.DesiraeDatamapRuhoh || require('desirae-datamap-ruhoh').DesiraeDatamapRuhoh); Desi.registerDataMapper('ruhoh@2.6', window.DesiraeDatamapRuhoh || require('desirae-datamap-ruhoh').DesiraeDatamapRuhoh); + function gdrive2host(str) { + // https://drive.google.com/folderview?id=0ByLnfhJOd1-baUh1Wms0US16QkE&usp=sharing + // https://googledrive.com/host/0ByLnfhJOd1-baUh1Wms0US16QkE + + var m + ; + + str = str || ''; + m = str.match(/(?=drive.*google|google.*drive).*folderview.*id=([^&]+)/i); + console.log(m); + if (m && m[1]) { + return 'https://googledrive.com/host/' + m[1]; + } + } + + function dropbox2host(str) { + if (!/dropbox/.test(str)) { + return; + } + // https://dl.dropboxusercontent.com/u/146173/index.html + + // https://www.dropbox.com/s/3n20djtrs2p0j9k + // https://www.dropbox.com/s/3n20djtrs2p0j9k/index.html?dl=0 + // https://dl.dropboxusercontent.com/s/3n20djtrs2p0j9k/index.html + + str = str || ''; + if (!str.match(/dropboxusercontent\.com\/u\/([^\/]+)\/index.html/)) { + window.alert("Sorry, Desi can't use that type of dropbox link." + + "\n\n1. Open the Dropbox folder on your computer" + + "\n (The DropBox app must be installed)" + + "\n\n2. Open the Public folder" + + "\n (if you don't have a Public folder, your account doesn't support hosting websites and you're simply out of luck)" + + "\n\n2. Create a new file called index.html" + + "\n\n3. Right-click on index.html" + + "\n\n4. Select 'Copy Public Link'" + + "\n\n5. Paste that link as the URL for Desi" + ); + return; + } + + return str.replace(/\/index\.html$/, ''); + } + + function splitUrl(str) { + var m + ; + + str = str || ''; + m = str.match(/(https?:\/\/)?([^\.\/?#]+\.[^\/?#]+)(\/[^#?]+)?/i); + console.log(m); + if (!m || !m[2]) { + return; + } + return { + baseUrl: (m[1] || 'http://') + m[2] + , basePath: (m[3] && m[3].replace(/\/$/, '')) || '/' + }; + } + function getBlogdir () { return $http.get('/api/fs/rootdir').then(function (resp) { desi.blogdir = resp.data; @@ -17,7 +76,10 @@ angular.module('myApp.services', []). getBlogdir(); return { - reset: function () { + splitUrl: splitUrl + , gdrive2host: gdrive2host + , dropbox2host: dropbox2host + , reset: function () { desi = {}; return getBlogdir(); } diff --git a/views/build/build.html b/views/build/build.html index ff53f6f..ff468cb 100644 --- a/views/build/build.html +++ b/views/build/build.html @@ -29,7 +29,7 @@