class Shoestrap::CmsGenerator

Public Instance Methods

add_controller() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 54
def add_controller
  generate 'controller', controller_name, " --controller-specs=no --view-specs=no"
  gsub_file "app/controllers/#{controller_name}_controller.rb", 'ApplicationController', 'Shoestrap::BaseController'
end
add_model_and_migration() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 30
    def add_model_and_migration
      generate 'model', model_name, ARGV[1..-1].join(' ')
      inject_into_file "app/models/#{model_name}.rb", before: 'class' do
        "require 'shoestrap/cms_model'\n\n"
      end

      inject_into_file "app/models/#{model_name}.rb", before: 'end' do
        <<-eos.gsub(/^ {8}/, '').chomp
          include Shoestrap::CMSModel

          # TODO: Define what attributes are shown in the form and permitted by strong parameters
          editable_attributes #{attribute_keys_as_string}

          # TODO: Define what attributes are shown in the index view
          index_attributes #{attribute_keys_as_string}

         eos
      end
    end
add_resource_translations() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 50
def add_resource_translations
  template 'translations/resource.yml.erb', "config/locales/de/#{model_name}.yml"
end
add_route() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 18
def add_route
  generate 'resource_route', resource_route_name
end
set_up_shoestrap_cms() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 9
def set_up_shoestrap_cms
  unless shoestrap_cms_already_installed?
    setup_base_controller
    setup_base_views
    setup_navigation
    setup_translation_file
  end
end

Private Instance Methods

attribute_keys_as_string() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 116
def attribute_keys_as_string
  ARGV[1..-1].map {|x| ":#{x.split(':').first}" }.join(', ')
end
attributes() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 112
def attributes
  ARGV[1..-1].map {|x| x.split(':').first }
end
controller_name() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 104
def controller_name
  "cms/#{plural_name}"
end
model_name() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 96
def model_name
  ARGV.first.downcase
end
plural_name() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 100
def plural_name
  model_name.pluralize
end
resource_route_name() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 92
def resource_route_name
  "cms/#{model_name}"
end
route_name() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 108
def route_name
  controller_name.gsub('/', '_')
end
setup_base_controller() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 65
def setup_base_controller
  empty_directory 'app/controllers/shoestrap'
  if kuhsaft_is_installed?
    template 'base_controller_with_kuhsaft.rb', 'app/controllers/shoestrap/base_controller.rb'
  else
    template 'base_controller_without_kuhsaft.rb', 'app/controllers/shoestrap/base_controller.rb'
  end
end
setup_base_views() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 74
def setup_base_views
  directory 'inherited_views', 'app/views/shoestrap'
end
setup_navigation() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 78
def setup_navigation
  if kuhsaft_is_installed?
    nav_dir = 'app/views/kuhsaft/cms/admin'
    empty_directory nav_dir
    copy_file '_main_navigation.html.haml', "#{nav_dir}/_main_navigation.html.haml"
    copy_file 'cms_navigation.rb', "config/cms_navigation.rb"
  end
end
setup_translation_file() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 87
def setup_translation_file
  empty_directory 'config/locales/de'
  copy_file 'translations/shoestrap_base.yml', 'config/locales/de/shoestrap_base.yml'
end
shoestrap_cms_already_installed?() click to toggle source
# File lib/generators/shoestrap/cms_generator.rb, line 61
def shoestrap_cms_already_installed?
  File.exists?('app/controllers/shoestrap/base_controller.rb') && File.exists?('config/cms_navigation.rb')
end