Пример #1
0
//编辑
func (this *ArticleController) Edit() {
	var (
		list []*models.Tag
		tag  models.Tag
	)

	id, _ := this.GetInt64("id")
	post := models.Article{Id: id}
	if post.Read() != nil {
		this.Abort("404")
	}

	tag.Query().OrderBy("-count").All(&list)
	fmt.Println(list)

	this.Data["list"] = list
	this.Data["post"] = post
	this.display()
}
Пример #2
0
func (this *ArticleController) Destroy() {
	var (
		id      int64
		article models.Article
	)

	id, _ = this.GetInt64("id")
	article.Id = id

	if err := article.Read(); err != nil {
		fmt.Println(err)
	}
	article.Delete()

	this.Redirect(this.Ctx.Request.Referer(), 302)
}
Пример #3
0
//delete
func (this *ArticleController) Delete() {
	var (
		id      int64
		article models.Article
	)

	id, _ = this.GetInt64("id")
	article.Id = id

	if err := article.Read(); err == nil {
		fmt.Println(err)
	}

	article.Status = 2
	article.Update("status")

	tag := models.Tag{Name: article.Tag}
	tag.Read("Name")
	tag.Count--
	tag.Update("count")

	this.Redirect(this.Ctx.Request.Referer(), 302)
}
Пример #4
0
//批处理
func (this *ArticleController) Batch() {
	ids := this.GetStrings("ids[]")
	op := this.GetString("op")

	if len(ids) == 0 {
		this.Redirect(this.Ctx.Request.Referer(), 302)
		this.StopRun()
	}

	idarr := make([]int64, 0)
	for _, v := range ids {
		if id, _ := strconv.ParseInt(v, 10, 64); id > 0 {
			idarr = append(idarr, id)
		}
	}

	var post models.Article
	var articleList []*models.Article

	switch op {
	case "topub": //移到已发布
		post.Query().Filter("id__in", idarr).All(&articleList)
		for _, v := range articleList {
			if v.Status == 2 {
				tag := models.Tag{Name: v.Tag}
				tag.Read("name")
				tag.Count++
				tag.Update("count")
			}
		}
		post.Query().Filter("id__in", idarr).Update(orm.Params{"status": 0})

	case "todrafts": //移到草稿箱
		post.Query().Filter("id__in", idarr).All(&articleList)
		for _, v := range articleList {
			if v.Status == 2 {
				tag := models.Tag{Name: v.Tag}
				tag.Read("name")
				tag.Count++
				tag.Update("count")
			}
		}
		post.Query().Filter("id__in", idarr).Update(orm.Params{"status": 1})

	case "totrash": //移到回收站
		post.Query().Filter("id__in", idarr).All(&articleList)
		for _, v := range articleList {
			if v.Status != 2 {
				tag := models.Tag{Name: v.Tag}
				tag.Read("name")
				tag.Count--
				tag.Update("count")
			}
		}
		post.Query().Filter("id__in", idarr).Update(orm.Params{"status": 2})
	case "todestroy":
		post.Query().Filter("id__in", idarr).Delete()
	}

	this.Redirect(this.Ctx.Request.Referer(), 302)
}
Пример #5
0
//保存
func (this *ArticleController) Save() {
	var (
		id          int64  = 0
		title       string = strings.TrimSpace(this.GetString("title"))
		content     string = this.GetString("content")
		status      int    = 0
		happenMonth string = strings.TrimSpace(this.GetString("happenMonth"))
		happenDay   string = strings.TrimSpace(this.GetString("happenDay"))
		article     models.Article
		tag         models.Tag
	)

	if title == "" {
		this.showmsg("标题不能为空!")
	}

	id, _ = this.GetInt64("id")
	status, _ = this.GetInt("status")

	tagName := this.GetString("tag")
	fmt.Println(tagName)
	tag.Name = tagName
	tag.Read("name")

	if status != 1 {
		status = 0
	}

	if id < 1 {
		article.AuthorId = this.userid
		article.AuthorName = this.username
		article.Tag = tagName
		err := article.Insert()
		if err != nil {
			fmt.Println(err)
		}

		tag.Count = tag.Count + 1
		tag.Update()
	} else {
		article.Id = id
		if article.Read() != nil {
			goto RD
		}
	}

	if article.Tag != tagName {
		desTag := models.Tag{Name: article.Tag}
		desTag.Read("name")
		desTag.Count--
		desTag.Update("count")

		tag.Count = tag.Count + 1
		tag.Update()

		article.Tag = tagName
	}

	article.Status = status
	article.Title = title
	article.Content = content
	article.HappenMonth = happenMonth
	article.HappenDay = happenDay
	article.Update("tag", "status", "title", "content", "happen_month", "happen_day")

RD:
	url := "/admin/article/list?t=date&m=" + happenMonth + "&d=" + happenDay
	this.Redirect(url, 302)
}