Something went wrong. Try again.
A privacy-first, self-hosted, fully open source personal knowledge management software, written in typescript and golang. (PERSONAL FORK)
Something went wrong. Try again.
Go
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148// SiYuan - Refactor your thinking// Copyright (c) 2020-present, b3log.org//// This program is free software: you can redistribute it and/or modify// it under the terms of the GNU Affero General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU Affero General Public License for more details.//// You should have received a copy of the GNU Affero General Public License// along with this program. If not, see <https://www.gnu.org/licenses/>.
package api
import ( "net/http" "strings"
"github.com/88250/gulu" "github.com/88250/lute/ast" "github.com/gin-gonic/gin" "github.com/siyuan-note/siyuan/kernel/conf" "github.com/siyuan-note/siyuan/kernel/model" "github.com/siyuan-note/siyuan/kernel/util")
func getSnippet(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret)
arg, ok := util.JsonArg(c, ret) if !ok { return }
typ := arg["type"].(string) // js/css/all enabledArg := int(arg["enabled"].(float64)) // 0:禁用,1:启用,2:全部 enabled := true if 0 == enabledArg { enabled = false } var keyword string if nil != arg["keyword"] { keyword = arg["keyword"].(string) }
confSnippets, err := model.LoadSnippets() if err != nil { ret.Code = -1 ret.Msg = "load snippets failed: " + err.Error() return }
isPublish := model.IsReadOnlyRole(model.GetGinContextRole(c)) var snippets []*conf.Snippet for _, s := range confSnippets { if isPublish && s.DisabledInPublish { continue } if "all" != typ && s.Type != typ { continue } if 2 != enabledArg && s.Enabled != enabled { continue }
snippets = append(snippets, s) }
if "" != keyword { var snippetsFiltered []*conf.Snippet for _, s := range snippets { if strings.Contains(strings.ToLower(s.Name), strings.ToLower(keyword)) || strings.Contains(strings.ToLower(s.Content), strings.ToLower(keyword)) { snippetsFiltered = append(snippetsFiltered, s) } } snippets = snippetsFiltered }
if 1 > len(snippets) { snippets = []*conf.Snippet{} }
ret.Data = map[string]interface{}{ "snippets": snippets, }}
func setSnippet(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret)
arg, ok := util.JsonArg(c, ret) if !ok { return }
snippetsArg := arg["snippets"].([]interface{}) var snippets []*conf.Snippet for _, s := range snippetsArg { m := s.(map[string]interface{}) snippet := &conf.Snippet{ ID: m["id"].(string), Name: m["name"].(string), Type: m["type"].(string), Content: m["content"].(string), Enabled: m["enabled"].(bool), } if nil != m["disabledInPublish"] { snippet.DisabledInPublish = m["disabledInPublish"].(bool) } if "" == snippet.ID { snippet.ID = ast.NewNodeID() } snippets = append(snippets, snippet) }
err := model.SetSnippet(snippets) if err != nil { ret.Code = -1 ret.Msg = "set snippet failed: " + err.Error() return }}
func removeSnippet(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret)
arg, ok := util.JsonArg(c, ret) if !ok { return }
id := arg["id"].(string) snippet, err := model.RemoveSnippet(id) if err != nil { ret.Code = -1 ret.Msg = "remove snippet failed: " + err.Error() return } ret.Data = snippet}