Planète

Par Marc Delnatte
Akabia

Contrôle d'entité sur Drupal 7

Le contrôleur d'entité Dans le hook entity_info, nous avons déclaré que nous utiliserions notre propre classe contrôleur. Autrement dit, nous devons à présent en fournir une. Toutefois, une classe contrôleur n'est pas nécessairement petite et, si elle n'est utilisée qu'à de rares occasions, il n'est pas souhaitable d'analyser ce code sur toutes les pages.

Tags: 

Désactiver le fil d'ariane

Un sentier dans une forêt

Les modules Custom Breadcrumbs et Disable Breacrumbs suffisent en règle générale à personnaliser finement son fil d'ariane. Parfois il peut être nécessaire ou plus simple de modifier directement le fil d'ariane au niveau du code php. Plusieurs fonctions sont utilisables selon les cas d'usage.

Thème 
Fil d'ariane
Drupal 7

Désactiver le fil d'ariane

Les modules Custom Breadcrumbs et Disable Breacrumbs suffisent en règle générale à personnaliser finement son fil d'ariane. Parfois il peut être nécessaire ou plus simple de modifier directement le fil d'ariane au niveau du code php. Plusieurs fonctions sont utilisables selon les cas d'usage.

Par badgones

jQuery et Drupal 7, TypeError is null ou TypeError: undefined is not a function

Si vous essayez de tester du code jQuery via Firebug ou la console de Chrome sur votre site Drupal 7, vous avez peut-être rencontré l'erreur suivante :
TypeError is null (Firefox)
TypeError: undefined is not a function (Chrome)

En fait, depuis la version 7 de Drupal, il faut redéclarer la fonction $ pour tester du code :

(function ($) {
  $('#toto').hide();
// END jQuery
})(jQuery);

C'est pareil pour tous les fichiers Javascript des modules. 

(function ($) {
    $(document).ready(function() {
       $('#toto').hide();
    });
// END jQuery
})(jQuery);

Par j0nathan

Se former avec nous! Nous annoncons nos formations en vedette ce printemps.

Notre fameuse formation en CSS/Theming Drupal pour débutants est de retour ce printemps!

Nos formations visent à initier les gens de niveau débutant à intermédiaire à ce système de gestion de contenu et à favoriser votre appropriation des dernières technologies en gestion de sites web.

Durant le cours, nos formateurs vous aiderons à comprendre les notions de base de la communauté Drupal, le css, l'installation et la configuration des thèmes Drupal pour donner un look sur mesure à votre site.

Les places sont limitées: réservez la vôtre aussitôt que possible!

Notez que les formations sont offertes en français, mais quelques ressources et parties peuvent être disponibles en anglais. Des sessions en anglais pourront être organisées selon l'intérêt manifesté.

Les cours auront lieu au local de Koumbit.

HTML / CSS et theming Drupal pour débutants

Suivez avec nous la création d'un look unique pour un site web Drupal. Nous apprendrons tout le processus de création d'un thème, cheminant ensemble pendant la transformation d'une maquette en un thème Drupal. En plus des défis uniques au theming dans Drupal, nous aborderons les derniers standards Web et leurs défis: CSS 3 et HTML 5. Selon les besoins et envies des participants, nous pourrons aussi aborder quelques pratiques plus avancées, par exemple, des "sprites," ou un bref introduction au theming mobile.

Suite à cette formation vous serez être en mesure de :

  • Créer un thème Drupal fonctionnel à partir d'une maquette.
  • Connaître et appliquer les bonnes pratiques en theming.
  • Connaître les pièges les plus importants (et idéalement les éviter)
  • Connaître les outils pratiques pour l'intégration.

Connaissances requises :

  • Connaissances de base en HTML et CSS (c'est à dire: savoir ce que c'est!). Nous allons revoir les notions de base si besoin est.

Profs

Lydie Servanin, intégratrice et Heidi Strohl, graphiste

Coût

375$ pour trois cours/ateliers de 4 heures chaque.

Dates

  • 18 mai, 10h à 14h30
  • 25 mai, 10h à 14h30
  • 1 juin, 10h à 14h30
  • Note : nous prenons une heure de pause pour le repas.

Details

  • Voir le plan de cours
  • Inscrivez-vous! (Limite de 8 participant(e)s) N'oubliez pas de nous laisser savoir si vous avez une requête particulière que vous voulez traiter durant la formation.
Par j0nathan

Se former avec nous! Nous annoncons nos formations en vedette ce printemps.

Notre fameuse formation en CSS/Theming Drupal pour débutants est de retour ce printemps!

Nos formations visent à initier les gens de niveau débutant à intermédiaire à ce système de gestion de contenu et à favoriser votre appropriation des dernières technologies en gestion de sites web.

Durant le cours, nos formateurs vous aiderons à comprendre les notions de base de la communauté Drupal, le css, l'installation et la configuration des thèmes Drupal pour donner un look sur mesure à votre site.

Les places sont limitées: réservez la vôtre aussitôt que possible!

Notez que les formations sont offertes en français, mais quelques ressources et parties peuvent être disponibles en anglais. Des sessions en anglais pourront être organisées selon l'intérêt manifesté.

Les cours auront lieu au local de Koumbit.

HTML / CSS et theming Drupal pour débutants

Suivez avec nous la création d'un look unique pour un site web Drupal. Nous apprendrons tout le processus de création d'un thème, cheminant ensemble pendant la transformation d'une maquette en un thème Drupal. En plus des défis uniques au theming dans Drupal, nous aborderons les derniers standards Web et leurs défis: CSS 3 et HTML 5. Selon les besoins et envies des participants, nous pourrons aussi aborder quelques pratiques plus avancées, par exemple, des "sprites," ou un bref introduction au theming mobile.

Suite à cette formation vous serez être en mesure de :

  • Créer un thème Drupal fonctionnel à partir d'une maquette.
  • Connaître et appliquer les bonnes pratiques en theming.
  • Connaître les pièges les plus importants (et idéalement les éviter)
  • Connaître les outils pratiques pour l'intégration.

Connaissances requises :

  • Connaissances de base en HTML et CSS (c'est à dire: savoir ce que c'est!). Nous allons revoir les notions de base si besoin est.

Profs

Lydie Servanin, intégratrice et Heidi Strohl, graphiste

Coût

375$ pour trois cours/ateliers de 4 heures chaque.

Dates

  • 18 mai, 10h à 14h30
  • 25 mai, 10h à 14h30
  • 1 juin, 10h à 14h30
  • Note : nous prenons une heure de pause pour le repas.

Details

  • Voir le plan de cours
  • Inscrivez-vous! (Limite de 8 participant(e)s) N'oubliez pas de nous laisser savoir si vous avez une requête particulière que vous voulez traiter durant la formation.
Par badgones

Add css in the template.php file / Ajouter une css dans le fichier template.php

Having trouble using drupal_add_css with template_preprocess_page? Make sure you refresh the $variables['styles'] array:

function <a class="local active" title="Process variables for page.tpl.php" href="http://api.drupal.org/api/drupal/includes%21theme.inc/function/template_preprocess_page/6">template_preprocess_page</a>(&amp;$variables) {<br />
&nbsp;&nbsp;&nbsp;&nbsp; <a class="local" title="Adds a CSS file to the stylesheet queue." href="http://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_add_css/6">drupal_add_css</a>('path/to/style.css');<br />
&nbsp;&nbsp;&nbsp;&nbsp; $variables['styles'] = <a class="local" title="Returns a themed representation of all stylesheets that should be attached to the page." href="http://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_get_css/6">drupal_get_css</a>();<br />
}
Par kgaut
Kevin Gautreau

Site mobile ou site responsive?

Actuellement la question qui revient souvent est doit-on faire un site mobile? Ou alors un site qui s'adapte au support sur lequel il est affiché (en utilisant par exemple le responsive design)

Les deux solutions ont leurs spécificités. Un site mobile sera plus pertinent dans le cas où l'ont offre une expérience ou un service sur mobile bien différent de celui qui est offert sur la version "normale" du site.

On peut citer par exemple le site d'un transporteur en commun, alors que le site normal affichera pleins d'informations rédactionnel, différents services... Le site mobile lui ce cloisonnera à fournir à l'utilisateur l'information dont il a besoin le plus rapidement possible et avec le moins de "fioritures".

 

Le site mobile de la sibra

Pour le cas d'un site plus redactionnel, tout le contenu, ou presque, est intéressant pour le mobinaute (qu'est-ce que je trouve ce terme con...) donc on ne va pas réduire l'offre de services entre la version normale et la version mobile.

Par contre on va tendre à améliorer l'expérience sur mobile. C'est à dire, pas d'images lourdes, pas trop d'animations, une interface alègée et simplifiée.

 

Un exemple de site "responsive"

C'est là que le responsive design prend tout son sens. Suivant la résolution d'écran de l'utilisateur, on utilisera une feuille de style x ou y par exemple. Vous pouvez essayer ici même, en réduisant la fenêtre de votre navigateur, vous devriez voir au fur et à mesure de légères adaptation : la taille de police qui diminue, les images qui feront au maximum la largeur de l'écran...

Les avantages de cette technique sont nombreux : un même site, un même contenu pour une multitude de support : tablettes, smartphones...

Quelques articles traitant du responsive design :

Et pour faire du responsive design avec Drupal, rien ne vaut le thème Omega, mais j'aurai l'occasion d'en reparler.

Par kgaut
Kevin Gautreau

Site mobile ou site responsive?

Actuellement la question qui revient souvent est doit-on faire un site mobile? Ou alors un site qui s'adapte au support sur lequel il est affiché (en utilisant par exemple le responsive design)

Les deux solutions ont leurs spécificités. Un site mobile sera plus pertinent dans le cas où l'ont offre une expérience ou un service sur mobile bien différent de celui qui est offert sur la version "normale" du site.

On peut citer par exemple le site d'un transporteur en commun, alors que le site normal affichera pleins d'informations rédactionnel, différents services... Le site mobile lui ce cloisonnera à fournir à l'utilisateur l'information dont il a besoin le plus rapidement possible et avec le moins de "fioritures".

 

Le site mobile de la sibra

Pour le cas d'un site plus redactionnel, tout le contenu, ou presque, est intéressant pour le mobinaute (qu'est-ce que je trouve ce terme con...) donc on ne va pas réduire l'offre de services entre la version normale et la version mobile.

Par contre on va tendre à améliorer l'expérience sur mobile. C'est à dire, pas d'images lourdes, pas trop d'animations, une interface alègée et simplifiée.

 

Un exemple de site "responsive"

C'est là que le responsive design prend tout son sens. Suivant la résolution d'écran de l'utilisateur, on utilisera une feuille de style x ou y par exemple. Vous pouvez essayer ici même, en réduisant la fenêtre de votre navigateur, vous devriez voir au fur et à mesure de légères adaptation : la taille de police qui diminue, les images qui feront au maximum la largeur de l'écran...

Les avantages de cette technique sont nombreux : un même site, un même contenu pour une multitude de support : tablettes, smartphones...

Quelques articles traitant du responsive design :

Et pour faire du responsive design avec Drupal, rien ne vaut le thème Omega, mais j'aurai l'occasion d'en reparler.

Par kgaut
Kevin Gautreau

Spam, drupal et Mollom...

Lors de la mise à jour du site, j'ai désactivé temporairement le système antispam pour les commentaires et le formulaire de contact.

En deux heures voila le résultat dans ma boite mail :

Drupal sans Mollom

Du coup je ne peux que trop vous recommander Mollom pour protéger votre site drupal contre le spam.

Par kgaut
Kevin Gautreau

Spam, drupal et Mollom...

Lors de la mise à jour du site, j'ai désactivé temporairement le système antispam pour les commentaires et le formulaire de contact.

En deux heures voila le résultat dans ma boite mail :

Drupal sans Mollom

Du coup je ne peux que trop vous recommander Mollom pour protéger votre site drupal contre le spam.

Par kgaut
Kevin Gautreau

Mise à jour du site

Avec un peu de motivation et un bon weekend de travail, j'ai (enfin) effectué la migration du site depuis drupal 6 vers drupal 7, la dernière version du cms.

J'en ai profité pour revoir rapidement le thème, rester dans le sobre, mais le moderniser un peu et le rendre "responsive" (qu'il s'adapte au support sur lequel il est vu (mobile, tablette, pc...), pour cela j'ai utilisé le "base theme" Omega pour drupal.

Je vais maintenant essayer de poster plus fréquement ici.

 

Tags: 

Par kgaut
Kevin Gautreau

Mise à jour du site

Avec un peu de motivation et un bon weekend de travail, j'ai (enfin) effectué la migration du site depuis drupal 6 vers drupal 7, la dernière version du cms.

J'en ai profité pour revoir rapidement le thème, rester dans le sobre, mais le moderniser un peu et le rendre "responsive" (qu'il s'adapte au support sur lequel il est vu (mobile, tablette, pc...), pour cela j'ai utilisé le "base theme" Omega pour drupal.

Je vais maintenant essayer de poster plus fréquement ici.

 

Tags: 

Par juliendubreuil
julien dubreuil
Drupal since 2009

DrupalEveryDay un petit service pour apprendre un peu plus chaque jour

Cela fait quelques mois maintenant que Drupal 7 est arrivé, de nouveaux concepts sont apparus, de nouvelles API ont été mises en place et beaucoup de hooks ont été modifiés.

Comme pas mal de monde, j’ai lu plein d’articles sur Internet mais aujourd’hui encore j’ai l’impression de n’avoir découvert qu’une petite partie des nouvelles fonctionnalités. Forcément j’ai du passer à côté de certaines choses, du coup j’ai cherché une façon de découvrir l’api en profondeur.
L’idée m’est venue d’un calendrier d’énigmes que l’on m’a offert à noël (merci belle-sœur), où chaque jour vous retrouvez une nouvelle devinette à affronter. A ce moment la, je me suis dit pourquoi ne pas faire la même chose avec l’api de Drupal7, chaque jour un nouveau truc à apprendre.
Au début je pensais faire cela uniquement pour moi mais après réflexion je me suis dis que cela pourrait être utile à l’ensemble de la communauté et ce qui prouve que je ne me suis pas trompé, c’est que les premiers échos sont positifs.

J’ai donc crée drupaleveryday.com dont le principe est vraiment basique, puisque chaque jour, 4 fonctions piochées au hasard sont affichées sur le site et publiées sur Twitter. Sur chacune des fonctions vous avez la possibilité de voter en positif ou en négatif selon si vous trouvez cette fonction utile ou non. S’il y a suffisamment de vote on pourrait imaginer plein de choses, comme des quizz et des best-of, donc à vos votes :p

Ce service n’a pas pour but de concurrencer l’api officielle, la documentation et les commentaires doivent rester là bas! Ceci est juste une petite contribution de ma part pour l’écosystème Drupal. N’étant pas graphiste j’ai fait de mon mieux :) néanmoins si une âme charitable pouvait me donner un coup de main sur la mise en forme et l’harmonisation du contenu ça ne serait pas de refu.

Que vous trouviez cette idée utile ou non, n’hésitez pas à me contacter pour me faire part de vos avis, de vos remarques et de comment améliorer ce site web.

Je profite aussi de ce billet pour remercier Opi pour le coup de main sur les media queries !

Cet article DrupalEveryDay un petit service pour apprendre un peu plus chaque jour est apparu en premier sur Julien Dubreuil.

Par juliendubreuil
julien dubreuil
Drupal since 2009

DrupalEveryDay un petit service pour apprendre un peu plus chaque jour

DrupalEveryDay un petit service pour apprendre un peu plus chaque jour

Cela fait quelques mois maintenant que Drupal 7 est arrivé, de nouveaux concepts sont apparus, de nouvelles API ont été mises en place et beaucoup de hooks ont été modifiés.

Comme pas mal de monde, j’ai lu plein d’articles sur Internet mais aujourd’hui encore j’ai l’impression de n’avoir découvert qu’une petite partie des nouvelles fonctionnalités. Forcément j’ai du passer à côté de certaines choses, du coup j’ai cherché une façon de découvrir l’api en profondeur.
L’idée m’est venue d’un calendrier d’énigmes que l’on m’a offert à noël (merci belle-sœur), où chaque jour vous retrouvez une nouvelle devinette à affronter. A ce moment la, je me suis dit pourquoi ne pas faire la même chose avec l’api de Drupal7, chaque jour un nouveau truc à apprendre.
Au début je pensais faire cela uniquement pour moi mais après réflexion je me suis dis que cela pourrait être utile à l’ensemble de la communauté et ce qui prouve que je ne me suis pas trompé, c’est que les premiers échos sont positifs.

J’ai donc crée drupaleveryday.com dont le principe est vraiment basique, puisque chaque jour, 4 fonctions piochées au hasard sont affichées sur le site et publiées sur Twitter. Sur chacune des fonctions vous avez la possibilité de voter en positif ou en négatif selon si vous trouvez cette fonction utile ou non. S’il y a suffisamment de vote on pourrait imaginer plein de choses, comme des quizz et des best-of, donc à vos votes :p

Ce service n’a pas pour but de concurrencer l’api officielle, la documentation et les commentaires doivent rester là bas! Ceci est juste une petite contribution de ma part pour l’écosystème Drupal. N’étant pas graphiste j’ai fait de mon mieux :) néanmoins si une âme charitable pouvait me donner un coup de main sur la mise en forme et l’harmonisation du contenu ça ne serait pas de refu.

Que vous trouviez cette idée utile ou non, n’hésitez pas à me contacter pour me faire part de vos avis, de vos remarques et de comment améliorer ce site web.

Je profite aussi de ce billet pour remercier Opi pour le coup de main sur les media queries !

Par bisonbleu

How to add Javascript in Drupal 7 with jQuery

Comment ajouter du Javascript dans Drupal 7

Il est parfois utile d'ajouter un peu de javascript à une page pour améliorer le UX. J'ai cru que ce serait facile. Mais non. En outre, c'est différent selon qu'on est dans Drupal 6 ou Drupal 7. Prenons un exemple. Que diriez-vous d'un javascript qui permet de révéler ou masquer un ou plusieurs paragraphes dans un tiroir? Vous trouverez de nombreux exemples en effectuant une recherche sur Google. Voici celui que j'ai retenu et légèrement adapté pour les besoins du tutoriel.

ren.admin
dim 06/09/2015 - 17:49

Par juliendubreuil
julien dubreuil
Drupal since 2009

Drupal et les tâches planifiées

Pour exécuter des tâches récurrentes et automatisées, il existe un utilitaire commun à toutes les distributions Unix nommé Cron. Cet outil est vraiment pratique puisqu’il permet l’exécution d’un script à un moment précis. Vous pouvez par exemple lancer un script toutes les 5 minutes ou encore tous les lundi à 21h, les possibilités sont immenses.

Pour bien comprendre comment cela fonctionne je vous invite à lire la doc disponible sur wikipedia

Exécuter la cron de Drupal 7

Pour les versions antérieurs à Drupal 7 il était simple de l’exécuter, il suffisait simplement d’accéder à l’url exemple.fr/cron.php pour lancer le déclenchement. Depuis Drupal 7 il est nécessaire d’ajouter un paramètre supplémentaire à l’adresse, à savoir « cron_key ». Cette option n’est autre qu’un token unique d’authentification qui permet de ne restreindre le déclenchement du service Cron qu’à ceux qui possède cette clé.

Si comme moi vous avez cherché où pouvait bien se trouver cette clé, sachez que pour la récupérer il suffit de se rendre sur le tableau de bord d’administration du site à l’adresse “admin/reports/status”. Vous trouverez une ligne, dans le tableau de votre site, dédiée au Cron, vous indiquant la dernière date à laquelle le service a été exécuté ainsi que l’url pour l’exécuter et c’est cette url que vous devez récupérer.

Vous pouvez déclencher le Cron directement depuis votre navigateur en collant cette adresse ou via un script en accédant à cette adresse grâce à la commande wget.

0 2 * * * wget -O - -q -t 1 http://exemple.com/cron.php?cron_key=obwzqaAADCi-POSvSnVX3LayhESdCy7Dsdw4DQsYr

Exécuter la cron Drupal 7 chez OVH

J’ai découvert il y a peu qu’OVH proposait la possibilité aux hébergements mutualisés d’utiliser le service de Cron du serveur pour déclencher des tâches plannifiées.

Pour configurer celui-ci, rendez-vous dans l’interface d’administration de votre manager OVH et cliquez sur le Planificateur de tâches.

Comme vous pouvez le constater, il faut spécifier le chemin d’un fichier qui contiendra nos scripts d’exécution. Dans mon cas, j’ai créé un fichier à la racine de mon serveur nommé cronscript.php dans lequel j’ai ajouté le code suivant afin de déclencher les tâches plannifiées de Drupal.

system('/usr/bin/wget -O - -q http://www.exemple.comain.com/cron.php?cron_key=rGcinK08iqoZq-XyL2DibY...')

Du coup, dans l’interface de manager OVH, il ne vous reste plus qu’à spécifier le chemin de votre fichier (/www/cronscript.php pour moi) et à définir la périodicité à laquelle il doit être lancé.

Cet article Drupal et les tâches planifiées est apparu en premier sur Julien Dubreuil.

Par juliendubreuil
julien dubreuil
Drupal since 2009

Drupal et les tâches planifiées

Drupal et les tâches planifiées

Pour exécuter des tâches récurrentes et automatisées, il existe un utilitaire commun à toutes les distributions Unix nommé Cron. Cet outil est vraiment pratique puisqu’il permet l’exécution d’un script à un moment précis. Vous pouvez par exemple lancer un script toutes les 5 minutes ou encore tous les lundi à 21h, les possibilités sont immenses.

Pour bien comprendre comment cela fonctionne je vous invite à lire la doc disponible sur wikipedia

Exécuter la cron de Drupal 7

Pour les versions antérieurs à Drupal 7 il était simple de l’exécuter, il suffisait simplement d’accéder à l’url exemple.fr/cron.php pour lancer le déclenchement. Depuis Drupal 7 il est nécessaire d’ajouter un paramètre supplémentaire à l’adresse, à savoir “cron_key”. Cette option n’est autre qu’un token unique d’authentification qui permet de ne restreindre le déclenchement du service Cron qu’à ceux qui possède cette clé.

Si comme moi vous avez cherché où pouvait bien se trouver cette clé, sachez que pour la récupérer il suffit de se rendre sur le tableau de bord d’administration du site à l’adresse “admin/reports/status”. Vous trouverez une ligne, dans le tableau de votre site, dédiée au Cron, vous indiquant la dernière date à laquelle le service a été exécuté ainsi que l’url pour l’exécuter et c’est cette url que vous devez récupérer.

Vous pouvez déclencher le Cron directement depuis votre navigateur en collant cette adresse ou via un script en accédant à cette adresse grâce à la commande wget.


1
<span class='line'>0 2 * * * wget -O - -q -t 1 http://exemple.com/cron.php?cron_key<span class="o">=</span>obwzqaAADCi-POSvSnVX3LayhESdCy7Dsdw4DQsYr
</span>

Exécuter la cron Drupal 7 chez OVH

J’ai découvert il y a peu qu’OVH proposait la possibilité aux hébergements mutualisés d’utiliser le service de Cron du serveur pour déclencher des tâches plannifiées.

Pour configurer celui-ci, rendez-vous dans l’interface d’administration de votre manager OVH et cliquez sur le Planificateur de tâches.

Comme vous pouvez le constater, il faut spécifier le chemin d’un fichier qui contiendra nos scripts d’exécution. Dans mon cas, j’ai créé un fichier à la racine de mon serveur nommé cronscript.php dans lequel j’ai ajouté le code suivant afin de déclencher les tâches plannifiées de Drupal.


1
<span class='line'>system<span class="o">(</span><span class="s1">&#39;/usr/bin/wget -O - -q http://www.exemple.comain.com/cron.php?cron_key=rGcinK08iqoZq-XyL2DibY...&#39;</span><span class="o">)</span>
</span>

Du coup, dans l’interface de manager OVH, il ne vous reste plus qu’à spécifier le chemin de votre fichier (/www/cronscript.php pour moi) et à définir la périodicité à laquelle il doit être lancé.

Par bisonbleu

Uberdrupal: from distribution to profile - Part II

Uberdrupal: from distribution to profile - Part II

This is part 2 of Uberdrupal: from distribution to profile.

Druplicon with spiraly eyes In Part I of this post, I wrote about the context that led me investigate ways to speedup the installation of various Drupal websites.

Just as you might grab a napkin to sketch out an idea in your favorite joint or reach out for a pad of paper to test a concept with fellow developers at work, one often needs a fresh Drupal code-base (a Drupal napkin) to test and validate ideas. Practice makes perfect. If only installing a fresh Drupal code-base was as easy as grabbing a paper napkin under the glassy gaze of a disillusioned waitress... Actually, piece of cake! As we will soon see. Sort of.

ren.admin
jeu 26/01/2012 - 12:35

Pages