Rajout d'un lien dans l'admin des pages statiques pour chaque page

je-evrardje-evrard Member
janvier 2018 modifié dans Entraide
Bonjour,

Dans 'admin des pages statiques (core/admin/statiques.php) j'aimerais rajouter un lien spécial pour chaque page via mon plugin.

Au lieu d'avoir Action "Editer" / "Voir" pour chaque page j'aimerais avoir :

"Editer" "Editer vw" "Voir"

En gros rajouter un autre lien d'édition avec un paramettre dans le lien de l'url
[== Indéfini ==]
...core/admin/statique.php?p=xxx&vw=true

Comment le faire simplement sachant que dans le code ça me parait pas évident via un hook.

J'ai pensé a utliser jquery aussi.

Merci de votre aide, de vos lumières ou de vos idées.

Cordialement,

jéjé

PS : le plaisir c'est le partage

Réponses

  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Bonjour,

    Voici un début de réponse à ton problème, sans JQuery :D :
    [== PHP ==]
    <?php
    if(!defined('PLX_ROOT')) { exit('la VW, c\'est fantastique'); }
    
    class volkswagen extends plxPlugin {
    
    	public function __construct($defaultLang) {
    		parent::__construct($defaultLang);
    		parent::addHook('AdminStaticsFoot' , 'AdminStaticsFoot');
    	}
    
    	public function AdminStaticsFoot() {
    		/* rajouter la règle suivante dans css/admin.css du plugin pour décoller les liens
    		 * #statics-table tbody td:last-of-type a {
    		 *     margin: 0 1rem;
    		 * }
    		 * */
    ?>
    <script type="text/javascript">
    	(function() {
    		const lastCells = document.querySelectorAll('#statics-table tbody tr:not(:last-of-type) td:last-of-type');
    		for(var i=0, iMax=lastCells.length; i<iMax; i++) {
    			const cell = lastCells[i];
    			const editBtn = cell.querySelector('a[href^="statique.php?p="]');
    			if(editBtn != null) {
    				const newBtn = document.createElement('A');
    				newBtn.href = editBtn.href + '&vw=true';
    				newBtn.textContent = 'VW';
    				cell.insertBefore(newBtn, cell.lastChild);
    			}
    		}
    	})();
    </script>
    <?php
    	}
    
    }
    ?>
    
    C'est un premier jet pour te "mettre le pied à l'étrier".
    Le petit Pb à régler est quand il y a des pages inactives. C'est pas très compliqué à régler. Juste un peu de temps
    Note qu'il y a une règle CSS en commentaire à rajouter dans le plugin.

    Je désapprouve de séparer les liens dans les dernières cellules par des espaces insécables ( ).
    Sémantiquement cela n'a aucune signification. C'est juste pour faire joli. donc on emploie une règle CSS. Cela conserve la possibilité aux cellules d'arranger leurs contenus en fonction des largeurs disponibles.
  • Merci bazooka07 por ta réponse rapide. Je regarde ça. ++
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    D'après ta vidéo, il semble que tu n'utilises pas la dernière version de PluXml (release 5.6)

    Dans le tableau "Identifiant page" est devenu "n°"
    Dals la colonne "ordre", les nombres sont cadrés à droite maintenant.

    Dans la manipulation du DOM avec Javascript, il est effectivement plus facile d'ajouter un nouvel élément avec un autre :
    [== JavaScript ==]
                       cell.insertBefore(newBtn, editBtn);
    
Connectez-vous ou Inscrivez-vous pour répondre.