Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ONLYOFFICE/onlyoffice-nextcloud.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md7
-rw-r--r--appinfo/info.xml1
-rw-r--r--appinfo/routes.php1
m---------assets0
-rw-r--r--controller/callbackcontroller.php10
-rw-r--r--controller/editorapicontroller.php23
-rw-r--r--controller/editorcontroller.php11
-rw-r--r--controller/federationcontroller.php22
-rw-r--r--controller/settingscontroller.php3
-rw-r--r--js/editor.js10
-rw-r--r--l10n/bg.js1
-rw-r--r--l10n/bg.json1
-rw-r--r--l10n/ca.js1
-rw-r--r--l10n/ca.json1
-rw-r--r--l10n/de.js2
-rw-r--r--l10n/de.json2
-rw-r--r--l10n/de_DE.js2
-rw-r--r--l10n/de_DE.json2
-rw-r--r--l10n/es.js2
-rw-r--r--l10n/es.json2
-rw-r--r--l10n/fr.js2
-rw-r--r--l10n/fr.json2
-rw-r--r--l10n/it.js2
-rw-r--r--l10n/it.json2
-rw-r--r--l10n/ja.js52
-rw-r--r--l10n/ja.json52
-rw-r--r--l10n/nl.js134
-rw-r--r--l10n/nl.json132
-rw-r--r--l10n/pl.js5
-rw-r--r--l10n/pl.json5
-rw-r--r--l10n/pt_BR.js11
-rw-r--r--l10n/pt_BR.json11
-rw-r--r--l10n/ru.js2
-rw-r--r--l10n/ru.json2
-rw-r--r--l10n/sv.js3
-rw-r--r--l10n/sv.json3
-rw-r--r--l10n/zh_CN.js1
-rw-r--r--l10n/zh_CN.json1
-rw-r--r--lib/Migration/Version070400Date20220929111111.php111
-rw-r--r--lib/appconfig.php2
-rw-r--r--lib/extrapermissions.php8
-rw-r--r--lib/fileutility.php42
-rw-r--r--lib/keymanager.php59
-rw-r--r--lib/remoteinstance.php272
-rw-r--r--screenshots/icon.pngbin587 -> 845 bytes
-rw-r--r--screenshots/main.pngbin76008 -> 199426 bytes
-rw-r--r--screenshots/main_small.pngbin27774 -> 108916 bytes
-rw-r--r--screenshots/new.pngbin43861 -> 152242 bytes
-rw-r--r--screenshots/open.pngbin51054 -> 170870 bytes
-rw-r--r--screenshots/open_form.pngbin0 -> 186991 bytes
-rw-r--r--screenshots/settings.pngbin101008 -> 108475 bytes
51 files changed, 836 insertions, 184 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cab2fbc..df5f02c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,12 @@
# Change Log
+## Added
+- Dutch translation
+- Chinese (Traditional, Taiwan), Basque (Spain) empty file templates
+
+## Changed
+- generate preview by default
+
## 7.5.4
## Changed
- fix opening editor in new tab
diff --git a/appinfo/info.xml b/appinfo/info.xml
index 670c404..13ca15e 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -28,6 +28,7 @@
<screenshot>https://raw.githubusercontent.com/ONLYOFFICE/onlyoffice-nextcloud/master/screenshots/settings.png</screenshot>
<screenshot>https://raw.githubusercontent.com/ONLYOFFICE/onlyoffice-nextcloud/master/screenshots/new.png</screenshot>
<screenshot>https://raw.githubusercontent.com/ONLYOFFICE/onlyoffice-nextcloud/master/screenshots/open.png</screenshot>
+ <screenshot>https://raw.githubusercontent.com/ONLYOFFICE/onlyoffice-nextcloud/master/screenshots/open_form.png</screenshot>
<dependencies>
<nextcloud min-version="24" max-version="24"/>
</dependencies>
diff --git a/appinfo/routes.php b/appinfo/routes.php
index bf5ea6d..cab5c84 100644
--- a/appinfo/routes.php
+++ b/appinfo/routes.php
@@ -47,6 +47,7 @@ return [
"ocs" => [
["name" => "federation#key", "url" => "/api/v1/key", "verb" => "POST"],
["name" => "federation#keylock", "url" => "/api/v1/keylock", "verb" => "POST"],
+ ["name" => "federation#healthcheck", "url" => "/api/v1/healthcheck", "verb" => "GET"],
["name" => "editorapi#config", "url" => "/api/v1/config/{fileId}", "verb" => "GET"],
["name" => "sharingapi#get_shares", "url" => "/api/v1/shares/{fileId}", "verb" => "GET"],
["name" => "sharingapi#set_shares", "url" => "/api/v1/shares", "verb" => "PUT"]
diff --git a/assets b/assets
-Subproject 01a35499a3cfb4013d990100e119a7f47f02616
+Subproject 4b96e283924e0481299b6400520829649634c23
diff --git a/controller/callbackcontroller.php b/controller/callbackcontroller.php
index 962587a..a83edfa 100644
--- a/controller/callbackcontroller.php
+++ b/controller/callbackcontroller.php
@@ -45,7 +45,6 @@ use OCP\Lock\LockedException;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IManager;
-use OCA\Files_Sharing\External\Storage as SharingExternalStorage;
use OCA\Files_Versions\Versions\IVersionManager;
use OCA\Onlyoffice\AppConfig;
@@ -53,6 +52,7 @@ use OCA\Onlyoffice\Crypt;
use OCA\Onlyoffice\DocumentService;
use OCA\Onlyoffice\FileVersions;
use OCA\Onlyoffice\KeyManager;
+use OCA\Onlyoffice\RemoteInstance;
use OCA\Onlyoffice\TemplateManager;
/**
@@ -551,8 +551,8 @@ class CallbackController extends Controller {
$prevIsForcesave = KeyManager::wasForcesave($fileId);
- if ($file->getStorage()->instanceOfStorage(SharingExternalStorage::class)) {
- $isLock = KeyManager::lockFederatedKey($file, $isForcesave, null);
+ if (RemoteInstance::isRemoteFile($file)) {
+ $isLock = RemoteInstance::lockRemoteKey($file, $isForcesave, null);
if ($isForcesave && !$isLock) {
break;
}
@@ -578,9 +578,9 @@ class CallbackController extends Controller {
$retryOperation();
} catch (PreConditionNotMetException $e) {}
- if ($file->getStorage()->instanceOfStorage(SharingExternalStorage::class)) {
+ if (RemoteInstance::isRemoteFile($file)) {
if ($isForcesave) {
- KeyManager::lockFederatedKey($file, false, $isForcesave);
+ RemoteInstance::lockRemoteKey($file, false, $isForcesave);
}
} else {
KeyManager::lock($fileId, false);
diff --git a/controller/editorapicontroller.php b/controller/editorapicontroller.php
index ce03f3a..713b865 100644
--- a/controller/editorapicontroller.php
+++ b/controller/editorapicontroller.php
@@ -42,6 +42,7 @@ use OCP\IUser;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\Share\IManager;
+use OCP\Share\IShare;
use OCA\Files_Versions\Versions\IVersionManager;
@@ -331,6 +332,7 @@ class EditorApiController extends OCSController {
$params["document"]["permissions"]["modifyFilter"] = $permissions_modifyFilter;
}
+ $canDownload = true;
$restrictedEditing = false;
$fileStorage = $file->getStorage();
if (empty($shareToken) && $fileStorage->instanceOfStorage("\OCA\Files_Sharing\SharedStorage")) {
@@ -371,6 +373,14 @@ class EditorApiController extends OCSController {
$params["document"]["permissions"]["modifyFilter"] = $modifyFilter;
}
}
+
+ if (method_exists(IShare::class, "getAttributes")) {
+ $share = empty($share) ? $fileStorage->getShare() : $share;
+ $attributes = $share->getAttributes();
+ if ($attributes !== null && !$attributes->getAttribute("permissions", "download")) {
+ $canDownload = false;
+ }
+ }
}
$isTempLock = false;
@@ -445,9 +455,7 @@ class EditorApiController extends OCSController {
if (!empty($shareToken)) {
if (method_exists($share, "getHideDownload") && $share->getHideDownload()) {
- $params["document"]["permissions"]["download"] = false;
- $params["document"]["permissions"]["print"] = false;
- $params["document"]["permissions"]["copy"] = false;
+ $canDownload = false;
}
$node = $share->getNode();
@@ -541,6 +549,12 @@ class EditorApiController extends OCSController {
}
}
+ if (!$canDownload) {
+ $params["document"]["permissions"]["download"] = false;
+ $params["document"]["permissions"]["print"] = false;
+ $params["document"]["permissions"]["copy"] = false;
+ }
+
if ($inframe === true) {
$params["_files_sharing"] = \OC::$server->getAppManager()->isInstalled("files_sharing");
}
@@ -866,7 +880,8 @@ class EditorApiController extends OCSController {
return $watermarkText;
}
}
- if ($watermarkSettings["allGroups"]) {
+ if ($watermarkSettings["allGroups"]
+ && $userId !== null) {
$groups = $watermarkSettings["allGroupsList"];
foreach ($groups as $group) {
if (\OC::$server->getGroupManager()->isInGroup($userId, $group)) {
diff --git a/controller/editorcontroller.php b/controller/editorcontroller.php
index 80b25d3..92e7b60 100644
--- a/controller/editorcontroller.php
+++ b/controller/editorcontroller.php
@@ -1048,6 +1048,17 @@ class EditorController extends Controller {
}
}
+ $fileStorage = $file->getStorage();
+ if ($fileStorage->instanceOfStorage("\OCA\Files_Sharing\SharedStorage")) {
+ if (method_exists(IShare::class, "getAttributes")) {
+ $share = empty($share) ? $fileStorage->getShare() : $share;
+ $attributes = $share->getAttributes();
+ if ($attributes !== null && !$attributes->getAttribute("permissions", "download")) {
+ return $this->renderError($this->trans->t("Not permitted"));
+ }
+ }
+ }
+
$fileName = $file->getName();
$ext = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
$toExtension = strtolower($toExtension);
diff --git a/controller/federationcontroller.php b/controller/federationcontroller.php
index 8d68daf..27a9f64 100644
--- a/controller/federationcontroller.php
+++ b/controller/federationcontroller.php
@@ -27,12 +27,11 @@ use OCP\IRequest;
use OCP\ISession;
use OCP\Share\IManager;
-use OCA\Files_Sharing\External\Storage as SharingExternalStorage;
-
use OCA\Onlyoffice\AppConfig;
use OCA\Onlyoffice\DocumentService;
use OCA\Onlyoffice\FileUtility;
use OCA\Onlyoffice\KeyManager;
+use OCA\Onlyoffice\RemoteInstance;
/**
* OCS handler
@@ -136,8 +135,8 @@ class FederationController extends OCSController {
$fileId = $file->getId();
- if ($file->getStorage()->instanceOfStorage(SharingExternalStorage::class)) {
- $isLock = KeyManager::lockFederatedKey($file, $lock, $fs);
+ if (RemoteInstance::isRemoteFile($file)) {
+ $isLock = RemoteInstance::lockRemoteKey($file, $lock, $fs);
if (!$isLock) {
return new DataResponse(["error" => "Failed request"]);
}
@@ -151,4 +150,19 @@ class FederationController extends OCSController {
$this->logger->debug("Federated request lock for " . $fileId, ["app" => $this->appName]);
return new DataResponse();
}
+
+ /**
+ * Health check instance
+ *
+ * @return DataResponse
+ *
+ * @NoAdminRequired
+ * @NoCSRFRequired
+ * @PublicPage
+ */
+ public function healthcheck() {
+ $this->logger->debug("Federated healthcheck", ["app" => $this->appName]);
+
+ return new DataResponse(["alive" => true]);
+ }
}
diff --git a/controller/settingscontroller.php b/controller/settingscontroller.php
index 9768b2b..aa8ffe4 100644
--- a/controller/settingscontroller.php
+++ b/controller/settingscontroller.php
@@ -19,7 +19,6 @@
namespace OCA\Onlyoffice\Controller;
-use OCP\App;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IL10N;
@@ -128,7 +127,7 @@ class SettingsController extends Controller {
"successful" => $this->config->SettingsAreSuccessful(),
"watermark" => $this->config->GetWatermarkSettings(),
"macros" => $this->config->GetCustomizationMacros(),
- "tagsEnabled" => App::isEnabled("systemtags"),
+ "tagsEnabled" => \OC::$server->getAppManager()->isEnabledForUser("systemtags"),
"reviewDisplay" => $this->config->GetCustomizationReviewDisplay(),
"theme" => $this->config->GetCustomizationTheme(),
"templates" => $this->GetGlobalTemplates()
diff --git a/js/editor.js b/js/editor.js
index e5838e2..fdb5a2d 100644
--- a/js/editor.js
+++ b/js/editor.js
@@ -107,6 +107,11 @@
url: configUrl,
success: function onSuccess(config) {
if (config) {
+ if (config.redirectUrl) {
+ location.href = config.redirectUrl;
+ return;
+ }
+
if (config.error != null) {
OCA.Onlyoffice.showMessage(config.error, "error", {timeout: -1});
return;
@@ -118,11 +123,6 @@
return;
}
- if (config.redirectUrl) {
- location.href = config.redirectUrl;
- return;
- }
-
var docIsChanged = null;
var docIsChangedTimeout = null;
diff --git a/l10n/bg.js b/l10n/bg.js
index 02f3bed..0dabef3 100644
--- a/l10n/bg.js
+++ b/l10n/bg.js
@@ -87,6 +87,7 @@ OC.L10N.register(
"Keep intermediate versions when editing (forcesave)": "Съхранявайте междинни версии при редактиране (force save)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Използвайте ONLYOFFICE, за да генерирате преглед на документа (ще заеме дисково пространство)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Запазете метаданните за всяка версия, щом документът бъде редактиран (ще заеме дисково пространство)",
+ "Clear": "Изчисти",
"All history successfully deleted": "Цялата история е успешно изтрита",
"Create": "Създай",
"Select template" : "Избор на шаблон",
diff --git a/l10n/bg.json b/l10n/bg.json
index 9f1bdd2..9da3f7d 100644
--- a/l10n/bg.json
+++ b/l10n/bg.json
@@ -85,6 +85,7 @@
"Keep intermediate versions when editing (forcesave)": "Съхранявайте междинни версии при редактиране (force save)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Използвайте ONLYOFFICE, за да генерирате преглед на документа (ще заеме дисково пространство)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Запазете метаданните за всяка версия, щом документът бъде редактиран (ще заеме дисково пространство)",
+ "Clear": "Изчисти",
"All history successfully deleted": "Цялата история е успешно изтрита",
"Create": "Създай",
"Select template": "Избор на шаблон",
diff --git a/l10n/ca.js b/l10n/ca.js
index 00fd8cb..fdc6ac9 100644
--- a/l10n/ca.js
+++ b/l10n/ca.js
@@ -87,6 +87,7 @@ OC.L10N.register(
"Keep intermediate versions when editing (forcesave)": "Mantenir les versions intermèdies durant l'edició (forçar guardar)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usar ONLYOFFICE per a generar una vista prèvia del document (ocuparà espai en el disc)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Guardar les metadades de cada versió en editar el document (ocuparà espai en el disc)",
+ "Clear": "Suprimeix",
"All history successfully deleted": "Tot l'historial s'ha eliminat correctament",
"Create": "Crear",
"Select template": "Seleccionar plantilla",
diff --git a/l10n/ca.json b/l10n/ca.json
index 226b19e..879357c 100644
--- a/l10n/ca.json
+++ b/l10n/ca.json
@@ -85,6 +85,7 @@
"Keep intermediate versions when editing (forcesave)": "Mantenir les versions intermèdies durant l'edició (forçar guardar)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usar ONLYOFFICE per a generar una vista prèvia del document (ocuparà espai en el disc)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Guardar les metadades de cada versió en editar el document (ocuparà espai en el disc)",
+ "Clear": "Suprimeix",
"All history successfully deleted": "Tot l'historial s'ha eliminat correctament",
"Create": "Crear",
"Select template": "Seleccionar plantilla",
diff --git a/l10n/de.js b/l10n/de.js
index ef548ee..c62145e 100644
--- a/l10n/de.js
+++ b/l10n/de.js
@@ -87,6 +87,7 @@ OC.L10N.register(
"Keep intermediate versions when editing (forcesave)": "Zwischenversionen bei der Bearbeitung aufbewahren (force save)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICE verwenden, um eine Dokumentvorschau zu erstellen (Speicherplatz erforderlich)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Metadaten für jede Version beim Bearbeiten des Dokuments aufbewahren (Speicherplatz erforderlich)",
+ "Clear": "Leeren",
"All history successfully deleted": "Gesamtverlauf wurde erfolgreich gelöscht",
"Create": "Erstellen",
"Select template" : "Vorlage auswählen",
@@ -117,6 +118,7 @@ OC.L10N.register(
"Fill in form in ONLYOFFICE": "Formular in ONLYOFFICE ausfüllen",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Für Online-Arbeit mit Formularen ist Version 7.0 von ONLYOFFICE Docs erforderlich",
"Security": "Sicherheit",
+ "Run document macros": "Makros im Dokument ausführen",
"Anonymous": "Anonym",
"Default editor theme": "Standardmäßiges Thema des Editors",
"Light": "Hell",
diff --git a/l10n/de.json b/l10n/de.json
index 3e2bd4a..a279c6d 100644
--- a/l10n/de.json
+++ b/l10n/de.json
@@ -85,6 +85,7 @@
"Keep intermediate versions when editing (forcesave)": "Zwischenversionen bei der Bearbeitung aufbewahren (force save)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICE verwenden, um eine Dokumentvorschau zu erstellen (Speicherplatz erforderlich)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Metadaten für jede Version beim Bearbeiten des Dokuments aufbewahren (Speicherplatz erforderlich)",
+ "Clear": "Leeren",
"All history successfully deleted": "Gesamtverlauf wurde erfolgreich gelöscht",
"Create": "Erstellen",
"Select template" : "Vorlage auswählen",
@@ -115,6 +116,7 @@
"Fill in form in ONLYOFFICE": "Formular in ONLYOFFICE ausfüllen",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Für Online-Arbeit mit Formularen ist Version 7.0 von ONLYOFFICE Docs erforderlich",
"Security": "Sicherheit",
+ "Run document macros": "Makros im Dokument ausführen",
"Anonymous": "Anonym",
"Default editor theme": "Standardmäßiges Thema des Editors",
"Light": "Hell",
diff --git a/l10n/de_DE.js b/l10n/de_DE.js
index d3199f6..ef659bd 100644
--- a/l10n/de_DE.js
+++ b/l10n/de_DE.js
@@ -87,6 +87,7 @@ OC.L10N.register(
"Keep intermediate versions when editing (forcesave)": "Zwischenversionen bei der Bearbeitung aufbewahren (force save)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICE verwenden, um eine Dokumentvorschau zu erstellen (Speicherplatz erforderlich)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Metadaten für jede Version beim Bearbeiten des Dokuments aufbewahren (Speicherplatz erforderlich)",
+ "Clear": "Leeren",
"All history successfully deleted": "Gesamtverlauf wurde erfolgreich gelöscht",
"Create": "Erstellen",
"Select template" : "Vorlage auswählen",
@@ -117,6 +118,7 @@ OC.L10N.register(
"Fill in form in ONLYOFFICE": "Formular in ONLYOFFICE ausfüllen",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Für Online-Arbeit mit Formularen ist Version 7.0 von ONLYOFFICE Docs erforderlich",
"Security": "Sicherheit",
+ "Run document macros": "Makros im Dokument ausführen",
"Anonymous": "Anonym",
"Default editor theme": "Standardmäßiges Thema des Editors",
"Light": "Hell",
diff --git a/l10n/de_DE.json b/l10n/de_DE.json
index c341b07..d15a66a 100644
--- a/l10n/de_DE.json
+++ b/l10n/de_DE.json
@@ -85,6 +85,7 @@
"Keep intermediate versions when editing (forcesave)": "Zwischenversionen bei der Bearbeitung aufbewahren (force save)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICE verwenden, um eine Dokumentvorschau zu erstellen (Speicherplatz erforderlich)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Metadaten für jede Version beim Bearbeiten des Dokuments aufbewahren (Speicherplatz erforderlich)",
+ "Clear": "Leeren",
"All history successfully deleted": "Gesamtverlauf wurde erfolgreich gelöscht",
"Create": "Erstellen",
"Select template" : "Vorlage auswählen",
@@ -115,6 +116,7 @@
"Fill in form in ONLYOFFICE": "Formular in ONLYOFFICE ausfüllen",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Für Online-Arbeit mit Formularen ist Version 7.0 von ONLYOFFICE Docs erforderlich",
"Security": "Sicherheit",
+ "Run document macros": "Makros im Dokument ausführen",
"Anonymous": "Anonym",
"Default editor theme": "Standardmäßiges Thema des Editors",
"Light": "Hell",
diff --git a/l10n/es.js b/l10n/es.js
index f379006..332edbd 100644
--- a/l10n/es.js
+++ b/l10n/es.js
@@ -87,6 +87,7 @@ OC.L10N.register(
"Keep intermediate versions when editing (forcesave)": "Mantener las versiones intermedias durante la edición (forzar guardar)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usar ONLYOFFICE para generar una vista previa del documento (ocupará espacio en el disco)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Guardar los metadatos de cada versión al editar el documento (ocupará espacio en el disco)",
+ "Clear": "Limpiar",
"All history successfully deleted": "Todo el historial se ha eliminado correctamente",
"Create": "Crear",
"Select template" : "Seleccionar plantilla",
@@ -117,6 +118,7 @@ OC.L10N.register(
"Fill in form in ONLYOFFICE": "Rellenar el formulario en ONLYOFFICE",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Por favor, actualice ONLYOFFICE Docs a la versión 7.0 para poder trabajar con formularios rellenables en línea",
"Security": "Seguridad",
+ "Run document macros": "Ejecutar macros de documentos",
"Anonymous": "Anónimo",
"Default editor theme": "Tema del editor predeterminado",
"Light": "Claro",
diff --git a/l10n/es.json b/l10n/es.json
index ac872ea..74907e0 100644
--- a/l10n/es.json
+++ b/l10n/es.json
@@ -85,6 +85,7 @@
"Keep intermediate versions when editing (forcesave)": "Mantener las versiones intermedias durante la edición (forzar guardar)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usar ONLYOFFICE para generar una vista previa del documento (ocupará espacio en el disco)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Guardar los metadatos de cada versión al editar el documento (ocupará espacio en el disco)",
+ "Clear": "Limpiar",
"All history successfully deleted": "Todo el historial se ha eliminado correctamente",
"Create": "Crear",
"Select template" : "Seleccionar plantilla",
@@ -115,6 +116,7 @@
"Fill in form in ONLYOFFICE": "Rellenar el formulario en ONLYOFFICE",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Por favor, actualice ONLYOFFICE Docs a la versión 7.0 para poder trabajar con formularios rellenables en línea",
"Security": "Seguridad",
+ "Run document macros": "Ejecutar macros de documentos",
"Anonymous": "Anónimo",
"Default editor theme": "Tema del editor predeterminado",
"Light": "Claro",
diff --git a/l10n/fr.js b/l10n/fr.js
index 98d4e46..0c41ac8 100644
--- a/l10n/fr.js
+++ b/l10n/fr.js
@@ -87,6 +87,7 @@ OC.L10N.register(
"Keep intermediate versions when editing (forcesave)": "Sauvegarder les versions intermédiaires lors de l'édition (enregistrement obligatoire)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Utilisez ONLYOFFICE pour générer l'aperçu du document (occupe de l'espace disque)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Gardez les métadonnées pour chaque version dès que le document est modifié (occupe de l'espace disque)",
+ "Clear": "Effacer",
"All history successfully deleted": "L'historique a été supprimé avec succès",
"Create": "Créer",
"Select template" : "Sélectionnez un modèle",
@@ -117,6 +118,7 @@ OC.L10N.register(
"Fill in form in ONLYOFFICE": "Remplir le formulaire dans ONLYOFFICE",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Veuillez mettre à jour ONLYOFFICE Docs vers la version 7.0 pour travailler sur les formulaires à remplir en ligne",
"Security": "Sécurité",
+ "Run document macros": "Exécuter des macros de documents",
"Anonymous": "Anonyme",
"Default editor theme": "Thème d'éditeur par défaut",
"Light": "Clair",
diff --git a/l10n/fr.json b/l10n/fr.json
index 8eefc51..7b05833 100644
--- a/l10n/fr.json
+++ b/l10n/fr.json
@@ -85,6 +85,7 @@
"Keep intermediate versions when editing (forcesave)": "Sauvegarder les versions intermédiaires lors de l'édition (enregistrement obligatoire)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Utilisez ONLYOFFICE pour générer l'aperçu du document (occupe de l'espace disque)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Gardez les métadonnées pour chaque version dès que le document est modifié (occupe de l'espace disque)",
+ "Clear": "Effacer",
"All history successfully deleted": "L'historique a été supprimé avec succès",
"Create": "Créer",
"Select template" : "Sélectionnez un modèle",
@@ -115,6 +116,7 @@
"Fill in form in ONLYOFFICE": "Remplir le formulaire dans ONLYOFFICE",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Veuillez mettre à jour ONLYOFFICE Docs vers la version 7.0 pour travailler sur les formulaires à remplir en ligne",
"Security": "Sécurité",
+ "Run document macros": "Exécuter des macros de documents",
"Anonymous": "Anonyme",
"Default editor theme": "Thème d'éditeur par défaut",
"Light": "Clair",
diff --git a/l10n/it.js b/l10n/it.js
index b5baa99..396d4a5 100644
--- a/l10n/it.js
+++ b/l10n/it.js
@@ -87,6 +87,7 @@ OC.L10N.register(
"Keep intermediate versions when editing (forcesave)": "Mantieni le versioni intermedie durante la modifica (forzare salvataggio)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usare ONLYOFFICE per generare anteprima documenti (occuperà spazio su disco)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Salvare metadati per ogni versione una volta modificato il documento (occuperà spazio su disco)",
+ "Clear": "Svuota",
"All history successfully deleted": "Cronologia eliminata con successo",
"Create": "Crea",
"Select template" : "Seleziona modello",
@@ -117,6 +118,7 @@ OC.L10N.register(
"Fill in form in ONLYOFFICE": "Compilare il modulo in ONLYOFFICE",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Si prega di aggiornare ONLYOFFICE Docs alla versione 7.0 per lavorare su moduli compilabili online",
"Security": "Sicurezza",
+ "Run document macros": "Esegui le macro del documento",
"Anonymous": "Anonimo",
"Default editor theme": "Tema dell'editor predefinito",
"Light": "Chiaro",
diff --git a/l10n/it.json b/l10n/it.json
index df7d782..fbdb0d6 100644
--- a/l10n/it.json
+++ b/l10n/it.json
@@ -85,6 +85,7 @@
"Keep intermediate versions when editing (forcesave)": "Mantieni le versioni intermedie durante la modifica (forzare salvataggio)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usare ONLYOFFICE per generare anteprima documenti (occuperà spazio su disco)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Salvare metadati per ogni versione una volta modificato il documento (occuperà spazio su disco)",
+ "Clear": "Svuota",
"All history successfully deleted": "Cronologia eliminata con successo",
"Create": "Crea",
"Select template" : "Seleziona modello",
@@ -115,6 +116,7 @@
"Fill in form in ONLYOFFICE": "Compilare il modulo in ONLYOFFICE",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Si prega di aggiornare ONLYOFFICE Docs alla versione 7.0 per lavorare su moduli compilabili online",
"Security": "Sicurezza",
+ "Run document macros": "Esegui le macro del documento",
"Anonymous": "Anonimo",
"Default editor theme": "Tema dell'editor predefinito",
"Light": "Chiaro",
diff --git a/l10n/ja.js b/l10n/ja.js
index f346e0e..22450f9 100644
--- a/l10n/ja.js
+++ b/l10n/ja.js
@@ -1,27 +1,27 @@
OC.L10N.register(
"onlyoffice",
{
- "Access denied" : "アクセス拒否されました",
+ "Access denied" : "アクセスが拒否されました",
"Invalid request" : "リクエストが不正です",
"Files not found" : "ファイルが見つかりません",
"File not found" : "ファイルが見つかりません",
"Not permitted" : "権限がありません",
"Download failed" : "ダウンロードできませんでした",
"The required folder was not found" : "開こうとしたフォルダーがありません",
- "You don't have enough permission to create" : "充分な作成権限がありません",
+ "You don't have enough permission to create": "作成権限がありません",
"Template not found" : "テンプレートが見つかりません",
"Can't create file" : "ファイルを作成できません",
"Format is not supported" : "このフォーマットはサポートされていません",
"Conversion is not required" : "変換する必要はありません",
- "Failed to download converted file" : "コンバート済みファイルをダウンロードできませんでした",
+ "Failed to download converted file": "変換されたファイルをダウンロードできませんでした",
"ONLYOFFICE app is not configured. Please contact admin" : "ONLYOFFICEアプリが設定されていません。管理者に相談してください",
"FileId is empty" : "ファイルIDが空です",
- "You do not have enough permissions to view the file" : "ファイルを閲覧する権限が足りません",
+ "You do not have enough permissions to view the file": "ファイルを閲覧する権限ありません",
"Error occurred in the document service" : "ドキュメントサービスでエラーが発生しました",
- "Not supported version" : "未サポートバージョン",
+ "Not supported version": "サポートされていないバージョン",
"ONLYOFFICE cannot be reached. Please contact admin" : "ONLYOFFICEに接続できません。管理者に相談してください",
"Loading, please wait." : "読み込み中です...。しばらくお待ちください。",
- "File created" : "ファイル作成されました",
+ "File created": "ファイルが作成されました",
"Open in ONLYOFFICE" : "ONLYOFFICEで開く",
"Convert with ONLYOFFICE" : "ONLYOFFICEで変換",
"New document" : "新しいドキュメント",
@@ -32,11 +32,11 @@ OC.L10N.register(
"Server can't read xml" : "サーバーでxmlを読み込ませんでした",
"Bad Response. Errors: " : "不正なレスポンス エラー: ",
"Documentation" : "ドキュメンテーション",
- "ONLYOFFICE Docs Location specifies the address of the server with the document services installed. Please change the '<documentserver>' for the server address in the below line." : "ONLYOFFICE Docs の位置は、ドキュメントサービスがインストールされているサーバーのアドレスを指定します。以下の行の'<documentserver>'をサーバーアドレスに変更してください。",
+ "ONLYOFFICE Docs Location specifies the address of the server with the document services installed. Please change the '<documentserver>' for the server address in the below line.": "Docsアドレスにはドキュメントサービスがインストールされているサーバーのアドレスを指定します。以下の行の'<documentserver>'をサーバーアドレスに変更してください。",
"ONLYOFFICE Docs address" : "ONLYOFFICE Docs アドレス",
- "Advanced server settings" : "詳細サーバー設定",
- "ONLYOFFICE Docs address for internal requests from the server" : "サーバーからの内部リクエストにはONLYOFFICE Docs アドレス",
- "Server address for internal requests from ONLYOFFICE Docs" : "ONLYOFFICE Docsからの内部リクエストにはサーバーアドレス",
+ "Advanced server settings": "サーバー詳細設定",
+ "ONLYOFFICE Docs address for internal requests from the server": "サーバーから内部リクエストに利用されるONLYOFFICE Docs アドレス",
+ "Server address for internal requests from ONLYOFFICE Docs": "ONLYOFFICE Docsから内部リクエストに利用されるサーバーアドレス",
"Secret key (leave blank to disable)" : "シークレットキー (ブランクで無効)",
"Open file in the same tab" : "ファイルを同じタブで開く",
"The default application for opening the format": "以下のファイルフォーマットをデフォルトで開く",
@@ -44,16 +44,16 @@ OC.L10N.register(
"View details" : "詳細表示",
"Save" : "保存",
"Mixed Active Content is not allowed. HTTPS address for ONLYOFFICE Docs is required." : "アクティブコンテンツの混在は許可されていません。ONLYOFFICE DocsにはHTTPSアドレスが必要です",
- "Restrict access to editors to following groups" : "アクセス編集できる人を以下のグループに制限する",
+ "Restrict access to editors to following groups": "エディターの利用を以下のグループに制限する",
"Server settings" : "サーバー設定",
"Common settings" : "共通設定",
"Editor customization settings" : "エディターカスタム設定",
- "The customization section allows personalizing the editor interface": "カスタマイズセクションでは、エディターインターフェイスをパーソナライズできます",
- "Display Chat menu button" : "チャットメニューホタンを表示",
- "Display the header more compact" : "ヘッダーをよりコンパクトに表示",
- "Display Feedback & Support menu button" : "フィードバックとサポートメニューホタンを表示",
- "Display Help menu button" : "ヘルプメニューホタンを表示",
- "Display monochrome toolbar header" : "モノクローム・ツールバーヘッダーを表示する",
+ "The customization section allows personalizing the editor interface": "エディターインターフェイスのカスタマイズ",
+ "Display Chat menu button": "チャットメニューボタンを表示する",
+ "Display the header more compact": "ヘッダーをよりコンパクトに表示する",
+ "Display Feedback & Support menu button": "フィードバックとサポートメニューボタンを表示する",
+ "Display Help menu button": "ヘルプメニューボタンを表示する",
+ "Display monochrome toolbar header": "ツールバーヘッダーをモノクロで表示する",
"Save as" : "別名で保存",
"File saved" : "ファイルが保存されました",
"Insert image" : "画像を挿入",
@@ -78,19 +78,20 @@ OC.L10N.register(
"Show watermark on link shares with specific system tags" : "特定のシステムタグが付いていてリンク共有されたものに透かしを入れる",
"Select tag" : "タグを選択",
"Select file to compare" : "比較するファイルを選択",
- "Review mode for viewing": "表示するためのレビューモード",
+ "Review mode for viewing": "レビューモード時の表示方式",
"Markup": "マークアップ",
"Final": "最終版",
"Original": "オリジナル",
"version": "バージョン",
- "Disable certificate verification (insecure)": "証明書の検証を無効にする(安全でない",
+ "Disable certificate verification (insecure)": "証明書の検証を無効にする(安全ではありません)",
"Keep intermediate versions when editing (forcesave)": "編集時に、中間バージョンを保持する (強制保存)",
- "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICEを使用して、ドキュメントプレビューを生成する(ディスク容量がかかる)",
- "Keep metadata for each version once the document is edited (it will take up disk space)": "ドキュメントが編集されたら、各バージョンのメタデータを保持する(ディスクス容量がかかる)",
+ "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICEを使用してドキュメントのサムネールを生成する(ディスク容量を消費します)",
+ "Keep metadata for each version once the document is edited (it will take up disk space)": "編集されたドキュメントの各バージョンのメタデータを保持する(ディスク容量を消費します)",
+ "Clear": "消去",
"All history successfully deleted": "すべての履歴が正常に削除されました",
"Create": "作成",
"Select template" : "テンプレートを選択する",
- "Invalid file provided" : "無効なファイルが提供されました",
+ "Invalid file provided": "提供されたファイルは無効です",
"Empty": "空",
"Error" : "エラー",
"Add a new template": "新しいテンプレートを追加する:",
@@ -99,7 +100,7 @@ OC.L10N.register(
"Template successfully added": "テンプレートが正常に追加されました",
"Template successfully deleted": "テンプレートが正常に削除されました",
"Common templates": "よく使われるテンプレート",
- "Failed to delete template": "テンプレートの削除に失敗しました",
+ "Failed to delete template": "テンプレートを削除できませんでした",
"File has been converted. Its content might look different.": "ファイルが変換されました。 その内容は異なって見えるかもしれません。",
"Download as": "別の形式でダウンロード",
"Download": "ダウンロード",
@@ -117,10 +118,11 @@ OC.L10N.register(
"Fill in form in ONLYOFFICE": "ONLYOFFICEでフォームを記入する",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "オンラインで入力可能なフォームを作成するには、ONLYOFFICE Docs 7.0版まで更新してください",
"Security": "セキュリティ",
+ "Run document macros": "ドキュメントマクロを実行する",
"Anonymous": "匿名",
- "Default editor theme": "デフォルトのエディタテーマ",
+ "Default editor theme": "エディターのデフォルトテーマ",
"Light": "明るい",
- "Classic Light": "明るい(クラシック)",
+ "Classic Light": "ライト(クラシック)",
"Dark": "ダーク",
"Review": "レビュー",
"Comment": "コメント",
diff --git a/l10n/ja.json b/l10n/ja.json
index 21543c1..4fda068 100644
--- a/l10n/ja.json
+++ b/l10n/ja.json
@@ -1,25 +1,25 @@
{ "translations": {
- "Access denied" : "アクセス拒否されました",
+ "Access denied" : "アクセスが拒否されました",
"Invalid request" : "リクエストが不正です",
"Files not found" : "ファイルが見つかりません",
"File not found" : "ファイルが見つかりません",
"Not permitted" : "権限がありません",
"Download failed" : "ダウンロードできませんでした",
"The required folder was not found" : "開こうとしたフォルダーがありません",
- "You don't have enough permission to create" : "充分な作成権限がありません",
+ "You don't have enough permission to create" : "作成権限がありません",
"Template not found" : "テンプレートが見つかりません",
"Can't create file" : "ファイルを作成できません",
"Format is not supported" : "このフォーマットはサポートされていません",
"Conversion is not required" : "変換する必要はありません",
- "Failed to download converted file" : "コンバート済みファイルをダウンロードできませんでした",
+ "Failed to download converted file" : "変換されたファイルをダウンロードできませんでした",
"ONLYOFFICE app is not configured. Please contact admin" : "ONLYOFFICEアプリが設定されていません。管理者に相談してください",
"FileId is empty" : "ファイルIDが空です",
- "You do not have enough permissions to view the file" : "ファイルを閲覧する権限が足りません",
+ "You do not have enough permissions to view the file" : "ファイルを閲覧する権限がありません",
"Error occurred in the document service" : "ドキュメントサービスでエラーが発生しました",
- "Not supported version" : "未サポートバージョン",
+ "Not supported version" : "サポートされていなバージョン",
"ONLYOFFICE cannot be reached. Please contact admin" : "ONLYOFFICEに接続できません。管理者に相談してください",
"Loading, please wait." : "読み込み中です...。しばらくお待ちください。",
- "File created" : "ファイル作成されました",
+ "File created" : "ファイルが作成されました",
"Open in ONLYOFFICE" : "ONLYOFFICEで開く",
"Convert with ONLYOFFICE" : "ONLYOFFICEで変換",
"New document" : "新しいドキュメント",
@@ -30,11 +30,11 @@
"Server can't read xml" : "サーバーでxmlを読み込ませんでした",
"Bad Response. Errors: " : "不正なレスポンス エラー: ",
"Documentation" : "ドキュメンテーション",
- "ONLYOFFICE Docs Location specifies the address of the server with the document services installed. Please change the '<documentserver>' for the server address in the below line." : "ONLYOFFICE Docs の位置は、ドキュメントサービスがインストールされているサーバーのアドレスを指定します。以下の行の'<documentserver>'をサーバーアドレスに変更してください。",
+ "ONLYOFFICE Docs Location specifies the address of the server with the document services installed. Please change the '<documentserver>' for the server address in the below line." : "ONLYOFFICE Docsアドレスにはドキュメントサービスがインストールされているサーバーのアドレスを指定します。以下の行の'<documentserver>'をサーバーアドレスに変更してください。",
"ONLYOFFICE Docs address" : "ONLYOFFICE Docs アドレス",
- "Advanced server settings" : "詳細サーバー設定",
- "ONLYOFFICE Docs address for internal requests from the server" : "サーバーからの内部リクエストにはONLYOFFICE Docs アドレス",
- "Server address for internal requests from ONLYOFFICE Docs" : "ONLYOFFICE Docsからの内部リクエストにはサーバーアドレス",
+ "Advanced server settings" : "サーバー詳細設定",
+ "ONLYOFFICE Docs address for internal requests from the server" : "サーバーから内部リクエストに利用されるONLYOFFICE Docs アドレス",
+ "Server address for internal requests from ONLYOFFICE Docs" : "ONLYOFFICE Docsから内部リクエストに利用されるサーバーアドレス",
"Secret key (leave blank to disable)" : "シークレットキー (ブランクで無効)",
"Open file in the same tab" : "ファイルを同じタブで開く",
"The default application for opening the format": "以下のファイルフォーマットをデフォルトで開く",
@@ -42,16 +42,16 @@
"View details" : "詳細表示",
"Save" : "保存",
"Mixed Active Content is not allowed. HTTPS address for ONLYOFFICE Docs is required." : "アクティブコンテンツの混在は許可されていません。ONLYOFFICE DocsにはHTTPSアドレスが必要です",
- "Restrict access to editors to following groups" : "アクセス編集できる人を以下のグループに制限する",
+ "Restrict access to editors to following groups" : "エディターの利用を以下のグループに制限する",
"Server settings" : "サーバー設定",
"Common settings" : "共通設定",
"Editor customization settings" : "エディターカスタム設定",
- "The customization section allows personalizing the editor interface": "カスタマイズセクションでは、エディターインターフェイスをパーソナライズできます",
- "Display Chat menu button" : "チャットメニューホタンを表示",
- "Display the header more compact" : "ヘッダーをよりコンパクトに表示",
- "Display Feedback & Support menu button" : "フィードバックとサポートメニューホタンを表示",
- "Display Help menu button" : "ヘルプメニューホタンを表示",
- "Display monochrome toolbar header" : "モノクローム・ツールバーヘッダーを表示する",
+ "The customization section allows personalizing the editor interface": "エディターインターフェイスのカスタマイズ",
+ "Display Chat menu button" : "チャットメニューボタンを表示する",
+ "Display the header more compact" : "ヘッダーをよりコンパクトに表示する",
+ "Display Feedback & Support menu button" : "フィードバックとサポートメニューボタンを表示する",
+ "Display Help menu button" : "ヘルプメニューボタンを表示する",
+ "Display monochrome toolbar header" : "ツールバーヘッダーをモノクロで表示する",
"Save as" : "別名で保存",
"File saved" : "ファイルが保存されました",
"Insert image" : "画像を挿入",
@@ -76,19 +76,20 @@
"Show watermark on link shares with specific system tags" : "特定のシステムタグが付いていてリンク共有されたものに透かしを入れる",
"Select tag" : "タグを選択",
"Select file to compare" : "比較するファイルを選択",
- "Review mode for viewing": "表示するためのレビューモード",
+ "Review mode for viewing": "レビューモード時の表示方式",
"Markup": "マークアップ",
"Final": "最終版",
"Original": "オリジナル",
"version": "バージョン",
- "Disable certificate verification (insecure)": "証明書の検証を無効にする(安全でない",
+ "Disable certificate verification (insecure)": "証明書の検証を無効にする(安全ではありません)",
"Keep intermediate versions when editing (forcesave)": "編集時に、中間バージョンを保持する (強制保存)",
- "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICEを使用して、ドキュメントプレビューを生成する(ディスク容量がかかる)",
- "Keep metadata for each version once the document is edited (it will take up disk space)": "ドキュメントが編集されたら、各バージョンのメタデータを保持する(ディスクス容量がかかる)",
+ "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "ONLYOFFICEを使用してドキュメントのサムネールを生成する(ディスク容量を消費します)",
+ "Keep metadata for each version once the document is edited (it will take up disk space)": "編集されたドキュメントの各バージョンのメタデータを保持する(ディスク容量を消費します)",
+ "Clear": "消去",
"All history successfully deleted": "すべての履歴が正常に削除されました",
"Create": "作成",
"Select template" : "テンプレートを選択する",
- "Invalid file provided" : "無効なファイルが提供されました",
+ "Invalid file provided" : "提供されたファイルは無効です",
"Empty": "空",
"Error" : "エラー",
"Add a new template": "新しいテンプレートを追加する:",
@@ -97,7 +98,7 @@
"Template successfully added": "テンプレートが正常に追加されました",
"Template successfully deleted": "テンプレートが正常に削除されました",
"Common templates": "よく使われるテンプレート",
- "Failed to delete template": "テンプレートの削除に失敗しました",
+ "Failed to delete template": "テンプレートを削除できませんでした",
"File has been converted. Its content might look different.": "ファイルが変換されました。 その内容は異なって見えるかもしれません。",
"Download as": "別の形式でダウンロード",
"Download": "ダウンロード",
@@ -115,10 +116,11 @@
"Fill in form in ONLYOFFICE": "ONLYOFFICEでフォームを記入する",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "オンラインで入力可能なフォームを作成するには、ONLYOFFICE Docs 7.0版まで更新してください",
"Security": "セキュリティ",
+ "Run document macros": "ドキュメントマクロを実行する",
"Anonymous": "匿名",
- "Default editor theme": "デフォルトのエディタテーマ",
+ "Default editor theme": "エディターのデフォルトテーマ",
"Light": "明るい",
- "Classic Light": "明るい(クラシック)",
+ "Classic Light": "ライト(クラシック)",
"Dark": "ダーク",
"Review": "レビュー",
"Comment": "コメント",
diff --git a/l10n/nl.js b/l10n/nl.js
new file mode 100644
index 0000000..05633ae
--- /dev/null
+++ b/l10n/nl.js
@@ -0,0 +1,134 @@
+OC.L10N.register(
+ "onlyoffice",
+ {
+ "Access denied" : "Toegang geweigerd",
+ "Invalid request": "Ongeldig verzoek",
+ "Files not found": "Bestanden niet gevonden",
+ "File not found": "Bestand niet gevonden",
+ "Not permitted": "Niet toegestaan",
+ "Download failed": "Download mislukt",
+ "The required folder was not found": "De vereiste map is niet gevonden",
+ "You don't have enough permission to create": "U heeft geen voldoende aanmaak rechten",
+ "Template not found": "Sjabloon niet gevonden",
+ "Can't create file": "Kan bestand niet aanmaken",
+ "Format is not supported": "Bestandsindeling wordt niet ondersteund",
+ "Conversion is not required": "Converteren is niet vereist",
+ "Failed to download converted file": "Kan geconverteerd bestand niet downloaden",
+ "ONLYOFFICE app is not configured. Please contact admin": "ONLYOFFICE app is niet geconfigureerd. Neem contact op met de admin",
+ "FileId is empty": "FileId is leeg",
+ "You do not have enough permissions to view the file": "U heeft niet genoeg rechten om het bestand te bekijken",
+ "Error occurred in the document service": "Er is een fout opgetreden in de documentservice",
+ "Not supported version": "Niet ondersteunde versie",
+ "ONLYOFFICE cannot be reached. Please contact admin": "ONLYOFFICE kan niet worden bereikt. Neem contact op met de admin",
+ "Loading, please wait.": "Laden, wacht alstublieft.",
+ "File created": "Bestand Aangemaakt",
+ "Open in ONLYOFFICE": "Openen in ONLYOFFICE",
+ "Convert with ONLYOFFICE": "Converteer met ONLYOFFICE",
+ "New document": "Nieuw Document",
+ "New spreadsheet": "Nieuwe spreadsheet",
+ "New presentation": "Nieuwe presentatien",
+ "Error when trying to connect": "Fout bij het verbinden",
+ "Settings have been successfully updated": "Instellingen zijn met succes bijgewerkt",
+ "Server can't read xml": "Server kan xml niet lezen",
+ "Bad Response. Errors: ": "Slechte Reactie. Fouten",
+ "Documentation": "Documentatie",
+ "ONLYOFFICE Docs Location specifies the address of the server with the document services installed. Please change the '<documentserver>' for the server address in the below line.": "ONLYOFFICE Docs Location geeft het adres op van de server waarop de documentdiensten geïnstalleerd zijn. Verander de '<documenterver>' voor het serveradres in de onderstaande regel.",
+ "ONLYOFFICE Docs address": "ONLYOFFICE Docs adres",
+ "Advanced server settings": "Geavanceerde serverinstellingen",
+ "ONLYOFFICE Docs address for internal requests from the server": "Adres van de ONLYOFFICE Docs voor interne verzoeken van de server",
+ "Server address for internal requests from ONLYOFFICE Docs": "Serveradres voor interne verzoeken van de ONLYOFFICE Docs",
+ "Secret key (leave blank to disable)": "Geheime sleutel (leeg laten om niet te te gebruiken)",
+ "Open file in the same tab": "Bestand in dezelfde tabblad openen",
+ "The default application for opening the format": "De standaardtoepassing voor het openen van het formaat",
+ "Open the file for editing (due to format restrictions, the data might be lost when saving to the formats from the list below)": "Open het bestand om het te bewerken (wegens formaatbeperkingen kunnen de gegevens verloren gaan bij het opslaan in de formaten van de onderstaande lijst)",
+ "View details": "Bekijk details",
+ "Save": "Opslaan",
+ "Mixed Active Content is not allowed. HTTPS address for ONLYOFFICE Docs is required.": "Gemende Actieve Inhoud is niet toegestaan. HTTPS-adres voor ONLYOFFICE Docs is vereist.",
+ "Restrict access to editors to following groups": "Beperk de toegang tot editors tot de volgende groepen",
+ "Server settings": "Serverinstellingen",
+ "Common settings": "Algemene instellingen",
+ "Editor customization settings": "Editor aanpassingsinstellingen",
+ "The customization section allows personalizing the editor interface": "Met de aanpassingssectie kunt u de interface van de editor personaliseren",
+ "Display Chat menu button": "Chat Menuknop weergeven",
+ "Display the header more compact": "De koptekst compacter weergeven",
+ "Display Feedback & Support menu button": "Menuknop Terugkoppeling & Ondersteuning weergeven",
+ "Display Help menu button": "Menuknop Help weergeven",
+ "Display monochrome toolbar header": "Toon de monochrome koptekst van de werkbalk",
+ "Save as": "Opslaan als",
+ "File saved": "Bestand opgeslagen",
+ "Insert image": "Afbeelding invoegen",
+ "Select recipients": "Kies ontvangers",
+ "Connect to demo ONLYOFFICE Docs server": "Verbinden met de demo ONLYOFFICE Docs server",
+ "This is a public test server, please do not use it for private sensitive data. The server will be available during a 30-day period.": "Dit is een openbare testserver, gelieve deze niet te gebruiken voor persoonlijke en vertrouwelijke gegevens. De server zal gedurende een periode van 30 dagen beschikbaar zijn.",
+ "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Docs server.": "De 30-dagen proefperiode is voorbij, u kunt niet langer verbinding maken met demo ONLYOFFICE Docs server.",
+ "You are using public demo ONLYOFFICE Docs server. Please do not store private sensitive data.": "U gebruikt de openbare demo ONLYOFFICE Docs server. Sla geen vertrouwelijke gegevens op.",
+ "Secure view enables you to secure documents by embedding a watermark": "Met de beveiligde weergave kunt u documenten beveiligen door een watermerk in te sluiten",
+ "Enable watermarking": "Watermerken inschakelen",
+ "Watermark text": "Tekst watermerken",
+ "DO NOT SHARE THIS": "NIET DELEN",
+ "Show watermark on tagged files": "Toon watermerk op getagde bestanden",
+ "Show watermark for users of groups": "Toon watermerk voor gebruikers van groepen",
+ "Supported placeholders": "Ondersteunde plaatsaanduidingen",
+ "Show watermark for all shares": "Watermerk voor al het delen",
+ "Show watermark for read only shares": "Watermerk voor alleen-lezen delen",
+ "Link shares": "Link delen",
+ "Show watermark for all link shares": "Toon watermerk voor alle link delen",
+ "Show watermark for download hidden shares": "Watermerk voor verborgen download delen",
+ "Show watermark for read only link shares": "Watermerk op alleen-lezen link aandelen",
+ "Show watermark on link shares with specific system tags": "Watermerk tonen op link aandelen met specifieke systeemtags",
+ "Select tag": "Tag kiezen",
+ "Select file to compare": "Kies het bestand dat u wilt vergelijken",
+ "Review mode for viewing": "Beoordelingsmodus voor bekijken",
+ "Markup": "Markup",
+ "Final": "Einde",
+ "Original": "Origineel",
+ "version": "versie",
+ "Disable certificate verification (insecure)": "Verificatie van certificaten uitschakelen (onveilig)",
+ "Keep intermediate versions when editing (forcesave)": "Bewaar tussentijdse versies bij bewerken (forcesave)",
+ "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Gebruik ONLYOFFICE om een voorbeeld van een document te genereren (dit neemt schijfruimte in beslag)",
+ "Keep metadata for each version once the document is edited (it will take up disk space)": "Bewaar metadata voor elke versie zodra het document bewerkt is (dit neemt schijfruimte in beslag)",
+ "Clear": "Wissen",
+ "All history successfully deleted": "Alle geschiedenis met succes gewist",
+ "Create": "Maak",
+ "Select template": "Kies een sjabloon",
+ "Invalid file provided": "Ongeldig bestand opgegeven",
+ "Empty": "Leeg",
+ "Error": "Fout",
+ "Add a new template": "Voeg een nieuw sjabloon toe",
+ "Template already exists": "Sjabloon bestaat al",
+ "Template must be in OOXML format": "Sjabloon moet in OOXML formaat zijn",
+ "Template successfully added": "Sjabloon met succes toegevoegd",
+ "Template successfully deleted": "Sjabloon met succes verwijderd",
+ "Common templates": "Algemene Sjablonen",
+ "Failed to delete template": "Sjabloon verwijderen mislukt",
+ "File has been converted. Its content might look different.": "Het bestand is geconverteerd. De inhoud kan er anders uitzien.",
+ "Download as": "Downloaden als",
+ "Download": "Downloaden",
+ "Origin format": "Oorsprong formaat",
+ "Failed to send notification": "Kennisgeving niet verzonden",
+ "Notification sent successfully": "Kennisgeving succesvol verzonden",
+ "%1\$s mentioned in the %2\$s: \"%3\$s\".": "%1\$s genoemd in de %2\$s: \"%3\$s\".",
+ "{notifier} mentioned in the {file}: \"%1\$s\".": "{notifier} genoemd in {file}: \"%1\$s\".",
+ "Choose a format to convert {fileName}": "Kies een formaat om {fileName} te converteren",
+ "New form template": "Nieuw formulier sjabloon",
+ "Blank": "Blanco",
+ "From text document": "Van tekstdocument",
+ "Create new Form template": "Nieuw Formulier sjabloon maken",
+ "Create form": "Formulier maken",
+ "Fill in form in ONLYOFFICE": "Formulier invullen in ONLYOFFICE",
+ "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Update ONLYOFFICE Docs naar versie 7.0 om online invulbare formulieren te kunnen gebruiken",
+ "Security": "Beveiliging",
+ "Anonymous": "Anoniem",
+ "Default editor theme": "Standaard editor thema",
+ "Light": "Licht",
+ "Classic Light": "Klassiek Licht",
+ "Dark": "Donker",
+ "Review": "Overzicht",
+ "Comment": "Opmerking",
+ "Form filling": "Formulier invullen",
+ "Custom filter": "Aangepast filter",
+ "group": "groep",
+ "Advanced": "Geavanceerd",
+ "Provide advanced document permissions using ONLYOFFICE Docs": "Geavanceerde documentrechten geven met ONLYOFFICE Docs"
+},
+"nplurals=2; plural=(n != 1);");
diff --git a/l10n/nl.json b/l10n/nl.json
new file mode 100644
index 0000000..a5db918
--- /dev/null
+++ b/l10n/nl.json
@@ -0,0 +1,132 @@
+{ "translations": {
+ "Access denied" : "Toegang geweigerd",
+ "Invalid request" : "Ongeldig verzoek",
+ "Files not found" : "Bestanden niet gevonden",
+ "File not found" : "Bestand niet gevonden",
+ "Not permitted" : "Niet toegestaan",
+ "Download failed" : "Download mislukt",
+ "The required folder was not found" : "De vereiste map is niet gevonden",
+ "You don't have enough permission to create" : "U heeft geen voldoende aanmaak rechten",
+ "Template not found" : "Sjabloon niet gevonden",
+ "Can't create file" : "Kan bestand niet aanmaken",
+ "Format is not supported" : "Bestandsindeling wordt niet ondersteund",
+ "Conversion is not required" : "Converteren is niet vereist",
+ "Failed to download converted file" : "Kan geconverteerd bestand niet downloaden",
+ "ONLYOFFICE app is not configured. Please contact admin" : "ONLYOFFICE app is niet geconfigureerd. Neem contact op met de admin",
+ "FileId is empty" : "FileId is leeg",
+ "You do not have enough permissions to view the file" : "U heeft niet genoeg rechten om het bestand te bekijken",
+ "Error occurred in the document service" : "Er is een fout opgetreden in de documentservice",
+ "Not supported version" : "Niet ondersteunde versie",
+ "ONLYOFFICE cannot be reached. Please contact admin" : "ONLYOFFICE kan niet worden bereikt. Neem contact op met de admin",
+ "Loading, please wait." : "Laden, wacht alstublieft.",
+ "File created" : "Bestand Aangemaakt",
+ "Open in ONLYOFFICE" : "Openen in ONLYOFFICE",
+ "Convert with ONLYOFFICE" : "Converteer met ONLYOFFICE",
+ "New document" : "Nieuw Document",
+ "New spreadsheet" : "Nieuwe spreadsheet",
+ "New presentation" : "Nieuwe presentatie",
+ "Error when trying to connect" : "Fout bij het verbinden",
+ "Settings have been successfully updated" : "Instellingen zijn met succes bijgewerkt",
+ "Server can't read xml" : "Server kan xml niet lezen",
+ "Bad Response. Errors: " : "Slechte Reactie. Fouten",
+ "Documentation" : "Documentatie",
+ "ONLYOFFICE Docs Location specifies the address of the server with the document services installed. Please change the '<documentserver>' for the server address in the below line." : "ONLYOFFICE Docs Location geeft het adres op van de server waarop de documentdiensten geïnstalleerd zijn. Verander de '<documenterver>' voor het serveradres in de onderstaande regel.",
+ "ONLYOFFICE Docs address" : "ONLYOFFICE Docs adres",
+ "Advanced server settings" : "Geavanceerde serverinstellingen",
+ "ONLYOFFICE Docs address for internal requests from the server" : "Adres van de ONLYOFFICE Docs voor interne verzoeken van de server",
+ "Server address for internal requests from ONLYOFFICE Docs" : "Serveradres voor interne verzoeken van de ONLYOFFICE Docs",
+ "Secret key (leave blank to disable)" : "Geheime sleutel (leeg laten om niet te te gebruiken)",
+ "Open file in the same tab" : "Bestand in dezelfde tabblad openen",
+ "The default application for opening the format" : "De standaardtoepassing voor het openen van het formaat",
+ "Open the file for editing (due to format restrictions, the data might be lost when saving to the formats from the list below)" : "Open het bestand om het te bewerken (wegens formaatbeperkingen kunnen de gegevens verloren gaan bij het opslaan in de formaten van de onderstaande lijst)",
+ "View details" : "Bekijk details",
+ "Save" : "Opslaan",
+ "Mixed Active Content is not allowed. HTTPS address for ONLYOFFICE Docs is required." : "Gemende Actieve Inhoud is niet toegestaan. HTTPS-adres voor ONLYOFFICE Docs is vereist.",
+ "Restrict access to editors to following groups" : "Beperk de toegang tot editors tot de volgende groepen",
+ "Server settings" : "Serverinstellingen",
+ "Common settings" : "Algemene instellingen",
+ "Editor customization settings" : "Editor aanpassingsinstellingen",
+ "The customization section allows personalizing the editor interface" : "Met de aanpassingssectie kunt u de interface van de editor personaliseren",
+ "Display Chat menu button" : "Chat Menuknop weergeven",
+ "Display the header more compact" : "De koptekst compacter weergeven",
+ "Display Feedback & Support menu button" : "Menuknop Terugkoppeling & Ondersteuning weergeven",
+ "Display Help menu button" : "Menuknop Help weergeven",
+ "Display monochrome toolbar header" : "Toon de monochrome koptekst van de werkbalk",
+ "Save as" : "Opslaan als",
+ "File saved" : "Bestand opgeslagen",
+ "Insert image" : "Afbeelding invoegen",
+ "Select recipients" : "Kies ontvangers",
+ "Connect to demo ONLYOFFICE Docs server" : "Verbinden met de demo ONLYOFFICE Docs server",
+ "This is a public test server, please do not use it for private sensitive data. The server will be available during a 30-day period." : "Dit is een openbare testserver, gelieve deze niet te gebruiken voor persoonlijke en vertrouwelijke gegevens. De server zal gedurende een periode van 30 dagen beschikbaar zijn.",
+ "The 30-day test period is over, you can no longer connect to demo ONLYOFFICE Docs server." : "De 30-dagen proefperiode is voorbij, u kunt niet langer verbinding maken met demo ONLYOFFICE Docs server.",
+ "You are using public demo ONLYOFFICE Docs server. Please do not store private sensitive data." : "U gebruikt de openbare demo ONLYOFFICE Docs server. Sla geen vertrouwelijke gegevens op.",
+ "Secure view enables you to secure documents by embedding a watermark" : "Met de beveiligde weergave kunt u documenten beveiligen door een watermerk in te sluiten",
+ "Enable watermarking" : "Watermerken inschakelen",
+ "Watermark text" : "Tekst watermerken",
+ "DO NOT SHARE THIS" : "NIET DELEN",
+ "Show watermark on tagged files" : "Toon watermerk op getagde bestanden",
+ "Show watermark for users of groups" : "Toon watermerk voor gebruikers van groepen",
+ "Supported placeholders" : "Ondersteunde plaatsaanduidingen",
+ "Show watermark for all shares" : "Watermerk voor al het delen",
+ "Show watermark for read only shares" : "Watermerk voor alleen-lezen delen",
+ "Link shares" : "Link delen",
+ "Show watermark for all link shares" : "Toon watermerk voor alle link delen",
+ "Show watermark for download hidden shares" : "Watermerk voor verborgen download delen",
+ "Show watermark for read only link shares" : "Watermerk op alleen-lezen link aandelen",
+ "Show watermark on link shares with specific system tags" : "Watermerk tonen op link aandelen met specifieke systeemtags",
+ "Select tag" : "Tag kiezen",
+ "Select file to compare" : "Kies het bestand dat u wilt vergelijken",
+ "Review mode for viewing": "Beoordelingsmodus voor bekijken",
+ "Markup": "Markup",
+ "Final": "Einde",
+ "Original": "Origineel",
+ "version": "versie",
+ "Disable certificate verification (insecure)": "Verificatie van certificaten uitschakelen (onveilig)",
+ "Keep intermediate versions when editing (forcesave)": "Bewaar tussentijdse versies bij bewerken (forcesave)",
+ "Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Gebruik ONLYOFFICE om een voorbeeld van een document te genereren (dit neemt schijfruimte in beslag)",
+ "Keep metadata for each version once the document is edited (it will take up disk space)": "Bewaar metadata voor elke versie zodra het document bewerkt is (dit neemt schijfruimte in beslag)",
+ "Clear": "Wissen",
+ "All history successfully deleted": "Alle geschiedenis met succes gewist",
+ "Create": "Maak",
+ "Select template" : "Kies een sjabloon",
+ "Invalid file provided" : "Ongeldig bestand opgegeven",
+ "Empty": "Leeg",
+ "Error" : "Fout",
+ "Add a new template": "Voeg een nieuw sjabloon toe",
+ "Template already exists": "Sjabloon bestaat al",
+ "Template must be in OOXML format": "Sjabloon moet in OOXML formaat zijn",
+ "Template successfully added": "Sjabloon met succes toegevoegd",
+ "Template successfully deleted": "Sjabloon met succes verwijderd",
+ "Common templates": "Algemene Sjablonen",
+ "Failed to delete template": "Sjabloon verwijderen mislukt",
+ "File has been converted. Its content might look different.": "Het bestand is geconverteerd. De inhoud kan er anders uitzien.",
+ "Download as": "Downloaden als",
+ "Download": "Downloaden",
+ "Origin format": "Oorsprong formaat",
+ "Failed to send notification": "Kennisgeving niet verzonden",
+ "Notification sent successfully": "Kennisgeving succesvol verzonden",
+ "%1$s mentioned in the %2$s: \"%3$s\".": "%1$s genoemd in de %2$s: \"%3$s\".",
+ "{notifier} mentioned in the {file}: \"%1$s\".": "{notifier} genoemd in {file}: \"%1$s\".",
+ "Choose a format to convert {fileName}": "Kies een formaat om {fileName} te converteren",
+ "New form template": "Nieuw formulier sjabloon",
+ "Blank": "Blanco",
+ "From text document": "Van tekstdocument",
+ "Create new Form template": "Nieuw Formulier sjabloon maken",
+ "Create form": "Formulier maken",
+ "Fill in form in ONLYOFFICE": "Formulier invullen in ONLYOFFICE",
+ "Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Update ONLYOFFICE Docs naar versie 7.0 om online invulbare formulieren te kunnen gebruiken",
+ "Security": "Beveiliging",
+ "Anonymous": "Anoniem",
+ "Default editor theme": "Standaard editor thema",
+ "Light": "Licht",
+ "Classic Light": "Klassiek Licht",
+ "Dark": "Donker",
+ "Review": "Overzicht",
+ "Comment": "Opmerking",
+ "Form filling": "Formulier invullen",
+ "Custom filter": "Aangepast filter",
+ "group": "groep",
+ "Advanced": "Geavanceerd",
+ "Provide advanced document permissions using ONLYOFFICE Docs": "Geavanceerde documentrechten geven met ONLYOFFICE Docs"
+},"pluralForm" :"nplurals=2; plural=(n != 1);"
+} \ No newline at end of file
diff --git a/l10n/pl.js b/l10n/pl.js
index faee6cd..aa6b97a 100644
--- a/l10n/pl.js
+++ b/l10n/pl.js
@@ -87,6 +87,7 @@ OC.L10N.register(
"Keep intermediate versions when editing (forcesave)": "Zachowuj wersje pośrednie w trakcie edycji (zapisuj automatycznie)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Skorzystaj z ONLYOFFICE, aby wygenerować podgląd dokumentu (zajmie to miejsce na dysku)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Zachowaj metadane dla każdej wersji, gdy dokument jest edytowany (zajmie to miejsce na dysku)",
+ "Clear": "Wyczyść",
"All history successfully deleted": "Cała historia została pomyślnie usunięta",
"Create": "Utwórz",
"Select template" : "Wybierz szablon",
@@ -118,6 +119,7 @@ OC.L10N.register(
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Zaktualizuj ONLYOFFICE Docs do wersji 7.0, aby działały w formularzach do wypełniania online",
"Security": "Bezpieczeństwo",
"Anonymous": "Anonimowy",
+ "Default editor theme": "Domyślny motyw edytora",
"Light": "Jasny",
"Classic Light": "Klasyczny jasny",
"Dark": "Ciemny",
@@ -126,6 +128,7 @@ OC.L10N.register(
"Form filling": "Wypełnianie formularza",
"Custom filter": "Niestandardowy filtr",
"group": "grupa",
- "Advanced": "Zaawansowane"
+ "Advanced": "Zaawansowane",
+ "Provide advanced document permissions using ONLYOFFICE Docs": "Udziel zaawansowanych uprawnień do edycji dokumentów w ONLYOFFICE Docs"
},
"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"); \ No newline at end of file
diff --git a/l10n/pl.json b/l10n/pl.json
index 2987f9f..1bd7603 100644
--- a/l10n/pl.json
+++ b/l10n/pl.json
@@ -85,6 +85,7 @@
"Keep intermediate versions when editing (forcesave)": "Zachowuj wersje pośrednie w trakcie edycji (zapisuj automatycznie)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Skorzystaj z ONLYOFFICE, aby wygenerować podgląd dokumentu (zajmie to miejsce na dysku)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Zachowaj metadane dla każdej wersji, gdy dokument jest edytowany (zajmie to miejsce na dysku)",
+ "Clear": "Wyczyść",
"All history successfully deleted": "Cała historia została pomyślnie usunięta",
"Create": "Utwórz",
"Select template" : "Wybierz szablon",
@@ -116,6 +117,7 @@
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Zaktualizuj ONLYOFFICE Docs do wersji 7.0, aby działały w formularzach do wypełniania online",
"Security": "Bezpieczeństwo",
"Anonymous": "Anonimowy",
+ "Default editor theme": "Domyślny motyw edytora",
"Light": "Jasny",
"Classic Light": "Klasyczny jasny",
"Dark": "Ciemny",
@@ -124,6 +126,7 @@
"Form filling": "Wypełnianie formularza",
"Custom filter": "Niestandardowy filtr",
"group": "grupa",
- "Advanced": "Zaawansowane"
+ "Advanced": "Zaawansowane",
+ "Provide advanced document permissions using ONLYOFFICE Docs": "Udziel zaawansowanych uprawnień do edycji dokumentów w ONLYOFFICE Docs"
},"pluralForm" :"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);"
} \ No newline at end of file
diff --git a/l10n/pt_BR.js b/l10n/pt_BR.js
index f77060e..aef07f8 100644
--- a/l10n/pt_BR.js
+++ b/l10n/pt_BR.js
@@ -86,7 +86,8 @@ OC.L10N.register(
"Disable certificate verification (insecure)": "Desativar a verificação do certificado (inseguro)",
"Keep intermediate versions when editing (forcesave)": "Manter versões intermediárias ao editar (forçar salvar)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usar ONLYOFFICE para gerar uma visualização do documento (ocupará espaço em disco)",
- "Keep metadata for each version once the document is edited (it will take up disk space)": "Manter os metadados para cada versão após a edição (ocupará espaço em disco) (ocupará espaço em disco)",
+ "Keep metadata for each version once the document is edited (it will take up disk space)": "Manter os metadados para cada versão após a edição (ocupará espaço em disco) (ocupará espaço em disco)",
+ "Clear": "Limpar",
"All history successfully deleted": "O histórico foi excluído com sucesso",
"Create": "Criar",
"Select template" : "Selecionar um modelo",
@@ -101,8 +102,8 @@ OC.L10N.register(
"Common templates": "Modelos comuns",
"Failed to delete template": "Falha ao excluir modelo",
"File has been converted. Its content might look different.": "O arquivo foi convertido. Seu conteúdo pode ser diferente.",
- "Download as": "Baixar",
- "Download": "Baixar como",
+ "Download as": "Baixar como",
+ "Download": "Baixar",
"Origin format": "Formato de origem",
"Failed to send notification": "Falha ao enviar notificação",
"Notification sent successfully": "Notificação enviada com sucesso",
@@ -118,6 +119,7 @@ OC.L10N.register(
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Atualize o ONLYOFFICE Docs para a versão 7.0 para trabalhar em formulários preenchíveis online",
"Security": "Segurança",
"Anonymous": "Anônimo",
+ "Default editor theme": "Tema do editor padrão",
"Light": "Claro",
"Classic Light": "Clássico claro",
"Dark": "Escuro",
@@ -126,6 +128,7 @@ OC.L10N.register(
"Form filling": "Preenchimento de formularios",
"Custom filter": "Filtro personalizado",
"group": "grupo",
- "Advanced": "Avançado"
+ "Advanced": "Avançado",
+ "Provide advanced document permissions using ONLYOFFICE Docs": "Forneça permissões avançadas de documentos usando o ONLYOFFICE Docs"
},
"nplurals=2; plural=(n > 1);");
diff --git a/l10n/pt_BR.json b/l10n/pt_BR.json
index e1cdd69..a174bbe 100644
--- a/l10n/pt_BR.json
+++ b/l10n/pt_BR.json
@@ -84,7 +84,8 @@
"Disable certificate verification (insecure)": "Desativar a verificação do certificado (inseguro)",
"Keep intermediate versions when editing (forcesave)": "Manter versões intermediárias ao editar (forçar salvar)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Usar ONLYOFFICE para gerar uma visualização do documento (ocupará espaço em disco)",
- "Keep metadata for each version once the document is edited (it will take up disk space)": "Manter os metadados para cada versão após a edição (ocupará espaço em disco) (ocupará espaço em disco)",
+ "Keep metadata for each version once the document is edited (it will take up disk space)": "Manter os metadados para cada versão após a edição (ocupará espaço em disco) (ocupará espaço em disco)",
+ "Clear": "Limpar",
"All history successfully deleted": "O histórico foi excluído com sucesso",
"Create": "Criar",
"Select template" : "Selecionar um modelo",
@@ -99,8 +100,8 @@
"Common templates": "Modelos comuns",
"Failed to delete template": "Falha ao excluir modelo",
"File has been converted. Its content might look different.": "O arquivo foi convertido. Seu conteúdo pode ser diferente.",
- "Download as": "Baixar",
- "Download": "Baixar como",
+ "Download as": "Baixar como",
+ "Download": "Baixar",
"Origin format": "Formato de origem",
"Failed to send notification": "Falha ao enviar notificação",
"Notification sent successfully": "Notificação enviada com sucesso",
@@ -116,6 +117,7 @@
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Atualize o ONLYOFFICE Docs para a versão 7.0 para trabalhar em formulários preenchíveis online",
"Security": "Segurança",
"Anonymous": "Anônimo",
+ "Default editor theme": "Tema do editor padrão",
"Light": "Claro",
"Classic Light": "Clássico claro",
"Dark": "Escuro",
@@ -124,6 +126,7 @@
"Form filling": "Preenchimento de formularios",
"Custom filter": "Filtro personalizado",
"group": "grupo",
- "Advanced": "Avançado"
+ "Advanced": "Avançado",
+ "Provide advanced document permissions using ONLYOFFICE Docs": "Forneça permissões avançadas de documentos usando o ONLYOFFICE Docs"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
} \ No newline at end of file
diff --git a/l10n/ru.js b/l10n/ru.js
index dd31768..cb6fa25 100644
--- a/l10n/ru.js
+++ b/l10n/ru.js
@@ -87,6 +87,7 @@ OC.L10N.register(
"Keep intermediate versions when editing (forcesave)": "Хранить промежуточные версии при редактировании (принудительное сохранение)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Использовать ONLYOFFICE для создания превью документа (займет место на диске)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Сохранять метаданные для каждой версии после редактирования (займет место на диске)",
+ "Clear": "Очистить",
"All history successfully deleted": "История успешно удалена",
"Create": "Создать",
"Select template" : "Выбрать шаблон",
@@ -117,6 +118,7 @@ OC.L10N.register(
"Fill in form in ONLYOFFICE": "Заполнить форму в ONLYOFFICE",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Обновите сервер ONLYOFFICE Docs до версии 7.0 для работы с формами онлайн",
"Security": "Безопасность",
+ "Run document macros": "Запускать макросы документа",
"Anonymous": "Аноним",
"Default editor theme": "Тема редактора по умолчанию",
"Light": "Светлая",
diff --git a/l10n/ru.json b/l10n/ru.json
index e4bc0b5..fe82be6 100644
--- a/l10n/ru.json
+++ b/l10n/ru.json
@@ -85,6 +85,7 @@
"Keep intermediate versions when editing (forcesave)": "Хранить промежуточные версии при редактировании (принудительное сохранение)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Использовать ONLYOFFICE для создания превью документа (займет место на диске)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "Сохранять метаданные для каждой версии после редактирования (займет место на диске)",
+ "Clear": "Очистить",
"All history successfully deleted": "История успешно удалена",
"Create": "Создать",
"Select template" : "Выбрать шаблон",
@@ -115,6 +116,7 @@
"Fill in form in ONLYOFFICE": "Заполнить форму в ONLYOFFICE",
"Please update ONLYOFFICE Docs to version 7.0 to work on fillable forms online": "Обновите сервер ONLYOFFICE Docs до версии 7.0 для работы с формами онлайн",
"Security": "Безопасность",
+ "Run document macros": "Запускать макросы документа",
"Anonymous": "Аноним",
"Default editor theme": "Тема редактора по умолчанию",
"Light": "Светлая",
diff --git a/l10n/sv.js b/l10n/sv.js
index fbf96a8..dd05061 100644
--- a/l10n/sv.js
+++ b/l10n/sv.js
@@ -86,7 +86,8 @@ OC.L10N.register(
"Disable certificate verification (insecure)": "Använd inte certifikatsverifiering (osäkert)",
"Keep intermediate versions when editing (forcesave)": "Behåll mellanliggande versioner vid redigering (tvinga att spara)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Använd ONLYOFFICE för att generera en förhandsgranskning av dokument (detta använder diskutrymme)",
- "Keep metadata for each version once the document is edited (it will take up disk space)": "Behåll metadata för varje version när dokumentet redigeras (detta använder diskutrymme) ",
+ "Keep metadata for each version once the document is edited (it will take up disk space)": "Behåll metadata för varje version när dokumentet redigeras (detta använder diskutrymme)",
+ "Clear": "Rensa",
"All history successfully deleted": "All historik har tagits bort",
"Create": "Skapa",
"Select template" : "Välj mall",
diff --git a/l10n/sv.json b/l10n/sv.json
index ebce00d..d7820cc 100644
--- a/l10n/sv.json
+++ b/l10n/sv.json
@@ -84,7 +84,8 @@
"Disable certificate verification (insecure)": "Använd inte certifikatsverifiering (osäkert)",
"Keep intermediate versions when editing (forcesave)": "Behåll mellanliggande versioner vid redigering (tvinga att spara)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "Använd ONLYOFFICE för att generera en förhandsgranskning av dokument (detta använder diskutrymme)",
- "Keep metadata for each version once the document is edited (it will take up disk space)": "Behåll metadata för varje version när dokumentet redigeras (detta använder diskutrymme) ",
+ "Keep metadata for each version once the document is edited (it will take up disk space)": "Behåll metadata för varje version när dokumentet redigeras (detta använder diskutrymme)",
+ "Clear": "Rensa",
"All history successfully deleted": "All historik har tagits bort",
"Create": "Skapa",
"Select template" : "Välj mall",
diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js
index 46cdefd..565cda0 100644
--- a/l10n/zh_CN.js
+++ b/l10n/zh_CN.js
@@ -87,6 +87,7 @@ OC.L10N.register(
"Keep intermediate versions when editing (forcesave)": "编辑时保留中间版本 (强制保存)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "使用ONLYOFFICE生成文档预览(将占用磁盘空间)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "编辑文档后保留每个版本的元数据(它将占用磁盘空间)",
+ "Clear": "清除",
"All history successfully deleted": "所有历史记录成功删除",
"Create": "创建",
"Select template" : "选择模板",
diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json
index 0c8dfbc..1ebc255 100644
--- a/l10n/zh_CN.json
+++ b/l10n/zh_CN.json
@@ -85,6 +85,7 @@
"Keep intermediate versions when editing (forcesave)": "编辑时保留中间版本 (强制保存)",
"Use ONLYOFFICE to generate a document preview (it will take up disk space)": "使用ONLYOFFICE生成文档预览(将占用磁盘空间)",
"Keep metadata for each version once the document is edited (it will take up disk space)": "编辑文档后保留每个版本的元数据(它将占用磁盘空间)",
+ "Clear": "清除",
"All history successfully deleted": "所有历史记录成功删除",
"Create": "创建",
"Select template" : "选择模板",
diff --git a/lib/Migration/Version070400Date20220929111111.php b/lib/Migration/Version070400Date20220929111111.php
new file mode 100644
index 0000000..d42b3db
--- /dev/null
+++ b/lib/Migration/Version070400Date20220929111111.php
@@ -0,0 +1,111 @@
+<?php
+
+declare(strict_types=1);
+
+namespace OCA\Onlyoffice\Migration;
+
+use Closure;
+use OCP\DB\ISchemaWrapper;
+use OCP\Migration\IOutput;
+use OCP\Migration\SimpleMigrationStep;
+
+/**
+ * Auto-generated migration step: Please modify to your needs!
+ */
+class Version070400Date20220929111111 extends SimpleMigrationStep {
+
+ /**
+ * @param IOutput $output
+ * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
+ * @param array $options
+ */
+ public function preSchemaChange(IOutput $output, Closure $schemaClosure, array $options): void {
+ }
+
+ /**
+ * @param IOutput $output
+ * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
+ * @param array $options
+ * @return null|ISchemaWrapper
+ */
+ public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
+ /** @var ISchemaWrapper $schema */
+ $schema = $schemaClosure();
+
+ if (!$schema->hasTable('onlyoffice_filekey')) {
+ $table = $schema->createTable('onlyoffice_filekey');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ ]);
+ $table->addColumn('file_id', 'bigint', [
+ 'notnull' => false,
+ 'default' => '-1',
+ ]);
+ $table->addColumn('key', 'string', [
+ 'notnull' => true,
+ 'length' => 128,
+ ]);
+ $table->addColumn('lock', 'integer', [
+ 'notnull' => true,
+ 'default' => 0,
+ ]);
+ $table->addColumn('fs', 'integer', [
+ 'notnull' => true,
+ 'default' => 0,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addUniqueIndex(['file_id'], 'onlyoffice_file_id_index');
+ }
+
+ if (!$schema->hasTable('onlyoffice_permissions')) {
+ $table = $schema->createTable('onlyoffice_permissions');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ ]);
+ $table->addColumn('share_id', 'bigint', [
+ 'notnull' => true,
+ 'default' => '-1',
+ ]);
+ $table->addColumn('permissions', 'integer', [
+ 'notnull' => true,
+ 'default' => 0,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addUniqueIndex(['share_id'], 'onlyoffice_share_id_index');
+ }
+
+ if (!$schema->hasTable('onlyoffice_instance')) {
+ $table = $schema->createTable('onlyoffice_instance');
+ $table->addColumn('id', 'integer', [
+ 'autoincrement' => true,
+ 'notnull' => true,
+ ]);
+ $table->addColumn('remote', 'string', [
+ 'notnull' => true,
+ 'length' => 128,
+ ]);
+ $table->addColumn('expire', 'bigint', [
+ 'notnull' => true,
+ 'default' => 0,
+ ]);
+ $table->addColumn('status', 'integer', [
+ 'notnull' => true,
+ 'default' => 0,
+ ]);
+ $table->setPrimaryKey(['id']);
+ $table->addUniqueIndex(['remote'], 'onlyoffice_remote_index');
+ }
+
+ return $schema;
+ }
+
+ /**
+ * @param IOutput $output
+ * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
+ * @param array $options
+ */
+ public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): void {
+ }
+}
diff --git a/lib/appconfig.php b/lib/appconfig.php
index b3d0af4..e73b4ee 100644
--- a/lib/appconfig.php
+++ b/lib/appconfig.php
@@ -691,7 +691,7 @@ class AppConfig {
* @return bool
*/
public function GetPreview() {
- return $this->config->getAppValue($this->appName, $this->_preview, "false") === "true";
+ return $this->config->getAppValue($this->appName, $this->_preview, "true") === "true";
}
/**
diff --git a/lib/extrapermissions.php b/lib/extrapermissions.php
index 26a7d33..66d2e83 100644
--- a/lib/extrapermissions.php
+++ b/lib/extrapermissions.php
@@ -383,9 +383,11 @@ class ExtraPermissions {
}
$node = $share->getNode();
- $pathinfo = pathinfo($node->getName());
- $extension = $pathinfo["extension"];
- $format = $this->config->FormatsSetting()[$extension];
+ $ext = strtolower(pathinfo($node->getName(), PATHINFO_EXTENSION));
+ $format = !empty($ext) && array_key_exists($ext, $this->config->FormatsSetting()) ? $this->config->FormatsSetting()[$ext] : null;
+ if (!isset($format)) {
+ return [$availableExtra, $defaultExtra];
+ }
if (($share->getPermissions() & Constants::PERMISSION_UPDATE) === Constants::PERMISSION_UPDATE) {
if (isset($format["modifyFilter"]) && $format["modifyFilter"]) {
diff --git a/lib/fileutility.php b/lib/fileutility.php
index 2d2a65f..cc50a45 100644
--- a/lib/fileutility.php
+++ b/lib/fileutility.php
@@ -27,10 +27,9 @@ use OCP\ILogger;
use OCP\ISession;
use OCP\Share\IManager;
-use OCA\Files_Sharing\External\Storage as SharingExternalStorage;
-
use OCA\Onlyoffice\AppConfig;
use OCA\Onlyoffice\KeyManager;
+use OCA\Onlyoffice\RemoteInstance;
/**
* File utility
@@ -221,10 +220,10 @@ class FileUtility {
$fileId = $file->getId();
if ($origin
- && $file->getStorage()->instanceOfStorage(SharingExternalStorage::class)) {
+ && RemoteInstance::isRemoteFile($file)) {
try {
- $key = $this->getFederatedKey($file);
+ $key = RemoteInstance::getRemoteKey($file);
if (!empty($key)) {
return $key;
@@ -263,41 +262,6 @@ class FileUtility {
}
/**
- * Generate unique document identifier in federated share
- *
- * @param File $file - file
- *
- * @return string
- */
- private function getFederatedKey($file) {
- $remote = rtrim($file->getStorage()->getRemote(), "/") . "/";
- $shareToken = $file->getStorage()->getToken();
- $internalPath = $file->getInternalPath();
-
- $httpClientService = \OC::$server->getHTTPClientService();
- $client = $httpClientService->newClient();
- $response = $client->post($remote . "ocs/v2.php/apps/" . $this->appName . "/api/v1/key?format=json", [
- "timeout" => 5,
- "body" => [
- "shareToken" => $shareToken,
- "path" => $internalPath
- ]
- ]);
- $body = \json_decode($response->getBody(), true);
-
- $data = $body["ocs"]["data"];
- if (!empty($data["error"])) {
- $this->logger->error("Error federated key " . $data["error"], ["app" => $this->appName]);
- return null;
- }
-
- $key = $data["key"];
- $this->logger->debug("Federated key: $key", ["app" => $this->appName]);
-
- return $key;
- }
-
- /**
* Generate unique file version key
*
* @param OCA\Files_Versions\Versions\IVersion $version - file version
diff --git a/lib/keymanager.php b/lib/keymanager.php
index f86f949..bdde78c 100644
--- a/lib/keymanager.php
+++ b/lib/keymanager.php
@@ -19,8 +19,6 @@
namespace OCA\Onlyoffice;
-use OCP\Files\File;
-
/**
* Key manager
*
@@ -29,11 +27,6 @@ use OCP\Files\File;
class KeyManager {
/**
- * App name
- */
- private const App_Name = "onlyoffice";
-
- /**
* Table name
*/
private const TableName_Key = "onlyoffice_filekey";
@@ -153,56 +146,4 @@ class KeyManager {
return $fs === "1";
}
-
- /**
- * Change lock status in the federated share
- *
- * @param File $file - file
- * @param bool $lock - status
- * @param bool $fs - status
- *
- * @return bool
- */
- public static function lockFederatedKey($file, $lock, $fs) {
- $logger = \OC::$server->getLogger();
- $action = $lock ? "lock" : "unlock";
-
- $remote = rtrim($file->getStorage()->getRemote(), "/") . "/";
- $shareToken = $file->getStorage()->getToken();
- $internalPath = $file->getInternalPath();
-
- $httpClientService = \OC::$server->getHTTPClientService();
- $client = $httpClientService->newClient();
- $data = [
- "timeout" => 5,
- "body" => [
- "shareToken" => $shareToken,
- "path" => $internalPath,
- "lock" => $lock
- ]
- ];
- if (!empty($fs)) {
- $data["body"]["fs"] = $fs;
- }
-
- try {
- $response = $client->post($remote . "ocs/v2.php/apps/" . self::App_Name . "/api/v1/keylock?format=json", $data);
- $body = \json_decode($response->getBody(), true);
-
- $data = $body["ocs"]["data"];
-
- if (empty($data)) {
- $logger->debug("Federated request " . $action . " for " . $file->getFileInfo()->getId() . " is successful", ["app" => self::App_Name]);
- return true;
- }
-
- if (!empty($data["error"])) {
- $logger->error("Error " . $action . " federated key for " . $file->getFileInfo()->getId() . ": " . $data["error"], ["app" => self::App_Name]);
- return false;
- }
- } catch (\Exception $e) {
- $logger->logException($e, ["message" => "Failed to request federated " . $action . " for " . $file->getFileInfo()->getId(), "app" => self::App_Name]);
- return false;
- }
- }
}
diff --git a/lib/remoteinstance.php b/lib/remoteinstance.php
new file mode 100644
index 0000000..000de44
--- /dev/null
+++ b/lib/remoteinstance.php
@@ -0,0 +1,272 @@
+<?php
+/**
+ *
+ * (c) Copyright Ascensio System SIA 2021
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+namespace OCA\Onlyoffice;
+
+use OCP\Files\File;
+
+use OCA\Files_Sharing\External\Storage as SharingExternalStorage;
+
+/**
+ * Remote instance manager
+ *
+ * @package OCA\Onlyoffice
+ */
+class RemoteInstance {
+
+ /**
+ * App name
+ */
+ private const App_Name = "onlyoffice";
+
+ /**
+ * Table name
+ */
+ private const TableName_Key = "onlyoffice_instance";
+
+ /**
+ * Time to live of remote instance (12 hours)
+ */
+ private static $ttl = 60 * 60 * 12;
+
+ /**
+ * Health remote list
+ */
+ private static $healthRemote = [];
+
+ /**
+ * Get remote instance
+ *
+ * @param string $remote - remote instance
+ *
+ * @return array
+ */
+ private static function get($remote) {
+ $connection = \OC::$server->getDatabaseConnection();
+ $select = $connection->prepare("
+ SELECT remote, expire, status
+ FROM `*PREFIX*" . self::TableName_Key . "`
+ WHERE `remote` = ?
+ ");
+ $result = $select->execute([$remote]);
+
+ $dbremote = $result ? $select->fetch() : [];
+
+ return $dbremote;
+ }
+
+ /**
+ * Store remote instance
+ *
+ * @param string $remote - remote instance
+ * @param bool $status - remote status
+ *
+ * @return bool
+ */
+ private static function set($remote, $status) {
+ $connection = \OC::$server->getDatabaseConnection();
+ $insert = $connection->prepare("
+ INSERT INTO `*PREFIX*" . self::TableName_Key . "`
+ (`remote`, `status`, `expire`)
+ VALUES (?, ?, ?)
+ ");
+ return (bool)$insert->execute([$remote, $status === true ? 1 : 0, time()]);
+ }
+
+ /**
+ * Update remote instance
+ *
+ * @param string $remote - remote instance
+ * @param bool $status - remote status
+ *
+ * @return bool
+ */
+ private static function update($remote, $status) {
+ $connection = \OC::$server->getDatabaseConnection();
+ $update = $connection->prepare("
+ UPDATE `*PREFIX*" . self::TableName_Key . "`
+ SET status = ?, expire = ?
+ WHERE remote = ?
+ ");
+ return (bool)$update->execute([$status === true ? 1 : 0, time(), $remote]);
+ }
+
+ /**
+ * Health check remote instance
+ *
+ * @param string $remote - remote instance
+ *
+ * @return bool
+ */
+ public static function healthCheck($remote) {
+ $logger = \OC::$server->getLogger();
+ $remote = rtrim($remote, "/") . "/";
+
+ if (array_key_exists($remote, self::$healthRemote)) {
+ $logger->debug("Remote instance " . $remote . " from local cache", ["app" => self::App_Name]);
+ return self::$healthRemote[$remote];
+ }
+
+ $dbremote = self::get($remote);
+ if (!empty($dbremote) && $dbremote["expire"] + self::$ttl > time()) {
+ $logger->debug("Remote instance " . $remote . " from database status " . $dbremote["status"], ["app" => self::App_Name]);
+ self::$healthRemote[$remote] = $dbremote["status"];
+ return self::$healthRemote[$remote];
+ }
+
+ $httpClientService = \OC::$server->getHTTPClientService();
+ $client = $httpClientService->newClient();
+
+ $status = false;
+ try {
+ $response = $client->get($remote . "ocs/v2.php/apps/" . self::App_Name . "/api/v1/healthcheck?format=json");
+ $body = json_decode($response->getBody(), true);
+
+ $data = $body["ocs"]["data"];
+
+ if (isset($data["alive"])) {
+ $status = $data["alive"] === true;
+ }
+
+ } catch (\Exception $e) {
+ $logger->logException($e, ["message" => "Failed to request federated health check for" . $remote, "app" => self::App_Name]);
+ }
+
+ if (empty($dbremote)) {
+ self::set($remote, $status);
+ } else {
+ self::update($remote, $status);
+ }
+
+ $logger->debug("Remote instance " . $remote . " was stored to database status " . $dbremote["status"], ["app" => self::App_Name]);
+
+ self::$healthRemote[$remote] = $status;
+
+ return self::$healthRemote[$remote];
+ }
+
+ /**
+ * Generate unique document identifier in federated share
+ *
+ * @param File $file - file
+ *
+ * @return string
+ */
+ public static function getRemoteKey($file) {
+ $logger = \OC::$server->getLogger();
+
+ $remote = rtrim($file->getStorage()->getRemote(), "/") . "/";
+ $shareToken = $file->getStorage()->getToken();
+ $internalPath = $file->getInternalPath();
+
+ $httpClientService = \OC::$server->getHTTPClientService();
+ $client = $httpClientService->newClient();
+ $response = $client->post($remote . "ocs/v2.php/apps/" . self::App_Name . "/api/v1/key?format=json", [
+ "timeout" => 5,
+ "body" => [
+ "shareToken" => $shareToken,
+ "path" => $internalPath
+ ]
+ ]);
+ $body = \json_decode($response->getBody(), true);
+
+ $data = $body["ocs"]["data"];
+ if (!empty($data["error"])) {
+ $logger->error("Error federated key " . $data["error"], ["app" => self::App_Name]);
+ return null;
+ }
+
+ $key = $data["key"];
+ $logger->debug("Federated key: $key", ["app" => self::App_Name]);
+
+ return $key;
+ }
+
+ /**
+ * Change lock status in the federated share
+ *
+ * @param File $file - file
+ * @param bool $lock - status
+ * @param bool $fs - status
+ *
+ * @return bool
+ */
+ public static function lockRemoteKey($file, $lock, $fs) {
+ $logger = \OC::$server->getLogger();
+ $action = $lock ? "lock" : "unlock";
+
+ $remote = rtrim($file->getStorage()->getRemote(), "/") . "/";
+ $shareToken = $file->getStorage()->getToken();
+ $internalPath = $file->getInternalPath();
+
+ $httpClientService = \OC::$server->getHTTPClientService();
+ $client = $httpClientService->newClient();
+ $data = [
+ "timeout" => 5,
+ "body" => [
+ "shareToken" => $shareToken,
+ "path" => $internalPath,
+ "lock" => $lock
+ ]
+ ];
+ if (!empty($fs)) {
+ $data["body"]["fs"] = $fs;
+ }
+
+ try {
+ $response = $client->post($remote . "ocs/v2.php/apps/" . self::App_Name . "/api/v1/keylock?format=json", $data);
+ $body = \json_decode($response->getBody(), true);
+
+ $data = $body["ocs"]["data"];
+
+ if (empty($data)) {
+ $logger->debug("Federated request " . $action . " for " . $file->getFileInfo()->getId() . " is successful", ["app" => self::App_Name]);
+ return true;
+ }
+
+ if (!empty($data["error"])) {
+ $logger->error("Error " . $action . " federated key for " . $file->getFileInfo()->getId() . ": " . $data["error"], ["app" => self::App_Name]);
+ return false;
+ }
+ } catch (\Exception $e) {
+ $logger->logException($e, ["message" => "Failed to request federated " . $action . " for " . $file->getFileInfo()->getId(), "app" => self::App_Name]);
+ return false;
+ }
+ }
+
+ /**
+ * Check of federated capable
+ *
+ * @param File $file - file
+ *
+ * @return bool
+ */
+ public static function isRemoteFile($file) {
+ $storage = $file->getStorage();
+
+ $alive = false;
+ $isFederated = $storage->instanceOfStorage(SharingExternalStorage::class);
+ if (!$isFederated) {
+ return false;
+ }
+
+ $alive = RemoteInstance::healthCheck($storage->getRemote());
+ return $alive;
+ }
+} \ No newline at end of file
diff --git a/screenshots/icon.png b/screenshots/icon.png
index 03bc00a..b8d5fd3 100644
--- a/screenshots/icon.png
+++ b/screenshots/icon.png
Binary files differ
diff --git a/screenshots/main.png b/screenshots/main.png
index 504e16e..ab9e216 100644
--- a/screenshots/main.png
+++ b/screenshots/main.png
Binary files differ
diff --git a/screenshots/main_small.png b/screenshots/main_small.png
index 5294be1..4842e14 100644
--- a/screenshots/main_small.png
+++ b/screenshots/main_small.png
Binary files differ
diff --git a/screenshots/new.png b/screenshots/new.png
index fcec2f6..5f2d722 100644
--- a/screenshots/new.png
+++ b/screenshots/new.png
Binary files differ
diff --git a/screenshots/open.png b/screenshots/open.png
index 8fabfc0..d32fe31 100644
--- a/screenshots/open.png
+++ b/screenshots/open.png
Binary files differ
diff --git a/screenshots/open_form.png b/screenshots/open_form.png
new file mode 100644
index 0000000..b5eb38c
--- /dev/null
+++ b/screenshots/open_form.png
Binary files differ
diff --git a/screenshots/settings.png b/screenshots/settings.png
index 8d380ce..2c63881 100644
--- a/screenshots/settings.png
+++ b/screenshots/settings.png
Binary files differ