[TikiWiki-commits] [Git][tikiwiki/tiki][master] [FIX][UX] Improve SubscribeNewsletter input group layout and icon alignment

"luci \(@luciash\) via TikiWiki-cvs" <[email protected]>
Newsgroups gmane.comp.cms.tiki.cvs
Message-ID <69b842efd57f4_3b18d5e4538a1@gitlab-sidekiq-low-urgency-cpu-bound-v2-69484575d6-69lkn.mail>

luci pushed to branch master at Tiki Wiki CMS Groupware / Tiki


Commits:
0d88bdee by Olivier Kango at 2026-03-16T15:51:33+00:00
[FIX][UX] Improve SubscribeNewsletter input group layout and icon alignment
---
* [FIX][UX] DRY subscribe newsletter button label rendering

* [FIX] Load plugin CSS via inline link tag to avoid headers-already-sent error

* [FIX] Enter your email address

* [UX] Shorten email input placeholder text

* [FIX][UX] Improve SubscribeNewsletter input group layout and icon alignment

* [FIX][UX] Prevent SubscribeNewsletter wikisyntax parsing from breaking module layout

* [FIX][UX] Improve SubscribeNewsletter input group layout and icon alignment

See merge request tikiwiki/tiki!9754

- - - - -


3 changed files:

- lib/wiki-plugins/wikiplugin_subscribenewsletter.php
- templates/wiki-plugins/wikiplugin_subscribenewsletter.tpl
- + themes/base_files/feature_css/wikiplugin-subscribenewsletter.css


Changes:

=====================================
lib/wiki-plugins/wikiplugin_subscribenewsletter.php
=====================================
@@ -86,6 +86,7 @@ function wikiplugin_subscribenewsletter($data, $params)
     global $prefs, $user;
     $userlib = TikiLib::lib('user');
     $tikilib = TikiLib::lib('tiki');
+    $parserlib = TikiLib::lib('parser');
     $smarty = TikiLib::lib('smarty');
     global $nllib;
     include_once('lib/newsletters/nllib.php');
@@ -146,6 +147,7 @@ function wikiplugin_subscribenewsletter($data, $params)
     $wpSubscribe = '';
     $wpError = '';
     $subscribeEmail = '';
+    $subscribeThanks = '';
     $useCaptcha = $params['usecaptcha'];
     if ($params['usecaptcha'] !== 0) {  // To keep previous behaviour with previous versions where the parameter doesn't exist
         $useCaptcha = 1;
@@ -171,7 +173,7 @@ function wikiplugin_subscribenewsletter($data, $params)
                 }
                 if ($result) {
                     $wpSubscribe = 'y';
-                    $smarty->assign('subscribeThanks', empty($thanks) ? $data : $thanks);
+                    $subscribeThanks = empty($thanks) ? $data : $thanks;
                     if ($info['validateAddr'] == 'y' && ! $user) {
                         // For anonymous users with email validation required
                         $smarty->assign('confirmationSent', true);
@@ -187,19 +189,27 @@ function wikiplugin_subscribenewsletter($data, $params)
             }
         }
     }
+    if ($params['wikisyntax'] == 1 && ! empty($subscribeThanks)) {
+        $subscribeThanks = $parserlib->parse_data($subscribeThanks, ['is_html' => true]);
+    }
+
     $smarty->assign_by_ref('wpSubscribe', $wpSubscribe);
     $smarty->assign_by_ref('wpError', $wpError);
+    $subscribeButtonLabel = empty($button) ? $data : $button;
+    if (empty($subscribeButtonLabel)) {
+        $subscribeButtonLabel = tra('Subscribe to the newsletter:') . ' ' . $info['name'];
+    }
+
+    $smarty->assign('subscribeThanks', $subscribeThanks);
+    $smarty->assign('subscribeThanksIsHtml', $params['wikisyntax'] == 1);
     $smarty->assign('subscribeEmail', $subscribeEmail);
-    $smarty->assign('subcribeMessage', empty($button) ? $data : $button);
+    $smarty->assign('subscribeButtonLabel', $subscribeButtonLabel);
     $smarty->assign('inmodule', ! empty($inmodule) ? "moduleSubscribeNL" : "");
     $smarty->assign_by_ref('subscribeInfo', $info);
     $smarty->assign('useCaptcha', $useCaptcha);
     $smarty->assign('alreadySubscribed', $alreadySubscribed);
     $smarty->assign('alreadySubscribedMessage', $alreadySubscribedMessage);
     $res = $smarty->fetch('wiki-plugins/wikiplugin_subscribenewsletter.tpl');
-    if ($params["wikisyntax"] == 1) {
-        return $res;
-    } else {        // if wikisyntax != 1 : no parsing of any wiki syntax
-        return '~np~' . $res . '~/np~';
-    }
+
+    return '~np~' . $res . '~/np~';
 }


=====================================
templates/wiki-plugins/wikiplugin_subscribenewsletter.tpl
=====================================
@@ -2,7 +2,11 @@
     {if empty($subscribeThanks)}
         {tr}Subscription confirmed!{/tr}
     {else}
-        {$subscribeThanks|escape}
+        {if !empty($subscribeThanksIsHtml)}
+            {$subscribeThanks nofilter}
+        {else}
+            {$subscribeThanks|escape}
+        {/if}
     {/if}
     
 {elseif $alreadySubscribed}
@@ -11,6 +15,7 @@
     {/remarksbox}
 
 {else}
+    <link rel="stylesheet" href="themes/base_files/feature_css/wikiplugin-subscribenewsletter.css">
     <form name="wpSubscribeNL" method="post">
         <input type="hidden" name="wpNlId" value="{$subscribeInfo.nlId|escape}">
 
@@ -20,14 +25,15 @@
             {/remarksbox}
         {/if}
 
-        <div class="d-flex flex-row flex-wrap align-items-center row">
+        <div class="form-inline row wp-subscribe-inline">
             <div class="input-group">
-                <input type="email" class="form-control fa" id="wpEmail" name="wpEmail" size="80" value="{$subscribeEmail|escape}" placeholder="{tr}Enter your email address{/tr}" required>
-                {if empty($subcribeMessage)}
-                    <input type="submit" class="btn btn-primary" name="wpSubscribe" value="{tr}Subscribe to the newsletter:{/tr} {$subscribeInfo.name}">
-                {else}
-                    <input type="submit" class="btn btn-primary" name="wpSubscribe" value="{$subcribeMessage|escape}">
-                {/if}
+                <div class="wp-subscribe-email-wrap">
+                    <span class="wp-subscribe-email-icon"><i class="fa fa-envelope" aria-hidden="true"></i></span>
+                    <input type="email" class="form-control" id="wpEmail" name="wpEmail" size="50" value="{$subscribeEmail|escape}" placeholder="{tr}Enter your email address{/tr}" required>
+                </div>
+                <div class="input-group-append">
+                    <input type="submit" class="btn btn-primary" name="wpSubscribe" value="{$subscribeButtonLabel|escape}">
+                </div>
             </div>
         </div>
 


=====================================
themes/base_files/feature_css/wikiplugin-subscribenewsletter.css
=====================================
@@ -0,0 +1,43 @@
+.wp-subscribe-inline .input-group {
+    display: flex;
+    flex-wrap: nowrap;
+    width: 100%;
+    align-items: stretch;
+}
+
+.wp-subscribe-inline .wp-subscribe-email-wrap {
+    position: relative;
+    flex: 1 1 auto;
+}
+
+.wp-subscribe-inline .wp-subscribe-email-icon {
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 1rem;
+    display: flex;
+    align-items: center;
+    color: var(--secondary, #6c757d);
+    pointer-events: none;
+    z-index: 3;
+}
+
+.wp-subscribe-inline .wp-subscribe-email-wrap #wpEmail {
+    height: 100%;
+    width: 100%;
+    padding-left: 2.75rem;
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+}
+
+.wp-subscribe-inline .input-group-append,
+.wp-subscribe-inline .input-group-append .btn {
+    display: flex;
+    align-items: stretch;
+}
+
+.wp-subscribe-inline .input-group-append .btn {
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+    margin-left: -1px;
+}



View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/0d88bdeeed65132549d56bf4b03e627ec918793f

-- 
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/0d88bdeeed65132549d56bf4b03e627ec918793f
You're receiving this email because of your account on gitlab.com. Manage all notifications: https://gitlab.com/-/profile/notifications | Help: https://gitlab.com/help

_______________________________________________
TikiWiki-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.