feature (onlyoffice): view only in only office (#715)

* Update index.go

Enable/Disable edit only Office documents

* Function typo

Function type

* feature (onlyoffice): view only in only office

Added onlyoffice_can_edit in plugin_enable so that target attribute  can be toggled and only appear when only office is enabled.

* feature (onlyoffice): view only in only office

Code formating.
This commit is contained in:
zemzema 2024-07-23 10:56:08 +02:00 committed by GitHub
parent 2ebdc17e74
commit a2848c95de
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -27,6 +27,7 @@ var (
plugin_enable func() bool plugin_enable func() bool
server_url func() string server_url func() string
can_download func() bool can_download func() bool
can_edit func() bool
) )
type onlyOfficeCacheData struct { type onlyOfficeCacheData struct {
@ -45,8 +46,8 @@ func init() {
} }
f.Name = "enable" f.Name = "enable"
f.Type = "enable" f.Type = "enable"
f.Target = []string{"onlyoffice_server", "onlyoffice_can_download"} f.Target = []string{"onlyoffice_server", "onlyoffice_can_download", "onlyoffice_can_edit"}
f.Description = "Enable/Disable the office suite to manage word, excel and powerpoint documents." f.Description = "Enable/Disable the office suite and options to manage word, excel and powerpoint documents."
f.Default = false f.Default = false
if u := os.Getenv("ONLYOFFICE_URL"); u != "" { if u := os.Getenv("ONLYOFFICE_URL"); u != "" {
f.Default = true f.Default = true
@ -54,6 +55,7 @@ func init() {
return f return f
}).Bool() }).Bool()
} }
server_url = func() string { server_url = func() string {
return Config.Get("features.office.onlyoffice_server").Schema(func(f *FormElement) *FormElement { return Config.Get("features.office.onlyoffice_server").Schema(func(f *FormElement) *FormElement {
if f == nil { if f == nil {
@ -72,6 +74,21 @@ func init() {
return f return f
}).String() }).String()
} }
can_edit = func() bool {
return Config.Get("features.office.can_edit").Schema(func(f *FormElement) *FormElement {
if f == nil {
f = &FormElement{}
}
f.Id = "onlyoffice_can_edit"
f.Name = "can_edit"
f.Type = "boolean"
f.Description = "Enable/Disable editing in onlyoffice"
f.Default = true
return f
}).Bool()
}
can_download = func() bool { can_download = func() bool {
return Config.Get("features.office.can_download").Schema(func(f *FormElement) *FormElement { return Config.Get("features.office.can_download").Schema(func(f *FormElement) *FormElement {
if f == nil { if f == nil {
@ -90,6 +107,7 @@ func init() {
plugin_enable() plugin_enable()
server_url() server_url()
can_download() can_download()
can_edit()
}) })
Hooks.Register.HttpEndpoint(func(r *mux.Router, app *App) error { Hooks.Register.HttpEndpoint(func(r *mux.Router, app *App) error {
@ -346,7 +364,9 @@ func IframeContentHandler(ctx *App, res http.ResponseWriter, req *http.Request)
"fileType": "%s", "fileType": "%s",
"key": "%s", "key": "%s",
"permissions": { "permissions": {
"download": %s "download": %s,
"edit": %t
} }
}, },
"editorConfig": { "editorConfig": {
@ -385,6 +405,12 @@ func IframeContentHandler(ctx *App, res http.ResponseWriter, req *http.Request)
} }
return "false" return "false"
}(), }(),
func() string {
if can_edit() {
return "true"
}
return "false"
}(),
filestashServerLocation, filestashServerLocation,
oodsMode, oodsMode,
userId, userId,