Changeset 53019 in spip-zone
- Timestamp:
- Oct 8, 2011, 4:32:12 PM (9 years ago)
- 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 1 1 <?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 13 if (!defined("_ECRIRE_INC_VERSION")) return; 14 15 function 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 2 35 /** 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 6 40 */ 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 41 function 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 */ 97 function 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 */ 136 function 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 227 function insert_evenement($id_rubrique) { 228 return evenement_inserer($id_rubrique); 229 } 230 function revisions_evenements ($id_evenement, $set=false) { 231 return evenement_modifier($id_evenement,$set); 232 } 136 233 ?> -
_plugins_/simple_calendrier/trunk/balise/simple_calendrier.php
r51438 r53019 97 97 98 98 $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;">'; 100 100 $s .= $rc.'<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix ui-corner-all">'; 101 101 //$s .= ' <a class="ui-datepicker-prev ui-corner-all" title="'._T('simplecal:date_precedent').'" href="#">'; … … 111 111 $s .= $rc.'</div>'; 112 112 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">'; 116 114 $s .= $rc.'<thead>'; 117 115 $s .= $rc.'<tr>'; -
_plugins_/simple_calendrier/trunk/base/simplecal_base.php
r51982 r53019 9 9 10 10 11 function 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 } 11 28 12 // Declaration des tables principales 13 function simplecal_declarer_tables_ principales($tables_principales){29 30 function simplecal_declarer_tables_objets_sql($tables){ 14 31 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" 33 50 ); 34 51 35 // champs qui possede les cles36 $ evenements_key = array(52 // champs qui possedent les cles 53 $key = array( 37 54 "PRIMARY KEY" => "id_evenement", 38 55 "KEY id_secteur" => "id_secteur", … … 41 58 42 59 // champs candidats à la jointure 43 $ evenements_join = array(60 $join = array( 44 61 "id_evenement" => "id_evenement", 45 62 "id_secteur" => "id_secteur", 46 63 "id_rubrique" => "id_rubrique" 47 64 ); 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'), 55 113 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; 57 128 } 58 129 59 // Declarations des tables auxiliaires (de jointures)60 function simplecal_declarer_tables_auxiliaires($tables_auxiliaires){61 62 // Table de jointure auteurs_evenements63 $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_evenements72 $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 tables82 $tables_auxiliaires['spip_auteurs_evenements'] = array(83 'field' => &$evenements_auteurs,84 'key' => &$evenements_auteurs_key85 );86 87 $tables_auxiliaires['spip_mots_evenements'] = array(88 'field' => &$evenements_mots,89 'key' => &$evenements_mots_key90 );91 92 return $tables_auxiliaires;93 }94 95 // cf. http://programmer.spip.org/declarer_tables_interfaces,37996 function simplecal_declarer_tables_interfaces($interface){97 98 // ----------------------------------------99 // Definir des alias pour les boucles SPIP100 // ----------------------------------------101 102 // Boucle ['evenements'] sur la table spip_evenements103 $interface['table_des_tables']['evenements'] = 'evenements';104 105 // ---------------------------------106 // Indiquer les jointures possibles107 // ---------------------------------108 109 // Jointures entre auteurs et evenements110 // 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 evenements119 $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 propres129 // ------------------------------130 $interface['table_titre']['evenements'] = "titre, '' AS lang";131 132 // -------------------------------------------133 // Traitements par défaut sur certains champs134 // -------------------------------------------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 date143 $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 155 130 ?> -
_plugins_/simple_calendrier/trunk/exec/simplecal_demo.php
r51309 r53019 48 48 // Affichage du bloc des raccourcis 49 49 $raccourcis = ""; 50 $lien = generer_url_ecrire("evenement _tous", "mode=avenir");50 $lien = generer_url_ecrire("evenements", "mode=avenir"); 51 51 $racc_tous = icone_horizontale(_T('simplecal:raccourcis_tous_evenements'), $lien, _DIR_SIMPLECAL_IMG_PACK."simplecal-logo-24.png", "", false); 52 52 $raccourcis .= $racc_tous; -
_plugins_/simple_calendrier/trunk/formulaires/editer_evenement.html
r51982 r53019 38 38 39 39 [(#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]"> 42 42 <label for="id_parent"><:titre_cadre_interieur_rubrique:><em class="aide">#AIDER{id_parent}</em></label> 43 43 [<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>] 47 46 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> 51 50 [<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>] 56 54 57 55 58 56 [(#REM) 'Lieu' est un champ optionnel] 59 [(#ENV{config_lieu}|=={oui}|oui)60 57 <li class="editer_descriptif[ (#ENV**{erreurs}|table_valeur{lieu}|oui)erreur]"> 61 58 <label for="lieu"><:simplecal:info_lieu:> : </label> … … 63 60 <input type="text" id="lieu" name="lieu" value="#ENV{lieu}" class="text" size="20" /> 64 61 </li> 65 ]66 62 67 63 68 64 [(#REM) 'Descriptif' est un champ obligatoire] 69 [(#ENV{config_descriptif}|=={oui}|oui)70 65 <li class="editer_descriptif[ (#ENV**{erreurs}|table_valeur{descriptif}|oui)erreur]"> 71 66 <label for="ta_descriptif"><:simplecal:info_descriptif_rapide:> : </label> … … 73 68 <textarea name='descriptif' id='ta_descriptif'[ lang='(#LANG)'] rows='5' cols='40'>[(#ENV**{descriptif})]</textarea> 74 69 </li> 75 ]76 70 77 71 [(#REM) 'Reference' est un champ optionnel] 78 [(#ENV {config_reference}|=={oui}|oui)72 [(#ENV**{config}|table_valeur{simplecal_refobj}|=={oui}|oui) 79 73 <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> 84 75 [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{ref})</span>] 85 76 <div class="explication"><:simplecal:explication_ref:></div> … … 89 80 90 81 [(#REM) 'Texte' est un champ optionnel] 91 [(#ENV{config_texte}|=={oui}|oui)92 82 <li class="editer_descriptif[ (#ENV**{erreurs}|table_valeur{texte}|oui)erreur]"> 93 83 <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:>] 96 86 </label> 97 87 [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{texte})</span>] … … 99 89 <textarea name='texte' id='texte' class='inserer_barre_edition inserer_previsualisation'[ lang='(#LANG)'] rows='20' cols='40'>[(#ENV**{texte})]</textarea> 100 90 </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 124 91 </ul> 125 92 -
_plugins_/simple_calendrier/trunk/formulaires/editer_evenement.php
r51982 r53019 8 8 if (!defined("_ECRIRE_INC_VERSION")) return; 9 9 10 //include_spip('inc/actions');11 //include_spip('inc/editer');10 include_spip('inc/actions'); 11 include_spip('inc/editer'); 12 12 include_spip('inc/simplecal_utils'); 13 13 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.) 14 function 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); 19 17 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"]); 101 21 102 22 return $valeurs; 103 23 } 104 24 25 /** 26 * Identifier le formulaire en faisant abstraction des parametres qui 27 * ne representent pas l'objet edite 28 */ 29 function 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 } 105 32 106 // V comme Verifier107 function formulaires_editer_evenement_verifier_dist($new='', $id_evenement='', $row=array(), $redirect='', $config=array()){108 33 109 $erreurs = array(); 34 // Choix par defaut des options de presentation 35 function 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 47 function 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); 110 52 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'); 115 60 } 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 130 62 // Date de fin saisie correctement ? 131 63 $date_fin = trim(_request('date_fin')); … … 133 65 $erreurs['date_fin'] = _T('simplecal:validation_date_format'); 134 66 } 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 } 153 78 } 154 79 } 155 } 80 } 156 81 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 } 163 84 85 function 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"))); 164 90 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); 172 92 } 173 93 174 94 175 176 // T comme Traiter177 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 // parent195 $id_parent = trim(_request('id_parent'));196 if (empty($id_parent)){197 $id_parent = 0;198 $id_secteur = 0;199 }200 201 // calcul du secteur202 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éation212 if ($new == 'oui'){213 $data['statut'] = 'prepa';214 $data['date'] = $date_enregistrement;215 }216 // Mode modification217 else {218 $data['statut'] = $row['statut'];219 }220 221 222 // Autres champs223 $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ée231 // => 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ée237 // => 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ée243 // => 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ée250 // => 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ée258 // => 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ée272 // => on ne touche pas aux données qu'ils pourraient y avoir... (réactivation ultérieure ?)273 }274 275 276 // Enregistrement / Mise à jour277 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 // Auteur287 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 301 95 ?> -
_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> 1 4 2 5 <script type="text/javascript"> 3 4 6 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:>']; 5 7 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:>']; … … 17 19 nextText: '<:simplecal:date_suivant:>', 18 20 showOn: 'button', 19 buttonImage: '#CHEMIN {img_pack/simplecal-datepicker.png}',21 buttonImage: '#CHEMIN_IMAGE{evenement-datepicker.png}', 20 22 buttonText: '<:simplecal:date_picto_title:>', 21 23 buttonImageOnly: true, -
_plugins_/simple_calendrier/trunk/inc/instituer_evenement.php
r51309 r53019 7 7 8 8 if (!defined("_ECRIRE_INC_VERSION")) return; 9 include_spip('inc/puce_statut'); 9 10 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 12 function inc_instituer_evenement($id_evenement, $statut=-1){ 19 13 if ($statut == -1) return ""; 20 14 … … 30 24 31 25 // Autorisation => retrait de certains statuts 32 if (!autoriser('publier', 'evenement', $id_ objet)) {26 if (!autoriser('publier', 'evenement', $id_evenement)) { 33 27 unset($etats['publie']); 34 28 unset($etats['refuse']); … … 44 38 // debut de code html du formulaire (partie fixe) 45 39 $res = 46 "<ul id='instituer_ sortie-$id_objet' class='instituer_breve instituer'>"40 "<ul id='instituer_evenement-$id_evenement' class='instituer_breve instituer'>" 47 41 . "<li>" . _T('simplecal:entree_evenement_publie') 48 42 ."<ul>"; 49 43 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"); 54 46 foreach($etats as $s=>$lib_statut){ 55 // 1- On complete le lien de redirection avec les parametres specifiques56 47 $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) { 61 50 $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 { 65 52 $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 } 66 64 } 67 65 68 // On y ajoute maintenant la fin du code hmtl (partie fixe)69 66 $res .= "</ul></li></ul>"; 70 67 71 // Puis on renvoie le tout !72 68 return $res; 73 69 } -
_plugins_/simple_calendrier/trunk/inc/simplecal_utils.php
r51413 r53019 202 202 $bloc.=$phrase; 203 203 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); 205 205 if (autoriser('creer', 'evenement', null)){ 206 206 $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); … … 245 245 246 246 function 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 247 252 // Version Php4 248 253 $dir_theme = _DIR_SIMPLECAL_PRIVE.'css/datepicker/'; 249 254 $dh = opendir($dir_theme); 250 255 while (false !== ($filename = readdir($dh))) { 251 if (substr($filename, -4, 4) == ".css"){ 252 $dirs[] = substr($filename, 0, strlen($filename)-4); 253 } 256 $dirs[] = $filename; 254 257 } 255 258 sort($dirs); 259 $dirs = array_slice ($dirs, 2); // retire les 2 premiers dossiers (. et ..) 260 256 261 // ----- 257 262 -
_plugins_/simple_calendrier/trunk/lang/simplecal_en.php
r51982 r53019 18 18 'auteur_msg_ajout' => 'Author added !', 19 19 'auteur_msg_retrait' => 'Author removed !', 20 'alt_img_logo' => 'Simple-Calendrier', 20 21 21 22 … … 25 26 26 27 // C 27 ' calendrier' => "calendar",28 'description_plugin' => 'Calendar', 28 29 'corbeille_tous' => "@nb@ events in garbage", 29 30 'corbeille_un' => "1 event in garbage", … … 32 33 'config_refobj_non' => "Disable text by reference", 33 34 '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.", 35 36 'config_autorisation_explication' => "You can choose if event creation are enabled for editors.", 36 37 '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", 37 39 'config_themepublic' => "Public area theme", 40 'config_datepicker' => "date picker", 38 41 'config_minicalendrier' => "little calendar", 39 42 'config_blocreference' => "References", … … 46 49 'config_rubrique_secteur' => 'Yes, create events in 1st level folder (sector).', 47 50 '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.',50 51 51 52 52 53 // D 53 'description_plugin' => 'Calendar',54 54 'date' => 'Date', 55 55 'dates' => 'Dates', … … 94 94 'entree_evenement_publie' => 'Status of the event :', 95 95 'enregistrer_dabord_une_fois' => "It's possible ! <br /><br />But first, please save this page one time...", 96 'evenement' => "Event", 97 'evenements' => "Events", 96 98 97 99 // F … … 108 110 'info_lieu' => 'Place', 109 111 '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)', 112 113 'info_texte' => 'Text', 113 114 'info_texte_2possibilites' => 'Text : specific (2\'nd possibility)', … … 125 126 'inconnu' => 'unknown', 126 127 'info_evenements_liees_mot' => 'Events associated with this keyword', 127 'info_1_evenement' => 'event', 128 'info_n_evenements' => 'events', 128 'info_1_evenement' => '1 event', 129 'info_n_evenements' => '@nb@ events', 130 'info_evenement' => 'event', 131 'icone_nouvel_evenement' => 'Write a new event', 132 'icone_evenements' => 'Events', 129 133 130 134 // L 131 135 'liste_evenements_prop' => "Events submitted for publication.", 132 'liste_evenements_a_valider' => "Events items to be validated.",133 136 'liste_evenements_publie' => "Events published.", 134 137 'liste_evenements_prepa' => "Events in progress.", … … 173 176 'titre_boite_refobj' => 'in calendar', 174 177 'titre_boite_rubrique' => 'Calendar', 178 'texte_objet' => "Event", 179 'texte_objets' => "Events", 175 180 176 181 // V -
_plugins_/simple_calendrier/trunk/lang/simplecal_fr.php
r51982 r53019 17 17 'auteur_msg_ajout' => 'Auteur ajouté !', 18 18 'auteur_msg_retrait' => 'Auteur retiré !', 19 'alt_img_logo' => 'Simple-Calendrier', 19 20 20 21 // B … … 23 24 24 25 // C 25 ' calendrier' => "calendrier",26 'description_plugin' => 'Calendrier', 26 27 'corbeille_tous' => "@nb@ évènements dans la corbeille", 27 28 'corbeille_un' => "1 évènement dans la corbeille", … … 30 31 'config_refobj_non' => "Désactiver le texte par référence", 31 32 'config_refobj_explication' => "Activer le 'texte par référence' pour permettre aux articles/breves de figurer dans le calendrier. C'est le texte de l'évènement qui pourra alors être remplacé par celui de l'article/de la brève choisi...", 32 'config_themes_explication' => "Vous pouvez choisir un th&e grave;me (jeu de couleurs)pour l'affichage du mini calendrier de l'espace public.",33 'config_themes_explication' => "Vous pouvez choisir un théme (jeu de couleurs) pour l'affichage du 'datepicker' dans l'espace privé ainsi que pour l'affichage du mini calendrier de l'espace public.", 33 34 'config_autorisation_explication' => "Indiquez qui est autorisé à créer des évènements.", 34 35 'config_rubrique_explication' => "Si vous souhaitez gérer un simple agenda pour votre site, inutile d'activer cette option. Au besoin, il vous est toujours possible d'utiliser les mots clés pour catégoriser vos évènements.<br />Si par contre, vous voulez gérer plusieurs agendas, et afficher les évènements en fonction de la rubrique visitée, cette option est faite pour vous.", 36 'config_themeprive' => "Thème espace privé", 35 37 'config_themepublic' => "Thème espace public", 38 'config_datepicker' => "date picker", 36 39 'config_minicalendrier' => "mini-calendrier", 37 40 'config_blocreference' => "Références", … … 44 47 'config_rubrique_secteur' => 'Oui, créer les évènements dans les secteurs seulement.', 45 48 'config_rubrique_non' => 'Non, cela n\'a pas de sens pour moi.', 46 'config_champs' => 'Contenu des évènements',47 'config_champs_explication' => 'Selon la maquette adoptée pour votre site, vous pouvez décider quels champs doivent être disponibles.',48 49 49 50 // D 50 'description_plugin' => 'Calendrier',51 51 'date' => 'Date', 52 52 'dates' => 'Dates', … … 92 92 'entree_evenement_publie' => 'Statut de cet évènement :', 93 93 'enregistrer_dabord_une_fois' => "C'est possible ! <br /><br />Pour cela, veuillez enregistrer la fiche une première fois...", 94 'evenement' => "Évènement", 95 'evenements' => "Évènements", 94 96 95 97 // F … … 106 108 'info_lieu' => 'Lieu', 107 109 'info_descriptif_rapide' => 'Descriptif rapide', 108 'info_ref_1pos' => 'Texte : par référence (1ère possibilité)', 109 'info_ref' => 'Texte : par référence', 110 'info_ref' => 'Texte : par référence (1ère possibilité)', 110 111 'info_texte' => 'Texte', 111 112 'info_texte_2possibilites' => 'Texte : spécifique (2ème possibilité)', … … 124 125 'info_evenements_liees_mot' => 'Les évènements liés à ce mot clé', 125 126 'info_1_evenement' => '1 évènement', 126 'info_n_evenements' => 'évènements', 127 'info_n_evenements' => '@nb@ évènements', 128 'info_evenement' => 'évènement', 129 'info_evenements' => 'Evènements', 130 'info_evenements_02' => 'Evènements', 131 'info_evenements_valider' => 'Evènements à valider', 132 'icone_nouvel_evenement' => 'Écrire un nouvel évènement', 133 'icone_evenements' => 'Evènements', 127 134 128 135 // L 129 136 'liste_evenements_prop' => "Evènements proposés à l'évaluation.", 130 'liste_evenements_a_valider' => "Evènements à valider.",131 137 'liste_evenements_publie' => "Evènements publiés.", 132 138 'liste_evenements_prepa' => "Evènements en cours de rédaction.", … … 168 174 'texte_issu_autre_objet' => 'Texte issu d\'un autre contenu', 169 175 'texte' => 'Texte', 170 'titre_evenements' => ' Evènements',176 'titre_evenements' => 'Les évènements', 171 177 'tous' => 'Tous', 172 178 'titre_boite_refobj' => 'dans le calendrier', 173 179 'titre_boite_rubrique' => 'Calendrier', 180 'titre_langue_evenement' => "LANGUE DE L'EVENEMENT", 174 181 175 182 // V 176 'validation_titre' => 'Le titre est indispensable !',177 183 'validation_date_debut' => 'La date de début est requise.', 178 184 'validation_date_format' => 'Format attendu : jj/mm/aaaa', 185 'validation_date_chronologie' => 'La date de fin ne peut pas précéder la date de début !', 179 186 'validation_refobj_format' => 'Format attendu : [type][id]. ex : article23 ; breve45', 180 187 'validation_rubrique' => 'La rubrique est requise.', -
_plugins_/simple_calendrier/trunk/prive/contenu/simplecal-demo.html
r51438 r53019 5 5 6 6 #SIMPLE_CALENDRIER 7 8 <script type="text/javascript">9 $(".ui-datepicker").show();10 </script>11 7 12 8 -
_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 5 1 #simplecal-filtres { padding-left:1.5em; margin-left:0; } 6 2 #simplecal-filtres li { padding-left:0px; } … … 15 11 .simplecal-formulaire-succes span { color:Green; font-weight:bold; } 16 12 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; } 17 16 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; }23 17 24 18 .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 84 84 } 85 85 86 87 // {de_lannee 2011} 88 function 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} 114 function 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 86 139 ?> -
_plugins_/simple_calendrier/trunk/simplecal_autoriser.php
r51863 r53019 28 28 } 29 29 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 }34 30 35 31 // Remarque : Cette fonction est aussi appelée au niveau du core (API des listings - cf. inc/afficher_objets.php) … … 37 33 // Ce qui pose problème car basé sur une table evenement différente de celle du plugin "simple-calendrier" ! 38 34 // 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. 40 36 // => cela tombe bien puisqu'il ne s'en sert pas lui-même 41 37 // et que les plugins "simple-calendrier" et "agenda 2" sont naturellement incompatibles) -
_plugins_/simple_calendrier/trunk/simplecal_options.php
r51309 r53019 11 11 define("_DIR_SIMPLECAL_PRIVE", _DIR_PLUGIN_SIMPLECAL."prive/"); 12 12 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 } 13 include_spip('inc/simplecal_classement'); // pour la page evenements ! 27 14 28 15 … … 38 25 39 26 27 // 2008-12-23 -> 2009-02-14 28 // 2009-01 29 // debut <= 2009-01-31 ET fin >= 2009-01-01 30 31 32 33 function 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 40 59 ?> -
_plugins_/simple_calendrier/trunk/simplecal_pipelines.php
r51982 r53019 16 16 function simplecal_header_prive($flux){ 17 17 $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 18 27 return $flux; 19 28 } … … 21 30 // Pipeline. Entete des pages de l'espace public 22 31 function 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/ 24 34 $theme_public = $GLOBALS['meta']['simplecal_themepublic']; 25 35 // --- 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" />'; 28 39 // --- 29 40 … … 34 45 // Pipeline : éléments 'en cours' de la page d'accueil 35 46 function 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 49 58 50 59 // 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; 60 function simplecal_accueil_informations($texte) { 61 $texte .= recuperer_fond('prive/squelettes/inclure/evenement-accueil-information', array()); 62 return $texte; 74 63 } 75 64 76 65 // Zone de contenu 77 66 function simplecal_affiche_milieu($flux) { 78 79 global $spip_lang_right;80 67 $exec = $flux['args']['exec']; 81 68 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 79 function 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 */ 98 function 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 } 94 117 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ènements127 $flux['data'] .= afficher_objets('evenement',_T('simplecal:liste_evenements_auteur'), $req, '',false);128 $flux['data'] .= '<br class="nettoyeur" />';129 }130 131 // Page de configuration132 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 141 118 return $flux; 142 119 } … … 147 124 $metas['simplecal_rubrique'] = 'non'; // [non, secteur, partout] 148 125 $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'; 153 127 $metas['simplecal_themepublic'] = 'base'; 154 128 return $metas; … … 328 302 } 329 303 330 331 // pipeline : pour que le plugin spip-jqueryui rappatrie jquery-ui332 function simplecal_jqueryui_forcer($scripts){333 $scripts[] = "jquery.ui.datepicker";334 return $scripts;335 }336 337 338 304 ?>
Note: See TracChangeset
for help on using the changeset viewer.