// 项目详情 // uri: /p/{uniq} func ProjectDetailHandler(rw http.ResponseWriter, req *http.Request) { vars := mux.Vars(req) project := service.FindProject(vars["uniq"]) if project == nil { util.Redirect(rw, req, "/projects") return } likeFlag := 0 hadCollect := 0 user, ok := filter.CurrentUser(req) if ok { uid := user["uid"].(int) likeFlag = service.HadLike(uid, project.Id, model.TYPE_PROJECT) hadCollect = service.HadFavorite(uid, project.Id, model.TYPE_PROJECT) } service.Views.Incr(req, model.TYPE_PROJECT, project.Id) // 为了阅读数即时看到 project.Viewnum++ req.Form.Set(filter.CONTENT_TPL_KEY, "/template/projects/detail.html,/template/common/comment.html") filter.SetData(req, map[string]interface{}{"activeProjects": "active", "project": project, "likeflag": likeFlag, "hadcollect": hadCollect}) }
// 文章详细页 // uri: /articles/{id:[0-9]+} func ArticleDetailHandler(rw http.ResponseWriter, req *http.Request) { vars := mux.Vars(req) article, prevNext, err := service.FindArticlesById(vars["id"]) if err != nil { util.Redirect(rw, req, "/articles") return } if article == nil || article.Id == 0 || article.Status == model.StatusOffline { util.Redirect(rw, req, "/articles") return } likeFlag := 0 hadCollect := 0 user, ok := filter.CurrentUser(req) if ok { uid := user["uid"].(int) likeFlag = service.HadLike(uid, article.Id, model.TYPE_ARTICLE) hadCollect = service.HadFavorite(uid, article.Id, model.TYPE_ARTICLE) } service.Views.Incr(req, model.TYPE_ARTICLE, article.Id) // 为了阅读数即时看到 article.Viewnum++ // 设置内容模板 req.Form.Set(filter.CONTENT_TPL_KEY, "/template/articles/detail.html,/template/common/comment.html") // 设置模板数据 filter.SetData(req, map[string]interface{}{"activeArticles": "active", "article": article, "prev": prevNext[0], "next": prevNext[1], "likeflag": likeFlag, "hadcollect": hadCollect}) }
// 社区帖子详细页 // uri: /topics/{tid:[0-9]+} func TopicDetailHandler(rw http.ResponseWriter, req *http.Request) { vars := mux.Vars(req) topic, replies, err := service.FindTopicByTid(vars["tid"]) if err != nil { util.Redirect(rw, req, "/topics") return } likeFlag := 0 hadCollect := 0 user, ok := filter.CurrentUser(req) if ok { uid := user["uid"].(int) tid := topic["tid"].(int) likeFlag = service.HadLike(uid, tid, model.TYPE_TOPIC) hadCollect = service.HadFavorite(uid, tid, model.TYPE_TOPIC) } service.Views.Incr(req, model.TYPE_TOPIC, util.MustInt(vars["tid"])) // 设置内容模板 req.Form.Set(filter.CONTENT_TPL_KEY, "/template/topics/detail.html,/template/common/comment.html") // 设置模板数据 filter.SetData(req, map[string]interface{}{"activeTopics": "active", "topic": topic, "replies": replies, "likeflag": likeFlag, "hadcollect": hadCollect}) }
// 某个资源详细页 // uri: /resources/{id:[0-9]+} func ResourceDetailHandler(rw http.ResponseWriter, req *http.Request) { vars := mux.Vars(req) resource, comments := service.FindResource(vars["id"]) if len(resource) == 0 { util.Redirect(rw, req, "/resources") return } likeFlag := 0 hadCollect := 0 user, ok := filter.CurrentUser(req) if ok { uid := user["uid"].(int) id := resource["id"].(int) likeFlag = service.HadLike(uid, id, model.TYPE_RESOURCE) hadCollect = service.HadFavorite(uid, id, model.TYPE_RESOURCE) } service.Views.Incr(req, model.TYPE_RESOURCE, util.MustInt(vars["id"])) req.Form.Set(filter.CONTENT_TPL_KEY, "/template/resources/detail.html,/template/common/comment.html") filter.SetData(req, map[string]interface{}{"activeResources": "active", "resource": resource, "comments": comments, "likeflag": likeFlag, "hadcollect": hadCollect}) }