The code powering m.abunchtell.com https://m.abunchtell.com
Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

54 linhas
1.3 KiB

  1. # frozen_string_literal: true
  2. module Admin
  3. class TagsController < BaseController
  4. before_action :set_tags, only: :index
  5. before_action :set_tag, except: :index
  6. def index
  7. authorize :tag, :index?
  8. end
  9. def show
  10. authorize @tag, :show?
  11. end
  12. def update
  13. authorize @tag, :update?
  14. if @tag.update(tag_params.merge(reviewed_at: Time.now.utc))
  15. redirect_to admin_tag_path(@tag.id), notice: I18n.t('admin.tags.updated_msg')
  16. else
  17. render :show
  18. end
  19. end
  20. private
  21. def set_tags
  22. @tags = filtered_tags.page(params[:page])
  23. end
  24. def set_tag
  25. @tag = Tag.find(params[:id])
  26. end
  27. def filtered_tags
  28. scope = Tag
  29. scope = scope.discoverable if filter_params[:context] == 'directory'
  30. scope = scope.unreviewed if filter_params[:review] == 'unreviewed'
  31. scope = scope.reviewed.order(reviewed_at: :desc) if filter_params[:review] == 'reviewed'
  32. scope = scope.pending_review.order(requested_review_at: :desc) if filter_params[:review] == 'pending_review'
  33. scope.order(score: :desc)
  34. end
  35. def filter_params
  36. params.slice(:context, :review).permit(:context, :review)
  37. end
  38. def tag_params
  39. params.require(:tag).permit(:name, :trendable, :usable, :listable)
  40. end
  41. end
  42. end