« MediaWiki:Mobile.js » : différence entre les versions

De Lescatpat
Aucun résumé des modifications
(Contenu remplacé par « →‎Le Javascript placé ici n’affectera que les utilisateurs du site mobile : →‎Penser à aligner Mobile.js et Common.js pour la version bureau : //alert ("Mobile.js"); //--------------------------------------------------------------------------- // Javascript nécessaire aux pages de création d'une nouvelle recette // A Tester sous connexion Daniel pour mise au point du script dans la // page Utilisateur:Daniel/common.js // Version en exploitation : c... »)
Balise : Contenu remplacé
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 3 : Ligne 3 :


//alert ("Mobile.js");
//alert ("Mobile.js");


//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Javascript nécessaire à la page de création d'une nouvelle recette
// Javascript nécessaire aux pages de création d'une nouvelle recette
// A Tester sous connexion Daniel pour mise au point du script dans la
// A Tester sous connexion Daniel pour mise au point du script dans la
// page Utilisateur:Daniel/common.js
// page Utilisateur:Daniel/common.js
// Version en exploitation : ce script doit être dans les deux pages
// Version en exploitation : ce script doit être dans les deux pages
// Mediawiki:Common.js et Mediawiki:Mobile.js qui sont mutuellement exclusive
// Mediawiki:Common.js et Mediawiki:Mobile.js qui sont mutuellement exclusives
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------


mw.loader.using('mediawiki.widgets').then( function (){
importScript('MediaWiki:Catpat.js');
 
// See documentation at:  
// https://doc.wikimedia.org/oojs-ui/master/js/#!/api/OO.ui.ActionFieldLayout
// https://doc.wikimedia.org/oojs-ui/master/js/#!/api/OO.ui.TextInputWidget
// https://doc.wikimedia.org/oojs-ui/master/js/#!/api/OO.ui.ButtonWidget
var inputTitreRecette = new OO.ui.TextInputWidget( {
    placeholder: 'Le titre de la recette'
} );
 
var buttonValiderTitre = new OO.ui.ButtonWidget( {
label: 'Validez le titre',
} );
 
var fieldtitre = new OO.ui.ActionFieldLayout(
inputTitreRecette,
buttonValiderTitre,
    {
        label: 'Entrez le titre de la recette puis validez le',
        align: 'top',
        help: 'Si une recette existe déjà sous ce titre, elle sera présentée pour modification'
    }
);
 
var buttonCreerRecette = new OO.ui.ButtonWidget( {
label: 'Créer la recette',
href: 'https://doc.wikimedia.org',
disabled: true
} );
// A ButtonSelectWidget that contains three ButtonOptionWidgets.
// Note dsg : title est le nom du modèle de page qui est appelé pour créer la recette. Se limiter à 1 mot,
// l'espace étant mal interpreté par mediawiki quand il décode l'URI. Ainsi j'ai corrigé
// "plat principal" en le remplaçant par "plat".
// C'est dans le Modèle:plat que référence sera faite à la Catégorie:plt principal
var option1 = new OO.ui.ButtonOptionWidget( {
        data: "1",
        label: 'Entrée',
        title: 'Entrée',
    } ),
    option2 = new OO.ui.ButtonOptionWidget( {
        data: 2,
        label: 'Plat',
        title: 'Plat'
    } ),
    option3 = new OO.ui.ButtonOptionWidget( {
        data: 3,
        label: 'Dessert',
        title: 'Dessert'
    } ),
    buttonSelect = new OO.ui.ButtonSelectWidget( {
        items: [ option1, option2, option3 ]
    } );
 
$( '.dsg_TitreNouvellePage' ).append(fieldtitre.$element );
$( '.dsg_creationRecette' ).append(buttonCreerRecette.$element );
$( '.dsg_ButtonChoixCategorie' ).append(buttonSelect.$element );
 
feuVertTitre = false;
feuVertCategorie = false;
 
buttonValiderTitre.on( 'click', function () {
titreProposed = inputTitreRecette.getValue();
if ( !inputTitreRecette.value) {
        //alert("input vide" );
        feuVertTitre = false;
        buttonCreerRecette.setDisabled(true);
    } else {
        //alert("titre recu "+titreProposed );
      feuVertTitre = true;
      if(feuVertTitre && feuVertCategorie)
        buttonCreerRecette.setDisabled(false);
        else buttonCreerRecette.setDisabled(true);
    }
 
});
 
buttonSelect.on("choose", function () {
categorieChoisie = buttonSelect.findSelectedItem( ).getTitle();
//alert (categorieChoisie);
//alert("titre recu "+titreProposed );
feuVertCategorie = true;
    if(feuVertTitre && feuVertCategorie)
        buttonCreerRecette.setDisabled(false);
    else buttonCreerRecette.setDisabled(true);
  });
 
buttonCreerRecette.on( 'click', function () {
//alert("FV categ "+feuVertCategorie);
//alert("feuVertTitre "+feuVertTitre);
if(feuVertTitre && feuVertCategorie) {
 
// On prévoit ici les deux modes d'appel des pages des mediawikis.
// Voir la documentation mediawiki sur les URL des sites qui dépendent
// du type de serveur et de procédure de chaque site
 
if(window.location.pathname == '/index.php'){
//alert('On est chez ovh');
lienAppelCreation = window.location.pathname + '?title=';
lienAppelCreation = lienAppelCreation +
encodeURI (titreProposed + "&action=edit&section=new&preload=Modèle:" + categorieChoisie);
}else{
//alert('On est en local');
lienAppelCreation = '/index.php/';
lienAppelCreation = lienAppelCreation + titreProposed +
encodeURI (  "?action=edit&section=new&preload=Modèle:" + categorieChoisie);
 
}
 
// Réinitialisation au cas où on utiliserait le bouton retour du navigateur
buttonCreerRecette.setDisabled(true);
inputTitreRecette.setValue(null);
// Création de la nouvelle page
window.location.href = lienAppelCreation;
}
 
});
 
});
 
 
/*******************************************************************************/
/* Javascript pour afficher le statut de l'utilisateur actuel */
/* sur la page "lescatpat:Utilisateurs" ou d'autres à définir */
/********************************************************************************/
 
dsg_wgTitle = mw.config.get("wgTitle");
dsg_wgCanonicalNamespace = mw.config.get("wgCanonicalNamespace");
dsg_wgUserGroups = mw.config.get("wgUserGroups");
 
if(dsg_wgTitle == "Utilisateurs" & dsg_wgCanonicalNamespace == "Project"){
if($.inArray('sysop', dsg_wgUserGroups) !== -1){
statut = 'administrateur';
}else if($.inArray('Editeur', dsg_wgUserGroups) !== -1){
statut = 'éditeur';
}else if($.inArray('user', dsg_wgUserGroups) !== -1){
statut = 'utilisateur connecté';
}else{
statut = 'utilisateur non connecté';
}
//alert(statut);
$(".monstatut").text(statut);
}
//alert("22");
 
/*******************************************************************************/
/* Javascript applicable à la catégorie des recettes */
/* */
/* Calcul des quantités d'ingrédients selon le nombre de parts */
/********************************************************************************/
// pour tester les éléments sélectionnés, utiliser .css({"color":"red","border":"2px solid red"});
 
 
//if($.inArray('Recettes', wgCategories) !== -1){
 
/*
Ancienne méthode : le nombre de parts était supposé par défaut à 4 et
les quantités d'ingrédients étaient données pour 1 part. C'est le cas
des recettes de Catherine.
Nouvelle méthode : on définit le nombre de parts x dans la page à l'aide
du modèle {{pour|x}} et les quantités d'ingrédients sont alors données
pour x parts.
D'où la nécessité de 2 cas de calcul selon que l'on part des données
pour 1 part ou des données pour x parts. La distinction se fait en repérant
la balise class="recette_pour" dans le html.
*/
/* length = 0 correspond à absence de la class recette_pour
ce qui correspond au format du tableau ingrédients initial
donc à toutes les recettes de Catherine */
if($(".recette_pour").length === 0){
//alert("catherine");
ancien_format = true;
nbpers = 4;
}else{
//alert($(".recette_pour").text());
nbpers = $(".recette_pour").text();
ancien_format = false;
}
$(".ingredients-nbpersonnes").text(nbpers);
 
var calcul_quantites = function(qu,nba){
if(qu === '')return;
qu2 = qu.replace(',','.');
resultat = (qu2 / nba).toFixed(2).replace('.00','');
if(resultat === 0)return;
return resultat;
};
 
var calcul_quantites2 = function(qu,nba){
if(qu === '')return;
qu2 = qu.replace(',','.');
resultat = (qu2 * nba).toFixed(2).replace('.00','');
if(resultat === 0)return;
return resultat;
};
 
$("tr.ligne-ingredient").each(function(){
 
if(ancien_format === true){
q_unitaire = $(this).find(".recette-qt").text();
$(this).find(".recette-q").text(q_unitaire);
q_totale = calcul_quantites2(q_unitaire,nbpers);
$(this).find(".recette-qt").text(q_totale);
}else{
//alert ("new");
q_totale = $(this).find(".recette-qt").text();
q_unitaire = calcul_quantites(q_totale,nbpers);
$(this).find(".recette-q").text(q_unitaire);
}
 
});
 
$(".table-ingredients-bouton-moins").click(function(){
nbpers--;
$(".ingredients-nbpersonnes").text(nbpers);
 
$("tr.ligne-ingredient").each(function(){
q_unitaire = $(this).find(".recette-q").text();
q_totale = calcul_quantites2(q_unitaire,nbpers);
$(this).find(".recette-qt").text(q_totale);
});
 
if(nbpers == 1)$(".table-ingredients-bouton-moins").hide();
 
});
 
$(".table-ingredients-bouton-plus").click(function(){
nbpers++;
$(".ingredients-nbpersonnes").text(nbpers);
 
$("tr.ligne-ingredient").each(function(){
q_unitaire = $(this).find(".recette-q").text();
q_totale = calcul_quantites2(q_unitaire,nbpers);
$(this).find(".recette-qt").text(q_totale);
});
 
if(nbpers > 1)$(".table-ingredients-bouton-moins").show();
 
 
});
 
//}

Version actuelle datée du 8 janvier 2024 à 19:11

/* Le Javascript placé ici n’affectera que les utilisateurs du site mobile */
/* Penser à aligner Mobile.js et Common.js pour la version bureau */

	//alert ("Mobile.js");

//---------------------------------------------------------------------------
//	Javascript nécessaire aux pages de création d'une nouvelle recette
//	A Tester sous connexion Daniel pour mise au point du script dans la
//			page Utilisateur:Daniel/common.js
// Version en exploitation : ce script doit être dans les deux pages
//	Mediawiki:Common.js et Mediawiki:Mobile.js qui sont mutuellement exclusives
//---------------------------------------------------------------------------

	importScript('MediaWiki:Catpat.js');