http://www.jouvinio.net/wiki/index.php?title=W4G_Rating_Bar&feed=atom&action=historyW4G Rating Bar - Historique des versions2024-03-28T16:42:17ZHistorique pour cette page sur le wikiMediaWiki 1.26.4http://www.jouvinio.net/wiki/index.php?title=W4G_Rating_Bar&diff=15862&oldid=prevEtienne le 17 mai 2018 à 12:362018-05-17T12:36:12Z<p></p>
<p><b>Nouvelle page</b></p><div>== [[File:Hand-icon.png|link=]] Votre avis ==<br />
{|<br />
|{{#w4grb_rate:}}<br />
|style="padding: 0 0 1em 30px;"|{{#TwitterFBLike:|}}<br />
|}<br />
<br />
<br />
== [[File:System-Install-icon.png|link=]] Installation ==<br />
Ce plugin permet d'afficher une barre de vote sur les pages [[MediaWiki]]. Le package, fichier [[File:W4G Rating Bar 2.1.2.tar.bz2]] est téléchargé, depuis http://www.mediawiki.org/wiki/Extension:W4G_Rating_Bar, dans le répertoire des extensions, soit <code><code>/var/datas/mediawiki/extensions</code> dans le cadre de ce Wiki. Il sera décompresser dans un sous répertoire <code>W4GRatingBar-2.1.2</code><br />
<div class="console"><br />
#sudo bunzip2 W4G\ Rating\ Bar\ 2.1.2.tar.bz2<br />
#sudo mkdir W4GRatingBar-2.1.2<br />
#sudo tar -C /var/datas/mediawiki/extensions/W4GRatingBar-2.1.2 -xvf W4G\ Rating\ Bar\ 2.1.2.tar<br />
#sudo rm W4G\ Rating\ Bar\ 2.1.2.tar<br />
</div><br />
<br />
Le propriétaire du répertoire est ensuite modifié pour être celui qui exécute le serveur Web:<br />
<div class="console"><br />
#sudo chown -R www-data:www-data /var/datas/mediawiki/extensions/W4GRatingBar-2.1.2<br />
</div><br />
<br />
Puis, il faut le rendre disponible, comme indiqué en introduction de la page des [[Plugins_MediaWiki|plugins]], en créant le lien sous <code>/var/lib/mediawiki/extensions</code>.<br />
<div class="console"><br />
#sudo ln -s /var/datas/mediawiki/extensions/W4GRatingBar-2.1.2 /var/lib/mediawiki/extensions/W4GRatingBar-2.1.2<br />
#sudo chown -h www-data:www-data /var/lib/mediawiki/extensions/W4GRatingBar-2.1.2<br />
</div><br />
<br />
Par défaut, les permissions sur le répertoire ne permettent pas d'y accéder avec un compte autre que le propriétaire. Ses permissions sont donc modifiées:<br />
<div class="console"><br />
#sudo chmod 600 /var/datas/mediawiki/extensions/W4GRatingBar-2.1.2/*<br />
#sudo chmod 700 /var/datas/mediawiki/extensions/W4GRatingBar-2.1.2<br />
</div><br />
<br />
Le contenu du répertoire <code>/var/lib/mediawiki/extensions/W4GRatingBar-2.1.2</code> doit être le suivant:<br />
<div class="console"><br />
-rw------- 1 www-data www-data 1293 2011-05-30 09:50 changelog.txt<br />
-rw------- 1 www-data www-data 2476 2011-05-21 17:26 credits.txt<br />
-rw------- 1 www-data www-data 665 2011-03-05 14:23 db_creation.sql<br />
-rw------- 1 www-data www-data 10179 2011-03-20 17:10 SpecialW4GRB_body.php<br />
-rw------- 1 www-data www-data 5383 2011-03-06 16:50 SpecialW4GRBMigrate.php<br />
-rw------- 1 www-data www-data 111 2010-07-17 16:53 w4g_rb.alias.php<br />
-rw------- 1 www-data www-data 2810 2011-05-19 15:50 w4g_rb.css<br />
-rw------- 1 www-data www-data 3084 2011-05-19 15:44 w4g_rb.i18n.php<br />
-rw------- 1 www-data www-data 1321 2011-04-01 14:50 w4g_rb.js<br />
-rw------- 1 www-data www-data 7724 2011-03-20 17:19 w4g_rb-page.class.php<br />
-rw------- 1 www-data www-data 28817 2011-05-21 17:49 w4g_rb.php<br />
</div><br />
<br />
Les fichiers suivants ne sont pas nécessaires et peuvent être supprimés:<br />
* changelog.txt<br />
* credits.txt<br />
* db_creation.sql<br />
<br />
'''Attention''', cette description entraîne une anomalie qui sera décrite dans le paragraphe [[#Bug installation|Bug installation]].<br />
<br />
<br />
== [[File:Run-icon.png|link=]] Activation ==<br />
=== [[File:Icon-database-process.png|link=]] Modification base de données ===<br />
Les différents votes sont stockés dans de nouvelles tables de la base de données. La documentation indique les requêtes suivantes:<br />
<syntaxhighlight lang="sql"><br />
CREATE TABLE IF NOT EXISTS `wik_w4grb_votes` (<br />
`uid` int(11) unsigned NOT NULL,<br />
`pid` int(11) unsigned NOT NULL,<br />
`vote` tinyint(4) unsigned NOT NULL,<br />
`ip` varbinary(39) NOT NULL,<br />
`time` int(11) unsigned NOT NULL,<br />
PRIMARY KEY (`uid`,`pid`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=binary;<br />
<br />
CREATE TABLE IF NOT EXISTS `wik_w4grb_avg` (<br />
`pid` int(10) unsigned NOT NULL,<br />
`avg` float unsigned NOT NULL,<br />
`n` int(10) unsigned NOT NULL,<br />
PRIMARY KEY (`pid`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=binary;<br />
<br />
# update to database to support anonymous voting:<br />
ALTER TABLE `wik_w4grb_votes` DROP PRIMARY KEY ,<br />
ADD PRIMARY KEY ( `uid` , `pid` , `ip` );<br />
</syntaxhighlight><br />
<br />
'''Attention''', ces requêtes doivent être légèrement modifiées pour prendre en compte le préfixe des tables spécifié dans le fichier <code>LocalSettings.php</code>.<br />
<syntaxhighlight lang="php"><br />
# MySQL specific settings<br />
$wgDBprefix = "ejnwiki_";<br />
</syntaxhighlight><br />
<br />
Si les requêtes ne sont pas modifiées, le message suivant s'affichera:<br />
<syntaxhighlight lang="text"><br />
Une erreur de syntaxe de la requête dans la base de données est survenue. Ceci peut indiquer un bogue dans le logiciel. La dernière requête traitée par la base de données était :<br />
(Requête SQL cachée)<br />
depuis la fonction « W4GRBPage::loadAVG ». La base de données a renvoyé l’erreur « 1146 : Table 'wikidb.ejnwiki_w4grb_avg' doesn't exist (localhost) ».<br />
</syntaxhighlight><br />
<br />
<br />
{{Template:ScreenCapture|W4G Erreur nom table.png}}<br />
<br />
Pour la configuration présentée ci dessus, les requêtes sont réécrites ainsi:<br />
<syntaxhighlight lang="sql"><br />
CREATE TABLE IF NOT EXISTS `ejnwiki_w4grb_votes` (<br />
`uid` int(11) unsigned NOT NULL,<br />
`pid` int(11) unsigned NOT NULL,<br />
`vote` tinyint(4) unsigned NOT NULL,<br />
`ip` varbinary(39) NOT NULL,<br />
`time` int(11) unsigned NOT NULL,<br />
PRIMARY KEY (`uid`,`pid`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=binary;<br />
<br />
CREATE TABLE IF NOT EXISTS `ejnwiki_w4grb_avg` (<br />
`pid` int(10) unsigned NOT NULL,<br />
`avg` float unsigned NOT NULL,<br />
`n` int(10) unsigned NOT NULL,<br />
PRIMARY KEY (`pid`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=binary;<br />
<br />
# update to database to support anonymous voting:<br />
ALTER TABLE `ejnwiki_w4grb_votes` DROP PRIMARY KEY ,<br />
ADD PRIMARY KEY ( `uid` , `pid` , `ip` );<br />
</syntaxhighlight><br />
<br />
L'exécution sur une base [[MySql]] donne le résultat suivant:<br />
<div class="console"><br />
mysql> CREATE TABLE IF NOT EXISTS `ejnwiki_w4grb_votes` (<br />
-> `uid` int(11) unsigned NOT NULL,<br />
-> `pid` int(11) unsigned NOT NULL,<br />
-> `vote` tinyint(4) unsigned NOT NULL,<br />
-> `ip` varbinary(39) NOT NULL,<br />
-> `time` int(11) unsigned NOT NULL,<br />
-> PRIMARY KEY (`uid`,`pid`)<br />
-> ) ENGINE=InnoDB DEFAULT CHARSET=binary;<br />
Query OK, 0 rows affected (0.10 sec)<br />
<br />
mysql> CREATE TABLE IF NOT EXISTS `ejnwiki_w4grb_avg` (<br />
-> `pid` int(10) unsigned NOT NULL,<br />
-> `avg` float unsigned NOT NULL,<br />
-> `n` int(10) unsigned NOT NULL,<br />
-> PRIMARY KEY (`pid`)<br />
-> ) ENGINE=InnoDB DEFAULT CHARSET=binary;<br />
Query OK, 0 rows affected (0.08 sec)<br />
<br />
mysql> ALTER TABLE `ejnwiki_w4grb_votes` DROP PRIMARY KEY ,<br />
-> ADD PRIMARY KEY ( `uid` , `pid` , `ip` );<br />
Query OK, 0 rows affected (0.21 sec)<br />
Records: 0 Duplicates: 0 Warnings: 0<br />
</div><br />
<br />
=== [[File:Icon-Configuration-Settings.png|link=]] Mise à disposition ===<br />
Le fichier <code>/etc/mediawiki/LocalSettings.php</code> est ensuite modifié afin d'ajouter:<br />
<syntaxhighlight lang="php"><br />
# Extension W4G Rating Bar<br />
require_once("$IP/extensions/W4GRatingBar-2.1.2/w4g_rb.php");<br />
# Enable anonymous vote<br />
$wgW4GRB_Settings['anonymous-voting-enabled'] = true;<br />
</syntaxhighlight><br />
<br />
Dans cette configuration, le vote anonyme est autorisé et une ligne de commentaire est placée juste avant, afin de bien identifier son utilité.<br />
<br />
<br />
=== [[File:Bug-icon.png]] Bug installation ===<br />
Malheureusement, le plugin n'est pas utilisable en suivant cette procédure. Le message d'erreur <code>You need to enable Javascript to vote</code> est affiché.<br />
{{Template:ScreenCapture|W4G Javascript necessary.png}}<br />
<br />
La page suivante de la documentation de [http://www.mediawiki.org/wiki/Manual:$wgAllowUserJs Mediawiki] mentionne la possibilité de modifier le paramètre <code>$wgAllowUserJs</code>. Cependant cela n'a aucun effet. En fait, l'analyse des requêtes HTTP permet d'avoir une indication bien plus précise sur le dysfonctionnement, avec l'outil <code>Firebug</code> par exemple.<br />
{{Template:ScreenCapture|W4G trame réseau.png}}<br />
<br />
Il se trouve que les URLs <code>extensions/W4G%20Rating%20Bar/w4g_rb.js</code> et <code>extensions/W4G%20Rating%20Bar/w4g_rb.css</code> sont chargées. Or le lien est mis en place avec le nom <code>W4GRatingBar-2.1.2</code>.<br />
<br />
Il fallait donc déployer le plugin dans un répertoire <code>W4G Rating Bar</code>, et mettre en place le lien dans l'instance avec le même nom.<br />
<div class="console"><br />
#sudo bunzip2 W4G\ Rating\ Bar\ 2.1.2.tar.bz2<br />
#sudo mkdir W4G\ Rating\ Bar<br />
#sudo tar -C /var/datas/mediawiki/extensions/W4G\ Rating\ Bar -xvf W4G\ Rating\ Bar\ 2.1.2.tar<br />
#sudo rm W4G\ Rating\ Bar\ 2.1.2.tar<br />
#sudo chown -R www-data:www-data /var/datas/mediawiki/extensions/W4G\ Rating\ Bar<br />
#sudo chmod 600 /var/datas/mediawiki/extensions/W4G\ Rating\ Bar/*<br />
#sudo chmod 700 /var/datas/mediawiki/extensions/W4G\ Rating\ Bar<br />
#sudo ln -s /var/datas/mediawiki/extensions/W4G\ Rating\ Bar /var/lib/mediawiki/extensions/W4G\ Rating\ Bar<br />
#sudo chown chown -h www-data:www-data /var/lib/mediawiki/extensions/W4G\ Rating\ Bar<br />
</div><br />
<br />
Et la modification du fichier <code>LocalSettings.php</code> devient:<br />
<syntaxhighlight lang="php"><br />
# Extension W4G Rating Bar<br />
require_once("$IP/extensions/W4G Rating Bar/w4g_rb.php");<br />
# Enable anonymous vote<br />
$wgW4GRB_Settings['anonymous-voting-enabled'] = true;<br />
</syntaxhighlight><br />
<br />
Le plugin s'affiche alors, après modification de la page pour injecter le code nécessaire.<br />
{{Template:ScreenCapture|W4G Capture écran.png}}<br />
<br />
<br />
== [[File:Bug-icon.png|link=]] Bugs ==<br />
Dans le cadre d'une montée de version de php en 5.5, suite installation de [[Ubuntu Update Version 14.04 Développement|Ubuntu 14.04 Développement]], le message d'erreur suivant est apparu dans les logs Apache:<br />
<div class="console"><br />
[Sun Jan 05 21:23:30.361606 2014] [:error] [pid 24979] [client 82.230.154.123:52478] PHP Strict Standards:<br />
Only variables should be assigned by reference in /var/datas/mediawiki/extensions/W4G Rating Bar/SpecialW4GRB_body.php on line 45, referer: <br />
http://www.jouvinio.net/wiki/index.php/W4G_Rating_Bar<br />
</div><br />
<br />
Il se trouve qu'il y a eu une modification dans l'affectation des variables à partir de la version 5.3, comme expliqué [http://php.net/manual/en/language.operators.assignment.php|ici]. Afin d'éviter les messages de warning, le fichier <code>SpecialW4GRB_body.php</code> est modifié en ligne 45 dans la fonction <code>execute</code>.<br />
<br />
<syntaxhighlight lang="php"><br />
$this->skin = $wgUser->getSkin(); # that's useful for creating links more easily<br />
// $this->skin =& $wgUser->getSkin(); # that's useful for creating links more easily<br />
</syntaxhighlight><br />
<br />
Le patch du fichier: {{installedPlugin|SpecialW4GRB_patch_php_5.5.tar.gz}}<br />
<br />
== [[File:Bug-icon.png|link=]] Bug version 2.1.2 sur Mediawiki 1.23.0 ==<br />
Suite à la mise à jour de mediawiki en [[Mediawiki Update Version 1.22.7 vers 1.23|1.23]], la page <code>Pages spéciales</code> est devenue inaccessible avec le message suivant dans les [[Logs Apache|logs Apache]] :<br />
<div class="console"><br />
PHP Fatal error: Call to undefined method W4GRB::includable() in /var/datas/mediawiki/extensions/W4G Rating Bar/SpecialW4GRB_body.php on line 31,<br />
referer: http://www.jouvinio.net/wiki/index.php/Accueil<br />
</div><br />
<br />
Le fichier <code>SpecialW4GRB_body.php</code> présente la définition suivante du constructeur.<br />
<syntaxhighlight lang="php"><br />
function __construct()<br />
{<br />
parent::__construct( 'W4GRB');<br />
$this->includable( false );<br />
}<br />
</syntaxhighlight><br />
<br />
La classe <code>W4GRB</code> étend la classe <code>UnlistedSpecialPage</code>, elle même une extension de <code>SpecialPage</code>. Or la fonction <code>includable</code> n'est plus définie. De plus, le constructeur de la classe <code>SpecialPage</code> présente le code suivant.<br />
<syntaxhighlight lang="php"><br />
public function __construct(<br />
$name = '', $restriction = '', $listed = true,<br />
$function = false, $file = '', $includable = false<br />
) {<br />
$this->mName = $name;<br />
$this->mRestriction = $restriction;<br />
$this->mListed = $listed;<br />
$this->mIncludable = $includable;<br />
}<br />
</syntaxhighlight><br />
<br />
Il apparaît clairement que la variable <code>mIncludable</code> est initialisée avec la valeur <code>false</code> par défaut. Il suffit donc de reprendre le constructeur de <code>W4GRB</code> pour ne plus faire appel à la fonction supprimée.<br />
<syntaxhighlight lang="php"><br />
function __construct()<br />
{<br />
parent::__construct( 'W4GRB');<br />
# $this->includable( false );<br />
}<br />
</syntaxhighlight><br />
<br />
<br />
== [[File:Viewer icon.png|link=]] Voir aussi ==<br />
{{officialManual|http://www.mediawiki.org/wiki/Extension:W4G_Rating_Bar}}<br />
Ou: http://www.wiki4games.com/Wiki4Games:W4G_Rating_Bar<br />
<br />
Description utilisation: http://www.wiki4games.com/Wiki4Games:W4G_Rating_Bar/syntax<br />
<br />
<br />
== [[File:Untar-icon.png|link=]] Package installé ==<br />
{{installedPlugin|W4G Rating Bar 2.1.2.tar.bz2}}<br />
<br />
[[Category:W4G Rating Bar Plugin]]</div>Etienne