Greasy Fork is available in English.

ViewMore

Enhance functionality for footboom.com forum

// ==UserScript==
// @name        ViewMore
// @namespace		novhna
// @description	Enhance functionality for footboom.com forum
// @include     https://www.footboom.com/forum/*
// @include     http://www.footboom.com/forum/*
// @version     0.0.6
// @require     https://code.jquery.com/jquery-1.11.2.min.js
// @grant       GM_getValue
// @grant       GM_setValue
// ==/UserScript==

$(document).ready(function () {
  setAppButton();

  initiateFunctions();
});

function initiateFunctions() {
  sheetsLess();
	setTimeout(function () {
    viewMore();
  }, 10);
  scaleWithRate();
}

function viewMore() {
	var imgExt= "[.jpg][.jpeg][.png][.gif]";
	var gifRef = [
		'https://image.flaticon.com/icons/svg/29/29579.svg',
		'https://image.freepik.com/free-icon/gif-file-format_318-45086.jpg'
	];
	var insecureRef = [
		'https://upload.wikimedia.org/wikipedia/en/archive/5/54/20051214002236!Unlock-icon.gif',
		'https://cdn0.iconfinder.com/data/icons/basic-ui-elements-round/700/09_lock_unlocked-512.png'
	];
	var aCollection= $('p a:not([class])');
	$.each(aCollection, function(i, a) {

		if ( a.id==="" && a.className==="" ) { // add image || video
			var link= a.href;
      var probExt= link.substr( link.lastIndexOf(".") ).toLowerCase();
			if (probExt.lastIndexOf(":")>-1) probExt= probExt.substr( 0, probExt.lastIndexOf(":") );
			if (probExt.lastIndexOf("/")>-1) probExt= probExt.substr( 0, probExt.lastIndexOf("/") );
			if (probExt.lastIndexOf("?")>-1) probExt= probExt.substr( 0, probExt.lastIndexOf("?") );

			if (imgExt.indexOf("["+probExt+"]") > -1) { // add image
				if (probExt === ".gif") {
          a.innerHTML = "<img src='" + gifRef[0] + "' style='height: 18px;' /> " + a.textContent;
				// } else if (link.indexOf('http://') > -1) {
        //   console.log('insecure image', link);
        //   a.innerHTML = "<img src='" + insecureRef[0] + "' style='height: 18px;' /> " + a.textContent;
        } else {
					a.innerHTML= "<div style='margin: 0 auto; text-align: center; '><img style='max-width:100%; '  src='"+link+"' ></div>";
					a.className= "shown-img"; // no-blink
					$("a.shown-img").hover(function () { $("a.shown-img").css("opacity", 1); }, function () { }); // no-blink
				}
			} else if ( link.indexOf('youtube')>-1 && link.indexOf('?v=')>-1 ) { // add video
				var v= link.substr( link.indexOf('?v=')+3 );
				if (v.indexOf('&')>-1) var v= v.substr( 0 , v.indexOf('&') ); // del after &
				$(a).replaceWith('<iframe width="560" height="315" src="https://www.youtube.com/embed/'+v+'" frameborder="0" allowfullscreen></iframe>');
			} else if ( link.indexOf('youtube')>-1 && link.indexOf('&v=')>-1 ) { // add video
				var v= link.substr( link.indexOf('&v=')+3 );
				if (v.indexOf('&')>-1) var v= v.substr( 0 , v.indexOf('&') ); // del after &
				$(a).replaceWith('<iframe width="560" height="315" src="https://www.youtube.com/embed/'+v+'" frameborder="0" allowfullscreen></iframe>');
			} else if ( link.indexOf('youtu.be')>-1 ) { // add video
				var v= link.substr( link.indexOf('.be/')+4 );
				var vTime= v.substr( v.indexOf('?t=')+3 );
				if (v.indexOf('?t=')>-1) var v= v.substr( 0, v.indexOf('?t=') );
				if (v.indexOf('&')>-1) var v= v.substr( 0 , v.indexOf('&') ); // del after &
				$(a).replaceWith('<iframe width="560" height="315" src="https://www.youtube.com/embed/'+v+'" frameborder="0" allowfullscreen></iframe>');
			} else {
				a.innerHTML = "<img src='https://www.google.com/s2/favicons?domain=" + a.origin + "' /> " + a.host;
				$(a).css({
					"color": "black",
					"border-radius": "10px",
					"border": "1px solid #DFDFDF",
					"padding": "4px 8px",
					"display": "inline-block",
					"font-family": "pf_din_text_comp_proregular,pt-regular,Arial,sans-serif",
					"background": "#F8C700"
				});
      }
		}

	});
}

function sheetsLess() {
	$('div.g-flow-hidden.b-text').each(function (i, post) {
    if ($(post).height() > window.innerHeight / 2) {
      sheetsLess.setFoldedStyle(post);
      $(post).click(sheetsLess.toggleSheet.bind(this));
    }
	});
}

sheetsLess.setFoldedStyle = function (element) {
  $(element).css({
    "max-height": window.innerHeight / 3 + "px",
    "box-shadow": "inset 0px -20px 20px -20px #111111",
    "cursor": "pointer"
  });
}

sheetsLess.setUnfoldedStyle = function (element) {
  $(element).css({
    "max-height": "none",
    "box-shadow": "none"
  });
}

sheetsLess.toggleSheet = function (e) {
  if ($(e.currentTarget).css("max-height") === 'none') {
    sheetsLess.setFoldedStyle(e.currentTarget);
  } else {
    sheetsLess.setUnfoldedStyle(e.currentTarget);
  }
}

const scaleWithRate = () => {
  $('div.m-comment-rate').each((i, item) => {
    const rate = +item.firstChild.textContent;
    if (rate) {
      const comment = item.parentNode.parentNode.parentNode.children[1];
      $(comment).css({ fontSize: Math.min(22, Math.max(8, 14 + +rate)) + 'px' });
    }
  });
}

// Not fully implemented
function setAppButton() {
  // $('body').append('<div id="plawka">↻</div>');
  // $('div#plawka').css({
  //   "display": "inline-block",
  //   "width": "50px",
  //   "height": "50px",
  //   "border-radius": "50%",
  //   "text-align": "center",
  //   "line-height": "50px",
  //
  //   "position": "fixed",
  //   "bottom": "10px",
  //   "right": "10px",
  //   "z-index": "1000",
  //
  //   "cursor": "pointer",
  //   "background-color": "#F8C700",
  //   "opacity": "0.5"
  // });
  // $('div#plawka').click(initiateFunctions);
}