dbla 0.0.3 → 0.0.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed3c90144eabe9791538f773b22ba691467248be
4
- data.tar.gz: 7cab3b50332d69e51d978538022ff2034b88265f
3
+ metadata.gz: b511243621c7428086b96e4b807c3900dddd1264
4
+ data.tar.gz: c46a5e41a85489dd58e189adc67859699bd7adb8
5
5
  SHA512:
6
- metadata.gz: 276e2e397be231484d882ce6c8111f7905a79e1dbe428be6dff04944c02efa4598f47106c01e454c8f23012714159f52f8c90b4078136114813c237edfea6c68
7
- data.tar.gz: 19da1e0593e6f066ac31505d6d9df0a0120685186966fd112ed4481c04ec6e0e7a7e7284df49466f0b1ff91a1fc914b1b40e7d1c7c441b2901934dd8f514858d
6
+ metadata.gz: 54793d19643fd0c7854c1ef8f1e98720ea0c4b46ad1493265ae6bef4527369ff060e7a6d0914c2ea4fcc526ec21337fe21a60e5af72c736fda9edbbfd4f0fcec
7
+ data.tar.gz: 54a4c98894f0e24f4b1fbeb868b10b1941402bb2b9d1174bf82567a4af5c093672b6dfbe5795b9057119a8ff67c879cbad2893f3193a0b8db08f99a71263f836
@@ -31,6 +31,10 @@ module Dbla
31
31
  {}
32
32
  end
33
33
  # secret api
34
+ def export_formats
35
+ {}
36
+ end
37
+
34
38
  def grouped?
35
39
  false
36
40
  end
@@ -67,7 +67,7 @@ module Dbla
67
67
  # @param [Hash] opts
68
68
  # @options opts [String] :value
69
69
  def render_index_field_value field, options = {}
70
-
70
+ field.to_s.split('.').inject(@document) {|m,v| m[v]}
71
71
  end
72
72
  ##
73
73
  # Render the show field value for a document
@@ -78,6 +78,7 @@ module Dbla
78
78
  # @param [Hash] options
79
79
  # @options opts [String] :value
80
80
  def render_document_show_field_value field, options={}
81
+ field.to_s.split('.').inject(@document) {|m,v| m[v]}
81
82
  end
82
83
 
83
84
  ##
@@ -12,7 +12,16 @@ module Dbla
12
12
  data = nil
13
13
  #TODO Move this into a SearchBuilder, add a generator
14
14
  if params['q']
15
- q = "?api_key=#{api_key}&q=#{params['q']}&facets=sourceResource.format"
15
+ q = "?api_key=#{api_key}&q=#{params['q']}"
16
+ fq = []
17
+ blacklight_config.facet_fields.each do |f|
18
+ # [fiendName, facetConfig]
19
+ next unless f[0] =~ /^(sourceResource|provider|object|intermediateProvider|dataProvider)/
20
+ fqv = f[0]
21
+ fqv = fqv + ':' + f[1].pin if f[1].pin
22
+ fq << fqv
23
+ end
24
+ q << "&facets=#{fq.join(',')}" unless fq.empty?
16
25
  if params.page
17
26
  q << "&page=#{params.page}"
18
27
  end
@@ -9,10 +9,10 @@ module Dbla
9
9
  self.document_model = options[:solr_document_model] || options[:document_model] || Item
10
10
  self.blacklight_config = options[:blacklight_config]
11
11
  if data
12
- @total = data['count']
12
+ @total = data.fetch('count',0)
13
13
  @documents = (data['docs'] || []).map {|d| document_model.new(d,self)}
14
- @start = data['start']
15
- @limit = data['limit']
14
+ @start = data.fetch('start',0)
15
+ @limit = data.fetch('limit',10)
16
16
  @aggregations = (data['facets'] || {})
17
17
  else
18
18
  @aggregations = {}
@@ -25,10 +25,14 @@ module Dbla
25
25
  def aggregations
26
26
  # "facets":{"sourceResource.format":{"_type":"terms","missing":77,"total":250,"other":16,"terms":[{"term":"Photographs","count":44},
27
27
  Hash[@aggregations.map do |k,v|
28
+ next unless v['terms']
28
29
  items = v['terms'].map {|term| Facets::FacetItem.new(value: term['term'], hits: term['count'])}
29
30
  [k, Facets::FacetField.new(k,items)]
30
31
  end]
31
32
  end
33
+ def facet_by_field_name(facet_field)
34
+ aggregations[facet_field.to_s]
35
+ end
32
36
  def spelling
33
37
  Words.new([])
34
38
  end
@@ -22,7 +22,7 @@ module Dbla::Response::Facets
22
22
 
23
23
  private
24
24
  def default_limit
25
- 100
25
+ Dbla.config.fetch(:facet_field_default_limit, 100)
26
26
  end
27
27
 
28
28
  def default_sort
@@ -1,3 +1,3 @@
1
1
  module Dbla
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,10 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module Dbla
3
+ class CatalogGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ def assets
7
+ copy_file "catalog_controller.rb", "app/controllers/catalog_controller.rb"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,156 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class CatalogController < ApplicationController
3
+ include Blacklight::Marc::Catalog
4
+
5
+ include Blacklight::Catalog
6
+
7
+ configure_blacklight do |config|
8
+ ## Default parameters to send to solr for all search-like requests. See also SearchBuilder#processed_parameters
9
+ config.default_solr_params = {
10
+ :qt => 'search',
11
+ :rows => 10
12
+ }
13
+
14
+ # solr path which will be added to solr base url before the other solr params.
15
+ #config.solr_path = 'select'
16
+
17
+ # items to show per page, each number in the array represent another option to choose from.
18
+ #config.per_page = [10,20,50,100]
19
+
20
+ ## Default parameters to send on single-document requests to Solr. These settings are the Blackligt defaults (see SearchHelper#solr_doc_params) or
21
+ ## parameters included in the Blacklight-jetty document requestHandler.
22
+ #
23
+ #config.default_document_solr_params = {
24
+ # :qt => 'document',
25
+ # ## These are hard-coded in the blacklight 'document' requestHandler
26
+ # # :fl => '*',
27
+ # # :rows => 1
28
+ # # :q => '{!raw f=id v=$id}'
29
+ #}
30
+
31
+ config.repository_class = Dbla::Repository
32
+ config.document_model = Item
33
+ config.response_model = Dbla::Response
34
+ config.document_presenter_class = Dbla::DocumentPresenter
35
+ config.search_builder_class = SearchBuilder
36
+ # solr field configuration for search results/index views
37
+ config.index.title_field = 'sourceResource.title'
38
+ config.index.thumbnail_field = 'object'
39
+ config.index.display_type_field = 'format'
40
+
41
+ # solr field configuration for document/show views
42
+ #config.show.title_field = 'title_display'
43
+ #config.show.display_type_field = 'format'
44
+
45
+ # solr fields that will be treated as facets by the blacklight application
46
+ # The ordering of the field names is the order of the display
47
+ #
48
+ # Setting a limit will trigger Blacklight's 'more' facet values link.
49
+ # * If left unset, then all facet values returned by solr will be displayed.
50
+ # * If set to an integer, then "f.somefield.facet.limit" will be added to
51
+ # solr request, with actual solr request being +1 your configured limit --
52
+ # you configure the number of items you actually want _displayed_ in a page.
53
+ # * If set to 'true', then no additional parameters will be sent to solr,
54
+ # but any 'sniffed' request limit parameters will be used for paging, with
55
+ # paging at requested limit -1. Can sniff from facet.limit or
56
+ # f.specific_field.facet.limit solr request params. This 'true' config
57
+ # can be used if you set limits in :default_solr_params, or as defaults
58
+ # on the solr side in the request handler itself. Request handler defaults
59
+ # sniffing requires solr requests to be made with "echoParams=all", for
60
+ # app code to actually have it echo'd back to see it.
61
+ #
62
+ # :show may be set to false if you don't want the facet to be drawn in the
63
+ # facet bar
64
+ config.add_facet_field 'sourceResource.format', label: 'By Format'
65
+ config.add_facet_field 'dataProvider', label: 'Contributing Institution'
66
+ config.add_facet_field 'provider.name', label: 'Partner'
67
+ config.add_facet_field 'sourceResource.language.name', label: 'By Language'
68
+ config.add_facet_field 'sourceResource.subject.name', label: 'By Subject'
69
+
70
+ # Have BL send all facet field names to Solr, which has been the default
71
+ # previously. Simply remove these lines if you'd rather use Solr request
72
+ # handler defaults, or have no facets.
73
+ config.add_facet_fields_to_solr_request!
74
+
75
+ # solr fields to be displayed in the index (search results) view
76
+ # The ordering of the field names is the order of the display
77
+ config.add_index_field 'sourceResource.format', :label => 'Format'
78
+ config.add_index_field 'sourceResource.creator', :label => 'Creator'
79
+
80
+ # solr fields to be displayed in the show (single result) view
81
+ # The ordering of the field names is the order of the display
82
+
83
+ # "fielded" search configuration. Used by pulldown among other places.
84
+ # For supported keys in hash, see rdoc for Blacklight::SearchFields
85
+ #
86
+ # Search fields will inherit the :qt solr request handler from
87
+ # config[:default_solr_parameters], OR can specify a different one
88
+ # with a :qt key/value. Below examples inherit, except for subject
89
+ # that specifies the same :qt as default for our own internal
90
+ # testing purposes.
91
+ #
92
+ # The :key is what will be used to identify this BL search field internally,
93
+ # as well as in URLs -- so changing it after deployment may break bookmarked
94
+ # urls. A display label will be automatically calculated from the :key,
95
+ # or can be specified manually to be different.
96
+
97
+ # This one uses all the defaults set by the solr request handler. Which
98
+ # solr request handler? The one set in config[:default_solr_parameters][:qt],
99
+ # since we aren't specifying it otherwise.
100
+
101
+ config.add_search_field 'all_fields', :label => 'All Fields'
102
+
103
+
104
+ # Now we see how to over-ride Solr request handler defaults, in this
105
+ # case for a BL "search field", which is really a dismax aggregate
106
+ # of Solr search fields.
107
+
108
+ config.add_search_field('title') do |field|
109
+ # solr_parameters hash are sent to Solr as ordinary url query params.
110
+ field.solr_parameters = { :'spellcheck.dictionary' => 'title' }
111
+
112
+ # :solr_local_parameters will be sent using Solr LocalParams
113
+ # syntax, as eg {! qf=$title_qf }. This is neccesary to use
114
+ # Solr parameter de-referencing like $title_qf.
115
+ # See: http://wiki.apache.org/solr/LocalParams
116
+ field.solr_local_parameters = {
117
+ :qf => '$title_qf',
118
+ :pf => '$title_pf'
119
+ }
120
+ end
121
+
122
+ config.add_search_field('author') do |field|
123
+ field.solr_parameters = { :'spellcheck.dictionary' => 'author' }
124
+ field.solr_local_parameters = {
125
+ :qf => '$author_qf',
126
+ :pf => '$author_pf'
127
+ }
128
+ end
129
+
130
+ # Specifying a :qt only to show it's possible, and so our internal automated
131
+ # tests can test it. In this case it's the same as
132
+ # config[:default_solr_parameters][:qt], so isn't actually neccesary.
133
+ config.add_search_field('subject') do |field|
134
+ field.solr_parameters = { :'spellcheck.dictionary' => 'subject' }
135
+ field.qt = 'search'
136
+ field.solr_local_parameters = {
137
+ :qf => '$subject_qf',
138
+ :pf => '$subject_pf'
139
+ }
140
+ end
141
+
142
+ # "sort results by" select (pulldown)
143
+ # label in pulldown is followed by the name of the SOLR field to sort by and
144
+ # whether the sort is ascending or descending (it must be asc or desc
145
+ # except in the relevancy case).
146
+ config.add_sort_field 'score desc, pub_date_sort desc, title_sort asc', :label => 'relevance'
147
+ config.add_sort_field 'pub_date_sort desc, title_sort asc', :label => 'year'
148
+ config.add_sort_field 'author_sort asc, title_sort asc', :label => 'author'
149
+ config.add_sort_field 'title_sort asc, pub_date_sort desc', :label => 'title'
150
+
151
+ # If there are more than this many search results, no spelling ("did you
152
+ # mean") suggestion is offered.
153
+ config.spell_max = 5
154
+ end
155
+
156
+ end
metadata CHANGED
@@ -1,11 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dbla
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Audrey Altman
8
8
  - Ben Armintor
9
+ - Jeremy Friesen
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
@@ -17,14 +18,14 @@ dependencies:
17
18
  requirements:
18
19
  - - "~>"
19
20
  - !ruby/object:Gem::Version
20
- version: 4.1.10
21
+ version: '4.1'
21
22
  type: :runtime
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
26
  - - "~>"
26
27
  - !ruby/object:Gem::Version
27
- version: 4.1.10
28
+ version: '4.1'
28
29
  - !ruby/object:Gem::Dependency
29
30
  name: blacklight
30
31
  requirement: !ruby/object:Gem::Requirement
@@ -99,6 +100,7 @@ description: Rails engine to put BL on DPLA -> DBLA
99
100
  email:
100
101
  - audrey@dp.la
101
102
  - armintor@gmail.com
103
+ - jeremy.n.friesen@gmail.com
102
104
  executables: []
103
105
  extensions: []
104
106
  extra_rdoc_files: []
@@ -123,10 +125,12 @@ files:
123
125
  - lib/dbla/search_builder_behavior.rb
124
126
  - lib/dbla/version.rb
125
127
  - lib/generators/dbla/assets_generator.rb
128
+ - lib/generators/dbla/catalog_generator.rb
126
129
  - lib/generators/dbla/install_generator.rb
127
130
  - lib/generators/dbla/models_generator.rb
128
131
  - lib/generators/dbla/routes_generator.rb
129
132
  - lib/generators/dbla/search_builder_generator.rb
133
+ - lib/generators/dbla/templates/catalog_controller.rb
130
134
  - lib/generators/dbla/templates/collection.rb
131
135
  - lib/generators/dbla/templates/dbla.css.scss
132
136
  - lib/generators/dbla/templates/item.rb