From d6944d3cd1714ed3c3dd7065d345026d4e02a396 Mon Sep 17 00:00:00 2001 From: Giuseppe Lo Presti Date: Tue, 29 Mar 2022 14:39:30 +0200 Subject: [PATCH] Support editnew actions from MS Office --- changelog/unreleased/app-editnew.md | 5 +++++ pkg/app/provider/wopi/wopi.go | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 changelog/unreleased/app-editnew.md diff --git a/changelog/unreleased/app-editnew.md b/changelog/unreleased/app-editnew.md new file mode 100644 index 0000000000..2f1f72e728 --- /dev/null +++ b/changelog/unreleased/app-editnew.md @@ -0,0 +1,5 @@ +Bugfix: Support editnew actions from MS Office + +This fixes the incorrect behavior when creating new xlsx and pptx files, as MS Office supports the editnew action and it must be used for newly created files instead of the normal edit action. + +https://github.com/cs3org/reva/pull/2693 diff --git a/pkg/app/provider/wopi/wopi.go b/pkg/app/provider/wopi/wopi.go index 0a9b2fd187..c508384758 100644 --- a/pkg/app/provider/wopi/wopi.go +++ b/pkg/app/provider/wopi/wopi.go @@ -165,13 +165,19 @@ func (p *wopiProvider) GetAppURL(ctx context.Context, resource *provider.Resourc q.Add("appviewurl", viewAppURL) } } - if editAppURLs, ok := p.appURLs["edit"]; ok { + var access string = "edit" + if resource.GetSize() == 0 { + if _, ok := p.appURLs["editnew"]; ok { + access = "editnew" + } + } + if editAppURLs, ok := p.appURLs[access]; ok { if editAppURL, ok := editAppURLs[ext]; ok { q.Add("appurl", editAppURL) } } if q.Get("appurl") == "" { - // assuming that an view action is always available in the /hosting/discovery manifest + // assuming that a view action is always available in the /hosting/discovery manifest // eg. Collabora does support viewing jpgs but no editing // eg. OnlyOffice does support viewing pdfs but no editing // there is no known case of supporting edit only without view @@ -371,7 +377,7 @@ func parseWopiDiscovery(body io.Reader) (map[string]map[string]string, error) { for _, app := range netzone.SelectElements("app") { for _, action := range app.SelectElements("action") { access := action.SelectAttrValue("name", "") - if access == "view" || access == "edit" { + if access == "view" || access == "edit" || access == "editnew" { ext := action.SelectAttrValue("ext", "") urlString := action.SelectAttrValue("urlsrc", "")