MediaWiki:Common.js/edit.js

Un article de Wikipèdia, l'enciclopèdia liura.

Nòta : Aprèp aver publicat la pagina, vos cal forçar son recargament complet tot ignorant lo contengut actual de l'amagatal de vòstre navigador per veire los cambiaments : Mozilla / Firefox / Konqueror / Safari : mantenètz la tòca Majuscula (Shift) en clicant lo boton Actualizar (Reload,) o quichatz Maj-Ctrl-R (Maj-Cmd-R sus Apple Mac) ; Internet Explorer / Opera : mantenètz la tòca Ctrl en clicant lo boton Actualizar o quichatz Ctrl-F5.

/**
 * Aplicacions especificas a la pagina d'edicion
 * <nowiki>
 */
/* todo : migrar las que son pas vitalas dins los gadgets */

/**
 * Desactivar lo boton Salvar a la primièra edicion
 * English : Force IP to preview before saving changes.
 * Copyright Marc Mongenet, 2006
 * Plyd 05/2007: add "after preview" in the button to prevent misunderstanding from beginners
 */
function forcePreview() {
  if (mw.config.get('wgUserName') != null || mw.config.get('wgAction') != "edit") return;
  saveButton = document.getElementById("wpSave");
  if (!saveButton) return;
  saveButton.disabled = true;
  saveButton.value = "Publicar (aprèp previsualizacion)";
  saveButton.style.fontWeight = "normal";
  document.getElementById("wpPreview").style.fontWeight = "bold";
}
$(forcePreview);

/**
 * Foncions d'emplenatge automatic
 */
function InitPdeS(page_name) {
  return "<!-- Salvar la pagina per l'inicializar puèi seguir las instruccions -->\n" +
         "{{subst:Inicializar PdeS|" + page_name + "|~~~~|jorn={{subst:CURRENTDAY}}|mes={{subst:CURRENTMONTH}}}}\n" +
         "<!-- Doblidetz pas d'apondre lo ligam cap a aquesta pagina dins la pagina principala de las paginas de suprimir -->";
}

function InitLANN(page_name) {
  return "<!-- Salvar la pagina per l'inicializar puèi seguir las instruccions -->\n" +
         "{{subst:Inicializar LANN|" + page_name + "|~~~~}}\n" +
         "<!-- Doblidetz pas d'apondre lo ligam cap a aquesta pagina dins la pagina principala dels articles non neutres -->";
}

function InitIdeS(page_name) {
  return "<!-- Salvar la pagina per l'inicializar puèi seguir las instruccions -->\n" +
         "{{subst:Precargament Imatge de Suprimir|" + page_name + "|~~~~|jorn={{subst:CURRENTDAY}}|mes={{subst:CURRENTMONTH}}}}\n" +
         "<!-- Doblidetz pas d'apondre lo ligam cap a aquesta pagina dins la pagina principala dels imatges de suprimir -->";
}

function InitPAdQ(page_name) {
  return "<!-- Salvar la pagina per l'inicializar puèi seguir las instruccions -->\n" +
         "{{subst:Inicializar PAdQ|" + page_name + "|~~~~|jorn={{subst:CURRENTDAY}}|mes={{subst:CURRENTMONTH}}}}";
}

function InitIdeM(page_name) {
  return "<!-- Salvar la pagina per l'inicializar puèi seguir las instruccions -->\n" +
         "{{subst:Melhorament Imatge}}";
}

function InitPCP(page_name) {
  return "<!-- Salvar la pagina per l'inicializar puèi seguir las instruccions -->\n" +
         "{{subst:Inicializar PCP|" + page_name + "|~~~~}}\n" +
         "<!-- Doblidetz pas d'apondre lo ligam cap a aquesta pagina dins la pagina principala dels\n" +
         "     articles sospechats de violacion de copyright -->";
}

function InitArbReq(page_name) {
  return "<!-- Salvar la pagina per l'inicializar puèi seguir las instruccions -->\n" +
         "{{subst:Wikipèdia:Comitat d'arbitratge/arbitratge/Modèl}}\n" +
         "<!-- Doblidetz pas d'apondre un ligam cap a aquesta pagina sus [[Wikipèdia:Comitat d'arbitratge/arbitratge]] -->";
}

function InitDiscArbReq(page_name) {
  return "<!-- Salvar la pagina per l'inicializar -->\n" +
         "{{subst:Discussion Wikipèdia:Comitat d'arbitratge/arbitratge/Modèl}}";
}

function InitCdl(page_name) {
  return "<!-- Salvar la pagina per l'inicializar puèi seguir las instruccions -->\n" +
         "<!-- Doblidetz pas d'apondre le ligam cap a aquesta pagina dins la pagina principala del comitat de lectura -->\n\n" +
         "<noinclude>{{subst:Inicializar Comitat de lectura2}}</noinclude>\n" +
         "{{subst:Inicializar Comitat de lectura|" + page_name + "|~~~~}}";
}

function InitProjècteTraduccion(page_name) {
  var mustSkip=mw.config.get('wgPageName').indexOf('Projècte:Traduccion/*/');
  if (mustSkip == -1) {
    return "{{subst:Inicializar la pagina de traduccion|{{subst:SUBPAGENAME}}|~~~~|\n" +
           "<!--  A la creacion de la pagina, seguissètz las consignas çaijós per prepausar l'article.    \n" +
           "      ATENCION : Escafetz pas res !                                             -->\n" +
           "1. Indicatz çaijós la lenga de l'article de traduire (ex: en de es it pt...)\n" +
           "|en|\n" +
           "2. Indicatz çaijós lo nom de l'article original (ex: Frankreich)\n" +
           "|Nom original aicí| \n" +
           "3. Indicatz çaijós en una frasa l'interès de la traduccion\n" +
           "|article fòrt plan|\n" +
           "4. Apondètz eventualament un comentari brèu \n" +
           "|comentari fòrt interessent aicí|\n" +
           "| 5. Es acabat, d'ara enlà podètz salvar aquesta pagina.\n" +
           "}}"; 
  } else {
    return "";
  }
}

function InitPBA(page_name) {
  return "<!-- Salvar la pagina per l'inicializar puèi seguir las instruccions -->\n" +
         "{{subst:Inicializar PBA|" + page_name + "|~~~~|jorn={{subst:CURRENTDAY}}|mes={{subst:CURRENTMONTH}}}}";
}

function InitPL(page_name) {
  return "<!-- Emplenar los paramètres mes e annada a la sospagina correspondenta, e crear los ligams roges -->\n" +
         "{{Portal:Literatura/Convit a la lectura/Seleccion/Modèl \n" +
         "| mes = \n" +
         "| annada = \n" +
         "}} \n" +
         "<noinclude>{{Portal:Literatura/Convit a la lectura/Seleccion/Modèl inclusion \n" +
         "| mes = \n" +
         "| annada = \n" +
         "}} \n" +
         "</noinclude>";
}


var init_if_empty = new Array(
  new Array('Wikipèdia:Paginas_de_suprimir/', InitPdeS),
  new Array('Wikipèdia:Lista_dels_articles_non_neutres/', InitLANN),
  new Array('Wikipèdia:Imatges_de_suprimir/', InitIdeS),
  new Array('Wikipèdia:Proposicion_articles_de_qualitat/', InitPAdQ),
  new Array('Wikipèdia:Paginas_sospechadas_de_violacion_de_copyright/', InitPCP),
  new Array('Discussion_Wikipèdia:Comitat_d\'arbitratge/arbitratge/', InitDiscArbReq),
  new Array('Wikipèdia:Comitat_d\'arbitratge/arbitratge/', InitArbReq),
  new Array('Wikipèdia:Comitat_de_lectura/', InitCdl),
  new Array('Projècte:Traduccion/', InitProjècteTraduccion),
  new Array('Wikipèdia:Proposicion_bons_articles/', InitPBA),
  new Array('Portal:Literatura/Convit_a_la_lectura/Seleccion/', InitPL)
);

/**
 * Emplena la zòna d'edicion s'es voida amb lo tèxt retornat per
 * un puntor de foncion seleccionat pel nom de la pagina.
 */
function InitPage() {
  // Testar se editform e wpTextbox1 existisson siquenon i a una error quand
  // dobrís l'istoric d'una pagina que match un dels noms de init_if_empty[],
  // testar solament lo nom de la pagina es pas sufisent.
  if (document.editform == undefined || document.editform.wpTextbox1 == undefined) return;
  var text_area = document.editform.wpTextbox1;
  if (text_area.value.length != 0) return;
  for (var i = 0; i < init_if_empty.length; ++i) {
    var page_match = init_if_empty[i][0];
    var index = mw.config.get('wgPageName').indexOf(page_match);
    if (index != -1) {
      page_name = mw.config.get('wgPageName').slice(page_match.length);
      page_name = page_name.replace(/_/g, ' ');
      text_area.value = init_if_empty[i][1](page_name);
      break;
    }
  }
}
$(InitPage);

/**
 * caractèrs especials
 *
 * Apondre un menut per causir de sosensembles de caractèrs especials.
 * Ecrich per Zelda, vejatz sus [[fr:Utilisateur:Zelda/Edittools.js]].
 * Remplaça la foncion anciana per una varianta mai rapida.
 */

/**
 * Apond un menut desenrotlant que permet de causir un jòc de caractèrs especials
 * Los caractèrs especials son definits dins Mediawiki:Edittools
 */
function addCharSubsetMenu() {
  var specialchars = document.getElementById('specialcharsets');
  if (!specialchars) return;

  // Construccion del menut de seleccion
  var charSubsetSelect = document.createElement("select");
  charSubsetSelect.setAttribute("style", "display:inline");
  charSubsetSelect.onchange = function () { chooseCharSubset(this.selectedIndex); };

  // Apond d'opcions al menut
  var p = document.getElementById('specialcharsets').getElementsByTagName('p');
  for (var i = 0; i < p.length ; i++) {
    var opt = document.createElement("option");
    var txt = document.createTextNode(p[i].title);
    opt.appendChild(txt);
    charSubsetSelect.appendChild(opt);
  }

  specialchars.insertBefore(charSubsetSelect, specialchars.childNodes[0]);

  /* default subset - try to use a cookie some day */
  chooseCharSubset(0);
}

/**
 * Afichatge del jòc de caractèrs seleccionat
 */
function chooseCharSubset(index) {
  var p = document.getElementById('specialcharsets').getElementsByTagName('p');
  for (var i = 0; i < p.length ; i++) {
    // Initializacion del jòc de caractèrs seleccionat
    if (i == index) {
    	initializeCharSubset(p[i]);
    }
    // Afichatge del jòc seleccionat, amagatge dels autres
    p[i].style.display = i == index ? 'inline' : 'none';
    p[i].style.visibility = i == index ? 'visible' : 'hidden';
  }
}

/**
 * Initializacion del jòc de caractèrs seleccionat
 * Paramètre : paragraf contenent lo jòc d'inicializar. Inicializa totes los
 * caractèrs contenguts dins los sos-spans del paragraf
 */
function initializeCharSubset(p) {
  // recèrca dels soselements de tipe span de tractar
  var spans = p.getElementsByTagName("span");
  if (!spans) return;

  // regexp per escapar los caractèrs JS especials : \ e '
  var re = new RegExp("(\\\\|')", "g");
  // gestion del caractèr d'escapament '\'
  var escapeRe = new RegExp("[^\\\\](\\\\\\\\)*\\\\$", "g");
  var unescapeRe = new RegExp("\\\\\\\\", "g");

  // tractament dels spans del paragraf
  for (var j = 0; j < spans.length; j++) {
    // span deja traité
    if (spans[j].childNodes.length == 0 || spans[j].childNodes[0].nodeType != 3) continue;

    // On parse lo contengut del span
    var chars = spans[j].childNodes[0].nodeValue.split(" ");
    for (var k = 0; k < chars.length; k++) {
      var a = document.createElement("a");
      var tags = chars[k];

      // recampament dels mots que s'acaban per un espaci protegit per un \
      while (k < chars.length && chars[k].match(escapeRe)) {
      	k++;
	tags = tags.substr(0, tags.length - 1) + " " + chars[k];
      }

      // creacion del ligam insertTag(tagBegin, tagEnd, defaultValue) en protegent los caractèrs JS \ e '
      tags = (tags.replace(unescapeRe, "\\")).split("+");
      var tagBegin = tags[0].replace(re, "\\$1");
      var tagEnd = tags.length > 1 ? tags[1].replace(re, "\\$1") : "";
      var defaultValue = tags.length > 2 ? tags[2].replace(re, "\\$1") : "";
      a.href = "javascript:insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "')";
      //a.href="#";
      //eval("a.onclick = function() { insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "'); return false; }");

      a.appendChild(document.createTextNode((tagBegin + tagEnd).replace(unescapeRe, "\\")));
      spans[j].appendChild(a);
      spans[j].appendChild(document.createTextNode(" "));
    }
    // supression del contengut ancian
    spans[j].removeChild(spans[j].firstChild);
  }
}
$(addCharSubsetMenu);

/**
 * Permet d'apondre un jòc de caractèrs especials dins lo menut desenrotlant
 * paramètres :
 * - nom del jòc de caractèrs
 * - contengut HTML. Los caractèrs especials devon èsser dins de spans
 *   exemple : "caractèrs : <span>á ò í ò à</span>"
 */
function addSpecialCharsetHTML(title, charsHTML) {
  var specialchars = document.getElementById('specialcharsets');
  if (!specialchars) return;

  // Apondon dels caractèrs especials. Los ligams seràn inicializat per initializeCharSubset()
  // al moment de la seleccion
  var specialcharsets = document.getElementById('specialcharsets');
  var p = document.createElement("p");
  p.style.display = "none";
  p.title = title;
  p.innerHTML = charsHTML;
  specialcharsets.appendChild(p);
}

/**
 * Permet d'apondre un jòc de caractèrs especials dins lo menut desenrotlant
 * paramètres :
 * - nom del jòc de caractèrs
 * - caractèrs especials
 * exemple d'utilizacion : addSpecialCharset("occitan", " Á á À à Ç É é È è Í í Ì ì Ò ò Ó ó Ú ú Ù ù ");
 */
function addSpecialCharset(title, chars) {
  addSpecialCharsetHTML(title, "<span>" + chars + "</span>");
}

/**
 * Generator de tablèus
 * English: Generate an array using Mediawiki syntax
 *
 * @author: fr:user:dake
 * @version: 0.2
 */

function generatetablèu(nbCol, nbRow, styleHeader, styleLine) {
  var code = "\n{| " +
    ((styleHeader==1) ? 'class="wikitable"' : '')+
    '\n|+ Títol del tablèu\n';
     
  for (var i=0; i<nbCol; i++) code += '! entèsta ' + i + '\n';
     
  for (var j=0; j<nbRow; j++) {
    if ((j+1)%2==0 && styleLine==1) {
      code += '|-{'+'{linha grisa}'+'}\n';
    } else {             
      code += '|-----\n';
    }
           
    for (var i=0; i<nbCol; i++) code += '| element\n';
  }
     
  code += '|}';
  insertTags('','', code);
}

/**
 * English: Open a popup with parameters to generate an array. 
 * The number of rows/columns can be modified. Some additional
 * parameters are related to templates available on :fr
 *
 * @author: fr:user:dake
 * @version: 0.1
 */

function popuptablèu() {
  var popup = window.open('','name','height=400,width=500');
  
  javaCode =  '<script type="text\/javascript">function insertCode(){';
  javaCode += 'var row = parseInt(document.paramForm.inputRow.value); ';
  javaCode += 'var col = parseInt(document.paramForm.inputCol.value); ';
  javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; ';
  javaCode += 'var styleLine = document.paramForm.inputLine.checked; ';
  javaCode += 'window.opener.generatetablèu(col,row,styleHeader,styleLine); ';
  javaCode += '}<\/script>';
  
  popup.document.write('<html><head><title>Paramètres del tablèu</title>');
  popup.document.write(javaCode); 
  popup.document.write('</head><body>');
  popup.document.write('<p>Veuillez entrer les paramètres del tablèu : </p>');
  popup.document.write('<form name="paramForm">');
  popup.document.write('Nombre de linhas : <input type="text" name="inputRow" value="3" ><p>');
  popup.document.write('Nombre de colomnas : <input type="text" name="inputCol" value="3" ><p>');
  popup.document.write('Mesa en forma (wikitable) : <input type="checkbox" name="inputHeader" checked="1" ><p>');
  popup.document.write('linhas grisas alternadas : <input type="checkbox" name="inputLine" checked="0" ><p>');
  popup.document.write('</form">');
  popup.document.write('<p><a href="javascript:insertCode()"> Inserir lo còde dins la fenèstra d\'edicion</a></p>');
  popup.document.write('<p><a href="javascript:self.close()"> Fermer</a></p>');
  popup.document.write('</body></html>');
  popup.document.close();
}

/**
 * Cambiar lo ligam del boton de creacion de tablèu e suprimís lo boton signatura suls articles
 */
function changButtons() {
  toolbarArray = document.getElementById('mw-editbutton-array');
  if (toolbarArray) {
    toolbarArray.onclick = function() {
      popuptablèu();
      return false;
    }
  }

  var btnSigImg = document.getElementById('mw-editbutton-signature');
  if (btnSigImg && mw.config.get('wgNamespaceNumber') == 0) btnSigImg.style.display = "none";
}
$(changButtons);

//</nowiki>