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.md1
-rw-r--r--appinfo/application.php5
-rw-r--r--appinfo/info.xml2
-rw-r--r--js/main.js178
-rw-r--r--js/viewer.js50
-rw-r--r--lib/listeners/filesharinglistener.php28
-rw-r--r--lib/listeners/fileslistener.php28
-rw-r--r--lib/listeners/viewerlistener.php28
-rw-r--r--lib/settingsdata.php45
9 files changed, 225 insertions, 140 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 95fb81f..8d4f5d4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,6 @@
# Change Log
+## 7.4.6
## Added
- Dutch translation
- Chinese (Traditional, Taiwan), Basque (Spain) empty file templates
diff --git a/appinfo/application.php b/appinfo/application.php
index 378972d..bbf013a 100644
--- a/appinfo/application.php
+++ b/appinfo/application.php
@@ -59,6 +59,7 @@ use OCA\Onlyoffice\Notifier;
use OCA\Onlyoffice\Preview;
use OCA\Onlyoffice\TemplateManager;
use OCA\Onlyoffice\TemplateProvider;
+use OCA\Onlyoffice\SettingsData;
use Psr\Container\ContainerInterface;
@@ -136,6 +137,10 @@ class Application extends App implements IBootstrap {
);
});
+ $context->registerService("SettingsData", function (ContainerInterface $c) {
+ return new SettingsData($this->appConfig);
+ });
+
// Controllers
$context->registerService("SettingsController", function (ContainerInterface $c) {
return new SettingsController(
diff --git a/appinfo/info.xml b/appinfo/info.xml
index a1afb3c..529b658 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -6,7 +6,7 @@
<description>ONLYOFFICE connector allows you to view, edit and collaborate on text documents, spreadsheets and presentations within Nextcloud using ONLYOFFICE Docs. This will create a new Edit in ONLYOFFICE action within the document library for Office documents. This allows multiple users to co-author documents in real time from the familiar web interface and save the changes back to your file storage.</description>
<licence>apache</licence>
<author mail="dev@onlyoffice.com" homepage="https://www.onlyoffice.com/">Ascensio System SIA</author>
- <version>7.4.4</version>
+ <version>7.4.6</version>
<namespace>Onlyoffice</namespace>
<types>
<prevent_group_restriction/>
diff --git a/js/main.js b/js/main.js
index 6d9d7be..fb4849d 100644
--- a/js/main.js
+++ b/js/main.js
@@ -25,7 +25,7 @@
frameSelector: null,
}, OCA.Onlyoffice);
- OCA.Onlyoffice.setting = {};
+ OCA.Onlyoffice.setting = OCP.InitialState.loadState(OCA.Onlyoffice.AppName, "settings");
OCA.Onlyoffice.mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini|Macintosh/i.test(navigator.userAgent)
&& navigator.maxTouchPoints && navigator.maxTouchPoints > 1;
@@ -312,92 +312,70 @@
OCA.Onlyoffice.CreateFile(name, fileList, 0, targetId, false);
};
- OCA.Onlyoffice.GetSettings = function (callbackSettings) {
- if (OCA.Onlyoffice.setting.formats) {
-
- callbackSettings();
-
- } else {
-
- $.get(OC.generateUrl("apps/" + OCA.Onlyoffice.AppName + "/ajax/settings"),
- function onSuccess(settings) {
- OCA.Onlyoffice.setting = settings;
+ OCA.Onlyoffice.registerAction = function() {
+ var formats = OCA.Onlyoffice.setting.formats;
- callbackSettings();
- }
- );
+ $.each(formats, function (ext, config) {
+ if (!config.mime) {
+ return true;
+ }
+ OCA.Files.fileActions.registerAction({
+ name: "onlyofficeOpen",
+ displayName: t(OCA.Onlyoffice.AppName, "Open in ONLYOFFICE"),
+ mime: config.mime,
+ permissions: OC.PERMISSION_READ,
+ iconClass: "icon-onlyoffice-open",
+ actionHandler: OCA.Onlyoffice.FileClick
+ });
- }
- };
+ if (config.def) {
+ OCA.Files.fileActions.setDefault(config.mime, "onlyofficeOpen");
+ }
- OCA.Onlyoffice.registerAction = function() {
- var register = function () {
- var formats = OCA.Onlyoffice.setting.formats;
+ if (config.conv) {
+ OCA.Files.fileActions.registerAction({
+ name: "onlyofficeConvert",
+ displayName: t(OCA.Onlyoffice.AppName, "Convert with ONLYOFFICE"),
+ mime: config.mime,
+ permissions: ($("#isPublic").val() ? OC.PERMISSION_UPDATE : OC.PERMISSION_READ),
+ iconClass: "icon-onlyoffice-convert",
+ actionHandler: OCA.Onlyoffice.FileConvertClick
+ });
+ }
- $.each(formats, function (ext, config) {
- if (!config.mime) {
- return true;
- }
+ if (config.fillForms) {
OCA.Files.fileActions.registerAction({
- name: "onlyofficeOpen",
- displayName: t(OCA.Onlyoffice.AppName, "Open in ONLYOFFICE"),
+ name: "onlyofficeFill",
+ displayName: t(OCA.Onlyoffice.AppName, "Fill in form in ONLYOFFICE"),
mime: config.mime,
- permissions: OC.PERMISSION_READ,
- iconClass: "icon-onlyoffice-open",
+ permissions: OC.PERMISSION_UPDATE,
+ iconClass: "icon-onlyoffice-fill",
actionHandler: OCA.Onlyoffice.FileClick
});
+ }
- if (config.def) {
- OCA.Files.fileActions.setDefault(config.mime, "onlyofficeOpen");
- }
-
- if (config.conv) {
- OCA.Files.fileActions.registerAction({
- name: "onlyofficeConvert",
- displayName: t(OCA.Onlyoffice.AppName, "Convert with ONLYOFFICE"),
- mime: config.mime,
- permissions: ($("#isPublic").val() ? OC.PERMISSION_UPDATE : OC.PERMISSION_READ),
- iconClass: "icon-onlyoffice-convert",
- actionHandler: OCA.Onlyoffice.FileConvertClick
- });
- }
-
- if (config.fillForms) {
- OCA.Files.fileActions.registerAction({
- name: "onlyofficeFill",
- displayName: t(OCA.Onlyoffice.AppName, "Fill in form in ONLYOFFICE"),
- mime: config.mime,
- permissions: OC.PERMISSION_UPDATE,
- iconClass: "icon-onlyoffice-fill",
- actionHandler: OCA.Onlyoffice.FileClick
- });
- }
-
- if (config.createForm) {
- OCA.Files.fileActions.registerAction({
- name: "onlyofficeCreateForm",
- displayName: t(OCA.Onlyoffice.AppName, "Create form"),
- mime: config.mime,
- permissions: ($("#isPublic").val() ? OC.PERMISSION_UPDATE : OC.PERMISSION_READ),
- iconClass: "icon-onlyoffice-create",
- actionHandler: OCA.Onlyoffice.CreateFormClick
- });
- }
-
- if (config.saveas && !$("#isPublic").val()) {
- OCA.Files.fileActions.registerAction({
- name: "onlyofficeDownload",
- displayName: t(OCA.Onlyoffice.AppName, "Download as"),
- mime: config.mime,
- permissions: OC.PERMISSION_READ,
- iconClass: "icon-onlyoffice-download",
- actionHandler: OCA.Onlyoffice.DownloadClick
- });
- }
- });
- }
+ if (config.createForm) {
+ OCA.Files.fileActions.registerAction({
+ name: "onlyofficeCreateForm",
+ displayName: t(OCA.Onlyoffice.AppName, "Create form"),
+ mime: config.mime,
+ permissions: ($("#isPublic").val() ? OC.PERMISSION_UPDATE : OC.PERMISSION_READ),
+ iconClass: "icon-onlyoffice-create",
+ actionHandler: OCA.Onlyoffice.CreateFormClick
+ });
+ }
- OCA.Onlyoffice.GetSettings(register);
+ if (config.saveas && !$("#isPublic").val()) {
+ OCA.Files.fileActions.registerAction({
+ name: "onlyofficeDownload",
+ displayName: t(OCA.Onlyoffice.AppName, "Download as"),
+ mime: config.mime,
+ permissions: OC.PERMISSION_READ,
+ iconClass: "icon-onlyoffice-download",
+ actionHandler: OCA.Onlyoffice.DownloadClick
+ });
+ }
+ });
};
OCA.Onlyoffice.NewFileMenu = {
@@ -534,38 +512,34 @@
var fileName = $("#filename").val();
var extension = getFileExtension(fileName);
- var initSharedButton = function () {
- var formats = OCA.Onlyoffice.setting.formats;
-
- var config = formats[extension];
- if (!config) {
- return;
- }
+ var formats = OCA.Onlyoffice.setting.formats;
- var editorUrl = OC.generateUrl("apps/" + OCA.Onlyoffice.AppName + "/s/" + encodeURIComponent($("#sharingToken").val()));
+ var config = formats[extension];
+ if (!config) {
+ return;
+ }
- if (_oc_appswebroots.richdocuments
- || _oc_appswebroots.files_pdfviewer && extension === "pdf"
- || _oc_appswebroots.text && extension === "txt") {
+ var editorUrl = OC.generateUrl("apps/" + OCA.Onlyoffice.AppName + "/s/" + encodeURIComponent($("#sharingToken").val()));
- var button = document.createElement("a");
- button.href = editorUrl;
- button.className = "onlyoffice-public-open button";
- button.innerText = t(OCA.Onlyoffice.AppName, "Open in ONLYOFFICE")
+ if (_oc_appswebroots.richdocuments
+ || _oc_appswebroots.files_pdfviewer && extension === "pdf"
+ || _oc_appswebroots.text && extension === "txt") {
- if (!OCA.Onlyoffice.setting.sameTab) {
- button.target = "_blank";
- }
+ var button = document.createElement("a");
+ button.href = editorUrl;
+ button.className = "onlyoffice-public-open button";
+ button.innerText = t(OCA.Onlyoffice.AppName, "Open in ONLYOFFICE")
- $("#preview").prepend(button);
- } else {
- OCA.Onlyoffice.frameSelector = "#onlyofficeFrame";
- var $iframe = $("<iframe id=\"onlyofficeFrame\" nonce=\"" + btoa(OC.requestToken) + "\" scrolling=\"no\" allowfullscreen src=\"" + editorUrl + "?inframe=true\" />");
- $("#app-content").append($iframe);
+ if (!OCA.Onlyoffice.setting.sameTab) {
+ button.target = "_blank";
}
- };
- OCA.Onlyoffice.GetSettings(initSharedButton);
+ $("#preview").prepend(button);
+ } else {
+ OCA.Onlyoffice.frameSelector = "#onlyofficeFrame";
+ var $iframe = $("<iframe id=\"onlyofficeFrame\" nonce=\"" + btoa(OC.requestToken) + "\" scrolling=\"no\" allowfullscreen src=\"" + editorUrl + "?inframe=true\" />");
+ $("#app-content").append($iframe);
+ }
} else {
OC.Plugins.register("OCA.Files.NewFileMenu", OCA.Onlyoffice.NewFileMenu);
diff --git a/js/viewer.js b/js/viewer.js
index b95f72a..fc69001 100644
--- a/js/viewer.js
+++ b/js/viewer.js
@@ -22,29 +22,13 @@
}
OCA.Onlyoffice = {
- AppName: "onlyoffice",
- frameSelector: null,
- setting: {},
- };
-
- OCA.Onlyoffice.GetSettings = function (callbackSettings) {
- if (OCA.Onlyoffice.setting.formats) {
-
- callbackSettings();
-
- } else {
-
- $.get(OC.generateUrl("apps/" + OCA.Onlyoffice.AppName + "/ajax/settings"),
- function onSuccess(settings) {
- OCA.Onlyoffice.setting = settings;
-
- callbackSettings();
- }
- );
-
- }
+ AppName: "onlyoffice",
+ frameSelector: null,
+ setting: {},
};
+ OCA.Onlyoffice.setting = OCP.InitialState.loadState(OCA.Onlyoffice.AppName, "settings");
+
var OnlyofficeViewerVue = {
name: "OnlyofficeViewerVue",
render: function (createElement) {
@@ -88,21 +72,19 @@
if (OCA.Viewer) {
OCA.Onlyoffice.frameSelector = "#onlyofficeViewerFrame";
- OCA.Onlyoffice.GetSettings(function () {
+ var mimes = $.map(OCA.Onlyoffice.setting.formats, function (format) {
+ if (format.def) {
+ return format.mime;
+ }
+ });
- var mimes = $.map(OCA.Onlyoffice.setting.formats, function (format) {
- if (format.def) {
- return format.mime;
- }
- });
+ OCA.Viewer.registerHandler({
+ id: OCA.Onlyoffice.AppName,
+ group: null,
+ mimes: mimes,
+ component: OnlyofficeViewerVue
+ })
- OCA.Viewer.registerHandler({
- id: OCA.Onlyoffice.AppName,
- group: null,
- mimes: mimes,
- component: OnlyofficeViewerVue
- })
- });
}
};
diff --git a/lib/listeners/filesharinglistener.php b/lib/listeners/filesharinglistener.php
index 3274a46..95ad58e 100644
--- a/lib/listeners/filesharinglistener.php
+++ b/lib/listeners/filesharinglistener.php
@@ -22,10 +22,13 @@ namespace OCA\Onlyoffice\Listeners;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Util;
+use OCP\AppFramework\Services\IInitialState;
+use OCP\IServerContainer;
use OCA\Files_Sharing\Event\BeforeTemplateRenderedEvent;
use OCA\Onlyoffice\AppConfig;
+use OCA\Onlyoffice\SettingsData;
/**
* File Sharing listener
@@ -40,10 +43,28 @@ class FileSharingListener implements IEventListener {
private $appConfig;
/**
+ * Initial state
+ *
+ * @var IInitialState
+ */
+ private $initialState;
+
+ /**
+ * Server container
+ *
+ * @var IServerContainer
+ */
+ private $serverContainer;
+
+ /**
* @param AppConfig $config - application configuration
*/
- public function __construct(AppConfig $appConfig) {
+ public function __construct(AppConfig $appConfig,
+ IInitialState $initialState,
+ IServerContainer $serverContainer) {
$this->appConfig = $appConfig;
+ $this->initialState = $initialState;
+ $this->serverContainer = $serverContainer;
}
public function handle(Event $event): void {
@@ -59,6 +80,11 @@ class FileSharingListener implements IEventListener {
Util::addScript("onlyoffice", "listener");
}
+ $container = $this->serverContainer;
+ $this->initialState->provideLazyInitialState("settings", function () use ($container) {
+ return $container->query(SettingsData::class);
+ });
+
Util::addStyle("onlyoffice", "main");
}
}
diff --git a/lib/listeners/fileslistener.php b/lib/listeners/fileslistener.php
index ccb07f0..0f1210d 100644
--- a/lib/listeners/fileslistener.php
+++ b/lib/listeners/fileslistener.php
@@ -22,10 +22,13 @@ namespace OCA\Onlyoffice\Listeners;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Util;
+use OCP\AppFramework\Services\IInitialState;
+use OCP\IServerContainer;
use OCA\Files\Event\LoadAdditionalScriptsEvent;
use OCA\Onlyoffice\AppConfig;
+use OCA\Onlyoffice\SettingsData;
/**
* File listener
@@ -40,10 +43,28 @@ class FilesListener implements IEventListener {
private $appConfig;
/**
+ * Initial state
+ *
+ * @var IInitialState
+ */
+ private $initialState;
+
+ /**
+ * Server container
+ *
+ * @var IServerContainer
+ */
+ private $serverContainer;
+
+ /**
* @param AppConfig $config - application configuration
*/
- public function __construct(AppConfig $appConfig) {
+ public function __construct(AppConfig $appConfig,
+ IInitialState $initialState,
+ IServerContainer $serverContainer) {
$this->appConfig = $appConfig;
+ $this->initialState = $initialState;
+ $this->serverContainer = $serverContainer;
}
public function handle(Event $event): void {
@@ -69,6 +90,11 @@ class FilesListener implements IEventListener {
Util::addStyle("onlyoffice", "share");
}
+ $container = $this->serverContainer;
+ $this->initialState->provideLazyInitialState("settings", function () use ($container) {
+ return $container->query(SettingsData::class);
+ });
+
Util::addStyle("onlyoffice", "main");
Util::addStyle("onlyoffice", "template");
}
diff --git a/lib/listeners/viewerlistener.php b/lib/listeners/viewerlistener.php
index e61a49b..fe85415 100644
--- a/lib/listeners/viewerlistener.php
+++ b/lib/listeners/viewerlistener.php
@@ -23,10 +23,13 @@ use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Util;
use OCP\AppFramework\Http\ContentSecurityPolicy;
+use OCP\AppFramework\Services\IInitialState;
+use OCP\IServerContainer;
use OCA\Viewer\Event\LoadViewer;
use OCA\Onlyoffice\AppConfig;
+use OCA\Onlyoffice\SettingsData;
/**
* Viewer listener
@@ -41,10 +44,28 @@ class ViewerListener implements IEventListener {
private $appConfig;
/**
+ * Initial state
+ *
+ * @var IInitialState
+ */
+ private $initialState;
+
+ /**
+ * Server container
+ *
+ * @var IServerContainer
+ */
+ private $serverContainer;
+
+ /**
* @param AppConfig $config - application configuration
*/
- public function __construct(AppConfig $appConfig) {
+ public function __construct(AppConfig $appConfig,
+ IInitialState $initialState,
+ IServerContainer $serverContainer) {
$this->appConfig = $appConfig;
+ $this->initialState = $initialState;
+ $this->serverContainer = $serverContainer;
}
public function handle(Event $event): void {
@@ -60,6 +81,11 @@ class ViewerListener implements IEventListener {
Util::addStyle("onlyoffice", "viewer");
+ $container = $this->serverContainer;
+ $this->initialState->provideLazyInitialState("settings", function () use ($container) {
+ return $container->query(SettingsData::class);
+ });
+
$csp = new ContentSecurityPolicy();
$csp->addAllowedFrameDomain("'self'");
$cspManager = \OC::$server->getContentSecurityPolicyManager();
diff --git a/lib/settingsdata.php b/lib/settingsdata.php
new file mode 100644
index 0000000..d246cf0
--- /dev/null
+++ b/lib/settingsdata.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ *
+ * (c) Copyright Ascensio System SIA 2022
+ *
+ * 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 OCA\Onlyoffice\AppConfig;
+
+class SettingsData implements \JsonSerializable {
+
+ /**
+ * Application configuration
+ *
+ * @var AppConfig
+ */
+ private $appConfig;
+
+ public function __construct(AppConfig $appConfig) {
+ $this->appConfig = $appConfig;
+ }
+
+ public function jsonSerialize(): array {
+ $data = [
+ "formats" => $this->appConfig->FormatsSetting(),
+ "sameTab" => $this->appConfig->GetSameTab()
+ ];
+
+ return $data;
+ }
+} \ No newline at end of file