User:Emanuele/smfcurve.js: Difference between revisions From Online Manual

Jump to: navigation, search
mNo edit summary
No edit summary
 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
window.onload = add_code_select;
var failsafe = 0;
 
function create_translation_dropdown ()
function add_code_select(){
{
var cont = document.getElementById('content');
var translation_bar = document.getElementById('translation_bar');
var codes = getElementsByClass('code', cont, 'div');
if (typeof translation_bar == 'undefined' && failsafe < 5)
 
{
if(codes != null){
setTimeout("create_translation_dropdown();", 250);
for (var a in codes) {
failsafe++;
var aSpan = document.createElement('span');
return;
var aLink = document.createElement('a');
}
var aText = document.createTextNode("Code: [");
 
aSpan.appendChild(aText);
aText = document.createTextNode("Select");
aLink.appendChild(aText);
aLink.onclick = new Function("return smfWikiSelectText(this,true)");
aLink.id = 'link_code_'+a;
aSpan.appendChild(aLink);
var aText = document.createTextNode("]");
aSpan.appendChild(aText);


codes[a].insertBefore(aSpan, codes[a].firstChild);
var avail_languages = translation_bar.getElementsByTagName('a');
codes[a].id = 'code_'+a;
if (typeof avail_languages == 'undefined' && failsafe < 10)
}
{
}
setTimeout("create_translation_dropdown();", 250);
failsafe++;
return;
}
}


function getElementsByClass(searchClass,node,tag) {
// Get the <td> where the list is
  var classElements = new Array();
var tds = translation_bar.getElementsByTagName('td');
  if ( node == null )
for (var i = 0; i < tds.length; i++)
    node = document;
if (tds[i].className == 'mw-pt-languages-list')
  if ( tag == null )
var list_position = tds[i];
    tag = '*';
  var els = node.getElementsByTagName(tag);
  var elsLen = els.length;
  var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
  for (i = 0, j = 0; i < elsLen; i++) {
    if ( pattern.test(els[i].className) ) {
      classElements[j] = els[i];
      j++;
    }
  }
  return classElements;
}


// Get the text in a code tag.
var tSelect = document.createElement('select');
function smfWikiSelectText(oElement, bActOnElement)
tSelect.onchange = function() {
{alert(oElement);
window.location = this.options[this.selectedIndex].value;
oCurElement = oElement.id.substr(5);
};
// The place we're looking for is one div up, and next door - if it's auto detect.
if (typeof(bActOnElement) == 'boolean' && bActOnElement)
var oCodeArea = document.getElementById(oCurElement);
else
var oCodeArea = oCurElement.parentNode.nextSibling;


var els = oCodeArea.getElementsByTagName('pre');
var tSelectLang = document.createElement('option');
oCodeArea = els[0];
tSelectLang.value = window.location.href;
tSelectLang.style = 'background: url(http://wiki.simplemachines.org/extensions/Translate/images/prog-5.png) rgba(0,0,0,0);';
tSelectLang.appendChild(document.createTextNode('Select your language'));
tSelect.appendChild(tSelectLang);


if (typeof(oCodeArea) != 'object' || oCodeArea == null)
var tEnglish = document.createElement('option');
return false;
tEnglish.value = getEnglishPage(window.location.href);
tEnglish.style = 'background: url(http://wiki.simplemachines.org/extensions/Translate/images/prog-5.png) rgba(0,0,0,0);';
tEnglish.appendChild(document.createTextNode('English'));
tSelect.appendChild(tEnglish);


// Start off with my favourite, internet explorer.
var langs = avail_languages.length;
if ('createTextRange' in document.body)
for (var i = 0; i < langs; i++)
{
var tOption = document.createElement('option');
tOption.value = avail_languages[0].href;
var tImg = avail_languages[0].getElementsByTagName('img')[0];
if (tImg == undefined)
continue;
tOption.style = 'background: url(' + tImg.src + ') rgba(0,0,0,0);';
avail_languages[0].removeChild(tImg);
if (avail_languages[0].innerHTML.replace(/^\s\s*/, '').replace(/\s\s*$/, '') != '')
{
{
var oCurRange = document.body.createTextRange();
tOption.appendChild(document.createTextNode(avail_languages[0].innerHTML));
oCurRange.moveToElementText(oCodeArea);
tSelect.appendChild(tOption);
oCurRange.select();
}
// Firefox at el.
else if (window.getSelection)
{
var oCurSelection = window.getSelection();
// Safari is special!
if (oCurSelection.setBaseAndExtent)
{
var oLastChild = oCodeArea.lastChild;
oCurSelection.setBaseAndExtent(oCodeArea, 0, oLastChild, 'innerText' in oLastChild ? oLastChild.innerText.length : oLastChild.textContent.length);
}
else
{
var curRange = document.createRange();
curRange.selectNodeContents(oCodeArea);
 
oCurSelection.removeAllRanges();
oCurSelection.addRange(curRange);
}
}
}
avail_languages[0].parentNode.removeChild(avail_languages[0]);
}
list_position.innerHTML = '';
list_position.appendChild(tSelect);
}
setTimeout("create_translation_dropdown();", 250);


return false;
function getEnglishPage(aUrl)
{
return aUrl.replace(aUrl.substr(aUrl.lastIndexOf('/')), '');
}
}

Latest revision as of 08:54, 24 April 2013

var failsafe = 0;
function create_translation_dropdown ()
{
var translation_bar = document.getElementById('translation_bar');
if (typeof translation_bar == 'undefined' && failsafe < 5)
{
	setTimeout("create_translation_dropdown();", 250);
	failsafe++;
	return;
}

var avail_languages = translation_bar.getElementsByTagName('a');
if (typeof avail_languages == 'undefined' && failsafe < 10)
{
	setTimeout("create_translation_dropdown();", 250);
	failsafe++;
	return;
}

// Get the <td> where the list is
var tds = translation_bar.getElementsByTagName('td');
for (var i = 0; i < tds.length; i++)
	if (tds[i].className == 'mw-pt-languages-list')
		var list_position = tds[i];

var tSelect = document.createElement('select');
tSelect.onchange = function() {
	window.location = this.options[this.selectedIndex].value;
};

var tSelectLang = document.createElement('option');
tSelectLang.value = window.location.href;
tSelectLang.style = 'background: url(http://wiki.simplemachines.org/extensions/Translate/images/prog-5.png) rgba(0,0,0,0);';
tSelectLang.appendChild(document.createTextNode('Select your language'));
tSelect.appendChild(tSelectLang);

var tEnglish = document.createElement('option');
tEnglish.value = getEnglishPage(window.location.href);
tEnglish.style = 'background: url(http://wiki.simplemachines.org/extensions/Translate/images/prog-5.png) rgba(0,0,0,0);';
tEnglish.appendChild(document.createTextNode('English'));
tSelect.appendChild(tEnglish);

var langs = avail_languages.length;
for (var i = 0; i < langs; i++)
{
	var tOption = document.createElement('option');
	tOption.value = avail_languages[0].href;
	var tImg = avail_languages[0].getElementsByTagName('img')[0];
	if (tImg == undefined)
		continue;
	tOption.style = 'background: url(' + tImg.src + ') rgba(0,0,0,0);';
	avail_languages[0].removeChild(tImg);
	if (avail_languages[0].innerHTML.replace(/^\s\s*/, '').replace(/\s\s*$/, '') != '')
	{
		tOption.appendChild(document.createTextNode(avail_languages[0].innerHTML));
		tSelect.appendChild(tOption);
	}
	avail_languages[0].parentNode.removeChild(avail_languages[0]);
}
list_position.innerHTML = '';
list_position.appendChild(tSelect);
}
setTimeout("create_translation_dropdown();", 250);

function getEnglishPage(aUrl)
{
	return aUrl.replace(aUrl.substr(aUrl.lastIndexOf('/')), '');
}


Advertisement: