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  }