]> git.mxchange.org Git - friendica.git/commitdiff
Wrap each addon settings form in their own form tag
authorHypolite Petovan <hypolite@mrpetovan.com>
Mon, 28 Jun 2021 02:11:45 +0000 (22:11 -0400)
committerHypolite Petovan <hypolite@mrpetovan.com>
Mon, 28 Jun 2021 03:15:27 +0000 (23:15 -0400)
- The single form tag was preventing a given addon settings to be saved if another addon had an empty required field.
- Instead of concatenating the addon form HTML through Hook::callAll, we loop manually through the hooks, appending the HTML to an array.

mod/settings.php
view/templates/settings/addons.tpl
view/theme/frio/templates/settings/addons.tpl

index b248f017e69a08e335761938558c92002504a58a..c94490a87baae53999f40b8d8ab6ccb1bbac7721 100644 (file)
@@ -502,21 +502,20 @@ function settings_content(App $a)
        }
 
        if (($a->argc > 1) && ($a->argv[1] === 'addon')) {
-               $settings_addons = "";
+               $addon_settings_forms = [];
 
-               $r = q("SELECT * FROM `hook` WHERE `hook` = 'addon_settings' ");
-               if (!DBA::isResult($r)) {
-                       $settings_addons = DI::l10n()->t('No Addon settings configured');
+               foreach (DI::dba()->select('hook', ['file', 'function'], ['hook' => 'addon_settings']) as $hook) {
+                       $data = '';
+                       Hook::callSingle(DI::app(), 'addon_settings', [$hook['file'], $hook['function']], $data);
+                       $addon_settings_forms[] = $data;
                }
 
-               Hook::callAll('addon_settings', $settings_addons);
-
-
                $tpl = Renderer::getMarkupTemplate('settings/addons.tpl');
                $o .= Renderer::replaceMacros($tpl, [
                        '$form_security_token' => BaseModule::getFormSecurityToken("settings_addon"),
                        '$title'        => DI::l10n()->t('Addon Settings'),
-                       '$settings_addons' => $settings_addons
+                       '$no_addons_settings_configured' => DI::l10n()->t('No Addon settings configured'),
+                       '$addon_settings_forms' => $addon_settings_forms,
                ]);
                return $o;
        }
index 567ac81b7f7eab9c1a7e5737cd55098091151073..e30732d17ae5662f8e7b1322efd4febe1620ff64 100644 (file)
@@ -1,11 +1,14 @@
-
 <h1>{{$title}}</h1>
 
+{{foreach $addon_settings_forms as $addon_settings_form}}
 
 <form action="settings/addon" method="post" autocomplete="off">
-<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+       <input type="hidden" name="form_security_token" value="{{$form_security_token}}">
+       {{$addon_settings_form nofilter}}
+</form>
 
-{{$settings_addons nofilter}}
+{{foreachelse}}
 
-</form>
+<p>{{$no_addon_settings_configured}}</p>
 
+{{/foreach}}
index b14552381dd0d70682210f890a61aa7691f17c87..f6e2d610869255d154035fa40f129af8e47fbd03 100644 (file)
@@ -2,11 +2,17 @@
        {{* include the title template for the settings title *}}
        {{include file="section_title.tpl" title=$title}}
 
+{{foreach $addon_settings_forms as $addon_settings_form}}
+
        <form action="settings/addon" method="post" autocomplete="off">
-       <input type="hidden" name="form_security_token" value="{{$form_security_token}}">
+               <input type="hidden" name="form_security_token" value="{{$form_security_token}}">
+               {{$addon_settings_form nofilter}}
+       </form>
 
-       {{$settings_addons nofilter}}
+{{foreachelse}}
 
-       </form>
+       <div class="alert alert-info" role="alert">{{$no_addon_settings_configured}}</div>
+
+{{/foreach}}
 
 </div>
\ No newline at end of file