Utilisateur:Aristoi/indexForm.js

La bibliothèque libre.

Note : après avoir enregistré vos modifications, il se peut que vous deviez 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 ;
  • Opera : Allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d'exploration → Images et fichiers en cache.
//<source lang="javascript">
if($.inArray(mw.config.get('wgAction'), ['edit', 'submit']) !== -1 && mw.config.get('wgNamespaceNumber') == 0) {
  $(document).ready(function() {
    var transcForm = {
      name: "pages", //le nom du modèle
      params: ["index", "from", "fromsection", "to", "tosection", "onlysection", "header", "header_type", "step", "include", "exclude", "titre", "volume", "auteur", "traducteur", "illustrateur", "editeur", "school", "lieu", "annee", "prev", "current", "next"], //les paramètres du modèle dans l'ordre où ils sont appelé si on ne les précise pas
      init: function() {
        if(mw.user.options.get('usebetatoolbar')) {
          mw.loader.using('ext.wikiEditor', function() {
            $('#wpTextbox1').wikiEditor('addToToolbar', {
              section: 'main',
              groups: {
                'nav':{
                  tools: {
                    'transc': {
                      label: "Formulaire d'aide à la transclusion",
                      type: 'button',
                      icon: '//upload.wikimedia.org/wikipedia/commons/d/df/Transclusion-icon.svg'
                    }
                  }
                }
              }
            });
            $('img[rel="transc"]').mouseup(function() {
              if($("#transc-form").length == 1) {
                transcForm.submit();
              } else {
                transcForm.create();
              }
            });
          });
        } else {
          $("#toolbar").append('<img id="transc-button" width="23" height="22" border="0" src="//upload.wikimedia.org/wikipedia/commons/d/df/Transclusion-icon.svg" alt="Formulaire d\'aide à la transclusion" title="Formulaire d\'aide à la transclusion" style="cursor: pointer;">');
          $('#transc-button').mouseup(function() {
            if($("#transc-form").html()) {
              transcForm.submit();
            } else {
              transcForm.create();
            }
          });
        }
        $('#editform').submit(function() {
          if($("#transc-form").length == 1) {
            if(transcForm.validation()) {
              transcForm.submit();
              return true;
            } else {
              return false;
            }
          }
        });
      },
      create: function() {
        var values = this.get();
        $("#editform").before(this.print_form(values));
        $( '.mw-help-field-data' )
          .hide()
          .closest( '.mw-help-field-container' ).find( '.mw-help-field-hint' )
            .show()
            .click( function() {
              $(this).closest( '.mw-help-field-container' ).find('.mw-help-field-data' ).slideToggle( 'fast' );
            });
      },
      print_form: function(values) {
        var form = '<fieldset id="transc-form" style="display: block; background-color: wheat">';
          form += '<div style="padding-left: 2em"><span style="font-style: italic; font-weight: bold; font-size:large;">Formulaire d’aide à la transclusion</span><span class="mw-help-field-container"><span class="mw-help-field-hint" style="display: inline;"></span><span class="mw-help-field-data" style="display: none;">Ce formulaire simplifie l’utilisation de la balise <nowiki><</nowiki>pages/>, utilisée pour afficher les textes sur Wikisource.</span></span></div>';
          form += '<div><label for="transc-index">Livre source : </label><input type="text" id="transc-index" size="120" value="' + values["index"] + '" /></div>';
          form += '<div style="padding-left : 3em;">';
          form += '<label for="transc-from">Page de début : </label><input type="text" id="transc-from" size="4" maxlength="4" value="' + values["from"] + '" />	';
          form += '<label for="transc-fromsection">à partir de la section : </label><input type="text" id="transc-fromsection" size="50" value="' + values["fromsection"] + '" /><br/>';
          form += '<label for="transc-to">Page de fin : </label><input type="text" id="transc-to" size="4" maxlength="4" value="' + values["to"] + '" />	';
          form += '<label for="transc-tosection">jusqu’à la section : </label><input type="text" id="transc-tosection" size="50" value="' + values["tosection"] + '" /></div>';
          form += '<div><label for="transc-header">Type de boîte-titre : </label><select id="transc-header">' + this.header(values["header"]) + '</select></div>';
          form += '<div id="NavFrame1" class="NavFrame" style="clear:both; margin-bottom:1em; width:99%; border-style:solid; -moz-border-radius:0; border-color:#AAAAAA; background-color:wheat;" title="[Dérouler]"><a href="javascript:toggleNavigationBar(1);" id="NavToggle1" class="NavToggle">[Dérouler]</a>';
		  form += '<div class="NavHead" align="left">Paramètres supplémentaires pour forcer l’affichage : </div>';
          form += '<div class="NavContent" style="margin: 0px; background: none repeat scroll 0% 0% wheat; display: none; " align="left"><label for="transc-titre">Titre : </label><input type="text" id="transc-titre" size="60" value="' + values["titre"] + '" />';
          form += '<label for="transc-volume">Volume : </label><input type="text" id="transc-volume" size="60" value="' + values["volume"] + '" /><br/>';
          form += '<label for="transc-auteur">Auteur : </label><input type="text" id="transc-auteur" size="60" value="' + values["auteur"] + '" />';
          form += '<label for="transc-traducteur">Traducteur : </label><input type="text" id="transc-traducteur" size="60" value="' + values["traducteur"] + '" /><br/>';
          form += '<label for="transc-illustrateur">Illustrateur : </label><input type="text" id="transc-illustrateur" size="60" value="' + values["illustrateur"] + '" />';
          form += '<label for="transc-editeur">Maison d’édition : </label><input type="text" id="transc-editeur" size="60" value="' + values["editeur"] + '" /><br/>';
          form += '<label for="transc-school">École : </label><input type="text" id="transc-school" size="60" value="' + values["school"] + '" />';
          form += '<label for="transc-lieu">Lieu d’édition : </label><input type="text" id="transc-lieu" size="60" value="' + values["lieu"] + '" /><br/>';
          form += '<label for="transc-annee">Année de publication : </label><input type="text" id="transc-annee" size="60" value="' + values["annee"] + '" />';
          form += '<label for="transc-prev">Chapitre précédent : </label><input type="text" id="transc-prev" size="60" value="' + values["prev"] + '" /><br/>';
          form += '<label for="transc-current">Chapitre en cours : </label><input type="text" id="transc-current" size="60" value="' + values["current"] + '" />';
          form += '<label for="transc-next">Chapitre suivant : </label><input type="text" id="transc-next" size="60" value="' + values["next"] + '" /><div class="NavEnd">&nbsp;</div></div>';
		  form += '</fieldset>';		  
          return form;
      },
      header: function(value) {
        var list = {"":"", "1":"Classique", "Sommaire":"Sans navigateur (sommaire)", "empty":"Aucune"};
        var header = "";
        for(var i in list) {
          header += '<option value="' + i + '"';
          if(value == i)
            header += ' selected="selected"';
          header += '>' + list[i] + '</option>';
        }
        return header;
      },
	  get: function() {
        var textbox = $("#wpTextbox1");
        var params = {};
        for(var param_number in transcForm.params) {
          params[transcForm.params[param_number]] = "";
        }
        if(textbox.text() != '') {
			var reg = new RegExp("<pages [^\/]*\/>[ \n]*", "m");
			var match = textbox.text().match(reg);
                        var template = null;
                        if (match)
                           template = match[0];
			if(template == null) {
				return params;
			}
			textbox.text(textbox.text().replace(reg, ""));
			var pages = $(template);
			for(var key in params) {
				if(pages.attr(key)) {
					params[key] = pages.attr(key);
				}
			}
		}
        return params;
      },
      validation: function() {
        var valid = true;
		if( !$("#transc-index").val() ) {
          alert("Vous n’avez pas renseigné de livre source !");
          valid = false;
        } else if($("#transc-index").val().substring($("#transc-index").val().lastIndexOf('.')) != ".djvu" && $("#transc-index").val().substring($("#transc-index").val().lastIndexOf('.')) != ".pdf" ) {
          alert("Le livre source doit être un djvu ou un pdf !");
          valid = false;
        }
		if( $("#transc-from").val() > $("#transc-to").val() ) {
          alert("La page de fin est avant la page de début !");
          valid = false;
        }
        return valid;
      },
      submit: function() {
        var textbox = $("#wpTextbox1");
        var date = new Date();
 
        template = "<pages ";
        for(var param_number in transcForm.params) {
			var param = transcForm.params[param_number];
			if($("#transc-" + param).val())
			template += param + "=\"" + $("#transc-" + param).val() + "\" ";
        }
		template += "/>\n\n";
 
		textbox.val(template + $("#wpTextbox1").val());
		$("#transc-form").remove();
      }
	};
    transcForm.init();
  });
}
//</source>