4chan Gallery

Adds a gallery mode and title to customBoardList.

Від 29.10.2014. Дивіться остання версія.

  1. // ==UserScript==
  2. // @name 4chan Gallery
  3. // @version 1.0.6
  4. // @description Adds a gallery mode and title to customBoardList.
  5. // @include *://boards.4chan.org/*
  6. // @namespace https://greasyfork.org/users/3159
  7. // ==/UserScript==
  8.  
  9. function s(q){var b = document.getElementById(q);return b}
  10. setTimeout(function(){
  11. var boardname = document.getElementsByClassName('boardTitle')[0].innerHTML.split('/ - ')[1];
  12. var boardlink = document.location.href.split('thread/')[0];
  13. var cb = document.getElementsByClassName('customBoardList'),a = 0;
  14. cb[0].insertAdjacentHTML('afterbegin','[<a href="' + boardlink + '">' + boardname + '</a>] ');
  15. cb[1].insertAdjacentHTML('afterbegin','[<a href="' + boardlink + '">' + boardname + '</a>] ');
  16.  
  17. if (document.location.href.indexOf('/thread/') > 0){
  18. cb[0].insertAdjacentHTML('beforeend','[<a id="glink" href="#">Gallery</a>]');
  19. cb[1].insertAdjacentHTML('beforeend','[<a id="glink2" href="#">Gallery</a>]');
  20. s("glink").onclick=function(){view()};
  21. s("glink2").onclick=function(){view()};
  22. s('bottom').insertAdjacentHTML('afterend','<div id="bg" style="opacity:0.9;position:fixed;top:0;left:0;z-index:9999;background-color:black;width:100%;height:100%;display:none"></div><div id="inner""></div>');
  23. var arw = 'position:absolute;z-index:10000;top:calc(50% - 15px);border-top: 15px solid transparent;border-bottom: 15px solid transparent;display:none;'
  24. s('inner').insertAdjacentHTML('afterend','<div id="larrow" style="' + arw + 'border-right: 20px solid #bababa;left:5px"></div>');
  25. s('inner').insertAdjacentHTML('afterend','<div id="rarrow" style="' + arw + 'border-left: 20px solid #bababa;right:5px"></div>');
  26. s('larrow').onclick=function(){if(a>0){a--;s('inner').children[0].src = array()[a];nbr()}};
  27. s('rarrow').onclick=function(){if(a<(array().length-1)){a++;s('inner').children[0].src = array()[a];nbr()}};
  28. s('larrow').insertAdjacentHTML('afterend','<p id="n" style="color:white;margin:0;position:absolute;bottom:0;right:0;z-index:10000;display:none">[' + (a+1) + '/' + array().length + ']</p>');
  29. s('bg').onclick=function(){this.style.display = 'none';s('inner').style.display = 'none';s('larrow').style.display = 'none';s('rarrow').style.display = 'none';s('n').style.display = 'none'};
  30.  
  31. function view(){
  32. s('bg').style.display = 'block';
  33. s('inner').style.display = 'block';
  34. s('larrow').style.display = 'block';
  35. s('rarrow').style.display = 'block';
  36. s('n').style.display = 'block';
  37. if (a<1){
  38. var img = new Image();
  39. img.style.cssText="position:absolute;z-index:10000;max-height:calc(100% - 40px);max-width:calc(100% - 60px);top:0;bottom:0;margin-top:auto;margin-bottom:auto;margin-left:auto;margin-right:auto;left:0;right:0";
  40. img.src = array()[0];
  41. img.onclick = function(){
  42. if (a < (array().length - 1)){
  43. a++;
  44. img.src = array()[a];
  45. nbr();
  46. }
  47. }
  48. s('inner').appendChild(img);
  49. }
  50. pre(array());
  51. }
  52. function nbr(){
  53. s('n').innerHTML = '[' + (a+1) + '/' + array().length + ']';
  54. }
  55. function array(){
  56. var imgs = document.getElementsByClassName('fileThumb'),b=[];
  57. for (var c=0;c<imgs.length;c++){
  58. if((imgs[c].getAttribute('href').indexOf('webm')) < 0){
  59. b.push(imgs[c].getAttribute('href'));
  60. }
  61. }
  62. return b;
  63. }
  64. function pre(arrayOfImages, index) {
  65. index = index || 0;
  66. if (arrayOfImages && arrayOfImages.length && arrayOfImages.length > index) {
  67. var img = new Image();
  68. img.onload = function() {
  69. pre(arrayOfImages, index + 1);
  70. };
  71. img.src = arrayOfImages[index];
  72. }
  73. }
  74. document.addEventListener("keydown", function(e){
  75. switch(e.which){
  76. case 39:
  77. if(a<(array().length-1)){a++;s('inner').children[0].src = array()[a];nbr()};
  78. break;
  79. case 37:
  80. if(a>0){a--;s('inner').children[0].src = array()[a];nbr()};
  81. break;
  82. }
  83. });
  84. }
  85. }, 1000);