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

De Lescatpat
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
/* Le Javascript placé ici n’affectera que les utilisateurs du site mobile */
/* Le Javascript placé ici n’affectera que les utilisateurs du site mobile */
/* Penser à aligner Mobile.js et Common.js pour la version bureau */
/* Penser à aligner Mobile.js et Common.js pour la version bureau */
//---------------------------------------------------------------------------
// Copie d'un texte vers presse papier par bouton 11/2023
// Operationnel, installé dans common.js mais conservé ici pour tests éventuels
//---------------------------------------------------------------------------
/*
Voir
https://www.mediawiki.org/wiki/Gadget_kitchen
https://www.mediawiki.org/wiki/Manual:CopyTextLayout
https://www.mediawiki.org/wiki/How_to_enhance_wiki_content_with_JavaScript
https://doc.wikimedia.org/oojs-ui/master/demos/?page=widgets&theme=wikimediaui&direction=ltr&platform=mobile#ButtonWidget-normal
*/
mw.loader.using('mediawiki.widgets').then( function (){
var copyText = new mw.widgets.CopyTextLayout( {
            title: 'Copy the text',
            copyText: '\{\{subst:Modèle:entrée\}\}'
        } );
var copyTextPlat = new mw.widgets.CopyTextLayout( {
            title: 'Copy the text',
            copyText: '\{\{subst:Modèle:plat\}\}'
        } );
var copyTextDessert = new mw.widgets.CopyTextLayout( {
            title: 'Copy the text',
            copyText: '\{\{subst:Modèle:dessert\}\}'
        } );
//$( '#bodyContent' ).prepend( copyText.$element );
$( '.dsg_RecetteCategorie' ).append(copyText.$element );
$( '.dsg_RecetteCategorie' ).append(copyTextPlat.$element );
$( '.dsg_RecetteCategorie' ).append(copyTextDessert.$element );
});


/*******************************************************************************/
/*******************************************************************************/

Version du 5 décembre 2023 à 15:09

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

//---------------------------------------------------------------------------
//	Copie d'un texte vers presse papier par bouton 11/2023
//	Operationnel, installé dans common.js mais conservé ici pour tests éventuels
//---------------------------------------------------------------------------

/*
	Voir
	https://www.mediawiki.org/wiki/Gadget_kitchen
	https://www.mediawiki.org/wiki/Manual:CopyTextLayout
	https://www.mediawiki.org/wiki/How_to_enhance_wiki_content_with_JavaScript
	https://doc.wikimedia.org/oojs-ui/master/demos/?page=widgets&theme=wikimediaui&direction=ltr&platform=mobile#ButtonWidget-normal

*/

mw.loader.using('mediawiki.widgets').then( function (){

	var copyText = new mw.widgets.CopyTextLayout( {
            title: 'Copy the text', 
            copyText: '\{\{subst:Modèle:entrée\}\}'
        } );
	var copyTextPlat = new mw.widgets.CopyTextLayout( {
            title: 'Copy the text', 
            copyText: '\{\{subst:Modèle:plat\}\}'
        } );
	var copyTextDessert = new mw.widgets.CopyTextLayout( {
            title: 'Copy the text', 
            copyText: '\{\{subst:Modèle:dessert\}\}'
        } );

	//$( '#bodyContent' ).prepend( copyText.$element );
	$( '.dsg_RecetteCategorie' ).append(copyText.$element );
	$( '.dsg_RecetteCategorie' ).append(copyTextPlat.$element );
	$( '.dsg_RecetteCategorie' ).append(copyTextDessert.$element );

});

/*******************************************************************************/
/* 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();


	});

//}