class UserBlocksController < ApplicationController
include UserMethods
+ include PaginationMethods
layout "site"
authorize_resource
- before_action :lookup_user, :only => [:new, :create, :blocks_on, :blocks_by]
+ before_action :lookup_user, :only => [:new, :create, :revoke_all, :blocks_on, :blocks_by]
before_action :lookup_user_block, :only => [:show, :edit, :update, :revoke]
before_action :require_valid_params, :only => [:create, :update]
before_action :check_database_readable
- before_action :check_database_writable, :only => [:create, :update, :revoke]
+ before_action :check_database_writable, :only => [:create, :update, :revoke, :revoke_all]
def index
@params = params.permit
- @user_blocks_pages, @user_blocks = paginate(:user_blocks,
- :include => [:user, :creator, :revoker],
- :order => "user_blocks.ends_at DESC",
- :per_page => 20)
+
+ user_blocks = UserBlock.all
+
+ @user_blocks, @newer_user_blocks_id, @older_user_blocks_id = get_page_items(user_blocks, :includes => [:user, :creator, :revoker])
end
def show
def update
if @valid_params
- if @user_block.creator != current_user
- flash[:error] = t(".only_creator_can_edit")
+ if current_user != @user_block.creator &&
+ current_user != @user_block.revoker
+ flash[:error] = t(@user_block.revoker ? ".only_creator_or_revoker_can_edit" : ".only_creator_can_edit")
redirect_to :action => "edit"
elsif @user_block.update(
:ends_at => Time.now.utc + @block_period.hours,
end
end
+ ##
+ # revokes all active blocks
+ def revoke_all
+ if request.post? && params[:confirm]
+ @user.blocks.active.each { |block| block.revoke!(current_user) }
+ flash[:notice] = t ".flash"
+ redirect_to user_blocks_on_path(@user)
+ end
+ end
+
##
# shows a list of all the blocks on the given user
def blocks_on
@params = params.permit(:display_name)
- @user_blocks_pages, @user_blocks = paginate(:user_blocks,
- :include => [:user, :creator, :revoker],
- :conditions => { :user_id => @user.id },
- :order => "user_blocks.ends_at DESC",
- :per_page => 20)
+
+ user_blocks = UserBlock.where(:user => @user)
+
+ @user_blocks, @newer_user_blocks_id, @older_user_blocks_id = get_page_items(user_blocks, :includes => [:user, :creator, :revoker])
end
##
# shows a list of all the blocks by the given user.
def blocks_by
@params = params.permit(:display_name)
- @user_blocks_pages, @user_blocks = paginate(:user_blocks,
- :include => [:user, :creator, :revoker],
- :conditions => { :creator_id => @user.id },
- :order => "user_blocks.ends_at DESC",
- :per_page => 20)
+
+ user_blocks = UserBlock.where(:creator => @user)
+
+ @user_blocks, @newer_user_blocks_id, @older_user_blocks_id = get_page_items(user_blocks, :includes => [:user, :creator, :revoker])
end
private
if UserBlock::PERIODS.exclude?(@block_period)
flash[:error] = t("user_blocks.filter.block_period")
- elsif @user_block && !@user_block.active?
- flash[:error] = t("user_blocks.filter.block_expired")
-
else
@valid_params = true
end