warclight 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/.eslintrc +12 -0
  3. data/.gitignore +19 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +66 -0
  6. data/.solr_wrapper +5 -0
  7. data/.travis.yml +31 -0
  8. data/CONTRIBUTING.md +53 -0
  9. data/Gemfile +42 -0
  10. data/LICENSE.txt +11 -0
  11. data/README.md +79 -0
  12. data/Rakefile +16 -0
  13. data/app/assets/images/blacklight/compact.svg +25 -0
  14. data/app/assets/images/blacklight/logo.png +0 -0
  15. data/app/assets/javascripts/warclight/oembed_viewer.js +39 -0
  16. data/app/assets/javascripts/warclight/warclight.js +4 -0
  17. data/app/assets/stylesheets/warclight/application.scss +1 -0
  18. data/app/assets/stylesheets/warclight/warclight.scss +1 -0
  19. data/app/controllers/concerns/warclight/field_config_helpers.rb +11 -0
  20. data/app/helpers/warclight/application_helper.rb +8 -0
  21. data/app/jobs/warclight/application_job.rb +6 -0
  22. data/app/models/concerns/warclight/catalog.rb +8 -0
  23. data/app/models/concerns/warclight/search_behavior.rb +9 -0
  24. data/app/models/concerns/warclight/solr_document.rb +9 -0
  25. data/app/views/layouts/warclight/application.html.erb +14 -0
  26. data/bin/rails +14 -0
  27. data/config/routes.rb +4 -0
  28. data/lib/generators/warclight/install_generator.rb +55 -0
  29. data/lib/generators/warclight/templates/catalog_controller.rb +129 -0
  30. data/lib/generators/warclight/templates/warclight.js +2 -0
  31. data/lib/generators/warclight/templates/warclight.scss +3 -0
  32. data/lib/generators/warclight/update_generator.rb +22 -0
  33. data/lib/warclight.rb +7 -0
  34. data/lib/warclight/engine.rb +105 -0
  35. data/lib/warclight/version.rb +5 -0
  36. data/package.json +24 -0
  37. data/solr/conf/elevate.xml +42 -0
  38. data/solr/conf/lang/contractions_ca.txt +8 -0
  39. data/solr/conf/lang/contractions_fr.txt +15 -0
  40. data/solr/conf/lang/contractions_ga.txt +5 -0
  41. data/solr/conf/lang/contractions_it.txt +23 -0
  42. data/solr/conf/lang/hyphenations_ga.txt +5 -0
  43. data/solr/conf/lang/stemdict_nl.txt +6 -0
  44. data/solr/conf/lang/stoptags_ja.txt +420 -0
  45. data/solr/conf/lang/stopwords_ar.txt +125 -0
  46. data/solr/conf/lang/stopwords_bg.txt +193 -0
  47. data/solr/conf/lang/stopwords_ca.txt +220 -0
  48. data/solr/conf/lang/stopwords_cz.txt +172 -0
  49. data/solr/conf/lang/stopwords_da.txt +110 -0
  50. data/solr/conf/lang/stopwords_de.txt +294 -0
  51. data/solr/conf/lang/stopwords_el.txt +78 -0
  52. data/solr/conf/lang/stopwords_en.txt +54 -0
  53. data/solr/conf/lang/stopwords_es.txt +356 -0
  54. data/solr/conf/lang/stopwords_eu.txt +99 -0
  55. data/solr/conf/lang/stopwords_fa.txt +313 -0
  56. data/solr/conf/lang/stopwords_fi.txt +97 -0
  57. data/solr/conf/lang/stopwords_fr.txt +186 -0
  58. data/solr/conf/lang/stopwords_ga.txt +110 -0
  59. data/solr/conf/lang/stopwords_gl.txt +161 -0
  60. data/solr/conf/lang/stopwords_hi.txt +235 -0
  61. data/solr/conf/lang/stopwords_hu.txt +211 -0
  62. data/solr/conf/lang/stopwords_hy.txt +46 -0
  63. data/solr/conf/lang/stopwords_id.txt +359 -0
  64. data/solr/conf/lang/stopwords_it.txt +303 -0
  65. data/solr/conf/lang/stopwords_ja.txt +127 -0
  66. data/solr/conf/lang/stopwords_lv.txt +172 -0
  67. data/solr/conf/lang/stopwords_nl.txt +119 -0
  68. data/solr/conf/lang/stopwords_no.txt +194 -0
  69. data/solr/conf/lang/stopwords_pt.txt +253 -0
  70. data/solr/conf/lang/stopwords_ro.txt +233 -0
  71. data/solr/conf/lang/stopwords_ru.txt +243 -0
  72. data/solr/conf/lang/stopwords_sv.txt +133 -0
  73. data/solr/conf/lang/stopwords_th.txt +119 -0
  74. data/solr/conf/lang/stopwords_tr.txt +212 -0
  75. data/solr/conf/lang/userdict_ja.txt +29 -0
  76. data/solr/conf/managed-schema +1045 -0
  77. data/solr/conf/params.json +20 -0
  78. data/solr/conf/protwords.txt +21 -0
  79. data/solr/conf/schema.xml +350 -0
  80. data/solr/conf/solrconfig.xml +1361 -0
  81. data/solr/conf/stopwords.txt +14 -0
  82. data/solr/conf/synonyms.txt +29 -0
  83. data/tasks/warclight.rake +61 -0
  84. data/template.rb +15 -0
  85. data/vendor/assets/javascripts/responsiveTruncator.js +69 -0
  86. data/vendor/assets/javascripts/stickyfill.js +480 -0
  87. data/warclight.gemspec +38 -0
  88. metadata +312 -0
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Warclight
4
+ ##
5
+ # A module to add configuration helpers for certain fields used by Warclight
6
+ module FieldConfigHelpers
7
+ extend ActiveSupport::Concern
8
+ include ActionView::Helpers::OutputSafetyHelper
9
+ include ActionView::Helpers::TagHelper
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Warclight
4
+ ##
5
+ # Helper for Warclight. This might disappear.
6
+ module ApplicationHelper
7
+ end
8
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Warclight
4
+ class ApplicationJob < ActiveJob::Base
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Warclight
4
+ ##
5
+ # Warclight specific methods for the Catalog
6
+ module Catalog
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Warclight
4
+ ##
5
+ # Customized Search Behavior for Warclight
6
+ module SearchBehavior
7
+ extend ActiveSupport::Concern
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Warclight
4
+ ##
5
+ # Extends Blacklight::Solr::Document to provide Warclight specific behavior
6
+ module SolrDocument
7
+ extend Blacklight::Solr::Document
8
+ end
9
+ end
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Warclight</title>
5
+ <%= stylesheet_link_tag "warclight/application", media: "all" %>
6
+ <%= javascript_include_tag "warclight/application" %>
7
+ <%= csrf_meta_tags %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
data/bin/rails ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails gems
3
+ # installed from the root of your application.
4
+
5
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
6
+ ENGINE_PATH = File.expand_path('../../lib/warclight/engine', __FILE__)
7
+ APP_PATH = File.expand_path('../../test/dummy/config/application', __FILE__)
8
+
9
+ # Set up gems listed in the Gemfile.
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
11
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
12
+
13
+ require 'rails/all'
14
+ require 'rails/engine/commands'
data/config/routes.rb ADDED
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ Warclight::Engine.routes.draw do
4
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators'
4
+
5
+ module Warclight
6
+ ##
7
+ # Warclight install generator
8
+ class Install < Rails::Generators::Base
9
+ source_root File.expand_path('../templates', __FILE__)
10
+
11
+ def create_blacklight_catalog
12
+ remove_file 'app/controllers/catalog_controller.rb'
13
+ copy_file 'catalog_controller.rb', 'app/controllers/catalog_controller.rb'
14
+ end
15
+
16
+ def include_warclight_solrdocument
17
+ inject_into_file 'app/models/solr_document.rb', after: 'include Blacklight::Solr::Document' do
18
+ "\n include Warclight::SolrDocument"
19
+ end
20
+ end
21
+
22
+ def install_blacklight_range_limit
23
+ generate 'blacklight_range_limit:install'
24
+ end
25
+
26
+ def add_custom_routes
27
+ inject_into_file 'config/routes.rb', after: "mount Blacklight::Engine => '/'" do
28
+ "\n mount Warclight::Engine => '/'\n"
29
+ end
30
+ end
31
+
32
+ def assets
33
+ copy_file 'warclight.scss', 'app/assets/stylesheets/warclight.scss'
34
+ copy_file 'warclight.js', 'app/assets/javascripts/warclight.js'
35
+ inject_into_file 'app/assets/javascripts/application.js', after: '//= require blacklight/blacklight' do
36
+ "\n//= require bootstrap/scrollspy\n" \
37
+ "\n//= require bootstrap/tab\n"
38
+ end
39
+ end
40
+
41
+ def add_warclight_search_behavior
42
+ inject_into_file 'app/models/search_builder.rb', after: 'include Blacklight::Solr::SearchBuilderBehavior' do
43
+ "\n include Warclight::SearchBehavior"
44
+ end
45
+ end
46
+
47
+ def solr_config
48
+ directory '../../../../solr', 'solr', force: true
49
+ end
50
+
51
+ def modify_blacklight_yml
52
+ gsub_file 'config/locales/blacklight.en.yml', "application_name: 'Blacklight'", "application_name: 'Warclight'"
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,129 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CatalogController < ApplicationController
4
+ include Blacklight::Catalog
5
+ include Warclight::Catalog
6
+
7
+ configure_blacklight do |config|
8
+ ## Class for sending and receiving requests from a search index
9
+ # config.repository_class = Blacklight::Solr::Repository
10
+ #
11
+ ## Class for converting Blacklight's url parameters to into request parameters for the search index
12
+ # config.search_builder_class = ::SearchBuilder
13
+ #
14
+ ## Model that maps search index responses to the blacklight response model
15
+ # config.response_model = Blacklight::Solr::Response
16
+
17
+ ## Default parameters to send to solr for all search-like requests. See also SearchBuilder#processed_parameters
18
+ config.default_solr_params = {
19
+ rows: 10
20
+ }
21
+
22
+ # solr field configuration for search results/index views
23
+ config.index.title_field = 'title'
24
+
25
+ # solr fields that will be treated as facets by the blacklight application
26
+ # The ordering of the field names is the order of the display
27
+ #
28
+ # Setting a limit will trigger Blacklight's 'more' facet values link.
29
+ # * If left unset, then all facet values returned by solr will be displayed.
30
+ # * If set to an integer, then "f.somefield.facet.limit" will be added to
31
+ # solr request, with actual solr request being +1 your configured limit --
32
+ # you configure the number of items you actually want _displayed_ in a page.
33
+ # * If set to 'true', then no additional parameters will be sent to solr,
34
+ # but any 'sniffed' request limit parameters will be used for paging, with
35
+ # paging at requested limit -1. Can sniff from facet.limit or
36
+ # f.specific_field.facet.limit solr request params. This 'true' config
37
+ # can be used if you set limits in :default_solr_params, or as defaults
38
+ # on the solr side in the request handler itself. Request handler defaults
39
+ # sniffing requires solr requests to be made with "echoParams=all", for
40
+ # app code to actually have it echo'd back to see it.
41
+ #
42
+ # :show may be set to false if you don't want the facet to be drawn in the
43
+ # facet bar
44
+ #
45
+ # set :index_range to true if you want the facet pagination view to have
46
+ # facet prefix-based navigation (useful when user clicks "more" on a large
47
+ # facet and wants to navigate alphabetically across a large set of results)
48
+ # :index_range can be an array or range of prefixes that will be used to
49
+ # create the navigation (note: It is case sensitive when searching values)
50
+
51
+ config.add_facet_field 'content_type_norm', label: 'General Content Type', collapse: false
52
+ config.add_facet_field 'crawl_year', label: 'Crawl Year', collapse: false
53
+ config.add_facet_field 'public_suffix', label: 'Public Suffix', collapse: false
54
+ config.add_facet_field 'domain', label: 'Domain'
55
+ config.add_facet_field 'links_domains', label: 'Links Domains'
56
+ config.add_facet_field 'institution', label: 'Institution'
57
+ config.add_facet_field 'collection_name', label: 'Collection Name'
58
+ config.add_facet_field 'collection_number', label: 'Collection Number'
59
+
60
+ # Have BL send all facet field names to Solr, which has been the default
61
+ # previously. Simply remove these lines if you'd rather use Solr request
62
+ # handler defaults, or have no facets.
63
+ config.add_facet_fields_to_solr_request!
64
+
65
+ # solr fields to be displayed in the index (search results) view
66
+ # The ordering of the field names is the order of the display
67
+ config.add_index_field 'title', label: 'Title'
68
+ config.add_index_field 'host', label: 'Host'
69
+ config.add_index_field 'crawl_date', label: 'Crawl Date'
70
+ config.add_index_field 'content_type', label: 'Content Type'
71
+ config.add_index_field 'domain', label: 'Domain'
72
+ config.add_index_field 'links_domains', label: 'This page links to'
73
+ config.add_index_field 'institution', label: 'Institution'
74
+ config.add_index_field 'collection_name', label: 'Collection Name'
75
+ config.add_index_field 'collection_number', label: 'Collection Number'
76
+
77
+ # solr fields to be displayed in the show (single result) view
78
+ # The ordering of the field names is the order of the display
79
+ config.add_show_field 'title', label: 'Title'
80
+ config.add_show_field 'url', label: 'URL'
81
+ config.add_show_field 'host', label: 'Host'
82
+ config.add_show_field 'crawl_date', label: 'Crawl Date'
83
+ config.add_show_field 'source_file', label: 'Source File'
84
+ config.add_show_field 'content_type', label: 'Content Type'
85
+ config.add_show_field 'server', label: 'Server'
86
+ config.add_show_field 'content_type_served', label: 'Content Type Served'
87
+ config.add_show_field 'content_length', label: 'Length'
88
+ config.add_show_field 'links_hosts', label: 'Link Hosts'
89
+ config.add_show_field 'content', label: 'Content'
90
+
91
+ # "fielded" search configuration. Used by pulldown among other places.
92
+ # For supported keys in hash, see rdoc for Blacklight::SearchFields
93
+ #
94
+ # Search fields will inherit the :qt solr request handler from
95
+ # config[:default_solr_parameters], OR can specify a different one
96
+ # with a :qt key/value. Below examples inherit, except for subject
97
+ # that specifies the same :qt as default for our own internal
98
+ # testing purposes.
99
+ #
100
+ # The :key is what will be used to identify this BL search field internally,
101
+ # as well as in URLs -- so changing it after deployment may break bookmarked
102
+ # urls. A display label will be automatically calculated from the :key,
103
+ # or can be specified manually to be different.
104
+
105
+ # This one uses all the defaults set by the solr request handler. Which
106
+ # solr request handler? The one set in config[:default_solr_parameters][:qt],
107
+ # since we aren't specifying it otherwise.
108
+ config.add_search_field 'all_fields', label: 'All Fields' do |field|
109
+ field.include_in_simple_select = true
110
+ end
111
+
112
+ # Field-based searches. We have registered handlers in the Solr configuration
113
+ # so we have Blacklight use the `qt` parameter to invoke them
114
+
115
+ # "sort results by" select (pulldown)
116
+ # label in pulldown is followed by the name of the SOLR field to sort by and
117
+ # whether the sort is ascending or descending (it must be asc or desc
118
+ # except in the relevancy case).
119
+ config.add_sort_field 'score desc', label: 'relevance'
120
+
121
+ # If there are more than this many search results, no spelling ("did you
122
+ # mean") suggestion is offered.
123
+ config.spell_max = 5
124
+
125
+ # Configuration for autocomplete suggestor
126
+ config.autocomplete_enabled = true
127
+ config.autocomplete_path = 'suggest'
128
+ end
129
+ end
@@ -0,0 +1,2 @@
1
+ //= require warclight/warclight
2
+ //= require stickyfill
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require warclight/application
3
+ */
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'generators/warclight/install_generator'
4
+
5
+ module Warclight
6
+ ##
7
+ # Warclight Update generator. This subclasses the Install generator, so this is
8
+ # intended to override behavior in the install generator that can allow the
9
+ # downstream application to choose if they want to take our changes or not and
10
+ # can choose to see a diff of our changes to help them decide.
11
+ class Update < Warclight::Install
12
+ source_root File.expand_path('../templates', __FILE__)
13
+
14
+ def create_blacklight_catalog
15
+ copy_file 'catalog_controller.rb', 'app/controllers/catalog_controller.rb'
16
+ end
17
+
18
+ def solr_config
19
+ directory '../../../../solr', 'solr'
20
+ end
21
+ end
22
+ end
data/lib/warclight.rb ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'warclight/engine'
4
+
5
+ module Warclight
6
+ # Your code goes here...
7
+ end
@@ -0,0 +1,105 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'blacklight'
4
+
5
+ module Warclight
6
+ ##
7
+ # This is the defining class for the Warclight Rails Engine
8
+ class Engine < ::Rails::Engine
9
+ Warclight::Engine.config.catalog_controller_field_accessors = %i[
10
+ access_terms
11
+ author
12
+ category
13
+ collection
14
+ collection_name
15
+ collection_number
16
+ collections
17
+ comments
18
+ content
19
+ content_encoding
20
+ content_ffb
21
+ content_first_bytes
22
+ content_language
23
+ content_length
24
+ content_metadata
25
+ content_metadata_ss
26
+ content_text_length
27
+ content_type
28
+ content_type_droid
29
+ content_type_ext
30
+ content_type_full
31
+ content_type_norm
32
+ content_type_served
33
+ content_type_tika
34
+ content_type_version
35
+ crawl_date
36
+ crawl_dates
37
+ crawl_year
38
+ crawl_year_month
39
+ crawl_year_month_day
40
+ crawl_years
41
+ description
42
+ domain
43
+ elements_used
44
+ generator
45
+ hash
46
+ hashes
47
+ host
48
+ host_surt
49
+ id_long
50
+ image_colours
51
+ image_dominant_colour
52
+ image_faces
53
+ image_faces_count
54
+ image_height
55
+ image_size
56
+ image_width
57
+ institution
58
+ keywords
59
+ last_modified
60
+ last_modified_year
61
+ license_url
62
+ links
63
+ links_domains
64
+ links_hosts
65
+ links_hosts_surts
66
+ links_norm
67
+ links_public_suffixes
68
+ locations
69
+ parse_error
70
+ pdf_pdfa_errors
71
+ pdf_pdfa_is_valid
72
+ postcode
73
+ postcode_district
74
+ public_suffix
75
+ publication_date
76
+ publication_year
77
+ record_type
78
+ referrer_url
79
+ resourcename
80
+ sentiment
81
+ sentiment_score
82
+ server
83
+ source_file
84
+ source_file_offset
85
+ status_code
86
+ subject
87
+ text
88
+ title
89
+ type
90
+ url
91
+ url_norm
92
+ url_path
93
+ url_type
94
+ wayback_date
95
+ wct_agency
96
+ wct_collections
97
+ wct_description
98
+ wct_instance_id
99
+ wct_subjects
100
+ wct_target_id
101
+ wct_title
102
+ xml_root_ns
103
+ ]
104
+ end
105
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Warclight
4
+ VERSION = '0.1.0'
5
+ end
data/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "warclight",
3
+ "description": "",
4
+ "main": "index.js",
5
+ "dependencies": {},
6
+ "devDependencies": {
7
+ "eslint": "^3.19.0",
8
+ "eslint-config-airbnb-base": "^11.1.3",
9
+ "eslint-plugin-import": "^2.2.0"
10
+ },
11
+ "scripts": {
12
+ "test": "echo \"Error: no test specified\" && exit 1"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/archivesunleashed/warclight.git"
17
+ },
18
+ "author": "",
19
+ "license": "Apache-2.0",
20
+ "bugs": {
21
+ "url": "https://github.com/archivesunleashed/warclight/issues"
22
+ },
23
+ "homepage": "https://github.com/archivesunleashed/warclight#readme"
24
+ }