Class: CommonwealthVlrEngine::ControllerGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/commonwealth_vlr_engine/controller_generator.rb

Instance Method Summary collapse

Instance Method Details

#inject_application_controller_behaviorObject

Add Commonwealth to the application controller



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/generators/commonwealth_vlr_engine/controller_generator.rb', line 18

def inject_application_controller_behavior
  unless IO.read("app/controllers/application_controller.rb").include?('CommonwealthVlrEngine::Controller')
    marker = 'include Blacklight::Controller'
    insert_into_file "app/controllers/application_controller.rb", :after => marker do
      %q{

  # adds some site-wide behavior into the application controller
  include CommonwealthVlrEngine::Controller
  layout 'commonwealth-vlr-engine'
}
    end
    remove_marker = "layout 'blacklight'"
    gsub_file("app/controllers/application_controller.rb", remove_marker, "")

  end
end

#inject_catalog_controller_behaviorObject

Update the blacklight catalog controller



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/generators/commonwealth_vlr_engine/controller_generator.rb', line 36

def inject_catalog_controller_behavior
  unless IO.read("app/controllers/#{controller_name}_controller.rb").include?('CommonwealthVlrEngine')
    marker = 'include Blacklight::Catalog'
    insert_into_file "app/controllers/#{controller_name}_controller.rb", :after => marker do
      %q{
  # CatalogController-scope behavior and configuration for CommonwealthVlrEngine
  include CommonwealthVlrEngine::ControllerOverride
}
    end

    marker = 'configure_blacklight do |config|'
    insert_into_file "app/controllers/#{controller_name}_controller.rb", :after => marker do
      %q{
# SearchBuilder contains logic for adding search params to Solr
config.search_builder_class = CommonwealthSearchBuilder

# limit Advanced Search facets to this institution
# can't call SearchBuilder.institution_limit because it's an instance method, not a class method
config.advanced_search[:form_solr_parameters]['fq'] = '+institution_pid_ssi:"' + CommonwealthVlrEngine.config[:institution][:pid] + '"'
}
    end

    #For config.default_solr_params
    gsub_file("app/controllers/#{controller_name}_controller.rb", /config\.default_solr_params[\s\S]+?}/, "")

    #For multi line fields
    fields_to_remove = [/ +config.add_facet_field 'example_query_facet_field'[\s\S]+?}\n[ ]+}/,
                             / +config.add_search_field\([\s\S]+?end/
    ]

    fields_to_remove.each do |remove_marker|
      #gsub_file("app/controllers/#{controller_name}_controller.rb", /#{comment_marker}/, "\##{comment_marker}")
      gsub_file("app/controllers/#{controller_name}_controller.rb", /#{remove_marker}/, "")
    end

    #For single line fields
    fields_to_remove = [/ +config.index.title_field +=.+?$\n*/,
                             / +config.index.display_type_field +=.+?$\n*/,
                             / +config.add_facet_field +'.+?$\n*/,
                             / +config.add_index_field +'.+?$\n*/,
                             / +config.add_show_field +'.+?$\n*/,
                             / +config.add_search_field +'.+?$\n*/,
                             / +config.add_sort_field +'.+?$\n*/
    ]

    fields_to_remove.each do |remove_marker|
      #gsub_file("app/controllers/#{controller_name}_controller.rb", /#{comment_marker}/, "\##{comment_marker}")
      gsub_file("app/controllers/#{controller_name}_controller.rb", /#{remove_marker}/, "")
    end

  end

end