lib/generators/salesforce/calendar/install/install_generator.rb
module Salesforce
module Calendar
module Generators
class InstallGenerator < ::Rails::Generators::Base
desc "This generator installs jQuery Fullcalendar"
source_root File.expand_path('../templates', __FILE__)
def install
cleanup!
append_asset_pipeline!
setup_routes
copy_files
end
protected
def cleanup!
# Remove old requires (if any) that included salesforce-calendar directly:
gsub_file("app/assets/stylesheets/application.css", %r|\s*\*=\s*salesforce-calendar\s*\n|, "")
gsub_file("app/assets/javascripts/application.js", %r|\s*\//=\s*salesforce-calendar\s*\n|, "")
gsub_file("app/assets/javascripts/application.js", %r|\s*\//=\s*jquery.browser.min\s*\n|, "")
gsub_file("app/assets/javascripts/application.js", %r|\s*\//=\s*jquery.browser\s*\n|, "")
end
def append_asset_pipeline!
application_css = 'app/assets/stylesheets/application.css'
if File.file?(application_css)
insert_into_file application_css, "*= require salesforce-calendar\n", :before => " *= require_self"
end
application_js = 'app/assets/javascripts/application.js'
if File.file?(application_js)
insert_into_file application_js, "//= require salesforce-calendar\n", :after => "//= require jquery_ujs\n"
end
end
def setup_routes
route "get 'calendar', :to => 'salesforce#calendar', :as => :salesforce_calendar"
route "get 'calendar/json-data', :to => 'salesforce#calendar_json_data', :as => :salesforce_calendar_json_data"
end
def copy_files
copy_file 'salesforce_controller.rb.erb', File.join('app/controllers', 'salesforce_controller.rb')
FileUtils.mkdir_p(File.join('app/views', 'salesforce'))
copy_file 'calendar.html.erb', File.join('app/views', 'salesforce/calendar.html.erb')
end
end
end
end
end