summaryrefslogtreecommitdiffhomepage
path: root/modules/luci-base/htdocs
AgeCommit message (Collapse)Author
2018-11-19luci-base: further hash calculation signedness bugfixesJo-Philipp Wich
- 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>
2018-11-19luci-base: cbi.js: fix sfh() signedness bug for strings with 3 trailing bytesJo-Philipp Wich
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>
2018-11-19luci-base: cbi.js: fix sfh() hash calculation over multibyte sequencesJo-Philipp Wich
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>
2018-11-16luci-base: xhr.js: rework class, handle expired sessionJo-Philipp Wich
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>
2018-11-14luci-base: cbi.js: add modal dialog functionsJo-Philipp Wich
Add two new functions showModal() and hideModal() which will fade in and close an open modal respectively. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-14luci-base, themes: dropdown behaviour improvementsJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-14luci-base: cbi.js: remove dead code in cbi_validate_field()Jo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-14luci-base: cbi.js: enable validation for dropdown fieldsJo-Philipp Wich
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>
2018-11-14luci-base: cbi.js: set .value property of cbi dropdown elementsJo-Philipp Wich
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>
2018-11-14luci-base: cbi.js: properly handle cbi tooltips on nested elementsJo-Philipp Wich
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>
2018-11-14luci-base: cbi.js: avoid using .form property directlyJo-Philipp Wich
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>
2018-11-14luci-base: cbi.js: fix passing multiple dropdown values in change eventJo-Philipp Wich
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>
2018-11-11luci-base: fix translation issuesINAGAKI Hiroshi
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>
2018-11-05luci-base: cbi.js: add client-side hexstring datatype validatorJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: add heuristics to attribute handling in E()Jo-Philipp Wich
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>
2018-11-05luci-base, themes: rework dynlist and dropdown widgetsJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: rework dropdown implementationJo-Philipp Wich
- 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>
2018-11-05luci-base: cbi.js: utilize node.closest() if availableJo-Philipp Wich
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>
2018-11-05luci-base: cbi.js: drop cbi_bind()Jo-Philipp Wich
Just use node.addEventListener() directly since all reasonably recent browsers support it nowadays. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: rework client side input validationJo-Philipp Wich
- 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>
2018-11-05luci-base: cbi.js: fix corner case in IPv6() address parserJo-Philipp Wich
The implementation allowed a hexadecimal string without any colons. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base, themes: add tooltip helpers & stylesJo-Philipp Wich
Add the required JS and CSS infrastructure to support rich hover/focus tooltips for element. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: switch to client side translationJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-11-05luci-base: cbi.js: add client side translation infrastructureJo-Philipp Wich
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>
2018-10-28Add missing variable declarations in JavaScript codeStefan Weil
This fixes errors reported by LGTM. Signed-off-by: Stefan Weil <sw@weilnetz.de>
2018-10-17luci-base: fix cbi dropdown quirks with MS EdgeJo-Philipp Wich
On MS Edge, the behaviour of "value" attributes on "li" elements is unreliable, so use the "data-" prefix to circumvent the problem. Ref: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/19320991/ Fixes: #2224 Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-10-11luci-base: cbi.js: remove dead codeJo-Philipp Wich
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>
2018-10-11luci-base: cbi.js: code cleanupsJo-Philipp Wich
- unify code style - add matchesElem() helper - replace nodeName checks with selector tests - replace className manipulations with classList operations Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-10-10luci-base: cbi.js: recognize invalid input in dropdown create fieldJo-Philipp Wich
This is required to allow for validating the create field values in later commits. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-27luci-base: xhr.js: decode JSON for POST requests as wellJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-23luci-base: cbi.js: fade to-be-deleted section when hovering delete buttonJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-23luci-base: cbi.js: use adjacent button dynlist add/remove buttonsJo-Philipp Wich
Change the cbi.js code to create a div based button element instead of an image button. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-18luci-base: cbi.js: add cbi_submit() helperJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-17luci-base: remove unused iconsJo-Philipp Wich
- The wifi_big.png / wifi_big_disabled.png icons were used on the wireless overview page which now uses badges with normal sized icons - The encryption.png / encryption_disabled.png icons were never used at all Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-13luci-base: xhr: increase poll request timeoutJo-Philipp Wich
Some status requests can take quite some time to finish, the LuCI DSL status information in particular. Since the polling loop code already takes care of not relaunching requests which are already running, increase the per iteration timeout to up to five times the poll interval. This should be sufficient to let most operations complete. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-12luci-base: add icons for alias interfacesJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-12luci-base: xhr.js: use JSON.parse() and pass request duration to callbacksJo-Philipp Wich
JSON.parse() is supported on all modern browsers and a far better solution than the hakish and potentially dangerous eval(). Also calculate the duration of request and pass it as 3rd argument to the callback function, this makes it easier to calculate request delays or poll intervals in code using XHR. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-09luci-base: cbi.js: avoid setting empty cell title attributesJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-07-09luci-base: cbi.js: add NodeList.forEach() polyfill for IE 11Jo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-22luci-base: cbi.js: add tooltip handling and responsive table helper codeJo-Philipp Wich
- make findParent() globally available - add code for initializing rich cbi tooltips - introduce cbi_update_table() helper to auto-assign responsive attributes to table markup Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-22luci-base: xhr.js: defer starting poll queueJo-Philipp Wich
Defer the start of the queue poll loop until the document has been loaded. This allows all XHR.poll() invocations on the page to register their handlers before the first batch of requests is made. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-06-08luci-base: add markup, JS and CSS for new dropdownJo-Philipp Wich
This commit introduces the required code for a new, markup based dropdown widget which can be used as a styleable alternative to select boxes or radio/checkbox button groups. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-30luci-base: cbi.js: remove unused serialize functionsJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-30luci-base: cbi.js: fix cbi_row_swap() after recent table markup changesJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-28luci-base: add element creation helper to cbi.jsJo-Philipp Wich
Add a new helper function `E()` to cbi.js which can be used to conveniently build HTML markup. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-05-05luci-base: xhr.js: fix timeout setting with IE 11Jo-Philipp Wich
Internet Explorer 11 requires the timeout to be applied after the open() call, otherwise an invlaid state exception will be raised Fixes aa6c97154 ("luci-base: extend xhr.js") Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-04-26luci-base: extend xhr.jsJo-Philipp Wich
Add timeout options to get() and post() and introduce XHR.stop() to support stopping a poll operation. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-04-04luci-base: add a strict flag to the hostname validatorJo-Philipp Wich
Some applications, e.g. dnsmasq, do not allow hostnames starting with an underscore, therefor extend the existing hostname datatype validator with a `strict` which disallows a leading underscore. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2018-02-16luci-base: rework client side IP validation types and support "hostid" typeJo-Philipp Wich
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2017-10-25luci-base: fix client side "host" datatype validatorJo-Philipp Wich
Fixes #1413. Reported-by: Wojciech Jowsa <wojciech.jowsa@gmail.com> Signed-off-by: Jo-Philipp Wich <jo@mein.io>