Usuario:Davidangelleoacedo/quickedit.js

De Wikipedia, la enciclopedia libre

Nota: Después de guardar, debes refrescar la caché de tu navegador para ver los cambios. Internet Explorer: mantén presionada Ctrl mientras pulsas Actualizar. Firefox: mientras presionas Mayús pulsas el botón Actualizar, (o presiona Ctrl-Shift-R). Los usuarios de Google Chrome y Safari pueden simplemente pulsar el botón Recargar. Para más detalles e instrucciones acerca de otros exploradores, véase Ayuda:Cómo limpiar la caché.

//<pre><nowiki>
//Fuente: http://de.wikipedia.org/wiki/Benutzer:ASM/quickedit.js
//Personalizada por Axxgreazz, para el [[w:es:User:Axxgreazz/Monobook-Suite]]
//http://es.wikipedia.org/wiki/Usuario:Axxgreazz/Monobook-Suite
 
/* * * * * * * * * * * * * * * * * *
* MediaWiki QuickEdit 2 by ASM
* Version: Jan 2007
* * * * * * * * * * * * * * * * * *
* var qeEnabled          = true;  // Activate Script?
* var qeEnableSection0   = true;  // Enable QuickEdit link for section 0 (introduction)?
* var qeEnableAccessKeys = true;  // Activate access keys?
* var qeTextboxHeight    = 20;    // Height of the textbox
*
* * * * * * * * * * * * * * * * * */
 
 
/////////// Einstellungen ///////////
// -> Standardeinstellungen zuweisen
 
if (typeof(qeEnabled) == 'undefined')          qeEnabled          = true;
if (typeof(qeEnableSection0) == 'undefined')   qeEnableSection0   = true;
if (typeof(qeTextboxHeight) == 'undefined')    qeTextboxHeight    = 20;
if (typeof(qeEnableAccessKeys) == 'undefined') qeEnableAccessKeys = true;
 
/*if (typeof(qeShowErrors) == 'undefined')*/   qeShowErrors       = false;
 
//////// Ende Einstellungen ////////
 
 
// only initialize once
var qeIsInit = false;
 
// 2D-Array mit allen Sections und den jeweiligen Unterknoten
var qeSections = new Array();
 
// Aktuell bearbeitete Section
var qeEdit = -1;
 
// Aktuell im Vorschau-Modus?
var qePreviewMode = false;
var qePreviewDisabled = false;
 
// Link zum Bearbeiten der Abschnitte
var qeEditLink = false;
 
// Knoten
var qeParent = false;
var qeForm = false;
var qePreview = false;
 
// Form action
var qeFormAction = false;
 
// XmlHttpRequest
var qeRequest = false;
 
// 0 = idle 1 = receive 2 = submit
var qeRequestState = 0;
 
// ondblclick
var qeOnDoubleClick = null;
 
////// Start Script //////
 
$(qeInit);
 
function qeInit()
{
if (navigator.appName.indexOf("Microsoft")!=-1) return;
 
if (typeof ms_Activa_Quickedit == 'undefined') { ms_Activa_Quickedit = true;}
if (!msActivarModulo(ms_Activa_Quickedit)) return;
 
var qeEnabled = (document.location.search.indexOf("printable=yes") == -1);
 
if (!qeEnabled || qeIsInit) return;
qeIsInit = true;
 
// check if page is editable
if (!document.getElementById('ca-edit')) return;
 
// check if there is no other action than view
var pos = document.location.href.indexOf('action=');
if (pos != -1 && document.location.href.substr(pos+7, 4) != 'view') return;
 
qeSetLang();
 
if (!qeInitAjax()) return;
 
qeChangeSectionLinks();
}
 
function qeContentSub(text)
{
var cs = document.getElementById('contentSub');
if (cs.innerHTML)
cs.innerHTML += ' - ' + text;
else
cs.innerHTML = text;
}
 
function qeShowError(err)
{
if (qeShowErrors) qeContentSub(msStringU('quickedit') + ' ' + msStringU('error') + ': ' + err);
}
 
function qeAlert(err)
{
alert(msStringU('quickedit') + ' ' + msStringU('error') + ': ' + err);
}
 
function qeGetElementsByClassName(tagname, classname)
{
var ret = new Array();
var tags = document.getElementsByTagName(tagname);
for (i = 0; i < tags.length; i++)
if (tags[i].className == classname)
ret.push(tags[i]);
 
return ret;
}
 
function qeChangeSectionLinks()
{
qeEditLink = document.getElementById('ca-edit').firstChild.href + '&section=';
 
// get all sections
var sections = qeGetElementsByClassName('span', 'editsection');
var jumptonav = document.getElementById('jump-to-nav');
 
// Hauptabschnitt
if (qeEnableSection0)
{
var heading = qeGetElementsByClassName('h1', 'firstHeading')[0];
 
if (!heading || !jumptonav)
qeShowError('Section 0 nicht gefunden.');
else
{
 
// id verpassen
heading.id = 'section-0';
 
// Knoten ins Array packen
qeSections[0] = new Array();
 
var nosections = (sections.length == 0);
 
var node = jumptonav.nextSibling;
while (node != null && node.className != 'editsection'
&& node.className != 'printfooter' && (nosections|| !/^H[1-6]$/.test(node.nodeName)))
{
if (node.nodeName.charAt(0) != '#')
qeSections[0].push(node);
node = node.nextSibling;
}
 
// Link hinzufügen
var newspan = document.createElement('span');
newspan.style.fontSize = '8pt';
newspan.style.marginLeft = '10px';
 
newspan.appendChild(document.createTextNode('['));
 
var newlink   = document.createElement('a');
newlink.href  = 'javascript:qeEditSection(0)';
newlink.id    = 'sectionlink-0';
newlink.className = 'sectionlink';
newlink.appendChild(document.createTextNode(msStringU('quickedit')));
newspan.appendChild(newlink);
 
newspan.appendChild(document.createTextNode(']'));
 
heading.appendChild(newspan);
 
}
} // qeEnableSection0
 
 
// Abschnitte
for (i = 0; i < sections.length; i++)
{
// Section-Link suchen
var link = sections[i].childNodes[1].href;
 
var section = null, match = null;
 
if (match = /section=([0-9]+)/.exec(link))
var section = +match[1];
else break;
if (!section) continue;
 
sections[i].style.fontSize = '8pt';
 
// QuickEdit-Link erstellen
var newnode = document.createElement('a');
newnode.href  = 'javascript:qeEditSection(' + section + ')';
newnode.title = 'QuickEdit Section ' + section;
newnode.id    = 'sectionlink-' + section;
newnode.className = 'sectionlink';
newnode.appendChild(document.createTextNode(msStringU('quickedit')));
 
var where = sections[i].childNodes[2];
sections[i].insertBefore(document.createTextNode('/'), where);
sections[i].insertBefore(newnode, where);
////
 
// dem div eine ID verpassen
sections[i].id = 'editsection-' + section;
 
// zugehörige hX Überschrift suchen
var hx = sections[i].parentNode;
hx.id = 'section-' + section;
////
 
// alle zu dieser Section gehörigen Knoten suchen und ins Array packen
qeSections[section] = new Array();
 
var node = hx.nextSibling;
while (node != null && node.className != 'editsection'
&& node.className != 'printfooter' && !/^H[1-6]$/.test(node.nodeName))
{
if (node.nodeType == 1)
qeSections[section].push(node);
 
node = node.nextSibling;
}
}
}
 
function qeEditSection(section)
{
if (qeRequestState || !qeEditLink) return;
 
section = parseInt(section);
 
// es wird bereits ein Abschnitt bearbeitet
// wenn es der aktuelle ist -> Bearbeiten abbrechen, sonst nichts tun
if (qeEdit != -1)
{
if (qeEdit == section) qeAbortEdit(section);
return;
}
 
qeEdit = section;
 
// save body.ondblclick
if (document.getElementsByTagName('body')[0].getAttribute('ondblclick'))
{
qeOnDoubleClick = document.getElementsByTagName('body')[0].getAttribute('ondblclick');
document.getElementsByTagName('body')[0].setAttribute('ondblclick', null);
}
 
// Inhalt des Abschnitts ausblenden
var nodes = qeSections[section];
for (i = 0; i < nodes.length; i++)
nodes[i].style.display = 'none';
////
 
// andere Links ändern
var links = qeGetElementsByClassName('a', 'sectionlink');
for (i = 0; i < links.length; i++)
{
if (links[i].id != 'sectionlink-' + qeEdit)
links[i].style.color = '#bfbfbf';
}
 
// Form anzeigen
qeMakeForm();
var hx = document.getElementById('section-' + section);
hx.parentNode.insertBefore(qeParent, hx.nextSibling);
 
qeForm.firstChild.childNodes[4].value = msStringU('loading') + '...';
////
 
// make sure the QuickEdit tab is activated
qeSwitch(0);
 
qeGetSection();
}
 
 
function qeAbortEdit()
{
if (qeEdit == -1 || qeRequestState) return;
 
// Inhalt des Abschnitts wieder einblenden
var nodes = qeSections[qeEdit];
for (i = 0; i < nodes.length; i++)
nodes[i].style.display = is_gecko?null:'block';
 
var links = qeGetElementsByClassName('a', 'sectionlink');
for (i = 0; i < links.length; i++)
{
if (links[i].id != 'sectionlink-' + qeEdit)
links[i].style.color = null;
}
 
qeParent.parentNode.removeChild(qeParent);
qeForm.firstChild.childNodes[4].value = '';
 
qeEdit = -1;
qeRequest.abort();
 
// restore body.ondblclick
if (qeOnDoubleClick)
document.getElementsByTagName('body')[0].setAttribute('ondblclick', qeOnDoubleClick);
}
 
function qeMakeForm()
{
if (qeForm) return;
 
if (qeSections.length == 1) qeTextboxHeight += 5; // higher textbox for the main section only
 
// create parent div
qeParent = document.createElement('div');
qeParent.style.clear  = 'both';
 
// create tabs
var ul = document.createElement('ul');
ul.style.listStyle    = 'none';
ul.style.whiteSpace   = 'nowrap';
ul.style.fontSize     = '11.3px';
ul.style.position     = 'relative';
ul.style.bottom       = '0px';
ul.style.borderCollapse = 'collapse';
 
var li1 = document.createElement('li');
 
var a = document.createElement('a');
a.href                 = 'javascript:qeSwitch(0)';
a.style.textDecoration = 'none';
a.style.padding        = '0 8px';
a.appendChild(document.createTextNode(msStringU('quickedit')));
li1.appendChild(a);
 
li1.id                 = 'qeTabEdit';
li1.title              = msStringU('tQuickEdit');
li1.style.border       = '1px solid #aaa';
li1.style.borderBottom = 'none';
li1.style.marginRight  = '6px';
li1.style.display      = 'inline';
li1.style.backgroundColor = '#fafafa';
li1.setAttribute('onmouseover', 'qeTabMouseOverOut(this, 0)');
li1.setAttribute('onmouseout',  'qeTabMouseOverOut(this, 1)');
 
var li2 = li1.cloneNode(true);
li2.id = 'qeTabPreview';
li2.title = msStringU('tLivePrev');
li2.firstChild.href = 'javascript:qeSwitch(1)';
li2.firstChild.firstChild.nodeValue = msStringU('liveprev');
 
// make li1 look selected
li1.style.borderColor  = '#888';
li1.style.borderBottom = 'none';
li1.style.fontWeight   = 'bold';
 
// tab 3
var li4 = li2.cloneNode(true);
li4.id                 = null;
li4.style.marginLeft   = '16px';
li4.title              = msStringU('tSubmit');
li4.firstChild.href    = 'javascript:qeSubmit(0)';
li4.firstChild.firstChild.nodeValue = msStringU('submit');
 
if (qeEnableAccessKeys) li4.firstChild.accessKey = 's';
 
// tab 4
var li5 = li2.cloneNode(true);
li5.id                 = null;
li5.title              = msStringU('tPreview');
li5.firstChild.href    = 'javascript:qeSubmit(1)';
li5.firstChild.firstChild.nodeValue = msStringU('preview');
 
// tab 5
var li6 = li2.cloneNode(true);
li6.id                 = null;
li6.title              = msStringU('tCancel');
li6.firstChild.href    = 'javascript:qeAbortEdit()';
li6.firstChild.firstChild.nodeValue = msStringU('cancel');
 
if (qeEnableAccessKeys)
{
li6.firstChild.accessKey = 'a'; // cancel
li1.firstChild.accessKey = 'e'; // quickedit
li2.firstChild.accessKey = 'p'; // live prev
}
 
var li3 = document.createElement('li');
li3.style.cssFloat    = 'right';
li3.style.marginRight = '10px';
li3.style.color       = '#aaa';
li3.style.fontSize    = '8pt';
li3.style.display     = 'inline';
li3.appendChild(document.createTextNode(msStringU('header')));
 
ul.appendChild(li3);
ul.appendChild(li1);
ul.appendChild(li2);
 
ul.appendChild(li4);
ul.appendChild(li5);
ul.appendChild(li6);
 
qeParent.appendChild(ul);
 
// create frame div
var framediv = document.createElement('div');
framediv.style.border   = '1px solid #aaa';
framediv.style.padding  = '6px';
framediv.style.overflow = 'hidden';
framediv.style.clear    = 'both';
framediv.style.backgroundColor = '#fafafa';
 
qeParent.appendChild(framediv);
 
// create form
qeForm = document.createElement('form');
qeForm.method = 'post';
qeForm.onsubmit = qeSubmitByReturn;
 
// create preview div
qePreview = document.createElement('div');
qePreview.style.display = 'none';
qePreview.style.width   = '98%';
qePreview.style.overflow= 'hidden';
qePreview.style.clear   = 'both';
qePreview.style.padding = '5px';
qePreview.style.border  = '1px dotted #aaa';
qePreview.style.backgroundColor = qeGetBGColor();
 
// preview message
var div = document.createElement('div');
div.style.padding   = '100px 0';
div.style.textAlign = 'center';
div.style.color     = '#aaa';
div.style.cursor    = 'default';
div.appendChild(document.createTextNode(msStringU('loadprev') + '...'));
qePreview.appendChild(div);
 
framediv.appendChild(qePreview);
framediv.appendChild(qeForm);
 
////
 
// add form div
qeForm.appendChild(document.createElement('div'));
 
var elements = new Array(
//         subject     type      name
new Array('input',    'hidden', 'wpSection'),
new Array('input',    'hidden', 'wpStarttime'),
new Array('input',    'hidden', 'wpEdittime'),
new Array('input',    'hidden', 'wpSummary'),
new Array('textarea',           'wpTextbox1'),
new Array('input',    'hidden', 'wpEditToken'),
new Array('input',    'hidden', 'wpAutoSummary')
);
 
for (i = 0; i < elements.length; i++)
{
var e = elements[i];
var newnode = document.createElement(e[0]);
 
if (e[0] == 'input')
{
newnode.type = e[1];
newnode.name = e[2];
}
 
else if (e[0] == 'textarea')
{
newnode.id = e[1];
newnode.name = e[1];
newnode.appendChild(document.createTextNode(''));
newnode.rows = qeTextboxHeight;
newnode.style.width = '99%';
}
 
qeForm.firstChild.appendChild(newnode);
}
 
if (qeEnableAccessKeys) qeForm.firstChild.childNodes[4].accessKey = ',';
qeForm.firstChild.childNodes[4].tabIndex = 1;
 
var chars = document.createElement('div');
chars.id  = 'specialchar-container';
chars.setAttribute('onmouseover', 'qeSpecialcharMouse(this, 0)');
chars.setAttribute('onmouseout',  'qeSpecialcharMouse(this, 1)');
chars.style.minHeight = '5px';
chars.style.overflow  = 'hidden';
 
qeForm.appendChild(chars);
 
newnode = document.createElement('div');
// newnode.style.marginTop  = '5px';
newnode.style.paddingTop = '5px';
newnode.style.borderTop  = '1px dotted #aaa';
 
// Speichern   
newnode.appendChild(document.createElement('a'));
newnode.firstChild.href         = 'javascript:qeSubmit(0)';
newnode.firstChild.title        = msStringU('tSubmit');
newnode.firstChild.style.cursor = 'pointer';
newnode.firstChild.appendChild(document.createTextNode(msStringU('submit')));
 
// Vorschau
newnode.appendChild(document.createTextNode(' '));
 
newnode.appendChild(document.createElement('a'));
newnode.childNodes[2].href             = 'javascript:qeSubmit(1)';
newnode.childNodes[2].title            = msStringU('tPreview');
newnode.childNodes[2].style.marginLeft = '5px';
newnode.childNodes[2].style.cursor     = 'pointer';
newnode.childNodes[2].appendChild(document.createTextNode(msStringU('preview')));
 
/* Abbrechen // entfernt
newnode.appendChild(document.createTextNode(' '));
 
newnode.appendChild(document.createElement('a'));
newnode.childNodes[4].href             = 'javascript:qeAbortEdit()';
newnode.childNodes[4].style.marginLeft = '5px';
newnode.childNodes[4].style.cursor     = 'pointer';
newnode.childNodes[4].appendChild(document.createTextNode(msStringU('cancel')));
*/
 
// Zusammenfassung
newnode.appendChild(document.createTextNode(' '));
 
newnode.appendChild(document.createElement('input'));
newnode.childNodes[4].type = 'text';
newnode.childNodes[4].size = '70';
newnode.childNodes[4].id   = 'qeSummary';
newnode.childNodes[4].maxLength = '200';
newnode.childNodes[4].style.marginLeft = '5px';
newnode.childNodes[4].tabIndex = 2;
 
// Kleine Änderung
newnode.appendChild(document.createTextNode(' '));
 
var checkboxes = document.createElement('span');
checkboxes.style.whiteSpace = 'nowrap';
 
checkboxes.appendChild(document.createElement('input'));
checkboxes.childNodes[0].type  = 'checkbox';
checkboxes.childNodes[0].id    = 'wpMinoredit';
checkboxes.childNodes[0].name  = 'wpMinoredit';
checkboxes.childNodes[0].value = '1';
checkboxes.childNodes[0].style.marginLeft = '5px';
checkboxes.childNodes[0].tabIndex = 3;
checkboxes.childNodes[0].title = msStringU('tMinor');
 
if (qeEnableAccessKeys) checkboxes.childNodes[0].accessKey = 'i';
 
checkboxes.appendChild(document.createElement('label'));
checkboxes.childNodes[1].htmlFor = 'wpMinoredit';
checkboxes.childNodes[1].style.fontWeight = 'bold';
checkboxes.childNodes[1].style.fontSize   = '8pt';
checkboxes.childNodes[1].style.position   = 'relative';
checkboxes.childNodes[1].style.bottom     = '2px';
checkboxes.childNodes[1].title            = msStringU('tMinor');
 
checkboxes.childNodes[1].appendChild(document.createTextNode(msStringU('k')));
 
// Beobachten
checkboxes.appendChild(document.createTextNode(' '));
 
checkboxes.appendChild(document.createElement('input'));
checkboxes.childNodes[3].type  = 'checkbox';
checkboxes.childNodes[3].id    = 'wpWatchthis';
checkboxes.childNodes[3].name  = 'wpWatchthis';
checkboxes.childNodes[3].value = '1';
checkboxes.childNodes[3].style.marginLeft = '5px';
checkboxes.childNodes[3].tabIndex = 4;
checkboxes.childNodes[3].title = msStringU('tWatch');
 
if (qeEnableAccessKeys) checkboxes.childNodes[3].accessKey = 'w';
 
checkboxes.appendChild(document.createElement('label'));
checkboxes.childNodes[4].htmlFor = 'wpWatchthis';
checkboxes.childNodes[4].style.fontWeight = 'bold';
checkboxes.childNodes[4].style.fontSize   = '8pt';
checkboxes.childNodes[4].style.position   = 'relative';
checkboxes.childNodes[4].style.bottom     = '2px';
checkboxes.childNodes[4].title            = msStringU('tWatch');
 
checkboxes.childNodes[4].appendChild(document.createTextNode(msStringU('b')));
 
newnode.appendChild(checkboxes);
qeForm.appendChild(newnode);
}
 
function qeFillForm(formaction, wpStarttime, wpEdittime, wpSummary, wpTextbox1,
wpEditToken, wpAutoSummary, wpWatchthis)
{
if (!qeForm) return;
 
// save form action since we need it for preview
qeFormAction = formaction;
 
qeForm.firstChild.childNodes[0].value = qeEdit;
qeForm.firstChild.childNodes[1].value = wpStarttime;
qeForm.firstChild.childNodes[2].value = wpEdittime;
qeForm.firstChild.childNodes[3].value = wpSummary;
qeForm.firstChild.childNodes[4].value = wpTextbox1;
 
qeForm.firstChild.childNodes[5].value = wpEditToken;
qeForm.firstChild.childNodes[6].value = wpAutoSummary;
 
document.getElementById('wpWatchthis').checked = wpWatchthis;
 
qeForm.action = formaction;
 
document.getElementById('qeSummary').value = wpSummary;
}
 
function qeSpecialcharMouse(obj, type)
{
obj.firstChild.style.display = (type == 0)?'inline':'none';
obj.style.padding = (type == 0)?'4px 0px':'0px';
}
 
// QuickEdit 2: Preview stuff
 
function qeSwitch(type)
{
if (qeEdit == -1 || qeRequestState) return;
 
type = parseInt(type);
if ((type == 0 && !qePreviewMode) || (type == 1 && qePreviewMode) ||
(qePreviewDisabled && type == 1)) return;
 
qePreviewMode = !qePreviewMode;
 
// switch tab styles
var lia = qePreviewMode?document.getElementById('qeTabEdit'):
document.getElementById('qeTabPreview');
var lid = qePreviewMode?document.getElementById('qeTabPreview'):
document.getElementById('qeTabEdit');
 
lid.style.border = '1px solid #888';
lid.style.fontWeight = 'bold';
lia.style.border = '1px solid #aaa';
lia.style.fontWeight = 'normal';
 
lia.style.borderBottom = lid.style.borderBottom = 'none';
 
// switch to preview
if (qePreviewMode)
{
qeForm.firstChild.style.display = 'none';
qePreview.style.display = 'block';
qePreview.firstChild.style.display = 'block';
 
// remove all child nodes from previous previews, if any
for (var i = 1; i < qePreview.childNodes.length; i++)
qePreview.removeChild(qePreview.childNodes[i]);
 
qeLoadPreview();
}
 
else
{
qePreview.style.display = 'none';
qeForm.firstChild.style.display = 'block';
}
}
 
function qeLoadPreview()
{
if (qeEdit == -1 || qeRequestState || !qeEditLink || !qePreviewMode || !qeFormAction)
return;
 
var link = qeEditLink + qeEdit;
qeRequestState = 2;
 
qeRequest.onreadystatechange = qeAjaxResponse;
qeRequest.open('POST', qeFormAction, true);
 
var send = qeMakeFormRequest();
 
qeRequest.overrideMimeType('text/xml');
qeRequest.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
qeRequest.setRequestHeader('Content-length', send.length);
qeRequest.setRequestHeader('Content', send.length);
qeRequest.send(send);
}
 
function qeMakeFormRequest()
{
if (!qeForm) return null;
 
var str = '';
 
var inputs = qeForm.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++)
if (inputs[i].value && inputs[i].value.length > 0)
str += '&' + inputs[i].name + '=' + encodeURIComponent(inputs[i].value);
 
str += '&wpPreview=Preview' +
'&wpTextbox1=' +
encodeURIComponent(document.getElementById('wpTextbox1').value);
 
return str.substr(1);
}
 
function qeTabMouseOverOut(obj, out)
{
var coloronly = false;
if (obj.id == 'qeTabEdit' || obj.id == 'qeTabPreview')
{
if ((qePreviewMode && obj.id == 'qeTabPreview') ||
(!qePreviewMode && obj.id == 'qeTabEdit'))
coloronly = true;
}
 
obj.style.backgroundColor = out?'#fafafa':'#fff';
if (!coloronly) obj.style.borderColor = out?'#aaa':'#888';
}
 
// Ajax stuff
 
function qeInitAjax()
{
try
{
if (window.XMLHttpRequest)
{
qeRequest = new XMLHttpRequest();
qeRequest.overrideMimeType('text/xml');
}
 
else if (window.ActiveXObject)
qeRequest = new ActiveXObject('Microsoft.XMLHTTP');
 
else throw 'Kein AJAX-Objekt vorhanden';
}
 
catch (e)
{
qeShowError(e);
return false;
}
 
if (!qeRequest)
{
qeShowError('AJAX-Objekt konnte nicht erstellt werden');
return false;
}
 
return true;
}
 
 
function qeGetSection()
{
if (qeEdit == -1 || !qeForm || !qeRequest || !qeEditLink || qeRequestState) return;
 
var link = qeEditLink + qeEdit;
 
qeRequestState = 1;
 
qeRequest.onreadystatechange = qeAjaxResponse;
 
qeRequest.open('GET', link, true);
qeRequest.send(null);
}
 
 
function qeAjaxResponse()
{
if (!qeRequestState)
{
alert('QuickEdit Fehler: qeAjaxResponse');
return;
}
 
// receive
if (qeRequestState == 1 && qeEdit != -1)
{
if (qeRequest.readyState != 4 || qeRequest.status != 200)
return;
 
qeRequestState = 0;
 
var xml = qeRequest.responseXML;
 
try // MediaWiki bug 6986 workaround
{
var wpTextbox1 = xml.getElementById('wpTextbox1').value;
}
catch (e)
{
xml = qeFixXML(qeRequest.responseText);
if (!xml)
{
qeShowError('XML parsing fehlgeschlagen.');
return;
}
 
var wpTextbox1 = xml.getElementById('wpTextbox1').value;
}
 
var inputs = xml.getElementsByTagName('input');
for (i = 0; i < inputs.length; i++)
{
if (inputs[i].name == 'wpSection') wpSection = inputs[i].value;
else if (inputs[i].name == 'wpStarttime') wpStarttime = inputs[i].value;
else if (inputs[i].name == 'wpEdittime') wpEdittime = inputs[i].value;
else if (inputs[i].name == 'wpSummary') wpSummary = inputs[i].value;
 
else if (inputs[i].name == 'wpEditToken') wpEditToken = inputs[i].value;
else if (inputs[i].name == 'wpAutoSummary') wpAutoSummary = inputs[i].value;
 
else if (inputs[i].name == 'wpWatchthis') wpWatchthis = inputs[i].checked;
}
 
var formaction = xml.getElementById('editform').action;
 
var specialchars = document.getElementById('specialchar-container');
if (!specialchars.childNodes.length && xml.getElementById('specialchars'))
{
var node = xml.getElementById('specialchars').cloneNode(true);
node.style.display    = 'none';
node.style.background = 'none';
node.style.border     = 'none';
node.style.fontSize   = '8pt';
 
for (var i = 0; i < node.childNodes.length; i++)
if (node.childNodes[i].nodeName == 'A')
{
node.removeChild(node.childNodes[i]);
node.removeChild(node.childNodes[i+1]);
break;
}
 
specialchars.appendChild(node);
 
addCharSubsetMenu(); // wikipedia script
}
 
// sollte nie passieren, wenn doch -> fatal error
if (wpSection != qeEdit)
{
qeAlert(msStringU('varmismatch'));
qeRequestState = 0;
qeAbortEdit();
return;
}
 
qeFillForm(formaction, wpStarttime, wpEdittime, wpSummary, wpTextbox1,
wpEditToken, wpAutoSummary, wpWatchthis);
return;
}
 
// preview (submit)
if (qeRequestState == 2 && qeEdit != -1)
{
if (qeRequest.readyState != 4 || qeRequest.status != 200)
return;
 
qeRequestState = 0;
 
try
{
var xml = qeRequest.responseXML;
var prev = xml.getElementById('wikiPreview').cloneNode(true);
}
catch (e)
{
qePreviewDisabled = true;
qePreview.firstChild.firstChild.nodeValue = msStringU('noprev');
 
var tab = document.getElementById('qeTabPreview');
tab.firstChild.style.color = '#888';
return;
}
 
qePreview.firstChild.style.display = 'none';
 
while (prev.childNodes.length > 0 && prev.firstChild.className != 'previewnote')
prev.removeChild(prev.firstChild);
 
prev.removeChild(prev.firstChild);
qePreview.appendChild(prev);
 
return;
}
}
 
function qeSubmitByReturn()
{
qeSubmit(0);
return false;
}
 
function qeSubmit(preview)
{
if (qeEdit == -1 || !qeRequest || !qeForm || qeRequestState)
return;
 
qeForm.firstChild.childNodes[3].value = document.getElementById('qeSummary').value;
 
if (preview == 1)
{
var prev = document.createElement('input');
prev.name = 'wpPreview';
prev.value = 'Preview';
prev.type = 'hidden';
qeForm.appendChild(prev);
}
 
qeForm.submit();
}
 
// MediaWiki bug 6986 workaround
function qeFixXML(text)
{
var pos = text.indexOf('<h1 class="firstHeading">');
var pos2 = text.indexOf('</h1>');
if (pos == -1 || pos2 == -1) return null;
 
text = text.substring(0, pos) + text.substring(pos2+5);
 
var parser = new DOMParser();
var newdoc = parser.parseFromString(text, "text/xml");
return newdoc;
}
 
// Workaround for JavaScript
// don't ask me why the hell JS throws an error at '/*'
function qeFixXMLPreview(text)
{
// another MediaWiki bug: backslashes are stripped out when saving a page...
regex = eval('/' + String.fromCharCode(92) + '/' + String.fromCharCode(92) + '*/g');
text = text.replace(regex, '&#47;*');
 
var parser = new DOMParser();
var newdoc = parser.parseFromString(text, "text/xml");
return newdoc;
}
 
// Language stuff
 
function qeGetBGColor()
{
var ret = qeGetStyle(document.getElementById('content'), 'background-color');
return ret?ret:'#fff';
}
 
function qeGetStyle(elem, style)
{
if (document.defaultView)
return document.defaultView.getComputedStyle(elem, null).getPropertyValue(style);
return null;
}
 
function qeSetLang()
{
switch (wgUserLanguage)
{
case 'de': qeLang = 1; break;
case 'en': qeLang = 2; break;
case 'ca': qeLang = 3; break;
 
//    case 'xx': ...
 
default: qeLang = 2;
}
 
qeSetPrefix();
}
 
function qePhrase(name)
{
for (var i = 0; i < qePhrases.length; i++)
if (qePhrases[i][0] == name)
return qePhrases[i][qeLang];
 
return 'UNDEFINED PHRASE: ' + name;
}
 
function qeSetPrefix()
{
// ausgeliehen vom Wikipedia-Script
var pref = 'Alt';
 
if (is_safari || navigator.userAgent.toLowerCase().indexOf('mac') + 1
|| navigator.userAgent.toLowerCase().indexOf('konqueror') + 1 )
pref = msStringU('strg');
else if (is_opera)   pref = msStringU('shift') + '-Esc';
else if (is_ff2_x11) pref = msStringU('strg') + '-' + msStringU('shift');
else if (is_ff2_win) pref = 'Alt-' + msStringU('shift');
pref += '-';
 
for (var i = 0; i < qePhrases.length; i++)
if (qePhrases[i][0].charAt(0) == 't')
for (var j = 1; j < qePhrases[i].length; j++)
qePhrases[i][j] = qePhrases[i][j].replace(/KEY:(.)/, pref + '$1');
}
 
var qePhrases = new Array(
new Array('quickedit', 'QuickEdit',  'QuickEdit', 'QuickEdit'),
new Array('submit',    'Speichern',  'Submit', 'Desa'),
new Array('preview',   'Vorschau',   'Preview', 'Previsualitza'),
new Array('cancel',    'Abbrechen',  'Cancel', 'Cancel·la'),
new Array('k',         'Kleine Änderungen', 'minor', 'menor'),
new Array('b',         'Beobachten', 'watch', 'Vigila'),
new Array('error',     'Fehler',     'error', 'error'),
new Array('nolinksfound', 'Keine Links gefunden', 'No links found', 'No s`ha trobat cap enllaç'),
new Array('loading',   'Lade Daten', 'Loading data', 'Carregant dades'),
new Array('liveprev',  'Live Vorschau', 'Live Preview', 'Previsualització instantània'),
new Array('loadprev',  'Lade Vorschau', 'Loading preview', 'Carregant previsualització'),
new Array('noprev',
'Fehler: Vorschau nicht verfügbar (Seite konnte von JavaScript nicht gelesen werden)',
'Error: preview not available (page could not be read by JavaScript)',
'Error: previsualització no disponible (la pàgina no es pot llegir amb JavaScript)'),
new Array('header',
'MediaWiki QuickEdit 2',
'MediaWiki QuickEdit 2',
'MediaWiki QuickEdit 2'),
new Array('tQuickEdit',
'QuickEdit Ansicht (KEY:E)',
'QuickEdit view (KEY:E)',
'Visualitza amb QuickEdit (telca:E)'),
new Array('tLivePrev', 'Live Vorschau (KEY:P)',
'Live preview (KEY:P)',
'Previsualització (tela:P)'),
new Array('tSubmit',
'Änderungen Speichern (KEY:S)',
'Submit changes (KEY:S)',
'Desa els canvis (KEY:S)'),
new Array('tPreview', 'Normale Vorschau', 'Normal preview', 'Previsualització normal'),
new Array('tCancel', 'Abbrechen (KEY:A)', 'Cancel (KEY:A)', 'Cancel·la (KEY:A)'),
new Array('tWatch', 'Beobachten (KEY:W)', 'Watch (KEY:W)', 'Vigila (KEY:W)'),
new Array('tMinor',
'Kleine Änderungen (KEY:I)',
'Minor edit (KEY:I)',
'Edició menor (KEY:I)'),
new Array('strg',      'Strg',       'Ctrl',     'Ctrl'),
new Array('shift',     'Umschalt',   'Shift',    'mayús')
);
 
 
/*</pre>*/
 
 
/*<pre>*/
 
// from [[MediaWiki:Onlyifediting.js]]
 
function addCharSubsetMenu()
{
var specialchars = document.getElementById('specialchars');
 
if (specialchars)
{
var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
menu += "<option>Standard</option>";
menu += "<option>WikiSyntax</option>";
menu += "<option>IPA-Lautschrift</option>";
menu += "<option>Lateinisch</option>";
menu += "<option>AHD</option>";
menu += "<option>Altenglisch</option>";
menu += "<option>Altgriechisch</option>";
menu += "<option>Arabisch</option>";
menu += "<option>DMG-Umschrift</option>";
menu += "<option>Esperanto</option>";
menu += "<option>Estnisch</option>";
menu += "<option>Französisch</option>";
menu += "<option>Galicisch</option>";
menu += "<option>Griechisch</option>";
menu += "<option>Hawaiianisch</option>";
menu += "<option>Isländisch</option>";
menu += "<option>Italienisch</option>";
menu += "<option>Jiddisch</option>";
menu += "<option>Katalanisch</option>";
menu += "<option>Kroatisch</option>";
menu += "<option>Kyrillisch</option>";
menu += "<option>Lettisch</option>";
menu += "<option>Litauisch</option>";
menu += "<option>Maltesisch</option>";
menu += "<option>Pinyin</option>";
menu += "<option>Polnisch</option>";
menu += "<option>Portugiesisch</option>";
menu += "<option>Romanisch</option>";
menu += "<option>Rumänisch</option>";
menu += "<option>Serbisch</option>";
menu += "<option>Skandinavisch</option>";
menu += "<option>Slowakisch</option>";
menu += "<option>Spanisch</option>";
menu += "<option>Tschechisch</option>";
menu += "<option>Türkisch</option>";
menu += "<option>Ungarisch</option>";
menu += "<option>Vietnamesisch</option>";
menu += "</select>";
 
specialchars.innerHTML = menu + specialchars.innerHTML;
 
// Standard-CharSubset
chooseCharSubset(0);
}
}
 
// CharSubset-Auswahl
function chooseCharSubset(s)
{
var l = document.getElementById('specialchars').getElementsByTagName('p');
for (var i = 0; i < l.length ; i++)
l[i].style.display = i == s ? 'inline' : 'none';
}
 
//</nowiki></pre>