feat(roles): add admin store roles page, permission i18n, and menu integration
Some checks failed
Some checks failed
- Add admin store roles page with merchant→store cascading for superadmin and store-only selection for platform admin - Add permission catalog API with translated labels/descriptions (en/fr/de/lb) - Add permission translations to all 15 module locale files (60 files total) - Add info icon tooltips for permission descriptions in role editor - Add store roles menu item and admin menu item in module definition - Fix store-selector.js URL construction bug when apiEndpoint has query params - Add admin store roles API (CRUD + platform scoping) - Add integration tests for admin store roles and permission catalog Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,42 +1,48 @@
|
||||
{
|
||||
"title": "Warenkorb",
|
||||
"description": "Warenkorbverwaltung für Kunden",
|
||||
"cart": {
|
||||
"title": "Ihr Warenkorb",
|
||||
"empty": "Ihr Warenkorb ist leer",
|
||||
"empty_subtitle": "Fügen Sie Artikel hinzu, um einzukaufen",
|
||||
"continue_shopping": "Weiter einkaufen",
|
||||
"proceed_to_checkout": "Zur Kasse"
|
||||
},
|
||||
"item": {
|
||||
"product": "Produkt",
|
||||
"quantity": "Menge",
|
||||
"price": "Preis",
|
||||
"total": "Gesamt",
|
||||
"remove": "Entfernen",
|
||||
"update": "Aktualisieren"
|
||||
},
|
||||
"summary": {
|
||||
"title": "Bestellübersicht",
|
||||
"subtotal": "Zwischensumme",
|
||||
"shipping": "Versand",
|
||||
"estimated_shipping": "Wird an der Kasse berechnet",
|
||||
"tax": "MwSt.",
|
||||
"total": "Gesamtsumme"
|
||||
},
|
||||
"validation": {
|
||||
"invalid_quantity": "Ungültige Menge",
|
||||
"min_quantity": "Mindestmenge ist {min}",
|
||||
"max_quantity": "Höchstmenge ist {max}",
|
||||
"insufficient_inventory": "Nur {available} verfügbar"
|
||||
},
|
||||
"messages": {
|
||||
"item_added": "Artikel zum Warenkorb hinzugefügt",
|
||||
"item_updated": "Warenkorb aktualisiert",
|
||||
"item_removed": "Artikel aus dem Warenkorb entfernt",
|
||||
"cart_cleared": "Warenkorb geleert",
|
||||
"product_not_available": "Produkt nicht verfügbar",
|
||||
"error_adding": "Fehler beim Hinzufügen zum Warenkorb",
|
||||
"error_updating": "Fehler beim Aktualisieren des Warenkorbs"
|
||||
}
|
||||
"title": "Warenkorb",
|
||||
"description": "Warenkorbverwaltung für Kunden",
|
||||
"cart": {
|
||||
"title": "Ihr Warenkorb",
|
||||
"empty": "Ihr Warenkorb ist leer",
|
||||
"empty_subtitle": "Fügen Sie Artikel hinzu, um einzukaufen",
|
||||
"continue_shopping": "Weiter einkaufen",
|
||||
"proceed_to_checkout": "Zur Kasse"
|
||||
},
|
||||
"item": {
|
||||
"product": "Produkt",
|
||||
"quantity": "Menge",
|
||||
"price": "Preis",
|
||||
"total": "Gesamt",
|
||||
"remove": "Entfernen",
|
||||
"update": "Aktualisieren"
|
||||
},
|
||||
"summary": {
|
||||
"title": "Bestellübersicht",
|
||||
"subtotal": "Zwischensumme",
|
||||
"shipping": "Versand",
|
||||
"estimated_shipping": "Wird an der Kasse berechnet",
|
||||
"tax": "MwSt.",
|
||||
"total": "Gesamtsumme"
|
||||
},
|
||||
"validation": {
|
||||
"invalid_quantity": "Ungültige Menge",
|
||||
"min_quantity": "Mindestmenge ist {min}",
|
||||
"max_quantity": "Höchstmenge ist {max}",
|
||||
"insufficient_inventory": "Nur {available} verfügbar"
|
||||
},
|
||||
"messages": {
|
||||
"item_added": "Artikel zum Warenkorb hinzugefügt",
|
||||
"item_updated": "Warenkorb aktualisiert",
|
||||
"item_removed": "Artikel aus dem Warenkorb entfernt",
|
||||
"cart_cleared": "Warenkorb geleert",
|
||||
"product_not_available": "Produkt nicht verfügbar",
|
||||
"error_adding": "Fehler beim Hinzufügen zum Warenkorb",
|
||||
"error_updating": "Fehler beim Aktualisieren des Warenkorbs"
|
||||
},
|
||||
"permissions": {
|
||||
"view": "Warenkörbe anzeigen",
|
||||
"view_desc": "Warenkörbe der Kunden anzeigen",
|
||||
"manage": "Warenkörbe verwalten",
|
||||
"manage_desc": "Warenkörbe der Kunden bearbeiten und verwalten"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,12 @@
|
||||
"max_quantity": "Maximum quantity is {max}",
|
||||
"insufficient_inventory": "Only {available} available"
|
||||
},
|
||||
"permissions": {
|
||||
"view": "View Carts",
|
||||
"view_desc": "View customer shopping carts",
|
||||
"manage": "Manage Carts",
|
||||
"manage_desc": "Modify and manage customer carts"
|
||||
},
|
||||
"messages": {
|
||||
"item_added": "Item added to cart",
|
||||
"item_updated": "Cart updated",
|
||||
|
||||
@@ -1,42 +1,48 @@
|
||||
{
|
||||
"title": "Panier",
|
||||
"description": "Gestion du panier pour les clients",
|
||||
"cart": {
|
||||
"title": "Votre panier",
|
||||
"empty": "Votre panier est vide",
|
||||
"empty_subtitle": "Ajoutez des articles pour commencer vos achats",
|
||||
"continue_shopping": "Continuer mes achats",
|
||||
"proceed_to_checkout": "Passer à la caisse"
|
||||
},
|
||||
"item": {
|
||||
"product": "Produit",
|
||||
"quantity": "Quantité",
|
||||
"price": "Prix",
|
||||
"total": "Total",
|
||||
"remove": "Supprimer",
|
||||
"update": "Mettre à jour"
|
||||
},
|
||||
"summary": {
|
||||
"title": "Récapitulatif de commande",
|
||||
"subtotal": "Sous-total",
|
||||
"shipping": "Livraison",
|
||||
"estimated_shipping": "Calculé à la caisse",
|
||||
"tax": "TVA",
|
||||
"total": "Total"
|
||||
},
|
||||
"validation": {
|
||||
"invalid_quantity": "Quantité invalide",
|
||||
"min_quantity": "Quantité minimum: {min}",
|
||||
"max_quantity": "Quantité maximum: {max}",
|
||||
"insufficient_inventory": "Seulement {available} disponible(s)"
|
||||
},
|
||||
"messages": {
|
||||
"item_added": "Article ajouté au panier",
|
||||
"item_updated": "Panier mis à jour",
|
||||
"item_removed": "Article supprimé du panier",
|
||||
"cart_cleared": "Panier vidé",
|
||||
"product_not_available": "Produit non disponible",
|
||||
"error_adding": "Erreur lors de l'ajout au panier",
|
||||
"error_updating": "Erreur lors de la mise à jour du panier"
|
||||
}
|
||||
"title": "Panier",
|
||||
"description": "Gestion du panier pour les clients",
|
||||
"cart": {
|
||||
"title": "Votre panier",
|
||||
"empty": "Votre panier est vide",
|
||||
"empty_subtitle": "Ajoutez des articles pour commencer vos achats",
|
||||
"continue_shopping": "Continuer mes achats",
|
||||
"proceed_to_checkout": "Passer à la caisse"
|
||||
},
|
||||
"item": {
|
||||
"product": "Produit",
|
||||
"quantity": "Quantité",
|
||||
"price": "Prix",
|
||||
"total": "Total",
|
||||
"remove": "Supprimer",
|
||||
"update": "Mettre à jour"
|
||||
},
|
||||
"summary": {
|
||||
"title": "Récapitulatif de commande",
|
||||
"subtotal": "Sous-total",
|
||||
"shipping": "Livraison",
|
||||
"estimated_shipping": "Calculé à la caisse",
|
||||
"tax": "TVA",
|
||||
"total": "Total"
|
||||
},
|
||||
"validation": {
|
||||
"invalid_quantity": "Quantité invalide",
|
||||
"min_quantity": "Quantité minimum: {min}",
|
||||
"max_quantity": "Quantité maximum: {max}",
|
||||
"insufficient_inventory": "Seulement {available} disponible(s)"
|
||||
},
|
||||
"messages": {
|
||||
"item_added": "Article ajouté au panier",
|
||||
"item_updated": "Panier mis à jour",
|
||||
"item_removed": "Article supprimé du panier",
|
||||
"cart_cleared": "Panier vidé",
|
||||
"product_not_available": "Produit non disponible",
|
||||
"error_adding": "Erreur lors de l'ajout au panier",
|
||||
"error_updating": "Erreur lors de la mise à jour du panier"
|
||||
},
|
||||
"permissions": {
|
||||
"view": "Voir les paniers",
|
||||
"view_desc": "Voir les paniers des clients",
|
||||
"manage": "Gérer les paniers",
|
||||
"manage_desc": "Modifier et gérer les paniers des clients"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,42 +1,48 @@
|
||||
{
|
||||
"title": "Akafskuerf",
|
||||
"description": "Kuerfverwaltung fir Clienten",
|
||||
"cart": {
|
||||
"title": "Äre Kuerf",
|
||||
"empty": "Äre Kuerf ass eidel",
|
||||
"empty_subtitle": "Setzt Artikelen derbäi fir anzekafen",
|
||||
"continue_shopping": "Weider akafen",
|
||||
"proceed_to_checkout": "Zur Keess"
|
||||
},
|
||||
"item": {
|
||||
"product": "Produkt",
|
||||
"quantity": "Unzuel",
|
||||
"price": "Präis",
|
||||
"total": "Gesamt",
|
||||
"remove": "Ewechhuelen",
|
||||
"update": "Aktualiséieren"
|
||||
},
|
||||
"summary": {
|
||||
"title": "Bestelliwwersiicht",
|
||||
"subtotal": "Zwëschesumm",
|
||||
"shipping": "Liwwerung",
|
||||
"estimated_shipping": "Gëtt bei der Keess berechent",
|
||||
"tax": "MwSt.",
|
||||
"total": "Gesamtsumm"
|
||||
},
|
||||
"validation": {
|
||||
"invalid_quantity": "Ongëlteg Unzuel",
|
||||
"min_quantity": "Mindestunzuel ass {min}",
|
||||
"max_quantity": "Héichstunzuel ass {max}",
|
||||
"insufficient_inventory": "Nëmmen {available} verfügbar"
|
||||
},
|
||||
"messages": {
|
||||
"item_added": "Artikel an de Kuerf gesat",
|
||||
"item_updated": "Kuerf aktualiséiert",
|
||||
"item_removed": "Artikel aus dem Kuerf ewechgeholl",
|
||||
"cart_cleared": "Kuerf eidel gemaach",
|
||||
"product_not_available": "Produkt net verfügbar",
|
||||
"error_adding": "Feeler beim Derbäisetzen an de Kuerf",
|
||||
"error_updating": "Feeler beim Aktualiséiere vum Kuerf"
|
||||
}
|
||||
"title": "Akafskuerf",
|
||||
"description": "Kuerfverwaltung fir Clienten",
|
||||
"cart": {
|
||||
"title": "Äre Kuerf",
|
||||
"empty": "Äre Kuerf ass eidel",
|
||||
"empty_subtitle": "Setzt Artikelen derbäi fir anzekafen",
|
||||
"continue_shopping": "Weider akafen",
|
||||
"proceed_to_checkout": "Zur Keess"
|
||||
},
|
||||
"item": {
|
||||
"product": "Produkt",
|
||||
"quantity": "Unzuel",
|
||||
"price": "Präis",
|
||||
"total": "Gesamt",
|
||||
"remove": "Ewechhuelen",
|
||||
"update": "Aktualiséieren"
|
||||
},
|
||||
"summary": {
|
||||
"title": "Bestelliwwersiicht",
|
||||
"subtotal": "Zwëschesumm",
|
||||
"shipping": "Liwwerung",
|
||||
"estimated_shipping": "Gëtt bei der Keess berechent",
|
||||
"tax": "MwSt.",
|
||||
"total": "Gesamtsumm"
|
||||
},
|
||||
"validation": {
|
||||
"invalid_quantity": "Ongëlteg Unzuel",
|
||||
"min_quantity": "Mindestunzuel ass {min}",
|
||||
"max_quantity": "Héichstunzuel ass {max}",
|
||||
"insufficient_inventory": "Nëmmen {available} verfügbar"
|
||||
},
|
||||
"messages": {
|
||||
"item_added": "Artikel an de Kuerf gesat",
|
||||
"item_updated": "Kuerf aktualiséiert",
|
||||
"item_removed": "Artikel aus dem Kuerf ewechgeholl",
|
||||
"cart_cleared": "Kuerf eidel gemaach",
|
||||
"product_not_available": "Produkt net verfügbar",
|
||||
"error_adding": "Feeler beim Derbäisetzen an de Kuerf",
|
||||
"error_updating": "Feeler beim Aktualiséiere vum Kuerf"
|
||||
},
|
||||
"permissions": {
|
||||
"view": "Kuerf kucken",
|
||||
"view_desc": "Clientekuerf kucken",
|
||||
"manage": "Kuerf verwalten",
|
||||
"manage_desc": "Clientekuerf änneren a verwalten"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user