Un lanceur pour l’admin Magento

Si comme moi vous perdez trop de temps à trouver une configuration Magento ou à faire 3 clics pour vider un cache en particulier, ce module est fait pour vous. Il permet d’accéder rapidement à une configuration, un sous-menu, ou à une action que vous effectuez couramment depuis l’admin Magento via un lanceur directement inspiré d’Alfred sur OSX ou de Launchy sur Linux/Windows.

Caractéristiques

  • Affichage du lanceur par simple pression de la barre espace (personnalisable)
  • Recherche ultra-rapide grâce à l’indexation côté navigateur
  • Utilisation de scope suggéré automatiquement par l’application (par exemple config ou menu)
  • Exécution de tâche courante comme « Vider le cache » ou « Tout réindexer »
  • Indexeurs activés par défaut : config, menu, action
  • Autres indexeurs disponibles (désactivés par défaut) : produits, catégories, clients, commandes, promotions, attributs
  • Ajout d’indexeurs et d’actions personnalisés selon votre besoin

Aperçu

Bubble Launcher pour Magento

Installation

L’extension est disponible sur GitHub : https://github.com/jreinke/magento-admin-launcher.

Pour l’installer, 2 solutions s’offrent à vous :

  1. Installation manuelle : téléchargez le package ici, désarchivez le à la racine de votre projet Magento, puis videz le cache.
  2. Installation via modgit :

    modgit -e README.md clone launcher https://github.com/jreinke/magento-admin-launcher.git

    Exemple complet d’utilisation de modgit ici.

Utilisation

Icône de statut

Lorsque le lanceur est en cours d’indexation (après connexion à l’interface d’admin), le statut est inactif et est notifié dans la barre de navigation comme ci-dessous :

Bubble Launcher Statut Inactif

Lorsque l’indexation est terminée et que le lanceur est prêt, le logo apparaît en couleur :

Bubble Launcher Statut Actif

Affichage du lanceur

Quand le lanceur est prêt (logo orange), il suffit de presser la touche espace et le lanceur s’affiche :

Bubble Launcher

La touche déclenchant l’affichage du lanceur est modifiable en configuration.

Utilisation des scopes

Le lanceur vous permet d’utiliser des « scopes » de recherche. C’est-à-dire que vous pouvez rechercher un type de résultat bien précis, comme une configuration ou un élément du menu par exemple. Pour cela, lorsque vous commencer à taper une lettre et que le lanceur reconnaît qu’un scope peut correspondre, il vous sera suggéré et si vous souhaitez l’utiliser il vous suffit de presser la touche tab :

Bubble Launcher Scope

L’utilisation des scopes est désactivable.

Configuration du lanceur

Pour accéder à la configuration du module, rendez-vous dans « Système > Configuration > Bubble Launcher » (ou bien tapez « config: bubble » depuis le lanceur :p)

Paramètres généraux

Bubble Launcher Paramètres Généraux

Personnalisation du lanceur

Bubble Launcher Paramètres Lanceur

Création d’un indexeur personnalisé

Si les indexeurs présents par défaut ne suffisent pas, vous pouvez facilement créer le vôtre avec votre propre scope.

Nous allons par exemple créer un indexeur personnalisé pour accéder aux groupes clients depuis le lanceur.

Création d’un module

Commencez par créer un module selon l’arborescence suivante :

Bubble Launcher Module Indexeur Personnalisé

<!-- app/etc/modules/Namespace_Module.xml -->
<?xml version="1.0"?>
<config>
    <modules>
        <Namespace_Module>
            <active>true</active>
            <codePool>local</codePool>
        </Namespace_Module>
    </modules>
</config>
<!-- app/code/local/Namespace/Module/etc/config.xml -->
<?xml version="1.0" encoding="utf-8"?>
<config>
    <modules>
        <Namespace_Module> <!-- nom du module -->
            <version>0.1.0</version>
        </Namespace_Module>
    </modules>
    <global>
        <models>
            <namespace_module> <!-- utilisé dans launcher.xml -->
                <class>Namespace_Module_Model</class> <!-- utilisé pour trouver la classe de l'indexeur -->
            </namespace_module>
        </models>
    </global>
</config>

Déclaration de l’indexeur

<!-- app/code/local/Namespace/Module/etc/launcher.xml -->
<?xml version="1.0" encoding="utf-8"?>
<launcher>
    <indexers>
        <group> <!-- group est le scope, il doit rester en anglais et être éventuellement traduit -->
            <class>namespace_module/indexer_group</class> <!-- classe instanciée via Mage::getSingleton() -->
        </group>
    </indexers>
</launcher>

Création de l’indexeur

L’indexeur doit étendre la classe Bubble_Launcher_Model_Indexer_Abstract et implémenter la méthode _buildIndexData :

<?php
// app/code/local/Namespace/Module/Model/Indexer/Group.php
 
class Namespace_Module_Model_Indexer_Group extends Bubble_Launcher_Model_Indexer_Abstract
{
    protected function _buildIndexData()
    {
        $data = array();
        $collection = Mage::getModel('customer/group')->getCollection();
        $menuLabel = Mage::helper('adminhtml')->__('Customer Groups');
        foreach ($collection as $group) {
            /** @var $group Mage_Customer_Model_Group */
            $title  = sprintf('%s', $group->getCustomerGroupCode());
            $text   = sprintf('%s > %s', $menuLabel, $group->getCustomerGroupCode());
            $url    = $this->_getUrl('adminhtml/customer_group/edit', array('id' => $group->getId()));
            $data[] = $this->_prepareData($title, $text, $url);
        }
 
        return $data;
    }
}

Vérification des droits

Chaque indexeur hérite d’une méthode canIndex() qui est généralement utilisée pour vérifier les droits d’accès et/ou une valeur en configuration. Dans notre exemple, nous allons vérifier que l’utilisateur a bien les droits nécessaires pour accéder aux groupes clients :

<?php
// app/code/local/Namespace/Module/Model/Indexer/Group.php
 
class Namespace_Module_Model_Indexer_Group extends Bubble_Launcher_Model_Indexer_Abstract
{
    protected function _buildIndexData()
    {
        // ... voir ci-dessus
    }
 
    public function canIndex()
    {
        return $this->_isAllowed('customer/group');
    }
}

Ajout d’une icône dans les résultats

Vous avez la possibilité d’ajouter une icône dans les résultats de recherche pour illustrer les groupes clients.

Récupérez donc une icône, par exemple le fichier group.png du package d’icônes disponible gratuitement à l’adresse http://www.famfamfam.com/lab/icons/silk/.

Copiez l’icône dans skin/adminhtml/default/default/images/bubblelauncher/fam/group.png.

Modifiez la feuille de style pour intégrer l’icône des groupes clients :

/* skin/adminhtml/default/default/bubblelauncher.css */
#bubblelauncher-results ul.show-icon li.group a { /* li.group correspond au scope déclaré plus haut dans launcher.xml */
    background-image: url(images/bubblelauncher/fam/group.png);
}

L’idéal serait de ne pas modifier les fichiers du module Bubble_Launcher et de faire vos modifications dans une feuille de style séparée.

Résultat

Videz le cache et vous devriez obtenir le résultat suivant lorsque vous utilisez le scope group :

Bubble Launcher Indexeur Groupes Clients

Vous pouvez traduire le scope « group » en « groupe » en ajoutant la traduction dans le fichier Bubble_Launcher.csv

Ajout d’actions personnalisées

Ajout d’un fichier launcher.xml

Le module fournit par défaut des actions comme « Vider le cache » ou « Tout réindexer ». Vous pouvez ajouter vos propres actions en ajoutant un fichier etc/launcher.xml à votre module. Voici par exemple comment ajouter une action pour se déconnecter de l’admin :

<!-- app/code/local/Namespace/Module/etc/launcher.xml -->
<?xml version="1.0" encoding="utf-8"?>
<launcher>
    <actions>
        <logout>
            <title module="adminhtml">Log Out</title> <!-- sera traduit par le helper adminhtml -->
            <text module="adminhtml">Log Out</text> <!-- sera traduit par le helper adminhtml -->
            <action>adminhtml/index/logout</action>
            <!--acl>pas nécessaire pour la déconnexion</acl-->
        </logout>
    </actions>
</launcher>

Résultat

Après avoir vidé le cache, vous devriez obtenir ceci :

Bubble Launcher Action Déconnexion

Je vous invite à jeter un coup d’oeil au fichier app/code/community/Bubble/Launcher/etc/launcher.xml pour avoir des exemples de déclaration d’actions.

Amusez-vous bien ;)

2 réponses à “Un lanceur pour l’admin Magento”

  1. Peter Svegrup dit :

    Salut Johann,

    and a grand merci for your excellent extension!

    I am just trying out a different Wysiwyg (Redaktor) but it seems to react differently to positioning the cursor inside the « text area » so when I hit space, Launcher comes up instead of giving me a space in the text. This would have been all good by just changing the key code but I tried to do that with several different key codes but it doesn’t change. Looking into the js file I found that the value 32 is statically input so easy to change but would be great if you updated the extension to take the value from config.

    Cheerio

    Peter

  2. Mark dit :

    Hi. Excellent tool.

    This may or may not be a bug. In system.log we see the following:

    2013-12-28T18:57:53+00:00 ERR (3): Notice: Undefined index: fields in includes/src/Bubble_Launcher_Model_Indexer_Config.php on line 36
    2013-12-28T18:57:53+00:00 ERR (3): Notice: Undefined index: label in includes/src/Bubble_Launcher_Model_Indexer_Config.php on line 38
    2013-12-28T18:57:53+00:00 ERR (3): Notice: Undefined index: label in includes/src/Bubble_Launcher_Model_Indexer_Config.php on line 23

    And, possibly unrelated, I do not see the ‘B’ icon in the menu bar of the admin panel.

    This is on CE 1.8.1.0

Laisser un commentaire

* Champs requis

Categories