herve

Mantis bugtracker : plugin d’envoi d’un récapitulatif hebdomadaire des bugs

Voici mon dernier plugin pour Mantis Bugtracker.
L’objectif de celui-ci est d’envoyer en début de semaine à chaque développeur un récapitulatif des bugs à traiter.
Ce module se base sur le traitement des échéances des bugs ( champ due_date )
(C’est un module très basique, il est possible d’optimiser encore pleins de points 😉 )

Nous allons l’appeller « Reminder »
Voici le mode opératoire de création de ce module.

Pour commencer nous allons créer un dossier « Reminder » dans le dossier « plugins » de mantis BugtrackerVoici le fichier de déclaration du module « Reminder.php »

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
	Plugin Reminder pour Mantis BugTracker :
 
	 - Envoi d'un email récapitulatif des échéances de la semaine aux développeurs
 
	 @version 0.1.0 - 2013-07-23
	 @autor Hervé Hennes <[email protected]>
*/
 
class ReminderPlugin extends MantisPlugin {
 
	function register() {
		$this->name        = 'ReminderPlugin';
		$this->description = 'Envoi d\'un email récapitulatif des échéances de la semaine aux développeurs';
		$this->version     = '0.1.0';
		$this->requires    = array('MantisCore'       => '1.2.0',);
		$this->author      = 'Hennes Hervé';
		$this->url         = 'http://www.h-hennes.fr'

Mantis bugtracker : plugin d’envoi d’un récapitulatif hebdomadaire des bugs Lire la suite »

Magento : Supprimer le champ obligatoire « régions » dans les adresses du checkout

Sous Magento ( version 1.4.x ) pour certains pays il est nécessaire de choisir une région associée à l’adresse.
Utile pour certains pays (US,CA … ) cette information n’est pas forcément judicieuse pour la France.
C’est d’autant plus agaçant que ce champ est considéré comme obligatoire par magento.

Voici les étapes à réaliser pour ne plus afficher ces éléments :
Pour commencer il faut supprimer directement dans la table sql les régions associées au pays pour lequel on ne souhaite plus afficher les régions.
Pour la france voici le code sql

DELETE FROM mag_directory_country_region WHERE country_id = 'FR'

Une fois cette manipulation effectuée, la saisie du champ « Région » devient facultative.
Il est donc possible de modifier directement les fichiers billing.phtml et shipping.phtml situé dans le dossier « yourThemeDirectory/checkout/onepage/ » pour ne plus faire apparaitre cette information.…

Magento : Supprimer le champ obligatoire « régions » dans les adresses du checkout Lire la suite »

Prestashop : Charger un objet via n’importe quel champ

Durant les derniers mois j’ai travaillé de manière régulière avec la solution concurrente « Magento » qui permets le chargement et la récupération d’informations sur les objets de manière très souple via n’importe quel champ.
Cette fonctionnalité n’est malheureusement pas disponible à ce jour avec Prestashop, (version 1.5.4.1 à ce jour ), mais avec le mécanisme des override, il est relativement aisé d’adapter cette logique.

Mon besoin a été motivé par la nécessité d’ajouter de nombreux champs spécifiques sur un site prestashop en cours de développement.

/!\ Cette méthode nécessite au minimum php en version 5.3 pour fonctionner.

Voici les codes à mettre en place dans le fichier override/classes/ObjectModel.php

<?php
 
abstract class ObjectModel extends ObjectModelCore
{
 
    /**
     * Rajout de la possibilité de récupérer un objet par n'importe quel champ
     * (Il est nécessaire de l'instancier avant)
     * 
     * @param string $field champ de la table 
     * @param string $value valeur du champ de la table
     * @return int id_object : identifiant de l'objet
     */
    public static function getObjectIdByField($field = '', $value='') {
 
		$className = get_called_class();   
        return Db::getInstance()->getValue("SELECT ".

Prestashop : Charger un objet via n’importe quel champ Lire la suite »

Prestashop : Module Scroll To Top

J’ai récemment installé sur ce blog le plugin wordpress « Dynamic to Top » que je trouve très pratique à utiliser et vraiment intuitif à l’utilisation.
Dans le cadre d’un projet Prestashop, j’ai donc décidé de créer un module Prestashop reprenant ces fonctionnalités.
Celui-ci se base sur le script de l’auteur du plugin wordpress disponible à l’adresse suivante : http://mattvarone.com/web-design/uitotop-jquery-plugin/

Le plugin fera dynamiquement apparaitre une image avec un lien de retour vers le haut de page sur l’ensemble des pages trop longues du site. (Le bloc encadré en rouge sur la capture ci-dessous)

Prestashop scroll to top

Aucune configuration n’est nécessaire, le module est fonctionnel dès son installation

Vous pouvez télécharger ce module : Module Prestashop Scroll To Top
( Attention fonctionne uniquement avec prestashop 1.5.xx )

Edit 11/11/2013 : La nouvelle version du module est également compatible prestashop 1.4.x…

Prestashop : Module Scroll To Top Lire la suite »

Prestashop 1.5.x : Ajouter un css ou un javascript d’un module uniquement sur un controlleur

Dans le cadre du développement d’un nouveau module pour un site tournant sous prestashop 1.5,  celui-ci nécessite l’utilisation de fichiers css et javascripts spécifiques pour son bon fonctionnement.
Cependant ce module étant uniquement utilisé sur la fiche produit, je ne voyais pas l’intérêt de charger inutilement ces fichiers sur l’ensemble des pages du site.

Voici donc une astuce qui vous permettra de charger vos fichiers uniquement dans le controlleur nécessaire :
ProductController est donc à remplacer par le controller dans lequel vous souhaitez insérer vos contenus.

/**
* Hook Header Prestashop
* @param type $params
*/
public function hookHeader($params){
 
//Récupération du contexte
$context = Context::getContext();
 
//On ajoute uniquement nos éléments dans la fiche produit donc le controller "ProductController"
 if ( $context->controller instanceof ProductController ) {
 
 $this->context->controller->addCSS(($this->_path).'module-style.css', 'all');
 $this->context->controller->addJS(($this->_path).

Prestashop 1.5.x : Ajouter un css ou un javascript d’un module uniquement sur un controlleur Lire la suite »

Changement de design pour le blog

Après plusieurs années de bons et loyaux services, il était temps de changer le design de ce blog.

Pas de bouleversements, j’ai uniquement remplacés les images de fond des différents blocs par des couleurs plus sobres.
Au passage certaines formulations ont été changées, et un plugin de retour en haut de page a été mis en place pour faciliter la navigation.

Pour ce qui est des contenus, quelques changements :  le « site » et le blog ont été fusionnés, mes pages institutionnelles sont donc présentes en haut de page sur le blog.
Tous les contenus non pertinents, ou plus d’actualité du site ont été supprimés.

Je réfléchis également à une solution pour rendre plus accessibles les articles les plus appréciés des lecteurs, à travers pourquoi pas une mise en avant de dossiers thématiques.

La suite donc au prochain épisode 🙂…

Changement de design pour le blog Lire la suite »

Magento : lister les méthodes exécutées par un évènement

Une petite astuce pour ceux qui veulent avoir la liste des méthodes qui vont être exécutées par un évènement magento.
Dans mon cas je souhaitais savoir les méthodes exécutées pour l’evènement « sales_order_save_after »

Voici le code a copier dans le controlleur de votre choix :

Zend_debug::dump(Mage::app()->getConfig()->getEventConfig('global', 'sales_order_save_after'));

Et voici le résultat :

object(Mage_Core_Model_Config_Element)#119 (1) {
  ["observers"] => object(Mage_Core_Model_Config_Element)#118 (3) {
    ["tax"] => object(Mage_Core_Model_Config_Element)#15 (2) {
      ["class"] => string(12) "tax/observer"
      ["method"] => string(24) "salesEventOrderAfterSave"
    }
    ["foomanjirafe_salesOrderSaveAfter"] => object(Mage_Core_Model_Config_Element)#108 (3) {
      ["type"] => string(9) "singleton"
      ["class"] => string(33) "Fooman_Jirafe_Model_OrderObserver"
      ["method"] => string(19) "salesOrderSaveAfter"
    }
    ["giftvoucher_order_save_after"] => object(Mage_Core_Model_Config_Element)#124 (3) {
      ["type"] => string(9) "singleton"
      ["class"] => string(20) "giftvoucher/observer"
      ["method"] => string(14) "orderSaveAfter"
    }
  }
}

Magento : lister les méthodes exécutées par un évènement Lire la suite »

Création d’un plugin de suivi de temps pour Mantis Bugtracker : nouvelle version

Suite aux notifications reçues récemment concernant des problèmes de fonctionnement de mon plugin de suivi de temps pour le bugtracker mantis, j’ai décidé qu’il était temps de mettre à jour ce plugin. ( Celui-ci date de presque 2 ans déjà …  :-))

Je vous annonce donc la sortie de la version 0.2 du module.

plugin-agenda-v2.0

Celui-ci a été testé sans problèmes particuliers sur la dernière version de mantis à ce jour ( 1.2.15 )

Voici le changelog de cette version :

  • Ajout de la gestion des dates d’échéance.
  • Mise à jour de la version du fullCalendar ( 1.5.1 à 1.6.1)
  • Réorganisation de l’architecture des dossiers
  • Modifications des options d’affichage en fonction du profil de visualisation et du projet sélectionné
    • Administrateur :
      • visualisation de toutes les dates d’échéances
      • visualisation de toutes les actions des développeurs ( Possibilité de filtrer par développeur )
    • Développeur :
      • visualisation des dates d’échéances des bugs assignés
      • visualisation de ses actions

Attention afin que le plugin soit fonctionnel il est nécessaire d’avoir bien activé les options suivantes dans votre fichier config_inc.php…

Création d’un plugin de suivi de temps pour Mantis Bugtracker : nouvelle version Lire la suite »

Prestashop : Ajouter un editeur wysiwyg sur la description des catégories

Voici un code pratique et rapide à mettre en place afin de pouvoir afficher du texte html dans la description des catégories sur la plateforme ecommerce Prestashop ( version 1.4.xx )

Edit : Si vous souhaitez réaliser cette action sur prestashop 1.5 vous pouvez consulter l’article suivant : Ajouter un editeur wysiwyg sur la description des catégories (prestashop 1.5 )

Comme nous allons toucher à des fichiers de l’administration cette modification nécessite de toucher au code du coeur de prestashop.
En effet l’override de cette partie n’est pas encore géré dans cette version.

Pour commencer nous allons afficher l’éditeur TinyMce sur le block description de la catégorie

Dans le fichier /admin/tabs/AdminCategories.php  (ligne 138 sur ma version ) rajouter la classe « class=rte » sur le textearea de la description.

foreach ($this->_languages AS $language)
echo '
<div style="display: '.($language['id_lang'] == $this->_defaultFormLanguage ? 'block' : 'none').'; float: left;">
<textarea class="rte" name="description_'.

Prestashop : Ajouter un editeur wysiwyg sur la description des catégories Lire la suite »

Magento : Ajouter un attribut produit via un module

Petit script pratique aujourd’hui pour ajouter rapidement un attribut produit via un module personnalisé.
Dans notre cas nous allons également créer un groupe d’attribut spécifique qui sera ajouté à tous les jeux d’attributs produits.
Puis pour finir nous ajouterons l’attribut directement dans ce groupe d’attributs.

Le code suivant est à placer dans le fichier d’install ou d’upgrade de votre module.

 

$installer = $this;
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$installer->startSetup();
 
/**
 * Création du nouvel Attribut produit "product_picto"
 * Creation of the new product attribute "product_picto"
 */
$setup->addAttribute('catalog_product', 'product_picto', array(
    'label' => 'product_picto',
    'type' => 'varchar',
    'input' => 'select',
    'backend' => '',
    'frontend' => '',
    'global' => 0,
    'visible' => true,
    'required' => false,
    'user_defined' => 1,
    'option' => array(
        'value' => array(
            'none' => array('none'),
            'exclu-web' => array('exclu-web'),
            'nouveaute' => array('nouveaute'),
            'top-ventes' => array('top-ventes'),
        )
    ),
    'used_in_product_listing' => 1,
    'default' => 'none',
));
 
 
/**
 * Création d'un groupe d'attribut "V2" et ajout du nouvel attribut "product_picto" dans ce groupe pour tous les jeux d'attributs
 * Creation of an attribute group "V2" and add of the new attribute "product_picto" in this attribute group  for all attributes sets
 */
$attributesSetIds = $setup->getAllAttributeSetIds('catalog_product');
 
foreach ($attributesSetIds as $attributesSetId) {
 
    $setup->addAttributeGroup('catalog_product', $attributesSetId, 'V2');
    $setup->addAttributeToGroup('catalog_product', $attributesSetId, 'V2', 'product_picto');
 
}
 
$installer->endSetup();

Après l’installation ou la mise à jour de votre module voici le résultat obtenu 🙂

Magento : Ajouter un attribut produit via un module Lire la suite »