version 3.0.0 avec déboguage et des options en + :

- séparer id_auteur et adresses email en deux champs distincts (déboguage radical)
- ajout du choix d'alerter les auteurs des articles, systématiquement
- ajout du choix de la fréquence de relance des alertes
- champs_extras dans un fieldset (+ ou - abouti)
- explications détaillées dans le formulaire
on passe en test
master v3.0.0
chankalan@choc0.net 6 years ago
parent 2daff5317b
commit ade14b5e47

4
.gitattributes vendored

@ -1,11 +1,12 @@
* text=auto !eol
/activite_editoriale.png -text
/activite_editoriale_administrations.php -text
/activite_editoriale_fonctions.php -text
/activite_editoriale_pipelines.php -text
base/activite_editoriale.php -text
formulaires/configurer_activite_editoriale.html -text
genie/activite_editoriale_alerte.php -text
images/activite_editoriale.png -text
inclure/auteurs_article.html -text
inclure/maj_branche.html -text
inclure/maj_rubrique.html -text
lang/activite_editoriale_fr.php -text
@ -14,3 +15,4 @@ lang/paquet-activite_editoriale_fr.php -text
prive/exec/activite_editoriale.html -text
prive/exec/activite_editoriale_rubrique.html -text
prive/squelettes/contenu/configurer_activite_editoriale.html -text
prive/themes/spip/images/activite_editoriale-16.png -text

@ -5,13 +5,14 @@ include_spip('inc/cextras');
include_spip('base/activite_editoriale');
function activite_editoriale_upgrade($nom_meta_base_version,$version_cible) {
$maj = array();
cextras_api_upgrade(activite_editoriale_declarer_champs_extras(), $maj['create']);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
$maj = array();
cextras_api_upgrade(activite_editoriale_declarer_champs_extras(), $maj['create']);
cextras_api_upgrade(activite_editoriale_declarer_champs_extras(), $maj['1.0.0']);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
function activite_editoriale_vider_tables($nom_meta_base_version) {
cextras_api_vider_tables(activite_editoriale_declarer_champs_extras());
effacer_meta($nom_meta_base_version);
}
?>
cextras_api_vider_tables(activite_editoriale_declarer_champs_extras());
effacer_meta($nom_meta_base_version);
}

@ -1,12 +1,7 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
function age_rubrique($date_str) {
/*
$date = new DateTime();
$age = $date->diff(new DateTime($date_str));
return $age->d;
*/
return intval((time() - strtotime($date_str)) / (60 * 60 * 24));
}
?>
if (!defined("_ECRIRE_INC_VERSION")) return;
// obtenir l'age de la rubrique en nombre de jour
function age_rubrique($date_str) {
return intval((time() - strtotime($date_str)) / (60 * 60 * 24));
}

@ -1,6 +1,7 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
function activite_editoriale_taches_generales_cron($taches_generales) {
$taches_generales['activite_editoriale_alerte'] = 24*3600; // tous les jours
return $taches_generales;
return $taches_generales;
}

@ -1,29 +1,55 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
function activite_editoriale_declarer_champs_extras($champs = array()){
$champs['spip_rubriques']['extras_delai']=array(
'saisie'=>'input',
'options'=>array(
'nom'=>'extras_delai',
'sql' => "tinytext NOT NULL DEFAULT ''", // declaration sql
'rechercher'=>false,
'label' => _T('activite_editoriale:delai'), // chaine de langue 'mon_plug:mon_label'
'explication' => _T('activite_editoriale:delai_precisions'), // precisions sur le champ
'obligatoire' => false, // 'true', 'false' ou ''
)
);
$champs['spip_rubriques']['extras_identifiants'] = array(
'saisie'=>'input',
'options'=>array(
'nom'=>'extras_identifiants',
'rechercher'=>false,
'label' => _T('activite_editoriale:identifiants'), // chaine de langue 'mon_plug:mon_label'
'explication' => _T('activite_editoriale:identifiants_precisions'), // precisions sur le champ
'obligatoire' => false, // 'true', 'false' ou ''
'sql' => "tinytext NOT NULL DEFAULT ''") // declaration sql
function activite_editoriale_declarer_champs_extras($champs = array()) {
$champs['spip_rubriques']['activite_editoriale'] = array(
'saisie' => 'fieldset',
'options' => array(
'nom' => _T('activite_editoriale:activite_editoriale'),
'label' => _T('activite_editoriale:activite_editoriale_label')
),
'saisies' => array(
'extras_delai' => array(
'saisie' => 'input',
'options' => array(
'nom'=>'extras_delai',
'sql' => "tinytext NOT NULL DEFAULT ''",
'rechercher' => false,
'label' => _T('activite_editoriale:extras_delai_label'),
'explication' => _T('activite_editoriale:extras_delai_explications'),
'obligatoire' => false, // 'true', 'false' ou ''
)),
'extras_identifiants' => array(
'saisie' => 'input',
'options' => array(
'nom'=>'extras_identifiants',
'sql' => "tinytext NOT NULL DEFAULT ''",
'rechercher' => false,
'label' => _T('activite_editoriale:extras_identifiants_label'),
'explication' => _T('activite_editoriale:extras_identifiants_explications'),
'obligatoire' => false, // 'true', 'false' ou ''
)),
'extras_emails' => array(
'saisie' => 'input',
'options' => array(
'nom'=>'extras_emails',
'sql' => "tinytext NOT NULL DEFAULT ''",
'rechercher' => false,
'label' => _T('activite_editoriale:extras_emails_label'),
'explication' => _T('activite_editoriale:extras_emails_explications'),
'obligatoire' => false, // 'true', 'false' ou ''
)),
'extras_frequence' => array(
'saisie' => 'input',
'options' => array(
'nom'=>'extras_frequence',
'sql' => "tinytext NOT NULL DEFAULT ''",
'rechercher' => false,
'label' => _T('activite_editoriale:extras_frequence_label'),
'explication' => _T('activite_editoriale:extras_frequence_explications'),
'obligatoire' => false, // 'true', 'false' ou ''
))
)
);
return $champs;
}
?>
}

@ -1,20 +1,32 @@
<div class="formulaire_spip formulaire_configurer">
<form action="#SELF" method="post">
#ACTION_FORMULAIRE{#ENV{action}}
<ul>
<li>
<label for="champ"><:activite_editoriale:cfg_champ:></label>
<select name="champ" id="champ">
<option value="maj_rubrique" [(#ENV{champ}|=={maj_rubrique}|oui) selected="selected"]><:activite_editoriale:cfg_maj_rubrique:></option>
<option value="date_modif_branche" [(#ENV{champ}|=={date_modif_branche}|oui) selected="selected"]><:activite_editoriale:cfg_date_modif_branche:></option>
<option value="date_modif_rubrique" [(#ENV{champ}|=={date_modif_rubrique}|oui) selected="selected"]><:activite_editoriale:cfg_date_modif_rubrique:></option>
</select>
</li>
</ul>
<p class="boutons">
<input type='submit' class='submit' value='<:bouton_enregistrer:>' />
</p>
#ACTION_FORMULAIRE{#ENV{action}}
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
#SET{ae,activite_editoriale}
<ul class="editer-groupe">
#SET{name,champ}#SET{obli,'obligatoire'}#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{ae}|concat{':label_cfg_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<select name="#GET{name}" id="#GET{name}">
<option value="maj_rubrique" [(#ENV{champ}|=={maj_rubrique}|oui) selected="selected"]><:activite_editoriale:cfg_maj_rubrique:></option>
<option value="date_modif_branche" [(#ENV{champ}|=={date_modif_branche}|oui) selected="selected"]><:activite_editoriale:cfg_date_modif_branche:></option>
<option value="date_modif_rubrique" [(#ENV{champ}|=={date_modif_rubrique}|oui) selected="selected"]><:activite_editoriale:cfg_date_modif_rubrique:></option>
</select>
[<p class="explication">(#GET{ae}|concat{':explications_',#GET{name}}|_T)</p>]
</li>
#SET{name,alerter_auteur}#SET{obli,''}#SET{defaut,non}#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{ae}|concat{':label_',#GET{name}}|_T)]</label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<label for="#GET{name}">[(#GET{ae}|concat{':label_',#GET{name}}|_T)]</label>
<div class="choix">
<input type="checkbox" name="#GET{name}" class="checkbox" value="oui" id="#GET{name}"[(#ENV{#GET{name}}|=={oui}|oui)checked="checked"] />
<label for="#GET{name}">[(#GET{ae}|concat{':label_oui_',#GET{name}}|_T)]</label>
</div>
[<p class="explication">(#GET{ae}|concat{':explications_',#GET{name}}|_T)</p>]
</li>
</ul>
<p class="boutons"><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
</form>
</div>

@ -1,105 +1,135 @@
<?php
/**
* Plugin Activite Editoriale
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
function genie_activite_editoriale_alerte_dist() {
if (function_exists('lire_config')){
$config_champ = lire_config('activite_editoriale/champ','maj_rubrique');
}
switch ($config_champ){
case 'maj_rubrique':
activite_tester_maj_rubrique();
break;
case 'date_modif_branche':
activite_tester_date_modif_branche();
break;
case 'date_modif_rubrique':
activite_tester_date_modif_rubrique();
break;
}
if (function_exists('lire_config')) {
$config_champ = lire_config('activite_editoriale/champ','maj_rubrique');
}
switch ($config_champ) {
case 'maj_rubrique':
activite_tester_maj_rubrique();
break;
case 'date_modif_branche':
activite_tester_date_modif_branche($alerter_auteur);
break;
case 'date_modif_rubrique':
activite_tester_date_modif_rubrique($alerter_auteur);
break;
}
return 0;
}
function activite_tester_maj_rubrique(){
if ($rubLists = sql_select("*", "spip_rubriques", "`extras_delai` != '' and TO_DAYS(NOW()) - TO_DAYS(maj) >= `extras_delai`")) {
function activite_tester_maj_rubrique() {
if ($rubLists = sql_select("*", "spip_rubriques", "`extras_delai` != '' and TO_DAYS(NOW()) - TO_DAYS(maj) >= `extras_delai`")) {
while($list = sql_fetch($rubLists)) {
activite_editoriale_envoyer_mail($list);
activite_editoriale_envoyer_mail($list);
}
}
}
}
function activite_tester_date_modif_branche(){
if ($rubLists = sql_select(array('id_rubrique','extras_delai','extras_identifiants','titre'), "spip_rubriques", "`extras_delai` != ''")){
include_spip('inc/utils');
while($list = sql_fetch($rubLists)){
$date_modif = trim(recuperer_fond('inclure/maj_rubrique',array('id_rubrique'=>$list['id_rubrique'])));
if (age_rubrique($date_modif)>$list['extras_delai']){
$list['maj'] = $date_modif;
activite_editoriale_envoyer_mail($list);
//echo "s;";
}
}
}
function activite_tester_date_modif_branche() {
if ($rubLists = sql_select(array('id_rubrique','extras_delai','extras_identifiants','extras_emails','titre','extras_frequence'), "spip_rubriques", "`extras_delai` != ''")) {
include_spip('inc/utils');
while($list = sql_fetch($rubLists)) {
$date_modif = trim(recuperer_fond('inclure/maj_branche',array('id_rubrique'=>$list['id_rubrique'])));
$age = age_rubrique($date_modif);
$debutfrequence = ($age + $list['extras_delai']);
$frequence = $list['extras_frequence'];
// on teste les dates + la frequence
if ( $list['extras_frequence'] != '' ) {
if ( ($age > $list['extras_delai']) && ($debutfrequence % $frequence === 0) ) {
$list['maj'] = $date_modif;
activite_editoriale_envoyer_mail($list,$alerter_auteur);
spip_log('date modif branche', 'activite_editoriale');
}
} else {
if ( $age > $list['extras_delai'] ) {
$list['maj'] = $date_modif;
activite_editoriale_envoyer_mail($list,$alerter_auteur);
spip_log('date modif branche', 'activite_editoriale');
}
}
}
}
}
function activite_tester_date_modif_rubrique(){
if ($rubLists = sql_select(array('id_rubrique','extras_delai','extras_identifiants','titre'), "spip_rubriques", "`extras_delai` != ''")){
include_spip('inc/utils');
while($list = sql_fetch($rubLists)){
$date_modif = trim(recuperer_fond('inclure/maj_rubrique',array('id_rubrique'=>$list['id_rubrique'])));
if (age_rubrique($date_modif)>$list['extras_delai']){
$list['maj'] = $date_modif;
activite_editoriale_envoyer_mail($list);
}
}
}
function activite_tester_date_modif_rubrique() {
if ($rubLists = sql_select(array('id_rubrique','extras_delai','extras_identifiants','extras_emails','titre','extras_frequence'), "spip_rubriques", "`extras_delai` != ''")) {
include_spip('inc/utils');
while($list = sql_fetch($rubLists)) {
$date_modif = trim(recuperer_fond('inclure/maj_rubrique',array('id_rubrique' => $list['id_rubrique'])));
$age = age_rubrique($date_modif);
$debutfrequence = ($age + $list['extras_delai']);
$frequence = $list['extras_frequence'];
// on teste les dates + la frequence
if ( $list['extras_frequence'] != '' ) {
if ( ($age > $list['extras_delai']) && ($debutfrequence % $frequence === 0) ) {
$list['maj'] = $date_modif;
activite_editoriale_envoyer_mail($list,$alerter_auteur);
spip_log('date modif rubrique', 'activite_editoriale');
}
} else {
if ( $age > $list['extras_delai'] ) {
$list['maj'] = $date_modif;
activite_editoriale_envoyer_mail($list,$alerter_auteur);
spip_log('date modif rubrique', 'activite_editoriale');
}
}
}
}
}
function activite_editoriale_envoyer_mail($list){
function activite_editoriale_envoyer_mail($list) {
include_spip('activite_editoriale_fonctions');
$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
$subject = _T('activite_editoriale:rubrique_doit_maj');
$url = $GLOBALS['meta']['adresse_site'].'/ecrire/?exec=rubrique&id_rubrique='.$list['id_rubrique'];
$body = _T('activite_editoriale:titre_message')."\n\n";
$body = $body._T('activite_editoriale:prevenir_responsable',array('titre'=>$list['titre']))."\n\n";
$body = $body._T('activite_editoriale:rubrique_pas_maj',array('jours' => age_rubrique($list['maj'])))."\n\n";
$body = $body.$url;
$envoyer_mail = charger_fonction('envoyer_mail', 'inc');
$subject = _T('activite_editoriale:rubrique_doit_maj');
include_spip('activite_editoriale_fonctions');
$url = $GLOBALS['meta']['adresse_site'].'/ecrire/?exec=rubrique&id_rubrique='.$list['id_rubrique'];
$body = _T('activite_editoriale:rubrique_pas_maj',array('titre'=>$list['titre'],'jours'=>age_rubrique($list['maj'])))."\n\n";
$body = $body._T('activite_editoriale:gestionnaire')."\n\n";
$body = $body.$url;
if ($auteurLists = sql_select("*", "spip_auteurs", "id_auteur in (".$list['extras_identifiants'].")")) {
while($auteurs = sql_fetch($auteurLists)) {
$to = $auteurs['email'];
if ($envoyer_mail($to, $subject, $body)) {
spip_log("Message envoyé à".$to, "activite_editoriale");
} else {
spip_log("Message n'a pu être envoyé à ".$to, "activite_editoriale");
}
}
}
if ($auteurLists = sql_select("*", "spip_auteurs", "id_auteur in (".$list['extras_identifiants'].")")) {
while($auteurs = sql_fetch($auteurLists)) {
$to = $auteurs['email'];
if ($envoyer_mail($to, $subject, $body)) {
spip_log("Message envoyé à".$to, "activite_editoriale");
} else {
spip_log('Message n\'a pu être envoyé à '.$to, 'activite_editoriale');
}
}
}
$to = '';
foreach (explode(',',activite_editoriale_emails($list['extras_identifiants'])) as $to){
if ($to!=''){
if ($envoyer_mail($to, $subject, $body)) {
spip_log("Message envoyé à".$to, "activite_editoriale");
} else {
spip_log("Message n'a pu être envoyé à ".$to, "activite_editoriale");
}
}
}
}
function activite_editoriale_emails($champ){
$champ = ','.str_replace(' ','',$champ).',';
$champ = preg_replace('#,[0-9]*,#',',',$champ);
return $champ;
foreach (explode(',',$list['extras_emails']) as $to) {
if ($to != '') {
if ($envoyer_mail($to, $subject, $body)) {
spip_log('Message envoyé à '.$to, 'activite_editoriale');
} else {
spip_log('Message n\'a pu être envoyé à '.$to, 'activite_editoriale');
}
}
}
// envoyer mail a l'auteur de l'article, systematiquement si configure
if (function_exists('lire_config')) {
$alerter_auteur = lire_config('activite_editoriale/alerter_auteur');
if ($alerter_auteur == 'oui') {
$auteur = trim(recuperer_fond('inclure/auteurs_article',array('id_rubrique' => $list['id_rubrique'])));
$to = $auteur;
if ($to != '') {
$body = '';
$body = _T('activite_editoriale:titre_message')."\n\n";
$body = $body._T('activite_editoriale:prevenir_auteur',array('titre'=>$list['titre']))."\n\n";
$body = $body._T('activite_editoriale:article_pas_maj',array('jours' => age_rubrique($list['maj'])))."\n\n";
$body = $body.$url;
if ($envoyer_mail($to, $subject, $body)) {
spip_log('Message envoyé à '.$to, 'activite_editoriale');
} else {
spip_log('Message n\'a pu être envoyé à '.$to, 'activite_editoriale');
}
}
}
}
}
?>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

@ -0,0 +1 @@
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}>#SET{delai,#EXTRAS_DELAI}<BOUCLE_articles(ARTICLES){id_rubrique}{age > #GET{delai}}{','}><BOUCLE_auteurs(AUTEURS){id_article}{','}>#EMAIL</BOUCLE_auteurs></BOUCLE_articles></BOUCLE_rubrique>

@ -1,48 +1,67 @@
<?php
$GLOBALS[$GLOBALS['idx_lang']] = array(
//A
'activite_editoriale' =>'Activité éditoriale',
//A
'activite_editoriale' =>'Activité éditoriale',
'activite_editoriale_label' =>'Activité éditoriale - Paramètres des alertes',
'article_pas_maj' => 'Votre attention est nécessaire, un article dont vous êtes l\'auteur n\'a pas été mis à jour depuis @jours@ jours.',
//D
'delai' => 'D&eacute;lai',
'delai_precisions' => '(en nombre de jours)',
'derniere_maj' => 'Dernière MàJ',
'du' => 'Du ',
'date' => 'Date',
'delai' => 'Délai',
'derniere_maj' => 'Dernière MàJ',
'du' => 'Du ',
'date' => 'Date',
//E
'editer' => 'Éditer l\'article',
'editer' => 'Éditer l\'article',
'extras_delai_label' => 'Délai avant alerte',
'extras_delai_explications' => 'À compter d\'une mise à jour, le nombre de jours avant d\'envoyer une alerte.',
'extras_emails_label' => 'Email',
'extras_emails_explications' => 'Les adresses emails auxquelles doivent parvenir les alertes, séparées par des virgules.',
'extras_identifiants_label' => 'Identifiants des auteurs &agrave; alerter',
'extras_identifiants_explications' => 'Séparés par des virgules, par exemple :"1,12"',
'extras_frequence_label' => 'Fréquence de relance de l\'alerte',
'extras_frequence_explications' => 'Si la mise à jour n\'a pas été faite, au bout de combien de jours l\'alerte sera à nouveau envoyée.',
'explications_alerter_auteur' => 'Dans ce cas ne choisissez pas la date de mise à jour de la rubrique, cela interdit de prévenir les auteurs (une rubrique n\'a pas d\'auteur).',
'explications_champ' => '<strong>La date de mise à jour de la rubrique</strong> : elle est évaluée à chaque publication d\'un élément et à chaque modification d\'un élément publié ou de la rubrique elle-même.<br />
<strong>La date de modification des articles (et breves) de la branche</strong> (c\'est aussi la date de première publication).<br />
<strong>La date de modification des articles (et breves) de la rubrique</strong> (c\'est aussi la date de première publication).',
'explications_modifier_rubrique_pour_parametrer' => 'Modifiez la rubrique pour paramétrer les alertes.',
//G
'gestionnaire' => 'Vous êtes identifié comme un gestionnaire de la rubrique',
//I
'identifiants' => 'Identifiants ou email des auteurs &agrave; alerter',
'identifiants_precisions' => '(s&eacute;par&eacute;s par des ",")',
//F
'frequence_de_relance' => 'Fréquence de relance',
//J
'jours' => 'jour(s)',
'jusqua' => 'Jusqu\'au',
'jours' => 'jour(s)',
'jusqua' => 'Jusqu\'au',
//L
'label_alerter_auteur' => 'Alerter les auteurs des articles',
'label_oui_alerter_auteur' => 'oui',
'label_cfg_champ' => 'Quel est la date analysée pour évaluer le délais de mise à jour ?',
//P
'prevenir_responsable' => 'Vous êtes identifié comme responsable de l\'activité éditoriale de la rubrique “ @titre@ ”.',
'prevenir_auteur' => 'Vous êtes identifié comme auteur d\'un article de la rubrique “ @titre@ ”.',
//R
'responsables' => 'Responsables',
'rubriques_a_suivre' => 'Rubriques à suivre',
'rubrique_doit_maj' => 'Une rubrique doit être mise a jour',
'rubrique_pas_maj' => 'Attention, la rubrique “ @titre@ ” n\'a pas été mise à jour depuis @jours@ jours',
'rubriques_pas_a_jour' => 'Rubriques n\'ayant pas été mises à jour à temps',
'rubrique' => 'RUBRIQUE: ',
'responsables' => 'Responsables',
'rubriques_a_suivre' => 'Rubriques à suivre',
'rubrique_doit_maj' => 'Une rubrique doit être mise a jour',
'rubrique_pas_maj' => 'Votre attention est nécessaire, la rubrique n\'a pas été mise à jour depuis @jours@ jours.',
'rubriques_pas_a_jour' => 'Rubriques n\'ayant pas été mises à jour à temps',
'rubrique' => 'RUBRIQUE: ',
//S
'secteur' => 'Secteur:',
'secteur' => 'Secteur:',
//T
'titre_message' => 'Ceci est un message automatique.',
//CFG
'cfg' => 'Configurer le plugin Activité éditoriale',
'cfg_champ' => 'Quel est le champ analysé pour savoir la MAJ ?',
'cfg_maj_rubrique' => 'Le champ MAJ de la rubrique',
'cfg_date_modif_branche' => 'Le champ DATE_MODIF des articles (breves) de la branche',
'cfg_date_modif_rubrique' => 'Le champ DATE_MODIF des articles (breves) de la rubrique'
'cfg' => 'Configurer le plugin Activité éditoriale',
'cfg_maj_rubrique' => 'La date de mise à jour de la rubrique',
'cfg_date_modif_branche' => 'La date de modification des articles/breves de la branche',
'cfg_date_modif_rubrique' => 'La date de modification des articles/breves de la rubrique',
);
);

@ -13,12 +13,21 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'activite_editoriale_description' => 'Ce plugin a pour objectif de compléter les fonctionnalités de suivi de l\'activité éditoriale de SPIP.
Sont déjà proposés :
-* l\'ajout de deux champs aux rubriques pour indiquer un délai en jour au delà duquel elle doivent être alimentées, ainsi que les personnes à prévenir
-* des alertes par e-mail selon ces deux paramètres
-* un tableau de bord présentant les mêmes informations',
'activite_editoriale_description' => 'Ce plugin a pour objectif de compléter les fonctionnalités de suivi de l\'activité éditoriale de SPIP.
La configuration générale du plugin propose de choisir sur quel champ de date s\'appuyer pour déterminer si le délai est dépassé :
-* lorsqu\'on modifie le texte ou le titre de la rubrique : le champ #MAJ de la rubrique.
-* lorsqu\'on modifie les articles de la rubrique : le champ #DATE_MODIF des articles de la rubrique uniquement.
-* lorsqu\'on modifie les articles de la branche : le champ #DATE_MODIF des articles de la branche entière.
On peut aussi choisir de prévenir les auteurs des articles.
Dans chaque rubrique on peut paramétrer :
-* le délai : en nombre de jour, le délai au-delà duquel une alerte est envoyée.
-* choisir d\'alerter pour chaque article dépassant le délai. Par défaut : une alerte lorsque tous les articles ont dépassé le délai.
-* à qui envoyer les alertes : on renseigne juste le numéro identifiant des auteurs du site, et/ou des courriels.
-* la fréquence de relance de l\'alerte.
Dans une nouvelle page accessible sous le menu Activité > Activité Éditoriale, un tableau recense les rubriques suivies en séparant les rubriques à jour et les autres.',
'activite_editoriale_slogan' => 'Un site, c\'est bien ! Un site à jour, c\'est mieux !',
);
?>

@ -1,11 +1,11 @@
<paquet
prefix="activite_editoriale"
categorie="edition"
version="2.0.5"
etat="stable"
version="3.0.0"
etat="test"
compatibilite="[3.0.0;3.2.*]"
logo="activite_editoriale.png"
schema="0.1"
logo="images/activite_editoriale.png"
schema="1.0.0"
documentation="https://contrib.spip.net/Activite-editoriale"
>
@ -14,6 +14,7 @@
<auteur lien="http://www.clever-age.com/">Stéphanie Caron de Clever Age</auteur>
<auteur lien="http://www.maieul.net">Maïeul ROUQUETTE (amélioration)</auteur>
<auteur>Chankalan (évolutions)</auteur>
<licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
@ -22,5 +23,5 @@
<necessite nom="cextras" compatibilite="[3.4.1;[" />
<menu nom="activite_editoriale" titre="activite_editoriale:activite_editoriale" parent="menu_configuration" icone="activite_editoriale.png" />
<menu nom="activite_editoriale" titre="activite_editoriale:activite_editoriale" parent="menu_activite" icone="images/activite_editoriale-16.png" />
</paquet>

@ -1,83 +1,80 @@
#CACHE{0}
<h1><:activite_editoriale:activite_editoriale:></h1>
#CACHE{0}
<h1><:activite_editoriale:activite_editoriale:></h1>
<div>
<h2><:activite_editoriale:rubriques_pas_a_jour:></h2>
<div class='cadre cadre-liste' style='margin-top: 20px;'>
<table width='100%' cellpadding='2' cellspacing='0' border='0'>
<thead>
<tr>
<th><:rubrique:></th>
<th><:activite_editoriale:responsables:></th>
<th><:activite_editoriale:delai:></th>
<th><:activite_editoriale:frequence_de_relance:></th>
<th><:activite_editoriale:derniere_maj:></th>
</tr>
</thead>
<tbody>
<BOUCLE_rubriques(RUBRIQUES){tout}{par maj}>
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={maj_rubrique}|oui)
#SET{maj,#MAJ}
]
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={date_modif_branche}|oui)
#SET{maj,#INCLURE{fond=inclure/maj_branche}{id_rubrique}}
]
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={date_modif_rubrique}|oui)
#SET{maj,#INCLURE{fond=inclure/maj_rubrique}{id_rubrique}}
]
[(#EXTRAS_DELAI|!={''}|oui)
[(#GET{maj}|age_rubrique|>={#EXTRAS_DELAI}|oui)
<INCLURE{fond=prive/exec/activite_editoriale_rubrique}{id_rubrique}{maj=#GET{maj}}>
]
]
</BOUCLE_rubriques>
</tbody>
</table>
</div>
</div>
<div>
<h2><:activite_editoriale:rubriques_pas_a_jour:></h2>
<div class='cadre cadre-liste' style='margin-top: 20px;'>
<table width='100%' cellpadding='2' cellspacing='0' border='0'>
<thead>
<tr>
<th><:rubrique:></th>
<th><:activite_editoriale:responsables:></th>
<th><:activite_editoriale:delai:></th>
<th><:activite_editoriale:derniere_maj:></th>
</tr>
</thead>
<tbody>
<BOUCLE_rubriques(RUBRIQUES){tout}{par maj}>
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={maj_rubrique}|oui)
#SET{maj,#MAJ}
]
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={date_modif_branche}|oui)
#SET{maj,#INCLURE{fond=inclure/maj_branche}{id_rubrique}}
]
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={date_modif_rubrique}|oui)
#SET{maj,#INCLURE{fond=inclure/maj_rubrique}{id_rubrique}}
]
[(#EXTRAS_DELAI|!={''}|oui)
[(#GET{maj}|age_rubrique|>={#EXTRAS_DELAI}|oui)
<INCLURE{fond=prive/exec/activite_editoriale_rubrique}{id_rubrique}{maj=#GET{maj}}>
]
]
</BOUCLE_rubriques>
</tbody>
</table>
</div>
<h2><:activite_editoriale:rubriques_a_suivre:></h2>
<div class='cadre cadre-liste' style='margin-top: 20px;'>
<table width='100%' cellpadding='2' cellspacing='0' border='0'>
<thead>
<tr>
<th><:rubrique:></th>
<th><:activite_editoriale:responsables:></th>
<th><:activite_editoriale:delai:></th>
<th><:activite_editoriale:frequence_de_relance:></th>
<th><:activite_editoriale:derniere_maj:></th>
</tr>
</thead>
<tbody>
<BOUCLE_rubriques2(RUBRIQUES){tout}{par maj}>
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={maj_rubrique}|oui)
#SET{maj,#MAJ}
]
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={date_modif_branche}|oui)
#SET{maj,#INCLURE{fond=inclure/maj_branche}{id_rubrique}}
]
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={date_modif_rubrique}|oui)
#SET{maj,#INCLURE{fond=inclure/maj_rubrique}{id_rubrique}}
]
[(#EXTRAS_DELAI|!={''}|oui)
[(#GET{maj}|age_rubrique|<{#EXTRAS_DELAI}|oui)
<INCLURE{fond=prive/exec/activite_editoriale_rubrique}{id_rubrique}{maj=#GET{maj}}>
]
]
</BOUCLE_rubriques2>
</tbody>
</table>
</div>
</div>
<div>
<h2><:activite_editoriale:rubriques_a_suivre:></h2>
<div class='cadre cadre-liste' style='margin-top: 20px;'>
<table width='100%' cellpadding='2' cellspacing='0' border='0'>
<thead>
<tr>
<th><:rubrique:></th>
<th><:activite_editoriale:responsables:></th>
<th><:activite_editoriale:delai:></th>
<th><:activite_editoriale:derniere_maj:></th>
</tr>
</thead>
<tbody>
<BOUCLE_rubriques2(RUBRIQUES){tout}{par maj}>
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={maj_rubrique}|oui)
#SET{maj,#MAJ}
]
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={date_modif_branche}|oui)
#SET{maj,#INCLURE{fond=inclure/maj_branche}{id_rubrique}}
]
[(#CONFIG{activite_editoriale/champ,maj_rubrique}|=={date_modif_rubrique}|oui)
#SET{maj,#INCLURE{fond=inclure/maj_rubrique}{id_rubrique}}
]
[(#EXTRAS_DELAI|!={''}|oui)
[(#GET{maj}|age_rubrique|<{#EXTRAS_DELAI}|oui)
<INCLURE{fond=prive/exec/activite_editoriale_rubrique}{id_rubrique}{maj=#GET{maj}}>
]
]
</BOUCLE_rubriques2>
</tbody>
</table>
</div>
</div>
<!--#navigation-->
<!--/#navigation-->
<!--#extra-->
<!--#navigation-->
<!--/#navigation-->
<!--#extra-->
<!--/#extra-->

@ -1,11 +1,12 @@
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}{tout}>
<tr class='tr_liste'>
<td><a href='#URL_ECRIRE{rubrique,id_rubrique=#ID_RUBRIQUE}' dir='ltr'>#TITRE</a></td>
<td>
#SET{liste_auteur, #EXTRAS_IDENTIFIANTS|explode{','}}
<BOUCLE_auteurs(AUTEURS) {id_auteur IN #GET{liste_auteur}}{tout}{", "}><a href='#URL_ECRIRE{auteur,id_auteur=#ID_AUTEUR}'>#NOM</a></BOUCLE_auteurs>
</td>
<td style="text-align: right">#EXTRAS_DELAI <:activite_editoriale:jours:></td>
<td style="text-align: right">[(#ENV{maj}|affdate)]</td>
</tr>
</BOUCLE_rubrique>
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}{tout}>
<tr class='tr_liste'>
<td><a href='#URL_ECRIRE{rubrique,id_rubrique=#ID_RUBRIQUE}' dir='ltr'>#TITRE</a></td>
<td>
#SET{liste_auteur,(#EXTRAS_IDENTIFIANTS|explode{','})}
<BOUCLE_auteurs(AUTEURS) {id_auteur IN #GET{liste_auteur}}{tout}><a href='#URL_ECRIRE{auteur,id_auteur=#ID_AUTEUR}'>#NOM</a><br /></BOUCLE_auteurs>[(#EXTRAS_EMAILS)<br />]
</td>
<td>[(#EXTRAS_DELAI) <:activite_editoriale:jours:>]</td>
<td>[(#EXTRAS_FREQUENCE) <:activite_editoriale:jours:>]</td>
<td>[(#ENV{maj}|affdate)]</td>
</tr>
</BOUCLE_rubrique>

Binary file not shown.

After

Width:  |  Height:  |  Size: 764 B

Loading…
Cancel
Save