dog_biscuits 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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