personal-certificate/app/controllers/admin/certificates_controller.rb

105 lines
3.0 KiB
Ruby
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

class Admin::CertificatesController < OrbitMemberController
include Admin::CertificatesHelper
layout "member_plugin"
before_action :set_certificate, only: [:show, :edit , :update, :destroy]
before_action :set_plugin
before_action :need_access_right
before_action :allow_admin_only, :only => [:index, :setting]
def index
@certificates = Certificate.order_by(:created_at=>'desc').page(params[:page]).per(10)
end
def new
@member = MemberProfile.find_by(:uid=>params['uid']) rescue nil
@certificate = Certificate.new
end
def create
certificate = Certificate.create(certificate_params)
redirect_to params[:referer_url]
end
def edit
@member = MemberProfile.find_by(:uid=>params['uid']) rescue nil
end
def frontend_setting
@member = MemberProfile.find_by(:uid=>params['uid']) rescue nil
@intro = CertificateIntro.find_by(:member_profile_id=>@member.id) rescue nil
@intro = @intro.nil? ? CertificateIntro.new({:member_profile_id=>@member.id}) : @intro
end
def destroy
@certificate.destroy
respond_to do |format|
# 刪除後,直接導向證照的總列表網址
format.html { redirect_to(admin_certificates_url) }
format.js
format.json { render json: { "success" => true } }
end
end
def update
@member = @certificate.member_profile rescue nil
# 使用正確的證照參數certificate_params
@certificate.update_attributes(certificate_params)
@certificate.save
if params[:desktop] == "true"
render json: { "data" => get_paper_list }.to_json
else
# 更新成功後,直接跟隨表單帶過來的來源網址返回
redirect_to params['referer_url']
end
end
def update_frontend_setting
@member = MemberProfile.find(params['member_profile_id']) rescue nil
@intro = CertificateIntro.find_by(:member_profile_id=>@member.id) rescue nil
@intro = @intro.nil? ? CertificateIntro.new({:member_profile_id=>@member.id}) : @intro
@intro.update_attributes(intro_params)
@intro.save
redirect_to URI.encode('/admin/members/'+@member.to_param+'/Certificate')
end
def toggle_hide
if params[:ids]
@certificates = Certificate.any_in(_id: params[:ids])
@certificates.each do |certificate|
certificate.is_hidden = params[:disable]
certificate.save
end
end
render json: {"success"=>true}
end
private
def certificate_params
params.require(:certificate).permit!
end
def intro_params
params.require(:certificate_intro).permit!
end
def set_plugin
@plugin = OrbitApp::Plugin::Registration.all.select{|plugin| plugin.app_name.eql? 'Certificate'}.first
end
def set_certificate
path = request.path.split('/')
if path.last.include? '-'
uid = path[-1].split("-").last
uid = uid.split("?").first
else
uid = path[-2].split("-").last
uid = uid.split("?").first
end
@certificate = Certificate.find_by(:uid => uid) rescue Certificate.find(params[:id])
end
end