Wikini

CalendrieR

PagePrincipale :: DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes ec2-35-172-193-238.compute-1.amazonaws.com
La version de mon wikini à partir de la version 0.1.1.0.3 ( ) :
- J'ai fait un plugin permettant l'affichage d'un calendrier pour un mois. Chaque jour du calendrier pointe sur une page JourAAAAMMJJ?.
- Un autre plugin permet de faire évoluer un paramétre GET day_offset soit par jour, semaine, ou mois. Ca permet de changer le mois courant.
- Un dernier plugin permet l'affichage d'un jour ( comme l'action include), mais prends en compte une date et day_offset.
(je ajouté la gestion des paramètres de manière pas très très propre, mais m'adaption à la version 0.4.1 ne devrait pas être trop dur)

Le tout permet de faire un affichage par semaine, mois, et année assez facilement.

NB: j'ai "simuler" un url_rewrite avec un ErrorDocument? dans un .htaccess, et transformer tous les formulaires post en get.
-- AlexandreF

Je vais regarder tout ça : ça à l'air très intéressant... -- CharlesNepote

Ca m'intéresse aussi : AlexandreF peux-tu publier ton plugin Calendrier ? -- Christophe

J'ai mis les sources avec quelques commentaires içi : http://a.flament.free.fr/wiki/WikiPlugins -- AlexandreF

AlexandreF : extra ... et moi qui allait installer WebCalendar? ;-) ... question bête : l'agenda 2005 a t'il déjà été créé ? Si oui ... ça m'interesse !
(riri06 qui va se lancer dans l'aventure wikini)

calendrier
J'ai installé un calendrier trouvé sur le web ( l'auteur peut se signaler s'il se reconnaît. Merci) il y a longtemps en modifiant l'affichage des jours pour qu'il indique un lien vers la page de ce jour.
<?php
/*  calendrier.php 
... GNU GPL........
*/
// calendrier choix=dujour/variable//semaine/mois/year//
// $nom = $this->GetParameter("nom");
// if (empty($nom)) 
*/
$nomtag $this->getPageTag() ;

$cemois $this->GetParameter("mois");
$cetan $this->GetParameter("an");

$cal = new calendrier ;
$cal->setStartDay(1) ;

if (empty(
$cemois) and !empty($cetan)) {
echo 
$cal-> getYearView($cetan,$nomtag);
}
else {
if (empty(
$cemois)) $cemois date("m");
if (empty(
$cetan)) $cetan date("Y");
echo 
$cal->getMonthView($cemois$cetan,$nomtag );
}

/*************************************************** 
$year = date("Y");
$now   = date("Y/m/d");
$month  = date("m");        m et non n !!
$day = date("d");             d et non 
********************
$data=explode(" ",$dt);
$year=$data[0];
$month=$data[1];
$day=$data[2];
$now=date("Y/m/d", mktime(0,0,0,$month,$day,$year));

/***********/
class calendrier
{
   var 
$startDay 0;
   var 
$startMonth 1;
   var 
$dayNames = array("D""L""M""M""J""V""S");
   var 
$monthNames = array("Janvier""F&eacute;vrier""Mars""Avril""Mai""Juin","Juillet""Ao&ucirc;t""Septembre""Octobre""Novembre""Decembre");
   var 
$daysInMonth = array(312831303130313130313031);
  
    function 
Calendar() { }
  
    function 
getDayNames() { return $this->dayNames; } 
    function 
setDayNames($names)   {   $this->dayNames $names; }
    
    function 
getMonthNames() {   return $this->monthNames;   }
    function 
setMonthNames($names) {  $this->monthNames $names;}
   
    function 
getStartDay() {return $this->startDay;  }
    function 
setStartDay($day) { $this->startDay $day;}
  
    function 
getStartMonth() {  return $this->startMonth;  }
    function 
setStartMonth($month) {  $this->startMonth $month;  }
   
/************************************************/
    
function getCalendarLink($month$year$nomtag ){
    if(
$month<10)$month="0".$month;
    
$tag "wakka.php?wiki=".$nomtag ."An".$year."Mois".$month;   
    return 
$tag ;
    }
    function 
getDateLink($day$month$year,$nomtag )  { 
    if(
$day<10$day="0".$day
   
$tag "wakka.php?wiki="$nomtag ."An".$year."Mois".$month."Jour".$day ;
   return 
$tag ;
    }
    
/******************************************************/
    
function getCurrentMonthView($nomtag) {
        
$d getdate(time());
        return 
$this->getMonthView($d["mon"], $d["year"],$nomtag);
    }
    function 
getCurrentYearView($nomtag)  {
        
$d getdate(time());
        return 
$this->getYearView($d["year"],$nomtag);
    }
    function 
getMonthView($month$year,$nomtag)  { return $this->getMonthHTML($month$year,$nomtag ); }
    function 
getYearView($year,$nomtag ) { return $this->getYearHTML($year,$nomtag );  }

    function 
getDaysInMonth($month$year)  {
        if (
$month || $month 12) {
            return 
0;
        }
        
$d $this->daysInMonth[$month 1];
        if (
$month == 2) {
           if (
$year%== 0) {
                if (
$year%100 == 0)  {
                    if (
$year%400 == 0)  {
                        
$d 29;
                    }
                }
                else {
                    
$d 29;
                }
            }
        }   
        return 
$d;
    }

    function 
getMonthHTML($m$y,$nomtag $showYear 1) {
        
$s "";
        
$a $this->adjustDate($m$y);
        
$month $a[0];
        
$year $a[1];        
        
$daysInMonth $this->getDaysInMonth($month$year);
        
$date getdate(mktime(1200$month1$year));
        
$first $date["wday"];
        
$monthName $this->monthNames[$month 1];
        
$prev $this->adjustDate($month 1$year);
        
$next $this->adjustDate($month 1$year);
        
        if (
$showYear == 1) {
            
$prevMonth $this->getCalendarLink($prev[0], $prev[1], $nomtag);
            
$nextMonth $this->getCalendarLink($next[0], $next[1], $nomtag);
        }
        else {
            
$prevMonth "";
            
$nextMonth "";
        }
      
          
$header $monthName . (($showYear 0) ? " " $year "");  
        
        
$s .= "<table class=\"calendrier\">\n";
        
$s .= "<tr>\n";
        
$s .= "<td align=\"center\" valign=\"top\">" . (($prevMonth == "") ? "&nbsp;" "<a href=\"$prevMonth\">&lt;&lt;</a>")  . "</td>\n";
        
$s .= "<td align=\"center\" valign=\"top\" class=\"calendrierHeader\" colspan=\"5\">$header</td>\n";  
        
$s .= "<td align=\"center\" valign=\"top\">" . (($nextMonth == "") ? "&nbsp;" "<a href=\"$nextMonth\">&gt;&gt;</a>")  . "</td>\n";
        
$s .= "</tr>\n";
        
        
$s .= "<tr>\n";
        
$s .= "<td align=\"center\" valign=\"top\" class=\"calendrierHeader\">" $this->dayNames[($this->startDay)%7] . "</td>\n";
        
$s .= "<td align=\"center\" valign=\"top\" class=\"calendrierHeader\">" $this->dayNames[($this->startDay+1)%7] . "</td>\n";
        
$s .= "<td align=\"center\" valign=\"top\" class=\"calendrierHeader\">" $this->dayNames[($this->startDay+2)%7] . "</td>\n";
        
$s .= "<td align=\"center\" valign=\"top\" class=\"calendrierHeader\">" $this->dayNames[($this->startDay+3)%7] . "</td>\n";
        
$s .= "<td align=\"center\" valign=\"top\" class=\"calendrierHeader\">" $this->dayNames[($this->startDay+4)%7] . "</td>\n";
        
$s .= "<td align=\"center\" valign=\"top\" class=\"calendrierHeader\">" $this->dayNames[($this->startDay+5)%7] . "</td>\n";
        
$s .= "<td align=\"center\" valign=\"top\" class=\"calendrierHeader\">" $this->dayNames[($this->startDay+6)%7] . "</td>\n";
        
$s .= "</tr>\n";
        
        
$d $this->startDay $first;
        while (
$d 1) {
            
$d -= 7;
        }

        
$today getdate(time());
        
        while (
$d <= $daysInMonth) {
            
$s .= "<tr>\n";       
            
            for (
$i 0$i 7$i++) {
                
$class = ($year == $today["year"] && $month == $today["mon"] && $d == $today["mday"]) ? "calendrierToday" "calendar";
                
$s .= "<td class=\"$class\" align=\"right\" valign=\"top\">";       
                if (
$d && $d <= $daysInMonth) {
                    
$link $this->getDateLink($d$month$year,$nomtag);
                    
$s .= (($link == "") ? $d "<a href=\"$link\">$d</a>");
                }
                else {
                    
$s .= "&nbsp;";
                }
                  
$s .= "</td>\n";       
                
$d++;
            }
            
$s .= "</tr>\n";    
        }
        
        
$s .= "</table>\n";
        
        return 
$s;      
    }
  
    function 
getYearHTML($year$nomtag ) {
        
$s "";
        
$prev $this->getCalendarLink(0$year 1,$nomtag);
        
$next $this->getCalendarLink(0$year 1,$nomtag);
        
        
$s .= "<table class=\"calendrier\" border=\"0\">\n";
        
$s .= "<tr>";
        
$s .= "<td align=\"center\" valign=\"top\" align=\"left\">" . (($prev == "") ? "&nbsp;" "<a href=\"$prev\">&lt;&lt;</a>")  . "</td>\n";
        
$s .= "<td class=\"calendarHeader\" valign=\"top\" align=\"center\">" . (($this->startMonth 1) ? $year " - " . ($year 1) : $year) ."</td>\n";
        
$s .= "<td align=\"center\" valign=\"top\" align=\"right\">" . (($next == "") ? "&nbsp;" "<a href=\"$next\">&gt;&gt;</a>")  . "</td>\n";
        
$s .= "</tr>\n";
        
$s .= "<tr>";
        
$s .= "<td class=\"calendrier\" valign=\"top\">" $this->getMonthHTML($this->startMonth$year$nomtag0) ."</td>\n";
        
$s .= "<td class=\"calendrier\" valign=\"top\">" $this->getMonthHTML($this->startMonth$year,$nomtag0) ."</td>\n";
        
$s .= "<td class=\"calendrier\" valign=\"top\">" $this->getMonthHTML($this->startMonth$year,$nomtag0) ."</td>\n";
        
$s .= "</tr>\n";
        
$s .= "<tr>\n";
        
$s .= "<td class=\"calendrier\" valign=\"top\">" $this->getMonthHTML($this->startMonth$year,$nomtag0) ."</td>\n";
        
$s .= "<td class=\"calendrier\" valign=\"top\">" $this->getMonthHTML($this->startMonth$year$nomtag,0) ."</td>\n";
        
$s .= "<td class=\"calendrier\" valign=\"top\">" $this->getMonthHTML($this->startMonth$year,$nomtag0) ."</td>\n";
        
$s .= "</tr>\n";
        
$s .= "<tr>\n";
        
$s .= "<td class=\"calendrier\" valign=\"top\">" $this->getMonthHTML($this->startMonth$year,$nomtag0) ."</td>\n";
        
$s .= "<td class=\"calendrier\" valign=\"top\">" $this->getMonthHTML($this->startMonth$year,$nomtag0) ."</td>\n";
        
$s .= "<td class=\"calendrier\" valign=\"top\">" $this->getMonthHTML($this->startMonth$year$nomtag,0) ."</td>\n";
        
$s .= "</tr>\n";
        
$s .= "<tr>\n";
        
$s .= "<td class=\"calendrier\" valign=\"top\">" $this->getMonthHTML($this->startMonth$year$nomtag,0) ."</td>\n";
        
$s .= "<td class=\"calendrier\" valign=\"top\">" $this->getMonthHTML(10 $this->startMonth$year,$nomtag0) ."</td>\n";
        
$s .= "<td class=\"calendrier\" valign=\"top\">" $this->getMonthHTML(11 $this->startMonth$year,$nomtag0) ."</td>\n";
        
$s .= "</tr>\n";
        
$s .= "</table>\n";
        
        return 
$s;
    }

    function 
adjustDate($month$year) {
        
$a = array();  
        
$a[0] = $month;
        
$a[1] = $year;
        while (
$a[0] > 12) {
            
$a[0] -= 12;
            
$a[1]++;
        }
        while (
$a[0] <= 0) {
            
$a[0] += 12;
            
$a[1]--;
        }
        return 
$a;
    }
}

?>


ce script fonctionne, mais n'autorise qu'un seul calendrier par page.
La syntaxe est :

{{calendrier}} calendrier du mois courant
{{calendrier an="1985"}} calendrier du mois courant de l'année 1985
{{calendrier mois="03"}} calendrier du mois de mars de cette année
{{calendrier mois="03" an="1985"}} calendrier du mois de mars de l'année 1985
permet de lire le calendrier et de pouvoir (en cliquant sur celui-ci ) créer la page du jour , NomPageAn2004Mois4Jour28, du mois précédent (en cliquant sur <<), du mois suivant (en cliquant sur >>) NomPageAn2004Mois4. Ces pages commencent par le nom de la page sur laquelle se trouve le calendrier.
NB : un seul calendrier demandé par page.

Encore un grand bravo aux auteurs de scripts php !

Une deuxième action "agréger" utilisée pour regrouper des recherches permet

{{agreger debut="telnomaudebut" sens="desc/asc" nombre="n" composantes="oui"}}
{{agreger ayant ="telnomaumilieu" sens="desc/asc" nombre="n" composantes="oui"}}
{{agreger fin="telnomàlafin" sens="desc/asc" nombre="n" composantes="oui"}}
{{agreger sens="desc/asc" nombre="n" composantes="oui"}} (id nomaffichéaudébut)
sens par défaut : descendant nombre-limite facultatif
composantes="oui" : pour afficher les valeurs des composantes

NB {{agreger debut="temps" }} inscrit dans une page et hop ! vous avez un blog !!!!
{{agreger debut="temps" nombre="7"}} inscrit dans une page et hop ! vous avez le blog des sept derniers jours!!!! (si vous avez construit une page "temps" avec calendrier et construite quelques pages correspondant aux jours où vous étiez bavard ;-) )

2004-05-20 -- 14 : 59 -- FidelioEspoir
Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]