github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/routers/root/RUpdateNode.go (about) 1 package root 2 3 import ( 4 "fmt" 5 "github.com/insionng/makross" 6 7 "strconv" 8 "github.com/insionng/yougam/helper" 9 "github.com/insionng/yougam/models" 10 ) 11 12 func GetRUpdateNodeHandler(self *makross.Context) error { 13 14 15 TplNames := "root/update_node" 16 self.Set("catpage", "RUpdateNodeHandler") 17 18 if nds, err := models.GetNodes(0, 0, "id"); nds != nil && err == nil { 19 self.Set("nodes", *nds) 20 } 21 22 if categories, err := models.GetCategories(0, 0, "id"); categories != nil && err == nil { 23 self.Set("categories", categories) 24 } 25 26 if nid := self.Param("nid").MustInt64(); nid > 0 { 27 28 if nd, err := models.GetNode(nid); nd != nil && err == nil { 29 self.Set("node", *nd) 30 if category, e := models.GetCategory(nd.Cid); category != nil && e == nil { 31 self.Set("category", *category) 32 } 33 34 } else { 35 self.Flash.Error(err.Error()) 36 return err 37 } 38 } 39 40 return self.Render(TplNames) 41 42 } 43 44 func PostRUpdateNodeHandler(self *makross.Context) error { 45 46 self.Set("catpage", "RUpdateNodeHandler") 47 TplNames := "root/update_node" 48 49 nid := self.Param("nid").MustInt64() 50 pid := self.Args("nodeid").MustInt64() 51 title := self.FormValue("title") 52 images := self.FormValue("images") 53 cid := self.Args("cid").MustInt64() 54 55 56 var uid int64 57 _usr_, okay := self.Session.Get("SignedUser").(*models.User) 58 if okay { 59 uid = _usr_.Id 60 } 61 policy := helper.ObjPolicy() 62 content := policy.Sanitize(self.FormValue("content")) 63 64 if nds, err := models.GetNodes(0, 0, "id"); nds != nil && err == nil { 65 self.Set("nodes", *nds) 66 } 67 68 if nd, err := models.GetNode(nid); nd != nil && err == nil { 69 nd.Id = nid 70 nd.Title = title 71 nd.Content = content 72 nd.Attachment = images 73 nd.Pid = pid 74 nd.Cid = cid 75 nd.Uid = uid 76 77 if row, err := models.PutNode(nid, nd); err != nil || row == 0 { 78 self.Flash.Error(fmt.Sprintf("更新节点出现错误:%v", err)) 79 80 } else { 81 82 //更新节点成功后 就去统计有多少个同样分类id的节点,把统计出来的数目写入该分类的nodecount项 83 if cid > 0 { 84 if nc, e := models.GetNodesByCid(cid, 0, 0, "id"); e == nil { 85 if catz, e := models.GetCategory(cid); e == nil { 86 catz.NodeCount = int64(len(*nc)) 87 models.PutCategory(cid, catz) 88 } 89 } 90 } 91 92 self.Flash.Success("更新节点成功!") 93 94 } 95 return self.Redirect("/root/read/node/" + strconv.FormatInt(nid, 10) + "/") 96 97 } else { 98 self.Flash.Error("获取节点出现错误:不存在该节点!") 99 return self.Redirect("/root/read/node/") 100 101 } 102 103 return self.Render(TplNames) 104 105 }