diff --git a/.manus/db/db-query-1763927802607.json b/.manus/db/db-query-1763927802607.json
new file mode 100644
index 0000000..9d4178e
--- /dev/null
+++ b/.manus/db/db-query-1763927802607.json
@@ -0,0 +1,9 @@
+{
+ "query": "ALTER TABLE emailTemplates ADD COLUMN bodyContent TEXT AFTER footerText;",
+ "command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute ALTER TABLE emailTemplates ADD COLUMN bodyContent TEXT AFTER footerText;",
+ "rows": [],
+ "messages": [],
+ "stdout": "",
+ "stderr": "",
+ "execution_time_ms": 602
+}
\ No newline at end of file
diff --git a/client/src/const.ts b/client/src/const.ts
index 08f9c00..fc72d42 100644
--- a/client/src/const.ts
+++ b/client/src/const.ts
@@ -2,7 +2,7 @@ export { COOKIE_NAME, ONE_YEAR_MS } from "@shared/const";
export const APP_TITLE = import.meta.env.VITE_APP_TITLE || "App";
-export const APP_LOGO = "https://placehold.co/128x128/E1E7EF/1F2937?text=App";
+export const APP_LOGO = "/itinova-logo.png";
// Generate login URL at runtime so redirect URI reflects the current origin.
export const getLoginUrl = () => {
diff --git a/client/src/pages/AdminEmailTemplates.tsx b/client/src/pages/AdminEmailTemplates.tsx
index 148ebc9..8b6acb9 100644
--- a/client/src/pages/AdminEmailTemplates.tsx
+++ b/client/src/pages/AdminEmailTemplates.tsx
@@ -32,6 +32,7 @@ export default function AdminEmailTemplates() {
headerBgColor: "#2563eb",
headerTextColor: "#ffffff",
headerTitle: "Formation Manager Itinova",
+ bodyContent: "",
footerText: "",
active: true,
});
@@ -73,6 +74,7 @@ export default function AdminEmailTemplates() {
headerBgColor: currentTemplate.headerBgColor,
headerTextColor: currentTemplate.headerTextColor,
headerTitle: currentTemplate.headerTitle,
+ bodyContent: currentTemplate.bodyContent || "",
footerText: currentTemplate.footerText || "",
active: currentTemplate.active,
});
@@ -83,6 +85,7 @@ export default function AdminEmailTemplates() {
upsertMutation.mutate({
...formData,
logoUrl: formData.logoUrl || null,
+ bodyContent: formData.bodyContent || null,
footerText: formData.footerText || null,
});
};
@@ -97,6 +100,7 @@ export default function AdminEmailTemplates() {
headerBgColor: currentTemplate.headerBgColor,
headerTextColor: currentTemplate.headerTextColor,
headerTitle: currentTemplate.headerTitle,
+ bodyContent: currentTemplate.bodyContent || "",
footerText: currentTemplate.footerText || "",
active: currentTemplate.active,
});
@@ -136,9 +140,11 @@ export default function AdminEmailTemplates() {
${formData.headerTitle}
+ ${formData.bodyContent ? formData.bodyContent.replace(/\n/g, '
') : `
Exemple de contenu
Bonjour,
Ceci est un exemple de prévisualisation de votre template d'email personnalisé.
+ `}
Information importante
Ce bloc utilise la couleur principale que vous avez choisie.
@@ -313,6 +319,20 @@ export default function AdminEmailTemplates() {
/>
+
+