func (this *PostRouter) New() { this.TplName = "post/new.html" if this.CheckActiveRedirect() { return } form := post.PostForm{Locale: this.Locale} if v := this.Ctx.GetCookie("post_topic"); len(v) > 0 { form.Topic, _ = utils.StrTo(v).Int() } if v := this.Ctx.GetCookie("post_cat"); len(v) > 0 { form.Category, _ = utils.StrTo(v).Int() } if v := this.Ctx.GetCookie("post_lang"); len(v) > 0 { form.Lang, _ = utils.StrTo(v).Int() } else { form.Lang = this.Locale.Index() } slug := this.GetString("topic") if len(slug) > 0 { topic := models.Topic{Slug: slug} topic.Read("Slug") form.Topic = topic.Id this.Data["Topic"] = &topic } post.ListCategories(&form.Categories) post.ListTopics(&form.Topics) this.SetFormSets(&form) }
func (this *SearchRouter) Get() { this.TplNames = "search/posts.html" pers := 25 q := strings.TrimSpace(this.GetString("q")) this.Data["Q"] = q if len(q) == 0 { return } page, _ := utils.StrTo(this.GetString("p")).Int() posts, meta, err := post.SearchPost(q, page) if err != nil { this.Data["SearchError"] = true beego.Error("SearchPosts: ", err) return } if len(posts) > 0 { this.SetPaginator(pers, meta.TotalFound) } this.Data["Posts"] = posts this.Data["Meta"] = meta }
func (form *UserAdminForm) Valid(v *validation.Validation) { qs := models.Users() if models.CheckIsExist(qs, "UserName", form.UserName, form.Id) { v.SetError("UserName", "auth.username_already_taken") } if models.CheckIsExist(qs, "Email", form.Email, form.Id) { v.SetError("Email", "auth.email_already_taken") } if len(i18n.GetLangByIndex(form.Lang)) == 0 { v.SetError("Lang", "Can not be empty") } if len(form.LangAdds) > 0 { adds := make(models.SliceStringField, 0, len(form.LangAdds)) for _, l := range form.LangAdds { if d, err := utils.StrTo(l).Int(); err == nil { if form.Lang == d { continue } if len(i18n.GetLangByIndex(form.Lang)) == 0 { v.SetError("Lang", "Can not be empty") return } adds = append(adds, l) } } form.LangAdds = adds } }
// query object and set to template func (this *ModelAdminRouter) QueryObject() bool { id, _ := utils.StrTo(this.GetString(":id")).Int() if id <= 0 { this.Abort("404") return false } var app ModelFinder if a, ok := this.AppController.(ModelFinder); ok { app = a } else { panic("ModelAdmin AppController need implement ModelFinder") } object := app.Object() qs := app.ObjectQs() // query object if err := qs.Filter("Id", id).Limit(1).One(object); err != nil { this.Abort("404") if err != orm.ErrNoRows { beego.Error("SetObject: ", err) } return false } else { this.Data["Object"] = object } return true }
func (m *Image) DecodeToken(token string) error { number := utils.NumberDecode(token, setting.ImageLinkAlphabets) if len(number) < 9 { return fmt.Errorf("token `%s` too short <- `%s`", token, number) } if t, err := beego.DateParse(number[:8], "ymds"); err != nil { return fmt.Errorf("token `%s` date parse error <- `%s`", token, number) } else { m.Created = t } var err error m.Id, err = utils.StrTo(number[8:]).Int() if err != nil { return fmt.Errorf("token `%s` id parse error <- `%s`", token, err) } return nil }
func (this *ApiRouter) Users() { result := map[string]interface{}{ "success": false, } defer func() { this.Data["json"] = result this.ServeJSON() }() if !this.IsAjax() { return } action := this.GetString("action") if this.IsLogin { switch action { case "get-follows": var data []orm.ParamsList this.User.FollowingUsers().ValuesList(&data, "FollowUser__NickName", "FollowUser__UserName") result["success"] = true result["data"] = data case "follow", "unfollow": id, err := utils.StrTo(this.GetString("user")).Int() if err == nil && id != this.User.Id { fuser := models.User{Id: id} if action == "follow" { auth.UserFollow(&this.User, &fuser) } else { auth.UserUnFollow(&this.User, &fuser) } result["success"] = true } } } }
func (form *ProfileForm) Valid(v *validation.Validation) { if len(i18n.GetLangByIndex(form.Lang)) == 0 { v.SetError("Lang", "Can not be empty") } if len(form.LangAdds) > 0 { adds := make(models.SliceStringField, 0, len(form.LangAdds)) for _, l := range form.LangAdds { if d, err := utils.StrTo(l).Int(); err == nil { if form.Lang == d { continue } if len(i18n.GetLangByIndex(form.Lang)) == 0 { v.SetError("Lang", "Can not be empty") return } adds = append(adds, l) } } form.LangAdds = adds } }
func (this *UserRouter) getFollows(user *models.User, following bool) []map[string]interface{} { limit := 20 var qs orm.QuerySeter if following { qs = user.FollowingUsers() } else { qs = user.FollowerUsers() } nums, _ := qs.Count() pager := this.SetPaginator(limit, nums) qs = qs.Limit(limit, pager.Offset()) var follows []*models.Follow if following { qs.RelatedSel("FollowUser").All(&follows, "FollowUser") } else { qs.RelatedSel("User").All(&follows, "User") } if len(follows) == 0 { return nil } ids := make([]int, 0, len(follows)) for _, follow := range follows { if following { ids = append(ids, follow.FollowUser.Id) } else { ids = append(ids, follow.User.Id) } } var eids orm.ParamsList this.User.FollowingUsers().Filter("FollowUser__in", ids).ValuesFlat(&eids, "FollowUser__Id") var fids map[int]bool if len(eids) > 0 { fids = make(map[int]bool) for _, id := range eids { tid, _ := utils.StrTo(utils.ToStr(id)).Int() if tid > 0 { fids[tid] = true } } } users := make([]map[string]interface{}, 0, len(follows)) for _, follow := range follows { IsFollowed := false var u *models.User if following { u = follow.FollowUser } else { u = follow.User } if fids != nil { IsFollowed = fids[u.Id] } users = append(users, map[string]interface{}{ "User": u, "IsFollowed": IsFollowed, }) } return users }