[TikiWiki-commits] [Git][tikiwiki/tiki][27.x] [BP][FIX] Composed Parameters for Plugin Alias
"Baraka Kinywa \(@bkinywa24\) via TikiWiki-cvs" <[email protected]>
| Newsgroups | gmane.comp.cms.tiki.cvs |
|---|---|
| Message-ID | <68a847e6d9290_2c98e3b038397@gitlab-sidekiq-low-urgency-cpu-bound-v2-5f94765dd4-5fjkc.mail> |
Baraka Kinywa pushed to branch 27.x at Tiki Wiki CMS Groupware / Tiki
Commits:
ab1decfe by Aksanti Bahiga at 2025-08-22T13:29:09+03:00
[BP][FIX] Composed Parameters for Plugin Alias
---
* [BP][FIX] Composed Parameters for Plugin Alias
---
* fix conflict
See merge request tikiwiki/tiki!8301
See merge request tikiwiki/tiki!8368
- - - - -
2 changed files:
- lib/jquery_tiki/tiki-admin.js
- templates/admin/include_textarea.tpl
Changes:
=====================================
lib/jquery_tiki/tiki-admin.js
=====================================
@@ -64,19 +64,33 @@
/**
* General purpose param adding icons
*/
- $('.add-param', $pluginAliasAdmin).on("click", function () {
- var $fieldset = $(this).closest("fieldset"),
- // for composed args/params (fieldset) the template comes after the one for a new param,
+ $(".add-param", $pluginAliasAdmin).on("click", function () {
+ var $fieldset = $(this).closest("fieldset");
+ // for composed args/params (fieldset) the template comes after the one for a new param,
// so we need closestDescendent, not :first
- $template = $fieldset.closestDescendent(".param.d-none"),
- $clone = $template.clone(),
+ var $template = $fieldset.closestDescendent(".param.d-none");
+ // If no proper template found, use the first visible param as fallback
+ if ($template.length === 0) {
+ var $fallbackParam = $fieldset.find(".param").first();
+ $template = $fallbackParam;
+ }
+ var $clone = $template.clone(true),
index = $fieldset.find(".param:visible").length;
-
- $clone.find('input:not(.select2-search__field)').each(function () {
- $(this).attr('name', $(this).attr('name').replace('__NEW__', index));
- }).val('').find('label').each(function () {
- $(this).attr('for', $(this).attr('for').replace('__NEW__', index));
- });
+ $clone
+ .find("input")
+ .each(function () {
+ const $input = $(this);
+ const name = $input.attr("name");
+ if (name && name.includes("__NEW__")) {
+ const newName = name.replace("__NEW__", index);
+ $input.attr("name", newName);
+ } else if (name) {
+ // For fallback cloning, update the index in existing names
+ const newName = name.replace(/\[(\d+)\]/, `[${index}]`);
+ $input.attr("name", newName);
+ }
+ $input.val("");
+ });
$clone.find(".d-none").addBack().removeClass("d-none");
@@ -122,8 +136,9 @@
return false;
});
- $($pluginAliasAdmin).on("click", ".delete-param", function () {
- $(this).popover("hide").parents(".param").remove();
+ $($pluginAliasAdmin).on("click", ".delete-param", function (e) {
+ e.preventDefault();
+ $(this).popover("hide").closest(".param").remove();
});
setTimeout(function () {
=====================================
templates/admin/include_textarea.tpl
=====================================
@@ -550,7 +550,7 @@
{tr}Parameter{/tr}
</label>
<div class="col-sm-5">
- <input class="form-control" type="text" name="bodyparam[{$token|escape}][token]" id="bodyparam[{$token|escape}][token]" value="{if $token neq '__NEW__'}{$token|escape}{/if}">
+ <input class="form-control {if $token eq '__NEW__'} d-none{/if}" type="text" name="bodyparam[{$token|escape}][token]" id="bodyparam[{$token|escape}][token]" value="{if $token neq '__NEW__'}{$token|escape}{/if}">
</div>
<div class="col-sm-1">
{icon name='delete' class='text-danger delete-param tips btn btn-link' title="{tr}Delete this body parameter{/tr}"}
@@ -561,7 +561,7 @@
{tr}Encoding{/tr}
</label>
<div class="col-sm-6">
- <select class="form-select" name="bodyparam[{$token|escape}][encoding]" id="bodyparam[{$token|escape}][encoding]">
+ <select class="form-select {if $token eq '__NEW__'} d-none{/if}" name="bodyparam[{$token|escape}][encoding]" id="bodyparam[{$token|escape}][encoding]">
{foreach ['none','html','url'] as $val}
<option value="{$val|escape}" {if $detail.encoding eq $val}selected="selected"{/if}>
{$val|escape}
@@ -575,7 +575,7 @@
{tr}Argument source (if different){/tr}
</label>
<div class="col-sm-6">
- <input class="form-control" type="text" name="bodyparam[{$token|escape}][input]" id="bodyparam[{$token|escape}][input]" value="{$detail.input|escape}">
+ <input class="form-control {if $token eq '__NEW__'} d-none{/if}" type="text" name="bodyparam[{$token|escape}][input]" id="bodyparam[{$token|escape}][input]" value="{$detail.input|escape}">
</div>
</div>
<div class="mb-3 row">
@@ -583,7 +583,7 @@
{tr}Default value{/tr}
</label>
<div class="col-sm-6">
- <input class="form-control" type="text" name="bodyparam[{$token|escape}][default]" id="bodyparam[{$token|escape}][default]" value="{$detail.default|escape}">
+ <input class="form-control {if $token eq '__NEW__'} d-none{/if}" type="text" name="bodyparam[{$token|escape}][default]" id="bodyparam[{$token|escape}][default]" value="{$detail.default|escape}">
</div>
</div>
<hr>
@@ -607,7 +607,7 @@
{tr}Parameter{/tr}
</label>
<div class="col-sm-7">
- <input class="form-control" type="text" name="cparams[{$token|escape}][token]" id="cparams[{$token|escape}][token]" value="{if $token neq '__NEW__'}{$token|escape}{/if}">
+ <input class="form-control {if $token eq '__NEW__'} d-none{/if}" type="text" name="cparams[{$token|escape}][token]" id="cparams[{$token|escape}][token]" value="{if $token neq '__NEW__'}{$token|escape}{/if}">
</div>
<div class="col-sm-1">
{icon name='delete' class='text-danger delete-param tips btn btn-link' title="{tr}Delete this composed argument{/tr}"}
@@ -618,32 +618,32 @@
{tr}Pattern{/tr}
</label>
<div class="col-sm-8">
- <input class="form-control" type="text" name="cparams[{$token|escape}][pattern]" id="cparams[{$token|escape}][pattern]" value="{$detail.pattern|escape}">
+ <input class="form-control {if $token eq '__NEW__'} d-none{/if}" type="text" name="cparams[{$token|escape}][pattern]" id="cparams[{$token|escape}][pattern]" value="{$detail.pattern|escape}">
</div>
</div>
- <fieldset class="ms-5">
+ <fieldset class="ms-3 p-1">
<legend class="h4">
{tr}Composed parameters{/tr} {icon name="add" class='add-param text-success tips' title='|{tr}Add composed parameter{/tr}'}
</legend>
{foreach $detail.params as $t => $d}
<div class="clearfix param{if $t eq '__NEW__'} d-none{/if}">
<div class="mb-3 row">
- <label class="col-form-label col-sm-6" for="cparams[{$token|escape}][params][{$t|escape}][token]">
+ <label class="col-form-label col-sm-4" for="cparams[{$token|escape}][params][{$t|escape}][token]">
{tr}Parameter{/tr}
</label>
- <div class="col-sm-5">
- <input class="form-control" type="text" name="cparams[{$token|escape}][params][{$t|escape}][token]" id="cparams[{$token|escape}][params][{$t|escape}][token]" value="{if $t neq '__NEW__'}{$t|escape}{/if}">
+ <div class="col-sm-7">
+ <input class="form-control {if $t eq '__NEW__'} d-none{/if}" type="text" name="cparams[{$token|escape}][params][{$t|escape}][token]" id="cparams[{$token|escape}][params][{$t|escape}][token]" value="{if $t neq '__NEW__'}{$t|escape}{/if}">
</div>
<div class="col-sm-1">
{icon name='delete' class='text-danger delete-param tips btn btn-link' title="{tr}Delete this composed parameter{/tr}"}
</div>
</div>
<div class="mb-3 row">
- <label class="col-form-label col-sm-6" for="cparams[{$token|escape}][pattern]">
+ <label class="col-form-label col-sm-4" for="cparams[{$token|escape}][pattern]">
{tr}Encoding{/tr}
</label>
- <div class="col-sm-6">
- <select class="form-select" name="cparams[{$token|escape}][params][{$t|escape}][encoding]" id="cparams[{$token|escape}][pattern]">
+ <div class="col-sm-8">
+ <select class="form-select {if $t eq '__NEW__'} d-none{/if}" name="cparams[{$token|escape}][params][{$t|escape}][encoding]" id="cparams[{$token|escape}][pattern]">
{foreach ['none','html','url'] as $val}
<option value="{$val|escape}" {if $d.encoding eq $val}selected="selected"{/if}>{$val|escape}</option>
{/foreach}
@@ -651,19 +651,19 @@
</div>
</div>
<div class="mb-3 row">
- <label class="col-form-label col-sm-6" for="cparams[{$token|escape}][params][{$t|escape}][input]">
+ <label class="col-form-label col-sm-4" for="cparams[{$token|escape}][params][{$t|escape}][input]">
{tr}Argument source (if different):{/tr}
</label>
- <div class="col-sm-6">
- <input class="form-control" type="text" name="cparams[{$token|escape}][params][{$t|escape}][input]" id="cparams[{$token|escape}][params][{$t|escape}][input]" value="{$d.input|escape}"/>
+ <div class="col-sm-8">
+ <input class="form-control {if $t eq '__NEW__'} d-none{/if}" type="text" name="cparams[{$token|escape}][params][{$t|escape}][input]" id="cparams[{$token|escape}][params][{$t|escape}][input]" value="{$d.input|escape}"/>
</div>
</div>
<div class="mb-3 row">
- <label class="col-form-label col-sm-6" for="cparams[{$token|escape}][params][{$t|escape}][input]">
+ <label class="col-form-label col-sm-4" for="cparams[{$token|escape}][params][{$t|escape}][input]">
{tr}Default value{/tr}
</label>
- <div class="col-sm-6">
- <input class="form-control" type="text" name="cparams[{$token|escape}][params][{$t|escape}][default]" id="cparams[{$token|escape}][params][{$t|escape}][input]" value="{$d.default|escape}"/>
+ <div class="col-sm-8">
+ <input class="form-control {if $t eq '__NEW__'} d-none{/if}" type="text" name="cparams[{$token|escape}][params][{$t|escape}][default]" id="cparams[{$token|escape}][params][{$t|escape}][input]" value="{$d.default|escape}"/>
</div>
</div>
<hr>
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/ab1decfe2e1b95d2bfda5d741e2b1771e587f49d
--
View it on GitLab: https://gitlab.com/tikiwiki/tiki/-/commit/ab1decfe2e1b95d2bfda5d741e2b1771e587f49d
You're receiving this email because of your account on gitlab.com.
_______________________________________________
TikiWiki-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tikiwiki-cvs