starred.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // Copyright 2017 Frédéric Guillot. All rights reserved.
  2. // Use of this source code is governed by the Apache 2.0
  3. // license that can be found in the LICENSE file.
  4. package controller
  5. import (
  6. "github.com/miniflux/miniflux/logger"
  7. "github.com/miniflux/miniflux/model"
  8. "github.com/miniflux/miniflux/server/core"
  9. )
  10. // ShowStarredPage renders the page with all starred entries.
  11. func (c *Controller) ShowStarredPage(ctx *core.Context, request *core.Request, response *core.Response) {
  12. user := ctx.LoggedUser()
  13. offset := request.QueryIntegerParam("offset", 0)
  14. args, err := c.getCommonTemplateArgs(ctx)
  15. if err != nil {
  16. response.HTML().ServerError(err)
  17. return
  18. }
  19. builder := c.store.NewEntryQueryBuilder(user.ID)
  20. builder.WithoutStatus(model.EntryStatusRemoved)
  21. builder.WithStarred()
  22. builder.WithOrder(model.DefaultSortingOrder)
  23. builder.WithDirection(user.EntryDirection)
  24. builder.WithOffset(offset)
  25. builder.WithLimit(nbItemsPerPage)
  26. entries, err := builder.GetEntries()
  27. if err != nil {
  28. response.HTML().ServerError(err)
  29. return
  30. }
  31. count, err := builder.CountEntries()
  32. if err != nil {
  33. response.HTML().ServerError(err)
  34. return
  35. }
  36. response.HTML().Render("starred", args.Merge(tplParams{
  37. "entries": entries,
  38. "total": count,
  39. "pagination": c.getPagination(ctx.Route("starred"), count, offset),
  40. "menu": "starred",
  41. }))
  42. }
  43. // ToggleBookmark handles Ajax request to toggle bookmark value.
  44. func (c *Controller) ToggleBookmark(ctx *core.Context, request *core.Request, response *core.Response) {
  45. user := ctx.LoggedUser()
  46. entryID, err := request.IntegerParam("entryID")
  47. if err != nil {
  48. response.HTML().BadRequest(err)
  49. return
  50. }
  51. if err := c.store.ToggleBookmark(user.ID, entryID); err != nil {
  52. logger.Error("[Controller:UpdateEntryStatus] %v", err)
  53. response.JSON().ServerError(nil)
  54. return
  55. }
  56. response.JSON().Standard("OK")
  57. }