MediaWiki:Gadget-ReferenceTooltips.js

From Len'en Wiki
Jump to navigation Jump to search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
// See [[mw:Reference Tooltips]]
// Source https://en.wikipedia.org/wiki/MediaWiki:Gadget-ReferenceTooltips.js

$(function(){function a(a){mw.loader.using("jquery.cookie",function(){$.cookie("RTsettings",(a?"1":"0")+"|"+b[1]+"|"+b[2],{path:"/",expires:90}),location.reload()})}var b,c,d,e,f,g,h;if(!window.pg&&-1<["","Project","Help","Draft"].indexOf(mw.config.get("wgCanonicalNamespace"))){if(mw.messages.set({"RT-enable":"Enable Reference Tooltips","RT-disable":"Disable Reference Tooltips","RT-disablenote":"Once disabled, Reference Tooltips can be re-enabled using a link in the footer of the page.","RT-delay":"Delay before the tooltip appears (in milliseconds): ","RT-activationmethod":"Tooltip is activated by:","RT-hovering":"hovering","RT-clicking":"clicking","RT-options":"Reference Tooltips options","RT-options-save":"Save settings","RT-settings":"Tooltip settings"}),c=document.cookie.split("RTsettings=")[1],c?(b=c.split(";")[0].split("%7C"),e=!!+b[0],f=+b[1],g=!!+b[2]):(e=!0,f=200,g="ontouchstart"in document.documentElement,b=[+e,f,+g]),!e)return d=$("#footer-places, #f-list"),d.length||(d=$("#footer li").parent()),void d.append($("<li>").append($("<a>").text(mw.msg("RT-enable")).attr("href","").on("click",function(b){b.preventDefault(),a(!0)})));$(".reference").each(function(){function b(a){return a=a.firstChild,a=a&&a.getAttribute&&a.getAttribute("href"),a=a&&a.split("#"),a=a&&a[1],a=a&&document.getElementById(a),a=a&&"LI"===a.nodeName&&a,a}function d(a){l&&l.parentNode===document.body?m=setTimeout(function(){$(l).animate({opacity:0},100,function(){document.body.removeChild(l)})},g?16:100):$(b(a)).removeClass("RTTarget")}function e(){l.parentNode&&11!==l.parentNode.nodeType||(document.body.appendChild(l),p=!0),$(l).stop().animate({opacity:1},100),clearTimeout(m)}function i(){h?h.dialog("open"):h=$("<form>").append($("<button>").css("width","100%").text(mw.msg("RT-disable",mw.user)).button().on("click",function(b){b.preventDefault(),a(!1)}),$("<br>"),$("<small>").text(mw.msg("RT-disablenote")),$("<hr>"),$("<label>").text(mw.msg("RT-delay")).append($("<input>").attr({type:"number",value:f,step:50,min:0,max:5e3})),$("<br>"),$("<span>").text(mw.msg("RT-activationmethod",mw.user)),$("<label>").append($("<input>").attr({type:"radio",name:"RTActivate",checked:g?void 0:"checked",disabled:"ontouchstart"in document.documentElement?"disabled":void 0}),mw.msg("RT-hovering",mw.user)),$("<label>").append($("<input>").attr({type:"radio",name:"RTActivate",checked:g?"checked":void 0}),mw.msg("RT-clicking",mw.user))).submit(function(a){a.preventDefault()}).dialog({modal:!0,width:500,title:mw.msg("RT-options"),buttons:[{text:mw.msg("RT-options-save",mw.user),click:function(){var a=this.getElementsByTagName("input"),b=+a[0].value;$.cookie("RTsettings","1|"+(-1<b&&5001>b?b:f)+"|"+(a[1].checked?"0":"1"),{path:"/",expires:90}),location.reload()}}]})}function j(a){var c,j=this;window.pg||(g&&(a.preventDefault(),!(l&&l.parentNode===document.body)&&(c=function(a){for(a=a.target;a&&!$(a).hasClass("referencetooltip");)a=a.parentNode;a||(clearTimeout(n),d(j),$(document.body).off("click touchstart",c))},setTimeout(function(){$(document.body).on("click touchstart",c)}))),m&&clearTimeout(m),n&&clearTimeout(n),n=setTimeout(function(){var a,f,k,m,n,q=b(j);if(q){if(a=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop,f=$(q).offset().top,!g&&a<f&&a+$(window).height()>f+q.offsetHeight)return void $(q).addClass("RTTarget");if(!l){l=document.createElement("ul"),l.className="referencetooltip",k=l.appendChild($(q).clone(!0)[0]);try{if("A"!==k.firstChild.nodeName)for(;"A"===k.childNodes[1].nodeName&&-1!==k.childNodes[1].getAttribute("href").indexOf("#cite_ref-");)do k.removeChild(k.childNodes[1]);while(" "===k.childNodes[1].nodeValue)}catch(a){mw.log(a)}k.removeChild(k.firstChild),$(l.firstChild.insertBefore(document.createElement("span"),l.firstChild.firstChild)).addClass("RTsettings").attr("title",mw.msg("RT-settings")).on("click",function(){mw.loader.using(["jquery.cookie","jquery.ui.dialog"],i)}),l.appendChild(document.createElement("li")),g||$(l).on({mouseenter:e,mouseleave:d})}e(),m=$(j).offset(),n=l.offsetHeight,$(l).css({top:m.top-n,left:m.left-7}),l.offsetHeight>n&&($(l).css({left:"auto",right:0}),l.lastChild.style.marginLeft=m.left-l.offsetLeft+"px"),p&&(m.top<l.offsetHeight+(window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop)?$(l).addClass("RTflipped").css({top:m.top+12}):"referencetooltip RTflipped"===l.className&&$(l).removeClass("RTflipped"),p=!1)}},g?0:f))}function k(){clearTimeout(n),d(this)}var l,m,n,p=!1;$(this).on(g?{click:j}:{mouseenter:j,mouseleave:k})})}});