diff options
author | Antipkin-A <Artem.Antipkin@onlyoffice.com> | 2022-06-03 20:36:25 +0300 |
---|---|---|
committer | Antipkin-A <Artem.Antipkin@onlyoffice.com> | 2022-08-30 15:31:25 +0300 |
commit | 35fe7734d1435d1a58c90e54fff69001e16c41e7 (patch) | |
tree | 3fb75c51b29c1d1f63e83c3acfb2c85ae13e5b8e | |
parent | aab33b48eab3c7ebc4501fbe872c60fcc35123ec (diff) |
get settings from initial state for mainfeature/initial-state
# Conflicts:
# lib/listeners/fileslistener.php
-rw-r--r-- | js/main.js | 178 | ||||
-rw-r--r-- | lib/listeners/filesharinglistener.php | 28 | ||||
-rw-r--r-- | lib/listeners/fileslistener.php | 28 |
3 files changed, 130 insertions, 104 deletions
@@ -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"); } |