Popurls Classic Black Style 2016

Brings back Popurls classic black style, restores and improves former functionality while adding fullsize image previews.

Tính đến 11-12-2015. Xem phiên bản mới nhất.

  1. // ==UserScript==
  2. // @name Popurls Classic Black Style 2016
  3. // @namespace https://greasyfork.org/en/users/10118-drhouse
  4. // @version 1.0
  5. // @description Brings back Popurls classic black style, restores and improves former functionality while adding fullsize image previews.
  6. // @run-at document-start
  7. // @include http://popurls.com/
  8. // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
  9. // @resource linkscss https://greasyfork.org/scripts/14798-popurls-classic-link-colors-stylesheet/code/popurls%20classic%20link%20colors%20stylesheet.js?version=93470
  10. // @resource qtipcss https://cdnjs.cloudflare.com/ajax/libs/qtip2/3.0.2/jquery.qtip.min.css
  11. // @author drhouse
  12. // @icon http://popurls.net/favicon.ico
  13. // ==/UserScript==
  14.  
  15. /* All colors and styles are an *exact* re-creation of the original site, the css values were copied from a locally saved html file from 2014 of the original popurls.com black site */
  16. this.$ = this.jQuery = jQuery.noConflict(true);
  17.  
  18. $(document).ready(function () {
  19. $('body').css('background-color','#0E0E0E'); //black background
  20. $('body').css('font-size','0.9em'); //original font size
  21. //original a { link, visited, hover, active } link colors
  22. var linkscss = GM_getResourceText("linkscss");
  23. GM_addStyle (linkscss);
  24.  
  25. $('.feedbox h4').css({'border-top': '1px solid #505050'}); //original article divider line color
  26.  
  27. $( ".box-d > h4" ).wrap( "<div class='pure-u-1'></div>" );
  28.  
  29. //original hover color behavior, new style removed hovers
  30. $('#popurls > div > div > div > div > div > div, .box-d > div').css('background-color','#0E0E0E').hover(
  31. function(){
  32. $(this).css('background-color','#333');
  33. $( this ).has( ".more" ).css( "background-color", "#0E0E0E" );
  34. },
  35. function(){
  36. $(this).css('background-color','#0E0E0E');
  37. });
  38.  
  39. $('h4 > a > img').attr('height','10px').attr('width','10px'); //resize article thumbnails for original line spacing
  40.  
  41. //restore original 'More' link & blend new design's into background
  42. $('.more > a').attr('style','background: url("http://cdn.popurls.com/get/100322/i/b/mm.gif") center right no-repeat;color:#0E0E0E !important');
  43. $('.more > a').text("_________");
  44. $('.more').attr('align','right');
  45.  
  46. //invert main graphics to visually work, going from new white to original black background
  47. $('#holder-logo').css({'-webkit-filter':'invert(100%)','background-color':'white'}); //invert popurl main logo
  48. $('h3').css('-webkit-filter','invert(100%)'); //invert coloumn header banners
  49.  
  50. //improve tooltips light rounded style
  51. var qtipcss = GM_getResourceText("qtipcss");
  52. GM_addStyle (qtipcss);
  53.  
  54. unsafeWindow.$('[title!=""]').qtip({
  55. style: {
  56. classes: 'qtip-light qtip-shadow qtip-rounded'
  57. },
  58. position: {
  59. target: 'mouse', // Track the mouse as the positioning target
  60. adjust: { x: 5, y: 5 } // Offset it slightly from under the mouse
  61. }
  62. });
  63.  
  64. //classic black favicon.ico
  65. a=document.createElement("link");
  66. a.setAttribute("type", "image/jpeg");
  67. a.setAttribute("rel", "icon");
  68. a.setAttribute("href", 'data:image/x-icon;base64,AAABAAIAICAAAAEACACoCAAAJgAAABAQAAABAAgAaAUAAM4IAAAoAAAAIAAAAEAAAAABAAgAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAABgYGAIaGhgBGRkYAxsbGAGZmZgCmpqYAKioqAObm5gBWVlYAdnZ'+
  69. '2ALa2tgA'+'WFhYA9vb2AJ6engDW1tYAOjo6AA4ODgCOjo4ATk5OAG5ubgCurq4A7u7uAF5eXgB+fn4Avr6+AN7e3gAyMjIAHh4eAP7+/gBCQkIACgoKAIqKigBKSkoAysrKAGpqagCqqqoALi4uAOrq6gBaWloAenp6ALq6ugAaGhoA+vr6'+
  70. 'AKKiogDa2toAPj4+ABI'+'SEgCSkpIAUlJSAHJycgCysrIA8vLyAGJiYgCCgoIAwsLCAOLi4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  71. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  72. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  73. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  74. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  75. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  76. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  77. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIYJTcrJAAAAAAA'+
  78. 'AAAABg0ZJTYSAAAAAAAAAAAAAAASDBwcHBwVMAAAAAAAACAHHBwcHComAAAAAAAAAAAACw4cHBwcHBwMHQAAAAAPFRwcHBwcHDcpAAAAAAA'+'AAAAIHBwcHBwcHBwOCwAALiEcHBwcHBwcHDQAAAAAAAAAABccHBwcHBwcHBw1EQEJHBwcH'+
  79. 'BwcHBwcHwAAAAAAAAAACRwcHBwcHBwcHBUVNwccHBwcHBwcHBwBAAAAAAAAAAACHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBIAAAAAAAAAAAAyHBwcHBwcHBw'+'cHBwcHBwcHBwcHBwYHgAAAAAAAAAAABIcHBwcHBwcHBwcHBwcHBwcHBwcHC'+
  80. 'YAAAAAAAAAAAAPJRwcHBwcHBwcHBwcHBwcHBwcHBwcFR0AAAAAAAAAAA0cHBwcHBwcHBwcHBwcHBwcHBwcHBwcFAAAAAAAAAAAMhwcHBwcHBwcHBwcHBwcHBwcHBwcHBw'+'YAAAAAAAAAAAjHBwcHBwcHBwcHBwcHBwcHBwcHBwcHAoAAAA'+
  81. 'AAAAALiwcHBwcHBwcHBwzNzcVHBwcHBwcHBwcBykAAAAAAAAIHBwcHBwcHBwcHB8xFxccHBwcHBwcHBwcNAAAAAAAAAocHBwcHBwcHBwyEAsLAAUcHBwcHBwcHBw2AAAAAAAaDBwcHBw'+'cHBwcDRAAAAAAEC8cHBwcHBwcHBwPAAAAACcc'+
  82. 'HBwcHBwcBwQAAAAAAAAAABY3HBwcHBwcHAEAAAAAChwcHBwcFREbAAAAAAAAAAAAACkBJRwcHBwcNgAAAAAZHBwMAzEbAAAAAAAAAAAAAAAAAAApEzYMHBwHAAAAABQyEyQAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAYiFAoAAAAAAAAAAAAAA'+
  83. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAA'+
  84. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAA'+
  85. 'AAAAAAAAAAAAAAAAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAGBgYAhoaGAMbGxgBKSkoA5ubmACYmJgCmpqYAZmZmAPb29gAeHh4Avr6+ANra2gBeXl4A7u7uADo6OgAODg4AmpqaAFJSUgCurq4AcnJyAP7'+
  86. '+/'+'gDi4uIATk5OAOrq6gAuLi4A+vr6ACIiIgDCwsIA3t7eAPLy8gA+Pj4AEhISAJ6engCysrIAenp6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  87. 'AAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  88. 'AAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  89. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  90. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  91. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  92. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  93. 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEEFxMAAAMVHSIAAAAAAAAhFBQUBxYEFBQcDwAAAAAAEhQUFB0IFBQUCw8AAAAAACIUFBQ'+
  94. 'UFBQUFAYAAAAAAAAbFBQUFBQUFBQNGgAAAAAPCxQUFA0NFBQUFB4AAAAADBQUFBcDDgIUFBQQAAAAAAoUGSEYAAA'+'JEA0UCwAAAAAbIA4AAAAAAAAFAQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'+
  95. 'AAAAAAAAX4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=');
  96.  
  97. document.documentElement.firstChild.appendChild(a);
  98.  
  99. //introduce fullsize improved popup image functionality to adjust for reduced thumbnails
  100. var logo = $('#holder-logo').find('img');
  101. $( "img" ).not(logo).each(function() {
  102. var key = $(this).attr('src');
  103. $( this ).wrap( "<a href="+key+" class='preview'></a>" );
  104. $( this ).replaceWith( "<img src="+key+" height=12 width=12>" );
  105. });
  106.  
  107. var prevWidth;
  108. $("a.preview").hover(function(e){
  109. this.t = $(this).parent().parent().find('a:nth-child(2)').attr('oldtitle');
  110. this.title = "";
  111. var qt = $(this).parent().attr('data-hasqtip');
  112. $('#qtip-'+qt).removeClass('qtip');
  113. if (!this.t){
  114. this.t = $(this).parent().attr('oldtitle');
  115. if (!this.t){
  116. this.t = $(this).parent().text();
  117. }
  118. }
  119.  
  120. var c = (this.t !== "") ? "<br/>" + this.t : "";
  121. $("body").append("<p id='preview'><img src='"+ this.href +"' alt='Image preview' />"+ c +"</p>");
  122. $('#preview').css('position','absolute')
  123. .css('color','white')
  124. .css('padding','8px')
  125. .css('font','100% Arial')
  126. .css('border','1px solid #fff')
  127. .css('background','#191919');
  128. var $img = $('#preview > img');
  129.  
  130.  
  131. $img.on('load', function(){
  132. prevWidth = $(this).width();
  133. $('#preview').css('width', prevWidth);
  134. });
  135.  
  136. $('#preview').css('width', prevWidth);
  137. $('#preview').css('word-wrap','break-word');
  138.  
  139. var rt = ($(window).width() - ($( this ).find('img').offset().left + $( this ).find('img').outerWidth()));
  140. var viewportWidth = $(window).width();
  141. var viewportHeight = $(window).height();
  142. var viewportWidthCenter = viewportWidth/2;
  143. var viewportHeightCenter = viewportHeight/2;
  144. var xOffset;
  145. var yOffset;
  146.  
  147. if (rt >= viewportWidthCenter){
  148. xOffset = 10;
  149. yOffset = 30;
  150. $("#preview")
  151. .css("top",(e.pageY - xOffset) + "px")
  152. .css("left",(e.pageX + yOffset) + "px")
  153. .fadeIn("fast");
  154. } else {
  155. xOffset = 10;
  156. yOffset = $('#preview').width() + 30;
  157. $("#preview")
  158. .css("top",(e.pageY - xOffset) + "px")
  159. .css("left",(e.pageX - yOffset) + "px")
  160. .fadeIn("fast");
  161. }
  162. },
  163. function(){
  164. this.title = this.t;
  165. $("#preview").remove();
  166. });
  167.  
  168. });