Browse Source

1.1.0 : Nouvelles fonctions

- On peut sélectionner les champs à dupliquer dans la configuration du plugin,
- les url sont dupliquées également.
v1
bruno.caillard@free.fr 10 years ago
parent
commit
062dd28113
  1. 55
      action/dupliquer.php
  2. 37
      formulaires/configurer_duplicator.html
  3. 14
      lang/duplicator_fr.php
  4. 2
      paquet.xml

55
action/dupliquer.php

@ -5,6 +5,7 @@
* Duplication de rubriques et d'articles
*
\***************************************************************************/
function trim_value(&$value){$value = trim($value);}
/**
* Duplique un article dans la rubrique cible
@ -16,7 +17,8 @@ function dupliquer_article($article,$rubrique){
include_spip('action/editer_article');
include_spip('inc/modifier_article');
include_spip('inc/modifier');
include_spip('inc/config');
// On lit l'article qui va etre dupliqué
$champs = array('*');
$from = 'spip_articles';
@ -25,8 +27,10 @@ function dupliquer_article($article,$rubrique){
);
$infos = sql_allfetsel($champs, $from, $where);
// On choisi les champs que l'on veut conserver
// TODO éventuellement passer cette variable en CFG pour choisir depuis SPIP les champs à conserver ?
$champs_dupliques = array(
$champs_dupliques = explode(",", lire_config('duplicator/art_champs'));
array_walk($champs_dupliques, 'trim_value');
if (empty($champs_dupliques)) $champs_dupliques = array(
'surtitre','titre','soustitre','descriptif','chapo','texte','ps','accepter_forum','lang','langue_choisie','nom_site','url_site'
);
foreach ($champs_dupliques as $key => $value) {
@ -53,6 +57,24 @@ function dupliquer_article($article,$rubrique){
dupliquer_logo($article,$id_article,'article',false);
dupliquer_logo($article,$id_article,'article',true);
/////////////////////////////////////
// Duplication des url dans spip_url
/////////////////////////////////////
$where = array(
"id_objet=".$article,
"type='article'",
);
// $infos_url = sql_allfetsel('*', 'spip_urls', $where, );
$infos_url = sql_fetsel('*', 'spip_urls', $where, 'date', 'date DESC');
$infos_url['id_objet'] = $id_article;
$url = $infos_url['url'];
//$infos_url['url']
$u = preg_replace('/(.*)(-|,)\d*$/', '$1', $url, -1, $c); // supprimer le numéro à la fin
if ($c == 0) $infos_url['url'] = $url.'-'.$id_article; // Ajoute le numéro de l'article
else $infos_url['url'] = $u.'-'.$id_article;
sql_insertq('spip_urls', $infos_url);
return $id_article;
}
@ -64,7 +86,8 @@ function dupliquer_article($article,$rubrique){
*/
function dupliquer_rubrique($rubrique,$cible=null,$titre=' (copie)'){
include_spip('action/editer_rubrique');
include_spip('inc/config');
// On lit la rubrique qui va etre dupliqué
$champs = array('*');
$from = 'spip_rubriques';
@ -73,8 +96,10 @@ function dupliquer_rubrique($rubrique,$cible=null,$titre=' (copie)'){
);
$infos = sql_allfetsel($champs, $from, $where);
// On choisi les champs que l'on veut conserver
// TODO éventuellement passer cette variable en CFG pour choisir depuis SPIP les champs à conserver ?
$champs_dupliques = array(
$champs_dupliques = explode(",", lire_config('duplicator/rub_champs'));
array_walk($champs_dupliques, 'trim_value');
if (empty($champs_dupliques)) $champs_dupliques = array(
'id_parent','titre','descriptif','texte','lang','langue_choisie'
);
foreach ($champs_dupliques as $key => $value) {
@ -111,6 +136,24 @@ function dupliquer_rubrique($rubrique,$cible=null,$titre=' (copie)'){
// On la publie (pour activer l'aperçu)
$maj_statut_rubrique = sql_updateq("spip_rubriques", array('statut' => 'publie'), "id_rubrique=".$id_nouvelle_rubrique);
/////////////////////////////////////
// Duplication des url dans spip_url
/////////////////////////////////////
$where = array(
"id_objet=".$rubrique,
"type='rubrique'",
);
$infos_url = sql_fetsel('*', 'spip_urls', $where, 'date', 'date DESC');
$infos_url['id_objet'] = $id_nouvelle_rubrique;
$url = $infos_url['url'];
//$infos_url['url']
$u = preg_replace('/(.*)(-|,)\d*$/', '$1', $url, -1, $c); // supprimer le numéro à la fin
if ($c == 0) $infos_url['url'] = $url.'-'.$id_nouvelle_rubrique; // Ajoute le numéro de l'article
else $infos_url['url'] = $u.'-'.$id_nouvelle_rubrique;
sql_insertq('spip_urls', $infos_url);
// On lui remet ses mots clefs
remettre_les_mots_clefs($mots_clefs_de_la_rubrique,$id_nouvelle_rubrique,'rubrique');

37
formulaires/configurer_duplicator.html

@ -8,21 +8,36 @@
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<fieldset><legend><:duplicator:texte_duplicator:></legend>
<fieldset><legend><:duplicator:texte_duplicator:></legend>
<label for="sizeLimit"><:duplicator:choix_type:></label>
<p>
<input type="checkbox" name="duplic_article" [checked="(#ENV{duplic_article}|!={''}|?{'checked'})"] /> Duplication sur les articles<br />
<input type="checkbox" name="duplic_rubrique" [checked="(#ENV{duplic_rubrique}|!={''}|?{'checked'})"] /> Duplication sur les rubriques
</p>
<label for="sizeLimit"><:duplicator:choix_type:></label>
<p>
<input type="checkbox" name="duplic_article" [checked="(#ENV{duplic_article}|!={''}|?{'checked'})"] /> Duplication sur les articles<br />
<input type="checkbox" name="duplic_rubrique" [checked="(#ENV{duplic_rubrique}|!={''}|?{'checked'})"] /> Duplication sur les rubriques
</p>
</fieldset>
</fieldset>
<fieldset><legend><:duplicator:choix_champs:></legend>
<ul>
<li>
<p class="explication"><:duplicator:aide_choix_champs:></p>
<label for="art_champs_1"><:duplicator:label_art_champs:></label>
<textarea name="art_champs" id="art_champs" cols="60" rows="10">[(#CONFIG{duplicator/art_champs})]</textarea>
</li>
<li>
<p class="explication"><:duplicator:aide_choix_champs:></p>
<label for="rub_champs_1"><:duplicator:label_rub_champs:></label>
<textarea name="rub_champs" id="rub_champs" cols="60" rows="10">[(#CONFIG{duplicator/rub_champs})]</textarea>
</li>
</ul>
</fieldset>
<div>
<input type='submit' class='submit' value='<:bouton_enregistrer:>' />
</div>
</form>
<div>
<input type='submit' class='submit' value='<:bouton_enregistrer:>' />
</div>
</form>
]
</div>

14
lang/duplicator_fr.php

@ -10,12 +10,24 @@
$GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'aide_choix_champs' => 'Champs sql séparés par une "," .Laisser vide pour sélectionner les champs principaux.',
// C
'choix_type' => 'Sélectionner le ou les mode(s) de duplication',
'choix_champs' => 'Choisir les champs à dupliquer',
'configuration_duplicator' => 'Configuration du Duplicator',
// I
'icone_dupliquer' => 'Dupliquer la rubrique',
// L
'label_art_champs' => 'Liste des champs à dupliquer pour chaque article :',
'label_rub_champs' => 'Liste des champs à dupliquer pour chaque rubrique :',
// M
'message_annuler' => 'Annuler',
'message_confirmer' => 'Confirmer',

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="duplicator"
categorie="edition"
version="1.0.1"
version="1.1.0"
etat="test"
compatibilite="[3.0.0;3.0.*]"
logo="images/apsulis.png"

Loading…
Cancel
Save