Browse Source

Des branches bien rangées.

1_9_2
marcimat@rezo.net 4 years ago
commit
e1e82df255
  1. 52
      .gitattributes
  2. 46
      action/editer_evenement.php
  3. 67
      action/instituer_groupe_mots.php
  4. 29
      action/voir_evenement.php
  5. 18
      agenda.html
  6. 94
      agenda.php
  7. 52
      agenda_jour.html
  8. 42
      agenda_mes_fonctions.php
  9. 96
      agenda_mes_options.php
  10. 7
      agenda_mois.html
  11. 8
      agenda_periode.html
  12. 7
      agenda_semaine.html
  13. 113
      balise/calendrier_mini.php
  14. 89
      balise/formulaire_edition_evenement.php
  15. 107
      base/agenda_evenements.php
  16. 108
      base/agenda_upgrade.php
  17. 173
      demo_calendrier_mini.html
  18. 86
      exec/agenda_evenements.php
  19. 112
      exec/agenda_test.php
  20. 17
      exec/editer_evenement.php
  21. 220
      exec/mots_tous.php
  22. 220
      exec/mots_type.php
  23. 22
      exec/voir_agenda.php
  24. 33
      exec/voir_evenement.php
  25. 35
      formulaires/calendrier_mini.html
  26. 115
      formulaires/formulaire_edition_evenement.html
  27. 20
      ical-agenda.html
  28. BIN
      img_pack/agenda-12.png
  29. BIN
      img_pack/agenda-24.png
  30. BIN
      img_pack/agenda-48.png
  31. 262
      img_pack/agenda.css
  32. 84
      img_pack/agenda_articles.css
  33. 511
      img_pack/calendrier.css
  34. BIN
      img_pack/croix.png
  35. 115
      img_pack/multiselect.js
  36. BIN
      img_pack/sans-heure.gif
  37. 1424
      inc/agenda.php.sav
  38. 211
      inc/agenda_filtres.php
  39. 434
      inc/agenda_gestion.php
  40. 256
      inc/agenda_saisie_rapide.php
  41. 222
      inc/editer_evenement.php
  42. 218
      inc/voir_agenda.php
  43. 168
      inc/voir_evenement.php
  44. 44
      lang/agenda_de.php
  45. 44
      lang/agenda_en.php
  46. 43
      lang/agenda_es.php
  47. 44
      lang/agenda_fr.php
  48. 44
      lang/agenda_nl.php
  49. 36
      lang/saisierapide_de.php
  50. 37
      lang/saisierapide_fr.php
  51. 49
      plugin.xml
  52. 121
      public/criteres_agenda.php

52
.gitattributes

@ -0,0 +1,52 @@
* text=auto !eol
action/editer_evenement.php -text
action/instituer_groupe_mots.php -text
action/voir_evenement.php -text
/agenda.html -text
/agenda.php -text
/agenda_jour.html -text
/agenda_mes_fonctions.php -text
/agenda_mes_options.php -text
/agenda_mois.html -text
/agenda_periode.html -text
/agenda_semaine.html -text
balise/calendrier_mini.php -text
balise/formulaire_edition_evenement.php -text
base/agenda_evenements.php -text
base/agenda_upgrade.php -text
/demo_calendrier_mini.html -text
exec/agenda_evenements.php -text
exec/agenda_test.php -text
exec/editer_evenement.php -text
exec/mots_tous.php -text
exec/mots_type.php -text
exec/voir_agenda.php -text
exec/voir_evenement.php -text
formulaires/calendrier_mini.html -text
formulaires/formulaire_edition_evenement.html -text
/ical-agenda.html -text
img_pack/agenda-12.png -text
img_pack/agenda-24.png -text
img_pack/agenda-48.png -text
img_pack/agenda.css -text
img_pack/agenda_articles.css -text
img_pack/calendrier.css -text
img_pack/croix.png -text
img_pack/multiselect.js -text
img_pack/sans-heure.gif -text
inc/agenda.php.sav -text
inc/agenda_filtres.php -text
inc/agenda_gestion.php -text
inc/agenda_saisie_rapide.php -text
inc/editer_evenement.php -text
inc/voir_agenda.php -text
inc/voir_evenement.php -text
lang/agenda_de.php -text
lang/agenda_en.php -text
lang/agenda_es.php -text
lang/agenda_fr.php -text
lang/agenda_nl.php -text
lang/saisierapide_de.php -text
lang/saisierapide_fr.php -text
/plugin.xml -text
public/criteres_agenda.php -text

46
action/editer_evenement.php

@ -0,0 +1,46 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip("inc/agenda_gestion");
include_spip("inc/editer_evenement");
function action_editer_evenement_dist()
{
$securiser_action = charger_fonction('securiser_action', 'inc');
$securiser_action();
$arg = explode('-',_request('arg'));
$id_article = $arg[0];
$action = $arg[1];
$id_evenement = $arg[2];
$redirect = urldecode(_request('redirect'));
if ($action=='modifier')
//if (autoriser())
$id_evenement = Agenda_action_formulaire_article($id_article,$id_evenement);
elseif ($action=='supprimer')
//if (autoriser())
$id_evenement = Agenda_action_supprime_evenement($id_article,$id_evenement);
elseif ($action=='saisierapidecompiler'){
$redirect = parametre_url($redirect,'evenements_saisie_rapide',_request('evenements_saisie_rapide'),'&');
$id_evenement = 0;
}
elseif ($action=='saisierapidecreer'){
include_spip('inc/agenda_saisie_rapide');
$evenements_saisie_rapide = _request('evenements_saisie_rapide');
$t = Agenda_compile_texte_saisie_rapide($evenements_saisie_rapide);
foreach($t as $e) if(count($e)) {
$e['evenement_insert']=1;
Agenda_action_formulaire_article($id_article,$id_evenement,$e);
}
}
if ($redirect){
if ($id_evenement)
$redirect = parametre_url($redirect,'id_evenement',$id_evenement,'&');
redirige_par_entete($redirect);
}
}
?>

67
action/instituer_groupe_mots.php

@ -0,0 +1,67 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2006 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/filtres');
include_spip('base/abstract_sql');
// https://code.spip.net/@action_instituer_groupe_mots_dist
function action_instituer_groupe_mots_dist()
{
$securiser_action = charger_fonction('securiser_action', 'inc');
$securiser_action();
$arg = _request('arg');
if (preg_match(",^([a-zA-Z_]\w+)$,", $arg, $r))
action_instituer_groupe_mots_get($arg);
elseif (!preg_match(",^(-?\d+)$,", $arg, $r)) {
spip_log("action_instituer_groupe_mots_dist $arg pas compris");
} else action_instituer_groupe_mots_post($r);
}
// https://code.spip.net/@action_instituer_groupe_mots_post
function action_instituer_groupe_mots_post($r)
{
global $acces_comite, $acces_forum, $acces_minirezo, $new, $articles, $breves, $change_type, $descriptif, $id_groupe, $obligatoire, $rubriques, $syndic, $evenements, $pim_agenda, $texte, $unseul;
$id_groupe = $r[1];
if ($id_groupe < 0){
spip_query("DELETE FROM spip_groupes_mots WHERE id_groupe=" . (0- $id_groupe));
} else {
$change_type = (corriger_caracteres($change_type));
$texte = (corriger_caracteres($texte));
$descriptif = (corriger_caracteres($descriptif));
if ($id_groupe) { // modif groupe
spip_query("UPDATE spip_mots SET type=" . _q($change_type) . " WHERE id_groupe=$id_groupe");
spip_query("UPDATE spip_groupes_mots SET titre=" . _q($change_type) . ", texte=" . _q($texte) . ", descriptif=" . _q($descriptif) . ", unseul=" . _q($unseul) . ", obligatoire=" . _q($obligatoire) . ", articles=" . _q($articles) . ", breves=" . _q($breves) . ", rubriques=" . _q($rubriques) . ", syndic=" . _q($syndic)
. (defined('_DIR_PLUGIN_AGENDA')?", evenements=" . _q(_request('evenements')):"")
. (defined('_DIR_PLUGIN_PIMAGENDA')?", pim_agenda=" . _q(_request('pim_agenda')):"")
. ", minirezo=" . _q($acces_minirezo) . ", comite=" . _q($acces_comite) . ", forum=" . _q($acces_forum) . " WHERE id_groupe=$id_groupe");
} else { // creation groupe
spip_abstract_insert('spip_groupes_mots', "(titre, texte, descriptif, unseul, obligatoire, articles, breves, rubriques, syndic,"
. (defined('_DIR_PLUGIN_AGENDA')?" evenements,":"")
. (defined('_DIR_PLUGIN_PIMAGENDA')?" pim_agenda,":"")
." minirezo, comite, forum)", "(" . _q($change_type) . ", " . _q($texte) . " , " . _q($descriptif) . " , " . _q($unseul) . " , " . _q($obligatoire) . " , " . _q($articles) . " ," . _q($breves) . " , " . _q($rubriques) . " , " . _q($syndic) . " , "
. (defined('_DIR_PLUGIN_AGENDA')?_q(_request('evenements')). " , ":"")
. (defined('_DIR_PLUGIN_PIMAGENDA')?_q(_request('pim_agenda')). " , ":"")
. _q($acces_minirezo) . " , " . _q($acces_comite) . " , " . _q($acces_forum) . " )");
}
}
}
?>

29
action/voir_evenement.php

@ -0,0 +1,29 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip("inc/agenda_gestion");
include_spip("inc/editer_evenement");
function action_voir_evenement_dist()
{
$securiser_action = charger_fonction('securiser_action', 'inc');
$securiser_action();
$arg = explode('-',_request('arg'));
$action = $arg[1];
$id_article = $arg[2];
$id_evenement = $arg[3];
$redirect = urldecode(_request('redirect'));
if ($action=='modifier'){
//if (autoriser())
$id_evenement = Agenda_action_formulaire_article($id_article,$id_evenement);
if ($id_evenement)
$redirect = parametre_url($redirect,'id_evenement',$id_evenement,'&');
}
if ($redirect){
redirige_par_entete($redirect);
}
}
?>

18
agenda.html

@ -0,0 +1,18 @@
#CACHE{7200}
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html dir="#LANG_DIR" lang="#LANG">
<head>
<title><:icone_agenda:> - [(#NOM_SITE_SPIP|textebrut)]</title>
[<meta name="description" content="(#DESCRIPTIF_SITE_SPIP|couper{150}|textebrut)" />]
<INCLURE{fond=inc-head}>
<meta name="robots" content="none" />
<link rel="stylesheet" href="#CHEMIN{agenda.css}" type="text/css" />
<link rel="stylesheet" href="#CHEMIN{img_pack/agenda.css}" type="text/css" />
<link rel="stylesheet" href="#CHEMIN{img_pack/calendrier.css}" type="text/css" />
<script type="text/javascript" src="#EVAL{_DIR_JAVASCRIPT}layer.js"> </script>
<script type="text/javascript" src="#EVAL{_DIR_JAVASCRIPT}presentation.js"> </script>
</head>
<body class="page_agenda">
[(#ENV{type, mois}|agenda_connu)<INCLURE {fond=agenda_#ENV{type,mois}} {type} {delais=900} {annee} {mois} {jour} {echelle} {partie_cal} {theme}>]
</body></html>

94
agenda.php

@ -0,0 +1,94 @@
<?php
function Agenda_ajouter_onglets($flux) {
if($flux['args']=='calendrier')
{
$flux['data']['evenements']= new Bouton(
'../'._DIR_PLUGIN_AGENDA.'/img_pack/agenda-24.png', _T('agenda:evenements'),
generer_url_ecrire("calendrier","type=semaine"));
$flux['data']['editorial']= new Bouton(
'cal-rv.png', _T('agenda:activite_editoriale'),
generer_url_ecrire("calendrier","mode=editorial&type=semaine"));
}
return $flux;
}
function Agenda_header_prive($flux) {
$exec = _request('exec');
// les CSS
if ($exec == 'calendrier'){
$flux .= '<link rel="stylesheet" href="' ._DIR_PLUGIN_AGENDA . '/img_pack/calendrier.css" type="text/css" />'. "\n";
$flux .= '<link rel="stylesheet" href="' ._DIR_PLUGIN_AGENDA . '/img_pack/agenda.css" type="text/css" />'. "\n";
}
if ($exec == 'articles'){
$flux .= '<link rel="stylesheet" href="' ._DIR_PLUGIN_AGENDA . '/img_pack/agenda_articles.css" type="text/css" />'. "\n";
}
return $flux;
}
function Agenda_exec_init($flux) {
$exec = $flux['args']['exec'];
if (($exec == 'calendrier')||($exec=='articles')){
include_spip('inc/calendar');
if (!function_exists('WCalendar_ajoute_lies')){
echo ('Erreur Wcalendar manquant');
return $flux;
}
// Reserver les widgets agenda
WCalendar_ajoute_lies(_T('agenda:evenement_date_debut'),'_evenement_debut',_T('agenda:evenement_date_fin'),'_evenement_fin');
WCalendar_ajoute_statique(_T('agenda:evenement_repetitions'),'_repetitions');
}
return $flux;
}
function Agenda_affiche_milieu($flux) {
$exec = $flux['args']['exec'];
if ($exec=='articles'){
include_spip('inc/calendar');
include_spip('inc/agenda_gestion');
$id_article = $flux['args']['id_article'];
$flux['data'] .= Agenda_formulaire_article($id_article, article_editable($id_article),'articles');
}
return $flux;
}
function Agenda_rendu_boite($titre,$descriptif,$lieu,$type='ics'){
$texte = "<span class='calendrier-verdana10'><span style='font-weight: bold;'>";
$texte .= wordwrap($sum=typo($titre),15)."</span>";
$texte .= "<span class='survol'>";
$texte .= "<strong>$sum</strong><br />";
$texte .= $lieu ? propre($lieu).'<br />':'';
$texte .= propre($descriptif);
$texte .= "</span>";
if ($type=='ics'){
$texte .= (strlen($lieu.$descriptif)?"<hr/>":"").$lieu.(strlen($lieu)?"<br/>":"");
$texte .= $descriptif;
}
$texte .= "</span>";
return $texte;
}
function Agenda_rendu_evenement($flux) {
global $couleur_claire;
$evenement = $flux['args']['evenement'];
$url = $evenement['URL'];
$texte = Agenda_rendu_boite($evenement['SUMMARY'],$evenement['DESCRIPTION'],$evenement['LOCATION'],$flux['args']['type']);
if (is_string($url))
$texte = http_href(quote_amp($url), $texte, '', '', '', '');
else if (is_array($url))
$texte = ajax_action_auteur(
$url['action'], $url['id'], $url['script'],
isset($url['args'])?$url['args']:'',
array($texte,""),
isset($url['args_ajax'])?$url['args_ajax']:'',
isset($url['fct_ajax'])?$url['fct_ajax']:'');
$flux['data'] = $texte;
return $flux;
}
?>

52
agenda_jour.html

@ -0,0 +1,52 @@
<BOUCLE_jour(EVENEMENTS)
{agendafull date_debut, date_fin, jour, #ENV{annee}, #ENV{mois}, #ENV{jour}}
>[(#DATE_DEBUT|Agenda_memo_full{#DATE_FIN,#TITRE,#DESCRIPTIF,#LIEU,#URL_ARTICLE,
calendrier-couleur[(#ENV{theme,0}|modulo{14,1})]})]</BOUCLE_jour>[(#DATE|Agenda_affiche_full{<:aucun_article:>, 'jour',
calendrier-couleur[(#ENV{theme,0}|modulo{14,1})]})][(#TOTAL_BOUCLE|?{' ',''})
<div style='position: fixed; top:50px; left: 20px'>
<table style='width: 10px'><tr>
<td class='calendrier-couleur1'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,0})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur2'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,1})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur3'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,2})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur4'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,3})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur5'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,4})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur6'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,5})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur7'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,6})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur8'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,7})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur9'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,8})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur10'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,9})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur11'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,10})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur12'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,11})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur13'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,12})]'>&nbsp;&nbsp;</a></td></tr>
<tr><td class='calendrier-couleur14'
><a style='text-decoration: none;'
href='[(#SELF|parametre_url{theme,13})]'>&nbsp;&nbsp;</a></td></tr>
</table>
</div>
]<//B_jour>

42
agenda_mes_fonctions.php

@ -0,0 +1,42 @@
<?php
//include_spip('inc/agenda_filtres'); // declaration directe dans le xml pour eviter un find_in_path
include_spip('public/criteres_agenda');
include_spip('inc/agenda_filtres');
function Agenda_heure_selector($date,$suffixe){
$d = strtotime($date);
$heure = date('H',$d);
$minute = date('i',$d);
return
afficher_heure($heure, "name='heure_evenement$suffixe' size='1' class='fondl'") .
afficher_minute($minute, "name='minute_evenement$suffixe' size='1' class='fondl'");
}
//
// <BOUCLE(EVENEMENTS)>
//
function boucle_EVENEMENTS_dist($id_boucle, &$boucles) {
$boucle = &$boucles[$id_boucle];
$id_table = $boucle->id_table;
$boucle->from[$id_table] = "spip_evenements";
$statut = $boucle->modificateur['criteres']['statut'];
if (!$statut) {
// Restreindre aux elements publies
// Si pas de lien avec un article, selectionner
// uniquement les auteurs d'un article publie
if (!$GLOBALS['var_preview'])
if (!isset($boucle->modificateur['lien']) AND !isset($boucle->modificateur['tout'])
AND (!isset($boucle->lien) OR !$boucle->lien) AND (!isset($boucle->tout) OR !$boucle->tout)) {
$boucle->from["articles"] = "spip_articles";
$boucle->where[]= array("'='", "'articles.id_article'", "'$id_table.id_article'");
$boucle->where[]= array("'='", "'articles.statut'", "'\"publie\"'");
$boucle->group[] = $boucle->id_table . '.' . $boucle->primary;
}
}
return calculer_boucle($id_boucle, $boucles);
}
?>

96
agenda_mes_options.php

@ -0,0 +1,96 @@
<?php
if (!defined('_DIR_PLUGIN_AGENDA')){
$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
define('_DIR_PLUGIN_AGENDA',(_DIR_PLUGINS.end($p)));
}
include_spip('base/agenda_evenements');
// securiser l'agenda herite de la dist/
if (isset($_REQUEST['partie_cal'])
AND $_REQUEST['partie_cal'] !== htmlentities($_REQUEST['partie_cal']))
die("No thanks");
if (isset($_REQUEST['echelle'])
AND $_REQUEST['echelle'] !== htmlentities($_REQUEST['echelle']))
die("No thanks");
//Pour 1.9.3: permet d'utiliser les criteres racine, meme_parent, id_parent
$exceptions_des_tables['evenements']['id_parent']='id_evenement_source';
function cron_agenda_nettoyer_base($t){
# les evenements lies a un article inexistant
$res = spip_query("SELECT evenements.id_evenement,evenements.id_article
FROM spip_evenements AS evenements
LEFT JOIN spip_articles AS articles
ON evenements.id_article=articles.id_article
WHERE articles.id_article IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_evenements
WHERE id_evenement=".$row['id_evenement']
." AND id_article=".$row['id_article']);
# les liens de mots affectes a des evenements effaces
$res = spip_query("SELECT mots_evenements.id_mot,mots_evenements.id_evenement
FROM spip_mots_evenements AS mots_evenements
LEFT JOIN spip_evenements AS evenements
ON mots_evenements.id_evenement=evenements.id_evenement
WHERE evenements.id_evenement IS NULL");
while ($row = spip_fetch_array($res,SPIP_ASSOC))
spip_query("DELETE FROM spip_mots_evenements
WHERE id_mot=".$row['id_mot']
." AND id_evenement=".$row['id_evenement']);
return 1;
}
function Agenda_taches_generales_cron($taches_generales){
$taches_generales['agenda_nettoyer_base'] = 3600*48;
return $taches_generales;
}
function exec_calendrier()
{
$mode = _request('mode');
if ($mode=='editorial'){
include_spip('exec/calendrier');
global $type, $css;
// icones standards, fonction de la direction de la langue
global $bleu, $vert, $jaune, $spip_lang_rtl;
$bleu = http_img_pack("m_envoi_bleu$spip_lang_rtl.gif", 'B', "class='calendrier-icone'");
$vert = http_img_pack("m_envoi$spip_lang_rtl.gif", 'V', "class='calendrier-icone'");
$jaune= http_img_pack("m_envoi_jaune$spip_lang_rtl.gif", 'J', "class='calendrier-icone'");
$date = date("Y-m-d", time());
if ($type == 'semaine') {
$GLOBALS['afficher_bandeau_calendrier_semaine'] = true;
$titre = _T('titre_page_calendrier',
array('nom_mois' => nom_mois($date), 'annee' => annee($date)));
}
elseif ($type == 'jour') {
$titre = nom_jour($date)." ". affdate_jourcourt($date);
}
else {
$titre = _T('titre_page_calendrier',
array('nom_mois' => nom_mois($date), 'annee' => annee($date)));
}
$res .= debut_page($titre, "redacteurs", "calendrier","",$css);
$res .= barre_onglets("calendrier", "editorial");
$res .= "<div>&nbsp;</div>" ;
$res .= http_calendrier_init('', $type, '','',generer_url_ecrire('calendrier', 'mode=editorial'.($type ? "&type=$type" : '')));
$res .= fin_page();
echo $res;
}
else{
$var_f = charger_fonction('agenda_evenements');
$var_f();
}
}
?>

7
agenda_mois.html

@ -0,0 +1,7 @@
<BOUCLE_mois(EVENEMENTS)
{agendafull date_debut,date_fin, mois, #ENV{annee}, #ENV{mois}}
>[(#DATE_DEBUT|Agenda_memo_full{#DATE_FIN,#TITRE,#DESCRIPTIF,#LIEU,#URL_ARTICLE,
calendrier-couleur[(#ID_SECTEUR|
modulo{14,1})]})]</BOUCLE_mois>[(#DATE|
Agenda_affiche_full{<:aucun_article:>, 'mois'}
)]<//B_mois>

8
agenda_periode.html

@ -0,0 +1,8 @@
<BOUCLE_periode(EVENEMENTS)
{agendafull date_debut, date_fin, periode,
#ENV{annee}, #ENV{mois}, #ENV{jour},
#ENV{annee_fin}, #ENV{mois_fin}, #ENV{jour_fin}}>[
(#DATE_DEBUT|Agenda_memo_full{#DATE_FIN,#TITRE,#DESCRIPTIF,#LIEU,#URL_ARTICLE, 'calendrier-couleur6'})
]</BOUCLE_periode>[(#DATE|
Agenda_affiche_full{<:aucun_article:>, 'periode', 'calendrier-couleur6'}
)]<//B_periode>

7
agenda_semaine.html

@ -0,0 +1,7 @@
<BOUCLE_semaine(EVENEMENTS)
{agendafull date_debut, date_fin, semaine, #ENV{annee}, #ENV{mois}, #ENV{jour}}
>[(#DATE_DEBUT|Agenda_memo_full{#DATE_FIN,#TITRE,#DESCRIPTIF,#LIEU,#URL_ARTICLE,
[(#COMPTEUR_BOUCLE|
alterner{'calendrier-couleur2', 'calendrier-couleur4'})]})]</BOUCLE_semaine>[(#DATE|
Agenda_affiche_full{<:aucun_article:>, 'semaine', 'calendrier-couleur2','calendrier-couleur4'}
)]<//B_semaine>

113
balise/calendrier_mini.php

@ -0,0 +1,113 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return; #securite
// Pas besoin de contexte de compilation
global $balise_CALENDRIER_MINI_collecte;
$balise_CALENDRIER_MINI_collecte = array('id_rubrique','id_article','id_mot');
function balise_CALENDRIER_MINI ($p) {
return calculer_balise_dynamique($p,'CALENDRIER_MINI', array('id_rubrique','id_article', 'id_mot'));
}
function balise_CALENDRIER_MINI_stat($args, $filtres) {
return $args;
}
function balise_CALENDRIER_MINI_dyn($id_rubrique=0, $id_article = 0, $id_mot = 0,$date, $var_date = 'date', $url = '') {
if(!$url)
$url = self();
// nettoyer l'url qui est passee par htmlentities pour raison de securités
$url = str_replace("&amp;","&",$url);
return array('formulaires/calendrier_mini', 0,
array(
'date' => $date,
'id_rubrique' => $id_rubrique,
'id_article' => $id_article,
'id_mot' => $id_mot,
'var_date' => $var_date,
'self' => $url,
));
}
function agenda_mini($i) {
$args = func_get_args();
$une_date = array_shift($args); // une date comme balise
$sinon = array_shift($args);
if (!$une_date) return $sinon;
$type = 'mini';
$agenda = Agenda_memo_full(0);
$evt = array();
foreach (($args ? $args : array_keys($agenda)) as $k) {
if (is_array($agenda[$k]))
foreach($agenda[$k] as $d => $v) {
$evt[$d] = $evt[$d] ? (array_merge($evt[$d], $v)) : $v;
}
}
$la_date = mktime(0, 0, 0, mois($une_date), 1, annee($une_date));
include_spip('inc/agenda');
return http_calendrier_init($la_date, $type, '', '', '', array('', $evt));
}
function http_calendrier_mini($annee, $mois, $jour, $echelle, $partie_cal, $script, $ancre, $evt) {
list($sansduree, $evenements, $premier_jour, $dernier_jour) = $evt;
if ($sansduree)
foreach($sansduree as $d => $r) {
$evenements[$d] = !$evenements[$d] ? $r :
array_merge($evenements[$d], $r);
}
if (!$premier_jour) $premier_jour = '01';
if (!$dernier_jour) {
$dernier_jour = 31;
while (!(checkdate($mois,$dernier_jour,$annee))) $dernier_jour--;
}
// affichage du debut de semaine hors periode
$ligne = '';
$debut = date("w",mktime(1,1,1,$mois,$premier_jour,$annee));
for ($i=$debut ? $debut : 7;$i>1;$i--) {
$mois_precedent = mktime(1,1,1,$mois-1,1,$annee);
$jour_mois_precedent = date('t', $mois_precedent)+2-$i;
$ligne .= "\n\t<td class=\"horsperiode\">$jour_mois_precedent</td>";
}
$total = '';
for ($j=$premier_jour; $j<=$dernier_jour; $j++) {
$nom = mktime(1,1,1,$mois,$j,$annee);
$jour = date("d",$nom);
$jour_semaine = date("w",$nom);
$mois_en_cours = date("m",$nom);
$annee_en_cours = date("Y",$nom);
$amj = date("Y",$nom) . $mois_en_cours . $jour;
if ($jour_semaine==1) {
$total .= "\n<tr>$ligne\n</tr>";
$ligne = '';
}
$evts = $evenements[$amj];
$class="";
if ($evts) {
$evts = "<a href='".parametre_url($evts[0]['URL'],'date',"$annee_en_cours-$mois_en_cours-$jour")."' title='".$evts[0]['SUMMARY'].
"'>".intval($jour)."</a>";
$class='occupe';
}
else {
$evts = intval($jour);
$class='libre';
}
$ligne .= "\n\t<td class='$class".($amj == date("Ymd")?' today':'')."'>" . $evts . "\n\t</td>";
}
$jour_mois_suivant=1;
// affichage de la fin de semaine hors periode
for($j=$jour_semaine ? $jour_semaine : 7; $j<7; $j++) {
$ligne .= "\n\t<td class=\"horsperiode\">".$jour_mois_suivant++."</td>";
}
return $total . ($ligne ? "\n<tr>$ligne\n</tr>" : '');
}
?>

89
balise/formulaire_edition_evenement.php

@ -0,0 +1,89 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return; #securite
include_spip('inc/editer_evenement');
// Pas besoin de contexte de compilation
global $balise_FORMULAIRE_EDITION_EVENEMENT_collecte;
$balise_FORMULAIRE_EDITION_EVENEMENT_collecte = array('id_evenement','id_article');
function balise_FORMULAIRE_EDITION_EVENEMENT ($p) {
return calculer_balise_dynamique($p,'FORMULAIRE_EDITION_EVENEMENT', array('id_evenement', 'id_article'));
}
function balise_FORMULAIRE_EDITION_EVENEMENT_stat($args, $filtres) {
return $args;
}
function balise_FORMULAIRE_EDITION_EVENEMENT_dyn($id_evenement = 0, $id_article = 0) {
$url = parametre_url(self(),'ajout_evenement','');
// nettoyer l'url qui est passee par htmlentities pour raison de securités
$url = str_replace("&amp;","&",$url);
if ($retour=='') $retour = $url;
$res = spip_query("SELECT * FROM spip_articles WHERE id_article="._q($id_article));
if (!spip_num_rows($res)) return;
$flag_modif = (_request('evenement_modif') && _request('id_evenement') == $id_evenement);
$flag_ajout = _request('evenement_insert');
$flag_supp = _request('supp_evenement')!==NULL;
if ($flag_supp) {
$_GET['supp_evenement']=$id_evenement;
$_GET['id_article']=$id_article;
}
if ($flag_ajout || $flag_modif || $flag_supp){
include_spip("inc/agenda_gestion");
Agenda_action_formulaire_article($id_article);
}
$evenement_action='evenement_insert';
$valeurs=array('mots'=>array(),'dates'=>array(),'evenement_horaire'=>'oui');
$formulaire_actif = _request('ajout_evenement')!=NULL;
// les champs
$res = spip_query("SELECT * FROM spip_evenements WHERE id_evenement="._q($id_evenement)." AND id_article="._q($id_article));
if ($row = spip_fetch_array($res,SPIP_ASSOC)){
$evenement_action='evenement_modif';
foreach($row as $k=>$val){
$valeurs["evenement_$k"]=$val;
}
// les mots
$res = spip_query("SELECT * FROM spip_mots_evenements WHERE id_evenement="._q($id_evenement));
while ($row=spip_fetch_array($res)){
$valeurs['mots'][]=$row['id_mot'];
}
$res = spip_query("SELECT date_debut FROM spip_evenements WHERE id_evenement_source="._q($id_evenement));
while ($row=spip_fetch_array($res)){
$valeurs['repetitions'][] = date('m/d/Y',strtotime($row['date_debut']));
}
$formulaire_actif = true;
}
$t=time();
$valeurs["date_evenement_debut"]=isset($valeurs["evenement_date_debut"])?$valeurs["evenement_date_debut"]:date('Y-m-d H:i:00',$t);
$valeurs["date_evenement_fin"]=isset($valeurs["evenement_date_fin"])?$valeurs["evenement_date_fin"]:date('Y-m-d H:i:00',$t+3600);
if (!$formulaire_actif) return;
return array('formulaires/formulaire_edition_evenement', 0,
array(
#'erreur_message'=>isset($erreur['@'])?$erreur['@']:'',
#'erreur'=>serialize($erreur),
#'reponse'=>filtrer_entites($reponse),
'id_article' => $id_article,
'id_evenement' => $id_evenement,
'evenement_action' => $evenement_action,
'self' => $url,
'valeurs' => serialize($valeurs),
'url_validation' => str_replace("&amp;","&",$url_validation),
#'affiche_sondage' => $affiche_sondage,
#'formok' => filtrer_entites($formok),
#'formactif' => $formactif,
));
}
?>

107
base/agenda_evenements.php

@ -0,0 +1,107 @@
<?php
// -----------------------------------------------------------------------------
// Declaration des tables evenements
// creation 11/03/2006 pour SPIP 1.9
include_spip('base/serial'); // pour eviter une reinit posterieure des tables modifiees
global $tables_principales;
global $tables_auxiliaires;
//-- Table EVENEMENTS ------------------------------------------
$evenements = array(
"id_evenement" => "bigint(21) NOT NULL",
"id_article" => "bigint(21) DEFAULT '0' NOT NULL",
"date_debut" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"date_fin" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"titre" => "text NOT NULL",
"descriptif" => "text NOT NULL",
"lieu" => "text NOT NULL",
"horaire" => "ENUM('oui','non') DEFAULT 'oui' NOT NULL",
"id_evenement_source" => "bigint(21) NOT NULL",
"idx" => "ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL",
"maj" => "TIMESTAMP"
);
$evenements_key = array(
"PRIMARY KEY" => "id_evenement",
"KEY date_debut" => "date_debut",
"KEY date_fin" => "date_fin",
"KEY id_article" => "id_article"
);
$tables_principales['spip_evenements'] =
array('field' => &$evenements, 'key' => &$evenements_key);
//-- Table de relations MOTS_EVENEMENTS----------------------
$spip_mots_evenements = array(
"id_mot" => "BIGINT (21) DEFAULT '0' NOT NULL",
"id_evenement" => "BIGINT (21) DEFAULT '0' NOT NULL");
$spip_mots_evenements_key = array(
"PRIMARY KEY" => "id_mot, id_evenement",
"KEY id_evenement" => "id_evenement");
$tables_auxiliaires['spip_mots_evenements'] = array(
'field' => &$spip_mots_evenements,
'key' => &$spip_mots_evenements_key);
//-- Jointures ----------------------------------------------------
global $tables_jointures;
$tables_jointures['spip_evenements'][]= 'mots'; // a placer avant la jointure sur articles
$tables_jointures['spip_articles'][]= 'evenements';
$tables_jointures['spip_evenements'][] = 'articles';
$tables_jointures['spip_mots'][]= 'mots_evenements';
$tables_jointures['spip_evenements'][] = 'mots_evenements';
global $exceptions_des_tables;
$exceptions_des_tables['evenements']['id_rubrique']=array('spip_articles', 'id_rubrique');
global $table_primary;
$table_primary['evenements']="id_evenement";
global $table_date;
$table_date['evenements'] = 'date_debut';
// si on declare les tables dans $table_des_tables, il faut mettre le prefixe
// 'spip_' dans l'index de $tables_principales
global $table_des_tables;
$table_des_tables['evenements']='evenements';
$table_des_tables['mots_evenements']='mots_evenements';
// Extension de la table des groupes de mots cles
$spip_groupes_mots = array(
"id_groupe" => "bigint(21) NOT NULL",
"titre" => "text NOT NULL",
"descriptif" => "text NOT NULL",
"texte" => "longblob NOT NULL",
"unseul" => "varchar(3) NOT NULL",
"obligatoire" => "varchar(3) NOT NULL",
"articles" => "varchar(3) NOT NULL",
"breves" => "varchar(3) NOT NULL",
"rubriques" => "varchar(3) NOT NULL",
"syndic" => "varchar(3) NOT NULL");
if (defined('_DIR_PLUGIN_AGENDA'))
$spip_groupes_mots = array_merge($spip_groupes_mots,array("evenements" => "varchar(3) NOT NULL"));
if (defined('_DIR_PLUGIN_PIMAGENDA'))
$spip_groupes_mots = array_merge($spip_groupes_mots,array("pim_agenda" => "varchar(3) NOT NULL"));
$spip_groupes_mots = array_merge($spip_groupes_mots,array(
"minirezo" => "varchar(3) NOT NULL",
"comite" => "varchar(3) NOT NULL",
"forum" => "varchar(3) NOT NULL",
"maj" => "TIMESTAMP"));
$spip_groupes_mots_key = array(
"PRIMARY KEY" => "id_groupe");
$tables_principales['spip_groupes_mots'] =
array('field' => &$spip_groupes_mots, 'key' => &$spip_groupes_mots_key);
global $table_des_traitements;
$table_des_traitements['LIEU'][]= 'propre(%s)';
?>

108
base/agenda_upgrade.php

@ -0,0 +1,108 @@
<?php
$GLOBALS['agenda_base_version'] = 0.13;
function Agenda_verifier_base(){
$version_base = $GLOBALS['agenda_base_version'];
$current_version = 0.0;
if ( (!isset($GLOBALS['meta']['agenda_base_version']) )
|| (($current_version = $GLOBALS['meta']['agenda_base_version'])!=$version_base)){
include_spip('base/agenda_evenements');
if ($current_version==0.0){
include_spip('base/create');
include_spip('base/abstract_sql');
creer_base();
// ajout du champ evenements a la table spip_groupe_mots
// si pas deja existant
$desc = spip_abstract_showtable("spip_groupes_mots", '', true);
if (!isset($desc['field']['evenements'])){
spip_query("ALTER TABLE spip_groupes_mots ADD `evenements` VARCHAR(3) NOT NULL AFTER `syndic`");
}
ecrire_meta('agenda_base_version',$current_version=$version_base,'non');
}
if ($current_version<0.11){
spip_query("ALTER TABLE spip_evenements ADD `horaire` ENUM('oui','non') DEFAULT 'oui' NOT NULL AFTER `lieu`");
ecrire_meta('agenda_base_version',$current_version=0.11,'non');
}
if ($current_version<0.12){
spip_query("ALTER TABLE spip_evenements ADD `id_article` bigint(21) DEFAULT '0' NOT NULL AFTER `id_evenement`");
spip_query("ALTER TABLE spip_evenements ADD INDEX ( `id_article` )");
$res = spip_query ("SELECT * FROM spip_evenements_articles");
while ($row = spip_fetch_array($res)){
$id_article = $row['id_article'];
$id_evenement = $row['id_evenement'];
spip_query("UPDATE spip_evenements SET id_article=$id_article WHERE id_evenement=$id_evenement");
}
spip_query("DROP TABLE spip_evenements_articles");
ecrire_meta('agenda_base_version',$current_version=0.12,'non');
}
if ($current_version<0.13){
include_spip('base/create');
include_spip('base/abstract_sql');
creer_base();
ecrire_meta('agenda_base_version',$current_version=0.13,'non');
}
ecrire_metas();
}
if (isset($GLOBALS['meta']['INDEX_elements_objet'])){
$INDEX_elements_objet = unserialize($GLOBALS['meta']['INDEX_elements_objet']);
if (!isset($INDEX_elements_objet['spip_evenements'])){
$INDEX_elements_objet['spip_evenements'] = array('titre'=>8,'descriptif'=>4,'lieu'=>3);
ecrire_meta('INDEX_elements_objet',serialize($INDEX_elements_objet));
ecrire_metas();
}
}
if (isset($GLOBALS['meta']['INDEX_objet_associes'])){
$INDEX_objet_associes = unserialize($GLOBALS['meta']['INDEX_objet_associes']);
if (!isset($INDEX_objet_associes['spip_articles']['spip_evenements'])){
$INDEX_objet_associes['spip_articles']['spip_evenements'] = 1;
ecrire_meta('INDEX_objet_associes',serialize($INDEX_objet_associes));
ecrire_metas();
}
}
if (isset($GLOBALS['meta']['INDEX_elements_associes'])){
$INDEX_elements_associes = unserialize($GLOBALS['meta']['INDEX_elements_associes']);
if (!isset($INDEX_elements_associes['spip_evenements'])){
$INDEX_elements_associes['spip_evenements'] = array('titre'=>2,'descriptif'=>1);
ecrire_meta('INDEX_elements_associes',serialize($INDEX_elements_associes));
ecrire_metas();
}
}
}
function Agenda_vider_tables() {
include_spip('base/agenda_evenements');
include_spip('base/abstract_sql');
// suppression du champ evenements a la table spip_groupe_mots
spip_query("ALTER TABLE spip_groupes_mots DROP evenements");
spip_query("DROP TABLE spip_evenements");
spip_query("DROP TABLE spip_mots_evenements");
effacer_meta('agenda_base_version');
ecrire_metas();
}
function Agenda_install($action){
$version_base = $GLOBALS['agenda_base_version'];
switch ($action){
case 'test':
return (isset($GLOBALS['meta']['agenda_base_version']) AND ($GLOBALS['meta']['agenda_base_version']>=$version_base)
AND isset($GLOBALS['meta']['INDEX_elements_objet'])
AND $t = unserialize($GLOBALS['meta']['INDEX_elements_objet'])
AND isset($t['spip_evenements'])
AND isset($GLOBALS['meta']['INDEX_objet_associes'])
AND $t = unserialize($GLOBALS['meta']['INDEX_objet_associes'])
AND isset($t['spip_articles']['spip_evenements'])
AND isset($GLOBALS['meta']['INDEX_elements_associes'])
AND $t = unserialize($GLOBALS['meta']['INDEX_elements_associes'])
AND isset($t['spip_evenements']));
break;
case 'install':
Agenda_verifier_base();
break;
case 'uninstall':
Agenda_vider_tables();
break;
}
}
?>

173
demo_calendrier_mini.html

@ -0,0 +1,173 @@
#CACHE{86400}
<BOUCLE_article_principal(ARTICLES) {id_article}><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="#LANG_DIR" lang="#LANG">
<head>
<title>[(#TITRE|textebrut)][ - (#NOM_SITE_SPIP|textebrut)]</title>
<meta http-equiv="Content-Type" content="text/html; charset=#CHARSET" />
[<meta name="description" content="(#INTRODUCTION|couper{150}|attribut_html)" />]
<meta name="generator" content="SPIP" />
[<link rel="shortcut icon" href="(#CHEMIN{favicon.ico})" />]
<!-- Lien vers le backend pour navigateurs eclaires -->
<link rel="alternate" type="application/rss+xml" title="<:syndiquer_site:>" href="#URL_PAGE{backend}" />
<!-- Ceci est la feuille de style par defaut pour le code genere par SPIP -->
<link rel="stylesheet" href="[(#CHEMIN{spip_style.css}|direction_css)]" type="text/css" media="all" />
<!-- Feuille de styles CSS pour l'affichage du site sur ecran -->
<link rel="stylesheet" href="[(#CHEMIN{habillage.css}|direction_css)]" type="text/css" media="projection, screen, tv" />
<!-- Feuille de styles CSS pour l'impression -->
<link rel="stylesheet" href="[(#CHEMIN{impression.css}|direction_css)]" type="text/css" media="print" />
</head>
<body class="page_article">
<div id="page">
[(#REM) Entete de la page + titre du site ]
<INCLURE{fond=inc-entete}{lang}>
[(#REM) Fil d'Ariane ]
<div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a><BOUCLE_ariane(HIERARCHIE){id_article}> &gt; <a href="#URL_RUBRIQUE">[(#TITRE|couper{80})]</a></BOUCLE_ariane>[ &gt; (#TITRE|couper{80})]</div>
<div id="conteneur">
[(#REM) Contenu principal : contenu de l'article ]
<div id="contenu">
<style type='text/css'>
td.occupe a {font-weight:bold;text-decoration:underline;}
td.horsperiode {color:#878787;font-size:.9em;}
</style>
[(#REM) mini calendrier :
1er arg la date,
2eme le nom de la variable date (optionel : 'date' par defaut)
3eme l'url sur laquelle boucler (optionel : url courante par defaut) ]
#CALENDRIER_MINI{#ENV{date},'date',#SELF}
<div class="cartouche">
#DEBUT_SURLIGNE
[(#LOGO_ARTICLE||image_reduire{200,200})]
[<p class="surtitre">(#SURTITRE)</p>]
<h1 class="titre">#TITRE</h1>
[<p class="soustitre">(#SOUSTITRE)</p>]
#FIN_SURLIGNE
<p><small>[(#DATE|nom_jour) ][(#DATE|affdate)][, <:par_auteur:> (#LESAUTEURS)]</small></p>
[(#REM) Traductions de l'article ]
<B_traductions>
<div class="traductions">
<p><:trad_article_traduction:></p>
<ul>
<li[ class="(#EXPOSE)"]>[(#LANG|traduire_nom_langue)]</li>
<BOUCLE_traductions(ARTICLES){traduction}{exclus}>
<li><a[ href="(#URL_ARTICLE|url_absolue)"] rel="alternate" hreflang="#LANG"[ title="(#TITRE|couper{80}|texte_backend)"]><span lang="#LANG" xml:lang="#LANG" dir="#LANG_DIR">[(#LANG|traduire_nom_langue)]</span></a></li>
</BOUCLE_traductions>
</ul>
</div>
</B_traductions>
</div>
#DEBUT_SURLIGNE
[<div class="chapo">(#CHAPO)</div>]
<br class="nettoyeur" />
[<p class="lien"><:voir_en_ligne:> : <a href="(#URL_SITE)" class="spip_out">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]</a></p>]
[<div class="texte">(#TEXTE|image_reduire{520,0})</div>]
#FIN_SURLIGNE
[(#REM) Portfolio : album d'images ]
<B_documents_portfolio>
<div id="documents_portfolio">
<h2><:info_portfolio:></h2>
<BOUCLE_documents_portfolio(DOCUMENTS) {id_article}
{mode=document} {extension IN png,jpg,gif} {par date}
{doublons}>
[<a href="#URL_DOCUMENT" type="#MIME_TYPE"
onclick="this.href='[(#URL_ARTICLE|parametre_url{id_document,#ID_DOCUMENT})]#documents_portfolio';return true;"[title="(#TITRE|couper{80}|texte_backend)"]>(#LOGO_DOCUMENT||image_reduire{0,60}|inserer_attribut{alt,[(#TITRE|couper{80}|texte_backend)]})</a>]
</BOUCLE_documents_portfolio>
</div>
</B_documents_portfolio>
<BOUCLE_afficher_document(DOCUMENTS) {id_document}
{mode=document}{extension IN png,jpg,gif}>
<div class="spip_documents spip_documents_center" id="document_actif">
#EMBED_DOCUMENT
[<div class="spip_doc_titre">(#TITRE)</div>]
[<div class="spip_doc_descriptif">(#DESCRIPTIF)</div>]
</div>
</BOUCLE_afficher_document>
[<div class="ps"><h2><:info_ps:></h2>#DEBUT_SURLIGNE(#PS)#FIN_SURLIGNE</div>]
[(#REM) Autres documents joints a l'article ]
<B_documents_joints>
<div id="documents_joints">
<h2><:titre_documents_joints:></h2>
<ul>
<BOUCLE_documents_joints(DOCUMENTS) {id_article} {mode=document} {par date} {doublons}>
<li>
<div class="spip_doc_titre"><a href="#URL_DOCUMENT" title="<:bouton_telecharger:>" type="#MIME_TYPE">[(#TITRE|sinon{<:info_document:>})]</a> <small>(#TYPE_DOCUMENT[ - (#TAILLE|taille_en_octets)])</small></div>
[<div class="spip_doc_descriptif">(#DESCRIPTIF)</div>]</li>
<br class="nettoyeur" />
</BOUCLE_documents_joints>
</ul>
</div>
</B_documents_joints>
[(#REM) Petition :
La petition ayant une PAGINATION il faut absolument lui passer SELF]
[ #REM Conserver cet invalideur invisible : (#PETITION|?{'',''}) ]
<INCLURE{fond=inc-petition}{id_article}{self=#SELF}>
[<div class="notes"><h2><:info_notes:></h2>#DEBUT_SURLIGNE(#NOTES)#FIN_SURLIGNE</div>]
[(#REM) Forum de l'article ]
[<h2 class="forum-repondre"><a href="(#PARAMETRES_FORUM|url_reponse_forum)"><:repondre_article:></a></h2>]
<INCLURE{fond=inc-forum}{id_article}>
</div><!-- fin contenu -->
[(#REM) Menu de navigation laterale ]
<div id="navigation">
<h1 class="invisible"><:navigation:></h1>
[(#REM) Menu de navigation par rubriques ]
<INCLURE{fond=inc-rubriques}{lang}{id_rubrique}>
[(#REM) Articles dans la meme rubrique ]
<B_articles_rubrique>
<div class="breves">
<h2 class="menu-titre"><a href="#URL_RUBRIQUE"><:meme_rubrique:></a></h2>
<ul>
<BOUCLE_articles_rubrique(ARTICLES) {id_rubrique} {par date}{inverse} {0,10}>
<li><a href="#URL_ARTICLE"[ class="(#EXPOSE)"]>#TITRE</a></li>
</BOUCLE_articles_rubrique>
</ul>
</div>
</B_articles_rubrique>
[(#REM) Menu de navigation mots-cles ]
<B_mots>
<div class="divers">
<h2 class="menu-titre"><:mots_clefs:></h2>
<ul>
<BOUCLE_mots(MOTS) {id_article} {par titre}>
<li><a href="#URL_MOT" rel="tag">#TITRE</a></li>
</BOUCLE_mots>
</ul>
</div>
</B_mots>
</div><!-- fin navigation -->
</div><!-- fin conteneur -->
[(#REM) Pied de page ]
<INCLURE{fond=inc-pied}{lang}>
</div><!-- fin page -->
</body>
</html>
</BOUCLE_article_principal>

86
exec/agenda_evenements.php

@ -0,0 +1,86 @@
<?php
include_spip('inc/presentation');
include_spip('inc/voir_agenda');
function exec_agenda_evenements_dist(){
include_spip('inc/calendar');
// Reserver les widgets agenda
WCalendar_ajoute_lies(_T('agenda:evenement_date_debut'),'_evenement_debut',_T('agenda:evenement_date_fin'),'_evenement_fin');
WCalendar_ajoute_statique(_T('agenda:evenement_repetitions'),'_repetitions');
$ajouter_id_article = intval(_request('ajouter_id_article'));
$flag_editable = article_editable($ajouter_id_article);
global $visu_evenements;
$type = _request('type');
if (!$type) $type='semaine';
$id_evenement = intval(_request('id_evenement'));
$edit = _request('edit');
$neweven = _request('neweven');
$annee = intval(_request('annee'));
$mois = intval(_request('mois'));
$jour = intval(_request('jour'));
$date = date("Y-m-d", time());
if ($annee&&$mois&&$jour)
$date = date("Y-m-d", strtotime("$annee-$mois-$jour"));
if ($type == 'semaine') {
//$GLOBALS['afficher_bandeau_calendrier_semaine'] = true;
$titre = _T('titre_page_calendrier',
array('nom_mois' => nom_mois($date), 'annee' => annee($date)));
}
elseif ($type == 'jour') {
$titre = nom_jour($date)." ". affdate_jourcourt($date);
}
else {
$titre = _T('titre_page_calendrier',
array('nom_mois' => nom_mois($date), 'annee' => annee($date)));
}
$out = debut_page($titre, "redacteurs", "calendrier","",$css);
$out .= barre_onglets("calendrier", "evenements");
$out .= "<div>";
if ($ajouter_id_article){
$res2 = spip_query("SELECT * FROM spip_articles AS articles WHERE id_article="._q($ajouter_id_article));
if ($row2 = spip_fetch_array($res2)){
$out .= "<div style=' width:750px; font-size: 18px; color: #9DBA00; font-weight: bold;text-align:left;'>";
$out .= "<a href='".generer_url_ecrire('articles',"id_article=".$row2['id_article'])."'>";
$out .= http_img_pack("article-24.gif", "", "width='24' height='24' border='0'");
$out .= entites_html(typo($row2['titre']))."</a></div>";
}
}
$out .= "&nbsp;</div>" ;
$voir_agenda = charger_fonction("voir_agenda","inc");
$out .= "<div id='voir_agenda'>".$voir_agenda($flag_editable)."</div>";
$out .= "<div id='voir_evenement-0'>";
if (($edit||$neweven)&&($flag_editable)) { //---------------Edition RDV ------------------------------
$ndate = _request('ndate');
$form .= Agenda_formulaire_edition_evenement($id_evenement,$neweven,$ndate);
$args = explode('?',self());
$out .= ajax_action_auteur('voir_evenement',"0-modifier-$id_article-$id_evenement", 'calendrier', end($args), $form,'','reload_agenda');
}
elseif ((isset($id_evenement))&&(isset($visu_evenements[$id_evenement]))){ //---------------Visualisation RDV ------------------------------
$voir_evenement = charger_fonction('voir_evenement','inc');
$out .= $voir_evenement($id_evenement,$flag_editable);
}
$out .= "</div>";
$out .= "<script type='text/javascript'>
function reload_agenda(){
var url=document.location.href;
url = url.replace(/exec=[^&]*/,'exec=voir_agenda')
\$('#voir_agenda').load(url);
}</script>";
$out .= fin_page();
echo $out;
}
?>

112
exec/agenda_test.php

@ -0,0 +1,112 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2007 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
//include_spip('inc/actions');
include_spip('inc/agenda_gestion');
include_spip('inc/agenda_saisie_rapide');
//include_spip('inc/pim_agenda_gestion');
function exec_agenda_test_dist()
{
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T('titre_page_mots_tous'), "naviguer", "mots"), '<br /><br /><br />';
gros_titre(_L('Tests pour la saisie rapide et l\'affichage des dates'));
echo '<br />';
$un_mot = spip_fetch_array(spip_query("SELECT titre FROM spip_mots"));
$test0 = '04/05/2001 20 - 05/05 22 "m&ecirc;me mois" REP=1/1,2/1 MOTS='.$un_mot['titre'].',mot2
04/05/01 20 - 05/05 :30 "m&ecirc;me mois" "toto" "titi" MOTS=mot REP=1/1
1/7 "Vacances !" "ici" "et l&agrave;..." REP=2,3,4,5,6
4/5
4/5 "m&ecirc;me jour"
4/5 20 "m&ecirc;me jour"
4/5 20 - 22 "m&ecirc;me jour"
4/5 :20 "m&ecirc;me jour"
4/5 -:30 "m&ecirc;me jour"
4/5 :20-:30 "m&ecirc;me jour"
04/05/2000 "m&ecirc;me jour"
04/05/2000 20 "m&ecirc;me jour"
04/05/2000 20-22 "m&ecirc;me jour"
04/05/2000 20:30 "m&ecirc;me jour"
04/05/2000 20:30-22 "m&ecirc;me jour"
04/05/2000 20:30-22:30 "m&ecirc;me jour"
04/05-05/05 "m&ecirc;me mois"
04/05 20-05/05 "m&ecirc;me mois"
04/05-05/05 22 "m&ecirc;me mois"
04/05 20-05/05 22 "m&ecirc;me mois"
04/05/2000-05/05 "m&ecirc;me mois"
04/05/2000 20-05/05 "m&ecirc;me mois"
04/05/2000-05/05 22 "m&ecirc;me mois"
04/05/2001 20-05/05 22 "m&ecirc;me mois"
04/05/01 20-05/05 22 "m&ecirc;me mois"
4/5-4/6 "m&ecirc;me ann&eacute;e"
4/5 20-4/6 "m&ecirc;me ann&eacute;e"
4/5-4/6 22 "m&ecirc;me ann&eacute;e"
4/5 20-4/6 22 "m&ecirc;me ann&eacute;e"
4/5/02-4/6/02 "m&ecirc;me ann&eacute;e"
4/5/02 20-4/6/02 "m&ecirc;me ann&eacute;e"
4/5/02-4/5/03 "tout diff&eacute;rent"
4/5/02 20-4/5/03 "tout diff&eacute;rent"
4/5/02-4/5/03 22 "tout diff&eacute;rent"
Exemple 1 : 20/09/2006 19:30-22:00 "Réunion de rentrée" "Les Gobelins" "Reprise de contact et mise au point des calendriers"
Exemple 2 : 17/08-23/08 "Stage d’été 2007" "Les Salines" MOTS=photos, Agenda:privé
Exemple 3 : 01/01/2007 "Bonne année à tous !" REP=01/01/2008,01/01/2009,01/01/2010
Beispiel 1: 04/05/2007 20:00-22:00 "Was bleibt vom westlichen Marxismus?" "Autonomes Zentrum KTS Freiburg" "Praxis, Subjekt und Hegemonie im 20. und 21. Jahrhundert"
Beispiel 2: 03/02-07/02 "2007 Ausstellung: Pueblo in armas" "Autonomes Zentrum KTS Freiburg" MOTS=Ausstellung, Agenda:Public
Beispiel 3: 01/01/2008 "Auf ein revolutionäres neues Jahr!" REP=01/01/2009,01/01/2010,01/01/2011
';
$test = preg_split(",[\n\r]+,", $test0);
echo "<table class='arial11' style='border:1px solid; border-collapse:collapse; margin:1em;' border=0>";
echo "<tr class='tr_liste'><th>Chaine de saisie rapide</th><th>Code interpr&eacute;t&eacute;</th><th>Agenda_afficher_date_evenement</th><th>Filtre affdate_debut_fin</th></tr>";
foreach($test as $s) {
$e = Agenda_compile_une_ligne($s);
if ($e) $e="<tr class='tr_liste'><td>$s</td><td>"
. sprintf("%s/%s/%s %s:%s - %s/%s/%s %s:%s - %s<br/>'%s' '%s' '%s' '%s' '%s'",
$e[0][1], $e[0][2], $e[0][3], $e[0][4], $e[0][5], $e[0][6], $e[0][7], $e[0][8], $e[0][9], $e[0][10], $e['horaire'],
$e['titre'], $e['lieu'], $e['descrip'], join(', ', $e['selected_rep']), join(', ', $e['mots']) )
. '</td><td>' . Agenda_afficher_date_evenement(
$a1 = mktime($e[0][4], $e[0][5], 0, $e[0][2], $e[0][1], $e[0][3]),
$a2 = mktime($e[0][9], $e[0][10], 0, $e[0][7], $e[0][6], $e[0][8]), $e['horaire'])
. '</td><td>' . Agenda_affdate_debut_fin(
$a1 = format_mysql_date($e[0][3], $e[0][2], $e[0][1], $e[0][4], $e[0][5]),
$a2 = format_mysql_date($e[0][8], $e[0][7], $e[0][6], $e[0][9], $e[0][10]), $e['horaire'])
. "</td></tr>";
echo $e?$e:("<tr class='tr_liste'><td>$s</td><td colspan=3>".(trim($s)?"?":"")."</td></tr>");
}
echo "</table>";
$e = Agenda_compile_texte_saisie_rapide($test0);
//echo nl2br(var_export($e)), '<hr>';
set_request('evenements_saisie_rapide', $test0);
echo '<div style="width:600px; margin: 0pt auto; ">', Agenda_formulaire_saisie_rapide_previsu(), '</div>';
/* // test idiot ;-)
include_spip('public/assembler');
$mots=recuperer_fond('exec/liste_mots');
$mots="\$mots=array$mots;";
eval($mots);
*/
fin_page();
}
?>

17
exec/editer_evenement.php

@ -0,0 +1,17 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip("inc/agenda_gestion");
include_spip("inc/autoriser");
function exec_editer_evenement_dist()
{
$id_article = intval(_request('id_article'));
//if (autoriser())
$res = Agenda_formulaire_article($id_article, autoriser('modifier','article',$id_article),'articles');
ajax_retour($res);
}
?>

220
exec/mots_tous.php

@ -0,0 +1,220 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2007 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/presentation');
include_spip('inc/actions');
include_spip('inc/agenda_gestion');
include_spip('inc/pim_agenda_gestion');
// compatibilite avec SPIP 1.92
if(!function_exists('icone_inline')) {
// fonction placee dans inc/presentation
function icone_inline($texte, $lien, $fond, $fonction="", $align=""){
return icone($texte, $lien, $fond, $fonction, $align);
}
}
// https://code.spip.net/@exec_mots_tous_dist
function exec_mots_tous_dist()
{
global $spip_lang, $spip_lang_left, $spip_lang_right, $son_groupe;
global $evenements, $pim_agenda;
$conf_mot = intval(_request('conf_mot'));
pipeline('exec_init',array('args'=>array('exec'=>'mots_tous'),'data'=>''));
$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T('titre_page_mots_tous'), "naviguer", "mots");
debut_gauche();
echo pipeline('affiche_gauche',array('args'=>array('exec'=>'mots_tous'),'data'=>''));
if (autoriser('creer','groupemots') AND !$conf_mot){
$res = icone_horizontale(_T('icone_creation_groupe_mots'), generer_url_ecrire("mots_type","new=oui"), "groupe-mot-24.gif", "creer.gif",false);
echo bloc_des_raccourcis($res);
}
creer_colonne_droite();
echo pipeline('affiche_droite',array('args'=>array('exec'=>'mots_tous'),'data'=>''));
debut_droite();
gros_titre(_T('titre_mots_tous'));
if (autoriser('creer','groupemots')) {
echo typo(_T('info_creation_mots_cles')) . aide ("mots") ;
}
echo "<br /><br />";
//
// On boucle d'abord sur les groupes de mots
//
$result_groupes = spip_query($q="SELECT *, ".creer_objet_multi ("titre", "$spip_lang")." FROM spip_groupes_mots ORDER BY multi");
while ($row_groupes = spip_fetch_array($result_groupes)) {
$id_groupe = $row_groupes['id_groupe'];
$titre_groupe = typo($row_groupes['titre']);
$descriptif = $row_groupes['descriptif'];
$texte = $row_groupes['texte'];
$unseul = $row_groupes['unseul'];
$obligatoire = $row_groupes['obligatoire'];
$articles = $row_groupes['articles'];
$breves = $row_groupes['breves'];
$rubriques = $row_groupes['rubriques'];
$syndic = $row_groupes['syndic'];
$evenements = 'non';
$pim_agenda = 'non';
if (isset($GLOBALS['tables_principales']['spip_evenements'])) $evenements = $row_groupes['evenements'];
if (isset($GLOBALS['tables_principales']['spip_pim_agenda'])) $pim_agenda = $row_groupes['pim_agenda'];
$acces_minirezo = $row_groupes['minirezo'];
$acces_comite = $row_groupes['comite'];
$acces_forum = $row_groupes['forum'];
// Afficher le titre du groupe
echo "<a id='mots_tous-$id_groupe'></a>";
debut_cadre_enfonce("groupe-mot-24.gif", false, '', $titre_groupe);
// Affichage des options du groupe (types d'elements, permissions...)
$res = '';
if ($articles == "oui") $res .= "> "._T('info_articles_2')." &nbsp;&nbsp;";
if ($breves == "oui") $res .= "> "._T('info_breves_02')." &nbsp;&nbsp;";
if ($rubriques == "oui") $res .= "> "._T('info_rubriques')." &nbsp;&nbsp;";
if ($syndic == "oui") $res .= "> "._T('icone_sites_references')." &nbsp;&nbsp;";
if ($evenements == "oui") $res .= "> "._T('agenda:info_evenements')." &nbsp;&nbsp;";
if ($pim_agenda == "oui") $res .= "> "._T('pimagenda:info_evenements')." &nbsp;&nbsp;";
if ($unseul == "oui" OR $obligatoire == "oui") $res .= "<br />";
if ($unseul == "oui") $res .= "> "._T('info_un_mot')." &nbsp;&nbsp;";
if ($obligatoire == "oui") $res .= "> "._T('info_groupe_important')." &nbsp;&nbsp;";
$res .= "<br />";
if ($acces_minirezo == "oui") $res .= "> "._T('info_administrateurs')." &nbsp;&nbsp;";
if ($acces_comite == "oui") $res .= "> "._T('info_redacteurs')." &nbsp;&nbsp;";
if ($acces_forum == "oui") $res .= "> "._T('info_visiteurs_02')." &nbsp;&nbsp;";
echo "<span class='verdana1 spip_x-small'>", $res, "</span>";
if ($descriptif) {
echo "<div style='border: 1px dashed #aaaaaa; ' class='verdana1 spip_small'>", "<b>",_T('info_descriptif'),"</b> ", propre($descriptif), "&nbsp; </div>";