Comment configurer les catégories en v3?

La v3 de Mobilizon apport les catégories.
Un événement a une catégorie, à choisir dans une liste

Ensuite les catégories sont affichées en homepage ; plutôt joli :star_struck: :

Question : comment configurer cette liste ?

Pour l’instant sur mon instance migrée depuis la v2 j’ai « Aucune catégorie avec des événements publics à venir n’a été trouvée ».
Je n’ai rien trouvé dans la page d’administration de l’instance, ni dans la documentation produit.

Les catégories affichées ici sont celles qui ont une image et des événements à venir pour la catégorie (pour l’instant indépendamment de la langue, mais ça devrait changer). Après la sélection des catégories et leur ordre est aléatoire.

C’est notamment géré ici :

On pourrait imaginer d’avoir un paramètre pour définir la liste des catégories à la main.

Où est définie la liste des catégories possibles ainsi que leurs images ?

Les images sont côté client : js/src/components/Categories/constants.ts · main · Framasoft / Mobilizon · GitLab, la liste des catégories possibles côté serveur lib/mobilizon/events/categories.ex · main · Framasoft / Mobilizon · GitLab (et donc exposée par l’API)

Bonjour,
un utilisateur voudrait que soit rajouter la catégorie «Danse». Par contre sur mon instance hébergée avec Yunohost, je ne retrouve pas ce fichier categories.ex
Voici ce je trouve en cherchant

/var/www/mobilizon# find . -iname 'categories*' -type f
./live/lib/mobilizon-4.1.0/priv/static/assets/CategoriesView-kdYIqKu0-7798f9648ade2209bf9e1c2c1d2ef36d.js.map
./live/lib/mobilizon-4.1.0/priv/static/assets/CategoriesView-kdYIqKu0.js.map
./live/lib/mobilizon-4.1.0/priv/static/assets/CategoriesView-kdYIqKu0.js
./live/lib/mobilizon-4.1.0/priv/static/assets/CategoriesView-kdYIqKu0-7798f9648ade2209bf9e1c2c1d2ef36d.js
./live/lib/mobilizon-4.1.0/priv/static/assets/CategoriesView-kdYIqKu0.js.gz
./live/lib/mobilizon-4.1.0/priv/static/assets/CategoriesView-kdYIqKu0.js.map.gz
./live/lib/mobilizon-4.1.0/priv/static/assets/CategoriesView-kdYIqKu0-7798f9648ade2209bf9e1c2c1d2ef36d.js.gz
./live/lib/mobilizon-4.1.0/priv/static/assets/CategoriesView-kdYIqKu0-7798f9648ade2209bf9e1c2c1d2ef36d.js.map.gz

Il ne s’agit pas de toucher au fichier categories.ex, mais de mettre des valeurs dans la configuration, sous l’entrée extra_categories:
https://docs.joinmobilizon.org/administration/configure/reference/

Merci pour ces explications et cette référence ! Donc je peux rajouter à mon fichier config.exs une ligne comme celle ci-dessous ?

config, mobilizon, :extra_categories,
  %{id: :danse, label: "Danse"}

Mais est-ce que je dois aussi ajouter aussi les autres par défaut (qui semblent déjà présente) ??

Voici à quoi ressemble mon fichier actuel

# Mobilizon instance configuration

import Config

config :mobilizon, Mobilizon.Web.Endpoint,
   server: true,
   url: [host: "mobilizon.mydomain.tld"],
   http: [
     ip: {127,0,0,1},
     port: 8095
    ],
   secret_key_base: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

config :mobilizon, Mobilizon.Web.Auth.Guardian,
  secret_key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

config :mobilizon, :instance,
  name: "Mobilizon Monassociation",
  description: "Pour vos événements ! Mobilizon Monassociation est l'instance Mobilizon de Monassociation chez nous !",
  hostname: "mobilizon.mydomain.tld",
  registrations_open: true,
  demo: false,
  remove_orphan_uploads: true,
  orphan_upload_grace_period_hours: 48,
  remove_unconfirmed_users: true,
  unconfirmed_user_grace_period_hours: 48,
  activity_expire_days: 365,
  activity_keep_number: 100,
  enable_instance_feeds: true,
  allow_relay: true,
  federating: true,
  email_from: "mobilizon@mobilizon.mydomain.tld",
  email_reply_to: "mobilizon@mobilizon.mydomain.tld"

config :mobilizon, Mobilizon.Storage.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: "mobilizon",
  password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  database: "mobilizon",
  hostname: "localhost",
  port: "5432",
  pool_size: 10

config :mobilizon, Mobilizon.Service.Auth.LDAPAuthenticator, Mobilizon.Service.Auth.Authenticator
config :mobilizon, :ldap,
  enabled: true,
  host: "127.0.0.1",
  port: 389,
  ssl: false,
  # sslopts: [],
  tls: false,
  # tlsopts: [],
  base: "ou=users,dc=yunohost,dc=org",
  uid:  "uid",
  require_bind_for_search: false,
  bind_uid: nil,
  bind_password: nil

config :mobilizon, Mobilizon.Web.Email.Mailer,
  adapter: Swoosh.Adapters.SMTP,
  relay: "127.0.0.1",
  #hostname: "127.0.0.1",
  # usually 25, 465 or 587
  port: 587,
  username: "mobilizon_notifs",
  password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  # can be `:always` or `:never`
  tls: :always,
  tls_options: [
    versions: [:"tlsv1.2",:"tlsv1.3"],
    verify: :verify_peer,
    cacerts: :public_key.cacerts_get(),
    server_name_indication: 'mobilizon.mydomain.tld',
    depth: 99
  ],
  ssl: false,
  retries: 1,
  # can be `true`
  no_mx_lookups: false,
  # can be `:always`. If your smtp relay requires authentication set it to `:always`.
  auth: :always

config :mobilizon, Mobilizon.Web.Upload.Uploader.Local, uploads: "/home/yunohost.app/mobilizon/uploads"


config :web_push_encryption, :vapid_details,
  subject: "mailto:me@mydomain.tld",
  public_key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  private_key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

config :mobilizon, Mobilizon.Service.ResourceProviders,
  types: [pad: :etherpad, calc: :ethercalc, visio: :jitsi],
  providers: %{
    etherpad: "https://pad.mydomain.tld/p/",
    ethercalc: "https://lite.framacalc.org/",
    jitsi: "https://visio.chapril.org/"
  }

config :mobilizon, :external_resource_providers, %{
  "https://https://cryptpad.mydomain.tld/drive/" => :cryptpad_drive,
  "https://cryptpad.mydomain.tld/pad/" => :cryptpad_document,
  "https://cryptpad.mydomain.tld/sheet/" => :cryptpad_tableur,
  "https://cryptpad.mydomain.tld/slide/" => :cryptpad_presentation
}

Pardon, je relis et comprends que ce serait sous :instance

config :mobilizon, :instance,
  name: "Mobilizon Monassociation",
  description: "Pour vos événements ! Mobilizon Monassociation est l'instance Mobilizon de Monassociation chez nous !",
  hostname: "mobilizon.mydomain.tld",
  registrations_open: true,
  demo: false,
  remove_orphan_uploads: true,
  orphan_upload_grace_period_hours: 48,
  remove_unconfirmed_users: true,
  unconfirmed_user_grace_period_hours: 48,
  activity_expire_days: 365,
  activity_keep_number: 100,
  enable_instance_feeds: true,
  extra_categories: %{id: :danse, label: "Danse"},
  allow_relay: true,
  federating: true,
  email_from: "mobilizon@mobilizon.mydomain.tld",
  email_reply_to: "mobilizon@mobilizon.mydomain.tld"

Bon, j’y suis presque, mais mes tentatives cassait l’instance… Il faut ajouter des crochets ?

extra_categories: [%{id: :danse, label: "Danse"}],

Je n’ose plus y toucher…

C’est cela

Merci ! ça fonctionne ainsi :wink:

Du coup la catégories Danse est visible, mais si on la choisie, on a un message
"« Argument « category » has invalid value $category. » "

J’ai essayé d’ajouter deux catégories

  enable_instance_feeds: true,
  extra_categories: [
	%{id: :danse, label: "Danse"},
	%{id: :cinema, label: "Cinéma"}
  ],

Même erreur lorsque l’on essaie d’en choisir une…