Tweekers' Blog

Aller au contenu | Aller au menu | Aller à la recherche

Sites

Par rapport a mes sites

Fil des billets

Utiliser le plugin sfEasyGMapPlugin avec symfony 1.4

Le plugin sfEasyGMapPlugin permet d'ajouter simplement les fonctionnalités de Google Maps a votre projet Symfony. La documentation donnée sur la page du plugin est loin d'être complète et à jour, et installer ce plugin sur un projet Symfony 1.4 n'est pas trivial, d'où ce billet.

Pour commencer il faut obtenir une clé pour l'API Google Maps. Il vous faudra autant de clés que de domaines et cela vaut pour les domaines locaux. Étant donné que je travaille sur plusieurs machines a des lieux différents, il m'a fallu créer 2 clés uniquement pour les machines de développement, il m'en faudra une troisième pour le site réel.
Les clés sont a placer dans le fichier app.yml de votre application:

all:
  google_maps_api:
    keys:
      domaine1: clé gmaps
      domaine2: autre clé gmaps

Il faudra aussi ajouter au fichier settings.yml une référence au plugin dans les modules utilisés :

all:
  .settings:
    enabled_modules:      [default, sfEasyGMapPlugin]

Ceci fait parti des choses qui ne sont indiquées nulle part dans la documentation, il m'a fallu chercher dans les listes de discussions pour trouver cela... Un fois la clé mise en place on récupère le plugin.

cd plugins
svn co svn co http://svn.symfony-project.com/plugins/sfEasyGMapPlugin/branches/v3 sfEasyGMapPlugin
cd ..
ln -s ../plugins/sfEasyGMapPlugin/web web/sfEasyGMapPlugin

Tout ce qui concerne les taches qui automatisent l'installation des plugins comme symfony plugin:install ou symfony plugin:publish-assets ne fonctionne pas, pas la peine de perdre du temps la dessus, le plugin a besoin d'être mis a jour. Cela ne l'empêche pas de fonctionner a merveille, il est juste plus compliqué a mettre en place que d'autres plugins. Dernière chose a mettre en place, dans le fichier config/ProjectConfiguration.class.php ajouter a la liste de vos plugins utilisés :

    $this->enablePlugins('sfEasyGMapPlugin');

On n'oubliera pas le clear cache de rigueur pour ce types d'opérations:

.symfony cc

Le plugin est maintenant utilisable, nous allons le tester sur une des actions du projet.
Dans l'action:

    public function executeIndex(sfWebRequest $request)
    {
        $this->gMap = new GMap();
        $this->gMap->addMarker(new GMapMarker(51.245475,6.821373));
        $this->gMap->addMarker(new GMapMarker(46.262248,6.115969));
        $this->gMap->centerAndZoomOnMarkers();
    }

Dans le template:

<?php use_helper('GMap') ?>
<?php include_map($gMap,array('width'=>'512px','height'=>'400px')); ?>
<?php include_map_javascript($gMap); ?>

Ceux qui suivent la documentation officielle en parallèle remarqueront certaines différences. J'ai ajouté un appel a la fonction centerAndZoomOnMarkers() dans l'action, sinon on se retrouve avec un carré gris et j'ai supprimé l'helper 'Javascript' dans use_helper() qui est déprécié dans Symfony 1.4.

Nous voyons ici les fonctionnalités de base du plugin, mais celui est en réalité beaucoup plus riche. Essayez le Sample 2 de la documentation et vous verrez qu'il est très simple de faire une recherche GoogleMaps et de convertir le nom d'une ville en coordonnées.
En plus du plugin et grace a Doctrine, stocker des coordonnées deviens un jeu d'enfant grâce au comportement Geographical. Voila pour le plugin sfEasyGMapPlugin, j'espère que ce billet deviendra rapidement inutile et que le code source et la documentation seront mises a jour pour prendre en compte Symfony 1.4 et compléter les informations manquantes.

Abandon de MediaWiki pour Tweekers

Le principe du site Tweekers se rapproche grandement d'un Wiki avec quelques fonctionnalités en plus (état d'avancement des articles). C'est pourquoi j'avais décidé de partir sur une nouvelle base pour le site en utilisant le moteur MediaWiki utilisé sur Wikipedia pour ne citer que le plus important. Après avoir testé MediaWiki sur un serveur local j'ai rencontré plusieurs obstacles : Le premier est a considérer plus comme un défi, il s'agit de rajouter au moteur mediawiki les fonctions nécessaires au fonctionnement de Tweekers, ainsi qu'une bonne dose de customisation des feuilles de styles CSS (ne voulant pas faire un autre Wikipedia-like de plus sur le net). Le fait de contribuer pas le biais de plugins et de skins CSS est une chose interessante mais le 2ème obstacle rencontré m'a fait abandonner l'espoir d'utiliser MediaWiki (pour l'instant). Tweekers est hébergé sur Free ,qui est a ma connaissance le seul hébergeur gratuit, proposant PHP et SQL sans pubs. Free est un bon hébergeur mais comporte des limites : S'il est possible d'installer DotClear qui fait tourner ce blog ou un forum Invison Power Board , il ne peut pas en faire de même avec MediaWiki. La dernière version nécessite PHP5, Free n'offre que PHP4. Idem pour les version requises pour MySQL, Free est a la traine. Tant pis, j'ai abandonné l'idée d'utiliser la dernière version de MediaWiki et je me suis dirigé vers la 1.6 (encore maintenue contre les bugs de sécurité) . L'installation se passe un peu mieux : les versions de PHP / MySQL sont suffisantes mais je dois faire face a d'autres problèmes. Ce wiki fait appel a des fonctions Unix normalement présentes sur tout serveur (On comprends mieux si on cite la fonction diff qui compare 2 fichiers et affiche els différences, chose qui dans un wiki est indispensable pour l'historique). Bref je ne doute pas que les serveurs Free disposent de ces fonctions mais pas au niveau des abonnés. Je suppose que ceux ci fonctionnent dans un environnement restreint (chroot) et ne dispose que des commandes minimales. Je n'ai pas cherché plus loin , si je dois contribuer a l'évolution d'un logiciel libre, je tiens a le faire dans de bonnes conditions en utilisant la dernière version (d'ailleurs MediaWiki est passé en 1.8 hier). Pour l'instant retour au site d'origine et mise a jour prévue pour ce soir avec l'apparition de news.