luci-base: add clone action for tables
authorPaul Donald <newtwen+github@gmail.com>
Sun, 24 Nov 2024 00:50:40 +0000 (01:50 +0100)
committerPaul Donald <newtwen+github@gmail.com>
Sun, 24 Nov 2024 14:55:24 +0000 (15:55 +0100)
commit22cccf7b042e537b1e1b99fdae8bf18fa646b997
tree32469ad4771ddd4c88fa638eb5101b08dd73160f
parent2ce85291bdd70accbb1863bfb32ddf18bcb7b3fe
luci-base: add clone action for tables

This augments CBITableSection, affecting types which extend it, i.e.
CBIGridSection.

Setting a table 'cloneable' property to true reveals a column of clone
buttons who designate the current entry as a clone source. Clicking the
clone button duplicates the data of that section_id into a new entry,
while the new entry gets a new and unique SID. E.g.

s = m.section(form.GridSection, 'foo', _('Bar'));
...
s.cloneable = true;

Clone and add actions differ: clone will not open a dialogue. That is a
user exercise.

One may set the put_next flag to false to put the new clone last, or
true to put it next (after the clone source).

This uses a new uci action which fulfills the behaviour: clone

It is possible for the uci clone action to be used independently.

See also:
https://forum.openwrt.org/t/add-clone-button-to-luci-configurations-esp-in-firewall/196232

Signed-off-by: Paul Donald <newtwen+github@gmail.com>
modules/luci-base/htdocs/luci-static/resources/form.js
modules/luci-base/htdocs/luci-static/resources/uci.js