1
0
mirror of https://gitlab.nic.cz/turris/reforis/foris-js.git synced 2025-06-16 13:46:16 +02:00

Compare commits

..

2 Commits

Author SHA1 Message Date
40309b4b4d Update Snapshots 2021-04-15 12:26:16 +02:00
8c929baeb5 Display input's error feedback only after focus 2021-04-15 12:20:58 +02:00
14 changed files with 16643 additions and 10246 deletions

26700
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "foris", "name": "foris",
"version": "5.1.13", "version": "5.1.11",
"description": "Set of components and utils for Foris and its plugins.", "description": "Set of components and utils for Foris and its plugins.",
"author": "CZ.NIC, z.s.p.o.", "author": "CZ.NIC, z.s.p.o.",
"repository": { "repository": {
@ -39,7 +39,7 @@
"babel-loader": "^8.1.0", "babel-loader": "^8.1.0",
"babel-polyfill": "^6.26.0", "babel-polyfill": "^6.26.0",
"bootstrap": "^4.5.0", "bootstrap": "^4.5.0",
"css-loader": "^5.2.4", "css-loader": "^3.5.3",
"eslint": "^6.8.0", "eslint": "^6.8.0",
"eslint-config-prettier": "^6.11.0", "eslint-config-prettier": "^6.11.0",
"eslint-config-reforis": "^1.0.0", "eslint-config-reforis": "^1.0.0",
@ -53,7 +53,7 @@
"react": "16.9.0", "react": "16.9.0",
"react-dom": "16.9.0", "react-dom": "16.9.0",
"react-router-dom": "^5.1.2", "react-router-dom": "^5.1.2",
"react-styleguidist": "^11.1.7", "react-styleguidist": "^11.1.5",
"snapshot-diff": "^0.7.0", "snapshot-diff": "^0.7.0",
"style-loader": "^1.2.1", "style-loader": "^1.2.1",
"webpack": "^5.15.0" "webpack": "^5.15.0"

View File

@ -1,11 +1,11 @@
/* /*
* Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
*/ */
import React from "react"; import React, { useState } from "react";
import { useUID } from "react-uid"; import { useUID } from "react-uid";
import PropTypes from "prop-types"; import PropTypes from "prop-types";
@ -36,8 +36,10 @@ export function Input({
...props ...props
}) { }) {
const uid = useUID(); const uid = useUID();
const [initialErrorFeedbackState, setErrorFeedbackState] = useState(false);
const errorFeedbackIsVisible = !!(initialErrorFeedbackState && error);
const inputClassName = `form-control ${className || ""} ${ const inputClassName = `form-control ${className || ""} ${
error ? "is-invalid" : "" errorFeedbackIsVisible ? "is-invalid" : ""
}`.trim(); }`.trim();
return ( return (
<div className="form-group"> <div className="form-group">
@ -49,14 +51,17 @@ export function Input({
className={inputClassName} className={inputClassName}
type={type} type={type}
id={uid} id={uid}
onFocus={() => setErrorFeedbackState(true)}
{...props} {...props}
/> />
{children} {children}
</div> </div>
{error ? <div className="invalid-feedback">{error}</div> : null} {errorFeedbackIsVisible && (
{helpText ? ( <div className="invalid-feedback">{error}</div>
)}
{helpText && (
<small className="form-text text-muted">{helpText}</small> <small className="form-text text-muted">{helpText}</small>
) : null} )}
</div> </div>
); );
} }

View File

@ -20,7 +20,7 @@ ResetWiFiSettings.propTypes = {
endpoint: PropTypes.string.isRequired, endpoint: PropTypes.string.isRequired,
}; };
export function ResetWiFiSettings({ ws, endpoint }) { export default function ResetWiFiSettings({ ws, endpoint }) {
const [isLoading, setIsLoading] = useState(false); const [isLoading, setIsLoading] = useState(false);
useEffect(() => { useEffect(() => {
@ -54,13 +54,14 @@ export function ResetWiFiSettings({ ws, endpoint }) {
<div className={formFieldsSize}> <div className={formFieldsSize}>
<h2>{_("Reset Wi-Fi Settings")}</h2> <h2>{_("Reset Wi-Fi Settings")}</h2>
<p> <p>
{_(`If a number of wireless cards doesn't match, you may try \ {_(`
to reset the Wi-Fi settings. Note that this will remove the current Wi-Fi \ If a number of wireless cards doesn't match, you may try to reset the Wi-Fi settings. Note that this will remove the
configuration and restore the default values.`)} current Wi-Fi configuration and restore the default values.
`)}
</p> </p>
<div className="text-right"> <div className="text-right">
<Button <Button
className="btn-primary" className="btn-warning"
forisFormSize forisFormSize
loading={isLoading} loading={isLoading}
disabled={isLoading} disabled={isLoading}

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -163,10 +163,6 @@ function DeviceForm({
[deviceIndex]: { [deviceIndex]: {
hwmode: { $set: value }, hwmode: { $set: value },
channel: { $set: "0" }, channel: { $set: "0" },
htmode: {
$set:
value === "11a" ? "VHT80" : "HT20",
},
}, },
}, },
}))} }))}

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -10,7 +10,7 @@ import PropTypes from "prop-types";
import { ForisForm } from "../../form/components/ForisForm"; import { ForisForm } from "../../form/components/ForisForm";
import WiFiForm from "./WiFiForm"; import WiFiForm from "./WiFiForm";
import { ResetWiFiSettings } from "./ResetWiFiSettings"; import ResetWiFiSettings from "./ResetWiFiSettings";
WiFiSettings.propTypes = { WiFiSettings.propTypes = {
ws: PropTypes.object.isRequired, ws: PropTypes.object.isRequired,

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -14,7 +14,7 @@ import { mockJSONError } from "testUtils/network";
import { mockSetAlert } from "testUtils/alertContextMock"; import { mockSetAlert } from "testUtils/alertContextMock";
import { ALERT_TYPES } from "../../../bootstrap/Alert"; import { ALERT_TYPES } from "../../../bootstrap/Alert";
import { ResetWiFiSettings } from "../ResetWiFiSettings"; import ResetWiFiSettings from "../ResetWiFiSettings";
describe("<ResetWiFiSettings/>", () => { describe("<ResetWiFiSettings/>", () => {
const webSockets = new WebSockets(); const webSockets = new WebSockets();

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -116,7 +116,7 @@ describe("<WiFiSettings/>", () => {
enabled: true, enabled: true,
guest_wifi: { enabled: false }, guest_wifi: { enabled: false },
hidden: false, hidden: false,
htmode: "HT80", htmode: "HT40",
hwmode: "11a", hwmode: "11a",
id: 0, id: 0,
password: "TestPass", password: "TestPass",
@ -145,7 +145,7 @@ describe("<WiFiSettings/>", () => {
enabled: true, enabled: true,
guest_wifi: { enabled: false }, guest_wifi: { enabled: false },
hidden: false, hidden: false,
htmode: "HT20", htmode: "HT40",
hwmode: "11g", hwmode: "11g",
id: 0, id: 0,
password: "TestPass", password: "TestPass",
@ -181,7 +181,7 @@ describe("<WiFiSettings/>", () => {
password: "test_password", password: "test_password",
}, },
hidden: false, hidden: false,
htmode: "HT80", htmode: "HT40",
hwmode: "11a", hwmode: "11a",
id: 0, id: 0,
password: "TestPass", password: "TestPass",

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -226,7 +226,7 @@ export function wifiSettingsFixture() {
password: "", password: "",
}, },
hidden: false, hidden: false,
htmode: "HT80", htmode: "HT40",
hwmode: "11a", hwmode: "11a",
id: 0, id: 0,
password: "TestPass", password: "TestPass",
@ -349,7 +349,7 @@ const twoDevices = {
hidden: false, hidden: false,
htmode: "HT40", htmode: "HT40",
hwmode: "11a", hwmode: "11a",
id: 1, id: 0,
password: "TestPass", password: "TestPass",
}, },
], ],
@ -376,7 +376,7 @@ const threeDevices = {
hidden: false, hidden: false,
htmode: "HT40", htmode: "HT40",
hwmode: "11a", hwmode: "11a",
id: 1, id: 0,
password: "TestPass", password: "TestPass",
}, },
{ {
@ -387,7 +387,7 @@ const threeDevices = {
hidden: false, hidden: false,
htmode: "HT40", htmode: "HT40",
hwmode: "11a", hwmode: "11a",
id: 2, id: 0,
password: "", password: "",
}, },
], ],

View File

@ -316,13 +316,16 @@ exports[`<WiFiSettings/> Snapshot both modules disabled. 1`] = `
Reset Wi-Fi Settings Reset Wi-Fi Settings
</h2> </h2>
<p> <p>
If a number of wireless cards doesn't match, you may try to reset the Wi-Fi settings. Note that this will remove the current Wi-Fi configuration and restore the default values.
If a number of wireless cards doesn't match, you may try to reset the Wi-Fi settings. Note that this will remove the
current Wi-Fi configuration and restore the default values.
</p> </p>
<div <div
class="text-right" class="text-right"
> >
<button <button
class="btn btn-primary col-sm-12 col-md-3 col-lg-2" class="btn btn-warning col-sm-12 col-md-3 col-lg-2"
type="button" type="button"
> >
Reset Wi-Fi Settings Reset Wi-Fi Settings
@ -337,7 +340,7 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
- First value - First value
+ Second value + Second value
@@ -479,10 +479,94 @@ @@ -479,10 +479,89 @@
Parameters of the guest network can be set in the Guest network tab. Parameters of the guest network can be set in the Guest network tab.
</small> </small>
@ -395,7 +398,7 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
+ > + >
+ <input + <input
+ autocomplete=\\"new-password\\" + autocomplete=\\"new-password\\"
+ class=\\"form-control is-invalid\\" + class=\\"form-control\\"
+ id=\\"21\\" + id=\\"21\\"
+ required=\\"\\" + required=\\"\\"
+ type=\\"password\\" + type=\\"password\\"
@ -414,11 +417,6 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
+ </button> + </button>
+ </div> + </div>
+ </div> + </div>
+ <div
+ class=\\"invalid-feedback\\"
+ >
+ Password must contain at least 8 symbols
+ </div>
+ <small + <small
+ class=\\"form-text text-muted\\" + class=\\"form-text text-muted\\"
+ > + >
@ -432,7 +430,7 @@ exports[`<WiFiSettings/> Snapshot guest network. 1`] = `
class=\\"form-group switch\\" class=\\"form-group switch\\"
> >
<div <div
@@ -506,10 +590,11 @@ @@ -506,10 +585,11 @@
<div <div
class=\\"text-right\\" class=\\"text-right\\"
> >

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -39,7 +39,6 @@ export { Modal, ModalBody, ModalFooter, ModalHeader } from "./bootstrap/Modal";
// Common // Common
export { RebootButton } from "./common/RebootButton"; export { RebootButton } from "./common/RebootButton";
export { WiFiSettings } from "./common/WiFiSettings/WiFiSettings"; export { WiFiSettings } from "./common/WiFiSettings/WiFiSettings";
export { ResetWiFiSettings } from "./common/WiFiSettings/ResetWiFiSettings";
// Form // Form
export { ForisForm } from "./form/components/ForisForm"; export { ForisForm } from "./form/components/ForisForm";
export { export {

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -18,12 +18,9 @@ export const ForisURLs = {
packageManagement: { packageManagement: {
updateSettings: `${REFORIS_URL_PREFIX}/package-management/update-settings`, updateSettings: `${REFORIS_URL_PREFIX}/package-management/update-settings`,
updates: `${REFORIS_URL_PREFIX}/package-management/updates`, updates: `${REFORIS_URL_PREFIX}/package-management/updates`,
packages: `${REFORIS_URL_PREFIX}/package-management/packages`,
}, },
// Plugins
storage: `${REFORIS_URL_PREFIX}/storage`, storage: `${REFORIS_URL_PREFIX}/storage`,
sentinelAgreement: `${REFORIS_URL_PREFIX}/sentinel/agreement`,
// Notifications links are used with <Link/> inside Router, thus url subdir is not required. // Notifications links are used with <Link/> inside Router, thus url subdir is not required.
overview: "/overview", overview: "/overview",
@ -32,7 +29,7 @@ export const ForisURLs = {
approveUpdates: "/package-management/updates", approveUpdates: "/package-management/updates",
languages: "/package-management/languages", languages: "/package-management/languages",
maintenance: "/administration/maintenance", rebootPage: "/administration/reboot",
luci: "/cgi-bin/luci", luci: "/cgi-bin/luci",
// API // API

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (C) 2020 CZ.NIC z.s.p.o. (http://www.nic.cz/) * Copyright (C) 2020-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
* *
* This is free software, licensed under the GNU General Public License v3. * This is free software, licensed under the GNU General Public License v3.
* See /LICENSE for more information. * See /LICENSE for more information.
@ -7,8 +7,6 @@
/* eslint no-console: "off" */ /* eslint no-console: "off" */
import { ForisURLs } from "../utils/forisUrls";
const PROTOCOL = window.location.protocol === "http:" ? "ws" : "wss"; const PROTOCOL = window.location.protocol === "http:" ? "ws" : "wss";
const URL = process.env.LIGHTTPD const URL = process.env.LIGHTTPD
@ -21,13 +19,7 @@ export class WebSockets {
constructor() { constructor() {
this.ws = new WebSocket(URL); this.ws = new WebSocket(URL);
this.ws.onerror = (e) => { this.ws.onerror = (e) => {
if (window.location.pathname !== ForisURLs.login) { console.error("WS: Error observed:", e);
console.error(
"WS: Error observed, you aren't logged probably."
);
window.location.replace(ForisURLs.login);
}
console.error(`WS: Error: ${e}`);
}; };
this.ws.onmessage = (e) => { this.ws.onmessage = (e) => {
console.debug(`WS: Received Message: ${e.data}`); console.debug(`WS: Received Message: ${e.data}`);

View File

@ -37,11 +37,11 @@ msgstr ""
#: src/common/RebootButton.js:27 #: src/common/RebootButton.js:27
msgid "Reboot request failed." msgid "Reboot request failed."
msgstr "" msgstr "Reboot is required"
#: src/common/RebootButton.js:51 #: src/common/RebootButton.js:51
msgid "Reboot" msgid "Reboot"
msgstr "" msgstr "Reboot"
#: src/common/RebootButton.js:66 #: src/common/RebootButton.js:66
msgid "Warning!" msgid "Warning!"
@ -87,15 +87,16 @@ msgstr ""
#: src/common/WiFiSettings/WiFiForm.js:217 #: src/common/WiFiSettings/WiFiForm.js:217
msgid "auto" msgid "auto"
msgstr "" msgstr "auto"
#: src/common/WiFiSettings/WiFiGuestForm.js:42 #: src/common/WiFiSettings/WiFiGuestForm.js:42
#, fuzzy
msgid "Enable Guest Wi-Fi" msgid "Enable Guest Wi-Fi"
msgstr "" msgstr "Enable Guest Wifi"
#: src/common/WiFiSettings/WiFiGuestForm.js:80 #: src/common/WiFiSettings/WiFiGuestForm.js:80
msgid "Password" msgid "Password"
msgstr "" msgstr "Password"
#: src/common/WiFiSettings/WiFiQRCode.js:71 #: src/common/WiFiSettings/WiFiQRCode.js:71
msgid "Wi-Fi QR Code" msgid "Wi-Fi QR Code"
@ -108,50 +109,52 @@ msgstr ""
#: src/common/WiFiSettings/WiFiSettings.js:78 #: src/common/WiFiSettings/WiFiSettings.js:78
#: src/common/WiFiSettings/WiFiSettings.js:90 #: src/common/WiFiSettings/WiFiSettings.js:90
msgid "SSID can't be longer than 32 symbols" msgid "SSID can't be longer than 32 symbols"
msgstr "" msgstr "SSID can't be longer than 32 symbols"
#: src/common/WiFiSettings/WiFiSettings.js:79 #: src/common/WiFiSettings/WiFiSettings.js:79
#: src/common/WiFiSettings/WiFiSettings.js:92 #: src/common/WiFiSettings/WiFiSettings.js:92
msgid "SSID can't be empty" msgid "SSID can't be empty"
msgstr "" msgstr "SSID can't be empty"
#: src/common/WiFiSettings/WiFiSettings.js:81 #: src/common/WiFiSettings/WiFiSettings.js:81
#: src/common/WiFiSettings/WiFiSettings.js:94 #: src/common/WiFiSettings/WiFiSettings.js:94
#, fuzzy
msgid "SSID can't be longer than 32 bytes" msgid "SSID can't be longer than 32 bytes"
msgstr "" msgstr "SSID can't be longer than 32 symbols"
#: src/common/WiFiSettings/WiFiSettings.js:84 #: src/common/WiFiSettings/WiFiSettings.js:84
#: src/common/WiFiSettings/WiFiSettings.js:97 #: src/common/WiFiSettings/WiFiSettings.js:97
msgid "Password must contain at least 8 symbols" msgid "Password must contain at least 8 symbols"
msgstr "" msgstr "Password must contain at least 8 symbols"
#: src/common/WiFiSettings/constants.js:9 #: src/common/WiFiSettings/constants.js:9
msgid "Disabled" msgid "Disabled"
msgstr "" msgstr "Disabled"
#: src/common/WiFiSettings/constants.js:10 #: src/common/WiFiSettings/constants.js:10
msgid "802.11n - 20 MHz wide channel" msgid "802.11n - 20 MHz wide channel"
msgstr "" msgstr "802.11n - 20 MHz wide channel"
#: src/common/WiFiSettings/constants.js:11 #: src/common/WiFiSettings/constants.js:11
msgid "802.11n - 40 MHz wide channel" msgid "802.11n - 40 MHz wide channel"
msgstr "" msgstr "802.11n - 40 MHz wide channel"
#: src/common/WiFiSettings/constants.js:12 #: src/common/WiFiSettings/constants.js:12
msgid "802.11ac - 20 MHz wide channel" msgid "802.11ac - 20 MHz wide channel"
msgstr "" msgstr "802.11ac - 20 MHz wide channel"
#: src/common/WiFiSettings/constants.js:13 #: src/common/WiFiSettings/constants.js:13
msgid "802.11ac - 40 MHz wide channel" msgid "802.11ac - 40 MHz wide channel"
msgstr "" msgstr "802.11ac - 40 MHz wide channel"
#: src/common/WiFiSettings/constants.js:14 #: src/common/WiFiSettings/constants.js:14
msgid "802.11ac - 80 MHz wide channel" msgid "802.11ac - 80 MHz wide channel"
msgstr "" msgstr "802.11ac - 80 MHz wide channel"
#: src/common/WiFiSettings/constants.js:15 #: src/common/WiFiSettings/constants.js:15
#, fuzzy
msgid "802.11ac - 160 MHz wide channel" msgid "802.11ac - 160 MHz wide channel"
msgstr "" msgstr "802.11ac - 80 MHz wide channel"
#: src/common/WiFiSettings/constants.js:22 #: src/common/WiFiSettings/constants.js:22
msgid "" msgid ""
@ -165,10 +168,13 @@ msgid ""
" WPA2 pre-shared key, that is required to connect to the network.\n" " WPA2 pre-shared key, that is required to connect to the network.\n"
" " " "
msgstr "" msgstr ""
"\n"
" WPA2 pre-shared key, that is required to connect to the network.\n"
" "
#: src/common/WiFiSettings/constants.js:28 #: src/common/WiFiSettings/constants.js:28
msgid "If set, network is not visible when scanning for available networks." msgid "If set, network is not visible when scanning for available networks."
msgstr "" msgstr "If set, network is not visible when scanning for available networks."
#: src/common/WiFiSettings/constants.js:31 #: src/common/WiFiSettings/constants.js:31
msgid "" msgid ""
@ -179,6 +185,12 @@ msgid ""
"usually has less interference, but the signal\n" "usually has less interference, but the signal\n"
" does not carry so well indoors." " does not carry so well indoors."
msgstr "" msgstr ""
"\n"
" The 2.4 GHz band is more widely supported by clients, but tends "
"to have more interference. The 5 GHz band is a\n"
" newer standard and may not be supported by all your devices. It "
"usually has less interference, but the signal\n"
" does not carry so well indoors."
#: src/common/WiFiSettings/constants.js:35 #: src/common/WiFiSettings/constants.js:35
msgid "" msgid ""
@ -190,6 +202,13 @@ msgid ""
" option with 20 MHz wide channel.\n" " option with 20 MHz wide channel.\n"
" " " "
msgstr "" msgstr ""
"\n"
" Change this to adjust 802.11n/ac mode of operation. 802.11n with "
"40 MHz wide channels can yield higher\n"
" throughput but can cause more interference in the network. If you"
" don't know what to choose, use the default\n"
" option with 20 MHz wide channel.\n"
" "
#: src/common/WiFiSettings/constants.js:40 #: src/common/WiFiSettings/constants.js:40
msgid "" msgid ""
@ -202,6 +221,14 @@ msgid ""
"tab.\n" "tab.\n"
" " " "
msgstr "" msgstr ""
"\n"
" Enables Wi-Fi for guests, which is separated from LAN network. "
"Devices connected to this network are allowed to\n"
" access the internet, but aren't allowed to access other devices "
"and the configuration interface of the router.\n"
" Parameters of the guest network can be set in the Guest network "
"tab.\n"
" "
#: src/form/components/ForisForm.js:121 #: src/form/components/ForisForm.js:121
msgid "Settings saved successfully" msgid "Settings saved successfully"
@ -213,15 +240,15 @@ msgstr ""
#: src/form/components/SubmitButton.js:31 #: src/form/components/SubmitButton.js:31
msgid "Updating" msgid "Updating"
msgstr "" msgstr "Updating"
#: src/form/components/SubmitButton.js:34 #: src/form/components/SubmitButton.js:34
msgid "Load settings" msgid "Load settings"
msgstr "" msgstr "Load settings"
#: src/form/components/SubmitButton.js:37 #: src/form/components/SubmitButton.js:37
msgid "Save" msgid "Save"
msgstr "" msgstr "Save"
#: src/utils/ErrorMessage.js:16 #: src/utils/ErrorMessage.js:16
msgid "An error occurred while fetching data." msgid "An error occurred while fetching data."
@ -229,31 +256,31 @@ msgstr ""
#: src/utils/validations.js:13 #: src/utils/validations.js:13
msgid "This is not a valid IPv4 address." msgid "This is not a valid IPv4 address."
msgstr "" msgstr "This is not a valid IPv4 address."
#: src/utils/validations.js:14 #: src/utils/validations.js:14
msgid "This is not a valid IPv6 address." msgid "This is not a valid IPv6 address."
msgstr "" msgstr "This is not a valid IPv6 address."
#: src/utils/validations.js:15 #: src/utils/validations.js:15
msgid "This is not a valid IPv6 prefix." msgid "This is not a valid IPv6 prefix."
msgstr "" msgstr "This is not a valid IPv6 prefix."
#: src/utils/validations.js:16 #: src/utils/validations.js:16
msgid "This is not a valid domain name." msgid "This is not a valid domain name."
msgstr "" msgstr "This is not a valid domain name."
#: src/utils/validations.js:17 #: src/utils/validations.js:17
msgid "This is not a valid DUID." msgid "This is not a valid DUID."
msgstr "" msgstr "This is not a valid DUID."
#: src/utils/validations.js:18 #: src/utils/validations.js:18
msgid "This is not a valid MAC address." msgid "This is not a valid MAC address."
msgstr "" msgstr "This is not a valid MAC address."
#: src/utils/validations.js:19 #: src/utils/validations.js:19
msgid "Doesn't contain a list of emails separated by commas." msgid "Doesn't contain a list of emails separated by commas."
msgstr "" msgstr "Doesn't contain a list of emails separated by commas."
#~ msgid "An unknown error occurred. Check the console for more info." #~ msgid "An unknown error occurred. Check the console for more info."
#~ msgstr "" #~ msgstr ""
@ -262,5 +289,5 @@ msgstr ""
#~ msgstr "" #~ msgstr ""
#~ msgid "Enable" #~ msgid "Enable"
#~ msgstr "" #~ msgstr "Enable"