Obtenir le nom d'une catégorie dans l'admin
Bonjour,
J'ai modifié/simplifié le panneau d'administration pour limiter la publication d'articles dans deux catégories uniquement (une catégorie s'affichant sous forme de blog et l'autre sous forme d'un portfolio). J'ai donc séparé dans mon menu admin, la liste des articles en deux et la création de nouvaux articles en deux :
- liste article de cat 1
- nouvel article de cat 1
- liste article de cat 2
- nouvel article de cat 2
cat 1 s'appelle aujourd'hui Actualités et cat 2 s'appelle Réalisations
J'ai donc dans /core/admin/lang/fr/admin.php
- 'L_MENU_ARTICLES' => 'Actualités',
- 'L_MENU_ARTICLES_TITLE' => 'Liste et modification des actualités',
- 'L_MENU_NEW_ARTICLES' => 'Nouvelle actualité',
- 'L_MENU_NEW_ARTICLES_TITLE' => 'Nouvelle actualité',
- 'L_MENU_REALISATIONS' => 'Réalisations',
- 'L_MENU_REALISATIONS_TITLE' => 'Liste et modification des réalisations',
- 'L_MENU_NEW_REALISATIONS' => 'Nouvelle réalisation',
- 'L_MENU_NEW_REALISATIONS_TITLE' => 'Nouvelle réalisation',
Serait-il possible de récupérer et mettre en variable le nom des deux catégories depuis data/configuration/categories.xml
dans $namecat001 et $namecat002 par exemple
de façon à pouvoir écrire
- 'L_MENU_ARTICLES' => $namecat001,
- 'L_MENU_ARTICLES_TITLE' => 'Liste et modification de ' . $namecat001,
- 'L_MENU_NEW_ARTICLES' => 'Ajouter un(e) ' . $namecat001,
- 'L_MENU_NEW_ARTICLES_TITLE' => 'Ajouter un(e) ' . $namecat001,
- 'L_MENU_REALISATIONS' => $namecat002,
- 'L_MENU_REALISATIONS_TITLE' => 'Liste et modification de ' . $namecat002,
- 'L_MENU_NEW_REALISATIONS' => 'Ajouter un(e) ' . $namecat002,
- 'L_MENU_NEW_REALISATIONS_TITLE' => 'Ajouter un(e) ' . $namecat002,
J'ai essayé de m'inspirer de https://forum.pluxml.org/discussion/5988/categories-en-liste-deroulante, de catName et de catList etc mais je ne trouve pas comment faire.
Peut-être qu'on ne peut pas utiliser de hook PluXml et qu'il faudrait faire un petit script PHP? Est-ce que quelqu'un a une idée? une suggestion?
Merci,
Thatoo
Réponses
Bonjour,
Au cas où cela t'aurait échappé, mets le profil de tes utilisateurs à "Rédacteur". Cela réduira leurs droits :
En tant qu'administrateur, crée les catégories et renseigne leur balise HTML <title>.
Ensuite modife le fichier core/admin/top.php pour le menu :
Le plus compliqué est de surligner l'entrée active du menu. Pour que cela soit plus clair, j'ai préféré ré-écrire la fonction formatMenu() dans core/lib/class.plx.utils.php :
J'ai pas trop le temps de pousser les essais très loin mais cela devrait le faire.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Il faut également modifier le fichier core/amin/index.php pour générer la liste des articles pour une catégorie quand on clique dans le menu :
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Merci beaucoup bazooka07,
Je vais regarder ça avec empressement et je ferai un retour.
L'idée est de simplifier/optimiser à mort l'interface admin pour offrir cet outil à des personnes qui ont besoin d'être sur la toile (artisan, auto-entrepreneur etc...) mais n'ont pas le temps/l'énergie/l'envie d'apprendre à utiliser l'outil informatique.
Pour certains, cocher une case plutôt qu'une autre, c'est déjà rebutant... et ils délaisseraient l'outil tout simplement.
Ils seront évidement Rédacteurs.
Alors en fait, nous avons déjà modifié top.php et index.php que nous avons dédoublé d'ailleurs.
Top.php
index1.php
indexreal.php
et tout à l'avenant pour les tris par statut (publiés, brouillon etc) et le nombre d'article par catégorie et statut etc... Je vous ai invité sur notre projet gitlab ici https://framagit.org/assodefis/pluxmldefis/-/tree/admin_panel_new si vous voulez bien regarder ce que nous avons fait.
Le tout fonctionne et nous pourrions nous arrêter là, nous sommes plutôt satisfait.
Seulement, on se dit dit, si on change le nom de la catégorie "Réalisations" en "Mes oeuvres" par examples, il faut qu'on le change aussi dans /core/admin/lang/fr/admin.php . Ce n'est pas un gros travail (surtout que l'idée c'est qu'il n'y ait jamais plus de deux catégories dans ces projets) mais c'est toujours plus satisfaisant de se dire que ça peut se faire automatiquement.
Dédoubler des scripts PHP donnent 2 fois plus de travail de maintenance. C'est mathématique.
Si le problème est d'afficher les catégories aux rédacteurs, il y a moyen d'ajouter un test pour savoir si on a affaire à un rédacteur et lui cacher la liste de catégories. Quitte à mettre un champ type="hidden" pour que PluXml s'y retrouve.
En standard, on peut renommer les catégories. En fait, c'est l'identifiant qui compte, le nom est juste une décoration pour l'utilisateur.
Le lien vers Framagit donne une erreur 404. Meme en me connectant sur mon compte Framagit, ton dépôt sait juste me dire qu'il n'y pas de Wiki.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Je comprends bien ce que tu dis sur le dédoublement... et on a essayé d'éviter. Seul index.php et article.php ont été dédoublé. Nous somme encore novice et ne demandons qu'à apprendre et nous améliorer.
L'idée c'était vraiment de simplifier l'utilisation de la partie admin au maximum. Il veut publier un article dans son blog, un bouton. Il veut publier une photo dans son portfolio, un bouton.
Je suis partie de PluXml 5.8.3 qui paraitra dans quelques mois.
Voici quelques copies d'écran d'administration pour un rédacteur :
Note que j'ai juste modifié l'interface pour le profil rédacteur. Si tu te connecte comme administrateur tu retrouves l'interface classique de PluXml avec tous tes super-pouvoirs.
Je t'ai envoyé un invitation sur Framagit.
Il faut cloné les branches master et assodefis et utilser cette dernière.
Tu peux récupérer le dossier data que j'ai utilisé avec le lien ci-dessous :
http://kazimentou.fr/divers/assodefis-data.zip
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Mais il y a des problèmes pour ton thème côté site :
C'est dommage la charte graphique est plutôt agréable.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Wahou, tu es incroyable de faire ça en 24h....
Je vais regarder ça pendant le week-end, ça me paraît idéal (avec sans doute un meilleur code en prime qui plus est).
Une fois le travail sur la partie admin terminé, je vais reprendre mon travail sur le thème de la partie site en tenant compte de tes remarques.
Merci énormément. Ça fait vraiment plaisir.
En fait, je n'ai pas résisté à la tentation de l'essayer tout de suite.
C'est super! Je vais juste remettre les commentaires visibles au rédacteur, lui cacher en css la partie droite dans article.php (emplacement) et est-ce que tu peux m'expliquer comment se fait-il que sur ta photo, le nouvel article est symbolisé comme il faut pas un + mais que chez moi, ça donne un caractère inconnu (voir photo ci-dessous). Je n'ai pas trouvé dans le code où était le +. Je n'ai trouvé que dans top.php
PLX_CORE.'admin/article.php?cat=' . $id, L_NEW_ARTICLE
or L_NEW_ARTICLE ne fait pas référence à un + pour ce que je comprends de la structure.Pour le "+", tu dois utiliser une police qui ne reconnait pas ce caractère.
Clique sur le lien ci-dessous pour voir si la croix s'affiche dans ton navigateur :
https://www.fileformat.info/info/unicode/char/1f7a7/index.htm
Pour éviter ce désagrément, le plus simple est de remplacer par une icône comme tu as fait devant les entrées de menus.
Tu utilises la police media. Pas de change PluXml utilise Fontello. Mais il manque des icônes.
J'ai poussé un nouveau commit pour en rajouter. Tu peux voir les icônes disponibles sur la page de ton site :
core/admin/theme/fontello/demo.html
Pour rajouter des icones, il faut glissser-deposer le fichier "core/admin/theme/fontello/config.json" à l'adresse suivante :
http://fontello.com/
Pour l'emplacement, le terme n'est pas très approprié. "Classé dans" serait plus approprié.
Il faut modifier la constante L_ARTICLE_CATEGORIES dans le fichier core/lang/fr/admin.php
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
OK, nous allons revenir à la police Fontello alors.
C'est dommage que ce dossier core/admin/theme/fontello/ n'existe pas par défaut alors.
Comme je ne suis pas encore très à l'aise avec git, j'ai cloné tes travaux dans notre repo (je crois que c'est ça qu'on dit) et j'y ai effectué mes modifs dessus. Je t'ai invité sur ce repo et je t'ai donné des droits de modifications.
J'ai fait des modifications pour abandonner media et préférer fontello. J'ai remis tous les icônes qui vont bien et j'ai bien le + qui apparaît. Par contre, il y a toujours un symbole de caractère non reconnu que je n'arrive pas à enlever.
Aussi, les icones sont bons partout sauf en tant que rédactuer, si je suis hors "Actualité" et "Réalisations". Si je clique dans "Médias" ou "Profil", alors les icones changent...
[étrange, je n'arrive pas à ajouter de photos à mon commentaire ce soir]
https://framapic.org/gallery#Qp0YZ35kLOa6/tGcXLbHBvFix.png,nNSAXW8esKT8/ls9JYWRsuGum.png
A la ligne 139 de index.php, j'ai tenté un
mais ça m'affiche "Gestion de Réalisations" dans Réalisations et dans Actualités
alors j'ai essayé un
mais ça m'affiche "Gestion de ActualitésGestion de Réalisations" dans les deux...
Le dossier Fontello avec tous les fichiers qui vont bien "config.json" et .css intacts seront dans la prochaine version de PluXml.
Pour le caractère qui t'agace, il faut aller le chercher dans le fichier core/lib/class.plx.utils.php et rechercher la fonction formatMenu. Modifie la valeur par défaut du paramètre $caption1 : un espace ou une chaine vide.
Sur ce forum, on a des problèmes avec l'éditeur "riche" qui bogue. Du coup, on l'a mis en retraite en attendant son remplaçant. Conséquence on ne peut plus insérer des images. Mais les liens passent.
Pour ton code, il faut tester la variable $_GET['cat']. Tu cherches à faire quoi ?
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Super nouvelle alors pour fontello. Dommage pour "riche". Merci pour $caption, c'est ok!
Pour mon code, mon problème c'est que je ne comprends pas encore ce que fait "foreach($plxAdmin->aCats as $id=>$infos" : Pour chaque [quelquechose catégorie] avec $id [etjenesaisquoi]$info.... bref
Les seules choses que je comprends c'est $_GET['cat'] et $infos['name'] (et encore je ne comprends pas vraiment d'où vient $info...)
Ce que je veux c'est pouvoir afficher le nom de la catégorie active :
j'ai tenté des trucs par ignorance du genre qui suit mais rien n'a fonctionné...
Je me suis permis (et je propose à PluXML de l'adopter) d'inverser (droite/gauche) le filtre de catégorie et le champ de recherche car c'est plus logique pour moi que le filtre de catégorie se trouve à droite, au dessus de la colonne catégorie et que le champ de recherche soit à gauche, au dessus des colonnes de titre et d'identifiant d'article.
Pour ce cas précis pour lequel nous essayons de simplifier l'interface du rédacteur, j'en ai profité pour cacher le filtre de catégorie pour qu'il ne reste que le champ de recherche à gauche.
J'ai commit/push ces modifications ainsi que l'adoption de fontello dans le thème admin de Défis, et la suppression du caractère dans $caption.
Il me manque juste ce
à résoudre avec le $_GET['cat']
ainsi que résoudre la différence d'affichage entre quand un rédacteur se trouve dans index.php et quand il se trouve dans l'un des trois medias.php, profil.php et article.php que j'exposais ici https://framapic.org/gallery#Qp0YZ35kLOa6/tGcXLbHBvFix.png,nNSAXW8esKT8/ls9JYWRsuGum.png
Après ça, la partie admin répondra à nos objectifs.
Je pense que la différence d'affichage vient des lignes 88 et 89 dans top.php mais je ne sais pas trop comment les modifier. Je vais tenter des trucs, et je te tiens au courant...
ou plutôt non, ça doit venir du else ligne 1133 à 1148 de core/lib/class.plx.utils.php mais je ne sais pas du tout quoi changer :
J'ai trouvé cette solution mais j'attends ton commentaire avant de commit/push
Dans core/lib/class.plx.utils.php, à la ligne 1149, j'ai ajouté
avant le break et ça semble fonctionner comme je le souhaitais. Ca te semble correct?
Je crois que j'ai trouvé, voir commentaire ci-après.
Il ne me manque plus qu'à résoudre l'affichage du titre de la page dans core/admin/index.php?page=1&cat=001 et core/admin/index.php?page=1&cat=002 quand on se connecte en tant que rédacteur.
Quand on se connecte avec des droits supérieur au rédacteur, et qu'on se rend sur /core/admin/index.php?page=1 , le titre est "Liste des articles". C'est à la ligne 139 de index.php
Je voudrais que pour un rédacteur, quand il va sur core/admin/index.php?page=1&cat=001, ça affiche comme titre
"Gestion de Actualités" ou "Gestion de Réalisations" si on est dans cat=002. J'espère avoir bien réussi à expliquer cette fois. Je souhaite donc remplacer le contenu de la ligne 139 par quelque chose du genre
avec du $_GET['cat'] à la place du foreach mais pour l'instant, je n'y arrive pas.
Je crois que j'ai trouvé.
J'ai remplacé à la ligne 139 de index.php
par
et ça semble fonctionner. Vaut-il mieux
ou
?
Qu'est-ce qui est plus rigoureux? standard? claire? élégant?
J'attends tes commentaires avant de commit/push et de me pencher sur le thème admin de Défis puis de revenir au thème du site.
Merci beaucoup pour ton aide précieuse.
Au fait, je me suis permis de faire un commentaire sur un de tes commits dans gitlab : https://framagit.org/bazooka07/assodefis/-/commit/b6450241cae6124a3b300c9feeff287cb0065e4d#note_708216
J'ai forké ton dépôt et je t'ai envoyé un PR.
La bonne réponse est :
$_SESSION['sel_cat']
Mais $_SESSION['sel_cat'] peut prendre la valeur 001,002, all, ..
Donc il faut regarder si sa valeur est un clé de $plxAdmin->aCats (array_key_exists)
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
D'accord, merci.
Sans commentaire de ta part sur mon ajout à la ligne 1149 dans core/lib/class.plx.utils.php
je l'ai commit/push.
Ensuite, j'ai voulu reprendre ce que tu as fais dans index.php ligne 139 pour l'adapter à top.php ligne 83-84 pour l'intitulé du hover mais j'ai un %s au lieu de l'espace qui s'affiche
Enfin, pour faire propre, dans /core/lang/fr/admin (et autres langues, pas toujours certains de mes traductions même si j'ai essayé de faire bien), j'ai ajouté
afin de pouvoir modifier la ligne 282 de article.php
pour faire la même chose que dans top.php :
Ca fonctionne pas mal sauf dans un cas, si le rédacteur a d'abord cliqué sur "ajouter à Actualités" et ensuite, il change d'avis et clique directement sur "ajouter à Réalisation", alors, ça affiche quand même "Ajouter un élément à Actualités" et non pas "Ajouter un élément à Réalisations" (et vice versa).
Pour voir mes commits, c'est dans la branche nouveau-panneau-admin. Est-ce que tu peux envoyer tes PR sur cette branche?
Je viens de faire un commit aussi pour que les nombres d'articles par catégorie par statut (brouillon, publié....) s'affichent correctement pour le rédacteur. Merci de commenter si besoin.
Si "%s" s'affiche, cela signifie que la traduction est un modèle ou gabarit et attend un argument. "%s" est un joker à remplacer.
Il faut dans ce cas utiliser la fonction printf() ou sprintf() (https://www.php.net/manual/fr/function.sprintf.php).
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Merci, avec ça, j'approche du but.
J'ai décidé de mettre à jour
L_NEW_ARTICLE_WRITER= 'Nouvel élément pour %s';
(j'ai mis à jour les traductions aussi)
afin de pouvoir le réutiliser aussi dans l'affichage du "titre par défaut" d'un nouveau message en changeant la ligne 212 de article.php
en
Ainsi, j'ai vraiment l'impression d'avoir une interface simple et fonctionnelle pour les rédacteurs.
Il ne me reste qu'un seul problème à résoudre.
Lorsqu'un rédacteur se connecte, il arrive sur la liste des articles, de tous les articles (la sélection par catégorie n'a pas lieu). Idéalement, ce serait bien que le rédacteur arrive sur la liste des articles de la catégorie 001.
Le problème est d'autant plus gênant que tant que le rédacteur n'a pas cliqué sur l'une ou l'autre des catégories, si il clique sur un des deux bouton + pour ajouter un élément, l'affichage ne sera pas correct, c'est comme si cat n'avait pas été initialisé.
Est-ce que je peux dans index.php ajouter quelque chose comme "si tu as un profil de rédacteur et si ta session est toute nouvelle, alors cat=001"?
J'ai push toutes mes modifications donc si tu veux voir ce que j'ai fait et essayer pour comprendre ce que je veux dire, c'est possible.
Est-ce que ça ne serait pas tout simplement en ajoutant cette ligne
dans le else de la ligne 37 dans index.php
?
Il me semble que c'est ça... en tout cas, ça fonctionne donc je push ça aussi pour que tu puisses commenter cette version presque finaliser, si tu veux bien.
J'avais vu ce problème où quand le rédacteur se connecte la 1ère fois, il affiche toutes les catégories.
Affecter une valeur à $_SESSION['sel_cat'] serait une solution mais l'entrée correspondante au menu ne sera pas surlignée.
Une autre solution serait de vérifier au début de index.php si $_GET['cat'] est vide. Si c'est le cas, alors faire une redirection vers index.php?cat=001 ou remplacer 001 par array_values($plxAdmin->aCats)[0] au cas où la catégorie 001 n'existe plus. Mais je n'ai pas testé.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2