User:Magnus Manske/LinkFixr.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
if ( $.inArray(mw.config.get('wgAction'), ["edit" , "submit" ]) !== -1) $( init_linkfixr );

function init_linkfixr () {
  var tools = document.getElementById("p-tb") ;
  var out = '<li id="t-permalink">' ;

  var ot = document.editform.wpTextbox1.value ;
  var t = get_linkfixr_text ( ot ) ;
  if ( t != ot ) {
    out += "<a href='javascript:run_linkfixr();'>LinkFixr</a>" ;
  } else {
    out += "<span style='color:#888888'>LinkFixr</span>" ;
  }
  tools = tools.getElementsByTagName("ul")[0] ;
  tools.innerHTML += out ;
}

function get_linkfixr_text ( ot ) {
  var t = ot ;

  var ct ;
  do {
    ct = t ;
    t = t.split('[["').join('"[[') ;
    t = t.split('"]]').join(']]"') ;

    t = t.split("[['").join("'[[") ;
    t = t.split("']]").join("]]'") ;

    t = t.split(',]]').join(']],') ;
    t = t.split(':]]').join(']]:') ;
    t = t.split(';]]').join(']];') ;

  } while ( ct != t ) ;

  return t ;
}

function run_linkfixr () {
  var ot = document.editform.wpTextbox1.value ;
  var t = get_linkfixr_text ( ot ) ;
  if ( t != ot ) {
    document.editform.wpTextbox1.value = t ;
    var s = document.editform.wpSummary.value ;
    if ( s != "" ) s += "; " ;
    s += "fixed link(s) using [[MediaWiki:LinkFixr.js]]" ;
    document.editform.wpSummary.value = s ;
  }
}