Simplifiez vous la console sous windows avec Terminal

Pour des raisons techniques j’ai récemment du repasser sous windows pour quelques jours récemment.

En étant habitué la console linux c’est un énorme retour en arrière d’utiliser la console standard de windows  ( cmd ) d’autant quelle ne gère pas nativement la connexion ssh

Mon usage de la console est essentiellement basé autour la connexion à des serveurs web, ou des commandes git sous windows j’utilise le sous-sytème wsl pour gérer toutes ces commandes.

J’utilisais déjà pour remédier à ça l’alternative cmder https://cmder.net/

Qui rendait déjà les choses bien plus pratiques avec sa gestion multi-onglets et le chargement de profils.
Mais  j’avais pas mal de problèmes dans la gestion des flèches lors de l’édition des fichiers avec vim qui me faisait souvent perdre du temps

J’ai donc profiter la sortie officielle de la version 1.0 de terminal et j’ai été assez séduit par son fonctionnement et son utilisation :

  • Gestion multi-onglets
  • Types de fenêtres ( cmd / powershell / wsl )

Si vous utilisez souvent la console sous windows je pense que c’est un outil que vous adopterez très vite 🙂

Vous pouvez l’installer depuis le lien suivant :
https://www.microsoft.com/fr-fr/p/windows-terminal/9n0dx20hk701?activetab=pivot:overviewtab

Lire la suite...
Pas de commentaires

Prestashop console : Nouvelle version 1.6

Ça fait un moment que je n’avais pas posté d’information à propos de mon outil de console sur Prestashop, PrestashopConsole ( depuis 2016 exactement 😀 )

A l’occasion de la sortie de la version 1.6,  c’est l’occasion le faire à nouveau pour balayer les nouveautés apportées par cette version, ainsi que l’ensemble des possibilités apportées par la console.

Je précise également que l’outil même si il peut être utilisé via un clone du dépôt github, a surtout vocation a être utilisé via son format phar, qu’il faut déposer à la racine de votre projet.

Voici les nouvelles fonctionnalités de cette version :

  • Amélioration de la qualité du code
  • Nouvelles commandes pour générer les fichiers htacess et robots.txt
  • Nouvelles commandes pour lister les hooks ( globalement ou par modules )
  • Nouvelle commande pour générer les miniatures d’images
  • Nouvelle commande pour exporter les images sous forme d’archive
  • Possibilité de renommer le fichier phar
  • Nouvelle commande pour générer des nouvelles commandes ( utilisation développement uniquement )

A compter de cette version, toutes les futures évolutions seront listées dans la page des releases sur github :

https://github.com/nenes25/prestashop_console/releases

Lire la suite...
Pas de commentaires

Mantis Bugtracker : Gestion des cron

J’utilise la solution mantis depuis pas mal d’années pour suivre l’ensemble des mes projets personnels, à ce titre j’ai déjà développé quelques plugins spécifiques à mes différents besoins.
 ( La grande majorité sont disponibles sur github ou sur ce blog )

J’ai de plus en plus de plugins qui nécessitent l’exécution de tâches planifiées ( cron ), et à part ajouter manuellement les crons de chaque plugin dans la crontab du serveur je n’ai pas trouvé de solution pratique sur mantis bugtracker pour gérer ces crons.

C’est donc l’occasion de faire un nouveau plugin qui va permettre de simplifier tout cela 😀

Ce plugin nécessite les droits d’administrateur pour pouvoir visualiser et configurer les informations

Principe de fonctionnement

Ce plugin va collecter l’ensemble des tâches planifiées de l’ensemble des autres plugins via un événement personnalisé.
Il ne sera donc nécessaire que d’entrer la page de ce module dans la crontab de votre serveur
Nous verrons dans la dernière partie comment ajouter des tâches planifiées via un plugin.…

Lire la suite...
Pas de commentaires

Mantis Bugtracker : plugin de timer

Edit 2020-04-05 :
J’ai découvert dans la configuration que cette fonctionnalité existe déjà nativement dans mantis ..
Ce plugin n’est donc pas forcément très utile, une note à retenir toujours lire la documentation avant de développer 😀
Pour activer le fonctionnement natif il suffit de configurer la variable de configuration: g_time_tracking_stopwatch à ON

Pour faciliter le suivi de la gestion de temps avec Mantis bugtracker voici un plugin tout simple,qui permets de connaître le temps réel passé sur le traitement d’un bug.

Celui-ci ajoute des boutons pour gérer un timer dans le formulaire d’ajout d’une note sur un bug comme vous pouvez le voir dans la capture suivante

Mantis bugtracker timer
Timer mantis bug tracker

Il est possible de modifier le timer via les boutons « Start » , « Pause », »Stop », »Reset »

Lors du clic sur le bouton « Stop » le temps passé est automatiquement saisi dans le champ « Suivi du temps »

Mantis bugtracker timer

Attention pour que cela fonctionne il faut bien penser à activer l’option time_tracking_enabled

Pour la gestion du timer j’ai utilisé la librairie  https://github.com/albert-gonzalez/easytimer.js

Lire la suite...
8 commentaires

Prestashop : Créer ou modifier un produit via l’api

J’ai récemment du tester le bon fonctionnement d’une api produit et j’ai un peu galérer à trouver un script fonctionnel pour créer et modifier un produit via l’api Prestashop.

Si d’autres personnes rencontrent le même problème voici des exemples basiques mais fonctionnels de création et de mise à jour de produits via l’api Prestashop

Le code a été testé sur une version 1.7.6 mais devrait fonctionner sur toutes les versions 1.7 , voir même les versions 1.6 vu que l’api a assez peu bougée.

Les exemples utilisent la librairie du webservice prestashop ( cf. https://devdocs.prestashop.com/1.7/development/webservice/tutorials/prestashop-webservice-lib/ )

Pour créer un produit

try {
        //Création d'un produit avec uniquement les champs requis
        $webService = new PrestaShopWebservice($url, $key, $debug);
 
        $xmlResponse = $webService->get(['url' => $url . '/api/products?schema=blank']);
        $productXML = $xmlResponse->product[0]; //Récupération du schéma de création
        $productXML->name->language[0] = "test de produit Langue 1";
        $productXML->name->language[1] = "test de produit FR";
        $productXML->description->language[0] = "test de description langue 1";
        $productXML->description->language[1] = "test de description FR";
        $productXML->price = "1000.000"
Lire la suite...
1 commentaire

Prestashop : problème login administration

Ceci sera uniquement une petite note rapide sur un problème que j’ai rencontré récemment dans le cas d’un changement de serveur d’un site prestashop ( version 1.7.5.2 ) , mais je pense qu’elle peut se produire sur les autres version également.

Les accès à l’administration étaient fonctionnels et j’arrivais bien à entrer dans le dashboard.

En revanche lorsque je souhaitais cliquer sur n’importe quel lien dans j’étais systématiquement redirigé vers le formulaire d’authentification.
Ce problème était présent également en navigation privée.

La solution à ce problème a été de désactiver la vérification de l’ip des cookies directement via une requête sql 😀

UPDATE ps_configuration SET VALUE = 0 WHERE name ='PS_COOKIE_CHECKIP'

Si vous avez accès à l’administration sur un autre poste, vous pouvez faire cette manipulation directement dans l’administration.
Il faut passer l’option « Vérifier l’adresse ip du cookie » à non dans « Paramètres avancés / Administration / Paramètres généraux »

 

Lire la suite...
5 commentaires

Prestashop 1.7 : Ajouter un champ produit de type file dans l’administration

Suite à mon (ancien ) article (https://www.h-hennes.fr/blog/2017/10/19/prestashop-1-7-ajouter-des-champs-produit/ ) sur l’ajout de champs custom dans le formulaire d’administration d’un produit, j’ai eut pas mal de questions sur comment ajouter un champ de type file.

Il faut reconnaître que la fonctionnalité n’est pas évidente car le formulaire est soumis en ajax et le gère pas l’upload de fichiers.

Le simple fait d’ajouter un champ de type file dans le formulaire n’est donc pas suffisant pour que cela fonctionne.

Cet article présente une approche qui fonctionne, mais je ne peux pas garantir que c’est la meilleure approche.

Pour son fonctionnement je me suis inspiré de la gestion de l’upload qui est faite pour la gestion des images standard du produit via la librairie Js Dropzone

Pour le code j’ai donc repris le code de l’ancien article en y ajoutant la logique d’un champ image.

Voici visuellement comment se présente le champ d’upload

L’ensemble de la logique d’upload et de sauvegarde de la valeur du produit va être gérée directement dans le module

Voici le rendu dans le cas ou une image existe déjà.…

Lire la suite...
1 commentaire

Prestashop 1.7 : Ajouter une étape dans le tunnel de commande

Dans sa version 1.7 de Prestashop a complètement refondu le fonctionnement du tunnel de commande.

Le fonctionnement est plus propre que dans la version précédente et avec cette nouvelle architecture il devient relativement simple d’ajouter une nouvelle étape.
Nous allons voir comment réaliser cela via la création d’un module.
L’idée étant d’ajouter une étape « Test de nouvelle étape » comme sur la capture ci-dessous :

Checkout Nouvelle étape
Affichage de la nouvelle étape

Cet étape contiendra uniquement 2 informations que nous souhaitons pouvoir réutiliser dans le panier

Fonctionnement technique

Les différentes étapes du tunnel de commandes sont gérées dans la méthode  bootstrap du controller OrderController , le code est relativement simple à comprendre.

Un instance de la classe CheckoutProcess est créé.
Puis l’ensemble des steps ( étapes ) sont ensuite ajoutée au checkout via la méthode addStep(CheckoutStepInterface $step) qui attends donc une classe implémentant l’interface CheckoutStepInterface

Voici le code de la fonction du controller natif ( version 1.7.6 de Prestashop )

 protected function bootstrap()
    {
        $translator = $this->getTranslator();
 
        $session = $this->getCheckoutSession();
 
        /**
         * Création du process
         */
        $this->checkoutProcess = new CheckoutProcess(
            $this->context,
            $session
        );
 
        /**
         * Ajout des différentes étapes
         */
        $this->checkoutProcess
            ->addStep(new CheckoutPersonalInformationStep(
                $this->context,
                $translator,
                $this->makeLoginForm(),
                $this->makeCustomerForm()
            ))
            ->addStep(new CheckoutAddressesStep(
                $this->context,
                $translator,
                $this->makeAddressForm()
            ));
 
        if (!
Lire la suite...
5 commentaires

Prestashop 1.7 : Ajouter des champs dans un formulaire d’administration

Cet article est une mise à jour de l’article suivant https://www.h-hennes.fr/blog/2017/06/21/prestashop-ajouter-des-champs-dans-un-formulaire-dadministration/ qui s’applique aux controllers qui utilisent symfony, c’est le cas à partir 1.7.6 de Prestashop

Si vous avez des doutes si le controller sur lequel vous souhaitez ajouter des champs fonctionne avec ce méthode, n’hésitez pas à consulter l’article suivant pour l’identifier  : https://www.h-hennes.fr/blog/2019/07/25/prestashop-1-7-identifier-si-un-controller-admin-a-ete-migre-vers-symfony/

L’objectif est d’ajouter un nouveau champ dans un formulaire d’administration de manière propre via un module.

Fonctionnement technique

Comme pour les versions précédentes des hooks dynamiques sont présents dans le code prestashop pour vous permettre gérer des informations supplémentaires via vos modules dans les formulaires.

Pour ajouter des champs le hook est exécuté dans la fonction buildForm du fichier src/Core/Form/IdentifiableObject/Builder/FormBuilder.php

Les noms des hooks sont construits sous la forme suivante :

action . Container::camelize($formBuilder->getName()) . FormBuilderModifier

/**
     * @param string $formType
     * @param array $data
     * @param int|null $id
     * @param array $options
     *
     * @return FormInterface
     */
    private function buildForm($formType, $data, $id = null, array $options = [])
    {
        $formBuilder = $this->formFactory->createBuilder($formType, $data, $options);
        $this->hookDispatcher->dispatchWithParameters('action' .
Lire la suite...
34 commentaires

Prestashop 1.7 Identifier si un controller admin a été migré vers symfony

Un petit article rapide qui fait suite aux nombreux retours que j’ai dans les commentaires de certains de mes tutoriels liés à l’administration de Prestashop.

Un des objectifs principal de cette version est de migrer l’ensemble de l’administration vers le framework symfony, au fur et à mesure des nouvelles versions le nombre de page migrées sera donc de plus en plus important.

Et par ricochet mes anciens articles ne seront plus applicables.

Le moyen le plus simple pour vérifier si le controller est migré vers symfony et de consulter son url.

Les anciennes urls ( non symfony ) sont sous la forme

https://prestashop-site.com/admin-dev/index.php?controller=AdminAddresses&

Le terme « controller » est présent dans l’url.

Visuellement les listings se présentent de cette manière :

Controller admin prestashop legacy

Les nouvelles urls (avec symfony ) sont sous la forme

https://prestashop-site.com/admin-dev/index.php/sell/customers/

Le terme « controller » n’est pas présent dans l’url.

Visuellement les listings se présentent de cette manière

Prestashop controller symfony

Ces éléments devraient être suffisant pour vous permettre d’identifier dans quel type de controller admin vous vous trouvez 🙂

 

 …

Lire la suite...
2 commentaires

Archives

Compte Github