Class: Shoestrap::AdminGenerator

Inherits:
BaseGenerator
  • Object
show all
Defined in:
lib/generators/shoestrap/admin_generator.rb

Instance Method Summary collapse

Methods inherited from BaseGenerator

shoestrap_logger, #source_paths

Instance Method Details

#add_before_filtersObject



47
48
49
50
51
52
53
54
55
56
57
# File 'lib/generators/shoestrap/admin_generator.rb', line 47

def add_before_filters
  inject_into_file 'app/controllers/shoestrap/base_controller.rb', "before_filter :authenticate_admin!\n\n", before: 'def show'
  inject_into_file 'config/initializers/kuhsaft.rb', before: '  Kuhsaft::Engine.configure do' do
    <<-eos.gsub(/^ {4}/, '').chomp
      Kuhsaft::Cms::AdminController.class_eval do
        before_filter :authenticate_admin!
      end

    eos
  end
end

#add_gems_and_bundleObject



15
16
17
18
19
20
21
22
# File 'lib/generators/shoestrap/admin_generator.rb', line 15

def add_gems_and_bundle
  gem 'devise'
  gem 'devise-i18n'
  Shell.exec('bundle')
  ENV['BUNDLE_GEMFILE'] = File.join(Dir.pwd, 'Gemfile')
  require 'bundler'
  Bundler.require(:default)
end


69
70
71
72
73
# File 'lib/generators/shoestrap/admin_generator.rb', line 69

def add_logout_link
  inject_into_file 'app/views/kuhsaft/cms/admin/_main_navigation.html.haml',
    "  = link_to t('.logout'), destroy_admin_session_path, :method => :delete\n",
    after: "%p.navbar-text.pull-right\n"
end

#disable_registrationObject



43
44
45
# File 'lib/generators/shoestrap/admin_generator.rb', line 43

def disable_registration
  gsub_file 'app/models/admin.rb', / :registerable,/, ''
end

#generate_admin_modelObject

FIXME: set editable attributes => could be fixed by dynamic editable attributes generation in cms generator



11
12
13
# File 'lib/generators/shoestrap/admin_generator.rb', line 11

def generate_admin_model
  generate 'shoestrap:cms', 'admin', 'first_name:string last_name:string'
end

#install_translationsObject



64
65
66
67
# File 'lib/generators/shoestrap/admin_generator.rb', line 64

def install_translations
  copy_file 'translations/devise_admin.de.yml', 'config/locales/de/devise_admin.yml'
  copy_file 'translations/admin.de.yml', 'config/locales/de/admin.yml', force: true
end

#install_viewsObject



59
60
61
62
# File 'lib/generators/shoestrap/admin_generator.rb', line 59

def install_views
  copy_file 'devise.html.haml', 'app/views/layouts/devise.html.haml'
  directory 'devise_views', 'app/views/admins'
end

#setup_deviseObject



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/generators/shoestrap/admin_generator.rb', line 24

def setup_devise
  generate 'devise:install'
  generate 'devise', 'admin'
  gsub_file 'config/initializers/devise.rb', '  # config.scoped_views = false', '  config.scoped_views = true'
  inject_into_file 'config/initializers/devise.rb', before: '# Use this hook to configure devise mailer, warden hooks and so forth.' do
    <<-eos.gsub(/^ {8}/, '').chomp
      Rails.application.config.to_prepare do
        devise_layout = 'devise'
        Devise::SessionsController.layout devise_layout
        Devise::RegistrationsController.layout devise_layout
        Devise::ConfirmationsController.layout devise_layout
        Devise::UnlocksController.layout devise_layout
        Devise::PasswordsController.layout devise_layout
      end

    eos
  end
end