ciarchive : statut archivé pour les articles

Ce plugin ajoute un statut supplémentaire pour les articles, le statut « archivé ».

Les objectifs de ce plugin

L’objectif de ce plugin est de disposer d’un statut supplémentaire pour les articles, le statut « archivé ».

Pourquoi un plugin supplémentaire sur ce sujet ?

L’objectif est similaire au plugin "Archive", toutefois contrairement à ce dernier :
-  il ajoute un statut "archivé" à la liste des statuts actuellement proposés pour les articles (et non pas une option "archivé").
-  l’approche technique est radicalement différente.
-  il ne crée pas de champ ou de table suppléméntaire.
-  il est compatible avec SPIP 3 et avec SPIP 4.1.
-  je n’ai pas noté d’incompatibilité avec d’autres plugins.
-  etc.

Compatibilité

-  Le plugin est compatible avec SPIP 3.0, 3.2, 4.0, 4.1, 4.2.
-  Il est compatible avec PHP 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1.

Installation

Le plugin s’installe comme tous les plugins, cf. http://www.spip.net/fr_article3396.html .

Fonctionnalités

Lorsque que l’on affecte le statut « archivé » à un article, il n’apparaît plus sur le site public ainsi que dans l’espace privé de SPIP.

A noter que seul le statut de l’article change. L’article reste lié à sa rubrique d’origine, même s’il n’apparaît plus dans cette rubrique.

Dans l’espace privé de SPIP, on peut retrouver un article qui a le statut « archivé », via le menu Edition > Archives, et modifier cet article (y compris son statut).

On peut également, consulter les articles archivés d’une rubrique particulière.

Le moteur de recherche de l’espace privé permet également de retrouver un article archivé.

Le détail des fonctionnalités de ce plugin figure dans la documentation ci-jointe.

Remarques :

  • Sur le site public, le critère statut=archive permet d’afficher les articles archivé (c’est le fonctionnement standard de SPIP qui s’applique).
  • Une rubrique (sans sous rubrique) dont tous les articles sont archivés n’aura pas le statut publié (c’est le fonctionnement standard de SPIP qui s’applique).

Dernière version du plugin

La version du 22/06/2021 apporte la compatibilité avec PHP 7.2, 7.3 et 7.4.

La version 1.4 du 15/06/2022 apporte la compatibilité avec PHP 8.0 et 8.1, ainsi que la compatibilité avec SPIP 4.1

La version 1.4.1 supprime la compatibilité avec la version 2 de SPIP et est compatible avec SPIP 4.2.

Discussion

10 discussions

  • 1

    Bonjour,

    Dans la doc, je lis : « Une rubrique (sans sous rubrique) dont tous les articles sont archivés n’aura pas le statut publié (c’est le fonctionnement standard de SPIP qui s’applique). »

    Comment puis-je faire pour que la rubrique soit quand même affichée côté public ?

    Mon cas d’usage est d’afficher dans une rubrique qui contient des archives un lien vers la même rubrique listant les articles archivés afin de pouvoir les consulter.

    • Dans la page Plugins Giseh , le document PDF "Description des fonctionnalités des plugins Giseh pour SPIP" détaille une solution au chapitre "17.1 Pouvoir publier une rubrique même si elle ne contient pas d’article". Il précise que ceci nécessite que le plugin « cid : Fonctions diverses » soit actif (il figure dans le fichier ZIP des plugins Giseh).

    Répondre à ce message

  • 3

    Bonjour,

    J’ai cette erreur en SPIP 4.2.5 + PHP 8.2 :
    Deprecated : Using $var in strings is deprecated, use $var instead in plugins\auto\ciarchive_220615\inc\puce_statut.php on line 26

    Et, effectivement, la syntaxe est obsolète en PHP 8.2.

    Où puis-je faire une PR ?

    • Bonjour,
      La version 1.4.1 de CIARCHIVE (fichier ciarchive_230926.zip joint au présent article) supprime la compatibilité avec SPIP version 2, ce qui permet de supprimer au passage la ligne 26 précitée (ainsi que d’autres lignes).

    • Merci beaucoup !

      Dans ce cas, le fichier plugin.xml peut être, lui aussi, supprimé.

    • La version 1.4.1 de CIARCHIVE comprend volontairement le fichier plugin.xml (avec une borne de compatibilité de SPIP différente), afin qu’il écrase celui d’une installation existante. Sinon, une installation existante garderait son ancien fichier plugin.xml et pourrait ainsi avoir l’illusion d’une compatibilité avec la version 2 de SPIP.

    Répondre à ce message

  • 5

    Bonjour,
    J’ai passé mon site en Spip 4.2.2 et ça ne semble plus fonctionner.
    En premier, un détail, l’icône de l’espace privé sous forme de « A jaune » est remplacé par un turquoise uni.
    Mais surtout l’article archivé sort en erreur 404 sur l’espace public.

    • Bonjour,
      Sous SPIP 4.2.2, j’utilise CIARCHIVE sans problème.
      CIARCHIVE a toujours utilisé une icône carrée de couleur vert sombre (#008080) comme le montre la copie d’écran qui figure dans le présent article.
      Sur le site public, SPIP affiche les articles qui ont le statut ’publie’, aussi si on tente d’accéder (sur le site public) à la page d’un article qui a le statut ’archive’, SPIP retourne l’erreur 404.

    • Je n’utilise pas ce plugin mais a priori, ça semble normal qu’un article qui n’est pas publié ne soit pas visible publiquement, non ?

    • Ah moi je l’utilise pour qu’il ne sorte pas dans l’ensemble des requêtes de l’espace public, et dans aucun menu, mais que si l’on appelle la page directement, il sort...
      D’ailleurs je viens de voir que maintenant ça marche. Peut-être des urls propres à regénérer ?
      Ou était-ce une adaptation de mes squelettes avec tout qui le permettait ?

    • Si un squelette (sur le site public) utilise le critère statut=archive, alors il affichera un article archivé. Idem pour le critère ’tout’ qui permet d’afficher tous les articles quelque soit leur statut.

    • Cf la doc de l’article :

      Fonctionnalités

      Lorsque que l’on affecte le statut « archivé » à un article, il n’apparaît plus sur le site public ainsi que dans l’espace privé de SPIP.

    Répondre à ce message

  • Bonjour,
    Juste pour dire et BRAVO pour ce plugin qui fonctionne très bien.

    Bonen continuation.

    Répondre à ce message

  • 1

    Bonjour,
    je signale une notice à la création d’une rubrique, puisque celle-ci n’existe pas encore
    « Notice : Undefined index : id_rubrique in /…/ciarchive_190306/ciarchive_pipelines.php on line 27 »

    et aussi bonne nouvelle, couplé au plugin « Dépublie » on peut ainsi changer le statut de l’article à « archive » à la date de son choix ou automatiquement après une période donnée de publication.

    • Merci du signalement.
      Cette notice sera prise en compte lors d’une prochaine version.

    Répondre à ce message

  • 6

    Bonjour,
    merci pour ton plugin facile à mettre en œuvre.
    Je trouve cependant assez perturbant lorsqu’on change à nouveau de statut de perdre l’ancienne date d’un article archivé.
    Je vois que tu es en creative common, ou ton code est-il modifiable ? es-tu d’accord pour ajouter une fonction lors de la modification du statut d’un article ayant le statut « archive », ne pas modifier sa date de publication.

    Voici le code à ajouter sans oublier la ligne dans paquet.xml pour le pipeline pre_edition

    <pipeline nom="pre_edition" inclure="ciarchive_pipelines.php" />
    /**
     * Lors de la modification du statut d'un article ayant le statut "archive",
     * ne pas modifier sa date de publication.
     *
     * @param array
     * @return array
     */
     
    function ciarchive_pre_edition($flux) {
    	if(($flux['args']['table'] == 'spip_articles') 
    		AND ($flux['args']['action'] =='instituer') 
    		AND ($flux['args']['statut_ancien'] =='archive')){
    	
    		spip_log("B on a l'article ".$flux['args']['id_objet'],'acirchive');
    	
    		$flux['data']['date'] = $flux['args']['date_ancienne'];
    	}
    	return $flux;
    }

    ++
    touti

    • Bonjour,
      La version 1.3 de ciarchive, jointe à la présente page (ciarchive_190306.zip), prend en compte cette demande d’évolution.

      Remarque : Si on publie un article archivé, l’ancienne date de publication est conservée. En revanche, si on met le statut « en cours de rédaction » à un article archivé, puis qu’ensuite on le publie, l’ancienne date de publication n’est pas conservée.

    • Ok, contente d’avoir pu participer à l’évolution du plugin, même si je regrette qu’il ne soit pas accessible en proposition d’écriture soit en GIT soit SVN.

      Le log de mon code est en fait inutile à conserver en prod, à moins de rajouter la date ? c’était juste pour caler le flux car ce n’est pas toujours évident.

      touti

    • Je viens d’enlever la ligne du log.

    • Bonjour, je poursuis sur ce sujet : serait-il possible de proposer une version étendue de ce plugin (qui fonctionne parfaitement sous 3.2.3 par ailleurs, merci) en créant cette fois un champ supplémentaire dans la table des versions (ajouter le ’statut’ de l’objet) et en y attribuant la variable ’permanent’, de sorte à ce que l’article soit enregistré dans les Révisions au moment du changement de statut en « archivé » et pouvoir ensuite faire une jointure facile avec cette table des versions et y retrouver la date d’archivage. Si j’arrive à vous produire le code, je vous l’envoie dans un message ultérieur (mais j’ai qq difficultés de codage !).

    • Egalement, de conditionner la modification du statut de façon à ce que seuls les articles publiés puissent être classés en ’archivés’ (actuellement, quel que soit le statut de l’article, il peut être modifié en ’archivé’, ce qui ne semble pas — du moins de mon point de vue — pertinent de pouvoir mettre en ’archivé’ un article qui était simplement en cours de rédaction.) Merci.

    • Mon rôle n’est pas d’offrir une assistance à la réalisation d’une fonctionnalité sur mesure pour un site particulier.

    Répondre à ce message

  • 4

    Bonjour,

    j’utilise ciarchive sur mon site, dans la doc il est indiqué « Sur le site public, le critère statut=archive permet d’afficher les articles archivé (c’est le fonctionnement standard de SPIP qui s’applique). ». J’arrive bien en effet à afficher la liste des articles ayant le statut « archive » grâce à une boucle article avec statut=archive mais quand je clique sur le lien c’est comme si l’article n’existait pas...
    Je ne sais pas comment faire pour que le lien soit actif.

    Merci d’avance pour votre aide

    • Une solution consiste à ce que le lien ne renvoie pas sur la page « article », mais sur une page « article-archive » correspondant à une variante (à créer) du squelette article avec dans la boucle article le critère statut=archive .

    • Merci pour votre réponse rapide. Depuis, je tente de trouver la solution à partir des éléments de votre réponse, sans succès.
      Voici ce que j’ai fait :
      -  création dans « squelettes » d’un squelette article-archive, sur le modèle du squelette article mais avec le critère statut=archive dans la boucle article, comme indiqué.
      -  c’est ensuite que ça se complique, je ne sais pas comment spécifier dans mon lien qu’il faut pointer sur article-archive, j’ai mis article-archive#ID_ARTICLE dans mon href mais ça ne fonctionne pas

      Merci d’avance

    • href="[(#URL_PAGE{article-archive}|parametre_url{id_article,#ID_ARTICLE})]"

    Répondre à ce message

  • obiwanriko

    Bravo
    Excellent plugin simple et très efficace ! Va permettre de faire un nettoyage et un tri énOOOOrme sur le site que je gère tout en gardant un historique pour les articles de fond... Merci

    Répondre à ce message

  • 1

    Bonjour,
    Pensez-vous qu’il serait possible d’ajouter ce statut aux brèves ?
    Merci de votre retour.

    Répondre à ce message

  • 2

    Intéressant !

    Est-ce que tu pourrais mettre ce plugin sur la Zone ?

    Pour afficher un article archivé, il faut utiliser le critère {statut=archive} ?

    Et si une rubrique n’a que des articles archivé, quel est le statut de la rubrique ? Publiée ou non ?

    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.

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

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