User:Lhavelund/valve.js

From Team Fortress Wiki
< User:Lhavelund
Revision as of 22:59, 9 November 2010 by Lhavelund (talk | contribs)
(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 / 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.
// Add date and time to your monobook "personal menu" list at the very top of the page.
// Created by [[User:Mathwiz2020]]

// Indicate where you would like the time to appear:
// 1 is first (before username), 2 is second (before talk link), ... 7 is last (after log out link)
insertBeforeNum = 7;

// Do NOT edit below this line unless you're experiened in javascript
insertBeforeArr = new Array("","pt-userpage","pt-mytalk","pt-preferences","pt-watchlist","pt-mycontris","pt-logout","");
insertBefore = insertBeforeArr[insertBeforeNum];

function makeTime()
{
  var li = document.createElement( 'li' );
  li.id = 'pt-time';

  var mySpan = document.createElement( 'span' );
  mySpan.appendChild( document.createTextNode( 'date and time' ) );

  li.appendChild( mySpan );

  if ( insertBefore )
  {
    var before = document.getElementById( insertBefore );
    before.appendChild( li, before );
  }
  else // append to end (right) of list
  {
    document.getElementById( 'pt-logout' ).parentNode.appendChild( li );
  }

  getTime();
}

if      ( window.addEventListener ) window.addEventListener ( 'load', makeTime, false );
else if ( window.attachEvent      ) window.attachEvent      ( 'onload', makeTime      );

function getTime()
{
    var time    = new Date();
    var date    = time.getUTCDate();
    var months  = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split(' ');
        month   = months[time.getUTCMonth()];
    var year    = time.getUTCFullYear();
    var hours   = '0' + time.getUTCHours();
        hours   = hours.substr(hours.length-2, hours.length);
    var minutes = '0' + time.getUTCMinutes();
        minutes = minutes.substr(minutes.length-2, minutes.length);
    var seconds = '0' + time.getUTCSeconds();
        seconds = seconds.substr(seconds.length-2, seconds.length);
    var curTime = hours + ":" + minutes + ":" + seconds + ", " + date + " " + month + " " + year + " (UTC)";
    datePlace   = document.getElementById('pt-time').childNodes[0].childNodes[0];
                  datePlace.replaceData(0, datePlace.length, curTime);
    doTime      = window.setTimeout("getTime()", 1000);
}
//


// addPurge
addOnloadHook(function () {
    var hist; var url;
    if (!(hist = document.getElementById('ca-history') )) return;
    if (!(url = hist.getElementsByTagName('a')[0] )) return;
    if (!(url = url.href )) return;
    addPortletLink('p-cactions', url.replace(/([?&]action=)history([&#]|$)/, '$1purge$2'),
                   'Purge', 'ca-purge', 'Purge server cache for this page', '0');
});

//

    addOnloadHook(function () {
        addPortletLink("p-cactions", wgServer + wgArticlePath.replace("$1", "Special:Prefixindex/" + wgPageName),
                       "Prefix index", "ca-prefixindex", "prefixindex");
    });

//

if ( wgNamespaceNumber == 6 ) {

    addOnloadHook(function () {
        addPortletLink("p-cactions", wgServer + wgScript.replace("/w/index.php", "/w/index.php?title=Special:Upload&wpDestFile=" + wgTitle),
                       "Upload", "ca-upload", "upload");
    });

    addOnloadHook(function () {
        addPortletLink("p-cactions", wgServer + wgScript.replace("/w/index.php", "/w/index.php?title=Special:Upload&wpDestFile=" + wgTitle + "&wpForReUpload=1"),
                       "Reupload", "ca-reupload", "reupload");
    });
}

// Adds a "Replace" tab which pops up two prompt boxes; one for a regexp and one for a replacement
function wpTextboxReplace()
{
    var s = prompt("Search regexp:");
    if(s){
        var r = prompt("Replace /"+s+"/ with:");
        if(!r && r != '') return;
        var txt = document.editform.wpTextbox1;
        txt.value = txt.value.replace(new RegExp(s, "mg"), r);
    }
}
addOnloadHook(function () {
    if (document.forms.editform) {
        addPortletLink('p-cactions', 'javascript:wpTextboxReplace()', 'Replace', 'ca-replace',
                       'Regexp replace for the edit window', 'R', document.getElementById('ca-history'));
    }
});

// ajaxPreview.js

function ajaxPreviewInit(){
 if ((wgNamespaceNumber % 2 == 0) && /\.(js|css)$/.test(wgTitle)) return
 if (typeof ajaxPreviewKey != 'string') ajaxPreviewKey = 'p'
 if (typeof ajaxDiffKey != 'string') ajaxDiffKey  = 'v'
 ajaxPreviewPos = window.ajaxPreviewPos || 'right'
 
 if (ajaxPreviewPos != 'bottom'){
   var d = document.createElement('div'); d.style.cssText = 'width:100%; clear:both'
   var tNew = document.createElement('div'); tNew.style.cssText = 'float:'+ ajaxPreviewPos
   if( typeof wgWikiEditorPreferences != 'undefined' && wgWikiEditorPreferences['toolbar'] ) {
     var tOld = document.getElementById('wikiPreview');
     tOld.parentNode.insertBefore(d, tOld.nextSibling);
     tOld.parentNode.insertBefore(tNew, d.nextSibling);
   } else {
     var tOld = document.getElementById('toolbar') || document.getElementById( 'editform' );
     tOld.style.clear = 'none'
     tOld.parentNode.insertBefore(d, tOld)
     tOld.parentNode.insertBefore(tNew, tOld)
   }
 }
 addBtn(window.ajaxPreviewButton, 'wpPreview', ajaxPreviewKey)
 addBtn(window.ajaxDiffButton, 'wpDiff', ajaxDiffKey)
 
 function addBtn(btnName, id, akey){ 
  var btnOld = document.getElementById(id);
  if (!btnOld) return;
  var btn = document.createElement('input');
  btn.type = 'button';
  btn.onclick = ajaxPreviewClick;
  btn.id = id + 'Live';
  if (!btnName){ //extract last word from standard buttons
    var btnName = btnOld.value.split(' '); btnName = btnName[btnName.length-1];
    btnName = btnName.substring(0,1).toUpperCase() + btnName.substring(1);
  }
  btn.value = btnName;
  btn.title = btnOld.value + ' (Ajax)'
  if (ajaxPreviewPos == 'bottom'){
    btnOld.parentNode.insertBefore(btn, btnOld)
    btn.value = btnOld.value
    btnOld.value = '>'
  }else{
    btn.style.cssText = 'height:22px; padding:0 1px'
    tNew.appendChild(btn)
  }
  if (akey){ //reassign acces key
    if (btnOld.accessKey == akey){ 
      btnOld.accessKey = ''
      btnOld.title = btnOld.title.replace(tooltipAccessKeyRegexp, '')
    }
	btn.accessKey = akey
    btn.title += ' ['+tooltipAccessKeyPrefix+akey+']'
  }
  btn.value2 = btn.value
 }
}
 
 
 
function ajaxPreviewClick(){ajaxPreviewRun(this)}
 
function ajaxPreviewRun(btn){
 var wkPreview = document.getElementById('wikiPreview')
 var previewform = document.editform;
 var aj = sajax_init_object()
 if (!wkPreview || !previewform || !aj) return
 var oldHeight = wkPreview.offsetHeight
 var el;
 var htm;
 var isDiff = (btn.id=='wpDiffLive');
 
 wkPreview.style.opacity = '0.3';
 wkPreview.style.color = 'gray';
 document.body.style.cursor = 'wait'
 if (el=document.getElementById('wikiDiff')) el.style.display = 'none'
 if (el=document.getElementById('newarticletext')) el.style.display = 'none'
 btn.style.width = Math.max(btn.scrollWidth, btn.offsetWidth) + 'px';
 btn.value = '...'
 
 //prepare
 var txt = previewform.wpTextbox1.value;
 var action = wgScriptPath + "/api.php";
 var params = '';
 
 if (isDiff){
   params = "action=query&format=json&prop=revisions&rvprop=&indexpageids=&titles="+ encodeURIComponent( wgPageName );
   params += "&rvdifftotext=" + encodeURIComponent( txt );
   if (!window.ajaxPreview_CSS) ajaxPreview_CSS = importStylesheetURI('/skins-1.5/common/diff.css') 
 }else{
   params = "action=parse&format=json&pst=&prop=text&title=" + encodeURIComponent( wgPageName );
   if (previewform.wpSection && previewform.wpSection.value) txt += '\n<br /><references />'
   params += "&text=" + encodeURIComponent( txt );
 }
 
 //send
 aj.open('POST', action, true);
 aj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
 aj.onreadystatechange = function(){
  if (aj.readyState != 4) return
  wkPreview.style.display = 'block'
  var jsonObject = eval('(' + aj.responseText + ')');
 
  if (isDiff){
   try {
    var htm = '<h2>Changes (Live)</h2>';
    htm += '<table class="diff"><col class="diff-marker"><col class="diff-content"><col class="diff-marker"><col class="diff-content">';
    var index = jsonObject['query']['pageids'][0];
    htm += jsonObject['query']['pages'][index]['revisions'][0]['diff']['*'];
    htm += '</table>';
   } catch( err ) {
    var htm = 'error: ' + err;
   }
  }else{
   try {
    var htm = '<h2>Preview (Live)</h2>';
    htm += jsonObject['parse']['text']['*'];
   } catch( err ) {
    var htm = "error: "+err;
   }
  }
  wkPreview.innerHTML = htm
  btn.value = btn.value2
  btn.blur()
 
  if (window.ajaxPreviewScrollTop && wkPreview.scrollIntoView) wkPreview.scrollIntoView()
  else document.documentElement.scrollTop +=  wkPreview.offsetHeight - oldHeight 
 
  wkPreview.style.opacity = ''; wkPreview.style.color = ''; document.body.style.cursor = ''
  if (!isDiff) ajaxPreviewFinish(wkPreview)
 }
 aj.send(params);
}
 
 
function ajaxPreviewFinish(el){
 sortables_init()
 if (window.createCollapseButtons){//en.wp
   createCollapseButtons()
   createNavigationBarToggleButton()
 } 
 if (window.ajaxPreviewExec) ajaxPreviewExec(el)
}
 
 
if (wgCanonicalNamespace!='Special' && (wgAction=='edit' || wgAction=='submit'))
 addOnloadHook(ajaxPreviewInit)

// Let's get some sexy external editor up in this.

addOnloadHook(function() {
    var editTab = document.getElementById("ca-edit");
    if (!editTab) return;
    var editURL = editTab.getElementsByTagName("a")[0].href;
    addPortletLink("p-cactions", editURL + "&externaledit=true", "EE", "ca-exted", "External editor", "");
});