[RC] [3.1][3.2]LMDI Glossary 1.4.10

Pour les extensions destinées à phpBB 3.1.x

Modérateur: Equipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com

Re: [3.1][3.2]LMDI Glossary 1.4.1

Messagepar Zeuhl » 23 Mar 2017 à 20:13

pierredu a écrit:
Cette extension tourne sur mon forum (voir ma signature) depuis toujours.
Même si le code peut être amélioré, je ne pense pas qu'il y ait le moindre risque à l'utiliser.



Tu me rassures. J'aime beaucoup ce que tu fais dans ton domaine, tant pour ce glossaire que pour les liens (autolinks). Je vais faire des essais sur mon forum test :wink:
Zeuhl
Apprenti-posteur
Apprenti-posteur
 
Messages: 121
Enregistré le: 23 Avr 2012 à 16:30

Re: [3.1][3.2]LMDI Glossary 1.4.3

Messagepar pierredu » 24 Mar 2017 à 16:18

Je viens de mettre une nouvelle version sur github (1.4.3).
Une petite correction qui faisait qu'un terme n'était pas reconnu après un autre.
Avatar de l’utilisateur
pierredu
Resp. Extensions
Resp. Extensions
 
Messages: 1030
Enregistré le: 29 Mai 2011 à 06:49
Localisation: Paris

Re: [3.1][3.2]LMDI Glossary 1.4.4

Messagepar pierredu » 25 Mar 2017 à 11:06

Nouvelle version ce matin.
Correction d'un problème de variantes des termes.
Avatar de l’utilisateur
pierredu
Resp. Extensions
Resp. Extensions
 
Messages: 1030
Enregistré le: 29 Mai 2011 à 06:49
Localisation: Paris

Re: [3.1][3.2]LMDI Glossary 1.4.4

Messagepar ABDev » 25 Mar 2017 à 13:18

Je suis étonné que tu ne corriges pas ton "problème" d'optimisation.
Pour se payer le luxe d'être feignant, il faut sans cesse faire travailler ses méninges ! (Korben)

On clique sur le bouton Répondre plutôt que le bouton Citer ...
Un problème avec une extension ? Pas de lien vers celle-ci ? Sujet ignoré !
Avatar de l’utilisateur
ABDev
Programmationateur
Programmationateur
 
Messages: 15695
Enregistré le: 12 Mai 2005 à 23:54

Re: [3.1][3.2]LMDI Glossary 1.4.4

Messagepar pierredu » 25 Mar 2017 à 17:38

J'ai intégré les modifications que tu as proposées.
Avatar de l’utilisateur
pierredu
Resp. Extensions
Resp. Extensions
 
Messages: 1030
Enregistré le: 29 Mai 2011 à 06:49
Localisation: Paris

Re: [3.1][3.2]LMDI Glossary 1.4.4

Messagepar Skouat » 26 Mar 2017 à 00:25

Hello,

dans acp_gloss_body.html, tu te compliques la tâche pour gérer les boutons radio (qui au passage sont mals gérés).
Pourquoi ne pas faire comme c'est fait partout sur phpBB ?

Ta version
Code: Tout sélectionner
	<dl>
		<dt><label>{L_ALLOW_FEATURE}{L_COLON}</label><br />
		<span>{L_ALLOW_FEATURE_EXPLAIN}</span></dt>
		<dd>
		<label><input type="radio" id="lmdi_gloss_acp" name="lmdi_gloss_acp"
		value="1" class="radio" {ALLOW_FEATURE_YES}/>{L_YES}</label>
		<label><input type="radio" id="lmdi_gloss_acp" name="lmdi_gloss_acp"
		value="0" class="radio" {ALLOW_FEATURE_NO}/>{L_NO}</label>
		</dd>
	</dl>

primo, tu déclares deux fois les id et il n'y a pas de déclaration de for
secundo, du côté PHP tu génère une quantité de ternaire pour rien.

Donc remplace par
Code: Tout sélectionner
    <dl>
        <dt><label for="lmdi_gloss_acp">{L_ALLOW_FEATURE}{L_COLON}</label><br /><span>{L_ALLOW_FEATURE_EXPLAIN}</span></dt>
        <dd><label><input type="radio" class="radio" id="lmdi_gloss_acp" name="lmdi_gloss_acp" value="1" <!-- IF S_ALLOW_FEATURE --> checked<!-- ENDIF -->/>{L_YES}</label>
            <label><input type="radio" class="radio" name="lmdi_gloss_acp" value="0" <!-- IF S_ALLOW_FEATURE --> checked<!-- ENDIF -->/>{L_NO}</label>
        </dd>
    </dl>


Côté PHP ca donne
Code: Tout sélectionner

        $template
->assign_vars (array(
            'C_ACTION'        => $action_config,
            'S_ALLOW_FEATURE_NO'    => $config['lmdi_glossary_acp'],
 

ou
Code: Tout sélectionner

        $template
->assign_vars (array(
            'C_ACTION'        => $action_config,
            'S_ALLOW_FEATURE_NO'    => $config['lmdi_glossary_acp'] ? true : false,
 


au lieu de
Code: Tout sélectionner
		$template->assign_vars (array(
			'C_ACTION'		=> $action_config,
			'ALLOW_FEATURE_NO'	=> $config['lmdi_glossary_acp'] == 0 ? 'checked="checked"' : '',
			'ALLOW_FEATURE_YES'	=> $config['lmdi_glossary_acp'] == 1 ? 'checked="checked"' : '',


En faisait ainsi tu évites l'utilisation de 4 ternaires.

Autres points... Factorise !
Rien que dans le fichier gloss_module j'ai noté au minimus deux portions de code qui sont très similaires et cela correspond à environ 80% du code du fichier.



Dans contoller\main.php
tu dois t'assurer de ne pas inclure inutilement les 3 fichiers que tu inclus
Code: Tout sélectionner
		include($this->phpbb_root_path . 'includes/functions_user.' . $this->phpEx);
		include($this->phpbb_root_path . 'includes/functions_module.' . $this->phpEx);
		include($this->phpbb_root_path . 'includes/functions_display.' . $this->phpEx);

Puis à quoi cela te servent ces inclusions de fichiers ?
Ta classe "main" ne semble ni être utilisée en tant qu'abstract, ni en tant qu'extends
Donc je ne vois pas trop l'utilité de ces inclusions.



Dans le même genre, pourquoi charger la mémoire avec des instanciations au niveau du constructeur alors que tu pourrais alléger le tout en les instanciant au niveau du switch / case
Vu que c'est long et fastidieux de faire le topo ici, voici ton fichier modifié avec ce dont je parle :https://gist.github.com/Skouat/4fc7f7bba0c39bcb75f644d69074f6d4
Note : ce n'est pas la version finale du fichier, ce que je suggère peux encore être optimisé/factorisé.



Les variables suivantes sont déclarées mais ne sont jamais utilisées.
Code: Tout sélectionner
		$action = $this->request->variable('action', '');
		$code   = $this->request->variable('code', '-1');

donc à quoi bon les déclarer ?




Dans core/glossaire.php

Je ne vois pas trop l'intéret de déclarer des clés de langues dans des variables qui ne sont utilisées qu'une seule fois dans l'ensemble du code.

Code: Tout sélectionner
		$str_terme  = $this->user->lang['GLOSS_ED_TERM'];
		$str_defin  = $this->user->lang['GLOSS_ED_DEF'];
		$str_illus  = $this->user->lang['GLOSS_ED_PICT'];

		$corps  = '<table class="deg"><tr class="deg">';
		$corps .= '<th class="deg0">' . $str_terme . '</th>';
		$corps .= '<th class="deg0">' . $str_defin . '</th>';
		$corps .= '<th class="deg1">' . $str_illus . '</th></tr>';


A remplacer simplement par
Code: Tout sélectionner
		$corps  = '<table class="deg"><tr class="deg">';
		$corps .= '<th class="deg0">' . $this->user->lang['GLOSS_ED_TERM'] . '</th>';
		$corps .= '<th class="deg0">' . $this->user->lang['GLOSS_ED_DEF'] . '</th>';
		$corps .= '<th class="deg1">' . $this->user->lang['GLOSS_ED_PICT'] . '</th></tr>';


Tu es trop linéaire dans ton code.
On a l'impression que tu développes un programme en language BASIC :shock:




Dans core/glossaire.php

tu déclares
Code: Tout sélectionner
		$abc_links = "";
		$illustration = "";
		$corps = "";
		$biblio = "";

Et tu n'appelles ces variables qu'à ce moment-là
Code: Tout sélectionner
		$this->template->assign_vars (array (
			'TITRE'			=> $titre,
			'ABC'			=> $abc_links,
			'ILLUST'		=> $illustration,
			'CORPS'			=> $corps,
			'BIBLIO'		=> $biblio,
			));

Entre la déclaration et l'utilisation des variables, ces dernières ne subissent aucune modification.
Et au passage, inutile d'inititier la variable $corps, vu qu'elle l'est à la ligne 92

Donc autant écrire :
Code: Tout sélectionner
		$this->template->assign_vars (array (
			'TITRE'			=> $titre,
			'ABC'			=> '',
			'ILLUST'		=> '',
			'CORPS'			=> $corps,
			'BIBLIO'		=> '',
			));





Bon je m'arrête ici car je n'en suis qu'au 4ème fichier analysé et j'ai déjà écrit un roman. :?

Revois ton code, essaies de factoriser et de supprimer ce qui ne sert à rien.
Fait de la Programation Orientée Objet.
Je pense t'avoir déjà suggéré cela, si ce n'est pas la cas alors je te le suggère maintenant… passe ton code à la moulinette de "Scrutinizer-ci".
Ce n'est aucunement une solution miracle, mais perso ca ma permis de déceler pas mal d'erreurs de code.
Mes MODS

Ultima-World Hébergé par phpBB-Services
Code parrainage : 1241646554
Skouat
Traducteur
Traducteur
 
Messages: 13610
Enregistré le: 02 Avr 2008 à 20:47

Re: [3.1][3.2]LMDI Glossary 1.4.4

Messagepar pierredu » 26 Mar 2017 à 16:36

Eh oui, j'ai appris à coder en Basic et en Assembleur...
Je me souviens encore de l'émerveillement devant le Turbo Pascal, puis le Turbo C.
Alors, on va garder tout cela comme vestige, comme relique d'une période passée.
Avatar de l’utilisateur
pierredu
Resp. Extensions
Resp. Extensions
 
Messages: 1030
Enregistré le: 29 Mai 2011 à 06:49
Localisation: Paris

Re: [3.1][3.2]LMDI Glossary 1.4.10

Messagepar pierredu » 02 Avr 2017 à 17:01

J'ai installé une nouvelle version (1.4.10) sur github.

Changements :
- Fermeture de la fenêtre surgissante d'un clic sur la fenêtre (n'importe où) quand il n'y a pas de lien externe dans la rubrique de glossaire affichée. Sinon, fermeture uniquement sur la case de fermeture.
- Événement utilisé sous 3.2.0 : retour à core.viewtopic_post_rowset_data pour éviter de devoir traiter tous les éléments de texte affichés (et pas seulement les messages) et pour éviter d'accrocher sur les termes utilisés dans le stylage des messages (par exemple, style est un terme technique en entomologie).
Avatar de l’utilisateur
pierredu
Resp. Extensions
Resp. Extensions
 
Messages: 1030
Enregistré le: 29 Mai 2011 à 06:49
Localisation: Paris

Précédente

Retourner vers Extensions en développement

 


  • Articles en relation
    Réponses
    Vues
    Dernier message

Qui est en ligne

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