Difference between revisions of "MediaWiki:Common.js"

(Replaced content with "$(function() { importScriptURI('https://arbiterit.com/MediaWiki:SortTableFilter.js'); }); $(function() { importScriptURI('https://arbiterit.com/MediaWiki:Sortabletable....")
Line 10: Line 10:
 
importScriptURI('https://arbiterit.com/MediaWiki:Sortabletable.js');
 
importScriptURI('https://arbiterit.com/MediaWiki:Sortabletable.js');
 
});
 
});
−
 
−
///////////////////////
 
−
// Table Filter/Sort //
 
−
///////////////////////
 
−
/**
 
−
* @description Table Filter/Sort
 
−
* TODO ?replace by jQuery plugin datatable?
 
−
*
 
−
* @requires $.resource()
 
−
* @requires $.jI18n.en
 
−
* @returns {undefined}
 
−
*/
 
−
window.initTableFilterSort = function (){ // see MediaWiki:SortTableFilter.js
 
−
/* Note: problem is auto-inserted <tbody></tbody> by the browser: must be removed and
 
−
  replaced by thead + tbody. jQuery.unwrap() was not successful */
 
−
  // add possibly more classes from http://www.javascripttoolbox.com/lib/table/documentation.php
 
−
  // Note: only applies to non-nested tables
 
−
  var jAutotables = $('table.table-autosort, table.table-autofilter, table-autostripe,table-sorted-asc,table-sorted-desc, table-filtered');
 
−
  if (jAutotables.length) {
 
−
    // Note: in MediaWiki:SortTableFilter.js 'SortTableFilter_InputFilterTitle' was not recognized
 
−
    $.extend(true, $.jI18n, {
 
−
      en: {
 
−
        SortTableFilter_AutoSortTitle : 'Click to sort',
 
−
        SortTableFilter_FilterAllLabel: 'Filter: All',
 
−
        SortTableFilter_InputFilterTitle: 'Filter text (case sensitive, uses reg. expressions)'
 
−
      },
 
−
      de: {
 
−
        SortTableFilter_AutoSortTitle : 'Zum Sortieren klicken',
 
−
        SortTableFilter_FilterAllLabel: 'Zeige: alle',
 
−
        SortTableFilter_InputFilterTitle: 'Text filtern (GROß/klein!, nutzt reg. Ausdrücke)'
 
−
      }
 
−
    });
 
−
    // get sortable/filterable here already otherwise multiple th-filters
 
−
    $.getScript(mw.config.get( 'wgServer' ) + mw.config.get( 'wgScript' ) + '?title=MediaWiki:SortTableFilter.js&action=raw&ctype=text/javascript',
 
−
      function(){return true;});
 
−
    // modify tables to introduce thead structure
 
−
    jAutotables.each(function(index){ //TODO simplify code? if()…
 
−
      // There may or may not be a tbody around tr. NOTE: $.unwrap() does not work here!
 
−
      // Memo: find('tr th') finds th, .parent() retrieves tr! .wrapAll will wrap inside DOM, not in return value! .detach() returns detached
 
−
      // OK in FF 3.6 and IE 7-8, not in IE6 (like the old code)
 
−
      // FURTHER WORK: Ideally, all normal tr td should remain in a tbody.
 
−
      var jThis = $(this),
 
−
        jThead = jThis.find('tr th').parent().detach(),
 
−
        jTfoot = jThis.find('tr[class=tfoot] td').parent().detach(),// remove it from the DOM
 
−
        jTbody = jThis.find('tbody:first');
 
−
      if (jTbody.length===0) {
 
−
        jThis.children().wrapAll('<tbody/>');
 
−
        jTbody = jThis.find('tbody:first');
 
−
      }
 
−
      jTbody.before($('<thead/>').append(jThead));
 
−
      if (jTfoot.length) {
 
−
        jTbody.after($('<tfoot/>').append(jTfoot));
 
−
      }
 
−
      // th with class="input" gives an input field instead of selections
 
−
      $(this).find('th[class=input]').append('<input name="filter" title="'+$.resource('SortTableFilter_InputFilterTitle')+'" size="8" onkeyup="Table.filter(this,this)">');
 
−
    });// end each()
 
−
  } // END if any autotable
 
−
};
 
−
 
−
/**
 
−
* @description: Collapse the TOC using id="toc-autocollapse"
 
−
* @returns {undefined}
 
−
*/
 
−
window.initTOCautocollapse = function () {
 
−
  if ($('#toc-autocollapse').length) {
 
−
    $('#togglelink').click();
 
−
  }
 
−
};// end initTOCautocollapse()
 
−
 
−
/**
 
−
* Add a placeholder message and checks on Special:Contact
 
−
*
 
−
* Due to e-mail configurations all non @mfn-berlin.de addresses fail to work
 
−
* as from-address on Special:Contact. This functions adds a placeholder and checks the
 
−
* user’s input
 
−
* @requires extension:ContactPage
 
−
* @requires mw.config
 
−
* @requires jQuery
 
−
*/
 
−
window.prepareSpecialContact4Info = function () {
 
−
  var placeholderMessage = '', warningMessageDoesNotWork = '';
 
−
  switch (mw.config.get( 'wgCanonicalSpecialPageName' )) {
 
−
    case 'Contact': // is a Special:Contact page regardless of language
 
−
      switch (mw.config.get('wgPageName')) {
 
−
        case 'Special:Contact':
 
−
        case 'Spécial:Contact':
 
−
          placeholderMessage = 'Leave it empty or add e-mail in message (mfn-berlin.de works only)';
 
−
          warningMessageDoesNotWork = 'Only mfn-berlin.de addresses do work. Leave it empty please and add your address in the message. Thank you.';
 
−
          break;
 
−
        case "Spezial:Kontakt":
 
−
          placeholderMessage = 'E-Mail in Nachricht dazu oder leer lassen (nur mfn-berlin.de geht)';
 
−
          warningMessageDoesNotWork = 'Nur mfn-berlin.de Adressen können verarbeitet werden. Bitte leer lassen oder E-Mail im Text angeben. Danke.';
 
−
          break;
 
−
        default:
 
−
          placeholderMessage = 'Leave it empty or add e-mail in message (mfn-berlin.de works only)';
 
−
          warningMessageDoesNotWork = 'Only mfn-berlin.de addresses do work. Leave it empty please and add your address in the message. Thank you.';
 
−
          break;
 
−
      }
 
−
      // check input
 
−
      if (!$('input[name="wpFromAddress"]').val() || $('input[name="wpFromAddress"]').val().match(/.*@mfn-berlin.de/)) {
 
−
        $('input[name="wpFromAddress"]')
 
−
          .css({'background-color': '', 'cursor': ''})
 
−
          .attr({'title': ''});
 
−
      } else {
 
−
        $('input[name="wpFromAddress"]')
 
−
          .css({'background-color': 'orange', 'cursor': 'help'})
 
−
          .attr({'title': warningMessageDoesNotWork});
 
−
      }
 
−
      $('input[name="wpFromAddress"]').on('focusout', function () {
 
−
        if (!$(this).val() || $(this).val().match(/.*@mfn-berlin.de/)) {
 
−
          $(this).css({'background-color': '', 'cursor': 'help'}).attr({'title': warningMessageDoesNotWork});
 
−
        } else {
 
−
          $(this).css({'background-color': 'orange', 'cursor': 'help'}).attr({'title': warningMessageDoesNotWork});
 
−
        }
 
−
      });
 
−
      $('input[name="wpFromAddress"]').attr({'placeholder': placeholderMessage});
 
−
 
−
    break;
 
−
  }// switch is a contact page
 
−
};// end prepareSpecialContact4Info()
 
−
 
−
 
−
///////////////////////
 
−
// specific to  http://offene-naturfuehrer.de
 
−
// Page-specific scripts:
 
−
switch (mw.config.get( 'wgPageName' )) { // Minimize the pages on which the code will be loaded
 
−
  // vielleicht später auch woanders, d.h. als vorgewählte Suche auf Taxaseiten beispielsweise?
 
−
  case 'Datenquellen':
 
−
  case 'Hilfe:Datenquellen':
 
−
  case 'Online-Überprüfung_von_Bestimmungen':
 
−
  case 'Hilfe:Online-Überprüfung_von_Bestimmungen':
 
−
  case 'Tipps_zur_Bildersuche':
 
−
  case 'Hilfe:Tipps_zur_Bildersuche':
 
−
 
−
  case 'Spezial:Suche':
 
−
    mw.loader.load( '/w/index.php?title=MediaWiki:SearchTools.js&action=raw&ctype=text/javascript' );
 
−
    break;
 
−
  case 'Hilfe:Nummerierungen_im_jKey_abändern_(Lead_Nummern)':
 
−
    mw.loader.load( '/w/index.php?title=MediaWiki:JKeyRenumberingTool.js&action=raw&ctype=text/javascript' );
 
−
    break;
 
−
  case 'Hilfe:Konvertierung_geschachtelt-eingerückter_Schlüssel_in_das_ON-Format':
 
−
  case 'Testseite':
 
−
    mw.loader.load( '/w/index.php?title=MediaWiki:JKeyTextToLeadTemplateTool.js&action=raw&ctype=text/javascript' );;
 
−
    break;
 
−
}
 
−
 
−
// Page-specific scripts more flexible:
 
−
if (mw.config.get('wgPageName').match(/^Basismerkmale_für/i)
 
−
    || mw.config.get('wgPageName').match(/^Vorlage:Character_State/i)
 
−
    || mw.config.get('wgPageName').match(/^Vorlage:Character_Definition/i)
 
−
) {
 
−
  mw.loader.load( '/w/index.php?title=MediaWiki:ToolGetRandomId.js&action=raw&ctype=text/javascript' );;
 
−
}
 
−
 
−
/*
 
−
  See also https://www.mediawiki.org/w/index.php?title=ResourceLoader/Legacy_JavaScript&oldid=2090764
 
−
  When document is completely loaded
 
−
*/
 
−
jQuery(document).ready(function($) {
 
−
  reference_footnote_tooltips();
 
−
  initImageZooming();
 
−
  initTargetHighlighting(); // page-internal jumps
 
−
  initmoveTOC(); // TOC CSS position fixed or static
 
−
  initTOCautocollapse(); // auto collapse on #toc-autocollapse e.g. Template:Artinformation BiolFlor
 
−
  prepareSpecialContact4Info(); // check from-Email at Special:Contact
 
−
  // specific to  http://offene-naturfuehrer.de
 
−
    initTableFilterSort(); // tests internally whether table with corresponding classes exist
 
−
    mw.loader.load( mw.config.get('wgScript') + '?title=MediaWiki:AddNewOpenMediaFileVersion.js&action=raw&ctype=text/javascript' );;// namespace specific button on top to upload file at OpenMedia
 
−
  if(mw.config.get( 'wgAction' )==='view') {
 
−
    if($('.decisiontree').length !== 0) {
 
−
      mw.loader.load( mw.config.get('wgScript') + '?title=MediaWiki:JKeyRenderLanguageTaggedText2wgUserLanguage.js&action=raw&ctype=text/javascript' );;
 
−
    }
 
−
  }
 
−
  switch(mw.config.get( 'wgAction' )) {
 
−
    case 'edit':
 
−
    case 'view':
 
−
    /* case 'submit': does not work somehow in MW. 1.20.7 */
 
−
    init_character_ui_tabs();
 
−
  }
 
−
  // page specific
 
−
  if(mw.config.get( 'wgAction' )==='formedit'
 
−
  || mw.config.get( 'wgCanonicalSpecialPageName' )==='FormEdit'){
 
−
  // initConfirmDeleteSubform();
 
−
    markHiddenFormFields();
 
−
    initUiTabsInForms();
 
−
  }
 
−
  initCluetips();
 
−
  // specific to  http://offene-naturfuehrer.de
 
−
  initCollapseBox(); //collapsible parts
 
−
}); // end $(document).ready()
 
−
// </syntaxhighlight>
 

Revision as of 21:25, 21 November 2018

$(function() {
	importScriptURI('https://arbiterit.com/MediaWiki:SortTableFilter.js');
});

$(function() {
	importScriptURI('https://arbiterit.com/MediaWiki:Sortabletable.js');
});

$(function() {
	importScriptURI('https://arbiterit.com/MediaWiki:Sortabletable.js');
});