From e2315be56bd0f11d21ee2516dbf489ddda5b32e6 Mon Sep 17 00:00:00 2001 From: Daniel Mejia Date: Thu, 17 Sep 2026 16:08:10 -0400 Subject: [PATCH] com_groups: add option to allow HTML in group restrict message The join-request page always escaped a group restrict_msg, so managers could not use any markup (links, emphasis, etc.) in the message shown to users requesting to join. Add a component config option, off by default, that lets HTML through unescaped on that page instead. Also switch the message wrapper from

to

so block-level HTML in the message nests validly. Co-Authored-By: Claude Sonnet 5 --- .../admin/language/en-GB/en-GB.com_groups.ini | 2 ++ core/components/com_groups/config/config.xml | 4 ++++ .../com_groups/site/views/membership/tmpl/request.php | 10 +++++++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/core/components/com_groups/admin/language/en-GB/en-GB.com_groups.ini b/core/components/com_groups/admin/language/en-GB/en-GB.com_groups.ini index 5edfa3bf7a5..4003cc26f0c 100644 --- a/core/components/com_groups/admin/language/en-GB/en-GB.com_groups.ini +++ b/core/components/com_groups/admin/language/en-GB/en-GB.com_groups.ini @@ -640,6 +640,8 @@ COM_GROUPS_CONFIG_MEMBERSHIP_MAX_TERM="Maximum term (days)" COM_GROUPS_CONFIG_MEMBERSHIP_MAX_TERM_DESC="Longest end date a group manager may set, in days from today. Zero means no limit." COM_GROUPS_CONFIG_MEMBERSHIP_BATCH="Expiration batch size" COM_GROUPS_CONFIG_MEMBERSHIP_BATCH_DESC="How many lapsed memberships to revoke in a single cron run. The remainder is picked up on the next run." +COM_GROUPS_CONFIG_RESTRICT_MSG_ALLOW_HTML="Allow HTML in restricted join message" +COM_GROUPS_CONFIG_RESTRICT_MSG_ALLOW_HTML_DESC="Render the group's restricted-membership message as HTML on the join request page instead of escaping it as plain text. Off by default; only enable if group managers are trusted to enter safe markup." COM_GROUPS_MEMBERSHIP_REAPER_STALLED="Membership end dates are not being enforced." COM_GROUPS_MEMBERSHIP_REAPER_STALLED_DESC="The 'Group Membership Expiration' cron job has not run in the last 24 hours. Until it runs, memberships past their end date keep their access. Check that cron is running and the job is enabled." COM_GROUPS_MEMBERSHIP_REAPER_OK="Membership expiration last ran %s." diff --git a/core/components/com_groups/config/config.xml b/core/components/com_groups/config/config.xml index 6e783122366..b4319ff6877 100644 --- a/core/components/com_groups/config/config.xml +++ b/core/components/com_groups/config/config.xml @@ -59,6 +59,10 @@ + + + +
diff --git a/core/components/com_groups/site/views/membership/tmpl/request.php b/core/components/com_groups/site/views/membership/tmpl/request.php index ba13a9e5ce4..203be208619 100644 --- a/core/components/com_groups/site/views/membership/tmpl/request.php +++ b/core/components/com_groups/site/views/membership/tmpl/request.php @@ -39,7 +39,15 @@ group->get('restrict_msg')) { ?> -

escape(stripslashes($this->group->get('restrict_msg'))); ?>

+
+ group->get('restrict_msg')); + echo Lang::txt('NOTE') . ': '; + echo \Component::params('com_groups')->get('restrict_msg_allow_html', 0) + ? $restrictMsg + : $this->escape($restrictMsg); + ?> +