MediaWiki:Common.js/Wikinoticias:Titulares en Portada

Nota: Después de guardar, debes recargar la caché de tu navegador para ver los cambios:

  • Mozilla: Pulsa Recargar (o Ctrl-R)
  • Internet Explorer / Opera: Ctrl-F5
  • Safari: Cmd-R
  • Konqueror Ctrl-R.
/*
Este JavaScript se ocupa de las cosas específicas para [[:en:User:Bawolff/sandbox/makeLead]]. Funciones
especificas para la generación de títulares se encuentran en [[MediaWiki:Common.js/Wikinoticias:Titulares_en_Portada/leadGenerator]].
Funciones especificas con el acceso a la API se encuentran en [[:en:User:Bawolff/mwapilib2.js]]
*/
importScript('MediaWiki:Common.js/Wikinoticias:Titulares_en_Portada/leadGenerator');

var showPreview = function (html) {
 //Asumimos que la API de MediaWiki no es maliciosa...
 document.getElementById('LeadPreview').innerHTML = html;
}
var showLead = function (leadText, leadTitle) {
 var lsp = document.getElementById('leadSourcePrev');
 if (!lsp) {
  var src = document.createElement('textarea');
  src.id = 'leadSourcePrev';
  src.style.width = '48%';
  src.rows = 40;
  src.appendChild(document.createTextNode(leadText));
  document.getElementById('LeadBox').appendChild(src);
  document.getElementById('LeadPreview').style.visibility = 'visible';
 }
 else {
  lsp.value = leadText;
 }
 leadTitle = leadTitle.replace(/(\\|')/g, "\\$1").replace(/"/g, """).replace(/>/g, '>'); //Prevenir XSS
 var leadNumb = document.getElementById('leadNum').selectedIndex + 1;
 document.getElementById('LeadControls').innerHTML = '<button onclick="syncToServer(' + leadNumb + ', \'' + leadTitle + '\')">Actualizar Titular ' + leadNumb + '</button> <button onclick="regeneratePreview()">Refrescar la previsualización</button>';

 api(leadText).replace(/<noinclude>[\d\D]*?<\/noinclude>/, '').parse('Portada').lift(showPreview).exec();
 //Esto lo lleva a cabo cualquier cosa después de un "noinculde"

}
var regeneratePreview = function() {
var wikiText = document.getElementById('leadSourcePrev').value;
api(wikiText).replace(/<noinclude>[\d\D]*?<\/noinclude>/, '').parse('Portada').lift(showPreview).exec();
}
var syncToServer = function(leadNum, page) {
 if (leadNum === undefined || !confirm('¿Estás seguro de colocar este artículo en el titular ' + leadNum + ' de la Portada?')) {
  return false;
 }
 api(document.getElementById('leadSourcePrev').value).setDefaultSummary('[[Wikinoticias:Titulares en Portada|TP]]: Actualización del titular ' + leadNum + ' — [[' + page + ']]').savePage('Plantilla:Portada:Titular ' + leadNum).inject('El titular ' + leadNum + ' ha sido actualizado exitosamente y ya se encuentra en la portada.').lift(alert).lift(function() {location = mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace('$1', mw.config.get('wgPageName')) + '?js-good-update=' + encodeURIComponent(page);}).exec();
}
var startLeadMaker = function () {
 if (mw.config.get('wgAction') !== 'view' && mw.config.get('wgAction') !== 'purge') {
  return false;
 }
 if (!window.api || !window.Bawolff || !window.Bawolff.leadGen) {
  alert('El JavaScript de esta página no esta funcionando correctamente, como consecuencia, pueden producirse errores durante el uso de la herramienta. Es recomendable que recargues esta página y verifiques que no te siga apareciendo este aviso, en caso contrario, ponte en contacto con AlvaroMolina en su página de discusión.');
 }
 if (!mw.config.get('wgUserGroups') || mw.config.get('wgUserGroups').join(' ').indexOf("autoconfirmed") === -1) {
  jsMsg("<div style='border:solid red medium;font-weight: bold'>Atención: A modo de evitar que esta herramienta sea objeto de vandalismos o abusos, solo puede ser utilizada por usuarios registrados hace más de 4 días.</div>");
 }
 var lastUpdate = location.search.match(/[?&]js-good-update=([^&]*).*/);
 if (lastUpdate) {
  //Esto es correctamente escapado desde un nodo de texto
  window.setTimeout(function () {jsMsg(document.createTextNode('El titular ha sido actualizado con el artículo «' + decodeURIComponent(lastUpdate[1]) + ' ».'));}, 400); //Puedes generar otros mensajes usando jsMSg
 }
 var setupContainer = document.getElementById('lSetup');
 setupContainer.innerHTML += "<form id='leadForm' action='javascript:doMakeLead();void 0;'><label for='pageNameField'>Artículo&nbsp;:</label> <input type='text' id='pageNameField' size='50'><br/><label for='leadNum'>Posición del Titular&nbsp;:</label> <select id='leadNum' onchange='doMakeLead(true);'><option selected value='1'>1 (primera posición)</option><option>2 (segunda posición)</option><option>3 (tercera posicion)</option> </select> <label for='sumMethod'>Método de presentación&nbsp;:</label> <select id='sumMethod'><option selected value='0'>Predeterminado</option> </select> &nbsp;<input type='submit' value='Previsualizar' ></form>";

 var dpl = document.getElementById('lDPL').getElementsByTagName('a');
 for (var i = 0; i < dpl.length; i++) {
  linkVal = encodeURIComponent(dpl[i].firstChild.data.replace(/(\\|")/g, "\\$1"));
  // %22 = "
  dpl[i].href = 'javascript:document.getElementById(%22pageNameField%22).value=%22' + linkVal + '%22;doMakeLead();void%200';
 }
 os_initHandlers('pageNameField','leadForm', document.getElementById('pageNameField'));
 
 var handleAfterLeadInfoTableLoads = function (table) {
  document.getElementById('lMetaTable').innerHTML = table;
  var pageName = location.search.replace(/.*?[?&]use-page=([^&]*).*/, '$1');

  if (Bawolff.leadGen.oldestLead) {
   var oldLeadNum = parseInt(Bawolff.leadGen.oldestLead.charAt(Bawolff.leadGen.oldestLead.length - 1));
   document.getElementById('leadNum').selectedIndex = oldLeadNum - 1;
   if (oldLeadNum === 1) {
    document.getElementById('sumMethod').selectedIndex = 1; //Utiliza 2 frases para titulares largos
   }
  }
  if (pageName !== location.search) { //Si corresponde
   document.getElementById('pageNameField').value = decodeURIComponent(pageName.replace(/\+/g, ' '));
   location.href = '#leadForm'; //Puesto que ya esta rellenado
   doMakeLead();
  }
  
 }
 Bawolff.leadGen.makeLeadTable(handleAfterLeadInfoTableLoads);

}
function doMakeLead (fromLeadNumChange) {
var pageName = document.getElementById('pageNameField').value;
var leadNum = document.getElementById('leadNum').selectedIndex + 1;
 if (fromLeadNumChange && leadNum === 1) {
    document.getElementById('sumMethod').selectedIndex = 1; //Utiliza 2 frases para titulares largos
 }
var sumMethod = document.getElementById('sumMethod').selectedIndex;
if (!pageName) return; //Detener error si no se inicializa
Bawolff.leadGen(pageName, leadNum, showLead, sumMethod);
}

waitAWhileThanLoadLead.times = 0;
function waitAWhileThanLoadLead () {
//Ya que estamos a partir de la carga de eventos, y importScript es asincronizado. espere mientras
 if ((!window.api || !window.Bawolff || !window.Bawolff.leadGen) && waitAWhileThanLoadLead.times < 10) {
  waitAWhileThanLoadLead.times++;
  setTimeout(waitAWhileThanLoadLead, 200);
 } else {
 startLeadMaker();
 }
}
$(waitAWhileThanLoadLead);