From aeccc54cb94b752c251ef334bea9e1d844d05743 Mon Sep 17 00:00:00 2001 From: novgorodschi catalin Date: Sun, 2 Aug 2026 17:03:04 +0300 Subject: [PATCH] fix mass message and sysmessage --- Admin/Templates/massmessage.tpl | 101 ++++++++++++++++++++++++++++++-- Admin/Templates/sysmessage.tpl | 98 ++++++++++++++++++++++++++++--- GameEngine/Lang/en.php | 5 ++ GameEngine/Lang/fr.php | 5 ++ GameEngine/Lang/ro.php | 5 ++ Templates/text_format.tpl | 19 ++++++ 6 files changed, 221 insertions(+), 12 deletions(-) diff --git a/Admin/Templates/massmessage.tpl b/Admin/Templates/massmessage.tpl index 4313b0f4..0abf2c0d 100644 --- a/Admin/Templates/massmessage.tpl +++ b/Admin/Templates/massmessage.tpl @@ -47,7 +47,20 @@ $_SESSION['mass_color'] = $_SESSION['mass_color'] ?? 'black'; .massmsg-form button:hover{background:#d35400} .massmsg-success{margin-top:16px;padding:10px;background:#fef5e7;border:1px solid #e67e22;color:#a04000;border-radius:6px;text-align:center;font-weight:bold} -.massmsg-confirm{background:#fff3cd;border:1px solid #ffeaa7;padding:15px;border-radius:8px;margin-bottom:15px} +.massmsg-confirm{background:#fff3cd;border:1px solid #ffeaa7;padding:12px;border-radius:8px;margin-bottom:12px;color:#6b5900} +/* Previzualizare: fundal alb si text inchis, ca mesajul sa fie lizibil + indiferent ce culoare a fost aleasa pentru titlu. */ +.massmsg-preview{border:1px solid #ddd;border-radius:8px;overflow:hidden;margin-bottom:15px;background:#fff} +.massmsg-preview-head{background:#f4f4f6;border-bottom:1px solid #e2e2e6;padding:7px 12px; + font-size:11px;font-weight:bold;color:#666;text-transform:uppercase;letter-spacing:.5px} +.massmsg-preview-body{padding:16px 18px} +.massmsg-preview-text{color:#2b2b2b;font-size:13px;line-height:1.55;word-wrap:break-word} +.massmsg-preview-text a{color:#2980b9} +/* bara de formatare */ +.bbbar{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px} +.bbbar button{background:#f2f2f4;border:1px solid #d8d8dc;color:#333;border-radius:5px; + padding:4px 10px;font-size:12px;cursor:pointer;line-height:1.2} +.bbbar button:hover{background:#e6e6ea}
@@ -69,8 +82,56 @@ $_SESSION['mass_color'] = $_SESSION['mass_color'] ?? 'black';
-
- + +
+ + ','','','','',''), + $mmText + ); + + // Doar adrese http(s), ca in massmessage.php. Textul e deja escapat, + // deci ghilimelele nu pot iesi din atribut. + $mmText = preg_replace_callback('/\[img\](.*?)\[\/img\]/is', function ($m) { + $u = trim($m[1]); + return preg_match('#^https?://#i', $u) + ? '' + : $u; + }, $mmText); + + $mmText = preg_replace_callback('/\[url\](.*?)\[\/url\]/is', function ($m) { + $u = trim($m[1]); + return preg_match('#^https?://#i', $u) + ? '' . $u . '' + : $u; + }, $mmText); + + $mmColor = preg_match('/^(#[0-9a-fA-F]{3,6}|[a-zA-Z]{3,20})$/', (string) ($_SESSION['mass_color'] ?? '')) + ? $_SESSION['mass_color'] : '#333333'; + ?> + +
+
+
+

+ +

+
+
@@ -104,7 +165,39 @@ $_SESSION['mass_color'] = $_SESSION['mass_color'] ?? 'black';
- +
+ + + + + +
+ + +
@@ -121,7 +168,42 @@ $_SESSION['sys_color'] = $_SESSION['sys_color'] ?? 'black';
- +
+ + + + "; + } + ?> +
+ + +
diff --git a/GameEngine/Lang/en.php b/GameEngine/Lang/en.php index 3889cc33..7366f2d0 100755 --- a/GameEngine/Lang/en.php +++ b/GameEngine/Lang/en.php @@ -4313,3 +4313,8 @@ tz_def('TZ_WS_APPLIED', 'Automatically included in this simulation:'); tz_def('TZ_WS_ITEM_STRENGTH', 'Equipment strength'); tz_def('TZ_WS_ITEM_UNIT', 'Weapon bonus'); tz_def('TZ_WS_VS_NATARS', 'Against Natars'); + +////////////////////////////////////////////////////////////////////////////////////////////////////// +// MESAJ DE SISTEM - previzualizare +////////////////////////////////////////////////////////////////////////////////////////////////////// +tz_def('ADM_PREVIEW', 'Preview'); diff --git a/GameEngine/Lang/fr.php b/GameEngine/Lang/fr.php index b7026996..6637368a 100644 --- a/GameEngine/Lang/fr.php +++ b/GameEngine/Lang/fr.php @@ -4256,3 +4256,8 @@ tz_def('TZ_WS_APPLIED', 'Inclus automatiquement dans cette simulation :'); tz_def('TZ_WS_ITEM_STRENGTH', 'Force de l\'equipement'); tz_def('TZ_WS_ITEM_UNIT', 'Bonus d\'arme'); tz_def('TZ_WS_VS_NATARS', 'Contre les Natars'); + +////////////////////////////////////////////////////////////////////////////////////////////////////// +// MESAJ DE SISTEM - previzualizare +////////////////////////////////////////////////////////////////////////////////////////////////////// +tz_def('ADM_PREVIEW', 'Aperçu'); diff --git a/GameEngine/Lang/ro.php b/GameEngine/Lang/ro.php index 25fad1e8..acf86e16 100644 --- a/GameEngine/Lang/ro.php +++ b/GameEngine/Lang/ro.php @@ -4053,3 +4053,8 @@ tz_def('TZ_WS_APPLIED', 'Incluse automat in aceasta simulare:'); tz_def('TZ_WS_ITEM_STRENGTH', 'Forta echipamentului'); tz_def('TZ_WS_ITEM_UNIT', 'Bonus de arma'); tz_def('TZ_WS_VS_NATARS', 'Contra Natarilor'); + +////////////////////////////////////////////////////////////////////////////////////////////////////// +// MESAJ DE SISTEM - previzualizare +////////////////////////////////////////////////////////////////////////////////////////////////////// +tz_def('ADM_PREVIEW', 'Previzualizare'); diff --git a/Templates/text_format.tpl b/Templates/text_format.tpl index cd08cc5b..58a83dc7 100644 --- a/Templates/text_format.tpl +++ b/Templates/text_format.tpl @@ -43,6 +43,25 @@ $bbMap = array( */ $txt = str_replace(array_keys($bbMap), array_values($bbMap), $txt); +/** + * --------------------------------------------------------- + * Culoare: [color=#rrggbb]...[/color] + * + * Se accepta DOAR cod hexazecimal, verificat cu expresie regulata. Fara asta, + * un mesaj de sistem ar putea strecura CSS arbitrar in pagina fiecarui jucator. + * --------------------------------------------------------- + */ +$txt = preg_replace( + '/\[color=(#[0-9a-fA-F]{3,6})\]/', + '', + $txt +); +// Inchidem doar atatea etichete cate s-au deschis: un cod de culoare invalid +// nu trebuie sa lase un orfan in pagina jucatorului. +$colorOpen = substr_count($txt, '