module SuperAdmin
class StaticPagesController < ApplicationController
before_action :set_static_page, only: %i[edit update destroy]
before_action :set_static_pages, only: :index
before_action :set_languages, only: %i[new edit]
# GET /static_pages
# GET /static_pages.json
def index
authorize(StaticPage)
render(:index, locals: { static_pages: @static_pages.page(1) })
end
# GET /static_pages/new
def new
authorize(StaticPage)
@static_page = StaticPage.new
end
# GET /static_pages/1/edit
def edit
authorize(StaticPage)
end
# POST /static_pages
# POST /static_pages.json
def create
authorize(StaticPage)
begin
@static_page = StaticPage.create!(static_page_params)
flash[:notice] = _('Static Page created successfully')
rescue ActionController::ParameterMissing
flash[:alert] = _('Unable to save since static_page parameter is missing')
rescue ActiveRecord::RecordInvalid => e
flash[:alert] = e.message
end
redirect_to action: :index
end
# PATCH/PUT /static_pages/1
# PATCH/PUT /static_pages/1.json
def update
authorize(StaticPage)
begin
@static_page.update!(static_page_params)
flash[:notice] = _('Static Page updated successfully')
rescue ActionController::ParameterMissing
flash[:alert] = _('Unable to save since static_page parameter is missing')
rescue ActiveRecord::RecordInvalid => e
flash[:alert] = e.message
end
redirect_to action: :index
end
# DELETE /static_pages/1
# DELETE /static_pages/1.json
def destroy
authorize(StaticPage)
begin
@static_page.destroy
flash[:notice] = _('Successfully destroyed your Static Page')
rescue ActiveRecord::RecordNotDestroyed
flash[:alert] = _('The Static Page with id %{id} could not be destroyed') % { id: params[:id] }
end
redirect_to action: :index
end
private
# Use callbacks to share common setup or constraints between actions.
def set_static_page
@static_page = StaticPage.find(params[:id])
end
# Use callbacks to share common setup or constraints between actions.
def set_static_pages
@static_pages = StaticPage.all
end
# Use callbacks to share common setup or constraints between actions.
def set_languages
@languages = Language.order(default_language: :desc)
end
# Never trust parameters from the scary internet, only allow the white list through.
def static_page_params
params.require(:static_page).permit(
:name,
:url,
:in_navigation,
static_page_contents_attributes: [%i[id language_id title content]]
)
end
end
end