This PR adds a "Page layout" setting to the Framed Theme, with a new single page layout that shows the menu on every page instead of in a frame.
It's meant for people who can't or don't want to use frames, so the Legacy Theme is no longer the only option without frames.
The menu code moved out of `left.cgi` into a shared menu-lib.pl, so both layouts build the same menu, frames look the same as before, and `left.cgi` shrinks from about 400 lines to about 60.
The menu's module search box now follows the global "webminsearch" permission, which the old frame code never actually checked.
One exception to be aware of. A server opened through Webmin Servers Index always uses frames, because that index only rewrites the links and redirects of framed pages.
This PR updates the framed gray theme with a modern light and dark design while keeping its frameset and old class names without adding any extra complexity on Perl or JS side.
The left menu becomes a floating panel with product logos, a product switch and a loading bar, and the system information page uses the new UI lib widgets for tiles and cards.
Color scheme that follows the browser or can be forced from the theme settings.
With this change every module has a complete lang/tr and no lang/tr.auto
files are left in the tree:
mount 92 new strings - Linux/FreeBSD/IRIX mount options
bandwidth 83 strings - bandwidth monitoring and reports
mailboxes 78 new strings - attachments, iCal, HTML composer
firewall 76 new strings - IPset, physdev, chain rename and move
gray-theme 72 strings - theme layout and system information page
fdisk 72 new strings - parted, NVME, partition table format
servers 71 new strings - automatic server discovery
stunnel 69 strings - SSL tunnels via inetd/xinetd
cron 68 new strings - crond control and manual editing
custom 63 new strings - SQL commands and output formats
cluster-copy 62 strings - scheduled file copies across servers
firewall/move_chain reads "Current change" in lang/en where "Current
chain" is clearly meant; it is translated by intent as "Mevcut zincir".
Command and format names that appear verbatim in configuration files
(parted, fdisk, hdparm, SMART, GPT, MS-DOS, NVME, tmpfs, CIFS, NFSv4,
inetd, xinetd, crond, IPset, physdev, TCP-wrappers) stay in English.
*Note: This is important if we want to support tags inside tab name, for example in case of showing a count of elements using HTML tag created with `ui_tag('tt')`