feat: remplace module Courses par Liste multi-listes nommées
Deploy HouseHub / deploy (push) Successful in 1s

- Nouveau module 'liste' : plusieurs listes nommées par espace famille
- Tabs de navigation entre les listes + création/renommage/suppression inline
- Migration automatique : existing pf_grocery_items → list_id=1 (Ma liste)
- Schema: nouvelle table pf_lists, ajout list_id sur pf_grocery_items
- Historique global partagé entre toutes les listes
- Ancien module 'groceries' conservé pour compatibilité ascendante
- Mise à jour settings.php, header.php, index.php, schema_family.sql

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
perco
2026-05-19 17:07:02 +02:00
co-authored by Claude Sonnet 4.6
parent 1a9d5d5d18
commit 8176fc4de0
9 changed files with 1034 additions and 57 deletions
+37 -40
View File
@@ -102,46 +102,43 @@ return [
'mod_calendar_ios_name' => 'Calendrier iOS',
'mod_calendar_ios_desc' => 'Synchronisez vos événements HouseHub avec votre calendrier iPhone (iCloud CalDAV).',
'menu_todo' => 'Todo',
'mod_groceries_name' => 'Courses',
'mod_groceries_desc' => 'Liste partagée : ajoutez des produits et cochez-les quand ils sont dans le caddie.',
'menu_groceries' => 'Courses',
'groceries_placeholder_add' => 'Ex : lait, pain, tomates…',
'groceries_btn_add' => 'Ajouter',
'groceries_btn_uncheck_all' => 'Tout remettre à prendre',
'groceries_btn_delete_picked' => 'Retirer du caddie (supprimer)',
'groceries_subtitle' => '{pending} à prendre · {cart} dans le caddie',
'groceries_added' => 'Ajouté',
'groceries_updated' => 'Mis à jour',
'groceries_deleted' => 'Supprimé',
'groceries_reset_next' => 'Liste prête pour la prochaine sortie',
'groceries_picked_removed' => 'Articles retirés',
'groceries_label_empty' => 'Libellé vide',
'groceries_confirm_del_title' => 'Supprimer ?',
'groceries_confirm_del_body' => 'Retirer ce produit de la liste ?',
'groceries_confirm_uncheck_title' => 'Tout remettre à prendre',
'groceries_confirm_uncheck_body' => 'Les coches « dans le caddie » seront effacées. Les produits restent dans la liste.',
'groceries_confirm_clear_title' => 'Retirer les produits du caddie',
'groceries_confirm_clear_body' => 'Tous les articles cochés seront supprimés de la liste.',
'groceries_empty' => 'Rien pour le moment. Ajoutez un produit ci-dessus.',
'groceries_aria_toggle' => 'Marquer comme dans le caddie ou à prendre',
'groceries_section_pending' => 'À prendre',
'groceries_section_cart' => 'Dans le caddie',
'groceries_prompt_edit' => 'Modifier le produit',
'groceries_btn_clear_list' => 'Vider la liste',
'groceries_confirm_empty_list_title' => 'Vider toute la liste ?',
'groceries_confirm_empty_list_body' => 'Tous les produits seront retirés. Ils resteront disponibles dans lhistorique pour les rajouter vite.',
'groceries_list_cleared' => 'Liste vidée',
'groceries_history_title' => 'Historique — un clic pour rajouter',
'groceries_history_empty' => 'Lhistorique se remplit au fur et à mesure des produits ajoutés (jusqu’à la limite définie dans les paramètres).',
'groceries_history_meta' => 'Jusqu’à {max} produits · ',
'groceries_settings_link' => 'Réglages dans Paramètres',
'groceries_settings_title' => 'Liste de courses — historique',
'groceries_settings_intro' => 'Nombre maximum de produits mémorisés dans lhistorique (sans doublon, insensible à la casse).',
'groceries_settings_history_max' => 'Taille de lhistorique',
'groceries_settings_history_hint' => 'Entre 1 et 50. Les entrées les plus anciennes sont supprimées quand la limite est dépassée.',
'groceries_settings_saved' => 'Préférences courses enregistrées.',
'groceries_settings_error' => 'Impossible denregistrer :',
'groceries_err_duplicate' => 'Ce produit est déjà dans la liste.',
mod_groceries_name => Courses,
mod_groceries_desc => Liste partagée : ajoutez des produits et cochez-les quand ils sont dans le caddie.,
menu_groceries => Courses,
// Module Liste (remplace Courses)
mod_liste_name => Listes,
mod_liste_desc => Listes partagées nommées courses, bricolage, pharmacie… Autant de listes que nécessaire.,
menu_liste => Listes,
liste_placeholder_add => Ajouter un article…’,
liste_btn_add => Ajouter,
liste_btn_uncheck_all => Tout décocher,
liste_btn_delete_picked => Supprimer les cochés,
liste_btn_clear_all => Vider la liste,
liste_subtitle => {pending} à faire · {cart} cochés,
liste_added => Ajouté’,
liste_updated => Modifié’,
liste_deleted => Supprimé’,
liste_already_in => Déjà dans la liste,
liste_confirm_clear => Vider toute la liste ?,
liste_confirm_delete_list => Supprimer cette liste et tous ses articles ?,
liste_history_title => Récemment utilisés clic pour rajouter,
liste_new_list => Nouvelle liste,
liste_list_name_placeholder=> Nom de la liste…’,
liste_create => Créer,
liste_rename_list => Renommer,
liste_new_name => Nouveau nom :,
liste_list_deleted => Liste supprimée,
liste_list_created => Liste créée,
liste_list_renamed => Liste renommée,
liste_edit_placeholder => Modifier l\article :,
liste_empty_state => Créez votre première liste avec le bouton + ci-dessus.,
liste_settings_title => Listes historique,
liste_settings_intro => Nombre maximum d\articles mémorisés dans l\historique (commun à toutes les listes).,
liste_settings_history_max => Taille de l\historique,
liste_settings_history_hint=> Entre 1 et 50.,
groceries_settings_saved => Préférences enregistrées.,
groceries_settings_error => Impossible d\enregistrer :,
groceries_err_duplicate => Ce produit est déjà dans la liste.,
'cta_open' => 'Ouvrir',
'cta_explore' => 'Explorer',
'cta_view_lists' => 'Déballer',