Action {{bazarliste}} : afficher les données d'autres YesWiki


L'action {{bazarliste}} permet d'afficher les données des formulaires. Il est possible d'afficher les données d'autres YesWiki en même temps que les données locales.
Cette fiche de documentation correspond à une action en cours de développement uniquement utilisable avec la version doryphore à partir de 2021-05-12.

Il est possible d'afficher les données d'un autre site YesWiki.

1. Mettre à jour le YesWiki et le distant pour avoir la version Doryphore après 2021-05-12-24
2. Définir l'action
{{bazarliste id="1" template="map" ...}}
pour correspondre au besoin (documentation ou utiliser le bouton composants lors de la modification d'une page)
3. Identifier l'adresse des YesWiki distants et les formulaires recherchés. Ex:
https://www.example.com/?PagePrincipale
formulaire 4 et
https://www.example.com/trombi2/?PagePrincipale
formulaire 5
5. remplacer pour l'action bazarliste id par
id="1,https://www.example.com/?PagePrincipale|4,https://www.example.com/trombi2/?PagePrincipale|5,6"

6. Sauver la page et enjoy

Explications:
  • chaque formulaire est séparé par une virgule
  • un formulaire local est uniquement représenté par un nombre. Dans l'exemple, nous avons les formulaires 1 et 6
  • un formulaire distant est représenté par son url suivi de | suivi du numéro de son formulaire. Dans l'exemple, nous avons deux formulaires distants.
  • S'il faut plusieurs formulaires distants d'un même YesWiki, il faut à chaque fois répéter l'url devant |

Rafraichir les données locales:

Il y a un système de cache des requêtes externes dont la durée est paramètrable par les variables bazexternalservicetimecacheforentries et bazexternalservicetimecacheforforms (voir config.yaml). Pour forcer un rafraîchissement des données, il faut être connecter et ajouter à la fin de l'url :
&refresh=1


Pour aller plus loin, et avoir des couleur différentes par formulaire (entre données du formulaire local et distants):
Sur la base du fonctionnement colorfield="id_typeannonce" (voir ActionBazarliste section color), definir un ID pour le formulaire externe n'existant pas en local (999 par exemple) de la manière suivante
id="5,http://www.exemple.com/?PagePincipale|1->999" color="green=5, blue=999"

NB : Dans l'exemple ci-dessus l'id du formulaire local est 5 et celui du formulaire distant 1

Pour aller plus loin, pour les personnes connaissant les fields:
  • pour configurer l'affichage des données sur le site local, il faut plutôt créer un formulaire qui ressemble au formulaire distant (même nom de champs) mais avec vos adaptations
  • noter le numéro de ce formulaire en local (A pour l'exemple)
  • noter le numéro du formulaire distant (B pour l'exemple)
  • entrer dans id ceci
    id="http://www.exemple.com/?PagePincipale|B->A"
    
  • Tout se joue avec l'association de B vers A.

Pour lier à un template custom fiche-x.tpl.html:
x étant le numéro du formulaire local concerné
  • 1. dupliquer le formulaire distant sur le YesWiki local en utilisant la fonctionnalité d'importation disponible en bas de la page BazaR
  • 2. copier le fichier fiche-x.tpl.html dans le dossier local custom/templates/bazar/ avec le nom fiche-y.tpl.html où y est le numéro du formulaire dupliqué en local
  • 3. modifier le formulaire y en local en mode code en remplaçant, z étant le numéro du formulaire distant
    • liste***...***...*** *** ***...
      
      par
      externalselectlistfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***liste***...
      
    • listefiche***...***...*** *** ***...
      
      par
      externalselectentryfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***listefiche***...
      
    • listefiches***...***...*** *** ***...
      
      par
      externallinkedentryfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***listefiches***...
      
    • listefichesliees***...***...*** *** ***...
      
      par
      externallinkedentryfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***listefichesliees***...
      
    • checkbox***...***...*** *** ***...
      
      par
      externalcheckboxlistfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***checkbox***...
      
    • checkboxfiche***...***...*** *** ***...
      
      par
      externalcheckboxentryfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***checkboxfiche***...
      
    • radio***...***...*** *** ***...
      
      par
      externalradiolistfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***radio***...
      
    • tags***...***...*** *** ***...
      
      par
      externaltagsfield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***tags***...
      
    • fichier***...***...*** *** ***...
      
      par
      externalfilefield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***fichier***...
      
    • image***...***...*** *** ***...
      
      par
      externalimagefield***...***...*** https://www.example.com/?BazaR/json&demand=forms&id=y***image***...
      

Dans l'exemple:
  • le formulaire concerné est
    https://www.example.com|z
    
  • la formule entrée dans le paramètre id de
    {{bazarliste id="}}
    est
    https://www.example.com|z->y
    


Si dans votre formulaire local vous voulez un comportement correct pour les liens, inspirez-vous des externalfields, comme par exemple :
  • pour les urls vers les fiches
    $fiche['url']
    
  • pour les urls vers les fiches avec un handler
    $fiche['url'] . '/pdf'
    
  • pour savoir si la fiche est externe
    isset($fiche['external-data'])
    
  • pour avoir l'url de base du site distant pour les fiches externes
    $fiche['external-data']['baseUrl']
    

documentation doryphore