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,50 @@
1
+ Description:
2
+ Install Generator
3
+ This generator makes the following changes to your application:
4
+ 1. Adds dog_biscuits initializer and config
5
+ 2. Includes DogBiscuits::ExtendedSolrDocument in the SolrDocument
6
+ 3. Runs the authorities, locales and schema_org generators
7
+ 4. Adds various new files into app/
8
+ 5. Runs the dates generator if date_picker or date_range are true
9
+
10
+ Generate All Generator
11
+ This generator makes the following changes to your application:
12
+ 1. Runs the work generator for all selected models
13
+ 2. Runs the locales generator
14
+ 3. Runs the schema_org generator
15
+
16
+ Authority Generator:
17
+ This generator makes the following changes to your application:
18
+ 1. Copies authorities into config/authorities.
19
+ 2. Registers all subauthorities in config/intitializers/dog_biscuits.rb
20
+ 3. Sets up references to the authority concept_schemes in config/dog_biscuits.yml
21
+ 4. Copies the authority services into app/services/
22
+
23
+ Catalog Generator
24
+ This generator makes the following changes to your application:
25
+ 1. Adds a new app/controllers/catalog_controller.rb
26
+
27
+ Schema Org Generator
28
+ This generator makes the following changes to your application:
29
+ 1. Creates a schema_org.yml file in ./config
30
+ using information configured in property_mappings
31
+
32
+ Locales Generator
33
+ This generator makes the following changes to your application
34
+ 1. Creates a dog_biscuits.en.yml file in ./config/locales
35
+ using information configured in property_mappings
36
+
37
+ Imagify Generator
38
+ This generator can be run for an existing Model, or for All models (with All).
39
+ This generator makes the following changes to your application:
40
+ 1. If this is a Hyku application, enables UV / IIIF
41
+
42
+ Examples:
43
+ rails generate dog_biscuits:install
44
+ rails generate dog_biscuits:authority
45
+ rails generate dog_biscuits:schema_org
46
+ rails generate dog_biscuits:locales
47
+ rails generate dog_biscuits:catalog
48
+
49
+ rails generate dog_biscuits:attribute_rows All
50
+ rails generate dog_biscuits:attribute_rows ConferenceItem
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DogBiscuits::AuthorityGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ desc '
7
+ This generator makes the following changes to your application:
8
+ 1. Copies authorities into config/authorities.
9
+ 2. Registers all subauthorities in config/intitializers/dog_biscuits.rb
10
+ 3. Sets up references to the authority concept_schemes in config/dog_biscuits.yml
11
+ 4. Copies the authority services into app/services/
12
+ '
13
+
14
+ def copy_authorities
15
+ directory 'config/authorities', 'config/authorities'
16
+ end
17
+
18
+ def create_dog_biscuits
19
+ init_path = 'config/initializers/dog_biscuits.rb'
20
+ yml_path = 'config/dog_biscuits.yml'
21
+
22
+ copy_file 'config/dog_biscuits.yml', yml_path unless File.exist?(yml_path)
23
+ copy_file 'config/initializers/dog_biscuits.rb', init_path unless File.exist?(init_path)
24
+ end
25
+
26
+ def inject_into_dog_biscuits
27
+ init_path = 'config/initializers/dog_biscuits.rb'
28
+ yml_path = 'config/dog_biscuits.yml'
29
+
30
+ init_content = File.read(init_path)
31
+ yml_content = File.read(yml_path)
32
+
33
+ ::DogBiscuits::Terms.constants.each do |term|
34
+ t = term.to_s
35
+ term_string = "Qa::Authorities::Local.register_subauthority('#{t.gsub('Terms', '').underscore.downcase}', 'DogBiscuits::Terms::#{t}')"
36
+ unless init_content.include? term_string
37
+ inject_into_file init_path, after: '# include Terms' do
38
+ "\n#{term_string}"
39
+ end
40
+ end
41
+ next if yml_content.include? t
42
+ inject_into_file yml_path, after: '# authorities' do
43
+ "\n#{t.gsub('Terms', '').underscore.pluralize}: \"\""
44
+ end
45
+ end
46
+ end
47
+
48
+ def authority_service
49
+ template('authority_service.rb.erb', 'app/services/authority_service.rb')
50
+ end
51
+
52
+ def copy_concerns
53
+ directory 'app/services/concerns', 'app/services/concerns'
54
+ end
55
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DogBiscuits::CatalogGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ desc '
7
+ This generator makes the following changes to your application:
8
+ 1. Adds a new catalog_controller.rb
9
+ '
10
+
11
+ def banner
12
+ say_status("info", "Generating catalog_controller.rb", :blue)
13
+ end
14
+
15
+ def create_catalog
16
+ copy_file 'app/controllers/catalog_controller.rb', 'app/controllers/catalog_controller.rb'
17
+ end
18
+ end
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DogBiscuits::DatesGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ desc '
7
+ This generator .
8
+ 1. configures the date_picker, if config.date_picker is true;
9
+ it adds a form partial for all dates listed in config.date_picker_dates.
10
+ 2. Configures the date_range in blacklight, if config.date_range is true.
11
+ '
12
+
13
+ def banner
14
+ say_status("info", "Configuring the date_picker and date_range", :blue)
15
+ say_status("info", "date_picker is disabled and will not be installed", :blue) unless DogBiscuits.config.date_picker
16
+ say_status("info", "date_range is disabled and will not be installed", :blue) unless DogBiscuits.config.date_range
17
+ end
18
+
19
+ # rubocop:disable Style/GuardClause
20
+ def date_picker
21
+ if DogBiscuits.config.date_picker
22
+
23
+ gem 'bootstrap-datepicker-rails'
24
+
25
+ Bundler.with_clean_env do
26
+ run "bundle install"
27
+ end
28
+
29
+ # insert into application.css
30
+ css = '*= require bootstrap-datepicker'
31
+ unless File.read('app/assets/stylesheets/application.css').include? css
32
+ inject_into_file 'app/assets/stylesheets/application.css', before: "*= require_self" do
33
+ "#{css}\n"
34
+ end
35
+ end
36
+
37
+ # insert into application.js
38
+ js = '//= require bootstrap-datepicker'
39
+ unless File.read('app/assets/javascripts/application.js').include? js
40
+ inject_into_file 'app/assets/javascripts/application.js', after: "//= require_tree ." do
41
+ "\n #{js}"
42
+ end
43
+ end
44
+
45
+ DogBiscuits.config.date_picker_dates.each do |date|
46
+ copy_file '_date_template.html.erb', "app/views/records/edit_fields/_#{date}.html.erb"
47
+ end
48
+ end
49
+ end
50
+
51
+ def date_range
52
+ if DogBiscuits.config.date_range
53
+
54
+ gem "blacklight_range_limit"
55
+
56
+ Bundler.with_clean_env do
57
+ run "bundle install"
58
+ end
59
+ generate 'blacklight_range_limit:install'
60
+ copy_file 'config/initializers/catalog_search_builder_overrides.rb', 'config/initializers/catalog_search_builder_overrides.rb'
61
+ end
62
+ end
63
+
64
+
65
+ # In Hyku, the blacklight_range_limit javascript inserts jquery, this causes other js to fail cos of multiple loads
66
+ # (eg. add work modal doesn't work)
67
+ # To fix this, remove the standard insert from blacklight_range_limit to remove jquery
68
+ # and add the require statements individually
69
+ # do this earlier in the file because in production, the blacklight_range_limit js doesn't work if it's at the bottom
70
+ # This is a bit ugly and fragile.
71
+ def date_range_js
72
+ if File.exist?('config/initializers/version.rb') && File.read('config/initializers/version.rb').include?('Hyku')
73
+ unless File.read('app/assets/javascripts/application.js').include? "//= require 'blacklight_range_limit'\n// Moved the Hyku JS *above* the Hyrax JS"
74
+ rangejs = "// For blacklight_range_limit built-in JS, if you don't want it you don't need\n"
75
+ rangejs += "// this:\n"
76
+ rangejs += "//= require 'blacklight_range_limit'"
77
+
78
+ rangejs_altered = "// For blacklight_range_limit built-in JS, if you don't want it you don't need\n"
79
+ rangejs_altered += "// this:\n"
80
+ rangejs_altered += "// require 'blacklight_range_limit'\n"
81
+
82
+ rangejs_new = "\n//= require 'flot/jquery.flot.js'\n"
83
+ rangejs_new += "//= require 'flot/jquery.flot.selection.js'\n"
84
+ rangejs_new += "//= require 'bootstrap-slider'\n"
85
+ rangejs_new += "//= require 'blacklight_range_limit/range_limit_distro_facets.js'\n"
86
+ rangejs_new += "//= require 'blacklight_range_limit/range_limit_shared.js'\n"
87
+ rangejs_new += "//= require 'blacklight_range_limit/range_limit_slider.js'\n\n"
88
+
89
+ gsub_file 'app/assets/javascripts/application.js', rangejs, rangejs_altered
90
+
91
+ inject_into_file 'app/assets/javascripts/application.js', before: "// Moved the Hyku JS *above* the Hyrax JS" do
92
+ rangejs_new
93
+ end
94
+ end
95
+ end
96
+ end
97
+ # rubocop:enable Style/GuardClause
98
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DogBiscuits::GenerateAllGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ desc '
7
+ This generator makes the following changes to your application:
8
+ 1. Runs the work generator for selected models configured in `config/initializers/dog_biscuits.rb`
9
+ 2. Runs the catalog_controller generator
10
+ 3. Runs the locales generator
11
+ 4. Runs the schema_org generator
12
+ '
13
+
14
+ class_option :skipmodel, type: :boolean, default: false
15
+
16
+ def banner
17
+ say_status("info", "Re-generating catalog_controller, locales, attribute_rows and schema_org", :blue)
18
+ end
19
+
20
+ def generate_works
21
+ DogBiscuits.config.selected_models.each do |model|
22
+ if options[:skipmodel]
23
+ generate 'dog_biscuits:work', "#{model} --skipmodel -f"
24
+ else
25
+ generate 'dog_biscuits:work', "#{model} -f"
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators'
4
+ require 'rails/generators/model_helpers'
5
+
6
+ class DogBiscuits::ImagifyGenerator < Rails::Generators::NamedBase
7
+ include Rails::Generators::ModelHelpers
8
+ source_root File.expand_path('../templates', __FILE__)
9
+
10
+ class_option :skipmodel, type: :boolean, default: false
11
+
12
+ desc '
13
+ This generator makes the following changes to your application:
14
+ 1. If this is a Hyku application, enables UV / IIIF
15
+ '
16
+
17
+ def banner
18
+ say_status("info", "Enabling UV / IIIF support for #{class_name}", :blue)
19
+
20
+ if class_name == 'All'
21
+ @models = DogBiscuits.config.selected_models.map(&:underscore)
22
+ else
23
+ if DogBiscuits.config.selected_models.include? class_name
24
+ @models = [class_name.underscore]
25
+ else
26
+ say_status("error", "UNSUPPORTED MODEL. SUPPORTED MODELS ARE: #{DogBiscuits.config.available_models.collect { |m| m }.join(', ')}", :red)
27
+ exit 0
28
+ end
29
+ end
30
+ end
31
+
32
+ # If this is a Hyku app, enable IIIF / UV rendering
33
+ def image_ify_hyku
34
+ @models.each do |model|
35
+ next unless File.exist?('config/initializers/version.rb') && File.read('config/initializers/version.rb').include?('Hyku')
36
+ model_injection = " include HasRendering"
37
+ unless File.read("app/models/#{model}.rb").include? model_injection
38
+ inject_into_file "app/models/#{model}.rb", after: 'WorkBehavior' do
39
+ "\n#{model_injection}"
40
+ end
41
+ end
42
+
43
+ # add 'rendering_ids' to the form
44
+ form_injection = "self.terms += [:rendering_ids]"
45
+ form_injection += "\n\n def secondary_terms"
46
+ form_injection += "\n super - [:rendering_ids]"
47
+ form_injection += "\n end"
48
+ gsub_file "app/forms/hyrax/#{model}_form.rb", /self\.terms \+\= \[\]/, form_injection
49
+
50
+ # change from WorkShowPresenter to ManifestEnabledWorkShowPresente
51
+ presenter_injection = "Hyku::ManifestEnabledWorkShowPresenter"
52
+ gsub_file "app/presenters/hyrax/#{model}_presenter.rb", /Hyrax::WorkShowPresenter/, presenter_injection
53
+
54
+ # add Hyku::IIIFManifest to the controllers
55
+ controller_injection = "\n\n include Hyku::IIIFManifest"
56
+ unless File.read("app/controllers/hyrax/#{model.pluralize}_controller.rb").include? controller_injection
57
+ inject_into_file "app/controllers/hyrax/#{model.pluralize}_controller.rb", after: "::#{class_name}\n" do
58
+ controller_injection
59
+ end
60
+ end
61
+
62
+ # add all properties to the delegates block of Hyku::ManifestEnabledWorkShowPresenter
63
+ delegates = DogBiscuits.config.all_properties - DogBiscuits.config.base_properties
64
+ gsub_file 'app/presenters/hyku/manifest_enabled_work_show_presenter.rb', /delegate :extent/, "delegate :#{delegates.join(', :')}, :extent"
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DogBiscuits::InstallGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ desc '
7
+ This generator makes the following changes to your application:
8
+ 1. Adds dog_biscuits initializer and config
9
+ 2. Includes DogBiscuits::ExtendedSolrDocument in the SolrDocument
10
+ 3. Runs the authorities, locales and schema_org generators
11
+ 4. Adds various new files into app/
12
+ 5. Runs the dates generator if date_picker or date_range are true
13
+ '
14
+
15
+ def banner
16
+ say_status("info", "Generating DogBiscuits installation", :blue)
17
+ end
18
+
19
+ def create_dog_biscuits
20
+ init_path = 'config/initializers/dog_biscuits.rb'
21
+ yml_path = 'config/dog_biscuits.yml'
22
+
23
+ copy_file 'config/dog_biscuits.yml', yml_path unless File.exist?(yml_path) && !options[:force]
24
+ copy_file 'config/initializers/dog_biscuits.rb', init_path unless File.exist?(init_path) && !options[:force]
25
+ end
26
+
27
+ # copy all new files in app
28
+ def create_app
29
+ directory 'app', 'app'
30
+ end
31
+
32
+ def update_initializer
33
+ gsub_file 'config/initializers/dog_biscuits.rb', /# Available models are:/, "# Available models are: #{DogBiscuits.config.available_models.join(', ')}"
34
+ end
35
+
36
+ def update_solr_document
37
+ solr_doc = 'app/models/solr_document.rb'
38
+ unless solr_doc.include? 'DogBiscuits::ExtendedSolrDocument'
39
+ inject_into_file solr_doc, after: 'include Hyrax::SolrDocumentBehavior' do
40
+ "\n include DogBiscuits::ExtendedSolrDocument"
41
+ end
42
+ end
43
+ end
44
+
45
+ def create_authorities
46
+ generate 'dog_biscuits:authority'
47
+ end
48
+
49
+ def create_helpers
50
+ db_injection = ' include ::DogBiscuitsHelper'
51
+ unless File.read('app/helpers/hyrax_helper.rb').include? db_injection
52
+ inject_into_file 'app/helpers/hyrax_helper.rb', after: "Hyrax::HyraxHelperBehavior\n" do
53
+ "#{db_injection}\n"
54
+ end
55
+ end
56
+ end
57
+
58
+ # Make sure range is in place, if we're running install again, it could remove it
59
+ def generate_dates
60
+ if DogBiscuits.config.date_range || DogBiscuits.config.date_picker
61
+ generate('dog_biscuits:dates')
62
+ end
63
+ end
64
+
65
+ # Remove all blacklight labels from hyrax locales; we're going to re-add them below
66
+ def wipe_hyrax_locales
67
+ Dir.entries('config/locales').select { |file| file.start_with?('hyrax.') }.each do |locale|
68
+ gsub_file "config/locales/#{locale}", / index:(.*) show:/m, " index:\n show:"
69
+ gsub_file "config/locales/#{locale}", / facet:(.*) index:/m, " facet:\n index:"
70
+ gsub_file "config/locales/#{locale}", / show:(.*) hyrax:/m, " show:\n hyrax:"
71
+ end
72
+ end
73
+
74
+ def generate_locales
75
+ generate 'dog_biscuits:locales'
76
+ end
77
+
78
+ def create_schema_org
79
+ generate 'dog_biscuits:schema_org'
80
+ end
81
+
82
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DogBiscuits::LocalesGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ desc '
7
+ This generator can be run for an existing Model, or for All models (with All).
8
+ This generator makes the following changes to your application
9
+ where information is available in property_mappings:
10
+ 1. Injects labels and help_text into the en locales.
11
+ '
12
+
13
+ def banner
14
+ say_status("info", "Generating locales", :blue)
15
+ end
16
+
17
+ def create_dog_biscuits_locale
18
+ template('dog_biscuits.en.yml.erb', 'config/locales/dog_biscuits.en.yml')
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DogBiscuits::SchemaOrgGenerator < Rails::Generators::Base
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ desc '
7
+ This generator makes the following changes to your application:
8
+ 1. Creates a schema_org.yml file in ./config
9
+ 2. Injects schema_org metadata for all properties
10
+ where this information is configured in property_mappings
11
+ '
12
+
13
+ def banner
14
+ say_status("info", "Generating schema_org.yml", :blue)
15
+ end
16
+
17
+ def create_schema_org
18
+ template('schema_org.yml.erb', 'config/schema_org.yml')
19
+ end
20
+ end