Skip to content

Commit

Permalink
Simple use hook_for.
Browse files Browse the repository at this point in the history
  • Loading branch information
josevalim committed Jun 27, 2011
1 parent 29a0af7 commit 0bf28b1
Showing 1 changed file with 38 additions and 33 deletions.
71 changes: 38 additions & 33 deletions lib/generators/devise/views_generator.rb
@@ -1,34 +1,24 @@
module Devise
module Generators
class ViewsGenerator < Rails::Generators::Base
desc "Copies Devise views to your application."

argument :scope, :required => false, :default => nil,
:desc => "The scope to copy views to"

class_option :form_builder, :type => :string, :aliases => "-b",
:desc => "Form builder to be used",
:default => defined?(SimpleForm) ? "simple_form_for" : "form_for"

def copy_views
invoke SharedViewsGenerator

if options[:form_builder] == "form_for"
invoke DefaultViewsGenerator
else
invoke SimpleFormViewsGenerator
end
end
end

module ViewPathTemplates
# Include this module in your generator to generate Devise views.
# `copy_views` is the main method and by default copies all views
# with forms.
module ViewPathTemplates #:nodoc:
extend ActiveSupport::Concern

included do
source_root File.expand_path("../../../../app/views", __FILE__)

argument :scope, :required => false, :default => nil,
:desc => "The scope to copy views to"

public_task :copy_views
end

def copy_views
view_directory :confirmations
view_directory :passwords
view_directory :registrations
view_directory :sessions
view_directory :unlocks
end

protected
Expand All @@ -42,27 +32,42 @@ def target_path
end
end

class SharedViewsGenerator < Rails::Generators::Base
class SharedViewsGenerator < Rails::Generators::Base #:nodoc:
include ViewPathTemplates

source_root File.expand_path("../../../../app/views", __FILE__)
desc "Copies shared Devise views to your application."

# Override copy_views to just copy mailer and shared.
def copy_views
view_directory :mailer
view_directory :shared
end
end

class DefaultViewsGenerator < Rails::Generators::Base
class FormForGenerator < Rails::Generators::Base #:nodoc:
include ViewPathTemplates
source_root File.expand_path("../../../../app/views", __FILE__)
desc "Copies default Devise views to your application."
end

def copy_views
view_directory :confirmations
view_directory :passwords
view_directory :registrations
view_directory :sessions
view_directory :unlocks
end
class SimpleFormForGenerator < Rails::Generators::Base #:nodoc:
include ViewPathTemplates
source_root File.expand_path("../templates", __FILE__)
desc "Copies simple form enabled views to your application."
end

class ViewsGenerator < Rails::Generators::Base
desc "Copies Devise views to your application."

argument :scope, :required => false, :default => nil,
:desc => "The scope to copy views to"

invoke SharedViewsGenerator

hook_for :form_builder, :aliases => "-b",
:desc => "Form builder to be used",
:default => defined?(SimpleForm) ? "simple_form_for" : "form_for"
end
end
end

0 comments on commit 0bf28b1

Please sign in to comment.