github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/routers/root/RCreateNode.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 RCreateNodeGetHandler(self *makross.Context) error {
    13  
    14  	
    15  
    16  	TplNames := "root/create_node"
    17  	self.Set("catpage", "RCreateNodeHandler")
    18  
    19  	if nds, err := models.GetNodes(0, 0, "id"); nds != nil && err == nil {
    20  		self.Set("nodes", *nds)
    21  	}
    22  
    23  	if categories, err := models.GetCategories(0, 0, "id"); categories != nil && err == nil {
    24  		self.Set("categories", categories)
    25  	}
    26  
    27  	if nid := self.Param("nid").MustInt64(); nid > 0 {
    28  
    29  		if nd, err := models.GetNode(nid); nd != nil && err == nil {
    30  			self.Set("node", *nd)
    31  		} else {
    32  			self.Flash.Error(err.Error())
    33  			return err
    34  		}
    35  	}
    36  
    37  	return self.Render(TplNames)
    38  
    39  }
    40  
    41  func PostRCreateNodeHandler(self *makross.Context) error {
    42  
    43  	
    44  
    45  	policy := helper.ObjPolicy()
    46  	content := policy.Sanitize(self.FormValue("content"))
    47  	pid := self.Args("nodeid").MustInt64()
    48  	title := self.FormValue("title")
    49  	images := self.FormValue("images")
    50  
    51  	cid := self.Args("cid").MustInt64()
    52  	var uid int64
    53  	_usr_, okay := self.Session.Get("SignedUser").(*models.User)
    54  	if okay {
    55  		uid = _usr_.Id
    56  	}
    57  
    58  	if (len(title) > 0) /* && (content != "") */ && (uid > 0) {
    59  
    60  		if nid, err := models.AddNode(title, content, images, pid, cid, uid); err != nil && uid > 0 {
    61  
    62  			self.Flash.Error(fmt.Sprint("增加节点出现错误:", err))
    63  			return self.Redirect("/root/create/node/")
    64  
    65  		} else {
    66  
    67  			//新增点成功后 就去统计有多少个同样分类id的节点,把统计出来的数目写入该分类的nodecount项
    68  			if cid > 0 {
    69  				if nc, e := models.GetNodesByCid(cid, 0, 0, "id"); e == nil {
    70  					if catz, e := models.GetCategory(cid); e == nil {
    71  						catz.NodeCount = int64(len(*nc))
    72  						models.PutCategory(cid, catz)
    73  					}
    74  				}
    75  			}
    76  
    77  			self.Flash.Success("新增节点成功!")
    78  			return self.Redirect("/root/read/node/" + strconv.FormatInt(nid, 10) + "/")
    79  
    80  		}
    81  	} else {
    82  		self.Flash.Error("节点最低要求标题不能为空!")
    83  		return self.Redirect("/root/create/node/")
    84  
    85  	}
    86  
    87  }