Main menu

Forum


× Forum d'aide en Français

[RÉGLÉ] Légende dans module calendrier

  • fynhooft
  • Avatar di fynhooft Autore della discussione
  • Junior Member
  • Junior Member
Di più
10 Anni 8 Mesi fa - 10 Anni 7 Mesi fa #7321 da fynhooft
[RÉGLÉ] Légende dans module calendrier è stato creato da fynhooft
Bonjour,

J'ai récupéré le bout de code suivant (il était en commentaire) dans le fichier "ic_rounded_events.php" :
<!--div class="title-cat">
	<i class="icTip icon-folder-3 caticon <?php echo $CATEGORY_FONTCOLOR; ?>" style="background:<?php echo $CATEGORY_COLOR; ?>" title="<?php echo $CATEGORY_TITLE; ?>"></i> <?php echo $CATEGORY_TITLE; ?>
</div-->

Je voulais utiliser celui-ci afin de rajouter une légende placée sous le calendrier. Pour cela, j'ai rajouté ce code à la fin du fichier "mon_theme_calendar.php".
<?php // Code can be added at Bottom of calendar ?>
<div class="title-cat">
	<?php echo "Légende : " , $item->startDate ?> <i class="icTip icon-folder-3 caticon <?php echo $CATEGORY_FONTCOLOR; ?>" style="background:<?php echo $CATEGORY_COLOR; ?>" title="<?php echo $CATEGORY_TITLE; ?>"></i> 
</div>


Problème : les variables utilisées (nom des catégories, couleurs) ne sont pas accessibles dans le module.
Comment faire pour utiliser ce code dans le module calendrier ?

Visitez mon site sur les tutoriels GIMP : www.gimpons.net
Ultima Modifica 10 Anni 7 Mesi fa da Lyr!C. Motivo: [RÉGLÉ]

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Lyr!C
  • Avatar di Lyr!C
  • Administrator
  • Administrator
  • Lead Developer
Di più
10 Anni 7 Mesi fa #7357 da Lyr!C
Risposta da Lyr!C al topic Légende dans module calendrier
Bonjour,

Effectivement, ce n'est pas possible ainsi, car il s'agit de variable composant et non module.

A savoir : je viens de commencer le développement d'une library pour iCagenda, qui permettra d'utiliser des fonctions quelque soit l'endroit. Ce qui simplifiera certaines possibilités, avec moi de code à opérer.

De plus, la légende des catégories est dans le roadmap, mais comme cette librarie n'est encore qu'à l'état de développement, je rajouterai au fur et à mesure des fonctions, à partir de la version 3.4.0.

En attendant, remplacer votre code par celui-ci :
<?php // Code can be added at Bottom of calendar

	// Function to convert font color, depending on category color
	function fontColor($color){
		$RGB='$RGB';
		$RGBa=$RGB[0];
		$RGBb=$RGB[1];
		$RGBc=$RGB[2];

		$hex_R = substr($color,1,2);
		$hex_G = substr($color,3,2);
		$hex_B = substr($color,5,2);
		$RGBhex = hexdec($hex_R).",".hexdec($hex_G).",".hexdec($hex_B);

		$RGB = explode(",",$RGBhex);
		$RGBa=$RGB[0];
		$RGBb=$RGB[1];
		$RGBc=$RGB[2];
//		$a = array($RGBa, $RGBb, $RGBc);
//		$somme = array_sum($a);
		$somme = ($RGBa + $RGBb + $RGBc);
		if ($somme > '600') {
			$fcolor = 'black';
		} else {
			$fcolor = 'white';
		}
		return $fcolor;
	}

// Preparing connection to db
$db		= JFactory::getDbo();
// Preparing the query
$query	= $db->getQuery(true);
$query->select('c.color AS color, c.title AS title')->from('#__icagenda_category AS c')->where("(c.state = 1)");
$db->setQuery($query);
$list = $db->loadObjectList();

$doc = JFactory::getDocument();
$style = '.caticon {'
		. '		color: #FFFFFF;'
		. '		font-weight: normal;'
		. '		padding: 2px;'
		. '		margin: 2px;'
		. '		border-radius:3px;'
		. '		box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.25);'
		. '		cursor: default;'
		. '}'
		. '.legend {'
		. '		margin: 5px;'
		. '}'
		. '.white {'
		. '		color: #FFFFFF;'
		. '}'
		. '.black {'
		. '		color: #000000;'
		. '}';
$doc->addStyleDeclaration( $style );

echo '<div class="legend">';
echo 'Légende : ';
foreach ($list as $cat)
{
	echo '<i class="icTip icon-folder-3 caticon '.fontColor($cat->color).'" style="background:'.$cat->color.'" title="'.$cat->title.'"></i>';
}
echo '</div>';

?>

Cela devrait vous donner un résultat proche de ce que vous souhaitez ;-)

Cyril

Latest version : iCagenda 3.9.8
We recommend every user to keep iCagenda updated.
Don't forget to have your Joomla!™ up-to-date!

Do you like iCagenda?
I would appreciate if you could take 5 minutes to post a review on JED (Joomla Extensions Directory) .

File allegato:

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • fynhooft
  • Avatar di fynhooft Autore della discussione
  • Junior Member
  • Junior Member
Di più
10 Anni 7 Mesi fa - 10 Anni 7 Mesi fa #7381 da fynhooft
Risposta da fynhooft al topic Légende dans module calendrier
Bonjour,

Merci pour la réponse. J'ai testé et voici mes commentaires.

Dans .caticon , j'ai remplacé padding: 2px; par padding-right: 8px;

La boucle foreach n'affichait pas les noms des catégories et la balise <i> sert normalement à mettre de l'italique.
J'ai remplacé par :
foreach ($list as $cat)
{
	echo '<span class="icTip icon-folder-3 caticon '.fontColor($cat->color).'" style="background:'.$cat->color.'" ></span>';
	echo  $cat->title;
}

Finalement, comme je n'aime pas que le CSS soit dans le code, j'ai déplacé celui-ci (sauf pour les couleurs) à la fin du fichier "themes/packs/mon_theme/css/mon_theme_module.css".
J'ai aussi modifié le fichier "mon_theme_calendar.php" de façon à pouvoir simplifier les noms des catégories dans le fichier css (les miennes ont des trop longs noms).

Voici les codes :

Pour mon_theme_calendar.php :
<?php // Code can be added at Bottom of calendar

	// Function to convert font color, depending on category color
	function fontColor($color){
		$RGB='$RGB';
		$RGBa=$RGB[0];
		$RGBb=$RGB[1];
		$RGBc=$RGB[2];

		$hex_R = substr($color,1,2);
		$hex_G = substr($color,3,2);
		$hex_B = substr($color,5,2);
		$RGBhex = hexdec($hex_R).",".hexdec($hex_G).",".hexdec($hex_B);

		$RGB = explode(",",$RGBhex);
		$RGBa=$RGB[0];
		$RGBb=$RGB[1];
		$RGBc=$RGB[2];
//		$a = array($RGBa, $RGBb, $RGBc);
//		$somme = array_sum($a);
		$somme = ($RGBa + $RGBb + $RGBc);
		if ($somme > '600') {
			$fcolor = 'black';
		} else {
			$fcolor = 'white';
		}
		return $fcolor;
	}

// Preparing connection to db
$db		= JFactory::getDbo();
// Preparing the query
$query	= $db->getQuery(true);
$query->select('c.id AS num_cat, c.color AS color, c.title AS title')->from('#__icagenda_category AS c')->where("(c.state = 1)");
$db->setQuery($query);
$list = $db->loadObjectList();

echo '<div class="legend">';
echo 'Légende : ';
foreach ($list as $cat)
{
	echo '<span class="legend_cat'.$cat->num_cat.' '.fontColor($cat->color).'" style="background:'.$cat->color.'" ></span>';
	// echo  $cat->title;
}
echo '</div>';

?>

Pour mon_theme_module.css :
.legend {
margin: 5px;
}

.white {
color: #FFFFFF;
}

.black {
color: #000000;
}

.legend_cat1, .legend_cat2, .legend_cat3, .legend_cat4, .legend_cat5, .legend_cat6{
color: #FFFFFF;
font-weight: normal;
/*padding: 2px; */
margin: 2px;
border-radius:3px;
box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.25);
cursor: default;
display: inline-block;
font-size: 9px;
}

.legend_cat1:after{
content: "Spectacles";
}
.legend_cat2:after{
content: "Expos";
}
.legend_cat3:after{
content: "Musique";
}
.legend_cat4:after{
content: "4 Saisons";
}
.legend_cat5:after{
content: "Beaux Dimanches";
}
.legend_cat6:after{
content: "Ville Ouverte";
}

L'étape suivante : comment n'afficher que les catégories présentes dans le mois qui est affiché ? Il faudrait rajouter dans le SELECT quelque chose du genre :
"AND catégorie présente du mois courant".

Voici le résultat :

Visitez mon site sur les tutoriels GIMP : www.gimpons.net
Allegati:
Ultima Modifica 10 Anni 7 Mesi fa da fynhooft.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Lyr!C
  • Avatar di Lyr!C
  • Administrator
  • Administrator
  • Lead Developer
Di più
10 Anni 7 Mesi fa - 10 Anni 7 Mesi fa #7410 da Lyr!C
Risposta da Lyr!C al topic Légende dans module calendrier
Bonjour,

Effectivement, j'ai donné un code qui était à remanier et bien sûr, qui n'est pas des plus élégants.
L'option sera (car elle est en développement) intégrée par la suite, avec plus de possibilité, et un code bien plus propre car intégré en partie dans la librairie que je développe pour iCagenda (en faite, je développe en ce moment 2 librairies, une générale et standard, et une dédié à iCagenda. Le but étant bien plus d'efficacité de de performance du code!)

Pour récupérer le filtrage des catégories, essayer cela (votre code modifié) :
// Preparing connection to db
$db		= JFactory::getDbo();
// Preparing the query
$query	= $db->getQuery(true);
$query->select('c.id AS num_cat, c.color AS color, c.title AS title')->from('#__icagenda_category AS c')->where("(c.state = 1)");
$db->setQuery($query);
$list = $db->loadObjectList();

// Va charger la liste des catégories filtrées du module en cours
$categories = $params->get('mcatid');
// vérifie si la valeur est bien un array, sinon, converti en array (car si une seule catégorie, ou aucune sélectionnée, ça peut ne pas être un array)
if (!is_array($categories)) $categories = array($categories);

echo '<div class="legend">';
echo 'Légende : ';
foreach ($list as $cat)
{
	// si catégorie de la requête dans la liste des catégories filtrées, ou si la liste des catégories filtrées est vide (dans ce cas, toutes les catégories seront affichées)	
	if (in_array($cat->id, $categories) OR $categories == array())
	{	
		echo '<span class="legend_cat'.$cat->num_cat.' '.fontColor($cat->color).'" style="background:'.$cat->color.'" ></span>';
		// echo  $cat->title;
	}
}
echo '</div>';

Non testé, mais devrait fonctionner, et filtrer tout comme l'option du module.

Tenez moi au courant si cela fonctionne bien !

Merci!
Cyril

Latest version : iCagenda 3.9.8
We recommend every user to keep iCagenda updated.
Don't forget to have your Joomla!™ up-to-date!

Do you like iCagenda?
I would appreciate if you could take 5 minutes to post a review on JED (Joomla Extensions Directory) .

File allegato:

Ultima Modifica 10 Anni 7 Mesi fa da Lyr!C.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • fynhooft
  • Avatar di fynhooft Autore della discussione
  • Junior Member
  • Junior Member
Di più
10 Anni 7 Mesi fa #7418 da fynhooft
Risposta da fynhooft al topic Légende dans module calendrier
Bonjour,

La ligne :
$categories = $params->get('mcatid');

semble ne renvoyer aucune donnée.

Ne faut-il pas modifier la requete SQL avec quelque chose comme :
select id, color , title
from #__icagenda_category
where state = 1
AND catid IN (SELECT DISTINCT catid from #__icagenda_events
WHERE mois-et-année(datestart) = mois-et-année affiché
OR mois-et-année(dateend) = mois-et-année affiché
)

Comment récupérer le mois (et l'année) affiché dans le module ?

Visitez mon site sur les tutoriels GIMP : www.gimpons.net

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Lyr!C
  • Avatar di Lyr!C
  • Administrator
  • Administrator
  • Lead Developer
Di più
10 Anni 7 Mesi fa #7440 da Lyr!C
Risposta da Lyr!C al topic Légende dans module calendrier
Bonjour,

Je pensais que vous vouliez filtrer en fonction des catégories sélectionnées dans l'option du module...

Si j'ai suivi, vous voulez afficher les catégories des évènements du mois affiché ?

Si oui, ce n'est pas possible via le thème pack.
Car l'affichage de la navigation est une fonction complète, générée à partir du code source du module, qui met à jour le mois et l'année après le clic (détecté par un script).

Cyril

Latest version : iCagenda 3.9.8
We recommend every user to keep iCagenda updated.
Don't forget to have your Joomla!™ up-to-date!

Do you like iCagenda?
I would appreciate if you could take 5 minutes to post a review on JED (Joomla Extensions Directory) .

File allegato:

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • fynhooft
  • Avatar di fynhooft Autore della discussione
  • Junior Member
  • Junior Member
Di più
10 Anni 7 Mesi fa #7454 da fynhooft
Risposta da fynhooft al topic Légende dans module calendrier

Lyr!C ha scritto: Si j'ai suivi, vous voulez afficher les catégories des évènements du mois affiché ?
Cyril


Effectivement, c'est ce que je voulais.

Finalement, j'ai laissé toutes les catégories mais j'ai rajouté un lien sur chacune qui affiche les évènements de la catégorie associée. C'est encore mieux.

Merci encore pour toutes les infos fournies.

Visitez mon site sur les tutoriels GIMP : www.gimpons.net
Ringraziano per il messaggio: Lyr!C

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Lyr!C
  • Avatar di Lyr!C
  • Administrator
  • Administrator
  • Lead Developer
Di più
10 Anni 7 Mesi fa #7482 da Lyr!C
Risposta da Lyr!C al topic Légende dans module calendrier
De rien!

En espérant que ça ai pu vous dépanné en attendant que je puisse intégrer quelque chose dans ce style officiellement.

Bien cordialement,
Cyril

Latest version : iCagenda 3.9.8
We recommend every user to keep iCagenda updated.
Don't forget to have your Joomla!™ up-to-date!

Do you like iCagenda?
I would appreciate if you could take 5 minutes to post a review on JED (Joomla Extensions Directory) .

File allegato:

Si prega Accedi o Crea un account a partecipare alla conversazione.

Moderatori: Lyr!C
Tempo creazione pagina: 0.270 secondi

 

Follow Us

Create your Joomla templates with Template Creator CK

acymailing logo new