MediaWiki:Common.js/edit.js : Diferéncia entre lei versions

Un article de Wikipèdia, l'enciclopèdia liura.
Contengut suprimit Contengut apondut
Cedric31 (discussion | contribucions)
(Pas cap de diferéncia)

Version del 21 setembre de 2008 a 14.59

/**
 * 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 (wgUserName != null || 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";
}
addOnloadHook(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=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 = wgPageName.indexOf(page_match);
    if (index != -1) {
      page_name = wgPageName.slice(page_match.length);
      page_name = page_name.replace(/_/g, ' ');
      text_area.value = init_if_empty[i][1](page_name);
      break;
    }
  }
}
addOnloadHook(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);
  }
}
addOnloadHook(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('<script type="text\/javascript" src="\/skins-1.5\/common\/wikibits.js"><!-- wikibits js --><\/script>');
  popup.document.write('<style type="text\/css" media="screen">/*<![CDATA[*/ @import "\/skins-1.5\/monobook\/main.css?5"; /*]]>*/<\/style>');
  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();
}

/**
 * Insercion de botons novèls dins la barra d'espleches 
*/

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png',
                'tablèu',
                '{|\n|-\n|\n|\n|}',
                '',
                '',
                'mw-editbutton-array');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png',
                'Raiar',
                '<s>',
                '</s>',
                '',
                'mw-editbutton-strike');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/88/Btn_toolbar_enum.png',
                'Enumeracion',
                '\n# element 1\n# element 2\n# element 3',
                '',
                '',
                'mw-editbutton-enum');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_liste.png',
                'Tièra',
                '\n* element A\n* element B\n* element C',
                '',
                '',
                'mw-editbutton-liste');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9e/Btn_toolbar_gallery.png',
                'Galariá d\'imatges',
                '\n<gallery>\nImatge:Exemple.jpg|[[Tournesol]]\nImatge:Exemple1.jpg|[[La Joconde]]\nImatge:Exemple2.jpg|Un [[hamster]]\n</gallery>\n{{messatge galariá}}',
                '',
                '',
                'mw-editbutton-gallery');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_comentari.png',
                'comentari',
                '<!--',
                '-->',
                '',
                'mw-editbutton-comment');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/47/Button_redir.png',
                'Redireccion',
                '#REDIRECT [[',
                ']]',
                'nom de la destinacion',
                'mw-editbutton-redir');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b4/Button_category03.png',
                'Categoria',
                '[[Categoria:',
                ']]',
                'nom de la Categoria',
                'mw-editbutton-category');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/3b/Button_template_alt.png',
                'Modèl',
                '{{',
                '}}',
                'Modèl o pagina d'enclure',
                'mw-editbutton-template');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c4/Button_ref.png',
                'referéncia',
                '<ref>',
                '</ref>',
                'referéncia, citacion o ligam',
                'mw-editbutton-ref');

addCustomButton('http://upload.wikimedia.org/wikipedia/commons/6/64/Buttonrefvs8.png',
                'Indèx de las referéncias',
                '== Nòtas e referéncias ==\n<references />',
                '',
                '',
                'mw-editbutton-references');

var voirtanben = '== Nòtas e referéncias ==\n'
 + '{{referéncias}}\n\n'
 + '== vejatz tanben ==\n'
 + '=== Articles connèxes ===\n'
 + '* [[De remplaçar]]\n\n'
 + '=== ligams extèrnes===\n'
 + '*\n\n'
 + '=== Bibliografia ===\n'
 + '* [[De remplaçar]]\n\n'
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/bb/Seealso.png',
                'Section vejatz tanben',
                vejatztanben,
                '',
                '',
                'mw-editbutton-voirtanben');

/**
 * 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 && wgNamespaceNumber == 0) btnSigImg.style.display = "none";
}
addOnloadHook(changButtons);

//</nowiki>