diff options
Diffstat (limited to 'js-old/gui/ExternSubscription.js')
-rw-r--r-- | js-old/gui/ExternSubscription.js | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/js-old/gui/ExternSubscription.js b/js-old/gui/ExternSubscription.js new file mode 100644 index 000000000..ff57a1f50 --- /dev/null +++ b/js-old/gui/ExternSubscription.js @@ -0,0 +1,83 @@ +/** + * Nextcloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @copyright Bernhard Posselt 2014 + */ + +/** + * This prefills the add feed section if an external link has ?subsribe_to + * filled out + */ +(function (window, document, navigator, $, undefined) { + 'use strict'; + + function queryParam(param) + { + var query = window.location.search.substring(1); + var vars = query.split('&'); + for (var i = 0; i < vars.length; i += 1) { + var pair = vars[i].split('='); + if(pair[0] === param) { + return decodeURIComponent(pair[1]); + } + } + return(false); + } + + // register reader as feed reader in firefox + var location = window.location; + var storage = window.localStorage; + + // if isContentHandlerRegistered is not implemented (Firefox I'm looking + // at you) we use localstorage to prevent registering the feed reader twice + var registerHandler = function (mime, url, title) { + var registered = navigator.isContentHandlerRegistered; + + var isRegistered = function (mime, url) { + if (registered) { + return registered(mime, url) !== 'new'; + } else { + return storage.getItem('registeredHandler') === url; + } + }; + + if (navigator.registerContentHandler && !isRegistered(mime, url)) { + navigator.registerContentHandler(mime, url, title); + if (!registered) { + storage.setItem('registeredHandler', url); + } + } + }; + + var cleanUrl = location.protocol + '//' + location.host + location.pathname; + + var subscribeUrl = cleanUrl + '?subscribe_to=%s'; + var mimeType = 'application/vnd.mozilla.maybe.feed'; + var title = 'Nextcloud News @ ' + cleanUrl; + + registerHandler(mimeType, subscribeUrl, title); + + + $(document).ready(function () { + var subscribeTo = queryParam('subscribe_to'); + + if(subscribeTo && subscribeTo !== 'undefined') { + $('#new-feed').show(); + + var input = $('input[ng-model="Navigation.feed.url"]'); + input.val(subscribeTo); + input.trigger('input'); + + // hacky way to focus because initial loading of a feed + // steals the focus + setTimeout(function() { + input.focus(); + }, 1000); + } + }); + +})(window, document, navigator, $); |