Skip to content

Commit

Permalink
Fixes for rails 3 route and method incompatibilities, and tweaks to t…
Browse files Browse the repository at this point in the history
…emplate generation helpers
  • Loading branch information
jamezilla committed Jun 25, 2010
1 parent 065e5a7 commit 175b1c8
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 22 deletions.
44 changes: 28 additions & 16 deletions lib/generators/event_calendar/event_calendar_generator.rb
Expand Up @@ -5,11 +5,11 @@ class EventCalendarGenerator < Rails::Generators::Base

source_root File.expand_path('../templates', __FILE__)

class_option :static_only, :type => :boolean, :default => false, :desc => "Only generate stylesheets and scripts"
class_option :use_jquery, :type => :boolean, :default => false, :desc => "Use JQuery for scripting"
class_option :use_all_day, :type => :boolean, :default => false, :desc => "Add an additional all_day column to the database"
class_option :model_name, :type => :string, :default => "event", :desc => "Override the default model name"
class_option :controller_name, :type => :string, :default => "calendar", :desc => "Override the controller and view name"
class_option :static_only, :type => :boolean, :default => false, :desc => "Only generate stylesheets and scripts"
class_option :use_jquery, :type => :boolean, :default => false, :desc => "Use JQuery for scripting"
class_option :use_all_day, :type => :boolean, :default => false, :desc => "Add an additional all_day column to the database"
class_option :model_name, :type => :string, :default => "event", :desc => "Override the default model name"
class_option :controller_name, :type => :string, :default => "calendars", :desc => "Override the controller and view name"

def do_it
copy_file "stylesheet.css", "public/stylesheets/event_calendar.css"
Expand All @@ -25,32 +25,44 @@ def do_it
# TODO : why is this not working???? Predicates...

unless options.static_only?
template "model.rb.erb", "app/models/#{options[:model_name]}.rb", :class_name => options[:model_name]
template "controller.rb.erb", "app/controllers/#{options[:controller_name]}_controller.rb"
empty_directory "app/views/#{options[:controller_name]}"
template "view.html.erb", File.join("app/views/#{options[:controller_name]}/index.html.erb")
template "helper.rb.erb", "app/helpers/#{options[:controller_name]}_helper.rb"
template "model.rb.erb", "app/models/#{ model_name}.rb", :class_name => options[:model_name]
template "controller.rb.erb", "app/controllers/#{ controller_name }_controller.rb"
empty_directory "app/views/#{ view_name }"
template "view.html.erb", File.join("app/views/#{ controller_name }/index.html.erb")
template "helper.rb.erb", "app/helpers/#{ controller_name }_helper.rb"
say "Adding an all_day column", :yellow if options[:use_all_day]
migration_template "migration.rb.erb", "db/migrate/create_#{options[:model_name].pluralize}.rb"
route "match '#{options[:controller_name]}/:year/:month' => '#{options[:controller_name]}#index', :as => :#{options[:controller_name]}, :defaults => { :year => Time.zone.now.year, :month => Time.zone.now.month }"
migration_template "migration.rb.erb", "db/migrate/create_#{ table_name }.rb"
route "match '#{ controller_name }(/:year(/:month))' => '#{ controller_name }#index', :as => :#{ controller_name }, :defaults => { :year => Time.zone.now.year, :month => Time.zone.now.month }"
end

end

def class_name
def model_class_name
options[:model_name].classify
end

def controller_name
options[:controller_name].classify
def model_name
model_class_name.underscore
end

def view_name
controller_name
end

def controller_class_name
options[:controller_name].classify.pluralize
end

def controller_name
controller_class_name.underscore
end

def helper_class_name
controller_class_name
end

def table_name
options[:model_name].pluralize
model_name.pluralize
end

# FIXME: Should be proxied to ActiveRecord::Generators::Base
Expand Down
4 changes: 2 additions & 2 deletions lib/generators/event_calendar/templates/controller.rb.erb
@@ -1,12 +1,12 @@
class <%= controller_name %>Controller < ApplicationController
class <%= controller_class_name %>Controller < ApplicationController

def index
@month = params[:month].to_i
@year = params[:year].to_i

@shown_month = Date.civil(@year, @month)

@event_strips = <%= class_name %>.event_strips_for_month(@shown_month)
@event_strips = <%= model_class_name %>.event_strips_for_month(@shown_month)
end

end
4 changes: 2 additions & 2 deletions lib/generators/event_calendar/templates/helper.rb.erb
@@ -1,4 +1,4 @@
module <%= view_name %>Helper
module <%= helper_class_name %>Helper
def month_link(month_date)
link_to(I18n.localize(month_date, :format => "%B"), {:month => month_date.month, :year => month_date.year})
end
Expand All @@ -10,7 +10,7 @@ module <%= view_name %>Helper
:month => @month,
:event_strips => @event_strips,
:month_name_text => I18n.localize(@shown_month, :format => "%B %Y"),
:previous_month_text => "<< " + month_link(@shown_month.last_month),
:previous_month_text => "<< " + month_link(@shown_month.prev_month),
:next_month_text => month_link(@shown_month.next_month) + " >>"<%- if options[:use_all_day] -%>,
:use_all_day => true
<%- end -%>
Expand Down
2 changes: 1 addition & 1 deletion lib/generators/event_calendar/templates/model.rb.erb
@@ -1,3 +1,3 @@
class <%= class_name %> < ActiveRecord::Base
class <%= model_class_name %> < ActiveRecord::Base
has_event_calendar
end
2 changes: 1 addition & 1 deletion lib/generators/event_calendar/templates/view.html.erb
Expand Up @@ -3,4 +3,4 @@

<h1>Calendar</h1>

<%%= event_calendar %>
<%%= raw(event_calendar) %>

0 comments on commit 175b1c8

Please sign in to comment.