Retourner en haut de la page Aller au bas de la page
Logo de mon site
Logo de mon site

Yasser Arafat

Item 1 Description

Yasser Arafat

Hugo Chávez

Item 1 Description

Hugo Chávez

Mikhaïl Gorbatchev

Item 1 Description

Mikhail Sergueievitch Gorbatchev

L'Abbé Pierre

Item 1 Description

Abbe Pierre

Salvadore Allende

Item 1 Description

Salvadore Allende

Angela Yvonne Davis

Item 1 Description

Angela Yvonne Davis

Jean Moulin

Item 1 Description

Jean Moulin

Nelson Mandela

Item 1 Description

Nelson Mandela

Martin Luther King

Item 1 Description

Martin Luther King

Gamal Abdel Nasser

Item 1 Description

Gamal Abdel Nasser

Richard Stallman

Item 1 Description

Richard Stallman

Simone Veil

Item 1 Description

Simone Veil

Hand Shake

Item 1 Description

Hand Shake

Wangari Muta Maathai

Item 1 Description

Wangari Muta Maathai

Michel Colucci

Item 1 Description

Coluche

Mère Teresa

Item 1 Description

Mère Térésa

Charles de Gaulle

Item 1 Description

Charles de Gaulle

Che Guevara

Item 1 Description

Ernesto Rafael Guevara

Mohandas Gandhi

Item 1 Description

Mohandas Karamchand Gandhi

Lech Walesa

Item 1 Description

Lech Walesa

Linus Benedict Torvalds

Item 1 Description

Linus Benedict Torvalds

Sous-commandant Marcos

Item 1 Description

Sous commandant Insurge Marcos

Ahmed Shah Massoud

Item 1 Description

Ahmed Shah Massoud

Luxpopuli / eZ Publish / Extensions / eZ Publish : <i>Star Rating</i> - voter pour un article





Right menu

OBLIGATOIRE

Un professeur témoigne

La brigade canine dans un collège du Gers.
Réaction d'une internaute Québécoise:
«quand on est rendu à accepter que (...) les autorité mettent leurs sales pattes dans les culottes de vos enfants (...) il est temps (...) de vous réveiller.»
OBLIGATOIRE

Les mensonges de R. Dati

La note de recadrage statistique du sociologue L. Mucchielli recadre également les mensonges de la propagande sécuritaire dont on nous rabat les oreilles depuis déjà trop longtemps et dont les mineurs de France sont à présents la cible.
Le rapport de L. Mucchielli
OBLIGATOIRE

L'aveu de Jean-Marc Sylvestre

«Le système financier s'effondre aujourd'hui comme un jeu de carte... parce que... il a été géré d'une part.... par les États-Unis sans règle... et il a été d'autre part géré... par une bande de voyous... qui se sont gouinfrés... au détriment des autres.»
VOIR LES VIDÉOS

OBLIGATOIRE

prev prev prev prev


eZ Publish : Star Rating - voter pour un article

Date de publication: le Lundi 19 Octobre 2009 à 15h37
Dernière modification: par Pascal BOYER le Dimanche 28 Février 2010 à 15h12
« Article précédent: eZ Publish : bpce_backupbdd - sauvegarde automatique de la base de données
» Article suivant: eZ Publish : eZ Multiupload - multitéléchargement d'objets

Cet article décrit l'installation de l'extension ezstarrating permettant aux visiteurs d'attribuer une «note» (ou une évaluation) à un article ou tout objet affichant cette extension.

Une image valant... voici à quoi ressemble cette extension:

Fig. 0: l'extension Star Rating en action

I - Contexte d'installation

Il s'agit ici de la mise en oeuvre de ezstarrating sur un site eZ Publish 4.2.0 dont l'installation initiale est réalisée sur la base du type Plain. En effet, lorsque eZ Publish est installé autour des extensions eZ Flow ou eZ Webin, alors ezstarrating fonctionne par défaut (ne reste que les droits à affecter).

Dans la suite de l'article on supposera:

  • que le site public est plain_site (design/plain_site/)
  • que vous avez les droits suffisants pour modifier les templates, installer des archives sur le serveur, etc...

:
L'extension Star Rating fonctionne, entre autres, avec l'extension PHP Json. Cette extension fait partie de PHP depuis la version 5.2.0. Si vous placez un script info.php à la racine de votre répertoire d'installation de eZ Publish, fichier contenant cette unique ligne:

<?php phpinfo(); ?>

son affichage doit renvoyer, en particulier, ceci:

Pour que le système ne vous renvoie pas un message d'erreur «Module non trouvé» lorsque vous essaierez d'afficher le fichier info.php (avec un URI du type http://monsite.fr/info.php) vous devez ajouter la règle de réécriture suivante au fichier de configuration du serveur Apache ou au fichier .htaccess:

RewriteRule ^info.php - [L]

II - Installation des extensions ezstarrating et ezjscore

:
La technique décrite ci-après n'est pas la seule possible. Elle présente en revanche l'avantage de découvrir, pour les non-initiés, certains aspects des tâches d'administration d'un site eZ Publish.
Par ailleurs, l'installation automatique à partir de l'interface d'administration, et pour un site de type plain, des deux packages ezstarrating_extension.ezpkg et ezjscore_extension.ezpkg s'est, dans mon cas, systématiquement soldée par un échec. Ceci explique également le choix de la procédure décrite ci-après.

Téléchargement des packages

Les deux packages ezstarrating_extension.ezpkg et ezjscore_extension.ezpkg nécessaires au bon fonctionnement de l'extension Star Rating peuvent être téléchargés à partir de cette page:

:
Les packages .ezpkg ne sont rien d'autres que des archives compressés au format .tar.gz

Répertoires d'installation des packages

Le répertoire général d'installation des packages est:

/var/storage/packages/eZ-systems

Par défaut, s'y trouve déjà installé le package plain_site.ezpkg:

/var/storage/packages/eZ-systems/plain_site

On commence donc par ce rendre dans le répertoire eZ-systems/:

cd var/storage/packages/eZ-systems

Puis on crée deux répertoires dont les noms reprennent ceux des deux packages:

mkdir ezstarrating_extension

mkdir ezjscore_extension

On copie/déplace ensuite chacun des packages dans son répertoire associé:

cp <chemin de téléchargement>/ezstarrating_extension.ezpkg ezstarrating_extension/

cp <chemin de téléchargement>/ezjscore_extension.ezpkg ezjscore_extension/

Installation du package ezstarrating_extension.ezpkg

cd ezstarrating_extension/

On renomme le package:

mv ezstarrating_extension.ezpkg ezstarrating_extension.tar.gz

Puis on extrait le contenu de l'archive:

tar zxfv ezstarrating_extension.tar.gz

Installation du package ezjscore_extension.ezpkg

cd ../ezjscore_extension/

On renomme le package:

mv ezjscore_extension.ezpkg ezjscore_extension.tar.gz

Puis on extrait le contenu de l'archive:

tar zxfv ezjscore_extension.tar.gz

Affecter le bon User et Group aux nouveaux répertoires et fichiers

En accord avec les valeurs des deux directives User et Group du fichier de configuration de Apache on modifie l'utilisateur et le groupe utilisateur de l'ensemble des nouveaux répertoires et fichiers que l'on vient de créer:

cd ..

chown -R www-data:www-data ezstarrating_extension

chown -R www-data:www-data ezjscore_extension

Installer/activer les deux packages

Il faut à présent installer/activer les deux packages à partir de l'interface d'administration.

Pour cela, laissez-vous guider par la suite de captures d'écran ci-dessous:

Fig. 1: Actions successives menant au contenu par défaut du dépôt de packages de eZ Publish

Fig. 2: Les deux nouveaux packages sont présents mais pas encore installés

La figure 3 est obtenue en cliquant directement sur le nom (lien ezjscore_extension) du package:

Fig. 3: Étape 1:2 d'installation du package. Cliquez sur Installer pour poursuivre.

Fig. 4: Étape 2:2 d'installation du package. Cliquez sur Installer paquetage pour lancer l'installation de l'extension ezjscore.

:
Cette deuxième étape va créer l'extension ezjscore dans le répertoire extension/ situé à la racine du répertoire d'installation de eZ Publish.

Fig. 5: Fin de l'installation du package. Tableau récapitulatif.

La même procédure doit être appliquée au package ezstarrating_extension.

Au final, vous devez obtenir ceci:

Fig. 6: Les deux packages sont à présent installés sur le système.

Activer les extensions

Une fois les deux packages et les deux extensions ezjscore et ezstarrating installés, il est nécessaire d'activer ces dernières. La figure 7 illustre la procédure à suivre:

Fig. 7: Les 5 étapes pour activer les deux nouvelles extensions et générer les tableaux d'autochargement afférents.

Cette étape terminée, le fichier de surcharge settings/override/site.ini.append.php contient ceci:

[ExtensionSettings]
ActiveExtensions[]=ezjscore   <==== CETTE LIGNE
ActiveExtensions[]=ezmultiupload
ActiveExtensions[]=ezodf
ActiveExtensions[]=ezoe
ActiveExtensions[]=ezstarrating   <==== CETTE LIGNE
ActiveExtensions[]=powercontent
ActiveExtensions[]=texttoimage_ext

Les deux extensions sont donc activées pour l'ensemble des siteaccess publics du site.

Pour ne les activer que pour certains des siteaccess publics, il faut supprimer les deux lignes indiquées ci-dessus et les reporter dans le fichier de surcharge site.ini.append.php propre à chacun de ces siteaccess.

III - Accorder les bons droits au rôle Anonymous

L'utilisation de l'extension ezstarrating, et donc la possibilité d'évaluer un article, est subordonnée à la mise en place de droits d'accès.

Par défaut, seuls les personnes connectées (ayant créé un compte) peuvent voter.

Pour que tous les visiteurs anonymes puissent noter les articles, les droits suivants doivent être affectés au rôle Anonymous:

Fig. 8: Accès à la liste des rôles de eZ Publish

En cliquant sur le lien Anonymous on passe à l'étape suivante:

Fig. 9: Les droits en vigueur du rôle Anonymous. Pour en ajouter ou les modifier, cliquer sur Modifier.

Fig. 10: Cliquer sur Nouvelle politique de sécurité pour passer à l'étape de la figure 11

Fig. 11: Sélectionner le module ezjscore et accorder l'accès à toutes les fonctions (call + run)

Fig. 12: Les nouveaux droits ajoutés, valider en cliquant sur OK

Fig. 13: Tableau récapitulatif des droits associés au groupe Anonymous.

IV - Créer les tables

L'extension ezstarrating utilise deux nouvelles tables qu'il faut bien sûr créer:

mysql -u <user> -p<mot_de_passe> <nom_de_la_base_de_donnees> < extension/ezstarrating/sql/mysql/mysql.sql

Les deux nouvelles tables créées sont:

  • ezstarrating
  • ezstarrating_data

V - Modifier la classe article

Avant d'être en mesure d'afficher l'extension sur le site public, encore faut-il qu'une classe d'objet contienne un attribut basé sur le datatype Star Rating.

Pour l'exemple, nous allons modifier la classe article fournie par défaut par eZ Publish. Cette modification consiste en l'ajout d'un nouvel attribut:

Fig. 14: Accéder à la liste des classes d'objet et lancer la vue d'édition (modification) de la classe article

Fig. 15: Sélectionner le datatype Star Rating et l'ajouter

Fig. 16: Définir l'identifiant de l'attribut (ici star_rating) et valider (bouton OK)

:
Le choix de star_rating comme identifiant évite de devoir modifier par la suite le template d'affichage du datatype Star Rating.

VI - Créer un article

A présent que la classe article est modifiée, il faut créer un nouvel article:

Fig. 17: Affichage de l'attribut Sart Rating lors de l'édition du nouvel article

Par défaut, le template utilisé pour afficher les articles sur le site public:

design/base/override/templates/full/article.tpl

ne produira évidemment aucun affichage de l'extension ezstarrating.

Il faut donc commencer par ajouter (aux alentours de la ligne 35) ces trois lignes à ce template:

<div class="attribute-star-rating">
    {attribute_view_gui attribute=$node.data_map.star_rating}
</div>

Pensez à vider les caches une fois le template article.tpl modifié.

VII - Le template d'affichage du datatype Star Rating

Il s'agit du template:

extension/ezstarrating/design/plain_site/templates/content/datatype/view/ezsrrating.tpl

Pour s'assurer que le système trouve tous les templates relatifs au datatype Star Rating, on va copier l'ensemble des templates dans le design public:

cp -Rp extension/ezstarrating/design/standard/templates/content/datatype/ design/plain_site/templates/

On vide les caches et on affiche le nouvel article:

Fig. 18: Affichage de l'attribut Star Rating sans javascript, ni style CSS ni image

La figure18 illustre l'absence de trois types d'éléments nécessaires au fonctionnement correct de l'extension:

  • les styles CSS
  • les images
  • les javascripts

La feuille de style

Il faut la copier dans le siteaccess public:

cp -p extension/ezstarrating/design/standard/stylesheets/star_rating.css design/plain_site/stylesheets/

Si on utilise le template pagelayout.tpl par défaut, à savoir:

design/base/templates/pagelayout.tpl

on remarque que celui-ci contient, dans son en-tête, les lignes suivantes:

17     {section var=css_file loop=ezini( 'StylesheetSettings', 'CSSFileList', 'design.ini' )}
18         @import url({concat( 'stylesheets/', $css_file )|ezdesign});
19     {/section}
20 </style>

indiquant qu'il recherche la liste des feuilles de styles définie dans le fichier design.ini (ou dans l'une de ses surcharges).

Donc, dans le fichier de surcharge suivant:

settings/siteaccess/plain_site/design.ini.append.php

on ajoute la ligne suivante:

[StylesheetSettings]
CSSFileList[]
CSSFileList[]=star_rating.css   <== CETTE LIGNE

:
Il est préférable de modifier ainsi la ligne 18 (voir cet article) du template pagelayout.tpl (il faut alors sortir les lignes 17, 18 et 19 des balises <style type="text/css"></style>):

18      <link rel="stylesheet" href={concat( 'stylesheets/', $css_file )|ezdesign} type="text/css" media="screen" />

Les images des étoiles

Comme pour les feuilles de styles, faire une copie des images utilisées dans le siteaccess public:

cp -p extension/ezstarrating/design/standard/images/star.gif design/plain_site/images/

Les javascripts

Dans l'en-tête du template pagelayout.tpl il faut inclure le template suivant (par exemple juste après la ligne «{include uri="design:page_head.tpl"}»):

{include uri="extension/ezjscore/design/ezwebin/templates/page_head_script.tpl"}

L'unique ligne de ce template est très importante car elle permet de télécharger tous les javascripts nécessaires au bon fonctionnement de l'extension:

1 {* Load JavaScript dependencys + JavaScriptList *}
2 {ezscript_load( ezini( 'JavaScriptSettings', 'JavaScriptList', 'design.ini' ) )}

Enfin, il faut récupérer le javascript suivant (normalement, la ligne 2 ci-dessus doit permettre d'éviter cette étape):

http://real.us.yimg.com/lib/yui/2.7.0/build/yahoo-dom-event/yahoo-dom-event.js

que l'on placera, par exemple, à la racine du répertoire design/plain_site/javascript/ (ce javascript est normalement présent dans le package ezwebin_site.ezpkg).

Ne reste plus qu'à renseigner le fichier de surcharge settings/siteaccess/plain_site/design.ini.append.php de la sorte:

[JavaScriptSettings]
JavaScriptList[]=yahoo-dom-event.js

Vider tous les caches.

Fig. 19: Résultat final !

VIII - Francisation

Les messages renvoyés par l'extension ne sont pas traduits en français. C'est donc dans le template:

design/plain_site/templates/content/datatype/view/ezsrrating.tpl

qu'il faut les modifier pour les obtenir en français.

Le code par défaut est:

{'Rating: %current_rating/5'|i18n('extension/ezstarrating/datatype', '', hash( '%current_rating', concat('<span id="ezsr_average_', $attribute.id, '" class="ezsr-average-rating">', $rating.rounded_average|wash, '</span>') ))}
({'%rating_count votes cast'|i18n('extension/ezstarrating/datatype', '', hash( '%rating_count', concat('<span id="ezsr_total_', $attribute.id, '">', $rating.rating_count|wash, '</span>') ))})
<p id="ezsr_just_rated_{$attribute.id}" class="ezsr-just-rated hide">{'Thank you for rating!'|i18n('extension/ezstarrating/datatype', 'When rating')}</p>
<p id="ezsr_has_rated_{$attribute.id}" class="ezsr-has-rated hide">{'You have already rated this page, you can only rate it once!'|i18n('extension/ezstarrating/datatype', 'When rating')}</p>
<p id="ezsr_changed_rating_{$attribute.id}" class="ezsr-changed-rating hide">{'Your rating has been changed, thanks for rating!'|i18n('extension/ezstarrating/datatype', 'When rating')}</p>

que l'on peut modifier en:

{'Note: %current_rating/5'|i18n('extension/ezstarrating/datatype', '', hash( '%current_rating', concat('<span id="ezsr_average_', $attribute.id, '" class="ezsr-average-rating">', $rating.rounded_average|wash, '</span>') ))}
({'%rating_count vote(s) exprimé(s)'|i18n('extension/ezstarrating/datatype', '', hash( '%rating_count', concat('<span id="ezsr_total_', $attribute.id, '">', $rating.rating_count|wash, '</span>') ))})
<p id="ezsr_just_rated_{$attribute.id}" class="ezsr-just-rated hide">Merci pour votre évaluation</p>
<p id="ezsr_has_rated_{$attribute.id}" class="ezsr-has-rated hide">Vous avez déjà évalué cet article. Vous ne pouvez le faire qu'une seule fois.</p>
<p id="ezsr_changed_rating_{$attribute.id}" class="ezsr-changed-rating hide">Votre évaluation à bien été modifiée.</p>
Lien vers l'article précédent
eZ Publish : bpce_backupbdd - sauvegarde automatique de la base de données
eZ Publish : eZ Multiupload - multitéléchargement d'objets
Lien vers l'article suivant

Commentaires