Эх сурвалжийг харах

working on having more customization available through the admin panel

aeth 6 өдөр өмнө
parent
commit
04f4165bb0

+ 1 - 0
go.mod

@@ -3,6 +3,7 @@ module github.com/AETH-erial/keiji
 go 1.21.6
 
 require (
+	git.aetherial.dev/aeth/keiji v1.0.0 // indirect
 	github.com/KyleBanks/depth v1.2.1 // indirect
 	github.com/PuerkitoBio/purell v1.1.1 // indirect
 	github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect

+ 2 - 0
go.sum

@@ -1,3 +1,5 @@
+git.aetherial.dev/aeth/keiji v1.0.0 h1:7+yaHWQf9IxY6loTRBIphxXQTv84cV4ekyb9Ao4KL2c=
+git.aetherial.dev/aeth/keiji v1.0.0/go.mod h1:tk1xpg1foWgyg1RRo5vZx31/Tyl7BbkWVGD/WYwhUxk=
 github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
 github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
 github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI=

+ 24 - 0
pkg/controller/admin_handlers.go

@@ -156,6 +156,30 @@ func (c *Controller) AddNavbarItem(ctx *gin.Context) {
 	ctx.Data(200, "text", []byte("navbar item added."))
 }
 
+/*
+@Name RemoveNavbarItem
+@Summary remove an entry from the navbar
+@Tags admin
+@Router /admin/navbar
+*/
+func (c *Controller) RemoveNavbarItem(ctx *gin.Context) {
+	itemName := ctx.Param("item_name")
+	err := c.database.DeleteNavbarItem(storage.Identifier(itemName))
+	if err != nil {
+		ctx.JSON(400, map[string]string{
+			"name":   itemName,
+			"status": "FAIL",
+			"Error":  err.Error(),
+		})
+		return
+	}
+	ctx.JSON(200, map[string]string{
+		"name":   itemName,
+		"status": "SUCCESS",
+	})
+
+}
+
 /*
 @Name AddAsset
 @Summary add an asset to the db

+ 2 - 0
pkg/routes/register.go

@@ -42,5 +42,7 @@ func Register(e *gin.Engine, domain string, database storage.DocumentIO, files f
 	priv.GET("/posts", c.ServeNewBlogPage)
 	priv.PATCH("/posts", c.UpdateBlogPost)
 	priv.DELETE("/posts/:id", c.DeleteDocument)
+	priv.DELETE("/navbar/:item_name", c.RemoveNavbarItem)
+	priv.GET("/navbar/all", c.ServeBlogDirectory)
 
 }

+ 23 - 0
pkg/storage/storage.go

@@ -113,6 +113,7 @@ type DocumentIO interface {
 	GetAllImages() []Image
 	UpdateDocument(doc Document) error
 	DeleteDocument(id Identifier) error
+	DeleteNavbarItem(id Identifier) error
 	AddDocument(doc Document) (Identifier, error)
 	AddImage(data []byte, title, desc string) (Identifier, error)
 	AddAsset(name string, data []byte) error
@@ -567,6 +568,28 @@ func (s *SQLiteRepo) DeleteDocument(id Identifier) error {
 
 }
 
+/*
+Delete navigation bar item
+
+	:param id: the name or 'id' of the navbar item to remove
+*/
+func (s *SQLiteRepo) DeleteNavbarItem(id Identifier) error {
+
+	tx, err := s.db.Begin()
+	if err != nil {
+		return err
+	}
+	stmt, _ := tx.Prepare("DELETE FROM navbar WHERE redirect=?")
+	_, err = stmt.Exec(id)
+	if err != nil {
+		tx.Rollback()
+		return err
+	}
+	tx.Commit()
+	return nil
+
+}
+
 // Get all Hosts from the host table
 func (s *SQLiteRepo) AllDocuments() []Document {
 	rows, err := s.db.Query("SELECT * FROM posts")

+ 2 - 1
scripts/seed.py

@@ -18,7 +18,8 @@ admin_table = {
             "digital media": "/admin/upload"
             },
         "modify": {
-            "blog post": "/admin/posts/all"
+            "blog post": "/admin/posts/all",
+            "navbar": "/admin/navbar/all"
             },
         }
 menu = {