[Beta] LMDI Multilinks 2.0.0

Pour les extensions destinées à phpBB 3.2.x et 3.3.x

Modérateur : Équipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com
Avatar du membre
pierredu
Resp. Extensions
Resp. Extensions
Messages : 1717
Enregistré le : 29 mai 2011 à 06:49
Localisation : Paris
Contact :

LMDI Multilinks 2.0.0

Message par pierredu »

  • Titre : LMDI Mulitlinks
  • Description : Extension offrant la possibilité de créer dans le panneau d'administration des liens qui s'intègrent dans la barre de navigation.
  • Version : 2.0.0
  • Auteur : Pierre Duhem
Copie d'écran :
Image

Je me suis mis au travail sur l'extension permettant d'ajouter des liens multiples à la barre de navigation, mais à partir du panneau d'administration.

Les premiers éléments sont en place.
Un dépôt a été créé sur github : https://github.com/pierrdu/lmdi_multilinks

Pour le moment, je bute sur une sottise : mon formulaire de configuration dans le panneau d'administration est refusé (formulaire invalide). J'ai pourtant bien l'élément S_FORM_TOKEN qui est à la fin du formulaire, comme je l'ai toujours fait dans le même genre de situation.
Maintenant, je commence à avoir les yeux qui me piquent.

Est-ce que quelqu'un peut regarder acp/multilinks_module.php et adm/styles/acp_multilinks_body.php avec des yeux frais ?
Merci d'avance.

P.S.
Je crois que j'ai compris.
Dans une page (par exemple dans le panneau d'administration) comportant un ou plusieurs formulaires, qui aboutissent tous à la page acp/*module.php, fonction main, l'appel de la fonction check_form_key, alors même que chaque formulaire possède les éléments cachés <input type="hidden" name="creation_time" value="1485273039" /> et <input type="hidden" name="form_token" value="d2cf14747f1f2f467f12515ec7790ec8ac2ad08e" /> échoue si l'appel de la fonction main n'a pas été déclenché par un bouton submit. Ce qui est par exemple le cas si l'on clique sur le bouton vert d'édition (engrenage) ou sur le bouton de suppression (croix rouge).

Moralité, le mécanisme de contrôle du formulaire d'envoi, qui est destiné à éviter les formulaires bidons qui ne seraient pas envoyés par le forum, et dont on dit qu'il sert notamment pour protéger le forum des opérations non autorisées sur la base de données, ne fonctionne pas sur les opérations qui sont exécutées dans l'interface utilisateur par du code ajax mais que l'on doit exécuter réellement dans la base.

Bon, ben yapluka.

PPS
J'ai installé une version 1.0.3 sur github.
Skouat
Resp. Traducteurs
Resp. Traducteurs
Messages : 16357
Enregistré le : 02 avr. 2008 à 20:47
Contact :

Re: LMDI Multilinks 1.0.0

Message par Skouat »

Salut,

Dans acp/multilinks_module.php
  • Vire les variables globales qui ne sont pas utilisées
    • $db
    • $cache
    • $config
    • $phpbb
  • ne déclare que $phpbb_container en tant que variable globale, le reste du instancie via $phpbb_container->get('la_variable')
  • $user->lang['LANG_KEY'] n'est plus compatible 3.2 et $user->lang('LANG_KEY') sont obsolètes.
    Donc préfère l'utilisation de la nouvelle classe $language
    A lire : https://www.phpbb.com/community/viewtop ... &t=2349131

Concernant ton problème de formulaire, c'est dû au fait que tu vérifies la validité du formulaire dans n'importe quelle situation, alors qu'il doit être vérifié lors de l'action "submit".

Voici le fichier corrigé : https://gist.github.com/Skouat/4e2295af ... 5cfd876068
Et le différenciel entre ta version et mes corrections : https://gist.github.com/Skouat/4e2295af ... /revisions
(j'ai fait aussi une correction des espacements et indentations)

Au niveau du fichier html associé, recherche name="ml_blank" remplace par id="ml_blank"

Dans event/listener.php

Remplacer user->lang[''] par language->lang('')

Dans les fichiers de langue
target=\'_blank\' à remplacer par target="_blank"
et \'phpBB\' par « phpBB » (en FR) et “phpBB” (en EN)

Dans composer.json
"php": ">=5.3.3", <-- c'est 5.4 le mini pour phpBB 3.2
"phpbb/phpbb": ">=3.1.0" <-- 3.2.0 ?

A ce jour phpBB n'est pas en mesure de s'appuyer sur le contenu du fichier composer.json pour prendre en compte les prérequis. Donc il faut utiliser le fichier ext.php et y créer une méthode nommée is_enableable()
voir exemple : https://github.com/Skouat/ext_paypal_do ... hp#L35-L40
Avatar du membre
pierredu
Resp. Extensions
Resp. Extensions
Messages : 1717
Enregistré le : 29 mai 2011 à 06:49
Localisation : Paris
Contact :

Re: LMDI Multilinks 1.0.0

Message par pierredu »

Merci pour tout ce que tu as fait.
Je vais intégrer ça demain.

Pour l'aspect 'submit', c'est effectivement la conclusion à laquelle j'étais arrivé.
Skouat
Resp. Traducteurs
Resp. Traducteurs
Messages : 16357
Enregistré le : 02 avr. 2008 à 20:47
Contact :

Re: LMDI Multilinks 1.0.0

Message par Skouat »

N'hésites pas à faire analyser ton code par des outils tel que scrutinizer ou codeclimate.
C'est gratuit et ca s'intègre avec Github.

N'oublie pas aussi, que phpBB à un guide de bonne pratique
https://area51.phpbb.com/docs/dev/32x/index.html
Et que l'ensemble du code peut être mis en forme selon la base énoncée ici
Avatar du membre
pierredu
Resp. Extensions
Resp. Extensions
Messages : 1717
Enregistré le : 29 mai 2011 à 06:49
Localisation : Paris
Contact :

Re: LMDI Multilinks 1.0.0

Message par pierredu »

Merci encore pour tes remarques.

L'extension est compatible 3.1.x et 3.2.x, donc je ne peux pas changer de mécanisme de gestion des langues.
D'une manière générale, le code était largement à l'état d'ébauche et certaines expressions n'était pas encore codées, même si la place était réservée.

Pour le contrôle du code, je ne connais pas ces outils. J'utilise travis cl au moment du téléchargement du code sur github.

Je viens de télécharger une version 1.0.4 sur github.
Manard
Empereur des posts
Empereur des posts
Messages : 1055
Enregistré le : 31 mars 2012 à 09:24

Re: LMDI Multilinks 1.0.0

Message par Manard »

Bonjour Pierre,

Je viens de tester ta dernière version, ça plante mon forum de test avec cette erreur :

Code : Tout sélectionner

Catchable fatal error: Argument 3 passed to lmdi\multilinks\event\listener::__construct() must be an instance of phpbb\config\db_text, instance of phpbb\template\twig\twig given in C:\wamp\www\phpBB3-2-test\ext\lmdi\multilinks\event\listener.php on line 30
J'ai remarqué que tu as laissé tes liens externes dans tes deux fichiers de style overall_header_navigation_append.html et overall_header_navigation_prepend.html

Merci pour cette nouvelle extension et bonne résolution de cette erreur

Bernard
Avatar du membre
pierredu
Resp. Extensions
Resp. Extensions
Messages : 1717
Enregistré le : 29 mai 2011 à 06:49
Localisation : Paris
Contact :

Re: LMDI Multilinks 1.0.0

Message par pierredu »

Merci pour le signalement.
C'est corrigé (un problème de mise à jour du dossier où je conserve les versions téléchargées sur github).
Manard
Empereur des posts
Empereur des posts
Messages : 1055
Enregistré le : 31 mars 2012 à 09:24

Re: LMDI Multilinks 1.0.0

Message par Manard »

Bonjour Pierre,

Je viens de télécharger la dernière version, il n'y a plus de plantage, par contre tu as créé deux liens "test" que l'on ne peut n'y supprimer, ni éditer depuis la "roue dentée", J'ai pu en créer un nouveau qui s'est inscrit en dessous les deux tiens, mais pareil je ne peux l'éditer ou le supprimer, il est opérationnel, j'ouvre bien la page déclarée dans ce lien.

Bonne après-midi

Bernard
Skouat
Resp. Traducteurs
Resp. Traducteurs
Messages : 16357
Enregistré le : 02 avr. 2008 à 20:47
Contact :

Re: LMDI Multilinks 1.0.0

Message par Skouat »

Bonjour Bernard,

Le code de l'extension de Pierre contient du code de test. d'où les diverses erreurs.
L'extension est en status alpha et porte bien le status

@Pierre : tu ne devrais pas utiliser la même branche Github pour la partie dev/test et la partie code que tu publies.
La branche master doit être la branch qui contient le code le plus propre possible.
Avatar du membre
pierredu
Resp. Extensions
Resp. Extensions
Messages : 1717
Enregistré le : 29 mai 2011 à 06:49
Localisation : Paris
Contact :

Re: LMDI Multilinks 1.0.0

Message par pierredu »

Le code de github est du code à l'essai.
On en est à alpha, rien de plus.

@Bernard :
Je ne comprends pas d'où peuvent venir ces éléments. Historiquement, ce sont des fichiers d'une autre extension.
Essaie de désinstaller l'extension et de supprimer les données, puis de réinstaller.
Vérifie la date des deux fichiers *.html dans styles/all, etc.
Skouat
Resp. Traducteurs
Resp. Traducteurs
Messages : 16357
Enregistré le : 02 avr. 2008 à 20:47
Contact :

Re: LMDI Multilinks 1.0.0

Message par Skouat »

pierredu a écrit :L'extension est compatible 3.1.x et 3.2.x, donc je ne peux pas changer de mécanisme de gestion des langues.
D'un autre côté une extension en alpha, qui est encore en état embryonnaire, autant ne pas restreindre le code pour une compatibilité 3.1 et la rendre full compatible 3.2.

Après as you want... Ce n'est que mon point de vue.

++
Avatar du membre
pierredu
Resp. Extensions
Resp. Extensions
Messages : 1717
Enregistré le : 29 mai 2011 à 06:49
Localisation : Paris
Contact :

Re: LMDI Multilinks 1.0.0

Message par pierredu »

C'est une extension de confort, parce que la solution existe déjà dans mon autre extension (links) et dans d'autres exemples de code. Donc il vaut mieux la laisser accessible au plus grand nombre. On ne sait pas à quelle vitesse va se faire la transition de 3.1.x à 3.2.x.
Manard
Empereur des posts
Empereur des posts
Messages : 1055
Enregistré le : 31 mars 2012 à 09:24

Re: LMDI Multilinks 1.0.0

Message par Manard »

Bonjour Pierre,

As-tu mis ce post pour que nous testions et te remontions nos essais ?

Concernant mes tests précédents je n'avais pas effacé les données avant la réactivation de ta dernière version, d'où des restes de liens.

Là je peux créer un nouveau lien, mais une fois créé je ne peux ni l'éditer ni le supprimer. Quand je clique sur la croix de suppression, la ligne s'efface, mais si je réactualise la page, le lien est toujours présent sur l'onglet de personnalisation ainsi que dans la barre de navigation

Bonne après-midi

Bernard
Avatar du membre
pierredu
Resp. Extensions
Resp. Extensions
Messages : 1717
Enregistré le : 29 mai 2011 à 06:49
Localisation : Paris
Contact :

Re: LMDI Multilinks 1.0.0

Message par pierredu »

Je vais regarder ce qui se passe.
Il s'agissait d'une situation où il y avait un lien unique ?
Je n'ai pas testé ce cas particulier.
Manard
Empereur des posts
Empereur des posts
Messages : 1055
Enregistré le : 31 mars 2012 à 09:24

Re: LMDI Multilinks 1.0.0

Message par Manard »

Bonjour Pierre,

Ça le fait quelque soit le nombre de liens créés, là j'en ai mis deux, le comportement est identique. Il n'y a pas de fenêtre qui demande la confirmation de la suppression, est-ce prévu ?

Je te remercie pour ce développement

Bernard
Répondre

Retourner vers « Extensions en développement »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité