Main menu

Forum


× Forum d'aide en Français

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

  • fynhooft
  • fynhooft's Avatar Topic Author
  • Junior Member
  • Junior Member
More
10 years 1 week ago - 9 years 11 months ago #7321 by 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
Last edit: 9 years 11 months ago by Lyr!C. Reason: [RÉGLÉ]

Please Log in or Create an account to join the conversation.

  • Lyr!C
  • Lyr!C's Avatar
  • Administrator
  • Administrator
  • Lead Developer
More
10 years 1 week ago #7357 by Lyr!C
Replied by Lyr!C on 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.3
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 Attachment:

Please Log in or Create an account to join the conversation.

  • fynhooft
  • fynhooft's Avatar Topic Author
  • Junior Member
  • Junior Member
More
10 years 6 days ago - 10 years 5 days ago #7381 by fynhooft
Replied by fynhooft on 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
Attachments:
Last edit: 10 years 5 days ago by fynhooft.

Please Log in or Create an account to join the conversation.

  • Lyr!C
  • Lyr!C's Avatar
  • Administrator
  • Administrator
  • Lead Developer
More
10 years 4 days ago - 10 years 4 days ago #7410 by Lyr!C
Replied by Lyr!C on 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.3
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 Attachment:

Last edit: 10 years 4 days ago by Lyr!C.

Please Log in or Create an account to join the conversation.

  • fynhooft
  • fynhooft's Avatar Topic Author
  • Junior Member
  • Junior Member
More
10 years 3 days ago #7418 by fynhooft
Replied by fynhooft on 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

Please Log in or Create an account to join the conversation.

  • Lyr!C
  • Lyr!C's Avatar
  • Administrator
  • Administrator
  • Lead Developer
More
10 years 1 day ago #7440 by Lyr!C
Replied by Lyr!C on 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.3
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 Attachment:

Please Log in or Create an account to join the conversation.

  • fynhooft
  • fynhooft's Avatar Topic Author
  • Junior Member
  • Junior Member
More
10 years 21 hours ago #7454 by fynhooft
Replied by fynhooft on topic Légende dans module calendrier

Lyr!C wrote: 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
The following user(s) said Thank You: Lyr!C

Please Log in or Create an account to join the conversation.

  • Lyr!C
  • Lyr!C's Avatar
  • Administrator
  • Administrator
  • Lead Developer
More
9 years 11 months ago #7482 by Lyr!C
Replied by Lyr!C on 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.3
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 Attachment:

Please Log in or Create an account to join the conversation.

Moderators: Lyr!C
Time to create page: 0.299 seconds

Follow Us

Create your Joomla templates with Template Creator CK

acymailing logo new