flosy.info | Développement Web, Open source …

Après avoir mis en place le plugin sfDoctrineGuard, je souhaitais disposer d’attributs complémentaires sur les utilisateurs.
Le plugin sfGuard pour symfony 1.0, disposait pour cela d’une classe liée Profile. Hors dans la version avec Doctrine ce n’est pas le cas.

Une première solution à ce problème aurait été d’utiliser la notion d’héritage proposée par Doctrine. Dans mon cas cela ne m’a pas paru utile car une seule classe dériverait de sfGuardUser.

La seconde solution est expliqué sur cette page http://www.symfony-project.org/gentle-introduction/1_4/en/17-Extending-Symfony dans le paragraphe Customizing the plug-in schema.
Nous allons tout simplement compléter (surcharger) le schéma de sfGuardUser (défini par dans le plugin) avec le schéma de notre projet. Ceci n’aura donc aucune influence sur le plugin en cas de mise à jour.

#Project schema,  config/doctrine/schema.yml
sfGuardUser:
  columns:
    phone:   varchar(30)
    fax:     varchar(30)
  relations:
    Companies:
      class: Company
      local: user_id
      foreign: company_id
      refClass: UserCompany

Vous noterez dans cet exemple qu’il est même possible d’ajouter de nouvelles relations.

Related Posts:

·

Avr/11

21

Contribuer à la traduction de KDE

Utilisateur de KDE depuis de nombreuses années, je me décide à contribuer au projet. Cela passera par la traduction de documentations d’applications.

Pour commencer

Pour commencer rendons-nous sur le site du projet francophone de traduction (http://fr.l10n.kde.org/).
La page d’accueil propose des liens pour consulter l’état des traductions des applications et des documentations. Nous choisissons la rubrique des documentations. Pour chacune d’elles nous voyons si elle est affectée à un traducteur et quel est son état d’avancement. Pensez à prendre contact les coordonnateurs pour réserver une traduction.

Commençons à traduire

La page qui donne l’état d’avancement des traductions permet de télécharger directement les fichiers de traduction. Une fois le fichier de traduction en votre possession lancez l’application Lokalize.
Bon je pourrais vous expliquer comment fonctionne Lokalize mais il y a déjà une très bonne documentation pour cela documentation de Lokalize.

Je vous recommande la lecture de la rubrique Outils du traducteur > Dictionnaire, elle vous apportera une aide précieuse.

Vérifions notre traduction

Installation de Pology

La traduction réalisée, il est fortement conseillé de procéder à différents contrôles, Pology va nous y aider. Pour l’installer il suffit de suivre ces instructions.

check_rules

La commande check_rules va vérifier si certaines erreurs courantes sont dans le fichier de traduction.

$ pology check_rules kiconedit.po 
----------------------------------------
Using internal rules for language 'fr'.
Loaded 208 rules.
kiconedit.po:146(#19)
#. Tag: para
#: index.docbook:85
#, no-c-format
msgid ""
"The Icon Editor window is separated in five areas: main toolbar, tools "
"toolbar, statusbar, color palette and the grid, where you paint the icon."
msgstr ""
"La fenêtre de l'éditeur d'icônes comporte cinq zones : la barre principale, "
"la barre d'outils,  la barre d'état, la  pallette de couleurs et la grille "
"où vous dessinez l'icône."
[note] rule [pattern=  +] ==> Ne jamais mettre plus d'une espace
----------------------------------------

Les erreurs sont expliquées et la traduction correspondante est affichée. Vous noterez le numéro entre parenthèses à côté du nom de fichier qui correspond au numéro de la chaine.

check_spell

Cette commande va nous permettre de vérifier l’orthographe des traductions du fichier.

$ pology check_spell kiconedit.po 
----------------------------------------
kiconedit.po:146(19)
Faulty word: pallette
Suggestions: palette, paletté, paletter, palettes, palettés, psallette, paillette, palmette, mallette, paulette, pellette, psallettes, paillettes, palettez, palettée, pailleté, palettai, palmettes, and ablette
----------------------------------------

Les erreurs sont également détaillées.

Envoyer votre travail

Si vous avez bien respecté ces règles, il est temps d’envoyer votre fichier de traduction au coordonnateur.

Astuces

Pour voir les dernières versions des documentations vous pouvez aller sur le site docs.kde.org. Si vous vous placez sur la version de développement vous trouverez toutes les documentations. Si vous vous placez dans la version stable seules les documentations de la version correspondante seront disponibles (Au moment de l’écriture de cet article par exemple, kdepim et les extragear ne sont pas disponibles dans la version 4.6 – stable).

Related Posts:

·

Pour un projet je souhaite pouvoir me connecter à 2 bases de données différentes. Voyons comment faire cela avec Doctrine.

Configuration des bases de données

Nous définissons une connexion pour chacune des bases dans le fichier /config/databases.yml.

all:
  main:
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:host=localhost;dbname=base_main'
      username: user
      password: password

  subsidiary:
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:host=localhost;dbname=base_subsidiary'
      username: user
      password: password

Définition du modèle

Nous créons ensuite notre schéma en précisant pour chaque classe du modèle la connexion à utiliser. Voici un exemple de schéma :

Utilisateur:
  connection: main
  columns:
    id:         { type: integer, primary: true, autoincrement: true }
    nom:        { type: string(255) }
    
Groupe:
  connection: subsidiary
  columns:
    id:         { type: integer, primary: true, autoincrement: true }
    nom:        { type: string(255) }

La commande de création du modèle va ajouter les tables dans leur base respective.

$ symfony doctrine:build --all

Vous noterez dans les classes de base du modèle la référence à la connexion.

1
2
3
< ?php
  // Connection Component Binding
  Doctrine_Manager::getInstance()->bindComponent('Groupe', 'subsidiary');

À partir de maintenant les données seront enregistrées dans les 2 bases de données.

Related Posts:

·

Récupération de LibreOffice

LibreOffice n’étant pas encore disponible sur la Fedora, il suffit de se rendre sur le site du projet et de télécharger les RPMs
http://www.libreoffice.org/download/.
Il y a 3 archives à récupérer :

  • LibO_3.3.1_Linux_x86_install-rpm_en-US.tar.gz
  • LibO_3.3.1_Linux_x86_langpack-rpm_fr.tar.gz
  • LibO_3.3.1_Linux_x86_helppack-rpm_fr.tar.gz

Installation

Après avoir décompressé les archives, placez-vous dans le dossier qui contient les RPMs.
La commande indiquée dans le fichier README pose un problème de signature dans mon cas :

# yum install *.rpm
...
Le paquet libobasis3.3-ooolinguistic-3.3.1-8.i586.rpm n'est pas signé

J’ai donc désactivé le contrôle :

# yum --nogpgcheck install *.rpm

Les applications devraient être présentes dans le menu « Applications/Bureautique » de KDE mais dans mon cas cela n’a pas fonctionné.
Après quelques recherches les applications se trouvent dans /opt/libreoffice/program/.

Il nous reste à installer les packages de traduction. Il suffit de se placer dans leur dossier RPMS et relancer la commande :

# yum --nogpgcheck install *.rpm

Et voilà vous avez maintenant un LibreOffice opérationnel en français.

Related Posts:

·

Mar/11

10

Lancement du site Symfony 2

Depuis quelques jours le nouveau site dédié à Symfony 2 est en ligne. Il comporte déjà une documentation très complète sur le sujet.
Pour ceux qui l’aurait raté voici la nouvelle url où trouver le projet http://symfony.com.

Related Posts:

Je souhaitais utiliser la méthode copy de Doctrine_Record pour dupliquer un objet et les objets auxquels il est associé.
Pour cela il suffit de placer le paramètre $deep de la méthode copy à true, du moins c’est ce que je pensais.
Pour que cela fonctionne il faut charger au préalable les relations qui nous intéressent. (C’est très bien expliqué dans cet article http://david-gueye.fr/2010/02/02/dupliquer-ou-cloner-un-objet-doctrine-record/).

Voici un petit exemple :

  $groupe = Doctrine_Core::getTable("Groupe")->find(1);
  $groupe->loadReference("Utilisateurs");
  $copieGroupe = $groupe->copy(true);
  $copieGroupe->save();

Related Posts:

WordPress et WordPress MU font plus qu’un. Nous allons voir comment mettre en place la version multisite avec la version 3.0.5.

Installation

Nous commençons par récupérer les sources de WP puis nous les décompressons dans le htdocs.
Nous installons ensuite WP de façon classique (Je ne détaille pas ces étapes, il suffit d’un bon RTFM).
Nous choisissons d’utiliser le NDD www.wordpress-ms.local, ce qui nous donne le virtualhost suivant :

<virtualhost *:80>
  ServerName www.wordpress-ms.local
  DocumentRoot "/var/www/html/wordpressMS"
</virtualhost>

Configuration

Nous allons suivre la procédure décrite dans le codex de wordpress http://codex.wordpress.org/Create_A_Network.

Modification du virtualhost

Nous modifions le virtualhost pour qu’il prenne en compte tous les sous domaines de wordpress_ms.local.

<virtualhost *:80>
  ServerName www.wordpress-ms.local
  ServerAlias *.wordpress-ms.local
  DocumentRoot "/var/www/html/wordpressMS"
</virtualhost>

Activation du multisite

Il faut ensuite ajouter le contenu suivant au fichier wp-config.php

  define('WP_ALLOW_MULTISITE', true);
 
  /* That's all, stop editing! Happy blogging. */

Suite à cet ajout vous devez trouver dans l’administration de WP une rubrique Tools > Network.

Installation du « Network »

Une mention nous recommande d’abandonner l’utilisation de www.wordpress-ms.local au profit de wordpress-ms.local.
Pour cela nous allons dans Settings > General et nous modifions « WordPress address (URL) » et « Site address (URL) ».

Nous revenons ensuite dans Tools > Network. Nous choisissons de gérer les sites de la plateforme à l’aide des sous domaines. Il reste à définir le titre de la plateforme et l’email de l’administrateur.
Nous lançons ensuite l’installation en cliquant sur Install.

Paramétrage du « Network »

Suite à l’installation une page nous indique la marche à suivre. Un contrôle est fait sur le domaine utilisé pour le réseau et dans mon cas il échoue (Ceci m’indique qu’il y a un problème de « wildcard DNS »). Si vous utilisez un domaine fictif comme dans cet exemple ne vous préoccupez pas de ce message.

Nous devons ensuite créer le répertoire wp-content/blogs.dir qui accueillera le contenu des différents blogs (Attention à bien donner les droits en écriture à Apache).

Nous modifions ensuite le fichier wp-config.php :

  define( 'MULTISITE', true );
  define( 'SUBDOMAIN_INSTALL', true );
  $base = '/';
  define( 'DOMAIN_CURRENT_SITE', 'wordpress-ms.local' );
  define( 'PATH_CURRENT_SITE', '/' );
  define( 'SITE_ID_CURRENT_SITE', 1 );
  define( 'BLOG_ID_CURRENT_SITE', 1 );
 
  /* That's all, stop editing! Happy blogging. */

Faites bien attention de placer le code PHP au dessus du commentaire indiqué et pas en fin de fichier. Vous gagnerez 2 bonnes heures passer à chercher quelle configuration du serveur ne convient pas. ;)

Enfin nous éditons le fichier .htaccess (dans mon cas le fichier n’existait pas).

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
 
# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
 
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]

Attention à bien activer le mod_rewrite d’Apache sous Fedora j’ai dû modifier la directive « AllowOverride » du htdocs. Éditez le fichier /etc/httpd/conf/httpd.conf :

<directory "/var/www/html">
...
    AllowOverride FileInfo
...
</directory>

Pour terminer l’installation il suffit de cliquer sur le lien « Log In » qui va déclencher la reconnexion.
Une fois reconnecté un nouveau menu « Super Admin » apparait au dessus du Dashboard et la plateforme est prête à être utilisée.

Related Posts:

·

Je suis à la recherche d’une bibliothèque PHP qui me permette de créer des documents PDF. Commençons par une recherche des plugins PDF existants.

Une recherche dans la base de symfony remonte les plugins suivants :

  • sfTCPDFPlugin utilisé par 85 personnes
  • pmPDFKitPlugin utilisé par 2 personnes

Le choix de la bibliothèque sera conditionné par les attentes suivantes :

  1. les fonctionnalités proposées (au moins la gestion des images, des listes et des tableaux),
  2. la simplicité d’utilisation,
  3. la rapidité de mise en œuvre.

sfTCPDFPlugin

Le plugin est dans une version stable (1.6.2) et il repose sur la bibliothèque TCPDF.

Installation et configuration

Le plugin s’installe classiquement avec la commande « symfony plugin:install ».

Attention le plugin ne fournit pas TCPDF et vous devez le récupérer sur sourceforge. La version 5.9.044 est utlisée pour ce test.

La configuration est faite au travers d’un fichier pdf_config.yml à placer dans le répertoire config de l’application.

Pour effectuer rapidement un test de la bibliothèque, un module est fourni avec 2 exemples. Nous allons activer ce module pour réaliser les tests. Nous éditons pour cela le fichier settings.yml.

all:
  .settings:
    # Default modules  
    enabled_modules: [default, sfTCPDF]

Lors de mes essais quelque soit l’exemple j’obtenais une erreur fatale.

Fatal error: Maximum execution time of 30 seconds exceeded

Après quelques recherches la solution au problème tient au paramétrage de l’option « font subset » (Vous trouverez d’autres conseils d’optimisation dans le forum : http://sourceforge.net/projects/tcpdf/forums/forum/435311/topic/3785743).

Pour mettre en place la correction, après avoir instancié la classe sfTCPDF, utilisez la méthode setFontSubsetting.

<?php
  //create new PDF document (document units are set by default to millimeters)
  $pdf = new sfTCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true);
 
  $pdf->setFontSubsetting(false);
  ...
?>

Fonctionnalités

TCPDF est particulièrement complète parmi toutes les fonctionnalités disponibles voici celles qui m’ont paru utiles.

  • Gestion des entêtes et pieds de page.
  • Gestion des tableaux.
  • Transformation HTML vers PDF
  • Gestion des graphiques
  • Gestion des tables des matières
  • Gestion des images

pmPDFKitPlugin

Le plugin est en version stable (1.0.0) et il repose sur la bibliothèque wkhtmltopdf.

Installation et configuration

Le plugin s’installe classiquement avec la commande « symfony plugin:install ».

Il faut là aussi télécharger la bibliothèque tierce à cette adresse : http://code.google.com/p/wkhtmltopdf/downloads/list.

Ensuite nous activons le filtre du plugin dans le fichier filters.yml de l’application.

rendering: ~
security:  ~
 
# insert your own filters here
pm_pdfkit:
  class: pmPDFKitFilter
 
cache:     ~
execution: ~

Pour le paramétrage de l’application nous modifions la taille de la page pour qu’elle soit au format A4.

all:
  pm_pdfkit:
    page-size: A4

Enfin il faut modifier le fichier routing.yml de l’application pour prendre en compte les formats.

default_index:
  url:   /:module.:sf_format
  param: { action: index, sf_format: html }
 
default:
  url:   /:module/:action.:sf_format/*
  param: { sf_format: html }

Ceci permet de déclencher la génération PDF d’une action, à l’utilisation de du format pdf. Par exemple http://flosy.info/default/index.pdf.

Fonctionnalités

Le plugin transforme tout simplement une action en document PDF. Le plugin semble avoir un bug au niveau des CSS et des images.

Autres bibliothèques

En plus de ces 2 plugins et de leur bibliothèque respective, il sera intéressant de tester le composant Zend_Pdf du Zend Framework.

Related Posts:

· · · · ·

Symfony fournit au travers de la ligne de commande différentes opérations d’administration pour son projet. Elles utilisent les couleurs pour faciliter la lecture. Mais car il y a un mais, la configuration par défaut de la Fedora 14 ne restitue pas les couleurs.
Pour que cela fonctionne il faut installer le paquet suivant :

# yum install php-process

Related Posts:

· ·

Après avoir installé la Fedora 14, la correction orthographique ne fonctionnait pas sous Kmail. Pour la faire fonctionner placez-vous dans la configuration du système.

Allez ensuite dans Localisation puis dans Correcteur orthographique. Pour ma part la langue choisie était « Français ». Il m’a suffi de la placer sur « Français (France) » pour que la correction orthographique fonctionne.

Related Posts:

· ·

<< Latest posts

Older posts >>

Theme Design by devolux.nh2.me