Browse Source

Gestion des autorisations pour les administrateur et les rédacteurs. Ajout d'un option pour le status du nouvel article

Le panneau de configuration du plugin permet de spécifier qui peut dupliquer des rubriques, qui peut dupliquer des articles.
Une autre option permet d'imposer le statut "en cours de rédaction" aux articles dupliquer au lieu de conserver le statut de l'article d'origine.
v1
keuronde@poivron-robotique.fr 8 years ago
parent
commit
ad5b6e5be0
  1. 1
      .gitattributes
  2. 66
      duplicator_autoriser.php
  3. 12
      duplicator_pipelines.php
  4. 42
      formulaires/configurer_duplicator.html
  5. 8
      inc/duplicator.php
  6. 18
      lang/duplicator_fr.php
  7. 5
      paquet.xml

1
.gitattributes vendored

@ -1,6 +1,7 @@
* text=auto !eol
/a_faire.txt -text
action/duplicator.php -text
/duplicator_autoriser.php -text
/duplicator_pipelines.php -text
formulaires/configurer_duplicator.html -text
inc/duplicator.php -text

66
duplicator_autoriser.php

@ -0,0 +1,66 @@
<?
/***************************************************************************\
* Plugin Duplicator pour Spip 3.0
* Licence GPL (c) 2010-2014 - Apsulis
* Duplication de rubriques et d'articles
*
\***************************************************************************/
function duplicator_autoriser(){}
/*function autoriser_dupliquer($faire, $type='', $id=0, $qui = NULL, $opt = NULL){
return true;
}*/
function autoriser_rubrique_dupliquer($faire, $type='', $id=0, $qui = NULL, $opt = NULL){
// Si la config permet de dupliquer les rubriques
if (strcmp(lire_config('duplicator/config/duplic_rubrique'),'oui') == 0){
// Le webmestre peut dupliquer les rubriques
if(autoriser("webmestre"))
return true;
// Administrateur
if ( (strcmp($qui['statut'], '0minirezo') == 0) AND
((strcmp(lire_config('duplicator/config/duplic_rubrique_autorisation'),"0minirezo") == 0) OR
(strcmp(lire_config('duplicator/config/duplic_rubrique_autorisation'),"1comite") == 0)) )
return true;
// Rédacteur
if (( strcmp($qui['statut'], '1comite') == 0) AND (strcmp(lire_config('duplicator/config/duplic_rubrique_autorisation'),'1comite') == 0 ))
return true;
}
return false;
}
function autoriser_article_dupliquer($faire, $type='', $id=0, $qui = NULL, $opt = NULL){
// Si la config permet de dupliquer les articles
if (strcmp(lire_config('duplicator/config/duplic_article'),'oui') == 0){
// Le webmestre peut dupliquer les articles
if(autoriser("webmestre"))
return true;
// Administrateur
if ( (strcmp($qui['statut'], '0minirezo') == 0) AND
((strcmp(lire_config('duplicator/config/duplic_article_autorisation'),"0minirezo") == 0) OR
(strcmp(lire_config('duplicator/config/duplic_article_autorisation'),"1comite") == 0)) )
return true;
// Rédacteur
if (( strcmp($qui['statut'], '1comite') == 0) AND (strcmp(lire_config('duplicator/config/duplic_article_autorisation'),'1comite') == 0 ))
return true;
}
return false;
}
?>

12
duplicator_pipelines.php

@ -11,19 +11,19 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
function duplicator_boite_infos($flux){
$type = $flux['args']['type'];
if(autoriser("webmestre")){
if ((lire_config('duplicator/config/duplic_rubrique')=="oui")){
if(autoriser("dupliquer", "rubrique")){
if (($id = intval($flux['args']['id'])) && ($type=='rubrique')){
$contexte = array('id_objet'=>$id,'objet'=>$type);
$flux["data"] .= recuperer_fond("noisettes/bouton_duplicator", $contexte);
}
}
if ((lire_config('duplicator/config/duplic_article')=="oui")){
}
if(autoriser("dupliquer", "article")){
if (($id = intval($flux['args']['id'])) && ($type=='article')){
$contexte = array('id_objet'=>$id,'objet'=>$type);
$flux["data"] .= recuperer_fond("noisettes/bouton_duplicator", $contexte);
}
}
}
return $flux;
@ -32,4 +32,4 @@ function duplicator_boite_infos($flux){
function duplicator_jqueryui_plugins($plugins){
$plugins[] = "jquery.ui.dialog";
return $plugins;
}
}

42
formulaires/configurer_duplicator.html

@ -41,6 +41,48 @@
</li>
</ul>
</fieldset>
<fieldset>
<legend><:duplicator:autorisations:></legend>
<ul>
<li>
<label for="duplic_article"><:duplicator:autorisations_article:></label>
<div class="choix">
<select name="duplic_article_autorisation">
<option value="webmestre" [(#ENV{duplic_article_autorisation,''}|=={webmestre}|oui)selected="selected"]><:duplicator:autorisations_webmestre_label:></option>
<option value="0minirezo" [(#ENV{duplic_article_autorisation,''}|=={0minirezo}|oui)selected="selected"]><:duplicator:autorisations_admin_label:></option>
<option value="1comite" [(#ENV{duplic_article_autorisation,''}|=={1comite}|oui)selected="selected"]><:duplicator:autorisations_redacteur_label:></option>
</select>
</div>
</li>
<li>
<label for="duplic_article"><:duplicator:autorisations_rubriques:></label>
<div class="choix">
<select name="duplic_rubrique_autorisation">
<option value="webmestre" [(#ENV{duplic_rubrique_autorisation,''}|=={webmestre}|oui)selected="selected"]><:duplicator:autorisations_webmestre_label:></option>
<option value="0minirezo" [(#ENV{duplic_rubrique_autorisation,''}|=={0minirezo}|oui)selected="selected"]><:duplicator:autorisations_admin_label:></option>
<option value="1comite" [(#ENV{duplic_rubrique_autorisation,''}|=={1comite}|oui)selected="selected"]><:duplicator:autorisations_redacteur_label:></option>
</select>
</div>
</li>
</ul>
</fieldset>
<fieldset>
<legend><:duplicator:etat_article:></legend>
<ul>
<li>
<label for="duplic_article"><:duplicator:dupli_art_etat_pub:></label>
<div class="choix">
<p class="explication"><:duplicator:dupli_art_etat_pub_expl:></p>
<input type="checkbox" name="duplic_article_etat_pub" class="checkbox" value="oui" id="duplic_article"[(#ENV{duplic_article_etat_pub,''}|=={oui}|oui)checked="checked"] />
<label for="duplic_article"><:duplicator:dupli_art_etat_pub_label:></label>
</div>
</li>
</ul>
</fieldset>
<input type="hidden" name="_meta_casier" value="duplicator/config" />
<p class='boutons'><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>

8
inc/duplicator.php

@ -43,9 +43,11 @@ function dupliquer_article($id_article,$rubrique){
$id_article = insert_article($rubrique);
revision_article($id_article, $infos_de_l_article);
// On lui rend son statut
$c = array('statut' => $infos['statut']);
article_instituer($id_article, $c);
// Suivant la configuration, on lui rend son statut ou on le laisse en brouillon
if (strcmp(lire_config('duplicator/config/duplic_article_etat_pub'),"oui") == 0) {
$c = array('statut' => $infos['statut']);
article_instituer($id_article, $c);
}
// On lui remet ses mots clefs
remettre_les_mots_clefs($mots_clefs_de_l_article,$id_article,'article');

18
lang/duplicator_fr.php

@ -8,6 +8,14 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'action_dupliquer_article' => "Dupliquer cet article",
'action_dupliquer_rubrique' => "Dupliquer cette rubrique",
'action_dupliquer_rubrique_arbo' => 'Dupliquer l\'arborescence de la rubrique',
'autorisations' => 'Autorisations',
'autorisations_article' => 'Qui peut dupliquer des articles&nbsp;?',
'autorisations_admin_label' => 'Administrateurs',
'autorisations_redacteur_label' => 'Administrateurs et rédacteurs',
'autorisations_rubriques' => 'Qui peut dupliquer des rubriques&nbsp;?',
'autorisations_webmestre_label' => 'Webmestre uniquement',
// B
'bouton_confirmer' => 'Confirmer',
@ -22,7 +30,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// D
'dupli_art' => "Duplication sur les articles",
'dupli_art_etat_pub' => "Etat des articles publiés&nbsp;:",
'dupli_art_etat_pub_expl' => "Status des articles dupliqués. Par défaut, les nouveaux articles sont \"en cours de rédaction\"",
'dupli_art_etat_pub_label' => "Les articles dupliqués sont publiés en ligne si l'original est publié",
'dupli_rub' => "Duplication sur les rubriques",
// E
'etat_article' => "Choix du status des articles dupliqués",
// I
'icone_dupliquer' => 'Dupliquer la rubrique',
@ -33,8 +47,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// M
'message_annuler' => 'Annuler',
'message_avertissement_article' => 'Êtes-vous sûr de vouloir dupliquer cet article ?',
'message_avertissement_rubrique' => 'Êtes-vous sûr de vouloir dupliquer cette rubrique ?',
'message_avertissement_article' => 'Êtes-vous sûr de vouloir dupliquer cet article&nbsp;?',
'message_avertissement_rubrique' => 'Êtes-vous sûr de vouloir dupliquer cette rubrique&nbsp;?',
'message_confirmer' => 'Confirmer',
'operation_executee' => "L'opération a bien été exécutée.",

5
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="duplicator"
categorie="edition"
version="1.4.4"
version="1.5.0"
etat="test"
compatibilite="[3.0.0;3.0.*]"
logo="prive/themes/spip/images/duplicator.png"
@ -12,14 +12,17 @@
<!-- Dupliquer une rubrique et son contenu -->
<auteur lien="http://demo.apsulis.com">Apsulis</auteur>
<auteur lien="http://poivron-robotique.fr">Keuronde</auteur>
<copyright>2010-2014</copyright>
<licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence>
<pipeline nom="duplicator" action="" />
<pipeline nom="autoriser" inclure="duplicator_autoriser.php" />
<pipeline nom="boite_infos" inclure="duplicator_pipelines.php" />
<pipeline nom="jqueryui_plugins" inclure="duplicator_pipelines.php" />
<!-- <menu nom="configurer_duplicator" titre="duplicator:configuration_duplicator" parent="menu_configuration" icone="theme/img/duplicator.png" /> -->
</paquet>

Loading…
Cancel
Save