71 lines
2.1 KiB
Ruby
71 lines
2.1 KiB
Ruby
|
|
class ReadingsController < ApplicationController
|
||
|
|
before_action :users_only
|
||
|
|
before_action :load_user
|
||
|
|
before_action :check_ownership
|
||
|
|
before_action :check_history_enabled
|
||
|
|
|
||
|
|
def load_user
|
||
|
|
@user = User.find_by(login: params[:user_id])
|
||
|
|
@check_ownership_of = @user
|
||
|
|
end
|
||
|
|
|
||
|
|
def index
|
||
|
|
@readings = @user.readings.visible
|
||
|
|
@page_subtitle = ts("History")
|
||
|
|
if params[:show] == 'to-read'
|
||
|
|
@readings = @readings.where(toread: true)
|
||
|
|
@page_subtitle = ts("Marked For Later")
|
||
|
|
end
|
||
|
|
@readings = @readings.order("last_viewed DESC")
|
||
|
|
@pagy, @readings = pagy(@readings)
|
||
|
|
end
|
||
|
|
|
||
|
|
def destroy
|
||
|
|
@reading = @user.readings.find(params[:id])
|
||
|
|
if @reading.destroy
|
||
|
|
success_message = ts('Work successfully deleted from your history.')
|
||
|
|
respond_to do |format|
|
||
|
|
format.html { redirect_to request.referer || user_readings_path(current_user, page: params[:page]), notice: success_message }
|
||
|
|
format.json { render json: { item_success_message: success_message }, status: :ok }
|
||
|
|
end
|
||
|
|
else
|
||
|
|
respond_to do |format|
|
||
|
|
format.html do
|
||
|
|
flash.keep
|
||
|
|
redirect_to request.referer || user_readings_path(current_user, page: params[:page]), flash: { error: @reading.errors.full_messages }
|
||
|
|
end
|
||
|
|
format.json { render json: { errors: @reading.errors.full_messages }, status: :unprocessable_entity }
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
def clear
|
||
|
|
success = true
|
||
|
|
|
||
|
|
@user.readings.each do |reading|
|
||
|
|
reading.destroy!
|
||
|
|
rescue ActiveRecord::RecordNotDestroyed
|
||
|
|
success = false
|
||
|
|
end
|
||
|
|
|
||
|
|
if success
|
||
|
|
flash[:notice] = t(".success")
|
||
|
|
else
|
||
|
|
flash[:error] = t(".error")
|
||
|
|
end
|
||
|
|
|
||
|
|
redirect_to user_readings_path(current_user)
|
||
|
|
end
|
||
|
|
|
||
|
|
protected
|
||
|
|
|
||
|
|
# checks if user has history enabled and redirects to preferences if not, so they can potentially change it
|
||
|
|
def check_history_enabled
|
||
|
|
unless current_user.preference.history_enabled?
|
||
|
|
flash[:notice] = ts("You have reading history disabled in your preferences. Change it below if you'd like us to keep track of it.")
|
||
|
|
redirect_to user_preferences_path(current_user)
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|