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:
authorAntipkin-A <Artem.Antipkin@onlyoffice.com>2022-06-03 20:36:25 +0300
committerAntipkin-A <Artem.Antipkin@onlyoffice.com>2022-08-30 15:31:25 +0300
commit35fe7734d1435d1a58c90e54fff69001e16c41e7 (patch)
tree3fb75c51b29c1d1f63e83c3acfb2c85ae13e5b8e
parentaab33b48eab3c7ebc4501fbe872c60fcc35123ec (diff)
get settings from initial state for mainfeature/initial-state
# Conflicts: # lib/listeners/fileslistener.php
-rw-r--r--js/main.js178
-rw-r--r--lib/listeners/filesharinglistener.php28
-rw-r--r--lib/listeners/fileslistener.php28
3 files changed, 130 insertions, 104 deletions
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/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");
}