69 lines
1.8 KiB
Ruby
69 lines
1.8 KiB
Ruby
class ExternalWorksController < ApplicationController
|
|
before_action :admin_only, only: [:edit, :update]
|
|
before_action :users_only, only: [:new]
|
|
before_action :check_user_status, only: [:new]
|
|
|
|
def new
|
|
@bookmarkable = ExternalWork.new
|
|
@bookmark = Bookmark.new
|
|
end
|
|
|
|
# Used with bookmark form to get an existing external work and return it via ajax
|
|
def fetch
|
|
if params[:external_work_url]
|
|
url = Addressable::URI.heuristic_parse(params[:external_work_url]).to_str
|
|
@external_work = ExternalWork.where(url: url).first
|
|
end
|
|
respond_to do |format|
|
|
format.js
|
|
end
|
|
end
|
|
|
|
def index
|
|
if params[:show] == "duplicates"
|
|
unless logged_in_as_admin?
|
|
access_denied
|
|
return
|
|
end
|
|
|
|
@external_works = ExternalWork.duplicate.order("created_at DESC").paginate(page: params[:page])
|
|
else
|
|
@external_works = ExternalWork.order("created_at DESC").paginate(page: params[:page])
|
|
end
|
|
end
|
|
|
|
def show
|
|
@external_work = ExternalWork.find(params[:id])
|
|
end
|
|
|
|
def edit
|
|
@external_work = authorize ExternalWork.find(params[:id])
|
|
@work = @external_work
|
|
end
|
|
|
|
def update
|
|
@external_work = authorize ExternalWork.find(params[:id])
|
|
@external_work.attributes = work_params
|
|
if @external_work.update(external_work_params)
|
|
flash[:notice] = t(".successfully_updated")
|
|
redirect_to(@external_work)
|
|
else
|
|
render action: "edit"
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def external_work_params
|
|
params.require(:external_work).permit(
|
|
:url, :author, :title, :summary, :language_id
|
|
)
|
|
end
|
|
|
|
def work_params
|
|
params.require(:work).permit(
|
|
:rating_string, :fandom_string, :relationship_string, :character_string,
|
|
:freeform_string, category_strings: [], archive_warning_strings: []
|
|
)
|
|
end
|
|
end
|