🧑‍💻 Add field disabledInPublish to the marketplace package metadata to indicate whether it is disabled in the publishing service https://github.com/siyuan-note/siyuan/issues/11730

This commit is contained in:
Daniel 2025-09-04 10:29:58 +08:00
parent 9410a70a2b
commit 6ff4439be3
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
4 changed files with 26 additions and 22 deletions

View file

@ -35,9 +35,9 @@ func loadPetals(c *gin.Context) {
}
frontend := arg["frontend"].(string)
isPublish := model.IsReadOnlyRole(model.GetGinContextRole(c))
petals := model.LoadPetals(frontend)
ret.Data = petals
ret.Data = model.LoadPetals(frontend, isPublish)
}
func setPetalEnabled(c *gin.Context) {

View file

@ -99,17 +99,18 @@ type Funding struct {
}
type Package struct {
Author string `json:"author"`
URL string `json:"url"`
Version string `json:"version"`
MinAppVersion string `json:"minAppVersion"`
Backends []string `json:"backends"`
Frontends []string `json:"frontends"`
DisplayName *DisplayName `json:"displayName"`
Description *Description `json:"description"`
Readme *Readme `json:"readme"`
Funding *Funding `json:"funding"`
Keywords []string `json:"keywords"`
Author string `json:"author"`
URL string `json:"url"`
Version string `json:"version"`
MinAppVersion string `json:"minAppVersion"`
DisabledInPublish bool `json:"disabledInPublish"`
Backends []string `json:"backends"`
Frontends []string `json:"frontends"`
DisplayName *DisplayName `json:"displayName"`
Description *Description `json:"description"`
Readme *Readme `json:"readme"`
Funding *Funding `json:"funding"`
Keywords []string `json:"keywords"`
PreferredFunding string `json:"preferredFunding"`
PreferredName string `json:"preferredName"`

View file

@ -134,7 +134,7 @@ func Plugins(frontend string) (plugins []*Plugin) {
return
}
func ParseInstalledPlugin(name, frontend string) (found bool, displayName string, incompatible bool) {
func ParseInstalledPlugin(name, frontend string) (found bool, displayName string, incompatible, disabledInPublish bool) {
pluginsPath := filepath.Join(util.DataDir, "plugins")
if !util.IsPathRegularDirOrSymlinkDir(pluginsPath) {
return
@ -163,6 +163,7 @@ func ParseInstalledPlugin(name, frontend string) (found bool, displayName string
found = true
displayName = GetPreferredName(plugin.Package)
incompatible = isIncompatiblePlugin(plugin, frontend)
disabledInPublish = plugin.DisabledInPublish
}
return
}

View file

@ -31,10 +31,11 @@ import (
// Petal represents a plugin's management status.
type Petal struct {
Name string `json:"name"` // Plugin name
DisplayName string `json:"displayName"` // Plugin display name
Enabled bool `json:"enabled"` // Whether enabled
Incompatible bool `json:"incompatible"` // Whether incompatible
Name string `json:"name"` // Plugin name
DisplayName string `json:"displayName"` // Plugin display name
Enabled bool `json:"enabled"` // Whether enabled
Incompatible bool `json:"incompatible"` // Whether incompatible
DisabledInPublish bool `json:"disabledInPublish"` // Whether disabled in publish mode
JS string `json:"js"` // JS code
CSS string `json:"css"` // CSS code
@ -44,7 +45,7 @@ type Petal struct {
func SetPetalEnabled(name string, enabled bool, frontend string) (ret *Petal, err error) {
petals := getPetals()
found, displayName, incompatible := bazaar.ParseInstalledPlugin(name, frontend)
found, displayName, incompatible, disabledInPublish := bazaar.ParseInstalledPlugin(name, frontend)
if !found {
logging.LogErrorf("plugin [%s] not found", name)
return
@ -60,6 +61,7 @@ func SetPetalEnabled(name string, enabled bool, frontend string) (ret *Petal, er
ret.DisplayName = displayName
ret.Enabled = enabled
ret.Incompatible = incompatible
ret.DisabledInPublish = disabledInPublish
if incompatible {
err = fmt.Errorf(Conf.Language(205))
@ -72,7 +74,7 @@ func SetPetalEnabled(name string, enabled bool, frontend string) (ret *Petal, er
return
}
func LoadPetals(frontend string) (ret []*Petal) {
func LoadPetals(frontend string, isPublish bool) (ret []*Petal) {
ret = []*Petal{}
if Conf.Bazaar.PetalDisabled {
@ -93,8 +95,8 @@ func LoadPetals(frontend string) (ret []*Petal) {
continue
}
_, petal.DisplayName, petal.Incompatible = bazaar.ParseInstalledPlugin(petal.Name, frontend)
if !petal.Enabled || petal.Incompatible {
_, petal.DisplayName, petal.Incompatible, petal.DisabledInPublish = bazaar.ParseInstalledPlugin(petal.Name, frontend)
if !petal.Enabled || petal.Incompatible || (isPublish && petal.DisabledInPublish) {
continue
}