MediaWiki:Gadget-HeadingLink.js

From FloraWiki - das Wiki zur Schweizer Flora
Revision as of 16:33, 3 October 2019 by Andreas Plank (Talk | contribs) (http --> https)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, 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: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Clear the cache in Tools → Preferences
// <syntaxhighlight lang="javascript">
/**  
 * This JavaScript will be loaded only for some pages, see MediaWiki:Common.js
 * This program is free software; you can redistribute it and/or modify it under the terms of 
 * the EUPL v.1.1 or (at your option) the GNU General Public License as published by the Free 
 * Software Foundation; either GPL v.3 or (at your option) any later version. This program is  
 * distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the  
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General  
 * Public License (http://www.gnu.org/licenses/) for more details.  
 * Author: A. Plank
 * @description add a link of the section while hovering it 
 * @requires $.jqueryEscapeId()
 * @requires $.jI18n
 * @requires $.resource()
 */
/*jslint sloppy: true, indent: 2, white: true */
/*global clearInterval: false, clearTimeout: false, document: false, event: false, frames: false, history: false, Image: false, location: false, name: false, navigator: false, Option: false, parent: false, screen: false, setInterval: false, setTimeout: false, window: false, XMLHttpRequest: false, $: false, mw: false */

(function () {
  function init_HeadingLink () {
    switch (mw.config.get( 'wgNamespaceNumber' )) {
      case  0: // main namespace
      case  1: // discussion namespace
      case  2: // user namespace
      case 10: // template namespace
      case 12: // help namespace
      case 200: // portal namespace
        if ($('h1,h2,h3,h4').length) {
          $('h1,h2,h3,h4').mouseenter(function () {
            var hrefID = $(this).find('.mw-headline').attr('id') === undefined ? false : $(this).find('.mw-headline').attr('id'),
              hasCurRevisionId = (mw.config.get( 'wgCurRevisionId') ? true : false),
              tmpArtilePath = (mw.config.get( 'wgServer') + 
                mw.config.get( 'wgArticlePath').replace(/\$1/, mw.config.get( 'wgPageName')));
            if (hrefID) {
              msgBoxHeadinglink = '<div id=linkmsg_' + hrefID + ' style=display:none class=js-messagebox >' + 
                ( $.jI18n.en.HeadingLink_toolTipHeadingLinkHelp ? $.resource('HeadingLink_toolTipHeadingLinkHelp') : '(1) Normal link to this head line or (2) the permanent link with version number:' ) +
                '<ol>' + 
                  '<li>' + tmpArtilePath + ( hrefID ? '#' + hrefID : '' ) + '</li>' +
                  ( hasCurRevisionId ? '<li>' + tmpArtilePath + '?oldid=' + mw.config.get('wgCurRevisionId') + ( hrefID ? '#' + hrefID : '' ) + '</li>' : '')  +
                '</ol></div>';
              if ( $(this).find('.headinglink').length === 0 ) {
                $(this).append(' '
                 + '<span ' +
                   ' class="headinglink noprint" ' + 
                   ' onclick="' +
                     '$(this).parent().before( msgBoxHeadinglink );' + 
                     '$($.jqueryEscapeId(\'#linkmsg_' + hrefID + '\'))' + 
                       '.slideDown(\'slow\', function() {$(this).addClass(\'is-shown\');} )' + 
                       '.mouseleave (function () {if($(this).hasClass(\'is-shown\')) {$(this).slideUp(\'slow\', function () {$(this).remove();return false;});return false;} });' + 
                     '"' +
                   ' style="color:#CCCCCC;position:absolute;left:-22px;margin-left: 0.2em;cursor: pointer;" ' + 
                   ' title="' + ( $.jI18n.en.HeadingLink_toolTipHeadingLink ? $.resource('HeadingLink_toolTipHeadingLink') : 'Click to get a (permanent) link of this headline' ) + '" ' + 
                   ' >'
                 +  '<img src="//species-id.net/o/media/f/f9/Button-sprite_link-pale.png"  style="vertical-align:middle;" width="16" height="16">' 
                 + '</span>');
              }
            }// if hrefID
          })// mouseenter
          .mouseleave(function () {
            var $this=$(this);
            $this.find('span.headinglink').fadeOut(3000);
            setTimeout(function(){ 
              $this.find('span.headinglink').remove();
            }, 3500);
          });
        }
        break;
    }
  }// init_HeadingLink
  jQuery(document).ready(init_HeadingLink);
})();
// </syntaxhighlight>