To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / lib / generators / redmine_plugin_controller / redmine_plugin_controller_generator.rb @ 912:5e80956cc792

History | View | Annotate | Download (1.98 KB)

1 0:513646585e45 Chris
require 'rails_generator/base'
2
require 'rails_generator/generators/components/controller/controller_generator'
3
4
class RedminePluginControllerGenerator < ControllerGenerator
5
  attr_reader :plugin_path, :plugin_name, :plugin_pretty_name
6
7
  def initialize(runtime_args, runtime_options = {})
8
    runtime_args = runtime_args.dup
9
    usage if runtime_args.empty?
10
    @plugin_name = "redmine_" + runtime_args.shift.underscore
11
    @plugin_pretty_name = plugin_name.titleize
12
    @plugin_path = "vendor/plugins/#{plugin_name}"
13
    super(runtime_args, runtime_options)
14
  end
15
16
  def destination_root
17 909:cbb26bc654de Chris
    File.join(Rails.root, plugin_path)
18 0:513646585e45 Chris
  end
19
20
  def manifest
21
    record do |m|
22
      # Check for class naming collisions.
23
      m.class_collisions class_path, "#{class_name}Controller", "#{class_name}ControllerTest", "#{class_name}Helper"
24
25
      # Controller, helper, views, and test directories.
26
      m.directory File.join('app/controllers', class_path)
27
      m.directory File.join('app/helpers', class_path)
28
      m.directory File.join('app/views', class_path, file_name)
29
      m.directory File.join('test/functional', class_path)
30
31
      # Controller class, functional test, and helper class.
32
      m.template 'controller.rb.erb',
33
                  File.join('app/controllers',
34
                            class_path,
35
                            "#{file_name}_controller.rb")
36
37
      m.template 'functional_test.rb.erb',
38
                  File.join('test/functional',
39
                            class_path,
40
                            "#{file_name}_controller_test.rb")
41
42
      m.template 'helper.rb.erb',
43
                  File.join('app/helpers',
44
                            class_path,
45
                            "#{file_name}_helper.rb")
46
47
      # View template for each action.
48
      actions.each do |action|
49
        path = File.join('app/views', class_path, file_name, "#{action}.html.erb")
50
        m.template 'view.html.erb', path,
51
          :assigns => { :action => action, :path => path }
52
      end
53
    end
54
  end
55
end