fix(help): use dynamic PRODUCT_NAME instead of hardcoded StreetUp in help panel and docs
This commit is contained in:
parent
30051938d5
commit
e4d182596b
17 changed files with 86 additions and 28 deletions
|
|
@ -1,12 +1,12 @@
|
|||
# Concepts clés de StreetUp
|
||||
# Concepts clés de {product_name}
|
||||
|
||||
StreetUp organise la gestion du patrimoine et des opérations terrain autour de plusieurs notions fondamentales. Comprendre leurs rôles et leurs distinctions permet d'optimiser l'utilisation de la plateforme.
|
||||
{product_name} organise la gestion du patrimoine et des opérations terrain autour de plusieurs notions fondamentales. Comprendre leurs rôles et leurs distinctions permet d'optimiser l'utilisation de la plateforme.
|
||||
|
||||
---
|
||||
|
||||
## 1. Vue d'ensemble du cycle de vie
|
||||
|
||||
L'écosystème StreetUp s'articule autour du cycle suivant :
|
||||
L'écosystème {product_name} s'articule autour du cycle suivant :
|
||||
1. **Patrimoine** (`Asset`) : Les équipements physiques présents sur le terrain.
|
||||
2. **Constat & Diagnostic** (`Observation` / `Inspection`) : Ce que l'on signale à chaud ou ce que l'on contrôle de manière formelle.
|
||||
3. **Travaux & Maintenance** (`Intervention` / `Projet`) : L'action corrective ou préventive menée sur le terrain.
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ Une fois le contrôle créé, vous pouvez y ajouter des remarques spécifiques p
|
|||
5. Cliquez sur **Enregistrer** pour lier ces remarques au rapport de contrôle.
|
||||
|
||||
## 4. Réaliser des contrôles sur le terrain (Application Hors-ligne)
|
||||
Pour faciliter les contrôles directement sur site, StreetUp dispose d'une application mobile dédiée (PWA) :
|
||||
Pour faciliter les contrôles directement sur site, {product_name} dispose d'une application mobile dédiée (PWA) :
|
||||
- **Installation** : Lors de votre connexion sur mobile ou tablette, l'application vous propose d'ajouter le raccourci "Contrôles" sur votre écran d'accueil.
|
||||
- **Fonctionnement hors-ligne** : Vous pouvez réaliser l'ensemble de votre contrôle, noter vos remarques de conformité et prendre des photos, même dans les zones sans couverture réseau (4G/Wi-Fi).
|
||||
- **Synchronisation automatique** : Dès que votre appareil retrouve une connexion Internet, vos rapports de contrôles et photos sont synchronisés de manière transparente avec le serveur central.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# <span style="color: #0d6efd;">Prise en main de StreetUp</span>
|
||||
# <span style="color: #0d6efd;">Prise en main de {product_name}</span>
|
||||
|
||||
Bienvenue dans StreetUp ! Ce guide rapide va vous présenter les bases de la navigation et de l'utilisation de l'application.
|
||||
Bienvenue dans {product_name} ! Ce guide rapide va vous présenter les bases de la navigation et de l'utilisation de l'application.
|
||||
|
||||
## <span style="color: #0d6efd;">1. La barre de navigation principale (Header)</span>
|
||||
En haut de votre écran, vous trouverez la barre d'outils contenant :
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Statuts des interventions
|
||||
|
||||
Le cycle de vie d'une intervention dans StreetUp est jalonné par 15 statuts successifs. Chaque statut correspond à une étape précise de planification, de réalisation ou de validation administrative.
|
||||
Le cycle de vie d'une intervention dans {product_name} est jalonné par 15 statuts successifs. Chaque statut correspond à une étape précise de planification, de réalisation ou de validation administrative.
|
||||
|
||||
Voici l'explication détaillée de chaque étape :
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
# Sleutelbegrippen in StreetUp
|
||||
# Sleutelbegrippen in {product_name}
|
||||
|
||||
StreetUp organiseert het beheer van de openbare ruimte en terreinoperaties rond verschillende fundamentele begrippen. Het begrijpen van hun rol en onderlinge verschillen helpt om het platform optimaal te gebruiken.
|
||||
{product_name} organiseert het beheer van de openbare ruimte en terreinoperaties rond verschillende fundamentele begrippen. Het begrijpen van hun rol en onderlinge verschillen helpt om het platform optimaal te gebruiken.
|
||||
|
||||
---
|
||||
|
||||
## 1. Overzicht van de levenscyclus
|
||||
|
||||
Het StreetUp-ecosysteem is opgebouwd rond de volgende cyclus:
|
||||
Het {product_name}-ecosysteem is opgebouwd rond de volgende cyclus:
|
||||
1. **Patrimonium** (`Asset`): Fysieke uitrustingen op het terrein.
|
||||
2. **Vaststelling & Diagnose** (`Observatie` / `Inspectie`): Meldingen ter plaatse of formele controles.
|
||||
3. **Werken & Onderhoud** (`Interventie` / `Project`): Correctieve of preventieve acties op het terrein.
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ Nadat de controle is aangemaakt, kunt u specifieke opmerkingen toevoegen om uw v
|
|||
5. Klik op **Opslaan** om deze opmerkingen aan het controlerapport te koppelen.
|
||||
|
||||
## 4. Controles uitvoeren op het terrein (Offline applicatie)
|
||||
Om controles rechtstreeks op het terrein te vergemakkelijken, heeft StreetUp een speciale mobiele applicatie (PWA):
|
||||
Om controles rechtstreeks op het terrein te vergemakkelijken, heeft {product_name} een speciale mobiele applicatie (PWA):
|
||||
- **Installatie**: Wanneer u inlogt op een mobiel apparaat of tablet, stelt de applicatie voor om de snelkoppeling "Controles" aan uw startscherm toe te voegen.
|
||||
- **Offline werking**: U kunt uw volledige controle uitvoeren, uw opmerkingen over de conformiteit noteren en foto's maken, zelfs in zones zonder netwerkbereik (4G/Wi-Fi).
|
||||
- **Automatische synchronisatie**: Zodra uw apparaat weer verbinding heeft met internet, worden uw controlerapporten en foto's naadloos gesynchroniseerd met de centrale server.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# <span style="color: #0d6efd;">Aan de slag met StreetUp</span>
|
||||
# <span style="color: #0d6efd;">Aan de slag met {product_name}</span>
|
||||
|
||||
Welkom bij StreetUp! Deze snelle handleiding toont u de basisprincipes van navigatie en gebruik van de applicatie.
|
||||
Welkom bij {product_name}! Deze snelle handleiding toont u de basisprincipes van navigatie en gebruik van de applicatie.
|
||||
|
||||
## <span style="color: #0d6efd;">1. De hoofdnavigatiebalk (Header)</span>
|
||||
Bovenaan uw scherm vindt u de knoppenbalk met:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Statussen van interventies
|
||||
|
||||
De levenscyclus van een interventie in StreetUp wordt gekenmerkt door 15 opeenvolgende statussen. Elke status komt overeen met een specifieke fase van planning, uitvoering of administratieve validatie.
|
||||
De levenscyclus van een interventie in {product_name} wordt gekenmerkt door 15 opeenvolgende statussen. Elke status komt overeen met een specifieke fase van planning, uitvoering of administratieve validatie.
|
||||
|
||||
Hier is de gedetailleerde uitleg van elke stap:
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -240,16 +240,18 @@ msgid "Rechercher un guide..."
|
|||
msgstr "Rechercher un guide..."
|
||||
|
||||
#: common/templates/common/components/help_panel.html:46
|
||||
msgid "Prise en main de StreetUp"
|
||||
msgstr "Prise en main de StreetUp"
|
||||
#, python-format
|
||||
msgid "Prise en main de %(product_name)s"
|
||||
msgstr "Getting started with %(product_name)s"
|
||||
|
||||
#: common/templates/common/components/help_panel.html:47
|
||||
msgid "Découvrez les bases de l'application, la navigation et le menu."
|
||||
msgstr ""
|
||||
|
||||
#: common/templates/common/components/help_panel.html:55
|
||||
msgid "Concepts et notions clés de StreetUp"
|
||||
msgstr ""
|
||||
#, python-format
|
||||
msgid "Concepts et notions clés de %(product_name)s"
|
||||
msgstr "Key concepts of %(product_name)s"
|
||||
|
||||
#: common/templates/common/components/help_panel.html:56
|
||||
msgid ""
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -232,16 +232,18 @@ msgid "Rechercher un guide..."
|
|||
msgstr "Rechercher un guide..."
|
||||
|
||||
#: common/templates/common/components/help_panel.html:46
|
||||
msgid "Prise en main de StreetUp"
|
||||
msgstr "Prise en main de StreetUp"
|
||||
#, python-format
|
||||
msgid "Prise en main de %(product_name)s"
|
||||
msgstr "Prise en main de %(product_name)s"
|
||||
|
||||
#: common/templates/common/components/help_panel.html:47
|
||||
msgid "Découvrez les bases de l'application, la navigation et le menu."
|
||||
msgstr "Découvrez les bases de l'application, la navigation et le menu."
|
||||
|
||||
#: common/templates/common/components/help_panel.html:55
|
||||
msgid "Concepts et notions clés de StreetUp"
|
||||
msgstr "Concepts et notions clés de StreetUp"
|
||||
#, python-format
|
||||
msgid "Concepts et notions clés de %(product_name)s"
|
||||
msgstr "Concepts et notions clés de %(product_name)s"
|
||||
|
||||
#: common/templates/common/components/help_panel.html:56
|
||||
msgid "Comprendre la différence entre Assets, Observations, Inspections, Interventions et Contrôles."
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -232,16 +232,18 @@ msgid "Rechercher un guide..."
|
|||
msgstr ""
|
||||
|
||||
#: common/templates/common/components/help_panel.html:46
|
||||
msgid "Prise en main de StreetUp"
|
||||
msgstr ""
|
||||
#, python-format
|
||||
msgid "Prise en main de %(product_name)s"
|
||||
msgstr "Aan de slag met %(product_name)s"
|
||||
|
||||
#: common/templates/common/components/help_panel.html:47
|
||||
msgid "Découvrez les bases de l'application, la navigation et le menu."
|
||||
msgstr ""
|
||||
|
||||
#: common/templates/common/components/help_panel.html:55
|
||||
msgid "Concepts et notions clés de StreetUp"
|
||||
msgstr ""
|
||||
#, python-format
|
||||
msgid "Concepts et notions clés de %(product_name)s"
|
||||
msgstr "Sleutelbegrippen van %(product_name)s"
|
||||
|
||||
#: common/templates/common/components/help_panel.html:56
|
||||
msgid "Comprendre la différence entre Assets, Observations, Inspections, Interventions et Contrôles."
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@
|
|||
<!-- Guide 1: Prise en main -->
|
||||
<a href="#" class="help-guide-link" data-doc-name="prise_en_main">
|
||||
<div>
|
||||
<h6 class="help-guide-link-title">{% translate "Prise en main de StreetUp" %}</h6>
|
||||
<h6 class="help-guide-link-title">{% blocktranslate with product_name=product_name %}Prise en main de {{ product_name }}{% endblocktranslate %}</h6>
|
||||
<p class="help-guide-link-desc">{% translate "Découvrez les bases de l'application, la navigation et le menu." %}</p>
|
||||
</div>
|
||||
<i class="bi bi-chevron-right help-guide-link-icon"></i>
|
||||
|
|
@ -52,7 +52,7 @@
|
|||
<!-- Guide: Concepts et notions clés -->
|
||||
<a href="#" class="help-guide-link" data-doc-name="concepts">
|
||||
<div>
|
||||
<h6 class="help-guide-link-title">{% translate "Concepts et notions clés de StreetUp" %}</h6>
|
||||
<h6 class="help-guide-link-title">{% blocktranslate with product_name=product_name %}Concepts et notions clés de {{ product_name }}{% endblocktranslate %}</h6>
|
||||
<p class="help-guide-link-desc">{% translate "Comprendre la différence entre Assets, Observations, Inspections, Interventions et Contrôles." %}</p>
|
||||
</div>
|
||||
<i class="bi bi-chevron-right help-guide-link-icon"></i>
|
||||
|
|
|
|||
|
|
@ -627,3 +627,44 @@ class TerritoryTests(TestCase):
|
|||
self.assertEqual(boundary_feature["geometry"]["type"], "MultiPolygon")
|
||||
|
||||
|
||||
class HelpDocumentTests(TestCase):
|
||||
def setUp(self):
|
||||
self.user = User.objects.create_user(username="help_user", password="password123")
|
||||
self.config = UserConfig.objects.create(user=self.user)
|
||||
|
||||
def test_get_help_document_replaces_product_name(self):
|
||||
self.client.force_login(self.user)
|
||||
with self.settings(PRODUCT_NAME="LokoCustom"):
|
||||
response = self.client.get(reverse("common:get_help_document", kwargs={"doc_name": "prise_en_main"}))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
data = response.json()
|
||||
self.assertIn("html", data)
|
||||
self.assertIn("LokoCustom", data["html"])
|
||||
self.assertNotIn("StreetUp", data["html"])
|
||||
|
||||
def test_help_panel_template_renders_product_name(self):
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils import translation
|
||||
|
||||
with translation.override("fr"):
|
||||
rendered_fr = render_to_string("common/components/help_panel.html", {
|
||||
"product_name": "LokoTest",
|
||||
"user": self.user,
|
||||
})
|
||||
self.assertIn("Prise en main de LokoTest", rendered_fr)
|
||||
self.assertIn("Concepts et notions clés de LokoTest", rendered_fr)
|
||||
self.assertNotIn("StreetUp", rendered_fr)
|
||||
|
||||
with translation.override("nl"):
|
||||
rendered_nl = render_to_string("common/components/help_panel.html", {
|
||||
"product_name": "LokoTest",
|
||||
"user": self.user,
|
||||
})
|
||||
self.assertIn("Aan de slag met LokoTest", rendered_nl)
|
||||
self.assertIn("Sleutelbegrippen van LokoTest", rendered_nl)
|
||||
self.assertNotIn("StreetUp", rendered_nl)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -815,6 +815,17 @@ def get_help_document(request, doc_name):
|
|||
except Exception:
|
||||
return JsonResponse({'error': _('Erreur lors de la lecture du document')}, status=500)
|
||||
|
||||
# Dynamic variables replacement (e.g. PRODUCT_NAME, ORGANIZATION_NAME)
|
||||
product_name = getattr(settings, 'PRODUCT_NAME', 'Loko')
|
||||
organization_name = getattr(settings, 'ORGANIZATION_NAME', 'Loko')
|
||||
md_content = (
|
||||
md_content
|
||||
.replace('{product_name}', product_name)
|
||||
.replace('{{ product_name }}', product_name)
|
||||
.replace('{organization_name}', str(organization_name))
|
||||
.replace('{{ organization_name }}', str(organization_name))
|
||||
)
|
||||
|
||||
# Convert Markdown to HTML
|
||||
html_content = markdown.markdown(md_content, extensions=['extra', 'nl2br'])
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue