forgeplus/app/controllers/admins/projects_controller.rb

54 lines
1.6 KiB
Ruby
Raw Permalink Normal View History

2020-03-09 00:40:16 +08:00
class Admins::ProjectsController < Admins::BaseController
2021-10-27 16:50:18 +08:00
before_action :find_project, only: [:edit, :update]
2020-03-09 00:40:16 +08:00
def index
2021-06-17 16:13:40 +08:00
sort_by = Project.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_on'
sort_direction = %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc'
2020-03-09 00:40:16 +08:00
search = params[:search].to_s.strip
2020-05-14 18:08:27 +08:00
projects = Project.where("name like ?", "%#{search}%").order("#{sort_by} #{sort_direction}")
2020-03-09 00:40:16 +08:00
@projects = paginate projects.includes(:owner, :members, :issues, :versions, :attachments, :project_score)
end
2021-10-27 16:50:18 +08:00
def edit ;end
def update
respond_to do |format|
if @project.update_attributes(project_update_params)
format.html do
redirect_to admins_projects_path
flash[:sucess] = "更新成功"
end
format.js {render_ok}
else
format.html do
redirect_to admins_projects_path
flash[:danger] = "更新失败"
end
format.js {render_js_error}
end
end
end
2020-03-09 00:40:16 +08:00
def destroy
project = Project.find_by!(id: params[:id])
ActiveRecord::Base.transaction do
2020-05-25 14:22:57 +08:00
Gitea::Repository::DeleteService.new(project.owner, project.identifier).call
2020-03-09 00:40:16 +08:00
project.destroy!
2020-05-25 14:22:57 +08:00
# render_delete_success
redirect_to admins_projects_path
flash[:success] = "删除成功"
2020-05-25 14:25:46 +08:00
end
2020-05-25 14:22:57 +08:00
rescue Exception => e
redirect_to admins_projects_path
flash[:danger] = "删除失败"
2020-03-09 00:40:16 +08:00
end
2021-10-27 16:50:18 +08:00
private
def find_project
@project = Project.find_by_id(params[:id])
end
def project_update_params
params.require(:project).permit(:is_pinned, :recommend, :recommend_index)
end
2020-03-09 00:40:16 +08:00
end