// Flickr TopPager // Copyright (c) 2010, Patrick Joseph. // Released under the GPL license // http://www.gnu.org/copyleft/gpl.html // // ==UserScript== // @name Flickr - TopPager // @namespace http://userscripts.org/users/isamux // @description Inserts a pager at the top of pages which only show a pager at the bottom of the page. // @version 1.0.6 // @date 2011-04-24 // @creator Patrick Joseph // @include http://www.flickr.com/photos/* // @include http://www.flickr.com/groups/* // @include http://www.flickr.com/*/favorites* // @exclude http://*.flickr.com/photos/friends* // @downloadURL https://update.greasyfork.icu/scripts/10795/Flickr%20-%20TopPager.user.js // @updateURL https://update.greasyfork.icu/scripts/10795/Flickr%20-%20TopPager.meta.js // ==/UserScript== // ==Changelog== //2011-04-24 v1.0.6: // * Reduced bottom margin of navigation. //2011-04-24 v1.0.5: // * Adjusted IDs of paginated contents after change of HTML-structure on Flickr. // ==/Changelog== // --------------- // CONFIGURATION // --------------- const CONST_ENABLE_FIREBUG_LOGGING = false; const CONST_PAGINATED_CONTENT_XPATH_PHOTOSTREAM = '//div[starts-with(@class,"PhotoStream")]'; const CONST_PAGINATED_CONTENT_XPATH_GROUP = '//div[@class="HoldPhotos"]'; const CONST_PAGINATED_CONTENT_ID_FAVORITES = 'favoriteThumbs'; // --------------- // SCRIPT-MAIN // --------------- // 0. Prepare everything // init logging initLogging(console); // I. get element before which the top pager will be inserted. oPaginatedContent = getPaginatedContent(); // II. insert top page paginator if(oPaginatedContent != null) { console.info("TopPager: Paginated content was found"); oPaginator = getPaginator(); oPaginatorCopy = oPaginator.cloneNode(true); console.info("TopPager: Bottom paginator cloned"); oPaginatedContent.parentNode.insertBefore(oPaginatorCopy, oPaginatedContent); console.info("TopPager: Finished adding top Pager"); // reduce bottom margin of navigation subNav = document.getElementById('SubNav'); subNav.style.setProperty("margin-bottom","0",""); } // =============== // FUNCTION LIB // =============== function getPaginatedContent() { // try get that element on photostream pages, ... oTmpFound = getElement(CONST_PAGINATED_CONTENT_XPATH_PHOTOSTREAM); if(oTmpFound == null) { //...then on groups pages oTmpFound = getElement(CONST_PAGINATED_CONTENT_XPATH_GROUP); } if(oTmpFound == null) { //...and finally on favorites pages. oTmpFound = document.getElementById(CONST_PAGINATED_CONTENT_ID_FAVORITES); } return oTmpFound; } function getPaginator() { return getElement('//div[@class="Pages"]'); } function getElement(exp) { var xpathResult = document.evaluate( exp, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); return xpathResult.snapshotItem(0); } function initLogging(pConsole) { if(typeof pConsole === "undefined" || !CONST_ENABLE_FIREBUG_LOGGING) { console = { log: function() { }, info: function() {}, debug: function() { } , warn: function() {}, error: function() {} }; } }