AlchemyCMS/alchemy_cms

View on GitHub
app/controllers/alchemy/admin/languages_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

module Alchemy
  module Admin
    class LanguagesController < ResourcesController
      before_action :load_current_site, only: %i[index new]

      def index
        @query = Language.on_site(@current_site).ransack(search_filter_params[:q])
        @query.sorts = default_sort_order if @query.sorts.empty?
        @languages = @query.result.page(params[:page] || 1).per(items_per_page)
      end

      def new
        @language = Language.new(
          site: @current_site,
          page_layout: Config.get(:default_language)["page_layout"]
        )
      end

      def create
        @language = Alchemy::Language.new(resource_params)
        if @language.save
          flash[:notice] = Alchemy.t("Language successfully created")
          do_redirect_to alchemy.admin_pages_path(language_id: @language)
        else
          render :new
        end
      end

      def destroy
        if @language.destroy
          flash[:notice] = Alchemy.t("Language successfully removed")
        else
          flash[:warning] = @language.errors.full_messages.to_sentence
        end
        do_redirect_to alchemy.admin_languages_path
      end

      def switch
        @language = set_alchemy_language(params[:language_id])
        session[:alchemy_language_id] = @language.id
        do_redirect_to request.referer || alchemy.admin_dashboard_path
      end

      private

      def load_current_site
        @current_site = Alchemy::Current.site
        if @current_site.nil?
          flash[:warning] = Alchemy.t("Please create a site first.")
          do_redirect_to admin_sites_path
        end
      end
    end
  end
end