Plugin Duplicator

Duplication des objets éditoriaux de SPIP : rubriques, articles, auteurs, ....

Fonctionnement

Auparavant limité à rubriques et articles, la version 2.0 du plugin permet de dupliquer aisément tous les objets courants de SPIP (rubriques, articles, auteurs, mots-clés, .....) en ajoutant un bouton « dupliquer » dans l’espace privé

Ce plugin peut être associé au plugin Vider rubrique afin de nettoyer plus facilement les arborescences.

Rubriques

Pour les rubriques, la duplication reprend :

  • les logos
  • les articles (leur contenu, leur statut, leurs mots clefs et logos)
  • les sous-rubriques (n niveaux), les mots clefs liés, ses articles (contenu + statut + mots clefs) et ses logos
  • l’URL en ajoutant le numéro de rubrique à la fin pour éviter des URL identiques
  • le contenu de la rubrique (description, etc.) et les éventuels champs extra s’ils sont mentionnés dans la configuration du plugin.

La nouvelle rubrique est créée au même niveau que la rubrique copiée.

Articles

Pour les articles, la duplication reprend :

  • le logo
  • le contenu et les éventuels champs extra s’ils sont mentionnés dans la configuration du plugin,
  • les documents joints
  • les mots clés
  • l’URL en ajoutant le numéro de l’article à la fin pour éviter des URL identiques.

L’article est créé dans la même rubrique.

Configuration

La configuration est disponible à partir de la page classique de gestion des plugins de SPIP.

À droite du nom du plugin, en cliquant sur l’icône de configuration.

Sur le menu de configuration, on peut choisir les objets que l’on veut permettre de dupliquer :

Sur chaque objet éditorial, vous pouvez déplier les options pour choisir :

  • les autorisations (qui a le droit de dupliquer ?)
  • si besoin les choix des champs à dupliquer
  • le statut à reprendre ou non
  • les enfants à reprendre ou non

En images

Un nouveau bouton apparaît dans la colonne de gauche des rubriques

Au clic une fenêtre de confirmation apparaît.

Après validation l’opération est executée.

La nouvelle rubrique est créée, contient la même hiérarchie que sa rubrique sœur, les articles sont conservés ainsi que leurs statuts et leurs contenus, en fonction de la configuration choisie.

Les articles quant à eux sont copiés dans la même rubrique.

Discussion

37 discussions

  • 8

    Bonjour,

    Après dernière mise à jour du plugin en Version 1.2.0 SVN [68646] sous spip 3.05, duplicator ne fonctionne plus, pas de boite qui s’ouvre et il me crée un article vide

    Il s’agit d’une erreur jquery UI :
    TypeError : jQuery(...).html(...).dialog is not a function

    J’ai supprimé le plugin réinstallé et re-paramétré et vidé le cache mais rien n’y fait !

    J’ai testé sur un spip3 avec Duplicator et CFG seuls sans effets.

    Cordialement
    Luc

    • Oups... :)

      C’est normalement réparé j’ai commité un correctif. Dit moi si c’est ok.

    • Bonjour merci pour ta réactivité,

      C’est pas réglé, j’ai cette erreur :

      Erreur dans les plugins : /monchemin/plugins/auto/duplicator/v1.2.0/duplicator_pipelines.php

      Merci

    • Alors j’avoue que je ne sais pas trop comment fonctionne auto car je ne l’utilise jamais. Mais tu devrais être en 1.2.1 et non pas en v1.2.0 c’est peut être déjà un soucis.

      Sinon, voici le contenu des modifications que j’ai effecutées, si tu veux les répercuter à la main pour essayer ? (je n’ai pas testé là j’ai pas de quoi le faire)
      -  http://zone.spip.org/trac/spip-zone/changeset/68945

    • Bonsoir xdjuj,

      J’étais sur la bonne piste : http://contrib.spip.net/jQuery-UI-4180

      Sinon, il y a un s en trop à duplicator_pipelines dans le xml


      doit être

      J’ai corrigé à la main la boîte s’ouvre bien mais j’ai toujours une création sans copie !

      Cordialement

    • Flute

      la bonne syntaxe
      pipeline nom=« jqueryui_plugins » inclure=« duplicator_pipeline.php »

    • Oui effectivement, c’est une coquille pour le s, c’est corrigé et commité.

      Pour les copies vides, c’est un bug qu’on avait remarqué mais on avait pas fait gaffe plus que ça. Je viens de regarder, c’est le « par défaut » qui ne fonctionne pas, je t’invite (en attendant que ça soit corrigé) à spécifier manuellement les champs que tu souhaites, par exemple :

      -  articles : titre,descriptif,texte,surtitre,soustitre,url_site
      -  rubriques : titre,descriptif,texte,id_parent

      Ca fera la blague en attendant.

    • Si tu mets à jour avec la version 1.3.0 du plugin tout semble rentré dans l’ordre, car la solution que je te donne juste avant était aussi cassée sur la version 1.2.x du plugin.

      Normalement, là c’est tout ok, tu me confirmes que ça va mieux ?

    • Ce petit post pour te remercier xdjuj, plugin opérationnel le lundi matin !

    Répondre à ce message

  • Je viens de faire une grosse mise à jour sur le plugin pour SPIP 3. Nettoyage du code et simplification de l’ergonomie (confirmation par pop-in plutôt que par multi pages).

    J’ai mis à jour la documentation en conséquence (nouveaux screenshots).

    Joyeuses fêtes !

    Répondre à ce message

  • 1

    Bonjour et merci pour ce plugin qui vient de me faire économiser beaucoup de temps.

    Une petite suggestion pour une prochaine évolution : dupliquer également les champs extra.

    Il me semble que cela ne devrait pas être compliqué à implémenter car les champs extra ne sont que des champs (colonnes) supplémentaires pour chaque objet (articles ou rubriques). C’est juste une question de modifier un peu la requête mysql.

    • Bonjour

      Si cela intéresse l’auteur du plugin, j’ai développé la fonctionnalité qui permet de configurer les champs à dupliquer. D’ailleurs c’était en TODO dans le code. Du coup, cela permet de spécifier des champs extra. Je peux lui transmettre le code ou commiter sur la zone, au choix.

    Répondre à ce message

  • 1

    Une autre suggestion : dupliquer également les url, en ajoutant le n° de l’objet à la fin de l’url.

    • Bonjour

      Si cela intéresse l’auteur du plugin, j’ai développé la fonctionnalité de recopie des url. Je peux lui transmettre le code ou commiter, au choix.

    Répondre à ce message

  • Bonjour, formidable ce plugin !! Il fait très exactement ce dont j’ai besoin - pour gérer le calendrier des manifestations d’une asso qui refait pratiquement les mêmes chaque année. Mais une petite question : j’ai également des évènements dans certains articles (plugin agenda), sont-ils aussi dupliqués ?

    Merci encore pour ce superbe boulot ...

    Marc.

    Répondre à ce message

  • 2

    Bonjour,

    Il ya une petite modification à faire sur le fichier formulaires/duplicator_confirm.html à la ligne 2
    Remplacer naviguer par rubrique

    <p><a href="[(#URL_ECRIRE{naviguer}|parametre_url{'id_rubrique',[(#ENV*{message_ok}|table_valeur{cible})]})]" title="Rafraichir">[(#ENV*{message_ok}|table_valeur{type_retour})]</a></p>
    par
    <p><a href="[(#URL_ECRIRE{rubrique}|parametre_url{'id_rubrique',[(#ENV*{message_ok}|table_valeur{cible})]})]" title="Rafraichir">[(#ENV*{message_ok}|table_valeur{type_retour})]</a></p>

    • Petite précision : cela concerne la version du plugin pour spip 3

    • Effectivement les liens ont changé dans SPIP 3, c’est corrigé, merci :) (mais il ne fallait pas hésiter et commiter directement cette modification !!)

      Précision également, le répertoire V1 est désormais renommé branches/v0/ (il concerne la version v0.x du plugin, pour SPIP 2.x) et le dossier V2 est renommé trunk/ (et concerne la version v1.x du plugin, version pour SPIP 3.x).

    Répondre à ce message

  • 1

    Bonjour,
    Sous spip3, les champs extras ne sont pas dupliqués visiblement.

    • Je crois que ça n’est pas pris du tout en compte, il faudrait qu’on y jette un oeil c’est vrai, car en SPIP3 c’est devenu tellement facile et pratique que l’usage des champs extras est devenu terriblement courant :)

    Répondre à ce message

  • Une nouvelle version du plugin ajoute la fonction de duplication sur les articles, un nouveau bouton apparaît : « Dupliquer cet article ».

    Répondre à ce message

  • 1
    Guillaume

    Bonsoir. Merci pour cet excellent plugin !!!
    Juste un bémol : par défaut le plugin ne duplique pas les liens entre articles et documents.

    je propose donc cette petite modification dans le fichier action/dupliquer ajouter la fonction associer_documents : :

    function associer_documents($objet, $id_source, $id_dest){
    	// récupération des documents liés à l'article que l'on souhaite dupliqué
    	$champs = array('*');
    	$from = 'spip_documents_liens';
    	$where = array( 
    		'id_objet='.$id_source, 
    		'objet="'.$objet.'"'
    	);
    	$docs = sql_allfetsel($champs, $from, $where);
    	
    	// liaison des documents au nouvel article
    	foreach($docs as $doc){
    		$n = sql_insertq(
    			'spip_documents_liens',
    			array(
    				'id_document' => $doc["id_document"],
    				'id_objet' => $id_dest,
    				'objet' => $doc["objet"],
    				'vu' => $doc["vu"]
    			)
    		);
    	}
    }

    Et modifier ajouter la ligne suivante dans la fonction dupliquer_article() juste avant de retourner l’id du nouvel article :

    associer_documents("article", $article, $id_article);

    Et de même pour l’action dupliquer_rubrique() :

    associer_documents("rubrique", $rubrique, $id_nouvelle_rubrique);

    Encore merci. Très beau boulot !

    • Bonjour Guillaume :)

      Ca n’est pas un oubli :) Quand tu dupliques une hiérarchie complète, l’idée est souvent qu’elle contiendra un contenu différent. Les documents étant justement du contenu, si tu dois t’amuser à désassembler les documents... Ca prend du temps pour rien :)

      Typiquement si tu dupliques une arborescence d’une galerie photo, c’est que tu veux l’utiliser pour de nouvelles photos (sinon la duplication n’a pas de sens). C’est pour ça que Duplicator ne prend pas en compte les documents liés aux articles :)

      Pour tenir ce rôle, il existe déjà le plugin DocuCopieur : http://www.spip-contrib.net/DocuCopieur-copieur-de-documents

      Ton code pourrait en revanche être optionnel, pour les cas particuliers que tu sembles utiliser, avec une checkbox « conserver les documents attachés » :)

      Bonne journée et merci de ton retour ! :)

    Répondre à ce message

  • 2

    Un seul mot : Nickel  !
    Je fais des sites multilingue (3, 4, voir 5 langues) et le gain de temps qu’offre ce plugin est considérable !
    Donc bravo, riche idée, et bon boulot !

    Juste une idée amélioration (surtout pour les sites multilingues basés sur des secteurs de langue) :
    Profité de la copie de l’article pour associer le lien de traduction.
    L’algo serait (corrigez-moi si besoin) :

    si l'id_trad de l'article source n'est pas vide :
    → copier aussi l'id_trad
    sinon
    → updater l'id_trad de l'article source avec son propre id_article
    → mettre se même id_article dans l'id_trad de l'article créé
    

    Je vais essayer de le faire, mais je connais pas trop le coté framework de SPIP.
    Ou si quelqu’un d’aguerri se sent motivé...

    • Salut Birdy.

      Normalement j’ai déjà fait une version multilangue de ce plugin pour mes besoins (c’est d’ailleurs cette version qui a motivé mes besoins). Mais c’était pas simple d’offrir les deux comportements en même temps.

      Je recherche où je l’ai foutu et si ça correspond et je reviens vers toi. N’hésite pas à me relancer mes journées sont plutôt denses... :)

    • j’ai fait quelque modif, ça a l’air de marcher :
      Dans action/dupliquer.php , dans la fonction dupliquer_article() :

      juste avant le foreach ($champs_dupliques as... (vers la ligne 33), j’ai ajouté

      if ($infos[0]['id_trad']<1) $infos[0]['id_trad'] = $infos[0]['id_article'];

      et après $maj_statut_article = sql_updateq(... (vers ligne 50), ajout de

      $maj_lien_trad = sql_updateq("spip_articles", array('id_trad'=>$infos[0]['id_trad']), "id_article=".$article);

      Ça serait mieux de mettre une case à cocher « faire lien de trad » dans le formulaire et mettre ces lignes derrières un IF

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom