Files
nairobi/app/controllers/dashboard/base_controller.rb
taitus a1de5b2334 Display tag "new" on actions
An author will see a "new" tag on each action or resource that has appeared on his dashboard since his last login.
Too add "new" tag on dashbord menu when there are new resources.
2019-03-21 12:29:31 +01:00

44 lines
1.3 KiB
Ruby

class Dashboard::BaseController < ApplicationController
before_action :authenticate_user!, :detect_new_actions_after_last_login
include Dashboard::HasProposal
helper_method :proposal, :proposed_actions, :resource, :resources, :next_goal, :next_goal_supports, :next_goal_progress, :community_members_count
respond_to :html
layout 'dashboard'
private
def proposed_actions
@proposed_actions ||= Dashboard::Action.proposed_actions.active_for(proposal).order(order: :asc)
end
def resources
@resources ||= Dashboard::Action.resources.active_for(proposal).order(order: :asc)
end
def next_goal_supports
@next_goal_supports ||= next_goal&.required_supports || Setting["votes_for_proposal_success"]
end
def next_goal_progress
@next_goal_progress ||= (proposal.votes_for.size * 100) / next_goal_supports.to_i
end
def community_members_count
Rails.cache.fetch("community/#{proposal.community.id}/participants_count", expires_in: 1.hour) do
proposal.community.participants.count
end
end
def next_goal
@next_goal ||= Dashboard::Action.next_goal_for(proposal)
end
def detect_new_actions_after_last_login
author_last_login = proposal.author.last_sign_in_at.to_date
@new_actions_since_last_login = Dashboard::Action.detect_new_actions_since(author_last_login, proposal)
end
end