Browse Source

Retablir une configuration du plugin agenda un peu comprehensible

+ quand on ajoute une configuration c'est pas si dur de mettre une case a cocher + un input plutot qu'un seul input avec une explication a rallonge incomprehensible (aka on a assez du plugin menu dans le genre, pas la peine d'exporter le modele)
+ mise a jour du cron d'effacement : pas la peine de le lancer si la config est pas activee
svn/root/branches/v3
Cerdic 1 year ago
parent
commit
686aa7deaa
4 changed files with 134 additions and 108 deletions
  1. +9
    -4
      agenda_pipelines.php
  2. +110
    -95
      formulaires/configurer_agenda.html
  3. +14
    -9
      genie/agenda_effacer_evenements_passes.php
  4. +1
    -0
      lang/configureragenda_fr.php

+ 9
- 4
agenda_pipelines.php View File

@ -382,10 +382,15 @@ function agenda_saisies_afficher_si_js_saisies_form($flux) {
}
/**
* Effacer regulièrement les evenements de l'agenda
* en attendant qu'on soit en full spip 3.0 et qu'on ait droit à la balise genie
*/
* Effacer regulièrement les evenements de l'agenda si l'option est activee
* @param array $flux
* @return array
*/
function agenda_taches_generales_cron($flux) {
$flux['agenda_effacer_evenements_passes'] = 24*3600;
include_spip('inc/config');
if (lire_config('agenda/effacer_evenements_passes','')) {
$flux['agenda_effacer_evenements_passes'] = 24*3600;
}
return $flux;
}

+ 110
- 95
formulaires/configurer_agenda.html View File

@ -8,62 +8,106 @@
paramêtre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
#SET{fl,configureragenda}
<ul class="editer-groupe">
<ul class="editer-groupe">
#SET{name,synchro_statut}#SET{obli,''}#SET{defaut,1}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
<span class='erreur_message'>(#GET{erreurs})</span>
]
<input type="hidden" name="#GET{name}" value="0" />
#SET{val,1}
<div class="choix">
<input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#GET{val}|=={#ENV{#GET{name},#GET{defaut}}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}">[(#GET{fl}|concat{':label_',#GET{name},'_',#GET{val}}|_T)]</label>
</div>
</li>
#SET{name,filtres_statut}#SET{obli,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
<span class='erreur_message'>(#GET{erreurs})</span>
]
#SET{val,1}
<div class="choix">
<input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#GET{val}|=={#ENV{#GET{name},#GET{defaut}}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}">[(#GET{fl}|concat{':label_',#GET{name},'_',#GET{val}}|_T)]</label>
</div>
</li>
#SET{name,effacer_evenements_passes}#SET{obli,''}#SET{defaut,0}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
<span class='erreur_message'>(#GET{erreurs})</span>
]
<input type="hidden" name="#GET{name}" value="0" />
#SET{val,1}
<div class="choix">
<input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#GET{val}|=={#ENV{#GET{name},#GET{defaut}}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}"><:configureragenda:legend_nettoyage_agenda:> ([(#GET{fl}|concat{':label_',#GET{name}}|_T)])</label>
<ul class="editer-groupe editer-suite">
#SET{name,delai_effacer_evenements_passes}#SET{obli,''}#SET{defaut,365}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer long_label editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
</li>
</ul>
</div>
</li>
</ul>
<fieldset>
<legend><:configureragenda:titre_affichage_agenda_public:></legend>
<ul class="editer-groupe">
<!--EX01-->
#SET{name,titre}#SET{obli,''}[(#SET{defaut,<:agenda:titre_sur_l_agenda:>})]#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="fieldset">
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
</li>
#SET{name,descriptif}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<textarea name="#GET{name}" class="textarea">
#ENV*{#GET{name},#GET{defaut}}</textarea>
</li>
#SET{name,articlepardefaut}#SET{obli,''}[(#SET{defaut,''})]#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
</li>
#SET{name,url_evenement}#SET{obli,''}#SET{defaut,'evenement'}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label>[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]
#SET{val,evenement}
<div class="choix">
<input type="radio" name="#GET{name}" class="radio" id="#GET{name}_#GET{val}" value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}">[(#GET{fl}|concat{':label_',#GET{name},'_',#GET{val}}|_T)]</label>
</div>
#SET{val,article}
<div class="choix">
<input type="radio" name="#GET{name}" class="radio" id="#GET{name}_#GET{val}" value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}">[(#GET{fl}|concat{':label_',#GET{name},'_',#GET{val}}|_T)]</label>
</div>
</li>
[(#VAL{_AGENDA_INSERT_HEAD_CSS}|defined|non)
#SET{name,insert_head_css}#SET{obli,''}#SET{defaut,1}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
<span class='erreur_message'>(#GET{erreurs})</span>
]
<input type="hidden" name="#GET{name}" value="0" />
#SET{val,1}
<div class="choix">
<input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#GET{val}|=={#ENV{#GET{name},#GET{defaut}}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}">[(#GET{fl}|concat{':label_',#GET{name},'_',#GET{val}}|_T)]</label>
</div>
</li>
]
<li class="fieldset sub-fieldset">
<fieldset>
<legend><:configureragenda:legend_presentation_agenda_public:></legend>
<ul>
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
</li>
#SET{name,descriptif}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<textarea name="#GET{name}" class="textarea">
#ENV*{#GET{name},#GET{defaut}}</textarea>
</li>
#SET{name,articlepardefaut}#SET{obli,''}[(#SET{defaut,''})]#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
</li>
#SET{name,url_evenement}#SET{obli,''}#SET{defaut,'evenement'}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label>[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]
#SET{val,evenement}
<div class="choix">
<input type="radio" name="#GET{name}" class="radio" id="#GET{name}_#GET{val}" value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}">[(#GET{fl}|concat{':label_',#GET{name},'_',#GET{val}}|_T)]</label>
</div>
#SET{val,article}
<div class="choix">
<input type="radio" name="#GET{name}" class="radio" id="#GET{name}_#GET{val}" value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}">[(#GET{fl}|concat{':label_',#GET{name},'_',#GET{val}}|_T)]</label>
</div>
</li>
[(#VAL{_AGENDA_INSERT_HEAD_CSS}|defined|non)
#SET{name,insert_head_css}#SET{obli,''}#SET{defaut,1}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
<span class='erreur_message'>(#GET{erreurs})</span>
]
<input type="hidden" name="#GET{name}" value="0" />
#SET{val,1}
<div class="choix">
<input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#GET{val}|=={#ENV{#GET{name},#GET{defaut}}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}">[(#GET{fl}|concat{':label_',#GET{name},'_',#GET{val}}|_T)]</label>
</div>
</li>
]
<legend><:configureragenda:legend_presentation_agenda:></legend>
<ul class="editer-groupe">
#SET{name,affichage_debut}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer long_label editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<select name="#GET{name}" class="select" id="#GET{name}">
@ -101,50 +145,9 @@
</ul>
</fieldset>
</li>
<li class="fieldset">
<fieldset>
<legend><:configureragenda:legend_presentation_agenda:></legend>
<ul>
#SET{name,synchro_statut}#SET{obli,''}#SET{defaut,1}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
<span class='erreur_message'>(#GET{erreurs})</span>
]
<input type="hidden" name="#GET{name}" value="0" />
#SET{val,1}
<div class="choix">
<input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#GET{val}|=={#ENV{#GET{name},#GET{defaut}}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}">[(#GET{fl}|concat{':label_',#GET{name},'_',#GET{val}}|_T)]</label>
</div>
</li>
#SET{name,filtres_statut}#SET{obli,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
<span class='erreur_message'>(#GET{erreurs})</span>
]
#SET{val,1}
<div class="choix">
<input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#GET{val}|=={#ENV{#GET{name},#GET{defaut}}}|oui)checked="checked"] />
<label for="#GET{name}_#GET{val}">[(#GET{fl}|concat{':label_',#GET{name},'_',#GET{val}}|_T)]</label>
</div>
</li>
</ul>
</fieldset>
</li>
<li class="fieldset">
<fieldset>
<legend><:configureragenda:legend_nettoyage_agenda:></legend>
<ul>
#SET{name,effacer_evenements_passes}#SET{obli,''}[(#SET{defaut,''})]#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]
<p class="explication">[(#GET{fl}|concat{':explication_',#GET{name}}|_T)]</p>
<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
</li>
</ul>
</fieldset>
</li>
</ul>
</fieldset>
[(#REM) ajouter les saisies supplémentaires : extra et autre, à cet endroit ]
<!--extra-->
@ -153,3 +156,15 @@
<input type='submit' class='submit' value='<:bouton_enregistrer|attribut_html:>' /></p>
</div></form>
</div>
<style>
.sub-fieldset {
margin-left: 10em !important;
}
.choix .editer-suite {
margin-left: 8.5em !important;
display: none;
}
input.checkbox:checked+label+.editer-suite {
display: block !important;
}
</style>

+ 14
- 9
genie/agenda_effacer_evenements_passes.php View File

@ -10,26 +10,31 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* Si l'évènement possède une répetition, prendre l'évènement récent qui dépasse cette répetition
**/
function genie_agenda_effacer_evenements_passes($t) {
include_spip('inc/config');
// Est-ce qu'il faut effacer des choses
$config = intval(lire_config('agenda/effacer_evenements_passes'));
if ($config < 1) {
return '';
if (!lire_config('agenda/effacer_evenements_passes','')
or ($delay = intval(lire_config('agenda/delai_effacer_evenements_passes')))<1
) {
return 1;
}
// Rechercher tous les évènements passés
$res = sql_select('id_evenement, date_fin', 'spip_evenements', "date_fin < NOW() - INTERVAL $config DAY");
$date_before = affdate('Y-m-d H:i:s', strtotime("-{$delay} days"));
$res = sql_select('id_evenement, date_fin', 'spip_evenements', 'date_fin<' . sql_quote($date_before));
while ($row = sql_fetch($res)) {
$id_evenement = $row['id_evenement'];
$date_fin = $row['date_fin'];
// Rechercher la première occurence d'une répetition de cet événement qui ne soit pas encore passée
$premier_occurence_repetition = sql_getfetsel('id_evenement', 'spip_evenements', "date_fin >= NOW() - INTERVAL $config DAY AND id_evenement_source = $id_evenement",'','date_debut ASC', '0,1');
$premier_occurence_repetition = sql_getfetsel('id_evenement', 'spip_evenements', 'date_fin>=' .sql_quote($date_before). 'AND id_evenement_source='.intval($id_evenement),'','date_debut ASC', '0,1');
if ($premier_occurence_repetition) {
sql_updateq('spip_evenements', array('id_evenement_source' => $premier_occurence_repetition), 'id_evenement_source='.$id_evenement);
sql_updateq('spip_evenements', array('id_evenement_source' => ''), 'id_evenement='.$premier_occurence_repetition);
sql_updateq('spip_evenements', array('id_evenement_source' => $premier_occurence_repetition), 'id_evenement_source='.intval($id_evenement));
sql_updateq('spip_evenements', array('id_evenement_source' => ''), 'id_evenement='.intval($premier_occurence_repetition));
spip_log("Répetition de l'évènement $id_evenement remplacées par des répetitions de l'évènement $premier_occurence_repetition, plus récent", 'agenda'._LOG_INFO_IMPORTANTE);
}
sql_delete('spip_evenements', 'id_evenement='.$id_evenement);
spip_log("Effacement de l'évènement $id_evenement passés depuis plus de $config jours (date de fin : $date_fin)", 'agenda'._LOG_INFO_IMPORTANTE);
sql_delete('spip_evenements', 'id_evenement='.intval($id_evenement));
spip_log("Effacement de l'évènement $id_evenement passés depuis plus de $delay jours (date de fin : $date_fin)", 'agenda'._LOG_INFO_IMPORTANTE);
}
return 1;
}

+ 1
- 0
lang/configureragenda_fr.php View File

@ -24,6 +24,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'label_articlepardefaut' => 'Identifiant article par défaut',
'label_descriptif' => 'Descriptif',
'label_effacer_evenements_passes' => 'Effacer les évènement passés',
'label_delai_effacer_evenements_passes' => 'Délai avant effacement (jours)',
'label_filtres_statut_1' => 'Proposer les filtres de statut',
'label_insert_head_css_1' => 'Insérer automatiquement les styles par défaut de l’agenda',
'label_synchro_statut_1' => 'Les événements sont automatiquement publiés/dépubliés avec l’article auquel ils sont liés',


Loading…
Cancel
Save