l4d.tools/app/controllers/overlays_controller.rb
2026-01-18 17:42:32 +01:00

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