From 414e0c5e69f2b775f72150c6da40a96c8a9b0e3b Mon Sep 17 00:00:00 2001 From: Roman Holinec <3ko@pixeon.sk> Date: Mon, 10 Jun 2024 14:00:41 +0000 Subject: [PATCH 1/3] Translated using Weblate (Slovak) Currently translated at 13.7% (184 of 1334 strings) Translation: Grist/client Translate-URL: https://hosted.weblate.org/projects/grist/client/sk/ --- static/locales/sk.client.json | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/static/locales/sk.client.json b/static/locales/sk.client.json index 898c96cf..0ee86e76 100644 --- a/static/locales/sk.client.json +++ b/static/locales/sk.client.json @@ -185,7 +185,9 @@ "Widget does not require any permissions.": "Widget nevyžaduje žiadne povolenia.", "Widget needs to {{read}} the current table.": "Widget vyžaduje {{read}} aktuálnu tabuľku.", "Widget needs {{fullAccess}} to this document.": "Widget vyžaduje {{fullAccess}} k tomuto dokumentu.", - "No document access": "Bez prístupu k dokumentu" + "No document access": "Bez prístupu k dokumentu", + "Clear selection": "Vyčistiť výber", + "No {{columnType}} columns in table.": "V tabuľke nie sú žiadne stĺpce {{columnType}}." }, "AppModel": { "This team site is suspended. Documents can be read, but not modified.": "Táto tímová stránka je pozastavená. Dokumenty je možné čítať, ale nie upravovať." @@ -198,5 +200,25 @@ "Apply": "Použiť", "Cancel": "Zrušiť", "Default cell style": "Predvolený štýl bunky" + }, + "DataTables": { + "Delete {{formattedTableName}} data, and remove it from all pages?": "Odstrániť údaje {{formattedTableName}} a odobrať ich zo všetkých stránok?", + "Duplicate Table": "Duplikovať Tabuľku", + "Raw Data Tables": "Tbuľky s nespracovanými údajmi", + "Table ID copied to clipboard": "ID tabuľky bolo skopírované do schránky", + "Record Card": "Karta Záznamu", + "Edit Record Card": "Úprava Karty Záznamu", + "Click to copy": "Kliknutím skopírovať", + "You do not have edit access to this document": "Nemáte prístup k úprave tohto dokumentu", + "Record Card Disabled": "Zakázaná Karta Záznamu", + "Rename Table": "Premenovať tabuľku", + "{{action}} Record Card": "{{action}} Kartu Záznamu", + "Remove Table": "Odstrániť tabuľku" + }, + "DocHistory": { + "Activity": "Aktivita", + "Beta": "Beta", + "Compare to Previous": "Porovnať s Predchádzajúcim", + "Compare to Current": "Porovnať s Aktuálnym" } } From e6e09e8645904cc8fae207de1b3724274e8e23f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jordi=20Guti=C3=A9rrez=20Hermoso?= Date: Tue, 11 Jun 2024 22:09:40 -0400 Subject: [PATCH 2/3] v1.1.15 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index efe831db..9cd1e9c3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "grist-core", - "version": "1.1.14", + "version": "1.1.15", "license": "Apache-2.0", "description": "Grist is the evolution of spreadsheets", "homepage": "https://github.com/gristlabs/grist-core", From 856dbef3df9afb5ca985de7da93de11e4e10d3ca Mon Sep 17 00:00:00 2001 From: Paul Fitzpatrick Date: Wed, 12 Jun 2024 09:34:31 -0400 Subject: [PATCH 3/3] make the example key on admin panel without auth work when insecure (#1024) The example key shown on the admin panel to users who are not known to be administrators is generated using a method that is only available in secure environments. This adds a fallback for insecure environments. The key is less solid but again, it is just an example, and for an insecure environment. Tested manually running locally and using a hostname set in /etc/hosts. --- app/client/ui/AdminPanel.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/client/ui/AdminPanel.ts b/app/client/ui/AdminPanel.ts index 37d4f4e2..bfd2bd6c 100644 --- a/app/client/ui/AdminPanel.ts +++ b/app/client/ui/AdminPanel.ts @@ -98,7 +98,7 @@ export class AdminPanel extends Disposable { * which could include a legit adminstrator if auth is misconfigured. */ private _buildMainContentForOthers(owner: MultiHolder) { - const exampleKey = 'example-' + window.crypto.randomUUID(); + const exampleKey = _longCodeForExample(); return dom.create(AdminSection, t('Administrator Panel Unavailable'), [ dom('p', t(`You do not have access to the administrator panel. Please log in as an administrator.`)), @@ -649,3 +649,19 @@ export const cssLabel = styled('div', ` text-align: right; padding-right: 5px; `); + + +/** + * Make a long code to use in the example, so that if people copy + * and paste it lazily, they end up decently secure, or at least a + * lot more secure than a key like "REPLACE_WITH_YOUR_SECRET" + */ +function _longCodeForExample() { + // Crypto in insecure contexts doesn't have randomUUID + if (window.isSecureContext) { + return 'example-a' + window.crypto.randomUUID(); + } + return 'example-b' + 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.replace(/x/g, () => { + return Math.floor(Math.random() * 16).toString(16); + }); +}