dog_biscuits 0.4.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 (272) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +115 -0
  3. data/.codeclimate.yml +52 -0
  4. data/.gitignore +24 -0
  5. data/.rspec +3 -0
  6. data/.rubocop.yml +45 -0
  7. data/.rubocop_todo.yml +92 -0
  8. data/.travis.yml +18 -0
  9. data/CODE_OF_CONDUCT.md +36 -0
  10. data/CONTRIBUTING.md +161 -0
  11. data/Gemfile +40 -0
  12. data/LICENSE +14 -0
  13. data/README.md +98 -0
  14. data/Rakefile +35 -0
  15. data/SUPPORT.md +5 -0
  16. data/bin/console +15 -0
  17. data/bin/setup +7 -0
  18. data/dog_biscuits.gemspec +38 -0
  19. data/lib/dog_biscuits.rb +352 -0
  20. data/lib/dog_biscuits/actors/apply_authorities.rb +32 -0
  21. data/lib/dog_biscuits/actors/singular_attributes.rb +17 -0
  22. data/lib/dog_biscuits/blacklight/commands.rb +118 -0
  23. data/lib/dog_biscuits/configuration.rb +506 -0
  24. data/lib/dog_biscuits/importers/authority.rb +65 -0
  25. data/lib/dog_biscuits/indexers/collection_indexer.rb +10 -0
  26. data/lib/dog_biscuits/indexers/concerns/indexes_common.rb +58 -0
  27. data/lib/dog_biscuits/indexers/conference_item_indexer.rb +17 -0
  28. data/lib/dog_biscuits/indexers/dataset_indexer.rb +25 -0
  29. data/lib/dog_biscuits/indexers/digital_archival_object_indexer.rb +19 -0
  30. data/lib/dog_biscuits/indexers/exam_paper_indexer.rb +10 -0
  31. data/lib/dog_biscuits/indexers/journal_article_indexer.rb +15 -0
  32. data/lib/dog_biscuits/indexers/package_indexer.rb +19 -0
  33. data/lib/dog_biscuits/indexers/published_work_indexer.rb +16 -0
  34. data/lib/dog_biscuits/indexers/thesis_indexer.rb +16 -0
  35. data/lib/dog_biscuits/models/authorities/agent.rb +78 -0
  36. data/lib/dog_biscuits/models/authorities/agents/group.rb +59 -0
  37. data/lib/dog_biscuits/models/authorities/agents/historic_person.rb +55 -0
  38. data/lib/dog_biscuits/models/authorities/agents/organisation.rb +56 -0
  39. data/lib/dog_biscuits/models/authorities/agents/person.rb +75 -0
  40. data/lib/dog_biscuits/models/authorities/concept.rb +91 -0
  41. data/lib/dog_biscuits/models/authorities/concept_scheme.rb +65 -0
  42. data/lib/dog_biscuits/models/authorities/event.rb +74 -0
  43. data/lib/dog_biscuits/models/authorities/place.rb +86 -0
  44. data/lib/dog_biscuits/models/authorities/project.rb +60 -0
  45. data/lib/dog_biscuits/models/authority.rb +42 -0
  46. data/lib/dog_biscuits/models/collections/collection.rb +32 -0
  47. data/lib/dog_biscuits/models/concerns/behaviours/pure_specific_behaviour.rb +17 -0
  48. data/lib/dog_biscuits/models/concerns/behaviours/validate_concept_related.rb +12 -0
  49. data/lib/dog_biscuits/models/concerns/behaviours/validate_concept_scheme.rb +16 -0
  50. data/lib/dog_biscuits/models/concerns/behaviours/validate_label.rb +12 -0
  51. data/lib/dog_biscuits/models/concerns/behaviours/validate_place.rb +12 -0
  52. data/lib/dog_biscuits/models/concerns/behaviours/work_behaviour.rb +21 -0
  53. data/lib/dog_biscuits/models/concerns/extended_solr_document.rb +147 -0
  54. data/lib/dog_biscuits/models/concerns/metadata_properties/archivematica/archivematica.rb +73 -0
  55. data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/access_provided_by.rb +14 -0
  56. data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/country_code.rb +15 -0
  57. data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/hub_dates.rb +17 -0
  58. data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/maintenance_agency_code.rb +15 -0
  59. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/awarding_institution.rb +13 -0
  60. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/edition.rb +13 -0
  61. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/identified_by.rb +14 -0
  62. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/part.rb +13 -0
  63. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/part_of.rb +14 -0
  64. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/series.rb +13 -0
  65. data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/subtitle.rb +14 -0
  66. data/lib/dog_biscuits/models/concerns/metadata_properties/bibo/presented_at.rb +13 -0
  67. data/lib/dog_biscuits/models/concerns/metadata_properties/bibo/publication_status.rb +13 -0
  68. data/lib/dog_biscuits/models/concerns/metadata_properties/datacite/resource_type_general.rb +13 -0
  69. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/abstract.rb +14 -0
  70. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/access_rights.rb +14 -0
  71. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/bibliographic_citation.rb +13 -0
  72. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/contributor.rb +14 -0
  73. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/creator.rb +14 -0
  74. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date.rb +13 -0
  75. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_accepted.rb +13 -0
  76. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_available.rb +14 -0
  77. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_copyrighted.rb +14 -0
  78. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_created.rb +13 -0
  79. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_issued.rb +14 -0
  80. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/description.rb +14 -0
  81. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/extent.rb +13 -0
  82. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/format.rb +13 -0
  83. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/identifier.rb +13 -0
  84. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/language.rb +17 -0
  85. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/publisher.rb +14 -0
  86. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/resource_type.rb +13 -0
  87. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/rights.rb +17 -0
  88. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/rights_holder.rb +14 -0
  89. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/simple_versions.rb +18 -0
  90. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/source.rb +13 -0
  91. data/lib/dog_biscuits/models/concerns/metadata_properties/dc/subject.rb +13 -0
  92. data/lib/dog_biscuits/models/concerns/metadata_properties/dwc/event_date.rb +14 -0
  93. data/lib/dog_biscuits/models/concerns/metadata_properties/edm/edm_rights.rb +13 -0
  94. data/lib/dog_biscuits/models/concerns/metadata_properties/fabio/date_collected.rb +15 -0
  95. data/lib/dog_biscuits/models/concerns/metadata_properties/foaf/based_near.rb +12 -0
  96. data/lib/dog_biscuits/models/concerns/metadata_properties/foaf/foaf_name.rb +16 -0
  97. data/lib/dog_biscuits/models/concerns/metadata_properties/frapo/output_of.rb +18 -0
  98. data/lib/dog_biscuits/models/concerns/metadata_properties/geo/geo.rb +27 -0
  99. data/lib/dog_biscuits/models/concerns/metadata_properties/geonames/country_code.rb +15 -0
  100. data/lib/dog_biscuits/models/concerns/metadata_properties/geonames/place_properties.rb +66 -0
  101. data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/doi.rb +13 -0
  102. data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/isbn.rb +13 -0
  103. data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/official_url.rb +13 -0
  104. data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/orcid.rb +13 -0
  105. data/lib/dog_biscuits/models/concerns/metadata_properties/local/for_indexing.rb +14 -0
  106. data/lib/dog_biscuits/models/concerns/metadata_properties/local/former_identifier.rb +13 -0
  107. data/lib/dog_biscuits/models/concerns/metadata_properties/local/generic_authority_terms.rb +22 -0
  108. data/lib/dog_biscuits/models/concerns/metadata_properties/local/generic_qualifier.rb +16 -0
  109. data/lib/dog_biscuits/models/concerns/metadata_properties/local/last_access.rb +15 -0
  110. data/lib/dog_biscuits/models/concerns/metadata_properties/local/main_file.rb +24 -0
  111. data/lib/dog_biscuits/models/concerns/metadata_properties/local/module_code.rb +13 -0
  112. data/lib/dog_biscuits/models/concerns/metadata_properties/local/number_of_downloads.rb +14 -0
  113. data/lib/dog_biscuits/models/concerns/metadata_properties/local/packaged_by.rb +13 -0
  114. data/lib/dog_biscuits/models/concerns/metadata_properties/local/readme_file.rb +26 -0
  115. data/lib/dog_biscuits/models/concerns/metadata_properties/local/requestor_email.rb +13 -0
  116. data/lib/dog_biscuits/models/concerns/metadata_properties/mads/related_authority.rb +14 -0
  117. data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/advisor.rb +14 -0
  118. data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/editor.rb +14 -0
  119. data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/funder.rb +13 -0
  120. data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/place_of_publication.rb +13 -0
  121. data/lib/dog_biscuits/models/concerns/metadata_properties/mods/date_valid.rb +14 -0
  122. data/lib/dog_biscuits/models/concerns/metadata_properties/owl/owl_same_as.rb +13 -0
  123. data/lib/dog_biscuits/models/concerns/metadata_properties/premis/has_restriction.rb +15 -0
  124. data/lib/dog_biscuits/models/concerns/metadata_properties/property_sets/person_properties.rb +92 -0
  125. data/lib/dog_biscuits/models/concerns/metadata_properties/pure/managing_organisation.rb +14 -0
  126. data/lib/dog_biscuits/models/concerns/metadata_properties/pure/pure.rb +28 -0
  127. data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/rdf_type.rb +12 -0
  128. data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/rdfs_label.rb +14 -0
  129. data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/related_url.rb +13 -0
  130. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/alternate_name.rb +13 -0
  131. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/content_version.rb +13 -0
  132. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/date_published.rb +13 -0
  133. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/date_updated.rb +13 -0
  134. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/department.rb +13 -0
  135. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/end_date.rb +13 -0
  136. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/issue_number.rb +13 -0
  137. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/keyword.rb +13 -0
  138. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/location.rb +13 -0
  139. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/pagination.rb +13 -0
  140. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/start_date.rb +13 -0
  141. data/lib/dog_biscuits/models/concerns/metadata_properties/schema/volume_number.rb +13 -0
  142. data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_labels.rb +18 -0
  143. data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_note.rb +13 -0
  144. data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_related.rb +13 -0
  145. data/lib/dog_biscuits/models/concerns/metadata_properties/uketd/date_of_award.rb +13 -0
  146. data/lib/dog_biscuits/models/concerns/metadata_properties/uketd/qualification.rb +17 -0
  147. data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/date_submitted.rb +14 -0
  148. data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/official_url.rb +13 -0
  149. data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/refereed.rb +13 -0
  150. data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_labels.rb +9 -0
  151. data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_metadata.rb +64 -0
  152. data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_rights.rb +10 -0
  153. data/lib/dog_biscuits/models/concerns/model_property_sets/conference_item_metadata.rb +24 -0
  154. data/lib/dog_biscuits/models/concerns/model_property_sets/dataset_metadata.rb +36 -0
  155. data/lib/dog_biscuits/models/concerns/model_property_sets/digital_archival_object_metadata.rb +13 -0
  156. data/lib/dog_biscuits/models/concerns/model_property_sets/exam_paper_metadata.rb +14 -0
  157. data/lib/dog_biscuits/models/concerns/model_property_sets/journal_article_metadata.rb +24 -0
  158. data/lib/dog_biscuits/models/concerns/model_property_sets/package_metadata.rb +13 -0
  159. data/lib/dog_biscuits/models/concerns/model_property_sets/published_work_metadata.rb +26 -0
  160. data/lib/dog_biscuits/models/concerns/model_property_sets/thesis_metadata.rb +17 -0
  161. data/lib/dog_biscuits/models/filesets/file_set.rb +30 -0
  162. data/lib/dog_biscuits/models/to_refactor_or_remove/canvas.rb +15 -0
  163. data/lib/dog_biscuits/models/to_refactor_or_remove/contained_file.rb +13 -0
  164. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_date_certainty.rb +5 -0
  165. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_editorial_note.rb +5 -0
  166. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry.rb +19 -0
  167. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry_date.rb +10 -0
  168. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry_type.rb +5 -0
  169. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_is_referenced_by.rb +5 -0
  170. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_language.rb +5 -0
  171. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_marginalium.rb +5 -0
  172. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_note.rb +5 -0
  173. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_as_written.rb +5 -0
  174. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_descriptor.rb +5 -0
  175. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_descriptor_as_written.rb +5 -0
  176. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_note.rb +5 -0
  177. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_related_person.rb +5 -0
  178. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_related_place.rb +5 -0
  179. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_role.rb +5 -0
  180. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_as_written.rb +5 -0
  181. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_note.rb +5 -0
  182. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_role.rb +5 -0
  183. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_type.rb +5 -0
  184. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_related_agent.rb +20 -0
  185. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_related_place.rb +13 -0
  186. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_section_type.rb +5 -0
  187. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_single_date.rb +10 -0
  188. data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_subject.rb +5 -0
  189. data/lib/dog_biscuits/models/to_refactor_or_remove/entry.rb +59 -0
  190. data/lib/dog_biscuits/models/to_refactor_or_remove/entry/entry_date.rb +17 -0
  191. data/lib/dog_biscuits/models/to_refactor_or_remove/entry/related_agent.rb +62 -0
  192. data/lib/dog_biscuits/models/to_refactor_or_remove/entry/related_place.rb +28 -0
  193. data/lib/dog_biscuits/models/to_refactor_or_remove/entry/single_date.rb +19 -0
  194. data/lib/dog_biscuits/models/to_refactor_or_remove/folio.rb +42 -0
  195. data/lib/dog_biscuits/models/to_refactor_or_remove/image.rb +25 -0
  196. data/lib/dog_biscuits/models/to_refactor_or_remove/manifest.rb +15 -0
  197. data/lib/dog_biscuits/models/to_refactor_or_remove/register.rb +21 -0
  198. data/lib/dog_biscuits/models/work.rb +37 -0
  199. data/lib/dog_biscuits/models/works/conference_item.rb +37 -0
  200. data/lib/dog_biscuits/models/works/dataset.rb +42 -0
  201. data/lib/dog_biscuits/models/works/digital_archival_object.rb +28 -0
  202. data/lib/dog_biscuits/models/works/exam_paper.rb +33 -0
  203. data/lib/dog_biscuits/models/works/journal_article.rb +37 -0
  204. data/lib/dog_biscuits/models/works/package.rb +47 -0
  205. data/lib/dog_biscuits/models/works/published_work.rb +38 -0
  206. data/lib/dog_biscuits/models/works/thesis.rb +34 -0
  207. data/lib/dog_biscuits/property_mappings/property_mappings.rb +585 -0
  208. data/lib/dog_biscuits/railtie.rb +13 -0
  209. data/lib/dog_biscuits/services/table_based_authority_extended.rb +10 -0
  210. data/lib/dog_biscuits/services/terms.rb +57 -0
  211. data/lib/dog_biscuits/services/terms_service.rb +162 -0
  212. data/lib/dog_biscuits/solr/index_types.rb +33 -0
  213. data/lib/dog_biscuits/validators/concept_related_validator.rb +13 -0
  214. data/lib/dog_biscuits/validators/concept_scheme_member_validator.rb +10 -0
  215. data/lib/dog_biscuits/validators/label_validator.rb +55 -0
  216. data/lib/dog_biscuits/validators/place_validator.rb +10 -0
  217. data/lib/dog_biscuits/version.rb +5 -0
  218. data/lib/dog_biscuits/vocab/borthwick_registers.rb +321 -0
  219. data/lib/dog_biscuits/vocab/generic.rb +204 -0
  220. data/lib/dog_biscuits/vocab/oais_archivematica.rb +116 -0
  221. data/lib/dog_biscuits/vocab/pure_terms.rb +65 -0
  222. data/lib/dog_biscuits/vocab/uketd.rb +45 -0
  223. data/lib/dog_biscuits/vocab/ulcc_terms.rb +55 -0
  224. data/lib/generators/dog_biscuits/USAGE +50 -0
  225. data/lib/generators/dog_biscuits/authority_generator.rb +55 -0
  226. data/lib/generators/dog_biscuits/catalog_generator.rb +18 -0
  227. data/lib/generators/dog_biscuits/dates_generator.rb +98 -0
  228. data/lib/generators/dog_biscuits/generate_all_generator.rb +29 -0
  229. data/lib/generators/dog_biscuits/imagify_generator.rb +67 -0
  230. data/lib/generators/dog_biscuits/install_generator.rb +82 -0
  231. data/lib/generators/dog_biscuits/locales_generator.rb +20 -0
  232. data/lib/generators/dog_biscuits/schema_org_generator.rb +20 -0
  233. data/lib/generators/dog_biscuits/templates/_date_template.html.erb +7 -0
  234. data/lib/generators/dog_biscuits/templates/app/controllers/catalog_controller.rb +133 -0
  235. data/lib/generators/dog_biscuits/templates/app/helpers/dog_biscuits_helper.rb +43 -0
  236. data/lib/generators/dog_biscuits/templates/app/renderers/package_ids_renderer.rb +13 -0
  237. data/lib/generators/dog_biscuits/templates/app/renderers/packaged_by_ids_renderer.rb +11 -0
  238. data/lib/generators/dog_biscuits/templates/app/renderers/publication_status_renderer.rb +16 -0
  239. data/lib/generators/dog_biscuits/templates/app/services/concerns/file_authority_concern.rb +14 -0
  240. data/lib/generators/dog_biscuits/templates/app/services/concerns/local_authority_concern.rb +18 -0
  241. data/lib/generators/dog_biscuits/templates/app/services/local_form_metadata_service.rb +15 -0
  242. data/lib/generators/dog_biscuits/templates/app/views/hyrax/base/_form_metadata.html.erb +23 -0
  243. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_abstract.html.erb +5 -0
  244. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_default.html.erb +6 -0
  245. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_funder.html.erb +8 -0
  246. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_note.html.erb +5 -0
  247. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_part_of.html.erb +17 -0
  248. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_publication_status.html.erb +6 -0
  249. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_refereed.html.erb +5 -0
  250. data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_resource_type_general.html.erb +2 -0
  251. data/lib/generators/dog_biscuits/templates/authority_service.rb.erb +25 -0
  252. data/lib/generators/dog_biscuits/templates/config/authorities/content_versions.yml +25 -0
  253. data/lib/generators/dog_biscuits/templates/config/authorities/publication_statuses.yml +19 -0
  254. data/lib/generators/dog_biscuits/templates/config/authorities/qualification_levels.yml +13 -0
  255. data/lib/generators/dog_biscuits/templates/config/authorities/qualification_names.yml +31 -0
  256. data/lib/generators/dog_biscuits/templates/config/authorities/resource_type_generals.yml +47 -0
  257. data/lib/generators/dog_biscuits/templates/config/dog_biscuits.yml +3 -0
  258. data/lib/generators/dog_biscuits/templates/config/initializers/catalog_search_builder_overrides.rb +18 -0
  259. data/lib/generators/dog_biscuits/templates/config/initializers/dog_biscuits.rb +144 -0
  260. data/lib/generators/dog_biscuits/templates/dog_biscuits.en.yml.erb +11 -0
  261. data/lib/generators/dog_biscuits/templates/schema_org.yml.erb +4 -0
  262. data/lib/generators/dog_biscuits/work/USAGE +35 -0
  263. data/lib/generators/dog_biscuits/work/templates/README +31 -0
  264. data/lib/generators/dog_biscuits/work/templates/_attribute_rows.html.erb +22 -0
  265. data/lib/generators/dog_biscuits/work/templates/actor.rb.erb +25 -0
  266. data/lib/generators/dog_biscuits/work/templates/form.rb.erb +18 -0
  267. data/lib/generators/dog_biscuits/work/templates/indexer.rb.erb +23 -0
  268. data/lib/generators/dog_biscuits/work/templates/model.rb.erb +16 -0
  269. data/lib/generators/dog_biscuits/work/templates/presenter.rb.erb +20 -0
  270. data/lib/generators/dog_biscuits/work/work_generator.rb +102 -0
  271. data/lib/tasks/authorities.rake +22 -0
  272. metadata +476 -0
@@ -0,0 +1,7 @@
1
+ <% # use date picker %>
2
+
3
+ <% if f.object.class.multiple? key %>
4
+ <%= f.input key, as: :multi_value, input_html: { data: { provide: 'datepicker', 'date-force-parse': 'false', 'date-autoclose': 'true' } }, required: f.object.required?(key) %>
5
+ <% else %>
6
+ <%= f.input key, input_html: { value: f.object.model[key].first, data: { provide: 'datepicker', 'date-force-parse': 'false', 'date-autoclose': 'true' } }, required: f.object.required?(key) %>
7
+ <% end %>
@@ -0,0 +1,133 @@
1
+ # frozen_string_literal: true
2
+ # Override of default CatalogController, generated by DogBiscuits
3
+ # Based on code from JiscRDSS/rdss-samvera
4
+ # https://github.com/JiscRDSS/rdss-samvera/blob/master/willow/app/controllers/catalog_controller.rb
5
+ # Copyright Jisc
6
+ class CatalogController < ApplicationController
7
+ include Hydra::Catalog
8
+ include Hydra::Controller::ControllerBehavior
9
+ include DogBiscuits::Blacklight::Commands
10
+
11
+ # This filter applies the hydra access controls
12
+ before_action :enforce_show_permissions, only: :show
13
+
14
+ def self.uploaded_field
15
+ solr_name('system_create', :stored_sortable, type: :date)
16
+ end
17
+
18
+ def self.modified_field
19
+ solr_name('system_modified', :stored_sortable, type: :date)
20
+ end
21
+
22
+ configure_blacklight do |config|
23
+ config.search_builder_class = Hyrax::CatalogSearchBuilder
24
+
25
+ # Show gallery view
26
+ config.view.gallery.partials = [:index_header, :index]
27
+ config.view.slideshow.partials = [:index]
28
+
29
+ ## Default parameters to send to solr for all search-like requests. See also SolrHelper#solr_search_params
30
+ config.default_solr_params = {
31
+ qt: 'search',
32
+ rows: 10,
33
+ qf: to_searchable_names_field_list([:title,
34
+ :description,
35
+ :creator,
36
+ :keyword])
37
+ }
38
+
39
+ # solr field configuration for document/show views
40
+ config.index.title_field = solr_name(:title, :stored_searchable)
41
+ config.index.display_type_field = solr_name(:has_model, :symbol)
42
+ config.index.thumbnail_field = 'thumbnail_path_ss'
43
+
44
+ # solr fields that will be treated as facets by the blacklight application
45
+ # The ordering of the field names is the order of the display
46
+ facet_props = DogBiscuits.config.facet_properties
47
+ add_facet_field config, facet_props
48
+
49
+ # Add the date_range facet if configured
50
+ if DogBiscuits.config.date_range == true
51
+ config.add_facet_field solr_name('date_range', :facetable), label: default_label(:date_range), range: true
52
+ end
53
+
54
+ # The generic_type isn't displayed on the facet list
55
+ # It's used to give a label to the filter that comes from the user profile
56
+ config.add_facet_field solr_name("generic_type", :facetable), if: false
57
+
58
+ # Have BL send all facet field names to Solr, which has been the default
59
+ # previously. Simply remove these lines if you'd rather use Solr request
60
+ # handler defaults, or have no facets.
61
+ config.add_facet_fields_to_solr_request!
62
+
63
+ # solr fields to be displayed in the index (search results) view
64
+ # The ordering of the field names is the order of the display
65
+
66
+ index_props = DogBiscuits.config.index_properties.collect do |prop|
67
+ { prop => index_options(prop, DogBiscuits.config.property_mappings[prop]) }
68
+ end
69
+ add_index_field config, index_props
70
+
71
+ # solr fields to be displayed in the show (single result) view
72
+ # The ordering of the field names is the order of the display
73
+ show_props = DogBiscuits.config.all_properties
74
+ add_show_field config, show_props
75
+
76
+ # "fielded" search configuration. Used by pulldown among other places.
77
+ # For supported keys in hash, see rdoc for Blacklight::SearchFields
78
+ #
79
+ # Search fields will inherit the :qt solr request handler from
80
+ # config[:default_solr_parameters], OR can specify a different one
81
+ # with a :qt key/value. Below examples inherit, except for subject
82
+ # that specifies the same :qt as default for our own internal
83
+ # testing purposes.
84
+ #
85
+ # The :key is what will be used to identify this BL search field internally,
86
+ # as well as in URLs -- so changing it after deployment may break bookmarked
87
+ # urls. A display label will be automatically calculated from the :key,
88
+ # or can be specified manually to be different.
89
+ #
90
+ # This one uses all the defaults set by the solr request handler. Which
91
+ # solr request handler? The one set in config[:default_solr_parameters][:qt],
92
+ # since we aren't specifying it otherwise.
93
+ config.add_search_field('all_fields', label: 'All Fields') do |field|
94
+ all_names = config.show_fields.values.reject do |v|
95
+ DogBiscuits.config.exclude_from_search_properties.include?(v)
96
+ end.map(&:field).join(" ")
97
+ title_name = solr_name(:title, :stored_searchable)
98
+ field.solr_parameters = {
99
+ qf: "#{all_names} file_format_tesim all_text_timv",
100
+ pf: title_name.to_s
101
+ }
102
+ end
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
+ add_search_field config, DogBiscuits.config.all_properties.reject { |v|
108
+ DogBiscuits.config.exclude_from_search_properties.include?(v)
109
+ }
110
+
111
+ # "sort results by" select (pulldown)
112
+ # label in pulldown is followed by the name of the SOLR field to sort by and
113
+ # whether the sort is ascending or descending (it must be asc or desc
114
+ # except in the relevancy case).
115
+ # label is key, solr field is value
116
+ config.add_sort_field "score desc, #{uploaded_field} desc", label: "relevance"
117
+ config.add_sort_field "#{uploaded_field} desc", label: "date uploaded \u25BC"
118
+ config.add_sort_field "#{uploaded_field} asc", label: "date uploaded \u25B2"
119
+ config.add_sort_field "#{modified_field} desc", label: "date modified \u25BC"
120
+ config.add_sort_field "#{modified_field} asc", label: "date modified \u25B2"
121
+
122
+ # If there are more than this many search results, no spelling ("did you
123
+ # mean") suggestion is offered.
124
+ config.spell_max = 5
125
+ end
126
+
127
+ # disable the bookmark control from displaying in gallery view
128
+ # Hyrax doesn't show any of the default controls on the list view, so
129
+ # this method is not called in that context.
130
+ def render_bookmarks_control?
131
+ false
132
+ end
133
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+ module DogBiscuitsHelper
3
+ # Return the label for publication status
4
+ #
5
+ # @param value [String]
6
+ # @return [String]
7
+ def publication_status(value)
8
+ if value.is_a? String
9
+ publication_status_label(status)
10
+ elsif value.is_a? Hash
11
+ value[:value].map { |status| publication_status_label(status) }
12
+ end
13
+ end
14
+
15
+ def publication_status_label(value)
16
+ service = AuthorityService::PublicationStatusesService.new
17
+ service.label(value)
18
+ rescue KeyError
19
+ value
20
+ end
21
+
22
+ def truncate_text_and_iconify_link(value)
23
+ if value.is_a? String
24
+ iconify_auto_link(truncate_text(value).to_s)
25
+ elsif value.is_a? Hash
26
+ value[:value] = value[:value].map { |text| truncate_text(text).to_s }
27
+ iconify_auto_link(value)
28
+ end
29
+ end
30
+
31
+ def truncate_text(text)
32
+ text.truncate_words(50, omission: ' ...')
33
+ end
34
+
35
+ def restricted?(term)
36
+ return false if DogBiscuits.config.restricted_properties_enabled == false
37
+ # evaluate restriction
38
+ (
39
+ DogBiscuits.config.restricted_properties.include?(term) &&
40
+ current_user.send("#{DogBiscuits.config.restricted_role}?") == true
41
+ ) || !DogBiscuits.config.restricted_properties.include?(term)
42
+ end
43
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class PackageIdsRenderer < Hyrax::Renderers::AttributeRenderer
4
+ # Render the bibilionumber as a link to the King's Fund Library Catalogue record
5
+ def attribute_value_to_html(value)
6
+ object = ActiveFedora::Base.find(value)
7
+
8
+ link_to(
9
+ "<span class='glyphicon'></span>#{object.first_title}".html_safe,
10
+ "/concern/#{object.class.to_s.pluralize.underscore}/#{value}"
11
+ )
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ class PackagedByIdsRenderer < Hyrax::Renderers::AttributeRenderer
4
+ # Render the bibilionumber as a link to the King's Fund Library Catalogue record
5
+ def attribute_value_to_html(value)
6
+ link_to(
7
+ "<span class='glyphicon'></span>#{Package.find(value).first_title}".html_safe,
8
+ "/concern/packages/#{value}"
9
+ )
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+ class PublicationStatusRenderer < Hyrax::Renderers::AttributeRenderer
3
+ include DogBiscuitsHelper
4
+
5
+ private
6
+
7
+ def li_value(value)
8
+ link_to(ERB::Util.h(publication_status_label(value)), search_path(value))
9
+ end
10
+
11
+ def search_path(value)
12
+ Rails.application.routes.url_helpers.search_catalog_path(
13
+ 'f([publication_status_sim[]])': ERB::Util.h(value), locale: I18n.locale
14
+ )
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FileAuthorityConcern
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ def include_current_value(value, _index, render_options, html_options)
7
+ unless value.blank? || active?(value)
8
+ html_options[:class] << ' force-select'
9
+ render_options += [[label(value), value]]
10
+ end
11
+ [render_options, html_options]
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LocalAuthorityConcern
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ def initialize
7
+ super
8
+ end
9
+
10
+ def include_current_label(value, _index, render_options, html_options)
11
+ if value.present?
12
+ html_options[:class] << ' force-select'
13
+ render_options += [[find_label_string(value).join, value]]
14
+ end
15
+ [render_options, html_options]
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+ # Answers queries about the cardinality of each field on the form.
3
+ class LocalFormMetadataService < Hyrax::FormMetadataService
4
+ # @param [Class] model_class the class of the object
5
+ # @param [Symbol] field the field we want to know about
6
+ # @return [Boolean] true if the passed in field is a multivalued field
7
+ def self.multiple?(model_class, field)
8
+ if DogBiscuits.config.singular_properties.include? field
9
+ false
10
+ else
11
+ # Inquire at the model level
12
+ super
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ <div class="base-terms">
2
+ <% f.object.primary_terms.each do |term| %>
3
+ <%= render_edit_field_partial(term, f: f) %>
4
+ <% end %>
5
+ </div>
6
+ <% if f.object.display_additional_fields? %>
7
+ <%= link_to t('hyrax.works.form.additional_fields'),
8
+ '#extended-terms',
9
+ class: 'btn btn-default additional-fields',
10
+ data: { toggle: 'collapse' },
11
+ role: "button",
12
+ 'aria-expanded'=> "false",
13
+ 'aria-controls'=> "extended-terms" %>
14
+ <div id="extended-terms" class='collapse'>
15
+ <%= render 'form_media', f: f %>
16
+ <% f.object.secondary_terms.each do |term| %>
17
+ <%# override partial from Hyrax, restricted_properties control %>
18
+ <% if restricted?(term) %>
19
+ <%= render_edit_field_partial(term, f: f) %>
20
+ <% end %>
21
+ <% end %>
22
+ </div>
23
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <% if f.object.multiple? key %>
2
+ <%= f.input :abstract, as: :multi_value, input_html: { rows: '14', type: 'textarea'}, required: f.object.required?(key) %>
3
+ <% else %>
4
+ <%= f.input :abstract, as: :text, input_html: { rows: '14' }, required: f.object.required?(key) %>
5
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <% # the hyrax version of this file messes singular field display %>
2
+ <% if f.object.class.multiple? key %>
3
+ <%= f.input key, as: :multi_value, input_html: { class: 'form-control' }, required: f.object.required?(key) %>
4
+ <% else %>
5
+ <%= f.input key, required: f.object.required?(key), input_html: { value: f.object.model[key].first } %>
6
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <%= f.input key,
2
+ as: :multi_value,
3
+ input_html: {
4
+ class: 'form-control',
5
+ data: { 'autocomplete-url' => "/authorities/search/crossref/funders",
6
+ 'autocomplete' => key }
7
+ },
8
+ required: f.object.required?(key) %>
@@ -0,0 +1,5 @@
1
+ <% if f.object.multiple? key %>
2
+ <%= f.input :note, as: :multi_value, input_html: { rows: '14', type: 'textarea'}, required: f.object.required?(key) %>
3
+ <% else %>
4
+ <%= f.input :note, as: :text, input_html: { rows: '14' }, required: f.object.required?(key) %>
5
+ <% end %>
@@ -0,0 +1,17 @@
1
+ <% if f.object.class.to_s.include? 'JournalArticle' %>
2
+ <%= f.input key,
3
+ as: :multi_value,
4
+ input_html: {
5
+ class: 'form-control',
6
+ data: {'autocomplete-url' => "/authorities/search/crossref/journals",
7
+ 'autocomplete' => key},
8
+ },
9
+ required: f.object.required?(key)
10
+ %>
11
+ <% else %>
12
+ <% if f.object.multiple? key %>
13
+ <%= f.input key, as: :multi_value, input_html: { class: 'form-control' }, required: f.object.required?(key) %>
14
+ <% else %>
15
+ <%= f.input key, required: f.object.required?(key) %>
16
+ <% end %>
17
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <% ps_service = AuthorityService::PublicationStatusesService.new %>
2
+ <%= f.input :publication_status,
3
+ collection: ps_service.select_active_options,
4
+ include_blank: true,
5
+ item_helper: ps_service.method(:include_current_value),
6
+ input_html: {class: 'form-control', multiple: false} %>
@@ -0,0 +1,5 @@
1
+ <% val = nil %>
2
+ <% val = ['Yes', true] if f.object.model[key].first == 'Yes' %>
3
+ <% val = ['No', false] if f.object.model[key].first == 'No' %>
4
+
5
+ <%= f.input key, as: :radio_buttons, collection: [ ['Yes', 'Yes'], ['No', 'No'] ], checked: val %>
@@ -0,0 +1,2 @@
1
+ <%= f.input :resource_type_general, as: :select, collection: AuthorityService::ResourceTypeGeneralsService.new.select_active_options,
2
+ input_html: { class: 'form-control', multiple: true } %>
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AuthorityService
4
+ # Object based
5
+ <% ::DogBiscuits::Terms.constants.each do |term| %>
6
+ class <%=term.to_s.gsub('Terms', '')%>Service < DogBiscuits::Terms::<%=term.to_s%>
7
+ include ::LocalAuthorityConcern
8
+ end
9
+ <% end %>
10
+ # File based
11
+ <% Dir.entries('config/authorities').each do |file|
12
+ next unless file.end_with?('.yml') %>
13
+ class <%=file.gsub('.yml', '').camelize%>Service < Hyrax::QaSelectService
14
+ include ::FileAuthorityConcern
15
+
16
+ def initialize
17
+ super('<%=file.gsub('.yml', '')%>')
18
+ end
19
+ end
20
+ <% end %>
21
+
22
+ # Table based
23
+ class TableBasedAuthorityService < DogBiscuits::TableBasedAuthorityExtended
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ terms:
2
+ - id: AO
3
+ term: Author's Original
4
+ active: true
5
+ - id: SMUR
6
+ term: Submitted Manuscript Under Review
7
+ active: true
8
+ - id: AM
9
+ term: Accepted Manuscript
10
+ active: true
11
+ - id: P
12
+ term: Proof
13
+ active: true
14
+ - id: VoR
15
+ term: Version of Record
16
+ active: true
17
+ - id: CVoR
18
+ term: Corrected Version of Record
19
+ active: true
20
+ - id: EVoR
21
+ term: Enhanced Version of Record
22
+ active: true
23
+ - id: NA
24
+ term: Not Applicable (or Unknown)
25
+ active: true
@@ -0,0 +1,19 @@
1
+ terms:
2
+ - id: published
3
+ term: Published
4
+ active: true
5
+ - id: earlyonline
6
+ term: E-Pub ahead of publication
7
+ active: true
8
+ - id: accepted
9
+ term: Accepted
10
+ active: true
11
+ - id: submitted
12
+ term: Submitted
13
+ active: true
14
+ - id: inpress
15
+ term: In Press
16
+ active: true
17
+ - id: unpublished
18
+ term: Unpublished
19
+ active: true