46 lines
1.7 KiB
Ruby
46 lines
1.7 KiB
Ruby
class OverlaysController < ApplicationController
|
|
before_action :set_overlay, only: [ :destroy ]
|
|
before_action :set_server_template, only: [ :create ]
|
|
|
|
def index
|
|
@system_overlays = Overlay.system_overlays
|
|
@custom_overlays = current_user.overlays.custom_overlays.order(:name)
|
|
end
|
|
|
|
def create
|
|
@server_template = current_user.server_templates.find(params[:server_template_id])
|
|
@overlay = Overlay.find(params[:overlay_id])
|
|
|
|
position = @server_template.template_overlays.maximum(:position).to_i + 1
|
|
@template_overlay = @server_template.template_overlays.build(overlay_id: @overlay.id, position: position)
|
|
|
|
if @template_overlay.save
|
|
Activity.log(current_user, "added_overlay", "ServerTemplate", @server_template.id, { overlay: @overlay.name })
|
|
redirect_to @server_template, notice: "Overlay added successfully!"
|
|
else
|
|
redirect_to @server_template, alert: "Failed to add overlay"
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
authorize_user!
|
|
server_template = @overlay.server_templates.find(params[:server_template_id])
|
|
@overlay.template_overlays.where(server_template_id: server_template.id).destroy_all
|
|
Activity.log(current_user, "removed_overlay", "ServerTemplate", server_template.id, { overlay: @overlay.name })
|
|
redirect_to server_template, notice: "Overlay removed successfully!"
|
|
end
|
|
|
|
private
|
|
|
|
def set_overlay
|
|
@overlay = Overlay.find(params[:id])
|
|
end
|
|
|
|
def set_server_template
|
|
@server_template = current_user.server_templates.find(params[:server_template_id])
|
|
end
|
|
|
|
def authorize_user!
|
|
redirect_to dashboard_path, alert: "Not authorized" unless @overlay.user_id.nil? || @overlay.user_id == current_user.id
|
|
end
|
|
end
|