a11yist/app/controllers/elements_controller.rb
2024-11-11 04:04:13 +01:00

92 lines
2.3 KiB
Ruby

# frozen_string_literal: true
class ElementsController < ApplicationController
before_action :set_page, only: %i[index new create]
before_action :set_element, only: %i[show edit update destroy]
# GET /elements
def index
@elements = Element.all
end
# GET /elements/1
def show; end
# GET /elements/new
def new
@element = Element.new(page_id: params[:page_id])
@element.page = @page
end
# GET /elements/1/edit
def edit; end
# POST /elements
def create
# checklist_id = element_params.delete(:checklist_id)
# checklist = Checklist.find(checklist_id)
@element = Element.new(element_params)
@element.page = @page
# @element.title = checklist.name if @element.title.blank?
if @element.save
# checklist.checks.each do |check|
# @element.success_criteria.create!(
# check:,
# title: check.t_name,
# level: check.conformity_level,
# quick_criterion: check.t_quick_criterion)
# end
respond_to do |format|
format.html { redirect_to @element.report, notice: "Element was successfully created." }
format.turbo_stream
end
else
render :new, status: :unprocessable_entity
end
end
# PATCH/PUT /elements/1
def update
if @element.update(element_params)
respond_to do |format|
format.turbo_stream
format.html do
redirect_to @element, notice: "Element was successfully updated.", status: :see_other
end
end
else
render :edit, status: :unprocessable_entity
end
end
# DELETE /elements/1
def destroy
Element.connection.transaction do
@element.destroy!
@element.page.elements.where("position > ?", @element.position).update_all("position = position - 1")
end
respond_to do |format|
format.turbo_stream
format.html do
redirect_to page_elements_url(@element.page), notice: "Element was successfully destroyed.", status: :see_other
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_element
@element = Element.find(params[:id])
end
def set_page
@page = Page.find(params[:page_id])
end
# Only allow a list of trusted parameters through.
def element_params
params.require(:element).permit(:page_id, :title, :description, :position)
end
end