Sha256: ca7cf6250ec64ad4d32b5680e4363d712d8ff276e9b4f88f0bd13a1b0cd35367

Contents?: true

Size: 1.98 KB

Versions: 4

Compression:

Stored size: 1.98 KB

Contents

class Recipes::Admin < Rails::AppBuilder
  def ask
    if selected?(:authentication)
      admin_mode = answer(:admin) { Ask.confirm("Do you want to use ActiveAdmin?") }
      set(:admin_mode, admin_mode)
    end
  end

  def create
    if selected?(:admin_mode)
      if selected?(:authentication)
        add_active_admin
      else
        info "ActiveAdmin can't be installed because Devise isn't enabled."
      end
    end
  end

  def install
    devise = load_recipe(:devise)
    if devise.installed?
      add_active_admin
    else
      info "ActiveAdmin can't be installed because Devise isn't installed."
    end
  end

  def installed?
    gem_exists?(/activeadmin/)
  end

  private

  def add_active_admin
    gather_gem 'activeadmin', '~> 1.3.0'
    gather_gem 'activeadmin_addons'
    gather_gem 'active_skin'

    after(:gem_install, wrap_in_action: :admin_install) do
      generate "active_admin:install"
      line = "ActiveAdmin.setup do |config|"
      initializer = "config/initializers/active_admin.rb"
      gsub_file initializer, /(#{Regexp.escape(line)})/mi do |_match|
        <<~HERE
          class CustomFooter < ActiveAdmin::Component
            def build _arg
              super(id: "footer")
              para "Powered by Platanus"
            end
          end\n
          ActiveAdmin.setup do |config|
            config.view_factory.footer = CustomFooter
        HERE
      end

      line = "@import \"active_admin/base\";"
      style = "app/assets/stylesheets/active_admin.css.scss"
      style = File.exist?(style) ? style : "app/assets/stylesheets/active_admin.scss"

      gsub_file style, /(#{Regexp.escape(line)})/mi do |_match|
        <<~HERE
          #{line}
          $skinActiveColor: #001CEE;
          $skinHeaderBck: #002744;
          $panelHeaderBck: #002744;
          //$skinLogo: $skinHeaderBck image-url("logo_admin.png") no-repeat center center;

          @import "active_skin";
        HERE
      end

      generate "activeadmin_addons:install"
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
potassium-5.2.3 lib/potassium/recipes/admin.rb
potassium-5.2.2 lib/potassium/recipes/admin.rb
potassium-5.2.1 lib/potassium/recipes/admin.rb
potassium-5.2.0 lib/potassium/recipes/admin.rb