Attention : Depuis MediaWiki 1.18 les pages se terminant avec l'extension .js ou .css sont interprétées comme des pages wiki ! En particulier les modèles (subst ou non) et les liens. Vous devez donc migrer le code source et effectuer vos changements en évitant ces éléments de syntaxe wiki (peu importe leurs emplacements dans le code source : commentaire, chaine) :

  • Double accolades ouvrantes (en particulier avec subst:) : séparer les deux accolades "{"+"{" du reste de la chaine
  • Double crochets ouvrants : même technique de séparation.
  • Signature (tildes ~ multiples) : même technique de séparation.

Note : après avoir enregistré vos préférences, vous devrez attendre que le serveur mette à jour la feuille de style globale avant de forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : Maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac) ;
  • Google Chrome : Appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac) ;
  • Internet Explorer : Maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ;
  • Konqueror : Cliquez sur Actualiser ou pressez F5 ;
  • Opera : Videz le cache dans Outils → Préférences.
//<source lang="javascript">
/* Crée l'objet $j comme alias à jQuery */
if(typeof $j == 'undefined') {
    $j = jQuery;
}
$(document).ready(function() {
  if((mw.config.get('wgAction') == "edit" || mw.config.get('wgAction') == "submit") && mw.config.get('wgTitle') == "Tpt/Recette.js") {
    var recipeForm = {
      name: "Utilisateur:Tpt/Recette", //le nom du modèle
      params: {
        simple: ['name', 'photo', 'summary', 'occasion', 'origin', 'type', 'diet', 'preptime h', 'preptime m', 'cooktime h', 'cooktime m', 'duration h', 'duration m', 'yield ', 'servingSize ', 'calories', 'fat ', 'saturatedFat', 'unsaturatedFat', 'carbohydrates', 'sugar', 'fiber', 'protein', 'cholesterol', 'instructions', 'other'],
        multiple: [
          {name: 'ingredient', length: 20}
        ]
      },
      init: function() {
        $('#editform').submit(function() {
          if($("#recipe-form").length != 0) {
            if(recipeForm.validation()) {     
              recipeForm.submit();
              return true;
            } else {
              return false;
            }
          }
        });
        var values = this.get();
        if(!values["name"])
          values["name"] = mw.config.get('wgTitle');
        $("#wikiEditor-ui-text").html(this.print_form(values));
      },
      print_form: function(values) {
        var form = '<fieldset id="recipe-form" style="display: block;">';
          form += '<div style="font-style: italic; font-weight: bold; font-size:large; margin-left:10%"><label for="recipe-name">Meta-données de : </label><input type="text" id="recipe-name" size="40" value="' + values["name"] + '" /></div>';
          form += '<div><label for="recipe-summary">Courte description de la recette : </label><input type="text" id="recipe-summary" size="120" value="' + values["summary"] + '" /></div>';
          form += '<div><label for="recipe-naissance">Année de naissance et de décès si elles sont connues : </label>';
          form += '<div><label for="recipe-occasion" title="">Occasion : </label><input type="text" id="recipe-occasion" value="' + values["occasion"] + '" placeholder="occasion" />';
          form += '<div><label for="recipe-origin" title="">Origine : </label><input type="text" id="recipe-origin" value="' + values["origin"] + '" placeholder="origin" />';
          form += '<div><label for="recipe-type" title="">Type de plat : </label><input type="text" id="recipe-type" value="' + values["type"] + '" placeholder="type" />';
          form += '<div><label for="recipe-diet" title="">Régime alimentaire : </label><input type="text" id="recipe-diet" value="' + values["diet"] + '" placeholder="diet" />';
          form += '<div><label for="recipe-yield" title="">Quantité préparée : </label><input type="text" id="recipe-yield" value="' + values["yield"] + '" placeholder="yield" />';
          form += '<div><label for="recipe-servingSize" title="">Taille de la part : </label><input type="text" id="recipe-servingSize" value="' + values["servingSize"] + '" placeholder="" />g';
          form += '<div><label for="recipe-calories" title="en kcal">Valeur énergétique : </label><input type="number" id="recipe-calories" value="' + values["calories"] + '" placeholder="" />kcal';
          form += '<div><label for="recipe-fat" title="en gramme">Lipides : </label><input type="number" id="recipe-fat" value="' + values["fat"] + '" placeholder="" />g';
          form += '<div><label for="recipe-saturatedFat" title="en gramme">Acides gras saturés : </label><input type="number" id="recipe-saturatedFat" value="' + values["saturatedFat"] + '" placeholder="" />g';
          form += '<div><label for="recipe-unsaturatedFat" title="en gramme">Acides gras non saturés : </label><input type="number" id="recipe-unsaturatedFat" value="' + values["unsaturatedFat"] + '" placeholder="" />g';
          form += '<div><label for="recipe-carbohydrates" title="en gramme">Glucides : </label><input type="number" id="recipe-carbohydrates" value="' + values["carbohydrates"] + '" placeholder="" />g';
          form += '<div><label for="recipe-sugar" title="en gramme">Sucres : </label><input type="number" id="recipe-sugar" value="' + values["sugar"] + '" placeholder="" />g';
          form += '<div><label for="recipe-fiber" title="en gramme">Fibres : </label><input type="number" id="recipe-fiber" value="' + values["fiber"] + '" placeholder="" />g';
          form += '<div><label for="recipe-protein" title="en gramme">Protides : </label><input type="number" id="recipe-protein" value="' + values["protein"] + '" placeholder="" />g';
          form += '<div><label for="recipe-cholesterol" title="en gramme">Cholestérol : </label><input type="number" id="recipe-cholesterol" value="' + values["cholesterol"] + '" placeholder="" />g';
          form += '<div><label for="recipe-" title="en gramme"> : </label><input type="number" id="recipe-" value="' + values[""] + '" placeholder="" />';
          form += '<div><label for="recipe-" title="en gramme"> : </label><input type="number" id="recipe-" value="' + values[""] + '" placeholder="" />';
          form += '<div><label for="recipe-instructions" title="Préparation en étapes ordonnées par \"#\""> : </label><textarea id="recipe-instructions" placeholder="# Mettre la farine dans un saladier." rows="10" cols="80" >' + values["instructions"] + '</textarea>';
          form += '<div><label for="recipe-other" title="Auutres informations sur la recette, contenu libre, catégories spéciales..."> : </label><textarea id="recipe-other" placeholder="== Annexes =="  rows="12" cols="80" >' + values["other"] + '</textarea>';
          form += '<div style="text-align:right; font-style: italic;">Pour plus d’informations, voyer la <a href="http://fr.wikisource.org/wiki/Modèle:' + this.name + '" class="extiw" title="Modèle:' + this.name + '">documentation</a>.</div></fieldset>';
          return form;
      },
      get: function() {
        var textbox = $("#wpTextbox1");
        var params = {};
        for(var param_number in recipeForm.params.simple) {
          params[recipeForm.params.simple[param_number]] = "";
        }
        for(var param_number in recipeForm.params.multiple) {
          params[recipeForm.params.multiple[param_number].name] = new Array();
        }
        if(textbox.html() != '') {
          var reg = new RegExp("^[ \n]*\{\{(" + this.name + "|" + this.name.toLowerCase() + ")([.]*)\n*\}\}[ \n]*$", "m");
          var template = textbox.html().match(reg)[2];
          if(template == null)
            return;
          textbox.html("");
          reg = /\n \| /g;
          template = template.split(reg);
          reg = /^([^=]*)=?(.*)$/;
          for(var i = 0; i < template.length; i++) {
            template[i] = reg.exec($.trim(template[i]));
            if(template[i] && template[i][2]) {
                params[$.trim(template[i][1])] = $.trim(template[i][2]);
            }
          }
          for(var param_number in recipeForm.params.multiple) {
            var param = recipeForm.params.multiple[param_number];
            for(i = 1; i <= param.length; i++) {
              if(params[param.name + " " + i])
                params[param.name][i] = params[param.name + " " + i];
            }
          }
        }
        return params;
      },
      validation: function() {
        var valid = true;
        return valid;
      },
      submit: function() {
        var textbox = $("#wpTextbox1");
        template = "{{"+ recipeForm.name + "\n";
        for(var param_number in recipeForm.params.simple) {
          var param = recipeForm.params.simple[param_number];
          if($("#recipe-" + param).val())
            template += " | " + param + " = " + $("#recipe-" + param).val() + "\n";
        }
        for(var param_number in recipeForm.params.multiple) {
          var param = recipeForm.params.multiple[param_number];
          for(i = 1; i <= param.length; i++) {
            if($("#recipe-" + param.name + " " + i).val())
              template += " | " + param.name + " " + i + " = " + $("#recipe-" + param.name + " " + i).val() + "\n";
          }
        }
        template += "}}\n\n";
        textbox.val(template + $("#wpTextbox1").val());
        $("#recipe-form").remove();
      }
    };
    recipeForm.init();
  }
});
//</source>