Personnalisation GCalendar pour Joomla
Posté : 24 oct. 2011, 12:19
Bonjour,
J'ai installé le composant GCalendar sur un site sous joomla 1.5, ainsi que ses modules et plugins.
Ce qui m'intéresse avant tout avec cet outil ce sont les possibilités de synchronisation et de centralisation des infos.
J'ai ensuite tatonné pour l'adapter mieux à mon utilisation, mais je sèche sur quelques points...
1. La vue "gcalendar" classique que ce soit par jour semaine ou mois ne m'intéresse pas. J'aimerai avoir une liste de type "mon planning" dans google agenda avec donc uniquement les dates "occupée". J'ai donc pensé qu'il serait surement possible d'utiliser les codes du module "gcalendar upcoming" pour les substituer à cette vue "gcalendar".
Hors mes bien maigres compétences m'empêche de savoir comment m'y prendre ...
2. Le module précédemment cité "gcalendar upcoming" m'affiche sur la droite un rappel des 5 prochains événements. Je l'ai configuré comme je le souhaitais. Mais concernant l'affichage, ça laisse un peu à désirer : en fonction de la longueur des titres des événements les espaces ne sont pas les mêmes. Y a t-il la possibilité de rendre ça plus propre ?
3. Enfin, lorsque l'on clique sur un événement via le menu gcalendar, celui ci s'affiche en popup, et la mise en page me convient plutôt. Par contre si on clique via le module "gcalendar upcoming", l'événement s'affiche normalement. Hors dans ce cas, depuis que j'ai changé les attributs du titre de l'événement (plus gros et en couleur), tout le bloc des infos s'est décalé sur la droite, ce qui n'est pas très beau...
Voilà !
Si quelqu'un veut/peut m'aider :
lien pour télécharger gcalendar (j'utilise donc le composant et le module upcoming)
lien vers le calendrier du site en question
Par contre comme se n'est pas au point, pour avoir accès à l'agenda il faut se connecter avec les identifiants suivants : id=forum / mdp=forum
Pour ce qui est des fichiers modifiés (3ème point) je vous copie en fin de message les versions que j'utilise.
Merci d'avance à tous !
/com_gcalendar/hiddenviews/event/tmpl/default.php :
J'ai installé le composant GCalendar sur un site sous joomla 1.5, ainsi que ses modules et plugins.
Ce qui m'intéresse avant tout avec cet outil ce sont les possibilités de synchronisation et de centralisation des infos.
J'ai ensuite tatonné pour l'adapter mieux à mon utilisation, mais je sèche sur quelques points...
1. La vue "gcalendar" classique que ce soit par jour semaine ou mois ne m'intéresse pas. J'aimerai avoir une liste de type "mon planning" dans google agenda avec donc uniquement les dates "occupée". J'ai donc pensé qu'il serait surement possible d'utiliser les codes du module "gcalendar upcoming" pour les substituer à cette vue "gcalendar".
Hors mes bien maigres compétences m'empêche de savoir comment m'y prendre ...
2. Le module précédemment cité "gcalendar upcoming" m'affiche sur la droite un rappel des 5 prochains événements. Je l'ai configuré comme je le souhaitais. Mais concernant l'affichage, ça laisse un peu à désirer : en fonction de la longueur des titres des événements les espaces ne sont pas les mêmes. Y a t-il la possibilité de rendre ça plus propre ?
3. Enfin, lorsque l'on clique sur un événement via le menu gcalendar, celui ci s'affiche en popup, et la mise en page me convient plutôt. Par contre si on clique via le module "gcalendar upcoming", l'événement s'affiche normalement. Hors dans ce cas, depuis que j'ai changé les attributs du titre de l'événement (plus gros et en couleur), tout le bloc des infos s'est décalé sur la droite, ce qui n'est pas très beau...
Voilà !
Si quelqu'un veut/peut m'aider :
lien pour télécharger gcalendar (j'utilise donc le composant et le module upcoming)
lien vers le calendrier du site en question
Par contre comme se n'est pas au point, pour avoir accès à l'agenda il faut se connecter avec les identifiants suivants : id=forum / mdp=forum
Pour ce qui est des fichiers modifiés (3ème point) je vous copie en fin de message les versions que j'utilise.
Merci d'avance à tous !
/com_gcalendar/hiddenviews/event/tmpl/default.php :
<?php
/**
* GCalendar is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GCalendar is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GCalendar. If not, see <http://www.gnu.org/licenses/>.
*
* @author Allon Moritz
* @copyright 2007-2010 Allon Moritz
* @since 2.2.0
*/
defined('_JEXEC') or die('Restricted access');
require_once (JPATH_ADMINISTRATOR.DS.'components'.DS.'com_gcalendar'.DS.'util.php');
$event = $this->event;
$itemID = GCalendarUtil::getItemId(JRequest::getVar('gcid', null));
if(!empty($itemID) && JRequest::getVar('tmpl', null) != 'component'){
$component = &JComponentHelper::getComponent('com_gcalendar');
$menu = &JSite::getMenu();
$item = $menu->getItem($itemID);
if($item !=null){
$backLinkView = $item->query['view'];
$dateHash = '';
if($backLinkView == 'gcalendar'){
$day = strftime('%d', $event->get_start_date());
$month = strftime('%m', $event->get_start_date());
$year = strftime('%Y', $event->get_start_date());
$dateHash = '#year='.$year.'&month='.$month.'&day='.$day;
}
echo "<table><tr><td valign=\"middle\">\n";
echo '<a href="'.JRoute::_('index.php?option=com_gcalendar&Itemid='.$itemID.$dateHash)."\">\n";
echo "<img id=\"prevBtn_img\" height=\"16\" border=\"0\" width=\"16\" alt=\"backlink\" src=\"components/com_gcalendar/images/back.png\"/>\n";
echo "</a></td><td valign=\"middle\">\n";
echo '<a href="'.JRoute::_('index.php?option=com_gcalendar&Itemid='.$itemID.$dateHash).'">'.JText::_( 'CALENDAR_BACK_LINK' )."</a>\n";
echo "</td></tr></table>\n";
}
}
if($event == null){
echo "no event found";
}else{
// the date formats from http://php.net/strftime
$dateformat = GCalendarUtil::getComponentParameter('event_date_format', '%d.%m.%Y');
$timeformat = GCalendarUtil::getComponentParameter('event_time_format', '%H:%M');
// These are the dates we'll display
$startDate = GCalendarUtil::strftime($dateformat, $event->get_start_date());
$startTime = GCalendarUtil::strftime($timeformat, $event->get_start_date());
$endDate = GCalendarUtil::strftime($dateformat, $event->get_end_date());
$endTime = GCalendarUtil::strftime($timeformat, $event->get_end_date());
$dateSeparator = '-';
$timeString = $startTime.' '.$startDate.' '.$dateSeparator.' '.$endTime.' '.$endDate;
$copyDateTimeFormat = '%Y%m%d';
switch($event->get_day_type()){
case $event->SINGLE_WHOLE_DAY:
$timeString = $startDate;
$copyDateTimeFormat = '%Y%m%d';
break;
case $event->SINGLE_PART_DAY:
$timeString = $startDate.' '.$startTime.' '.$dateSeparator.' '.$endTime;
$copyDateTimeFormat = '%Y%m%dT%H%M%S';
break;
case $event->MULTIPLE_WHOLE_DAY:
$SECSINDAY=86400;
$endDate = strftime($dateformat, $event->get_end_date()-$SECSINDAY);
$timeString = $startDate.' '.$dateSeparator.' '.$endDate;
$copyDateTimeFormat = '%Y%m%d';
break;
case $event->MULTIPLE_PART_DAY:
$timeString = $startTime.' '.$startDate.' '.$dateSeparator.' '.$endTime.' '.$endDate;
$copyDateTimeFormat = '%Y%m%dT%H%M%S';
break;
}
$document =& JFactory::getDocument();
$document->addStyleSheet(JURI::base().'components/com_gcalendar/hiddenviews/event/tmpl/default.css');
$feed = $event->get_feed();
echo "<div class=\"event_content\"><table id=\"content_table\">\n";
if(GCalendarUtil::getComponentParameter('show_calendar_name', 1) == 1){
echo "<tr><td class=\"event_content_key\">".JText::_( 'CALENDAR_NAME' ).": </td><td>".$feed->get('gcname')."</td></tr>\n";
}
if(GCalendarUtil::getComponentParameter('show_event_title', 1) == 1){
echo "<tr><td class=\"event_content_key\">".JText::_( 'EVENT_TITLE' ).": </td><td class=\"event_title_key\">".$event->get_title()."</td></tr>\n";
}
if(GCalendarUtil::getComponentParameter('show_event_date', 1) == 1){
echo "<tr><td class=\"event_content_key\">".JText::_( 'WHEN' ).": </td><td>".$timeString."</td></tr>\n";
}
if(GCalendarUtil::getComponentParameter('show_event_attendees', 2) == 1){
$attendeesString = '';
foreach ($event->get_attendees() as $a) {
$attendeesString .= $a['value']." <a href=\"javascript:sdafgkl437jeeee('".base64_encode(str_replace('@','#',$a['email']))."')\"><img height=\"11\" border=\"0\" width=\"16\" alt=\"email\" src=\"components/com_gcalendar/images/mail.png\"/></a>,";
}
$attendeesString = rtrim($attendeesString, ',');
echo "<tr><td class=\"event_content_key\">".JText::_( 'ATTENDEES' ).": </td><td style=\"valign:top\">".$attendeesString."</td></tr>\n";
}
$desc = preg_replace("@(src|href)=\"https?://@i",'\\1="',$event->get_description());
if(GCalendarUtil::getComponentParameter('show_event_description', 1) == 1 && !empty($desc)) {
echo "<tr><td class=\"event_content_key\">".JText::_( 'DESCRIPTION' ).": </td><td>".
htmlspecialchars_decode(nl2br(preg_replace("@(((f|ht)tp:\/\/)[^\"\'\>\s]+)@",'<a href="\\1" target="_blank">\\1</a>', $desc)))."</td></tr>\n";
}
if(GCalendarUtil::getComponentParameter('show_event_author', 2) == 1){
$authors = $event->get_authors();
if(count($authors)>0){
$document->addScript(JURI::base().'components/com_gcalendar/hiddenviews/event/tmpl/default.js');
echo "<tr><td class=\"event_content_key\">".JText::_( 'AUTHOR' ).": </td><td style=\"valign:top\">".$authors[0]->get_name()." <a href=\"javascript:sdafgkl437jeeee('".base64_encode(str_replace('@','#',$authors[0]->get_email()))."')\"><img height=\"11\" border=\"0\" width=\"16\" alt=\"email\" src=\"components/com_gcalendar/images/mail.png\"/></a></td></tr>\n";
}
}
if(GCalendarUtil::getComponentParameter('show_event_copy_info', 1) == 1){
$urlText = 'action=TEMPLATE&text='.urlencode($event->get_title());
$urlText .= '&dates='.strftime($copyDateTimeFormat, $event->get_start_date()).'%2F'.strftime($copyDateTimeFormat, $event->get_end_date());
$urlText .= '&location='.urlencode($event->get_location());
$urlText .= '&details='.urlencode($event->get_description());
$urlText .= '&hl='.GCalendarUtil::getFrLanguage().'&ctz='.GCalendarUtil::getComponentParameter('timezone');
$urlText .= '&sf=true&output=xml';
echo "<tr><td class=\"event_content_key\">".JText::_( 'COPY' ).": </td><td><a target=\"_blank\" href=\"http://www.google.com/calendar/render?".$urlText."\">".JText::_( 'COPY_TO_MY_CALENDAR' )."</a></td></tr>\n";
}
echo "</table></div>\n";
}
if(GCalendarUtil::getComponentParameter('show_event_location', 1) == 1){
$loc = $event->get_location();
if(!empty($loc)){
echo "<tr><td class=\"event_content_key\">".JText::_( 'LOCATION' ).": </td><td>".$loc."</td></tr>\n";
echo "<tr><td colspan=\"2\"><iframe width=\"100%\" height=\"300px\" frameborder=\"0\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" src=\"http://maps.google.com/maps?q=".urlencode($loc)."&output=embed\"></iframe></td></tr>\n";
}
}
echo "<div style=\"text-align:center;margin-top:10px\" id=\"gcalendar_powered\"><a href=\"http://g4j.laoneo.net\">Powered by GCalendar</a></div>\n";
?>
[/code]
et /com_gcalendar/hiddenviews/event/tmpl/default.css :
[code]#content_table {
padding: 10px;
width: 100%;
}
#content_table td {
vertical-align: top;
}
.event_content_key {
font-weight: bold;
width: 30px;
}
.event_title_key {
text-align: left;
font-weight: bold;
font-size: large;
color: #e95e1e;
width: 50px;
}