- Instantiate tab menus on the client side
- Simplify server side markup generation
- Show error indicators in cbi tabs
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The new `tooltip-open` and `tooltip-close` events allow other code to hook
into the tooltip div rendering, e.g. to populate it with custom markup.
Also ignore tooltip events originating from descendant elements while
we're at it.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Not every user knows which trigger does what. To make this clear, the
triggers are now translated with a short help text.
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
The showTooltip() and hideTooltip() functions have been moved to luci.js
Reported-by: brv phoenix <feixuekaka1@gmail.com>
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Multiple iptables listing commands might be triggered in parallel due
to the XHR polling, so use the -w flag to wait for the lock to become
free.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Use the same ordering logic for building the dispatch tree and for
querying the children of a given node.
Fixes#2338.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This feature was never used, is hardly documented and appears to be
designed to fiddle with the internal dispatch tree state.
Given that, simply drop the related code to simplify the dispatcher
class somewhat.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The default for 802.11r option ft_psk_generate_local
was changed a few months ago by openwrt/openwrt@3cc56a5
That change was a bit awkward, as it made hostapd to
overlook the possibly existing r0kh values by default
unless the user explicitly disables the new default.
Adapt LuCI by changing the default for ft_psk_generate_local
into 'enabled'.
But ensure that LuCI does not delete the existing key values
by not making the r0kh and r1kh fields to depend on this.
Note that this is just a quick fix for the wrong default value
causing problems, but not yet a complete fix for all the options.
In the long run it might be better to make the detail options
to depend on local generation.
Reference also to LuCI PR #2102
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Introduce a new luci.dom class which groups the DOM manipulation helpers
such as E(), findParent(), matchesElem() etc.
Provide wrappers for the old functions to ease the transition to the new
functions.
Also add a new widget helper function L.itemlist() which consolidates
the item enumeration formatting code found on various pages.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Introduce a new script file luci.js which is included by default and
intended to be the common location of functions currently scattered
in cbi.js and xhr.js.
The luci.js file provides a LuCI() class which - among other things -
implements helpers to construct URL paths and making HTTP requests.
A singleton instance of the class is instantiated as window.L upon
load and preset with the necessary environment information.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Commit 94d8c9a7a accidentally overwrite the rewording of strings made in
an earlier commit.
Fixes: 94d8c9a7a ("luci-base: simplify apply widget code")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Split password, dropbear and SSH key configuration into separate pages in
order to improve the form layout and to simplify the code.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- cbi.js: make sure to treat single bytes as signed char when
handling end cases
- template_lmo.c: make sure to treat single bytes as signed
char when handling end cases, avoids hash miscalculations
on ARM
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Replace a sign-propagating right shift by a zero-filling right shift to avoid
calculating a wrong hash code in the three-trailing-bytes case.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The C side implementation of the hash operates on bytes while the JS variant
operated on UTF-16 codepoints, leading to miscalculations on input strings
containing multibyte sequences.
Recode the given string to an internal UTF-8 byte representation and
calculate the hash over that.
Fixes client side mapping of translation strings containing non-ASCII
characters.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Drop very old IE compat code, restructure class, align code style with
other files and properly handle JSON mimetypes with charset trailer.
Also detect session related 403 errors and show a modal prompting
to re-login.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Send a custom LuCI X-Header to indicate that a login is required to access
the requested resource. This is mainly intended for xhr.js to be able to
intercept such responses and popup an authentication dialog.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This provides a more accurate description for the theme selection.
Signed-off-by: Angus Ding <angus.ding@gmail.com>
[reword commit message]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Add a button to each row in the wireless assoclist table to allow
disconnecting clients using the ubus del_client method if the underlying
radio interface supports it.
Ref: https://github.com/openwrt/luci/pull/2271
Submitted-by: Wang805447391 <805447391@qq.com>
[move deauth function to luci-base next to the existing assoclist function,
require post security, fix parameter check condition, hide button if not
supported by the radio, disable button after call, squash commits, fix
whitespace, reword subject, add commit message]
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Move the old luci.model.ipkg utility class into a separate package and
let the components using it depend on the new library package.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Switch the system controller to the common luci.sys.process.exec() function
and drop the local ltn12_popen() and fork_exec() helpers.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Rework the parameter handling to both prevent a crash when no parameter is
given and to prevent root command injection through the mtd index part of
the parameter value.
Fixes: 9840d310e ("modules: add backup module for mtdblock devices")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- Drop embedded CSS in favor to new global rules
- Drop extraneous include of cbi.js
- Use showModal() facilities
- Fix a cosmetic bug in countdown timeout handling
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Directly attach validation handlers to cbi dropdowns as well, this allows
validating dropdown choices made by the user, similar to how plain select
boxes are handled by the cbi JavaScript.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
In order to make cbi dropdowns usable for validation and other code
expecting native form elements, set the .value DOM property on the
dropdown parent element whenever the selection is changed.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Rework the tooltip event delegation logic to prevent hiding the tooltop
when the cursor is moved to a children of the tooltip container element.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
In order to prepare support for calling cbi validation on non-native form
widgets, remove direct usages of the node.form property and lookup the
containing form using findParent() instead.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Due to a misspelled property name, only the first value was passed in
the event details.
Fixes: c2b570998 ("luci-base: cbi.js: rework dropdown implementation")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Commit 7c7821833 ("luci-base, themes: rework dynlist and dropdown widgets")
changed the way we initialize dynamic lists on client side, avoiding the
need for pre-rendering the items on the server side.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The filesystem option doesn't include additional filesystem included with /etc/filesystems, this is usefull if someone have ntfs-3g installed and wants to force use the external utility to mount partition instead of the default present in the kernel (if it's supported)
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
'non-wildcard' interfaces enables dnsmasq's '--bind-dynamic' mode.
This binds dynamically to interfaces rather than wildcard addresses
*and* keeps track of interface comings/goings via a unique Linux api.
Quoting dnsmasq's author "bind-dynamic (bind individual addresses,
keep up with changes in interface config) ... On linux, there's actually
no sane reason not to use --bind-dynamic, and it's only not the default
for historical reasons."
listen/exclude interfaces may be used independently of bind dynamic mode
so removed the bogus dependency of 'nonwildcard' enabling access to
'listen/exclude' interfaces - they may be used in any mode.. In fact
the dnsmasq init script takes notice of include/exclude interfaces
irrespective of the 'nonwildcard' parameter.
Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Give the user the possibility to define and interface for the netdev
trigger which is not available at the moment. This is usefull if a
interface is not presented on configuration time.
Signed-off-by: Florian Eckert <fe@dev.tdt.de>
Fixed several issues for translation.
- add translation markup to "Expecting "
- add missing ")" into "valid time (HH:MM:SS"
Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Thanks to a recent commit, the translation files will now
have info about locations where the string is used. That
can help is deciding the correct translation, as all contexts
are more easily found.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
If a given attribute value is a function, register it as event listener,
if it is an object, filter it through JSON.stringify(), else set it
as-is.
This helps to reduce some boiler-plate code when building DOM structures.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- Refactor event handler closures into class methods and bind them instead
- Fix quirk in dropdown placement calculation
- Different dropdown placement strategy on touch devices
- Broadcast custom "cbi-dropdown-change" event when value is changed
- Implement setValues() method to alter dropdown selection
- Prevent creating empty custom values
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Use node.closest() in findParent() when available since it should be faster
than manaually traversing the ancestor chain.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
- Refactor and fix datatype validation functions
- Turn the type compilation and validation into a proper class
- Display tooltip with error hint on invalid inputs
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Implement the string hash algorithm used by LuCI's translation system in
JavaScript and provide a `_()` translation wrapper function to lookup
messages in the global string table.
Once client side translation loading is activated in a later commit,
JavaScript code can use the same string translation mechanism as server
side Lua code, e.g. `_("Static Routes")` would yield "Statische Routen"
when the German translation is loaded.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Add a new /admin/translations/ endpoint which exposes the loaded system
translations as JavaScript file.
Once referenced by <script>, the endpoint will create a `window.TR` object
containing the entire translation string table for use on the client side.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Drop load(), loadc(), string() and stringf() from the luci.i18n class since
these functions are either no longer unused or were never used to begin with.
Also slightly rework the module to only use local symbols and unify the
module require style.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The i18n.loadc() function has been a no-op since almost six years so it
makes no sense to invoke it anymore.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Rework the setlanguage() implementation to actually switch catalogues
if another language has been loaded previously and change it to return
the effectively loaded language tag.
Also improve input parameter validation and accept tags in both lower
or upper case.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Introduce a new luci.template.parser.get_translations() function which will
iterate all loaded translation entries and pass the to the given callback
function.
This is useful to expose the loaded translations in other formats, e.g. for
wrapping them into JSON feeds.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Add missing translations and update existing not quite correct translations.
Also removed unnecessary dots at the end of some translations.
Signed-off-by: Anton Kikin <a.kikin@tano-systems.com>
Update timezone data to 2018f
http://mm.icann.org/pipermail/tz-announce/2018-October/000051.html
Volgograd moves from +03 to +04 on 2018-10-28.
Fiji ends DST 2019-01-13, not 2019-01-20.
Most of Chile changes DST dates, effective 2019-04-06.
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Remove some superfluous code which was added with a previous commit.
Fixes: 8270f10f1 ("luci-base: cbi.js: code cleanups")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Since commit f6bfac211 ("luci-mod-status: rework iptables status page"),
nothing in luci-base depends on the iptparser class anymore, so fold it
out into a separate package and let the few apps that require it depend
on the new library package.
Saves about 10K uncompressed in luci-base while the iptables status
rework enlarged the markup by roughly 5KB, saving roughly 5KB of size
overall.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
The zone forwarding list widget misleadingly displays the intra-zone
forwarding policy as default policy action when no forwardings exist
instead of the appropriate global defaults forwarding policy which is
the one applied to inter-zone forwarded traffic.
Fix the issue by displaying the defaults policy and not the per-zone
policy to match what the firewall implementation is actually doing.
Fixes: #2213
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
When creating a new zone through the firewall zone selector widget,
validate the given name before creating new items.
Depends on commit 0b6ae96f2 ("luci-base: cbi.js: recognize invalid
input in dropdown create field").
Fixes: #2211
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
It's completely OK to select a bridge as the underlying interface of
other interfaces, say a tunnel or PPPoE. The only case which should be
forbidden is bridge over bridge.
Signed-off-by: David Yang <mmyangfl@gmail.com>
Rename "Apply unchecked" to "Apply anyway" for better clarity and update
the base translation files accordingly.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This option is usefull to solve some problems with ath10k-ct and random client disconnect. This also adds some extra option to tune inactivity settings
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>