Papi-web - Exemple d'utilisation

Cette page montre comment utiliser Papi-web sur un exemple réel, l'open rapide de Domloup.

D'autres exemples peuvent être consultés dans le répertoire config/.

Configuration générale

La configuration d'un évènement se fait en déclarant :

  • le nom de l'évènement ;
  • les fichiers Papi qui seront gérés (un fichier Papi par tournoi) ;
  • les écrans (saisie des résultats, affichage des derniers résultats) ;
  • la feuille de style (CSS) utilisée ;
  • le code d'accès pour la saisie des résultats.

Les fichiers de configuration doivent être nommés *.inc.php et être placés dans le répertoire config/ pour être pris en compte par Papi-web ; nous allons donc créer un fichier config/domloup-rapide.inc.php dans le répertoire config/.

Le fichier sera au format PHP, il commence donc par :

<?php

Nom de l'évènement

On indique à Papi-web le nom de l'évènement en déclarant la variable $config_name :

$config_name = '12e open rapide de Domloup';

Fichiers Papi

Trois tournois sont organisés (tournoi principal, tournoi jeunes et tournoi petits pions), avec les numéros d'homologation 45731, 45732 et 45733.

Les fichiers Papi correspondants sont nommés 45731.papi, 45732.papi et 45733.papi et placés dans le répertoire papi/.

On indique à Papi-web les tournois à gérer en déclarant la variable $files_config :

$files_config = array(
    'principal' => array(
        'id' => 45731,
        'upload_password' => 'KJRTFIUECB',
        ),
    'jeunes' => array(
        'id' => 45732, 
        'upload_password' => 'MLEPTBSEJJX',
        ),
    'petits' => array(
        'id' => 45733,
        'upload_password' => 'MLETAZKNNU',
        ),
    );

Les tournois seront ensuite référencés par le nom utilisé pour leur déclaration, ici principal, jeunes et petits.

Par défaut,

  • les fichiers Papi sont recherchés dans le répertoire papi/. Si on veut placer le fichier Papi d'un tournoi dans un répertoire autre, il faut l'indiquer avec le champ path pour ce tournoi.
  • le nom du fichier Papi d'un tournoi est son numéro d'homologation suivi de l'extension .papi. Si on veut nommer différemment le fichier Papi d'un tournoi, il faut l'indiquer avec le champ filename pour ce tournoi.
  • le nom du tournoi (celui qui sera affiché pour la saisie des résultats) est le nom qui a été indiqué dans le fichier Papi du tournoi. Si on veut afficher un nom différent, il faut l'indiquer avec le champ name pour ce tournoi.

On aurait ainsi pu écrire :

$files_config = array(
    'principal' => array(
        'path' => '../../../perso/echecs/domloup/2019/tournois/rapide/papi',
        'filename' => 'domloup-2019-rapide-principal',
        'name' => 'Tournoi principal',
        'upload_password' => 'KJRTFIUECB',
        ),
    'jeunes' => array(
        'path' => '../../../perso/echecs/domloup/2019/tournois/rapide/papi',
        'filename' => 'domloup-2019-rapide-jeunes',
        'name' => 'Tournoi jeunes',
        'upload_password' => 'MLEPTBSEJJX',
        ),
    'petits' => array(
        'path' => '../../../perso/echecs/domloup/2019/tournois/rapide/papi',
        'filename' => 'domloup-2019-rapide-jeunes',
        'name' => 'Tournoi petits pions',
        'upload_password' => 'MLETAZKNNU',
        ),
    );

Rappel : le code de téléchargement d'un tournoi est accessible à la personne qui a fait les demandes d'homologation en ligne, sur le site fédéral (dans la rubrique Mon compte > Suivi des homologations).

Écrans

Écrans de saisie

Dans notre cas, nous souhaitons avoir quatre écrans de saisie :

  • trois écrans de saisie pour le tournoi principal (tables 1 à 25, tables 26 à 50 et tables supérieures à 50) ;
  • un écran de saisie pour les tournois jeunes et petits pions.

On indique à Papi-web les écrans à proposer en déclarant la variable $screens_config :

$screens_config = array(
    'p1' => array(
        'boards' => 'principal:1-25',
        'name' => 'Principal (1 à 25)',
        ),
    'p2' => array(
        'boards' => 'principal:26-50',
        'name' => 'Principal (26 à 50)',
        ),
    'p3' => array(
        'boards' => 'principal:51-',
        'name' => 'Principal (51 et +)',
        ),
    'j' => array(
        'boards' => 'jeunes,petits',
        'name' => 'Jeunes et Petits pions',
        ),
    );

Les noms indiqués ci-dessus (champ name) sont utilisés sur la bannière des écrans de saisie qui permet de passer d'un écran de saisie à un autre :

Pour qu'un écran de saisie n'apparaisse pas dans la bannière des écrans de saisie, il faut positionner sa propriété no_banner comme suit (dans ce cas la propriété name n'est pas utilisée) :

$screens_config = array(
    ...
    'j' => array(
        'boards' => 'jeunes,petits',
        'no_banner' => true,
        'name' => 'Jeunes et Petits pions',
        ),
    );

Note : par défaut, les écrans définis ci-dessus sont des écrans de saisie, c'est-à-dire de type results-input (on peut d'ailleurs leur ajouter la propriété type="results-input").

Écrans d'affichage des résultats

Depuis la version 1.14, il est possible de définir des écrans d'affichage des résultats, sans possibilité d'entrer des résultats.

La définition d'un écran d'affichage se fait de la même manière que pour un écran de saisie avec la propriété type="results", par exemple :

$screens_config = array(
    ...
    'j' => array(
        'type' => 'results', 
        'boards' => 'jeunes,petits',
        'name' => 'Jeunes et Petits pions',
        'refresh-delay' => 15,
        ),
    );

La propriété refresh-delay permet de préciser le temps après lequel l'écran se met à jour automatiquement (temps en secondes, par défaut 30 secondes, rafraichissement si nécessaire seulement).

Écrans d'affichage des derniers résultats saisis

Il est également possible depuis la version 1.14 d'afficher les derniers résultats saisis, par exemple :

$screens_config = array(
    ...
    'resultats-principal' => array(
        'type' => 'last-results',
        'files' => 'principal',
        'title' => 'Tournoi principal',
        'refresh-delay' => 10, 
        ),
    'resultats-jeunes' => array(
        'type' => 'last-results',
        'files' => 'jeunes,petits',
        'title' => 'Tournois jeunes',
        ),
    'resultats-tous' => array(
        'type' => 'last-results',
        'title' => 'Tous les tournois',
        ),
    );

Notes :

  • Les écrans d'affichage des derniers résultats ne sont pas affichés dans la bannière des écrans de saisie ;
  • La propriété files permet d'indiquer les tournois desquels on affiche les résultats (si celle-ci n'est pas précisée, les résultats de tous les tournois sont affichés) ;
  • La propriété title permet de changer le titre par défaut de l'écran (« Derniers résultats ») ;
  • La propriété refresh-delay permet de préciser le temps après lequel l'écran se met à jour automatiquement (temps en secondes, par défaut 10 secondes, rafraichissement si nécessaire seulement).

Code d'accès aux écrans de saisie

Pour pouvoir utiliser Papi-web sur les réseaux publics, un code d'accès peut-être positionné pour protéger l'accès à la page de saisie des résultats, de cette manière :

$results_code = 'superdomloup';

La page suivante sera affichée lors du premier accès :

Pour ne pas indiquer de code d'accès (par exemple sur des réseaux privés), on écrira :

$results_code = false;

Note : seuls les écrans de saisie sont protégés par le code d'accès, les autres écrans sont toujours accessibles sans code d'accès.

Feuille de style (CSS)

La présentation de la page de saisie des résultats peut-être personnalisée à l'aide de deux feuilles de style :

  • config/custom.css : cette feuille de style sera appliquée à tous les configurations définies ;
  • une feuille de style personnalisée pour chaque configuration, qu'il faut déclarer.

Par exemple, on déclarera une feuille de style pour l'open rapide de Domloup de la manière suivante :

$css = 'config/domloup/domloup.css';

La feuille de style domloup.css, que l'on placera dans le répertoire config/domloup/, contiendra par exemple les directives suivantes (le fichier domloup-filigrane.jpg sera également dans le répertoire config/domloup/) :

body {
    background-position: center 150px;
    background-image: url("domloup-filigrane.jpg");
    background-repeat: no-repeat;
    background-size: auto 25%;
}

Configuration complète

<?php
$config_name = '12e open rapide de Domloup';
$files_config = array(
    'principal' => array(
        'id' => 45731,
        'upload_password' => 'KJRTFIUECB',
        ),
    'jeunes' => array(
        'id' => 45732, 
        'upload_password' => 'MLEPTBSEJJX',
        ),
    'petits' => array(
        'id' => 45733,
        'upload_password' => 'MLETAZKNNU',
        ),
    );
$screens_config = array(
    'p1' => array(
        'boards' => 'principal:1-25',
        'name' => 'Principal (1 à 25)',
        ),
    'p2' => array(
        'boards' => 'principal:26-50',
        'name' => 'Principal (26 à 50)',
        ),
    'p3' => array(
        'boards' => 'principal:51-',
        'name' => 'Principal (51 et +)',
        ),
    'j' => array(
        'boards' => 'jeunes,petits',
        'name' => 'Jeunes et Petits pions',
        ),
    );
$results_code = 'superdomloup';
$css = 'config/domloup/domloup.css';

Une fois le fichier domloup-rapide.inc.php créé dans le répertoire config/, l'accès à la page http://localhost/papi-web/?config= fait apparaître le nouvel évènement :

La sélection du nouvel évènement fait alors apparaître le dialogue du mot de passe :

En entrant le mot de passe (superdomloup), l'interface de saisie des résultats est opérationnelle :

Configuration d'un blitz handicap

Les blitz à handicap sont très prisés des joueurs car ils permettent de lisser les différences de niveau.

Pour un blitz de 5 minutes et 2 secondes par coup, avec une pénalité de 30 secondes par tranche de 50 points et un minimum de 1 minute, on écrira :

$files_config = array(
    'principal' => array(
        'filename' => 'handicap',
        'handicap_config' => array(
            'base_time' => 300,
            'increment' => 2,
            'penalty_step' => 50,
            'penalty_value' => 30,
            'min_time' => 60,
            ),
        ),
    );

Papi-web calcule automatiquement les temps des joueurs et les affiche sur l'interface de saisie des résultats.

Configuration du chronomètre

Le chronomètre est disponible à partir de la version 1.15.

L'affichage du chronomètre sur les interfaces permet de communiquer aux joueurs le planning de la compétition, notamment le temps restant avant le début de la ronde suivante.

Voici par exemple une utilisation très basique du chronomètre où l'on déclare simplement les évènements d'une compétition en 5 rondes :

$timer = array(
    'events' => array(
        array(
            'date' => '2019-10-05 09:15',
            'text_before' => 'Fin du pointage dans %s',
            'text_after' => 'Pointage termin&eacute; depuis %s',
            ),
        array(
            'date' => '09:30',
            'round' => 1,
            ),
        array(
            'date' => '13:15',
            'round' => 2,
            ),
        array(
            'date' => '16:30',
            'round' => 3,
            ),
        array(
            'date' => '2019-10-06 09:30',
            'round' => 4,
            ),
        array(
            'date' => '13:15',
            'round' => 5,
            ),
        array(
            'date' => '16:30',
            'text_before' => 'Remise des prix dans %s',
            'text_after' => 'Remise des prix commenc&eacute;e depuis %s',
            ),
        ),
    );
  • Le paramètre date est obligatoire pour chaque évènement. Le format « AAAA-MM-JJ HH:MM » est imposé pour le premier évènement, le format « HH:MM » (sans le jour) peut être utilisé pour les évènements suivants (on considère dans ce cas que l'évènement a lieu le même jour que l'évènement précédent).
  • Les paramètres text_before et text_after sont obligatoires, sans si le paramètre round est utilisé ; dans ce cas les paramètres suivants sont automatiquement renseignés :

    • text_before : Début de la ronde <round> dans %s
    • text_after : Ronde <round> commencée depuis %s

Les couleurs du chronomètre varient en fonction du temps restant avant les évènements ou écoulé après les évènements. Par défaut le comportement du chronomètre est le suivant :

Il est possible de changer les temps et les couleurs utilisés par le chronomètre pour tous les évènements en changeant les valeurs utilisées par défaut pour tous les évènements, en renseignant le paramètre default :

$timer = array(
    'default' => array(
        'color_1' => array(
            'value' => '#00ff00',
            'minutes' => 15,
            ),
        'color_2' => array(
            'value' => '#ff7a00',
            'minutes' => 5, 
            ),
        'color_3' => array(
            'value' => '#ff0000',
            'minutes' => 10, 
            ),
        ),
    'events' => array(
        ...
        ),
    );

Il est également possible d'utiliser des temps et des couleurs différentes pour chaque évènement en déclarant les mêmes paramètres pour les évènements, par exemple (pour les paramètres non dléclarés, les valeurs par défaut seront utilisés) :

$timer = array(
    'events' => array(
        ...
        array(
            'date' => '2019-10-05 12:15',
            'text_before' => 'Déjeuner dans %s',
            'text_after' => 'Déjeuner termin&eacute; depuis %s',
            'color_1' => array(
                'value' => '#00ff00',
                'minutes' => 30,
                ),
            'color_2' => array(
                'value' => '#00ff00',
                ),
            'color_3' => array(
                'value' => '#00ff00', 
                'minutes' => 5, 
            ),
        ...
        ),
    );

Pour que le chronomètre n'apparaisse pas sur un écran de saisie, il faut positionner sa propriété no_timer comme suit :

$screens_config = array(
    ...
    'j' => array(
        ...
        'no_timer' => true,
        ...
        ),
    );

Papi-web, programme de saisie des résultats dans Papi et de mise en ligne des résultats sur le site fédéral, a été développé à titre gracieux pour les arbitres et organisateurs de la Fédération Française des Échecs par Pascal AUBRY. Il est livré sans aucune garantie et peut être redistribué, sans aucune contrepartie financière.
http://domloup.echecs35.fr/papi-web