Changeset 53019 in spip-zone


Ignore:
Timestamp:
Oct 8, 2011, 4:32:12 PM (9 years ago)
Author:
julienlfy@…
Message:

Ré-écriture du plugin pour SPIP-3. 1er jet !

Location:
_plugins_/simple_calendrier/trunk
Files:
36 added
18 deleted
17 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/simple_calendrier/trunk/action/editer_evenement.php

    r51309 r53019  
    11<?php
     2
     3/***************************************************************************\
     4 *  SPIP, Systeme de publication pour l'internet                           *
     5 *                                                                         *
     6 *  Copyright (c) 2001-2011                                                *
     7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
     8 *                                                                         *
     9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
     10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
     11\***************************************************************************/
     12
     13if (!defined("_ECRIRE_INC_VERSION")) return;
     14
     15function action_editer_evenement_dist($arg=null) {
     16
     17        if (is_null($arg)){
     18                $securiser_action = charger_fonction('securiser_action', 'inc');
     19                $arg = $securiser_action();
     20        }
     21
     22        // Envoi depuis le formulaire d'edition d'un evenement
     23        if (!$id_evenement = intval($arg)) {
     24                $id_evenement = evenement_inserer(_request('id_parent'));
     25        }
     26
     27        if (!$id_evenement)
     28                return array(0,''); // erreur
     29
     30        $err = evenement_modifier($id_evenement);
     31
     32        return array($id_evenement,$err);
     33}
     34
    235/**
    3  * Plugin Simple Calendrier pour Spip 2.1.2
    4  * Licence GPL (c) 2010-2011 Julien Lanfrey
    5  *
     36 * Inserer un evenement en base
     37 *
     38 * @param int $id_rubrique
     39 * @return int
    640 */
    7 
    8 if (!defined("_ECRIRE_INC_VERSION")) return;
    9 
    10 
    11 /*      On trouve ici les fonctions 'action' appelees par le formulaire         */
    12 /*      'editer_evenement' : insertion d'un nouvel evenement, revision          */
    13 /*      d'un evenement existant...                                              */
    14 
    15 if (!defined("_ECRIRE_INC_VERSION")) return;
    16 
    17 // Edition ? Revision ?
    18 function action_editer_evenement() {
    19 
    20     $securiser_action = charger_fonction('securiser_action', 'inc');
    21 
    22     // Test si autorisation pour les actions d'edition
    23     $arg = $securiser_action();
    24 
    25     // bloc 'statut' depuis evenement_voir
    26     if ($id_evenement = intval($arg)) {         
    27         // Si cet evenement possede un 'id', alors il n'est pas nouveau
    28         // Effectuons donc une revision plutot qu'une edition.
    29         revisions_evenements($id_evenement);
    30     }
    31 
    32     // Envoi depuis le formulaire de creation d'un evenement
    33     else if ($arg == 'oui') {
    34         $id_evenement = insert_evenement();
    35         if ($id_evenement) revisions_evenements($id_evenement);
    36     }
    37     // Erreur
    38     else{
    39         // Si nous sommes dans aucun des cas precedents, alors on  a un probleme : renvoyons une erreur.
    40         include_spip('inc/headers');
    41         redirige_url_ecrire();
    42     }
    43 
    44     // Redirection suite au changement de statut
    45     if (_request('redirect')) {
    46         $redirect = parametre_url(urldecode(_request('redirect')), 'id_evenement', $id_evenement, '&');
    47         include_spip('inc/headers');
    48         redirige_par_entete($redirect);
    49     }
    50     else
    51         // Sinon on se contente de renvoyer l'id de l'objet
    52         // (Utile par exemple pour une creation, ou la redirection est geree en amont)
    53         return array($id_evenement,'');
    54 
    55 }
    56 
    57 // Cette fonction ne sert en fait qu'a ajouter une nouvelle ligne dans la table,
    58 // elle y insert juste la date du jour, puis retourne
    59 // l'id de la ligne creee. Le reste la fonction
    60 // revision_evenement s'en occupe.
    61 function insert_evenement() {
    62 
    63     spip_log("Création d'un nouvel evenement dans la base", "simplecal");
    64     return sql_insertq("spip_evenements", array('date' => date('Y-m-d')));
    65 
    66 }
    67 
    68 
    69 // Enregistre une revision d'evenement
    70 // $c est un contenu (par defaut on prend le contenu via _request())
    71 function revisions_evenements($id_evenement, $c=false) {
    72 
    73     // ** Champs normaux **
    74     if ($c === false) {
    75         // Pour contenir les nouvelles valeurs des differents champs
    76         $c = array();
    77        
    78         $les_champs = array('titre', 'date_debut', 'date_fin', 'lieu', 'descriptif', 'texte', 'statut');
    79         foreach ($les_champs as $champ) {
    80             $a = _request($champ);
    81             if ($a !== null) {
    82                 $c[$champ] = $a;
    83             }
    84         }
    85     }
    86 
    87     // Si l'evenement est publie, invalider les caches et demander sa reindexation
    88     $t = sql_getfetsel("statut", "spip_evenements", "id_evenement=$id_evenement");
    89     if ($t == 'publie') {
    90         $invalideur = "id='id_evenement/$id_evenement'";
    91         $indexation = true;
    92     }
    93 
    94     include_spip('inc/modifier');
    95     modifier_contenu('evenement', $id_evenement,
    96         array(
    97             'nonvide' => array('titre' => _T('info_sans_titre')),
    98             'invalideur' => $invalideur,
    99             'indexation' => $indexation
    100         ),
    101         $c);
    102 
    103 
    104     // Un cas special : changer le statut ?
    105     // On recupere le statut courant
    106     $row = sql_fetsel("statut", "spip_evenements", "id_evenement=$id_evenement");
    107     $statut_ancien = $statut = $row['statut'];
    108     // Si un nouveau statut est demande, ET qu'il est different de l'actuel,
    109     if (_request('statut', $c) AND _request('statut', $c) != $statut) {
    110         $statut = $champs['statut'] = _request('statut', $c);
    111        
    112         // changement de la date de publication
    113         if ($champs['statut'] == 'publie') {
    114             $date_now = date('Y-m-d H:i:s');
    115             $champs['date'] = $date_now;
    116         }       
    117     }
    118 
    119 // ** Rendre effective la revision **
    120     // Si le tableau contenant les nouvelles valeurs est vide (rien a changer),
    121     // alors c'est termine !
    122     if (!$champs) return;
    123 
    124     // Si l'etape precedente est passee, alors on a des choses a faire.
    125     // On demande simplement une mise a jour de la table avec les nouvelles valeurs ($champs)
    126     sql_updateq('spip_evenements', $champs, "id_evenement=$id_evenement");
    127 
    128 // ** Post-modifications **
    129     // Invalider les caches
    130     include_spip('inc/invalideur');
    131     suivre_invalideur("id='id_evenement/$id_evenement'");
    132 
    133 }
    134 
    135 
     41function evenement_inserer($id_rubrique) {
     42
     43        include_spip('inc/rubriques');
     44
     45        // Si id_rubrique vaut 0 ou n'est pas definie, creer l'evenement
     46        // dans la premiere rubrique racine
     47        if (!$id_rubrique = intval($id_rubrique)) {
     48                $id_rubrique = sql_getfetsel("id_rubrique", "spip_rubriques", "id_parent=0",'', '0+titre,titre', "1");
     49        }
     50
     51        // La langue a la creation : c'est la langue de la rubrique
     52    // TODO JULIEN : si pas de rubrique => langue par defaut du site
     53        $row = sql_fetsel("lang, id_secteur", "spip_rubriques", "id_rubrique=$id_rubrique");
     54        $lang = $row['lang'];
     55        $id_rubrique = $row['id_secteur']; // garantir la racine
     56
     57        $champs = array(
     58                'id_rubrique' => $id_rubrique,
     59                'statut' => 'prop',
     60                'date' => date('Y-m-d H:i:s'),
     61                'lang' => $lang,
     62                'langue_choisie' => 'non');
     63       
     64        // Envoyer aux plugins
     65        $champs = pipeline('pre_insertion',
     66                array(
     67                        'args' => array(
     68                                'table' => 'spip_evenements',
     69                        ),
     70                        'data' => $champs
     71                )
     72        );
     73        $id_evenement = sql_insertq("spip_evenements", $champs);
     74        pipeline('post_insertion',
     75                array(
     76                        'args' => array(
     77                                'table' => 'spip_evenements',
     78                                'id_objet' => $id_evenement
     79                        ),
     80                        'data' => $champs
     81                )
     82        );
     83        return $id_evenement;
     84}
     85
     86
     87/**
     88 * Modifier un evenement en base
     89 * $c est un contenu (par defaut on prend le contenu via _request())
     90 *
     91 * http://doc.spip.org/@revisions_breves
     92 *
     93 * @param int $id_evenement
     94 * @param array $set
     95 * @return
     96 */
     97function evenement_modifier ($id_evenement, $set=null) {
     98
     99        include_spip('inc/modifier');
     100        $c = collecter_requests(
     101                // white list
     102                array('titre', 'date_debut', 'date_fin', 'lieu', 'descriptif', 'texte'),
     103                // black list
     104                array('id_parent', 'statut'),
     105                // donnees eventuellement fournies
     106                $set
     107        );
     108
     109        // Si l'evenement est publiee, invalider les caches et demander sa reindexation
     110        $t = sql_getfetsel("statut", "spip_evenements", "id_evenement=$id_evenement");
     111        if ($t == 'publie') {
     112                $invalideur = "id='evenement/$id_evenement'";
     113                $indexation = true;
     114        }
     115
     116        modifier_contenu('evenement', $id_evenement,
     117                array(
     118                        'nonvide' => array('titre' => _T('info_sans_titre')),
     119                        'invalideur' => $invalideur,
     120                        'indexation' => $indexation
     121                ),
     122                $c);
     123
     124        $c = collecter_requests(array('id_parent', 'statut'),array(),$set);
     125        $err = evenement_instituer($id_evenement, $c);
     126        return $err;
     127}
     128
     129/**
     130 * Instituer un evenement : modifier son statut ou son parent
     131 *
     132 * @param int $id_evenement
     133 * @param array $c
     134 * @return string
     135 */
     136function evenement_instituer($id_evenement, $c) {
     137        $champs = array();
     138
     139        // Changer le statut de l'evenement ?
     140        $row = sql_fetsel("statut, id_rubrique, lang, langue_choisie", "spip_evenements", "id_evenement=".intval($id_evenement));
     141        $id_rubrique = $row['id_rubrique'];
     142
     143        $statut_ancien = $statut = $row['statut'];
     144        $langue_old = $row['lang'];
     145        $langue_choisie_old = $row['langue_choisie'];
     146
     147        if ($c['statut']
     148        AND $c['statut'] != $statut
     149        AND autoriser('publierdans', 'rubrique', $id_rubrique)) {
     150                $statut = $champs['statut'] = $c['statut'];
     151        }
     152
     153        // Changer de rubrique ?
     154        // Verifier que la rubrique demandee est a la racine et differente
     155        // de la rubrique actuelle
     156        if ($id_parent = intval($c['id_parent'])
     157        AND $id_parent != $id_rubrique
     158        AND (NULL !== ($lang=sql_getfetsel('lang', 'spip_rubriques', "id_parent=0 AND id_rubrique=".intval($id_parent))))) {
     159                $champs['id_rubrique'] = $id_parent;
     160                // - changer sa langue (si heritee)
     161                if ($langue_choisie_old != "oui") {
     162                        if ($lang != $langue_old)
     163                                $champs['lang'] = $lang;
     164                }
     165                // si l'evenement est publiee
     166                // et que le demandeur n'est pas admin de la rubrique
     167                // repasser l'evenement en statut 'prop'.
     168                if ($statut == 'publie') {
     169                        if (!autoriser('publierdans','rubrique',$id_parent))
     170                                $champs['statut'] = $statut = 'prop';
     171                }
     172        }
     173
     174        // Envoyer aux plugins
     175        $champs = pipeline('pre_edition',
     176                array(
     177                        'args' => array(
     178                                'table' => 'spip_evenements',
     179                                'id_objet' => $id_evenement,
     180                                'action'=>'instituer',
     181                                'statut_ancien' => $statut_ancien,
     182                        ),
     183                        'data' => $champs
     184                )
     185        );
     186
     187        if (!$champs) return;
     188
     189        sql_updateq('spip_evenements', $champs, "id_evenement=".intval($id_evenement));
     190
     191        //
     192        // Post-modifications
     193        //
     194
     195        // Invalider les caches
     196        include_spip('inc/invalideur');
     197        suivre_invalideur("id='evenement/$id_evenement'");
     198
     199        // Au besoin, changer le statut des rubriques concernees
     200        include_spip('inc/rubriques');
     201        calculer_rubriques_if($id_rubrique, $champs, $statut_ancien);
     202
     203        // Pipeline
     204        pipeline('post_edition',
     205                array(
     206                        'args' => array(
     207                                'table' => 'spip_evenements',
     208                                'id_objet' => $id_evenement,
     209                                'action'=>'instituer',
     210                                'statut_ancien' => $statut_ancien,
     211                        ),
     212                        'data' => $champs
     213                )
     214        );
     215
     216
     217        // Notifications
     218        if ($notifications = charger_fonction('notifications', 'inc')) {
     219                $notifications('instituerevenement', $id_evenement,
     220                        array('statut' => $statut, 'statut_ancien' => $statut_ancien)
     221                );
     222        }
     223
     224        return ''; // pas d'erreur
     225}
     226
     227function insert_evenement($id_rubrique) {
     228        return evenement_inserer($id_rubrique);
     229}
     230function revisions_evenements ($id_evenement, $set=false) {
     231        return evenement_modifier($id_evenement,$set);
     232}
    136233?>
  • _plugins_/simple_calendrier/trunk/balise/simple_calendrier.php

    r51438 r53019  
    9797   
    9898    $s = '';   
    99     $s .= $rc.'<div class="ui-datepicker ui-widget ui-widget-content ui-corner-all">';
     99    $s .= $rc.'<div class="ui-datepicker ui-widget ui-widget-content ui-corner-all" style="font-size:0.9em;">';
    100100    $s .= $rc.'<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all">';
    101101    //$s .= '    <a class="ui-datepicker-prev ui-corner-all" title="'._T('simplecal:date_precedent').'" href="#">';
     
    111111    $s .= $rc.'</div>';
    112112   
    113     $resume = ucfirst(_T('simplecal:calendrier'))." : ".$nom_mois[$mois].' '.$annee;
    114    
    115     $s .= $rc.'<table class="ui-datepicker-calendar" summary="'.$resume.'">';
     113    $s .= $rc.'<table class="ui-datepicker-calendar">';
    116114    $s .= $rc.'<thead>';
    117115    $s .= $rc.'<tr>';
  • _plugins_/simple_calendrier/trunk/base/simplecal_base.php

    r51982 r53019  
    99
    1010
     11function simplecal_declarer_tables_interfaces($interfaces) {
     12        $interfaces['table_des_tables']['evenements'] = 'evenements';
     13       
     14        // Titre pour URL propres
     15    //$interface['table_titre']['evenements'] = "titre, '' AS lang";
     16   
     17    //$interface['table_des_traitements']['DATE_DEBUT'][] = 'normaliser_date(%s)';
     18    //$interface['table_des_traitements']['DATE_FIN'][] = 'normaliser_date(%s)';
     19   
     20    // ---------------------------------------------------------------------------
     21        // Champs de type 'date' pour la gestion des critères age, age_relatif, etc.
     22    // ---------------------------------------------------------------------------
     23    // Note : provoque l'enregistrement de la date de publication (lors de sa modif) dans date
     24    //$interface['table_date']['evenements'] = 'date';
     25   
     26        return $interfaces;
     27}
    1128
    12 // Declaration des tables principales
    13 function simplecal_declarer_tables_principales($tables_principales){
     29
     30function simplecal_declarer_tables_objets_sql($tables){
    1431       
    15         // Table 'spip_evenements'
    16         $evenements = array(
    17         "id_evenement" => "bigint(21) NOT NULL auto_increment",
    18         "id_secteur"   => "bigint(21) NOT NULL DEFAULT '0'",
    19         "id_rubrique"  => "bigint(21) NOT NULL DEFAULT '0'",
    20         "id_objet"     => "bigint(21) NOT NULL DEFAULT '0'",
    21         "type"         => "varchar(25) NOT NULL",
    22         "titre"        => "varchar(255) NOT NULL",
    23         "date_debut"   => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
    24         "date_fin"     => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
    25         "lieu"         => "varchar(255) NOT NULL",
    26         "descriptif"   => "text NOT NULL",
    27         "texte"        => "text NOT NULL",
    28         "lien_titre"   => "varchar(255) NOT NULL",
    29         "lien_url"     => "varchar(255) NOT NULL",
    30         "date"         => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'", // création ou publication (selon statut)
    31         "statut"       => "varchar(8) NOT NULL",
    32         "maj"          => "timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"
     32    // Champs de la table spip_evenements
     33        $fields = array(
     34        "id_evenement"      => "bigint(21) NOT NULL auto_increment",
     35        "id_secteur"        => "bigint(21) NOT NULL DEFAULT '0'",
     36        "id_rubrique"       => "bigint(21) NOT NULL DEFAULT '0'",
     37        "id_objet"          => "bigint(21) NOT NULL DEFAULT '0'",
     38        "type"              => "varchar(25) NOT NULL",
     39        "titre"             => "varchar(255) NOT NULL",
     40        "date_debut"        => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
     41        "date_fin"          => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'",
     42        "lieu"              => "varchar(255) NOT NULL",
     43        "descriptif"        => "text NOT NULL",
     44        "texte"             => "text NOT NULL",
     45        "date"              => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'", // création ou publication (selon statut)
     46        "statut"            => "varchar(8) NOT NULL",
     47        "lang"              => "varchar(10) NOT NULL DEFAULT ''",
     48        "langue_choisie"    => "varchar(3) NULL DEFAULT 'non'",
     49        "maj"               => "timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"
    3350        );
    3451   
    35     // champs qui possede les cles
    36         $evenements_key = array(
     52    // champs qui possedent les cles
     53        $key = array(
    3754        "PRIMARY KEY"     => "id_evenement",
    3855        "KEY id_secteur"  => "id_secteur",
     
    4158
    4259    // champs candidats à la jointure
    43         $evenements_join = array(
     60        $join = array(
    4461            "id_evenement" => "id_evenement",
    4562        "id_secteur"   => "id_secteur",
    4663        "id_rubrique"  => "id_rubrique"
    4764        );
    48        
    49         // Table des tables
    50         $tables_principales['spip_evenements'] = array(
    51                 'field' => &$evenements,
    52                 'key' => &$evenements_key,
    53                 'join' => &$evenements_join
    54         );     
     65   
     66    // champ 'statut'
     67    $statut = array(
     68        'champ'=>'statut',
     69        'publie'=>'publie',
     70        'previsu'=>'publie,prop',
     71        'exception'=>'statut'
     72    );
     73   
     74    // titre des statuts
     75    $statut_titres = array(
     76        'prepa'=>'simplecal:titre_evenement_redaction',
     77        'prop' => 'simplecal:titre_evenement_propose',
     78        'publie' => 'simplecal:titre_evenement_publie',
     79        'refuse' => 'simplecal:titre_evenement_refuse',
     80                'poubelle'=>'simplecal:titre_evenement_supprime'
     81    );
     82   
     83    $statut_textes_instituer = array(
     84        'prepa' => 'texte_statut_en_cours_redaction',
     85        'prop' => 'texte_statut_propose_evaluation',
     86        'publie' => 'texte_statut_publie',
     87        'refuse' => 'texte_statut_refuse',
     88        'poubelle' => 'texte_statut_poubelle'
     89    );
     90   
     91    // La Table
     92    $tables['spip_evenements'] = array(
     93                'texte_retour' => 'icone_retour',
     94                'texte_objets' => 'simplecal:evenements',
     95                'texte_objet' => 'simplecal:evenement',
     96                'texte_modifier' => 'simplecal:icone_modifier_evenement',
     97                'texte_creer' => 'simplecal:icone_nouvel_evenement',
     98                'info_aucun_objet'=> 'simplecal:info_aucun_evenement',
     99                'info_1_objet' => 'simplecal:info_1_evenement',
     100                'info_nb_objets' => 'simplecal:info_nb_evenements',
     101                'texte_logo_objet' => 'simplecal:logo_evenement',
     102                'titre' => 'titre, lang',
     103                'date' => 'date', // indique le nom du field pour le formulaires_dater_charger_dist
     104                'principale' => 'oui',
     105                'field'=> $fields,
     106                'key' => $key,
     107                'join' => $join,
     108                'statut' =>  array($statut),
     109                'statut_titres' => $statut_titres,
     110                'statut_textes_instituer' => $statut_textes_instituer,
     111       
     112        'tables_jointures' => array('id_auteur' => 'auteurs_liens'),
    55113
    56         return $tables_principales;
     114                'rechercher_champs' => array('titre'=>8, 'descriptif'=>4, 'texte'=>2),
     115       
     116                'rechercher_jointures' => array(
     117                        'document' => array('titre' => 2, 'descriptif' => 1)
     118                ),
     119                'champs_versionnes' => array('id_rubrique', 'titre', 'descriptif', 'texte', 'lieu', 'date_debut', 'date_fin'),
     120        );
     121   
     122    // On peut lire dans :
     123    // - Extensions/mots/base/mots.php     : jointures sur les mots pour tous les objets
     124    // - Extensions/medias/base/medias.php : jointures sur les documents pour tous les objets
     125    // - Extensions/forum/base/forum.php   : jointures sur les forums pour tous les objets
     126   
     127        return $tables;
    57128}
    58129
    59 // Declarations des tables auxiliaires (de jointures)
    60 function simplecal_declarer_tables_auxiliaires($tables_auxiliaires){
    61    
    62         // Table de jointure auteurs_evenements
    63         $evenements_auteurs = array(
    64                 "id_auteur"    => "BIGINT(21) NOT NULL",
    65                 "id_evenement" => "BIGINT(21) NOT NULL"
    66         );
    67         $evenements_auteurs_key = array(
    68                 "PRIMARY KEY" => "id_auteur, id_evenement"
    69         );
    70 
    71     // Table de jointure mots_evenements
    72         $evenements_mots = array(
    73                 "id_mot"       => "BIGINT(21) NOT NULL",
    74                 "id_evenement" => "BIGINT(21) NOT NULL"
    75         );
    76         $evenements_mots_key = array(
    77                 "PRIMARY KEY" => "id_mot, id_evenement"
    78         );
    79        
    80 
    81         // Table des tables
    82     $tables_auxiliaires['spip_auteurs_evenements'] = array(
    83                 'field' => &$evenements_auteurs,
    84                 'key' => &$evenements_auteurs_key
    85         );
    86    
    87         $tables_auxiliaires['spip_mots_evenements'] = array(
    88                 'field' => &$evenements_mots,
    89                 'key' => &$evenements_mots_key
    90         );
    91 
    92         return $tables_auxiliaires;
    93 }
    94 
    95 // cf. http://programmer.spip.org/declarer_tables_interfaces,379
    96 function simplecal_declarer_tables_interfaces($interface){
    97 
    98     // ----------------------------------------
    99         // Definir des alias pour les boucles SPIP
    100     // ----------------------------------------
    101        
    102     // Boucle ['evenements'] sur la table spip_evenements
    103         $interface['table_des_tables']['evenements'] = 'evenements';
    104 
    105     // ---------------------------------
    106         // Indiquer les jointures possibles
    107     // ---------------------------------
    108  
    109     // Jointures entre auteurs et evenements
    110         // ci-dessous : INCOMPATIBILITE si d'autres plugin font aussi ['spip_auteurs']['id_auteur'] = ...
    111     //$interface['tables_jointures']['spip_auteurs']['id_auteur'] = 'spip_auteurs_evenements'; // permet de faire <BOUCLEn(AUTEURS){id_evenement}>  ATTENTION : incompatible si un autre plugin fait qqch de similaire sur une autre table !!
    112         //$interface['tables_jointures']['spip_evenements']['id_evenement'] = 'spip_auteurs_evenements'; // permet de faire <BOUCLEn(EVENEMENTS){id_auteur=123}>
    113     $interface['tables_jointures']['spip_auteurs']['id_evenement'] = 'spip_auteurs_evenements';
    114     $interface['tables_jointures']['spip_evenements']['id_auteur'] = 'spip_auteurs_evenements';
    115     $interface['tables_jointures']['spip_auteurs_evenements']['id_evenement'] = 'spip_evenements';
    116     $interface['tables_jointures']['spip_auteurs_evenements']['id_auteur'] = 'spip_auteurs';
    117 
    118     // Jointures entre mots clés et evenements
    119     $interface['tables_jointures']['spip_mots']['id_evenement'] = 'mots_evenements'; // permet de faire <BOUCLEn(MOTS){id_evenement}>
    120         $interface['tables_jointures']['spip_evenements']['id_mot'] = 'mots_evenements'; // permet de faire <BOUCLEn(EVENEMENTS){id_mot=123}>
    121     $interface['tables_jointures']['spip_mots_evenements']['id_evenement'] = 'evenements';
    122     $interface['tables_jointures']['spip_mots_evenements']['id_mot'] = 'mots';
    123    
    124    
    125    
    126 
    127     // ------------------------------
    128         // Titre pour URL propres
    129     // ------------------------------
    130     $interface['table_titre']['evenements'] = "titre, '' AS lang";
    131 
    132     // -------------------------------------------
    133         // Traitements par défaut sur certains champs
    134     // -------------------------------------------
    135     $interface['table_des_traitements']['DATE_DEBUT'][] = 'normaliser_date(%s)';
    136     $interface['table_des_traitements']['DATE_FIN'][] = 'normaliser_date(%s)';
    137    
    138    
    139     // ---------------------------------------------------------------------------
    140         // Champs de type 'date' pour la gestion des critères age, age_relatif, etc.
    141     // ---------------------------------------------------------------------------
    142     // Note : provoque l'enregistrement de la date de publication (lors de sa modif) dans date
    143     $interface['table_date']['evenements'] = 'date';
    144     // -------
    145         return $interface;
    146 }
    147 
    148 function simplecal_declarer_tables_objets_surnoms($surnoms) {
    149         // Le type 'evenement' correspond a la table nommee 'evenements'
    150         $surnoms['evenement'] = 'evenements';
    151         return $surnoms;
    152 }
    153 
    154 
    155130?>
  • _plugins_/simple_calendrier/trunk/exec/simplecal_demo.php

    r51309 r53019  
    4848    // Affichage du bloc des raccourcis
    4949    $raccourcis = "";
    50     $lien = generer_url_ecrire("evenement_tous", "mode=avenir");
     50    $lien = generer_url_ecrire("evenements", "mode=avenir");
    5151    $racc_tous = icone_horizontale(_T('simplecal:raccourcis_tous_evenements'), $lien, _DIR_SIMPLECAL_IMG_PACK."simplecal-logo-24.png", "", false);
    5252    $raccourcis .= $racc_tous;
  • _plugins_/simple_calendrier/trunk/formulaires/editer_evenement.html

    r51982 r53019  
    3838       
    3939        [(#REM) 'Choix de la rubrique' est un champ facultatif]
    40         [(#ENV{config_rubrique}|=={partout}|oui)
    41         <li class="editer_parent obligatoire">
     40        [(#ENV**{config}|table_valeur{simplecal_rubrique}|=={partout}|oui)
     41        <li class="editer editer_parent obligatoire[ (#ENV**{erreurs}|table_valeur{id_parent}|oui)erreur]">
    4242            <label for="id_parent"><:titre_cadre_interieur_rubrique:><em class="aide">#AIDER{id_parent}</em></label>
    4343            [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{id_parent})</span>]
    44             [(#VAL|chercher_rubrique{#ENV{id_evenement}, #ENV{id_parent}, 'evenement', #ENV{id_secteur}, true, 0, form_simple})]
    45             </li>
    46         ]
     44            [(#VAL|chercher_rubrique{#ENV{id_evenement},#ENV{id_parent},'evenement',#ENV{id_secteur},#ENV**{config}|table_valeur{restreint},0,form_simple})]
     45            </li>]       
    4746       
    48         [(#ENV{config_rubrique}|=={secteur}|oui)
    49         <li class="editer_parent">
    50             <label for="id_parent"><:titre_cadre_interieur_rubrique:><em class="aide">#AIDER{id_parent}</em></label>
     47        [(#ENV**{config}|table_valeur{simplecal_rubrique}|=={secteur}|oui)
     48        <li class="editer editer_parent[ (#ENV**{erreurs}|table_valeur{id_parent}|oui)erreur]">
     49            <label for="id_parent"><:entree_interieur_rubrique:><em class="aide">#AIDER{id_parent}</em></label>
    5150            [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{id_parent})</span>]
    52             <!-- parametre 'breve' pour avoir une liste de secteur (chercher_rubrique pas générique...) -->
    53             [(#VAL|chercher_rubrique{#ENV{id_evenement}, #ENV{id_parent}, 'breve', #ENV{id_secteur}, true, 0, form_simple})]
    54             </li>
    55         ]
     51            <!-- parametre 'breve' pour avoir une liste de secteur (chercher_rubrique pas tres generique...) -->
     52            [(#VAL|chercher_rubrique{#ENV{id_evenement},#ENV{id_parent},'breve',#ENV{id_secteur},#ENV**{config}|table_valeur{restreint},0,form_simple})]
     53            </li>]
    5654       
    5755
    5856        [(#REM) 'Lieu' est un champ optionnel]
    59         [(#ENV{config_lieu}|=={oui}|oui)
    6057        <li class="editer_descriptif[ (#ENV**{erreurs}|table_valeur{lieu}|oui)erreur]">
    6158            <label for="lieu"><:simplecal:info_lieu:> : </label>
     
    6360            <input type="text" id="lieu" name="lieu" value="#ENV{lieu}" class="text" size="20" />
    6461        </li>
    65         ]
    6662       
    6763   
    6864        [(#REM) 'Descriptif' est un champ obligatoire]
    69         [(#ENV{config_descriptif}|=={oui}|oui)
    7065        <li class="editer_descriptif[ (#ENV**{erreurs}|table_valeur{descriptif}|oui)erreur]">
    7166            <label for="ta_descriptif"><:simplecal:info_descriptif_rapide:> : </label>
     
    7368            <textarea name='descriptif' id='ta_descriptif'[ lang='(#LANG)'] rows='5' cols='40'>[(#ENV**{descriptif})]</textarea>
    7469        </li>
    75         ]
    7670       
    7771        [(#REM) 'Reference' est un champ optionnel]
    78         [(#ENV{config_reference}|=={oui}|oui)
     72        [(#ENV**{config}|table_valeur{simplecal_refobj}|=={oui}|oui)
    7973        <li class="editer_descriptif[ (#ENV**{erreurs}|table_valeur{ref}|oui)erreur]">
    80             <label for="ref">
    81                 [(#ENV{config_texte}|=={oui}|oui)<:simplecal:info_ref_1pos:>]
    82                 [(#ENV{config_texte}|=={non}|oui)<:simplecal:info_ref:>]
    83             </label>
     74            <label for="ref"><:simplecal:info_ref:></label>
    8475            [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{ref})</span>]
    8576            <div class="explication"><:simplecal:explication_ref:></div>
     
    8980       
    9081        [(#REM) 'Texte' est un champ optionnel]
    91         [(#ENV{config_texte}|=={oui}|oui)
    9282        <li class="editer_descriptif[ (#ENV**{erreurs}|table_valeur{texte}|oui)erreur]">
    9383            <label for="texte">
    94                 [(#ENV{config_reference}|=={non}|oui)<:simplecal:info_texte:>]
    95                 [(#ENV{config_reference}|=={oui}|oui)<:simplecal:info_texte_2possibilites:>]
     84                [(#ENV**{config}|table_valeur{simplecal_refobj}|=={non}|oui)<:simplecal:info_texte:>]
     85                [(#ENV**{config}|table_valeur{simplecal_refobj}|=={oui}|oui)<:simplecal:info_texte_2possibilites:>]
    9686            </label>
    9787            [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{texte})</span>]
     
    9989            <textarea name='texte' id='texte' class='inserer_barre_edition inserer_previsualisation'[ lang='(#LANG)'] rows='20' cols='40'>[(#ENV**{texte})]</textarea>
    10090        </li>
    101         ]
    102        
    103         [(#ENV{config_lien}|=={oui}|oui)
    104         <li class="editer_liens_sites fieldset">
    105             <fieldset>
    106             <h3 class="legend"><:entree_liens_sites:></h3>
    107             <ul>
    108                 <li class="editer_lien_titre[ (#ENV**{erreurs}|table_valeur{lien_titre}|oui)erreur]">
    109                     <label for="lien_titre"><:info_titre:><em class='aide'>#AIDER{lien_titre}</em></label>[
    110                     <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{lien_titre})</span>
    111                     ]<input type='text' class='text' name='lien_titre' id='lien_titre' value="[(#ENV**{lien_titre})]" />
    112                 </li>
    113                 <li class="editer_lien_url[ (#ENV**{erreurs}|table_valeur{lien_url}|oui)erreur]">
    114                     <label for="lien_url"><:info_url:></label>[
    115                     <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{lien_url})</span>
    116                     ]<input type='text' class='text' name='lien_url' id='lien_url' value="[(#ENV**{lien_url})]" />
    117                 </li>
    118             </ul>
    119             </fieldset>
    120         </li>
    121         ]
    122        
    123        
    12491        </ul>
    12592         
  • _plugins_/simple_calendrier/trunk/formulaires/editer_evenement.php

    r51982 r53019  
    88if (!defined("_ECRIRE_INC_VERSION")) return;
    99
    10 //include_spip('inc/actions');
    11 //include_spip('inc/editer');
     10include_spip('inc/actions');
     11include_spip('inc/editer');
    1212include_spip('inc/simplecal_utils');
    1313
    14 // NOTES :
    15 // paramètres des fonctions = fournis lors de l'appel du formulaire par #FORMULAIRE_xxx{arg1, arg2, arg3}
    16 // dans editer_evenement.html, d'ou vient le #ENV{action} ?
    17 // => reponse : du tableau de valeurs de la fonction charger. S'il n'y est pas (recommandé), il s'agit de l'url de la page en cours. cf. http://www.spip.net/fr_article4151.html - section "champs particuliers"
    18 // id_evenement sert pour la fonction Traiter (et pour le choix de la rubrique parente.)
     14function formulaires_editer_evenement_charger_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='evenements_edit_config', $row=array(), $hidden=''){
     15    // Recupere automatiquement les champs de la table (entre autres...)
     16    $valeurs = formulaires_editer_objet_charger('evenement',$id_evenement,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
    1917
    20 
    21 
    22 // Choix par defaut des options de presentation
    23 function evenements_edit_config($row) {
    24     global $spip_ecran, $spip_lang, $spip_display;
    25 
    26     $config = $GLOBALS['meta'];
    27     $config['lignes'] = ($spip_ecran == "large")? 8 : 5;
    28     $config['afficher_barre'] = $spip_display != 4;
    29     $config['langue'] = $spip_lang;
    30 
    31     $config['restreint'] = ($row['statut'] == 'publie');
    32     return $config;
    33 }
    34 
    35 // C comme Charger
    36 function formulaires_editer_evenement_charger_dist($new='', $id_evenement='', $row=array(), $redirect='', $config=array()){
    37    
    38     $valeurs = array(
    39         'id_evenement'=>'',
    40         'id_secteur'=>'',
    41         'id_parent'=>'',
    42         'titre'=>'',
    43         'date_debut'=>'',
    44         'date_fin'=>'',
    45         'lieu'=>'',
    46         'descriptif'=>'',
    47         'texte'=>'',
    48         'ref'=>'',
    49         'lien_titre'=>'',
    50         'lien_url'=>'',
    51         'config_rubrique'=>'',
    52         'config_reference'=>'',
    53         'config_descriptif'=>'',
    54         'config_texte'=>'',
    55         'config_lieu'=>'',
    56         'config_lien'=>'');
    57    
    58    
    59     $valeurs['id_evenement'] = $id_evenement;
    60     $valeurs['id_secteur'] = $row['id_secteur'];
    61     $valeurs['id_parent'] = $row['id_rubrique'];
    62    
    63    
    64     // --- BIZARRE : à quoi ça sert ??
    65     if ($row['titre']) {
    66         $valeurs['titre'] = $row['titre'];
    67     } else {
    68         $valeurs['titre'] = simplecal_get_titre_from_obj($row['type'], $row['id_objet']);
    69     }
    70     // --- FIN de la bizarrerie...
    71    
    72     if (!empty($row['date_debut'])){
    73         $valeurs['date_debut'] = date_sql2affichage($row['date_debut']);
    74     }
    75     if (!empty($row['date_fin'])){
    76         $valeurs['date_fin'] = date_sql2affichage($row['date_fin']);
    77     }   
    78     if (!empty($row['lieu'])){
    79         $valeurs['lieu'] = $row['lieu'];
    80     }
    81     if (!empty($row['descriptif'])){
    82         $valeurs['descriptif'] = $row['descriptif'];
    83     }
    84     if (!empty($row['texte'])){
    85         $valeurs['texte'] = $row['texte'];
    86     }   
    87     if (!empty($row['lien_titre'])){
    88         $valeurs['lien_titre'] = $row['lien_titre'];
    89     }
    90     if (!empty($row['lien_url'])){
    91         $valeurs['lien_url'] = $row['lien_url'];
    92     }
    93 
    94     $valeurs['ref'] = simplecal_get_ref_from_obj($row['type'], $row['id_objet']);
    95     $valeurs['config_rubrique'] = $config['simplecal_rubrique'];
    96     $valeurs['config_reference'] = $config['simplecal_reference'];
    97     $valeurs['config_descriptif'] = $config['simplecal_descriptif'];
    98     $valeurs['config_texte'] = $config['simplecal_texte'];
    99     $valeurs['config_lieu'] = $config['simplecal_lieu'];
    100     $valeurs['config_lien'] = $config['simplecal_lien'];
     18    // Modif pour avoir un affichage formate ('14/08/2011 00:00:00' => '14/08/2011')
     19    $valeurs["date_debut"] = date_sql2affichage($valeurs["date_debut"]);
     20    $valeurs["date_fin"] = date_sql2affichage($valeurs["date_fin"]);
    10121   
    10222    return $valeurs;
    10323}
    10424
     25/**
     26 * Identifier le formulaire en faisant abstraction des parametres qui
     27 * ne representent pas l'objet edite
     28 */
     29function formulaires_editer_evenement_identifier_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='evenements_edit_config', $row=array(), $hidden=''){
     30        return serialize(array(intval($id_evenement),$lier_trad));
     31}
    10532
    106 // V comme Verifier
    107 function formulaires_editer_evenement_verifier_dist($new='', $id_evenement='', $row=array(), $redirect='', $config=array()){
    10833
    109     $erreurs = array();
     34// Choix par defaut des options de presentation
     35function evenements_edit_config($row)
     36{
     37        global $spip_ecran, $spip_lang, $spip_display;
     38
     39        $config = $GLOBALS['meta'];
     40        $config['lignes'] = ($spip_ecran == "large")? 8 : 5;
     41        $config['langue'] = $spip_lang;
     42
     43        $config['restreint'] = ($row['statut'] == 'publie');
     44        return $config;
     45}
     46
     47function formulaires_editer_evenement_verifier_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='evenements_edit_config', $row=array(), $hidden=''){
     48        // Verifications automatiques
     49    // ---------------------------
     50    $champs_obligatoires = array('titre', 'date_debut');
     51    $erreurs = formulaires_editer_objet_verifier('evenement', $id_evenement, $champs_obligatoires);
    11052   
    111     // titre obligatoire
    112     $titre = trim(_request('titre'));
    113     if (!$titre) {
    114         $erreurs['titre'] = _T('simplecal:validation_titre');
     53    // Autres verifications
     54    // ---------------------
     55   
     56    // Date de debut saisie correctement ?
     57    $date_debut = trim(_request('date_debut'));
     58    if ($date_debut && date_saisie2sql($date_debut) == '0000-00-00 00:00:00'){
     59        $erreurs['date_debut'] = _T('simplecal:validation_date_format');
    11560    }
    116    
    117    
    118     // Date de debut obligatoire
    119     $date_debut = trim(_request('date_debut'));
    120     if (!$date_debut) {
    121         $erreurs['date_debut'] = _T('simplecal:validation_date_debut');
    122     }
    123     // Date de debut saisie correctement ?
    124     else {
    125         if (date_saisie2sql($date_debut) == '0000-00-00 00:00:00'){
    126             $erreurs['date_debut'] = _T('simplecal:validation_date_format');
    127         }
    128     }
    129    
     61       
    13062    // Date de fin saisie correctement ?
    13163    $date_fin = trim(_request('date_fin'));
     
    13365        $erreurs['date_fin'] = _T('simplecal:validation_date_format');
    13466    }
    135    
    136     if ($config['simplecal_reference'] == 'oui'){
    137         // Ref saisie correctement ?
    138         $ref = trim(_request('ref'));
    139         if ($ref){
    140             if (!simplecal_is_ref_ok($ref)){
    141                 $erreurs['ref'] = _T('simplecal:validation_refobj_format');
    142             }
    143             else {
    144                 // L'objet en question existe t-il ?
    145                 $tab = simplecal_get_tuple_from_ref($ref);
    146                 $type = $tab['type'];
    147                 $id_objet = $tab['id_objet'];
    148                
    149                 $existe = sql_fetsel("id_$type" ,"spip_".$type."s", "id_$type=".$id_objet);
    150                 if (!$existe){
    151                     $erreurs['ref'] = _T('simplecal:validation_type_nexiste_pas', array('type'=>$type, 'id_objet'=>$id_objet));
    152                 }
     67
     68    // Chronologie : Date de fin >= Date de debut (si pas d'autres erreurs sur les dates)
     69    if (!$erreurs['date_debut'] && !$erreurs['date_fin']){
     70        if ($date_debut && $date_fin){
     71            $date_debut_sql = date_saisie2sql($date_debut);
     72            $date_fin_sql = date_saisie2sql($date_fin);
     73           
     74            if ($date_debut_sql != '0000-00-00 00:00:00' && $date_fin_sql != '0000-00-00 00:00:00'){
     75                if ($date_fin_sql < $date_debut_sql){
     76                    $erreurs['date_fin'] = _T('simplecal:validation_date_chronologie');
     77                }
    15378            }
    15479        }
    155     }
     80    }   
    15681   
    157     if ($config['simplecal_rubrique'] != 'non'){
    158         $id_parent = intval(_request('id_parent'));
    159         if ($id_parent == 0){
    160             $erreurs['id_parent'] = _T('simplecal:validation_rubrique');
    161         }
    162     }
     82        return $erreurs;
     83}
    16384
     85function formulaires_editer_evenement_traiter_dist($id_evenement='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='evenements_edit_config', $row=array(), $hidden=''){
     86       
     87    // On remet les dates au format SQL ('14/08/2011' => '14/08/2011 00:00:00')
     88    set_request("date_debut", date_saisie2sql(_request("date_debut")));
     89    set_request("date_fin", date_saisie2sql(_request("date_fin")));
    16490   
    165     if (count($erreurs) > 0){
    166         $erreurs['message_erreur'] = _T('simplecal:validation_corriger_svp');
    167     }
    168 
    169    
    170    
    171     return $erreurs;
     91    return formulaires_editer_objet_traiter('evenement',$id_evenement,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden);
    17292}
    17393
    17494
    175 
    176 // T comme Traiter
    177 function formulaires_editer_evenement_traiter_dist($new='', $id_evenement='', $row=array(), $redirect='', $config=array()){
    178    
    179     //die("statut=".$row['statut']);
    180     include_spip('base/abstract_sql');
    181    
    182     $date_enregistrement = date('Y-m-d H:i:s');
    183     // ---
    184     $titre = trim(_request('titre'));
    185     $date_debut = date_saisie2sql(_request('date_debut'));
    186     $date_fin   = date_saisie2sql(_request('date_fin'));
    187     $lieu = trim(_request('lieu'));
    188     $descriptif = trim(_request('descriptif'));
    189     $ref = trim(_request('ref'));
    190     $texte = trim(_request('texte'));
    191     $lien_titre = trim(_request('lien_titre'));
    192     $lien_url = trim(_request('lien_url'));
    193    
    194     // parent
    195     $id_parent = trim(_request('id_parent'));
    196     if (empty($id_parent)){
    197         $id_parent = 0;
    198         $id_secteur = 0;
    199     }
    200    
    201     // calcul du secteur
    202     if ($id_parent != 0) {
    203         $row_tmp = sql_fetsel("id_secteur", "spip_rubriques", "id_rubrique=$id_parent");
    204         $id_secteur = $row_tmp['id_secteur'];
    205     }
    206    
    207 
    208     $data = array();
    209    
    210 
    211     // Mode 1ere création
    212     if ($new == 'oui'){
    213         $data['statut'] = 'prepa';
    214         $data['date'] = $date_enregistrement;
    215     }
    216     // Mode modification
    217     else {
    218         $data['statut'] = $row['statut'];
    219     }
    220 
    221        
    222     // Autres champs
    223     $data['titre'] = $titre;
    224     $data['date_debut'] = $date_debut;
    225     $data['date_fin'] = $date_fin;
    226    
    227     if ($config['simplecal_lieu'] != 'non'){
    228         $data['lieu'] = $lieu;
    229     } else {
    230         // si gestion du lieu desactivée
    231         // => on ne touche pas aux données qu'ils pourraient y avoir... (réactivation ultérieure ?)
    232     }   
    233     if ($config['simplecal_descriptif'] != 'non'){
    234         $data['descriptif'] = $descriptif;
    235     } else {
    236         // si gestion du descriptif desactivée
    237         // => on ne touche pas aux données qu'ils pourraient y avoir... (réactivation ultérieure ?)
    238     }
    239     if ($config['simplecal_texte'] != 'non'){
    240         $data['texte'] = $texte;
    241     } else {
    242         // si gestion du texte desactivée
    243         // => on ne touche pas aux données qu'ils pourraient y avoir... (réactivation ultérieure ?)
    244     }
    245     if ($config['simplecal_lien'] != 'non'){
    246         $data['lien_titre'] = $lien_titre;
    247         $data['lien_url'] = $lien_url;
    248     } else {
    249         // si gestion du lien desactivée
    250         // => on ne touche pas aux données qu'ils pourraient y avoir... (réactivation ultérieure ?)
    251     }
    252    
    253     if ($config['simplecal_rubrique'] != 'non'){
    254         $data['id_rubrique'] = $id_parent;
    255         $data['id_secteur'] = $id_secteur;
    256     } else {
    257         // si gestion des rubriques desactivée
    258         // => on ne touche pas aux données qu'ils pourraient y avoir... (réactivation ultérieure ?)
    259     }
    260    
    261     if ($config['simplecal_reference'] == 'oui'){
    262         if (empty($ref)){
    263             $data['type'] = '';
    264             $data['id_objet'] = 0;
    265         } else {
    266             $tab = simplecal_get_tuple_from_ref($ref);
    267             $data['type'] = $tab['type'];
    268             $data['id_objet'] = $tab['id_objet'];
    269         }
    270     } else {
    271         // si gestion des references desactivée
    272         // => on ne touche pas aux données qu'ils pourraient y avoir... (réactivation ultérieure ?)
    273     }
    274    
    275    
    276     // Enregistrement / Mise à jour
    277     if ($new == 'oui'){
    278         $id_new = sql_insertq('spip_evenements', $data);
    279         $redirection = generer_url_ecrire("evenement_voir", "id_evenement=".$id_new);
    280     } else {
    281         sql_updateq('spip_evenements', $data, "id_evenement=".$id_evenement);
    282         $redirection = $redirect;
    283     }
    284    
    285        
    286     // Auteur
    287     if ($new == 'oui'){
    288         $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
    289         if ($id_auteur) {
    290             sql_insertq('spip_auteurs_evenements', array('id_auteur'=>$id_auteur, 'id_evenement'=>$id_new));
    291         }
    292     }
    293    
    294    
    295     $retour = array();
    296     $retour['redirect'] = $redirection;   
    297    
    298     return $retour;
    299 }
    300 
    30195?>
  • _plugins_/simple_calendrier/trunk/formulaires/inc-editer_evenement_datepicker.html

    r51413 r53019  
     1
     2<script type="text/javascript" src="#CHEMIN{prive/javascript/ui/jquery.ui.core.js}"> </script>
     3<script type="text/javascript" src="#CHEMIN{prive/javascript/ui/jquery.ui.datepicker.js}"> </script>
    14
    25<script type="text/javascript">
    3    
    46    var liste_mois = ['<:date_mois_1:>', '<:date_mois_2:>', '<:date_mois_3:>', '<:date_mois_4:>', '<:date_mois_5:>', '<:date_mois_6:>', '<:date_mois_7:>', '<:date_mois_8:>', '<:date_mois_9:>', '<:date_mois_10:>', '<:date_mois_11:>', '<:date_mois_12:>'];
    57    var liste_mois_abbr = ['<:simplecal:date_janvier_abbr:>', '<:simplecal:date_fevrier_abbr:>', '<:simplecal:date_mars_abbr:>', '<:simplecal:date_avril_abbr:>', '<:simplecal:date_mai_abbr:>', '<:simplecal:date_juin_abbr:>', '<:simplecal:date_juillet_abbr:>', '<:simplecal:date_aout_abbr:>', '<:simplecal:date_septembre_abbr:>', '<:simplecal:date_octobre_abbr:>', '<:simplecal:date_novembre_abbr:>', '<:simplecal:date_decembre_abbr:>'];
     
    1719        nextText: '<:simplecal:date_suivant:>',
    1820        showOn: 'button',
    19         buttonImage: '#CHEMIN{img_pack/simplecal-datepicker.png}',
     21        buttonImage: '#CHEMIN_IMAGE{evenement-datepicker.png}',
    2022        buttonText: '<:simplecal:date_picto_title:>',
    2123        buttonImageOnly: true,
  • _plugins_/simple_calendrier/trunk/inc/instituer_evenement.php

    r51309 r53019  
    77
    88if (!defined("_ECRIRE_INC_VERSION")) return;
     9include_spip('inc/puce_statut');
    910
    10 // Fonction du core, adaptee ici, qui permet d'afficher
    11 // un formulaire de changement de statut pour un objet.
    12 // Appelee par :
    13 // - prive/infos/evenement_fonctions
    14 
    15 
    16 function inc_instituer_evenement($id_objet, $statut=-1)
    17 {
    18         // le statut n'est pas fournit => on s'arrete.
     11// Appelee par : prive/infos/evenement_fonctions
     12function inc_instituer_evenement($id_evenement, $statut=-1){
    1913        if ($statut == -1) return "";
    2014
     
    3024   
    3125    // Autorisation => retrait de certains statuts
    32     if (!autoriser('publier', 'evenement', $id_objet)) {
     26    if (!autoriser('publier', 'evenement', $id_evenement)) {
    3327                unset($etats['publie']);
    3428                unset($etats['refuse']);
     
    4438        // debut de code html du formulaire (partie fixe)       
    4539        $res =
    46           "<ul id='instituer_sortie-$id_objet' class='instituer_breve instituer'>"
     40          "<ul id='instituer_evenement-$id_evenement' class='instituer_breve instituer'>"
    4741          . "<li>" . _T('simplecal:entree_evenement_publie')
    4842          ."<ul>";
    4943       
    50         // On y ajoute la suite : partie variable selon le statut en cours.
    51         // Le lien de redirection en cas de changement effectif est stocke en attendant la suite.
    52         $href = redirige_action_auteur('editer_evenement', $id_objet, 'evenement_voir', "id_evenement=$id_objet");
    53         // Pour chaque etat possible du statut,
     44    /*
     45        $href = redirige_action_auteur('editer_evenement', $id_evenement, 'evenement_voir', "id_evenement=$id_evenement");
    5446        foreach($etats as $s=>$lib_statut){
    55                 // 1- On complete le lien de redirection avec les parametres specifiques
    5647                $href = parametre_url($href, 'statut', $s);
    57                 // 2- On teste si le statut est actuel ou possible
    58                 if ($s==$statut)
    59                         // Si le statut est celui en cours sur l'objet
    60                         // alors on l'affiche en tant que tel
     48               
     49                if ($s==$statut) {
    6150                        $res .= "<li class='$s selected'>" . puce_statut($s) . $lib_statut[0] . '</li>';
    62                 else
    63                         // Sinon, c'est un nouvel etat possible,
    64                         // alors on l'affiche avec un lien qui change le statut
     51        } else {
    6552                        $res .= "<li class='$s'><a href='$href' onclick='return confirm(confirm_changer_statut);'>" . puce_statut($s) . $lib_statut[0] . '</a></li>';
     53        }
     54        }
     55    */
     56   
     57    foreach($etats as $s=>$affiche){
     58                $href = generer_action_auteur('instituer_evenement',"$id_evenement-$s",self());
     59                if ($s==$statut) {
     60                        $res .= "<li class='$s selected'>" . puce_statut($s) . $affiche[0] . '</li>';
     61        } else {
     62                        $res .= "<li class='$s'><a href='$href' onclick='return confirm(confirm_changer_statut);'>" . puce_statut($s) . $affiche[0] . '</a></li>';
     63        }
    6664        }
    6765
    68         // On y ajoute maintenant la fin du code hmtl (partie fixe)
    6966        $res .= "</ul></li></ul>";
    7067   
    71         // Puis on renvoie le tout !
    7268        return $res;
    7369}
  • _plugins_/simple_calendrier/trunk/inc/simplecal_utils.php

    r51413 r53019  
    202202    $bloc.=$phrase;
    203203   
    204     $bloc .= icone_horizontale(_T('simplecal:raccourcis_liste_evenements_rubrique'), generer_url_ecrire("evenement_tous", "id_rubrique=$id_rubrique"), _DIR_SIMPLECAL_IMG_PACK."simplecal-logo-24.png", "", false);
     204    $bloc .= icone_horizontale(_T('simplecal:raccourcis_liste_evenements_rubrique'), generer_url_ecrire("evenements", "id_rubrique=$id_rubrique"), _DIR_SIMPLECAL_IMG_PACK."simplecal-logo-24.png", "", false);
    205205    if (autoriser('creer', 'evenement', null)){
    206206        $bloc .= icone_horizontale(_T('simplecal:raccourcis_ecrire_evenement'), generer_url_ecrire("evenements_edit", "new=oui&retour=rubrique&id_rubrique=$id_rubrique"), _DIR_SIMPLECAL_IMG_PACK."simplecal-logo-24.png", "creer.gif", false);
     
    245245
    246246function simplecal_liste_themes($select_name, $choix){
     247    // Version Php5 : ne fonctionne pas facilement sous OVH
     248    //$dir_theme = _DIR_SIMPLECAL_PRIVE.'css/datepicker/';
     249    //$dirs = scandir($dir_theme, 0);
     250    //$dirs = array_slice ($dirs, 2);
     251
    247252    // Version Php4                   
    248253    $dir_theme = _DIR_SIMPLECAL_PRIVE.'css/datepicker/';
    249254    $dh  = opendir($dir_theme);
    250255    while (false !== ($filename = readdir($dh))) {
    251         if (substr($filename, -4, 4) == ".css"){
    252             $dirs[] = substr($filename, 0, strlen($filename)-4);
    253         }
     256        $dirs[] = $filename;
    254257    }
    255258    sort($dirs);
     259    $dirs = array_slice ($dirs, 2); // retire les 2 premiers dossiers (. et ..)
     260
    256261    // -----
    257262   
  • _plugins_/simple_calendrier/trunk/lang/simplecal_en.php

    r51982 r53019  
    1818    'auteur_msg_ajout' => 'Author added !',
    1919    'auteur_msg_retrait' => 'Author removed !',
     20    'alt_img_logo' => 'Simple-Calendrier',
    2021   
    2122
     
    2526
    2627// C
    27     'calendrier' => "calendar",
     28    'description_plugin' => 'Calendar',
    2829    'corbeille_tous' => "@nb@ events in garbage",
    2930    'corbeille_un' => "1 event in garbage",
     
    3233    'config_refobj_non' => "Disable text by reference",
    3334    'config_refobj_explication' => "Enable 'text by reference' to allow articles/breves to be in calendar.",
    34     'config_themes_explication' => "You can choose a theme (color set) for the 'little calendar' in public area.",
     35    'config_themes_explication' => "You can choose a theme (color set) for the 'datepicker' in private area and for the 'little calendar' in public area.",
    3536    'config_autorisation_explication' => "You can choose if event creation are enabled for editors.",
    3637    'config_rubrique_explication' => "If you want to manage a simple calendar for your site, let this option disabled. It is possible to use keywords for categorised your events.<br />But, if you want to manage multiple calendar, and display distinct events for each folder, you can enable it.",
     38    'config_themeprive' => "Private area theme",
    3739    'config_themepublic' => "Public area theme",
     40    'config_datepicker' => "date picker",
    3841    'config_minicalendrier' => "little calendar",
    3942    'config_blocreference' => "References",
     
    4649    'config_rubrique_secteur' => 'Yes, create events in 1st level folder (sector).',
    4750    'config_rubrique_non' => 'No, it makes no sens for me.',
    48     'config_champs' => 'Events content',
    49     'config_champs_explication' => 'Based on the layout chosen for your site, you can decide which elements in the following list should be available.',
    5051   
    5152
    5253// D
    53     'description_plugin' => 'Calendar',
    5454    'date' => 'Date',
    5555    'dates' => 'Dates',
     
    9494    'entree_evenement_publie' => 'Status of the event :',
    9595    'enregistrer_dabord_une_fois' => "It's possible ! <br /><br />But first, please save this page one time...",
     96    'evenement' => "Event",
     97    'evenements' => "Events",
    9698   
    9799// F
     
    108110    'info_lieu' => 'Place',
    109111    'info_descriptif_rapide' => 'Brief description',
    110     'info_ref_1pos' => 'Text : by reference (1\'st possibility)',
    111     'info_ref' => 'Text : by reference',
     112    'info_ref' => 'Text : by reference (1\'st possibility)',
    112113    'info_texte' => 'Text',
    113114    'info_texte_2possibilites' => 'Text : specific (2\'nd possibility)',
     
    125126    'inconnu' => 'unknown',
    126127    'info_evenements_liees_mot' => 'Events associated with this keyword',
    127     'info_1_evenement' => 'event',
    128     'info_n_evenements' => 'events',
     128    'info_1_evenement' => '1&nbsp;event',
     129    'info_n_evenements' => '@nb@ events',
     130    'info_evenement' => 'event',
     131    'icone_nouvel_evenement' => 'Write a new event',
     132    'icone_evenements' => 'Events',
    129133
    130134// L
    131135    'liste_evenements_prop' => "Events submitted for publication.",
    132     'liste_evenements_a_valider' => "Events items to be validated.",
    133136    'liste_evenements_publie' => "Events published.",
    134137    'liste_evenements_prepa' => "Events in progress.",
     
    173176    'titre_boite_refobj' => 'in calendar',
    174177    'titre_boite_rubrique' => 'Calendar',
     178    'texte_objet' => "Event",
     179    'texte_objets' => "Events",
    175180   
    176181// V
  • _plugins_/simple_calendrier/trunk/lang/simplecal_fr.php

    r51982 r53019  
    1717    'auteur_msg_ajout' => 'Auteur ajout&eacute; !',
    1818    'auteur_msg_retrait' => 'Auteur retir&eacute; !',
     19    'alt_img_logo' => 'Simple-Calendrier',
    1920   
    2021// B
     
    2324
    2425// C
    25     'calendrier' => "calendrier",
     26    'description_plugin' => 'Calendrier',
    2627    'corbeille_tous' => "@nb@ &eacute;v&egrave;nements dans la corbeille",
    2728    'corbeille_un' => "1 &eacute;v&egrave;nement dans la corbeille",
     
    3031    'config_refobj_non' => "D&eacute;sactiver le texte par r&eacute;f&eacute;rence",
    3132    'config_refobj_explication' => "Activer le 'texte par r&eacute;f&eacute;rence' pour permettre aux articles/breves de figurer dans le calendrier. C'est le texte de l'&eacute;v&egrave;nement qui pourra alors &ecirc;tre remplac&eacute; par celui de l'article/de la br&egrave;ve choisi...",
    32     'config_themes_explication' => "Vous pouvez choisir un th&egrave;me (jeu de couleurs) pour l'affichage du mini calendrier de l'espace public.",
     33    'config_themes_explication' => "Vous pouvez choisir un th&eacute;me (jeu de couleurs) pour l'affichage du 'datepicker' dans l'espace priv&eacute; ainsi que pour l'affichage du mini calendrier de l'espace public.",
    3334    'config_autorisation_explication' => "Indiquez qui est autoris&eacute; &agrave; cr&eacute;er des &eacute;v&egrave;nements.",
    3435    'config_rubrique_explication' => "Si vous souhaitez g&eacute;rer un simple agenda pour votre site, inutile d'activer cette option. Au besoin, il vous est toujours possible d'utiliser les mots cl&eacute;s pour cat&eacute;goriser vos &eacute;v&egrave;nements.<br />Si par contre, vous voulez g&eacute;rer plusieurs agendas, et afficher les &eacute;v&egrave;nements en fonction de la rubrique visit&eacute;e, cette option est faite pour vous.",
     36    'config_themeprive' => "Th&egrave;me espace priv&eacute;",
    3537    'config_themepublic' => "Th&egrave;me espace public",
     38    'config_datepicker' => "date picker",
    3639    'config_minicalendrier' => "mini-calendrier",
    3740    'config_blocreference' => "R&eacute;f&eacute;rences",
     
    4447    'config_rubrique_secteur' => 'Oui, cr&eacute;er les &eacute;v&egrave;nements dans les secteurs seulement.',
    4548    'config_rubrique_non' => 'Non, cela n\'a pas de sens pour moi.',
    46     'config_champs' => 'Contenu des &eacute;v&egrave;nements',
    47     'config_champs_explication' => 'Selon la maquette adopt&eacute;e pour votre site, vous pouvez d&eacute;cider quels champs doivent &ecirc;tre disponibles.',
    4849   
    4950// D
    50     'description_plugin' => 'Calendrier',
    5151    'date' => 'Date',
    5252    'dates' => 'Dates',
     
    9292    'entree_evenement_publie' => 'Statut de cet &eacute;v&egrave;nement :',
    9393    'enregistrer_dabord_une_fois' => "C'est possible ! <br /><br />Pour cela, veuillez enregistrer la fiche une premi&egrave;re fois...",
     94    'evenement' => "&Eacute;v&egrave;nement",
     95    'evenements' => "&Eacute;v&egrave;nements",
    9496   
    9597// F
     
    106108    'info_lieu' => 'Lieu',
    107109    'info_descriptif_rapide' => 'Descriptif rapide',
    108     'info_ref_1pos' => 'Texte : par r&eacute;f&eacute;rence (1&egrave;re possibilit&eacute;)',
    109     'info_ref' => 'Texte : par r&eacute;f&eacute;rence',
     110    'info_ref' => 'Texte : par r&eacute;f&eacute;rence (1&egrave;re possibilit&eacute;)',
    110111    'info_texte' => 'Texte',
    111112    'info_texte_2possibilites' => 'Texte : sp&eacute;cifique (2&egrave;me possibilit&eacute;)',
     
    124125    'info_evenements_liees_mot' => 'Les &eacute;v&egrave;nements li&eacute;s &agrave; ce mot cl&eacute;',
    125126    'info_1_evenement' => '1&nbsp;&eacute;v&egrave;nement',
    126     'info_n_evenements' => '&eacute;v&egrave;nements',
     127    'info_n_evenements' => '@nb@ &eacute;v&egrave;nements',
     128    'info_evenement' => '&eacute;v&egrave;nement',
     129    'info_evenements' => 'Ev&egrave;nements',
     130    'info_evenements_02' => 'Ev&egrave;nements',
     131    'info_evenements_valider' => 'Ev&egrave;nements &agrave; valider',
     132    'icone_nouvel_evenement' => '&Eacute;crire un nouvel &eacute;v&egrave;nement',
     133    'icone_evenements' => 'Ev&egrave;nements',
    127134
    128135// L
    129136    'liste_evenements_prop' => "Ev&egrave;nements propos&eacute;s &agrave; l'&eacute;valuation.",
    130     'liste_evenements_a_valider' => "Ev&egrave;nements &agrave; valider.",
    131137    'liste_evenements_publie' => "Ev&egrave;nements publi&eacute;s.",
    132138    'liste_evenements_prepa' => "Ev&egrave;nements en cours de r&eacute;daction.",
     
    168174    'texte_issu_autre_objet' => 'Texte issu d\'un autre contenu',
    169175    'texte' => 'Texte',
    170     'titre_evenements' => 'Ev&egrave;nements',
     176    'titre_evenements' => 'Les &eacute;v&egrave;nements',
    171177    'tous' => 'Tous',
    172178    'titre_boite_refobj' => 'dans le calendrier',
    173179    'titre_boite_rubrique' => 'Calendrier',
     180    'titre_langue_evenement' => "LANGUE DE L'EVENEMENT",
    174181   
    175182// V
    176     'validation_titre' => 'Le titre est indispensable !',
    177183    'validation_date_debut' => 'La date de d&eacute;but est requise.',
    178184    'validation_date_format' => 'Format attendu : jj/mm/aaaa',
     185    'validation_date_chronologie' => 'La date de fin ne peut pas pr&eacute;c&eacute;der la date de d&eacute;but !',
    179186    'validation_refobj_format' => 'Format attendu : [type][id]. ex : article23 ; breve45',
    180187    'validation_rubrique' => 'La rubrique est requise.',
  • _plugins_/simple_calendrier/trunk/prive/contenu/simplecal-demo.html

    r51438 r53019  
    55
    66#SIMPLE_CALENDRIER
    7 
    8 <script type="text/javascript">
    9     $(".ui-datepicker").show();
    10 </script>
    117
    128
  • _plugins_/simple_calendrier/trunk/prive/simplecal_style_prive.css

    r51982 r53019  
    1 
    2 .logo-plugin { text-align:center; }
    3 .logo-plugin-desc { text-align:center; }
    4 
    51#simplecal-filtres { padding-left:1.5em; margin-left:0; }
    62#simplecal-filtres li { padding-left:0px; }
     
    1511.simplecal-formulaire-succes span { color:Green; font-weight:bold; }
    1612
     13.formulaire_configurer_evenements fieldset p { margin-bottom:0px; }
     14.formulaire_configurer_evenements ul li { padding-left:2em; }
     15.formulaire_configurer_evenements label.actif { font-weight:bold; }
    1716
    18 #configurer-simplecal ul { list-style-type:none; padding:0; margin:0; }
    19 #configurer-simplecal .submit { float:right; }
    20 #configurer-simplecal label.actif { font-weight:bold; }
    21 #configurer-simplecal th small { font-weight: normal; }
    22 #configurer-simplecal .titre-champ { display:inline-block; width:120px; }
    2317
    2418.simplecal-nbinrub { margin-bottom:0.5em; padding:0 0.5em 0.5em; border-bottom:1px dotted #000000; }
  • _plugins_/simple_calendrier/trunk/public/simplecal_criteres.php

    r51309 r53019  
    8484}
    8585
     86
     87// {de_lannee 2011}
     88function critere_de_lannee_dist($idb, &$boucles, $crit) {
     89    $boucle = &$boucles[$idb];
     90    $table = $boucle->id_table;
     91    $not = $crit->not;
     92   
     93    // definition de l'annee demandée
     94    $annee = !isset($crit->param[0][0]) ? "''" : calculer_liste(array($crit->param[0][0]), array(), $boucles, $boucle->id_parent);
     95    // $annee = "'2011'";
     96    // $annee = strtr($annee, "'", ""); // ne change rien !
     97    $tab = split("'", $annee);
     98    $annee = $tab[1];
     99    //die("resultat = ".$annee."-m-d");
     100
     101   
     102    $c = array("'OR'",
     103        array("'LIKE'", "'$table.date_debut'", "'\'%$annee%\''"),       
     104        array("'LIKE'", "'$table.date_fin'", "'\'%$annee%\''")
     105    );
     106   
     107    // Inversion de la condition ?
     108    $c = ($not ? array("'NOT'", $c) : $c);
     109       
     110    $boucle->where[] = $c;
     111}
     112
     113// {date_like 2011-08}
     114function critere_date_like_dist($idb, &$boucles, $crit) {
     115    $boucle = &$boucles[$idb];
     116    $table = $boucle->id_table;
     117    $not = $crit->not;
     118   
     119    // recuperation du parametre
     120    $like = !isset($crit->param[0][0]) ? "''" : calculer_liste(array($crit->param[0][0]), array(), $boucles, $boucle->id_parent);
     121    // $like = "'2011'";
     122    // $like = strtr($like, "'", ""); // ne change rien !
     123    $tab = split("'", $like);
     124    $like = $tab[1];
     125    //die("resultat = ".$like."-m-d");
     126
     127   
     128    $c = array("'OR'",
     129        array("'LIKE'", "'$table.date_debut'", "'\'%$like%\''"),       
     130        array("'LIKE'", "'$table.date_fin'", "'\'%$like%\''")
     131    );
     132   
     133    // Inversion de la condition ?
     134    $c = ($not ? array("'NOT'", $c) : $c);
     135       
     136    $boucle->where[] = $c;
     137}
     138
    86139?>
  • _plugins_/simple_calendrier/trunk/simplecal_autoriser.php

    r51863 r53019  
    2828}
    2929
    30 // Idem mais pour le plugin 'bando'
    31 function autoriser_bt_simplecal_accueil_bando($faire, $type, $id, $qui, $opt) {
    32         return in_array($qui['statut'], array('0minirezo', '1comite'));
    33 }
    3430
    3531// Remarque : Cette fonction est aussi appelée au niveau du core (API des listings - cf. inc/afficher_objets.php)
     
    3733// Ce qui pose problème car basé sur une table evenement différente de celle du plugin "simple-calendrier" !
    3834// il est donc normal que le plugin "simple-calendrier" la déclare pour son usage propre.
    39 // => celle du plugin "Acces restreint" ne sera donc pas utilisée (sauf si chargée en 1er => crash... cf. doc. pb connus)
     35// => celle du plugin "Acces restreint" ne sera donc pas utilisée.
    4036// => cela tombe bien puisqu'il ne s'en sert pas lui-même
    4137//    et que les plugins "simple-calendrier" et "agenda 2" sont naturellement incompatibles)
  • _plugins_/simple_calendrier/trunk/simplecal_options.php

    r51309 r53019  
    1111define("_DIR_SIMPLECAL_PRIVE", _DIR_PLUGIN_SIMPLECAL."prive/");
    1212
    13 
    14 // Necessaire au bouton d'administration 'Evènement 123' de l'espace public
    15 // Mais pour le voir, il faut rajouter un 'evenement' dans le foreach de admin_objet() dans /ecrire/balise/formulaire_admin.php
    16 function generer_url_ecrire_evenement($id, $args='', $ancre='', $statut='', $connect='') {
    17         $a = "id_evenement=" . intval($id);
    18         if (!$statut) {
    19                 $statut = sql_getfetsel('statut', 'spip_evenements', $a,'','','','',$connect);
    20         }
    21         $h = ($statut == 'publie' OR $connect)
    22         ? generer_url_entite_absolue($id, 'evenement', $args, $ancre, $connect)
    23         : (generer_url_ecrire('evenement_voir', $a . ($args ? "&$args" : ''))
    24                 . ($ancre ? "#$ancre" : ''));
    25         return $h;
    26 }
     13include_spip('inc/simplecal_classement'); // pour la page evenements !
    2714
    2815
     
    3825
    3926
     27// 2008-12-23 -> 2009-02-14
     28// 2009-01
     29// debut <= 2009-01-31 ET fin >= 2009-01-01
     30
     31
     32
     33function simplecal_evenements_where($mode='', $annee='', $mois=''){
     34   
     35    // Note : date_fin non obligatoire => like nécessaire
     36   
     37    if ($annee && $mois) {
     38        $date_min = $annee."-".$mois."01";
     39        $date_max = $annee."-".$mois."31";
     40        $req = "((date_debut like '%".$annee."-".$mois."%'";
     41        $req .= " OR date_fin like '%".$annee."-".$mois."%')";
     42        $req .= " OR (date_debut <= '$date_max' AND date_fin >= '$date_min'))";
     43    } else if ($annee && !$mois) {
     44        $date_min = $annee."-01-01";
     45        $date_max = $annee."-12-31";
     46        $req = "((date_debut like '%".$annee."%'";
     47        $req .= " OR date_fin like '%".$annee."%')";
     48        $req .= " OR (date_debut <= '$date_max' AND date_fin >= '$date_min'))";
     49    } else if ($mode == 'avenir') {
     50        $req = "(date_debut >= DATE_FORMAT(NOW(),'%Y-%m-%d')";
     51        $req .= " OR date_fin >= DATE_FORMAT(NOW(),'%Y-%m-%d'))";
     52    } else {
     53        $req = "";
     54    }
     55   
     56    return $req;
     57}
     58
    4059?>
  • _plugins_/simple_calendrier/trunk/simplecal_pipelines.php

    r51982 r53019  
    1616function simplecal_header_prive($flux){
    1717    $flux .= '<link rel="stylesheet" type="text/css" href="'._DIR_SIMPLECAL_PRIVE.'simplecal_style_prive.css" />';
     18   
     19    //  CSS DatePicker : voir dans 'prive/css/datepicker/' - plus de thèmes : http://jqueryui.com/themeroller/
     20    $theme_prive = $GLOBALS['meta']['simplecal_themeprive'];
     21    // ---
     22    $flux .= '<link rel="stylesheet" type="text/css" href="'._DIR_SIMPLECAL_PRIVE.'css/datepicker/'.$theme_prive.'/ui.theme.css" />';
     23    $flux .= '<link rel="stylesheet" type="text/css" href="'._DIR_SIMPLECAL_PRIVE.'css/datepicker/'.$theme_prive.'/ui.core.css" />';
     24    $flux .= '<link rel="stylesheet" type="text/css" href="'._DIR_SIMPLECAL_PRIVE.'css/datepicker/'.$theme_prive.'/ui.datepicker.css" />';
     25    // ---   
     26   
    1827    return $flux;
    1928}
     
    2130// Pipeline. Entete des pages de l'espace public
    2231function simplecal_insert_head($flux) {
    23     //  CSS DatePicker : voir dans 'prive/css/datepicker/' - thèmes basé sur : http://jqueryui.com/themeroller/
     32   
     33    //  CSS DatePicker : voir dans 'prive/css/datepicker/' - plus de thèmes : http://jqueryui.com/themeroller/
    2434    $theme_public = $GLOBALS['meta']['simplecal_themepublic'];
    2535    // ---
    26     $rc = "\n";
    27     $flux .= $rc.'<link rel="stylesheet" type="text/css" href="'._DIR_SIMPLECAL_PRIVE.'css/datepicker/'.$theme_public.'.css" />';
     36    $flux .= '<link rel="stylesheet" type="text/css" href="'._DIR_SIMPLECAL_PRIVE.'css/datepicker/'.$theme_public.'/ui.theme.css" />';
     37    $flux .= '<link rel="stylesheet" type="text/css" href="'._DIR_SIMPLECAL_PRIVE.'css/datepicker/'.$theme_public.'/ui.core.css" />';
     38    $flux .= '<link rel="stylesheet" type="text/css" href="'._DIR_SIMPLECAL_PRIVE.'css/datepicker/'.$theme_public.'/ui.datepicker.css" />';
    2839    // ---   
    2940   
     
    3445// Pipeline : éléments 'en cours' de la page d'accueil
    3546function simplecal_accueil_encours($flux) {
    36    
    37     $req_select = "e.*, a.id_auteur, a.nom";
    38     $req_from = "spip_evenements AS e, spip_auteurs_evenements as lien, spip_auteurs as a";
    39     $req_where = "e.id_evenement=lien.id_evenement AND lien.id_auteur = a.id_auteur";
    40     $req_orderby = "e.date_debut DESC, e.date_fin DESC";
    41      
    42     $req = array("SELECT"=>$req_select, "FROM"=>$req_from, "WHERE"=>$req_where." AND e.statut = 'prop'", "ORDER BY"=>$req_orderby);
    43        
    44     // Liste des evenements  'proposées à l'évaluation'
    45     $flux .= afficher_objets('evenement',_T('simplecal:liste_evenements_a_valider'), $req, '', false);
    46 
    47     return $flux;
    48 }
     47    $lister_objets = charger_fonction('lister_objets','inc');
     48
     49        $flux .= $lister_objets('evenements', array(
     50                'titre'=>afficher_plus_info(generer_url_ecrire('evenements', 'mode=avenir'))._T('simplecal:info_evenements_valider'),
     51                'statut'=>array('prop'),
     52                'par'=>'date'));
     53
     54        return $flux;
     55}
     56
     57
    4958
    5059// Pipeline : synthèse des éléments 'publiés' de la page d'accueil
    51 function simplecal_accueil_informations($flux) {
    52    
    53     $q = sql_select("COUNT(*) AS cnt, statut", 'spip_evenements', '', 'statut', '','', "COUNT(*)<>0");
    54  
    55     $cpt = array();
    56     while($row = sql_fetch($q)) {
    57         $cpt[$row['statut']] = $row['cnt'];
    58     }
    59     if ($cpt) {
    60         $res .= afficher_plus(generer_url_ecrire("evenement_tous",""))."<b>"._T('simplecal:titre_evenements')."</b>";
    61         $res .= "<ul style='margin:0px; padding-left: 20px; margin-bottom: 5px;'>";
    62         if (isset($cpt['prepa'])) $res .= "<li>"._T("texte_statut_en_cours_redaction").": " . $cpt['prepa'] .'</li>';
    63         if (isset($cpt['prop'])) $res .= "<li>"._T("texte_statut_attente_validation").": " . $cpt['prop'] . '</li>';
    64         if (isset($cpt['publie'])) $res .= "<li><b>"._T("texte_statut_publies").": " . $cpt['publie'] ."</b>" . '</li>';
    65         $res .= "</ul>";
    66        
    67         // ---
    68         $flux .= '<div class="verdana1">';
    69         $flux .= $res;
    70         $flux .= '</div>';
    71     }
    72    
    73     return $flux;
     60function simplecal_accueil_informations($texte) {
     61    $texte .= recuperer_fond('prive/squelettes/inclure/evenement-accueil-information', array());
     62    return $texte;
    7463}
    7564
    7665// Zone de contenu
    7766function simplecal_affiche_milieu($flux) {
    78 
    79     global $spip_lang_right;
    8067    $exec =  $flux['args']['exec'];
    8168   
    82     // On se trouve sur une rubrique
    83     if ($exec == 'naviguer') {
    84         $id_rubrique = intval($flux['args']['id_rubrique']);
    85     }
    86    
    87     // On se trouve sur la page d'accueil
    88     if ($exec == 'accueil'){
    89         // zone au dessous de la liste des rubriques
    90     }
    91    
    92     // On se trouve sur un article
    93     if ($exec == 'articles'){
     69    // Page de configuration
     70    if ($exec == "configurer_contenu") {
     71                $flux["data"] .=  recuperer_fond('prive/squelettes/inclure/configurer',array('configurer'=>'configurer_evenements'));
     72        }
     73   
     74    return $flux;
     75}
     76
     77
     78// OK SPIP3
     79function simplecal_affiche_auteurs_interventions($flux){
     80    $id_auteur = intval($flux['args']['id_auteur']);
     81   
     82    $lister_objets = charger_fonction('lister_objets','inc');
     83        $listing = $lister_objets('evenements', array(
     84                'titre'=>afficher_plus_info(generer_url_ecrire('evenements', 'mode=avenir'))._T('simplecal:liste_evenements_auteur'),
     85                'id_auteur'=>$id_auteur,
     86                'par'=>'date'));
     87
     88   
     89    $flux['data'] .= $listing;
     90    return $flux;
     91}
     92
     93
     94/**
     95 * Afficher le nombre d'evenements de l'auteur ou de la rubrique
     96 *
     97 */
     98function simplecal_boite_infos($flux){
     99    $type = $flux['args']['type'];
     100    $id = intval($flux['args']['id']);
     101   
     102    if ($type == 'auteur'){
     103        $n_evt = sql_countsel("spip_auteurs_liens", "id_auteur=".$id." and objet='evenement'");
     104    }
     105    if ($type == 'rubrique'){
     106        $n_evt = sql_countsel("spip_evenements", "statut='publie' and id_rubrique=".$id);
     107    }
     108   
     109    if ($type == 'auteur' or $type == 'rubrique'){
     110        if ($n_evt > 0){
     111            $aff = '<div>'.singulier_ou_pluriel($n_evt, 'simplecal:info_1_evenement', 'simplecal:info_n_evenements').'</div>';
     112        }       
     113        if (($pos = strpos($flux['data'],'<!--nb_elements-->'))!==FALSE) {
     114            $flux['data'] = substr($flux['data'],0,$pos).$aff.substr($flux['data'],$pos);
     115        }     
     116    }
    94117       
    95     }
    96    
    97     // On se trouve sur la page d'un mot clé
    98     // => liste des evenements liés à ce mot clé.
    99     if ($exec == 'mots_edit'){
    100         $id_mot = $flux['args']['id_mot'];
    101        
    102         $req_select = "e.*, a.id_auteur, a.nom";
    103         $req_from = "spip_evenements AS e";
    104         $req_from .= " LEFT JOIN spip_mots_evenements AS lien_m ON lien_m.id_evenement=e.id_evenement";
    105         $req_from .= " LEFT JOIN spip_auteurs_evenements AS lien_a ON lien_a.id_evenement=e.id_evenement";
    106         $req_from .= " LEFT JOIN spip_auteurs as a ON lien_a.id_auteur = a.id_auteur";
    107         $req_where = "lien_m.id_mot=".$id_mot;
    108         $req_orderby = "e.date_debut DESC, e.date_fin DESC";
    109         $req = array("SELECT"=>$req_select, "FROM"=>$req_from, "WHERE"=>$req_where, "ORDER BY"=>$req_orderby);
    110          
    111         $flux['data'] .= afficher_objets('evenement','<b>' . _T('simplecal:info_evenements_liees_mot') . '</b>', $req);
    112    }
    113    
    114     // On se trouve sur un auteur dans la section 'intervention'
    115     // (pipeline ajouté à la main dans auteur_infos.php (fichier customisé du core))
    116     if ($exec == 'auteur_infos_interventions'){
    117         $id_auteur = intval($flux['args']['id_auteur']);
    118        
    119         $req_select = "e.*, a.id_auteur, a.nom";
    120         $req_from = "spip_evenements AS e, spip_auteurs_evenements as lien, spip_auteurs as a";
    121         $req_where = "e.id_evenement=lien.id_evenement AND lien.id_auteur = a.id_auteur AND lien.id_auteur=".$id_auteur;
    122         $req_orderby = "e.date_debut DESC, e.date_fin DESC";
    123        
    124         $req = array("SELECT"=>$req_select, "FROM"=>$req_from, "WHERE"=>$req_where, "ORDER BY"=>$req_orderby);
    125        
    126         // Liste des évènements
    127         $flux['data'] .= afficher_objets('evenement',_T('simplecal:liste_evenements_auteur'), $req, '',false);
    128         $flux['data'] .= '<br class="nettoyeur" />';
    129     }
    130    
    131     // Page de configuration
    132     if ($exec == 'config_fonctions'){
    133         $s='<br />';
    134         $s.=debut_cadre_trait_couleur(_DIR_SIMPLECAL_IMG_PACK."simplecal-logo-24.png", true, "", _T('simplecal:config_titre'));
    135         $s.=recuperer_fond('prive/configurer/simplecal', array());
    136         $s.=fin_cadre_trait_couleur(true);
    137        
    138         $flux['data'] .= $s;
    139     }
    140    
    141118    return $flux;
    142119}
     
    147124    $metas['simplecal_rubrique'] = 'non'; // [non, secteur, partout]
    148125    $metas['simplecal_refobj'] = 'non';   // [oui, non]
    149     $metas['simplecal_descriptif'] = 'oui';   // [oui, non]
    150     $metas['simplecal_texte'] = 'oui';  // [oui, non]
    151     $metas['simplecal_lieu'] = 'oui';   // [oui, non]
    152     $metas['simplecal_lien'] = 'non';   // [oui, non]
     126    $metas['simplecal_themeprive'] = 'base';
    153127    $metas['simplecal_themepublic'] = 'base';
    154128    return $metas;
     
    328302}
    329303
    330 
    331 // pipeline : pour que le plugin spip-jqueryui rappatrie jquery-ui
    332 function simplecal_jqueryui_forcer($scripts){
    333     $scripts[] = "jquery.ui.datepicker";
    334     return $scripts;
    335 }
    336 
    337 
    338304?>
Note: See TracChangeset for help on using the changeset viewer.