Hou la !
Une remarque de forme deja :
les plugins permettent de surcharger les fonctions natives de SPIP.
- Donc si tu met dans ton plugin exec/articles_tous il prendre la place de celui de SPIP, et ca evite de devoir patcher le core,
ce qui est a peu pres infaisable pour l'utilisateur type d'un plugin.
- Corrolairement (que ce soit par le patch ou par la surcharge), ce plugin est emminemment non ecologique et ne tournera que sur la version 1.9.1
Sur le fond :
- Il y a dans la 1.9.2 un mecanisme d'autorisation generique qui permettra a terme de faire ca sans surcharge autre que les fonctions d'autorisation. Si tu veux y jeter un coup d'oeil, et notamment reperer les endroits du code du noyau ou manquent les appels a autoriser (tous les tests n'ont pas encore été remplacé par autoriser() ). On pourrait le finir avant la sortie prochaine de la 1.9.2. Sinon ca attendra la 1.9.3 ...
Mais sinon, y a de quoi faire des heureux surement !
Cedric
florent@eledo.com a écrit :
Author: florent@eledo.com
Date: Thu Dec 21 16:05:25 2006
New Revision: 8207Log:
import plugin redacchef : gerer le role de redacteur en chefAdded:
_plugins_/_dev_/redacchef/
_plugins_/_dev_/redacchef/1_9_1/
_plugins_/_dev_/redacchef/1_9_1/IMG/
_plugins_/_dev_/redacchef/1_9_1/IMG/auteur-24-orange.gif (with props)
_plugins_/_dev_/redacchef/1_9_1/IMG/redac-12-orange.gif (with props)
_plugins_/_dev_/redacchef/1_9_1/INSTALL.TXT
_plugins_/_dev_/redacchef/1_9_1/diffs_spip/
_plugins_/_dev_/redacchef/1_9_1/diffs_spip/diff_exec
_plugins_/_dev_/redacchef/1_9_1/diffs_spip/diff_inc
_plugins_/_dev_/redacchef/1_9_1/exec/
_plugins_/_dev_/redacchef/1_9_1/exec/redacchef.php
_plugins_/_dev_/redacchef/1_9_1/exec/redacchef_inc.php
_plugins_/_dev_/redacchef/1_9_1/exec/redacchef_pipelines.php
_plugins_/_dev_/redacchef/1_9_1/lang/
_plugins_/_dev_/redacchef/1_9_1/lang/redacchef_fr.php
_plugins_/_dev_/redacchef/1_9_1/plugin.xml
_plugins_/_dev_/redacchef/1_9_1/redacchef_boutons.php
_plugins_/_dev_/redacchef/dev/Added: _plugins_/_dev_/redacchef/1_9_1/IMG/auteur-24-orange.gif
Binary file - no diff available.
Propchange: _plugins_/_dev_/redacchef/1_9_1/IMG/auteur-24-orange.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-streamAdded: _plugins_/_dev_/redacchef/1_9_1/IMG/redac-12-orange.gif
Binary file - no diff available.
Propchange: _plugins_/_dev_/redacchef/1_9_1/IMG/redac-12-orange.gif
------------------------------------------------------------------------------
svn:mime-type = application/octet-streamAdded: _plugins_/_dev_/redacchef/1_9_1/INSTALL.TXT
--- _plugins_/_dev_/redacchef/1_9_1/INSTALL.TXT (added)
+++ _plugins_/_dev_/redacchef/1_9_1/INSTALL.TXT Thu Dec 21 16:05:25 2006
@@ -0,0 +1,48 @@
+INSTALLATION du Plugin
+
+Ce plugin doit être installé sur un SPIP 1.9.1.
+
+L'installation se déroule en trois étapes :
+
+1. copie des fichiers dans l'arborescence SPIP
+2. patch des sources SPIP
+3. installation de la table dans la base
+
+Convention : la racine de l'arborescence SPIP est notée <SPIP> dans ce document. +
+===> 1. copie des fichiers dans l'arborescence SPIP
+
+Détarrer les fichiers dans un répertoire temporaire
+$ cd /tmp
+$ tar xzvf plugin-redacchef-0.1.tgz
+
+Cette opération doit créer un répertoire "redacchef"
+
+Se déplacer à la racine SPIP:
+$ cd <SPIP>
+
+Fabriquer le répertoire plugin si celui-ci n'existe pas
+$ mkdir plugins
+
+Y copier le plugin "redacchef"
+$ cd plugins
+$ cp -rf /tmp/redacchef .
+
+===> 2. patch des sources SPIP
+
+Il faut utiliser l'utilitaire "patch" pour patcher les sources de SPIP : se déplacer à la racine du site, et passer la commande. Il y a deux patchs à appliquer
+
+$ cd <SPIP>
+$ patch -p1 ./plugins/redacchef/1_9_1/diffs_spip/diff_exec
+patching file ecrire/exec/articles_tous.php
+patching file ecrire/exec/naviguer.php
+patching file ecrire/exec/rubriques_edit.php
+$ patch -p1 ./plugins/redacchef/1_9_1/diffs_spip/diff_inc
+patching file ecrire/inc/auth.php
+patching file ecrire/inc/presentation.php
+
+===> 3. installation de la table dans la base
+
+Le plugin est maintenant utilisable. Il suffit d'aller en admin sur l'interface privée de SPIP, dans la section "Configuration". Il faut activer le plugin "Redac-Chef". Une fois le plugin activé, il faut aller dans le bouton "Auteurs". Un nouvel item "Gérer les Rédacteurs chefs" est maintenant présent. Lors de la première utilisation, la table est automatiquement créée dans la base de données.
+Added: _plugins_/_dev_/redacchef/1_9_1/diffs_spip/diff_exec
--- _plugins_/_dev_/redacchef/1_9_1/diffs_spip/diff_exec (added)
+++ _plugins_/_dev_/redacchef/1_9_1/diffs_spip/diff_exec Thu Dec 21 16:05:25 2006
@@ -0,0 +1,52 @@
+diff -aburN spip191ref/ecrire/exec/articles_tous.php spip191redac/ecrire/exec/articles_tous.php
+--- spip191ref/ecrire/exec/articles_tous.php 2006-08-14 23:58:41.000000000 +0200
++++ spip191redac/ecrire/exec/articles_tous.php 2006-11-14 14:00:13.000000000 +0100
+@@ -33,7 +33,12 @@
+ + $sel_lang[$spip_lang] = $spip_lang;
+ +-if ($connect_statut == "0minirezo") ++// FJ
++global $auteur_session;
++$test = pipeline('redacchef_affpubli2', array('connect_statut'=>$connect_statut, 'id_auteur'=>$auteur_session['id_auteur']));
++//if ($connect_statut == "0minirezo") ++if ($test)
++// FJ
+ $result = spip_query("SELECT id_article, titre, statut, id_rubrique, lang, id_trad, date_modif FROM spip_articles ORDER BY date DESC");
+ else + $result = spip_query("SELECT articles.id_article, articles.titre, articles.statut, articles.id_rubrique, articles.lang, articles.id_trad, articles.date_modif FROM spip_articles AS articles, spip_auteurs_articles AS lien WHERE (articles.statut = 'publie' OR articles.statut = 'prop' OR (articles.statut = 'prepa' AND articles.id_article = lien.id_article AND lien.id_auteur = $connect_id_auteur)) GROUP BY id_article ORDER BY articles.date DESC");
+diff -aburN spip191ref/ecrire/exec/naviguer.php spip191redac/ecrire/exec/naviguer.php
+--- spip191ref/ecrire/exec/naviguer.php 2006-09-07 23:35:44.000000000 +0200
++++ spip191redac/ecrire/exec/naviguer.php 2006-11-14 14:01:17.000000000 +0100
+@@ -361,7 +361,12 @@
+ ////////// Les articles en cours de redaction
+ /////////////////////////
+ +- if ($connect_statut == "0minirezo" AND $options == 'avancees') {
++// FJ
++ global $auteur_session;
++ $test = pipeline('redacchef_affpubli', array('connect_statut'=>$connect_statut,'options'=>$options, 'id_auteur'=>$auteur_session["id_auteur"]) );
++// if ($connect_statut == "0minirezo" AND $options == 'avancees') { ++ if ($test) { ++// FJ + afficher_articles(_T('info_tous_articles_en_redaction'), array("WHERE" => "statut='prepa' AND id_rubrique='$id_rubrique'", 'ORDER BY' => "date DESC"));
+ }
+ +diff -aburN spip191ref/ecrire/exec/rubriques_edit.php spip191redac/ecrire/exec/rubriques_edit.php
+--- spip191ref/ecrire/exec/rubriques_edit.php 2006-08-14 23:58:41.000000000 +0200
++++ spip191redac/ecrire/exec/rubriques_edit.php 2006-11-14 14:00:38.000000000 +0100
+@@ -27,7 +27,13 @@
+ $options;
+ + if ($new == "oui") {
+- if (($connect_statut=='0minirezo') AND acces_rubrique($id_parent)) {
++ //FJ
++ // if (($connect_statut=='0minirezo') AND acces_rubrique($id_parent)) {
++ global $auteur_session;
++ $redac_chef = pipeline('redacchef_affpubli3',array('id_auteur'=>$auteur_session['id_auteur']));
++ //if ($connect_statut=='0minirezo' AND acces_rubrique($id_parent)) {
++ if (($redac_chef OR $connect_statut=='0minirezo') AND acces_rubrique($id_parent)) {
++ //FJ
+ $id_parent = intval($id_parent);
+ $id_rubrique = 0;
+ $titre = filtrer_entites(_T('titre_nouvelle_rubrique'));Added: _plugins_/_dev_/redacchef/1_9_1/diffs_spip/diff_inc
--- _plugins_/_dev_/redacchef/1_9_1/diffs_spip/diff_inc (added)
+++ _plugins_/_dev_/redacchef/1_9_1/diffs_spip/diff_inc Thu Dec 21 16:05:25 2006
@@ -0,0 +1,52 @@
+diff -aburN spip191ref/ecrire/inc/auth.php spip191redac/ecrire/inc/auth.php
+--- spip191ref/ecrire/inc/auth.php 2006-09-23 13:51:13.000000000 +0200
++++ spip191redac/ecrire/inc/auth.php 2006-11-14 14:02:06.000000000 +0100
+@@ -22,7 +22,12 @@
+ global $connect_toutes_rubriques;
+ global $connect_id_rubrique;
+ +- return ($connect_toutes_rubriques OR isset($connect_id_rubrique[$id_rubrique]));
++ //FJ
++ global $auteur_session;
++ $acc_redac_chef = pipeline('redacchef_ok',array('id_auteur'=>$auteur_session['id_auteur']));
++ //return ($connect_toutes_rubriques OR isset($connect_id_rubrique[$id_rubrique]));
++ return ($acc_redac_chef OR $connect_toutes_rubriques OR isset($connect_id_rubrique[$id_rubrique]));
++ //FJ
+ }
+ + // http://doc.spip.org/@acces_restreint_rubrique
+diff -aburN spip191ref/ecrire/inc/presentation.php spip191redac/ecrire/inc/presentation.php
+--- spip191ref/ecrire/inc/presentation.php 2006-09-29 17:46:08.000000000 +0200
++++ spip191redac/ecrire/inc/presentation.php 2006-11-14 14:02:41.000000000 +0100
+@@ -636,7 +636,13 @@
+ }
+ $puce = "puce-$puce.gif";
+
+- if ($connect_statut == '0minirezo' AND $options == 'avancees' AND acces_rubrique($id_rubrique)) {
++ // FJ
++ global $auteur_session;
++ $test = pipeline('redacchef_affpubli', array('connect_statut'=>$connect_statut, 'options'=>$options, 'id_auteur'=>$auteur_session['id_auteur']));
++ //if ($connect_statut == '0minirezo' AND $options == 'avancees' AND acces_rubrique($id_rubrique)) {
++ if ($test AND acces_rubrique($id_rubrique)) { ++ //FJ
++
+ // les versions de MSIE ne font pas toutes pareil sur alt/title
+ // la combinaison suivante semble ok pour tout le monde.
+ $titles = array(
+@@ -1332,7 +1338,16 @@
+ if ($connect_statut == '0minirezo' AND ($row['source'] == 'spip' AND !($row['pass'] AND $row['login'])))
+ return http_img_pack("visit-12.gif",'', "", _T('titre_image_redacteur'));
+ else
++ //FJ
++ {
++ $test_redac_chef = pipeline('redacchef_ok',array('id_auteur'=>$row['id_auteur']));
++ if (!$test_redac_chef)
+ return http_img_pack("redac-12.gif",'', "", _T('titre_image_redacteur_02'));
++ else
++ return http_img_pack(_DIR_PLUGIN_REDACCHEF."/IMG/redac-12-orange.gif",'', "", _T('redacchef:titreimageredacchef'));
++ }
++ //return http_img_pack("redac-12.gif",'', "", _T('titre_image_redacteur_02'));
++ //finFJ
+ break;
+ case "5poubelle":
+ return http_img_pack("poubelle.gif", '', "",_T('titre_image_auteur_supprime'));[... 759 lines stripped ...]
_______________________________________________
Spip-zone-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone-commit