dog_biscuits 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.circleci/config.yml +115 -0
- data/.codeclimate.yml +52 -0
- data/.gitignore +24 -0
- data/.rspec +3 -0
- data/.rubocop.yml +45 -0
- data/.rubocop_todo.yml +92 -0
- data/.travis.yml +18 -0
- data/CODE_OF_CONDUCT.md +36 -0
- data/CONTRIBUTING.md +161 -0
- data/Gemfile +40 -0
- data/LICENSE +14 -0
- data/README.md +98 -0
- data/Rakefile +35 -0
- data/SUPPORT.md +5 -0
- data/bin/console +15 -0
- data/bin/setup +7 -0
- data/dog_biscuits.gemspec +38 -0
- data/lib/dog_biscuits.rb +352 -0
- data/lib/dog_biscuits/actors/apply_authorities.rb +32 -0
- data/lib/dog_biscuits/actors/singular_attributes.rb +17 -0
- data/lib/dog_biscuits/blacklight/commands.rb +118 -0
- data/lib/dog_biscuits/configuration.rb +506 -0
- data/lib/dog_biscuits/importers/authority.rb +65 -0
- data/lib/dog_biscuits/indexers/collection_indexer.rb +10 -0
- data/lib/dog_biscuits/indexers/concerns/indexes_common.rb +58 -0
- data/lib/dog_biscuits/indexers/conference_item_indexer.rb +17 -0
- data/lib/dog_biscuits/indexers/dataset_indexer.rb +25 -0
- data/lib/dog_biscuits/indexers/digital_archival_object_indexer.rb +19 -0
- data/lib/dog_biscuits/indexers/exam_paper_indexer.rb +10 -0
- data/lib/dog_biscuits/indexers/journal_article_indexer.rb +15 -0
- data/lib/dog_biscuits/indexers/package_indexer.rb +19 -0
- data/lib/dog_biscuits/indexers/published_work_indexer.rb +16 -0
- data/lib/dog_biscuits/indexers/thesis_indexer.rb +16 -0
- data/lib/dog_biscuits/models/authorities/agent.rb +78 -0
- data/lib/dog_biscuits/models/authorities/agents/group.rb +59 -0
- data/lib/dog_biscuits/models/authorities/agents/historic_person.rb +55 -0
- data/lib/dog_biscuits/models/authorities/agents/organisation.rb +56 -0
- data/lib/dog_biscuits/models/authorities/agents/person.rb +75 -0
- data/lib/dog_biscuits/models/authorities/concept.rb +91 -0
- data/lib/dog_biscuits/models/authorities/concept_scheme.rb +65 -0
- data/lib/dog_biscuits/models/authorities/event.rb +74 -0
- data/lib/dog_biscuits/models/authorities/place.rb +86 -0
- data/lib/dog_biscuits/models/authorities/project.rb +60 -0
- data/lib/dog_biscuits/models/authority.rb +42 -0
- data/lib/dog_biscuits/models/collections/collection.rb +32 -0
- data/lib/dog_biscuits/models/concerns/behaviours/pure_specific_behaviour.rb +17 -0
- data/lib/dog_biscuits/models/concerns/behaviours/validate_concept_related.rb +12 -0
- data/lib/dog_biscuits/models/concerns/behaviours/validate_concept_scheme.rb +16 -0
- data/lib/dog_biscuits/models/concerns/behaviours/validate_label.rb +12 -0
- data/lib/dog_biscuits/models/concerns/behaviours/validate_place.rb +12 -0
- data/lib/dog_biscuits/models/concerns/behaviours/work_behaviour.rb +21 -0
- data/lib/dog_biscuits/models/concerns/extended_solr_document.rb +147 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archivematica/archivematica.rb +73 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/access_provided_by.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/country_code.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/hub_dates.rb +17 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/archives_hub/maintenance_agency_code.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/awarding_institution.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/edition.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/identified_by.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/part.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/part_of.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/series.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibframe/subtitle.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibo/presented_at.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/bibo/publication_status.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/datacite/resource_type_general.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/abstract.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/access_rights.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/bibliographic_citation.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/contributor.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/creator.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_accepted.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_available.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_copyrighted.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_created.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/date_issued.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/description.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/extent.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/format.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/identifier.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/language.rb +17 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/publisher.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/resource_type.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/rights.rb +17 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/rights_holder.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/simple_versions.rb +18 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/source.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dc/subject.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/dwc/event_date.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/edm/edm_rights.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/fabio/date_collected.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/foaf/based_near.rb +12 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/foaf/foaf_name.rb +16 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/frapo/output_of.rb +18 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/geo/geo.rb +27 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/geonames/country_code.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/geonames/place_properties.rb +66 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/doi.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/isbn.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/official_url.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/lc_identifiers/orcid.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/for_indexing.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/former_identifier.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/generic_authority_terms.rb +22 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/generic_qualifier.rb +16 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/last_access.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/main_file.rb +24 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/module_code.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/number_of_downloads.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/packaged_by.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/readme_file.rb +26 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/local/requestor_email.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/mads/related_authority.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/advisor.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/editor.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/funder.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/marc_relators/place_of_publication.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/mods/date_valid.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/owl/owl_same_as.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/premis/has_restriction.rb +15 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/property_sets/person_properties.rb +92 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/pure/managing_organisation.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/pure/pure.rb +28 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/rdf_type.rb +12 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/rdfs_label.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/rdf/related_url.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/alternate_name.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/content_version.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/date_published.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/date_updated.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/department.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/end_date.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/issue_number.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/keyword.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/location.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/pagination.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/start_date.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/schema/volume_number.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_labels.rb +18 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_note.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/skos/skos_related.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/uketd/date_of_award.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/uketd/qualification.rb +17 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/date_submitted.rb +14 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/official_url.rb +13 -0
- data/lib/dog_biscuits/models/concerns/metadata_properties/ulcc/refereed.rb +13 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_labels.rb +9 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_metadata.rb +64 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/common/common_rights.rb +10 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/conference_item_metadata.rb +24 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/dataset_metadata.rb +36 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/digital_archival_object_metadata.rb +13 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/exam_paper_metadata.rb +14 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/journal_article_metadata.rb +24 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/package_metadata.rb +13 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/published_work_metadata.rb +26 -0
- data/lib/dog_biscuits/models/concerns/model_property_sets/thesis_metadata.rb +17 -0
- data/lib/dog_biscuits/models/filesets/file_set.rb +30 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/canvas.rb +15 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/contained_file.rb +13 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_date_certainty.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_editorial_note.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry.rb +19 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry_date.rb +10 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_entry_type.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_is_referenced_by.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_language.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_marginalium.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_note.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_as_written.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_descriptor.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_descriptor_as_written.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_note.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_related_person.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_related_place.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_person_role.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_as_written.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_note.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_role.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_place_type.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_related_agent.rb +20 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_related_place.rb +13 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_section_type.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_single_date.rb +10 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/db/db_subject.rb +5 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry.rb +59 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry/entry_date.rb +17 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry/related_agent.rb +62 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry/related_place.rb +28 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/entry/single_date.rb +19 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/folio.rb +42 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/image.rb +25 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/manifest.rb +15 -0
- data/lib/dog_biscuits/models/to_refactor_or_remove/register.rb +21 -0
- data/lib/dog_biscuits/models/work.rb +37 -0
- data/lib/dog_biscuits/models/works/conference_item.rb +37 -0
- data/lib/dog_biscuits/models/works/dataset.rb +42 -0
- data/lib/dog_biscuits/models/works/digital_archival_object.rb +28 -0
- data/lib/dog_biscuits/models/works/exam_paper.rb +33 -0
- data/lib/dog_biscuits/models/works/journal_article.rb +37 -0
- data/lib/dog_biscuits/models/works/package.rb +47 -0
- data/lib/dog_biscuits/models/works/published_work.rb +38 -0
- data/lib/dog_biscuits/models/works/thesis.rb +34 -0
- data/lib/dog_biscuits/property_mappings/property_mappings.rb +585 -0
- data/lib/dog_biscuits/railtie.rb +13 -0
- data/lib/dog_biscuits/services/table_based_authority_extended.rb +10 -0
- data/lib/dog_biscuits/services/terms.rb +57 -0
- data/lib/dog_biscuits/services/terms_service.rb +162 -0
- data/lib/dog_biscuits/solr/index_types.rb +33 -0
- data/lib/dog_biscuits/validators/concept_related_validator.rb +13 -0
- data/lib/dog_biscuits/validators/concept_scheme_member_validator.rb +10 -0
- data/lib/dog_biscuits/validators/label_validator.rb +55 -0
- data/lib/dog_biscuits/validators/place_validator.rb +10 -0
- data/lib/dog_biscuits/version.rb +5 -0
- data/lib/dog_biscuits/vocab/borthwick_registers.rb +321 -0
- data/lib/dog_biscuits/vocab/generic.rb +204 -0
- data/lib/dog_biscuits/vocab/oais_archivematica.rb +116 -0
- data/lib/dog_biscuits/vocab/pure_terms.rb +65 -0
- data/lib/dog_biscuits/vocab/uketd.rb +45 -0
- data/lib/dog_biscuits/vocab/ulcc_terms.rb +55 -0
- data/lib/generators/dog_biscuits/USAGE +50 -0
- data/lib/generators/dog_biscuits/authority_generator.rb +55 -0
- data/lib/generators/dog_biscuits/catalog_generator.rb +18 -0
- data/lib/generators/dog_biscuits/dates_generator.rb +98 -0
- data/lib/generators/dog_biscuits/generate_all_generator.rb +29 -0
- data/lib/generators/dog_biscuits/imagify_generator.rb +67 -0
- data/lib/generators/dog_biscuits/install_generator.rb +82 -0
- data/lib/generators/dog_biscuits/locales_generator.rb +20 -0
- data/lib/generators/dog_biscuits/schema_org_generator.rb +20 -0
- data/lib/generators/dog_biscuits/templates/_date_template.html.erb +7 -0
- data/lib/generators/dog_biscuits/templates/app/controllers/catalog_controller.rb +133 -0
- data/lib/generators/dog_biscuits/templates/app/helpers/dog_biscuits_helper.rb +43 -0
- data/lib/generators/dog_biscuits/templates/app/renderers/package_ids_renderer.rb +13 -0
- data/lib/generators/dog_biscuits/templates/app/renderers/packaged_by_ids_renderer.rb +11 -0
- data/lib/generators/dog_biscuits/templates/app/renderers/publication_status_renderer.rb +16 -0
- data/lib/generators/dog_biscuits/templates/app/services/concerns/file_authority_concern.rb +14 -0
- data/lib/generators/dog_biscuits/templates/app/services/concerns/local_authority_concern.rb +18 -0
- data/lib/generators/dog_biscuits/templates/app/services/local_form_metadata_service.rb +15 -0
- data/lib/generators/dog_biscuits/templates/app/views/hyrax/base/_form_metadata.html.erb +23 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_abstract.html.erb +5 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_default.html.erb +6 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_funder.html.erb +8 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_note.html.erb +5 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_part_of.html.erb +17 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_publication_status.html.erb +6 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_refereed.html.erb +5 -0
- data/lib/generators/dog_biscuits/templates/app/views/records/edit_fields/_resource_type_general.html.erb +2 -0
- data/lib/generators/dog_biscuits/templates/authority_service.rb.erb +25 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/content_versions.yml +25 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/publication_statuses.yml +19 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/qualification_levels.yml +13 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/qualification_names.yml +31 -0
- data/lib/generators/dog_biscuits/templates/config/authorities/resource_type_generals.yml +47 -0
- data/lib/generators/dog_biscuits/templates/config/dog_biscuits.yml +3 -0
- data/lib/generators/dog_biscuits/templates/config/initializers/catalog_search_builder_overrides.rb +18 -0
- data/lib/generators/dog_biscuits/templates/config/initializers/dog_biscuits.rb +144 -0
- data/lib/generators/dog_biscuits/templates/dog_biscuits.en.yml.erb +11 -0
- data/lib/generators/dog_biscuits/templates/schema_org.yml.erb +4 -0
- data/lib/generators/dog_biscuits/work/USAGE +35 -0
- data/lib/generators/dog_biscuits/work/templates/README +31 -0
- data/lib/generators/dog_biscuits/work/templates/_attribute_rows.html.erb +22 -0
- data/lib/generators/dog_biscuits/work/templates/actor.rb.erb +25 -0
- data/lib/generators/dog_biscuits/work/templates/form.rb.erb +18 -0
- data/lib/generators/dog_biscuits/work/templates/indexer.rb.erb +23 -0
- data/lib/generators/dog_biscuits/work/templates/model.rb.erb +16 -0
- data/lib/generators/dog_biscuits/work/templates/presenter.rb.erb +20 -0
- data/lib/generators/dog_biscuits/work/work_generator.rb +102 -0
- data/lib/tasks/authorities.rake +22 -0
- metadata +476 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
terms:
|
2
|
+
- id: masters-pg
|
3
|
+
term: Masters (Postgraduate)
|
4
|
+
active: true
|
5
|
+
- id: diploma-pg
|
6
|
+
term: Diploma (Postgraduate)
|
7
|
+
active: true
|
8
|
+
- id: bachelors-ug
|
9
|
+
term: Bachelors (Undergraduate)
|
10
|
+
active: true
|
11
|
+
- id: doctoral-pg
|
12
|
+
term: Doctoral (Postgraduate)
|
13
|
+
active: true
|
@@ -0,0 +1,31 @@
|
|
1
|
+
terms:
|
2
|
+
- id: ba
|
3
|
+
term: Bachelor of Arts (BA)
|
4
|
+
active: true
|
5
|
+
- id: bphil
|
6
|
+
term: Bachelor of Philosophy (BPhil)
|
7
|
+
active: true
|
8
|
+
- id: bsc
|
9
|
+
term: Bachelor of Science (BSc)
|
10
|
+
active: true
|
11
|
+
- id: ma
|
12
|
+
term: Master of Arts (MA)
|
13
|
+
active: true
|
14
|
+
- id: mres
|
15
|
+
term: Master of Arts by Research (MRes)
|
16
|
+
active: true
|
17
|
+
- id: mphil
|
18
|
+
term: Master of Philosophy (MPhil)
|
19
|
+
active: true
|
20
|
+
- id: mres
|
21
|
+
term: Master of Research (MRes)
|
22
|
+
active: true
|
23
|
+
- id: msc
|
24
|
+
term: Master of Science (MSc)
|
25
|
+
active: true
|
26
|
+
- id: mres-s
|
27
|
+
term: Master of Science by Research (MRes)
|
28
|
+
active: true
|
29
|
+
- id: phdip
|
30
|
+
term: Postgraduate Diploma (PGDip)
|
31
|
+
active: true
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# DataCite Resource Type General
|
2
|
+
terms:
|
3
|
+
- id: http://www.w3.org/ns/dcat#MovingImage
|
4
|
+
term: Audiovisual
|
5
|
+
active: true
|
6
|
+
- id: http://www.w3.org/ns/dcat#Collection
|
7
|
+
term: Collection
|
8
|
+
active: true
|
9
|
+
- id: https://schema.datacite.org/resource_type_general/DataPaper
|
10
|
+
term: Data Paper
|
11
|
+
active: true
|
12
|
+
- id: http://www.w3.org/ns/dcat#Dataset
|
13
|
+
term: Dataset
|
14
|
+
active: true
|
15
|
+
- id: http://www.w3.org/ns/dcat#Event
|
16
|
+
term: Event
|
17
|
+
active: true
|
18
|
+
- id: http://www.w3.org/ns/dcat#StillImage
|
19
|
+
term: Image
|
20
|
+
active: true
|
21
|
+
- id: http://www.w3.org/ns/dcat#InteractiveResource
|
22
|
+
term: Interactive Resource
|
23
|
+
active: true
|
24
|
+
- id: http://purl.org/spar/fabio/Model
|
25
|
+
term: Model
|
26
|
+
active: true
|
27
|
+
- id: http://www.w3.org/ns/dcat#PhysicalObject
|
28
|
+
term: Physical Object
|
29
|
+
active: true
|
30
|
+
- id: http://www.w3.org/ns/dcat#Service
|
31
|
+
term: Service
|
32
|
+
active: true
|
33
|
+
- id: http://www.w3.org/ns/dcat#Software
|
34
|
+
term: Software
|
35
|
+
active: true
|
36
|
+
- id: http://www.w3.org/ns/dcat#Sound
|
37
|
+
term: Sound
|
38
|
+
active: true
|
39
|
+
- id: http://www.w3.org/ns/dcat#Text
|
40
|
+
term: Text
|
41
|
+
active: true
|
42
|
+
- id: http://purl.org/spar/fabio/Workflow
|
43
|
+
term: Workflow
|
44
|
+
active: true
|
45
|
+
- id: http://purl.org/vocab/frbr/core#Endeavour
|
46
|
+
term: Other
|
47
|
+
active: true
|
data/lib/generators/dog_biscuits/templates/config/initializers/catalog_search_builder_overrides.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# ./config/initializers/catalog_search_builder_overrides.rb
|
3
|
+
# via https://github.com/samvera/hyrax/issues/707
|
4
|
+
|
5
|
+
# Unclear how to customize the Sufia::CatalogSearchBuilder, which
|
6
|
+
# we need to do for blacklight_range_limit.
|
7
|
+
# https://github.com/projecthydra-labs/hyrax/issues/707
|
8
|
+
|
9
|
+
# to_prepare used in case there's dev-mode class reloading of the
|
10
|
+
# thing we're patching. But we try to check to not do it multiple
|
11
|
+
# times in case there isn't.
|
12
|
+
Rails.application.config.to_prepare do
|
13
|
+
# would like to look up the class dynamically in case it changes,
|
14
|
+
# Sufia does this weird making this the only way, Hyrax is somewhat
|
15
|
+
# less weird.
|
16
|
+
klass = CatalogController.new.search_builder_class
|
17
|
+
klass.send(:include, BlacklightRangeLimit::RangeLimitBuilder) unless klass.ancestors.include? BlacklightRangeLimit::RangeLimitBuilder
|
18
|
+
end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# load dog_biscuits config
|
4
|
+
DOGBISCUITS = YAML.safe_load(File.read(Rails.root.join('config', 'dog_biscuits.yml'))).with_indifferent_access
|
5
|
+
# include Terms
|
6
|
+
|
7
|
+
# Configuration
|
8
|
+
DogBiscuits.config do |config|
|
9
|
+
# GLOBAL PROPERTIES
|
10
|
+
|
11
|
+
# Models to be used in the current application.
|
12
|
+
# Available models are:
|
13
|
+
# Add values in constantized form, eg. 'ConferenceItem'
|
14
|
+
# config.selected_models = []
|
15
|
+
|
16
|
+
# Use the blacklight date range gem to provide a single combined range filter
|
17
|
+
# default = false
|
18
|
+
# nb. run rails g dog_biscuits:dates_generator to install
|
19
|
+
# config.date_range = true
|
20
|
+
|
21
|
+
# Use the bootstrap date picker for date fields
|
22
|
+
# default = false
|
23
|
+
# nb. run rails g dog_biscuits:dates_generator to install
|
24
|
+
# config.date_picker = true
|
25
|
+
|
26
|
+
# Date fields on which to apply the date picker
|
27
|
+
# default is everything in the date_properties config
|
28
|
+
# Add values as symbols (eg. :date_created)
|
29
|
+
# config.date_picker_dates += [] # add to the list
|
30
|
+
# config.date_picker_dates -= [] # remove from the list
|
31
|
+
# config.date_picker_dates += [] # replace the current list
|
32
|
+
|
33
|
+
# Date fields to be indexed into the date_range facet:
|
34
|
+
# Add values as symbols (eg. :date_created)
|
35
|
+
# config.date_properties += [] # add to the list
|
36
|
+
# config.date_properties -= [] # remove from the list
|
37
|
+
# config.date_properties += [] # replace the current list
|
38
|
+
|
39
|
+
# Solr fields that will be used as facets in the search page.
|
40
|
+
# The ordering of the field names is the order of the display
|
41
|
+
# The properties must have been indexed as facetable
|
42
|
+
# Add values as symbols (eg. :creator)
|
43
|
+
# config.facet_properties += [] # add to the end of the current list
|
44
|
+
# config.facet_properties -= [] # remove from the current list
|
45
|
+
# config.facet_properties = [] # replace the current list
|
46
|
+
|
47
|
+
# Solr fields to be displayed in the index (search results) view
|
48
|
+
# The ordering of the field names is the order of the display
|
49
|
+
# Add values as symbols (eg. :creator)
|
50
|
+
# config.index_properties += [] # add to the end of the current list
|
51
|
+
# config.index_properties -= [] # remove from the current list
|
52
|
+
# config.index_properties = [] # replace the current list
|
53
|
+
|
54
|
+
# Solr fields to exclude from search
|
55
|
+
# Add values as symbols (eg. :creator)
|
56
|
+
# config.exclude_from_search_properties += [] # add to the end of the current list
|
57
|
+
# config.exclude_from_search_properties -= [] # remove from the current list
|
58
|
+
# config.exclude_from_search_properties = [] # replace the current list
|
59
|
+
|
60
|
+
# Fields in the form that should only accept a single value, ie. disable the 'add another' button.
|
61
|
+
# Add values as symbols (eg. :creator)
|
62
|
+
# config.singular_properties += [] # add to the list
|
63
|
+
# config.singular_properties -= [] # remove from the list
|
64
|
+
# config.singular_properties += [] # replace the current list
|
65
|
+
|
66
|
+
# Date properties
|
67
|
+
# These will be indexed into the date_picker if present
|
68
|
+
# config.date_properties += []
|
69
|
+
|
70
|
+
# Enable restricted properties in the form.
|
71
|
+
# If set to false, no restrictions will be applied
|
72
|
+
# Default is false
|
73
|
+
# config.restricted_properties_enabled = false
|
74
|
+
|
75
|
+
# Restrict the following properties in the form to the role specified in
|
76
|
+
# restricted_role
|
77
|
+
# Restrictions apply to 'below the fold' properties only, they are not
|
78
|
+
# applied to required properties
|
79
|
+
# Restrictions apply in the form only, properties are still visible in the
|
80
|
+
# show page
|
81
|
+
# Required current_user to respond to the role ( current_user.admin? )
|
82
|
+
# this is provided by the 'hydra-role-management' gem
|
83
|
+
# config.restricted_properties_enabled? must be set to true for this to take effect
|
84
|
+
# config.restricted_properties = []
|
85
|
+
|
86
|
+
# Role to use when restricting properties
|
87
|
+
# Default is :admin
|
88
|
+
# config.restricted_role = :admin
|
89
|
+
|
90
|
+
# Add values that aren't found in the following table-based authorities to be added on save.
|
91
|
+
# This only works in cases where the name of the authority is a pluralized form of
|
92
|
+
# the name of the property which uses it, eg. subjects/subject and languages/language
|
93
|
+
# Default is :subjects; add authority name as symbol, eg. :subjects
|
94
|
+
# config.authorities_add_new = []
|
95
|
+
|
96
|
+
# WORK PROPERTIES
|
97
|
+
|
98
|
+
# For each model, there are two configurations available.
|
99
|
+
# Both are set to defaults:
|
100
|
+
# _required fields defaults to the Hyrax default (title, creator, keyword, rights_statment)
|
101
|
+
# _properties defaults to all properties available to that model, alphabetized
|
102
|
+
# Example:
|
103
|
+
# config.conference_item_properties = []
|
104
|
+
# config.conference_item_properties_required = []
|
105
|
+
|
106
|
+
# PROPERTY MAPPINGS
|
107
|
+
# All properties should be included in property_mappings. This is used by generators for building
|
108
|
+
# schema_org, locales, catalog_controller and attribute_rows. Adding info here and using
|
109
|
+
# generators saves on a lot of manual editing.
|
110
|
+
#
|
111
|
+
# To add a new local property (new_property below), do:
|
112
|
+
# config.property_mappings[:new_property] = {}
|
113
|
+
#
|
114
|
+
# To change an existing property (existing_property), do:
|
115
|
+
# config.property_mappings[:existing_property] = {}
|
116
|
+
#
|
117
|
+
# The contents of a property_mappings key:
|
118
|
+
#
|
119
|
+
# config.property_mappings[:existing_property] =
|
120
|
+
# {
|
121
|
+
# # REQUIRED (if the property will appear in search results): a string formatted as per the example shown
|
122
|
+
# index: "('existing_property', :stored_searchable)",
|
123
|
+
#
|
124
|
+
# # OPTIONAL: label for use in the form, show page, search results and facet
|
125
|
+
# label: 'My Property Label',
|
126
|
+
#
|
127
|
+
# # OPTIONAL: help_text for use in the form
|
128
|
+
# help_text: 'Use this to describe something or other',
|
129
|
+
#
|
130
|
+
# # OPTIONAL: reference to a renderer used to format the display of the text in the show page
|
131
|
+
# # in this eg. `app/renderers/existing_property_attribute_renderer.rb` must exist
|
132
|
+
# render_as: 'existing_property',
|
133
|
+
#
|
134
|
+
# # OPTIONAL reference to a helper method used to format the display of the text in the search results
|
135
|
+
# # in this eg. the `existing_property_helper` method must exist in app/helpers, eg. in hyrax_helper.rb
|
136
|
+
# helper_method: 'existing_property_helper',
|
137
|
+
#
|
138
|
+
# # OPTIONAL mapping to a schema.org property to be used in embedded metadata
|
139
|
+
# schema_org: {
|
140
|
+
# # in this eg. we have decided that the closest property match in schema.org is contributor
|
141
|
+
# property: 'contributor'
|
142
|
+
# }
|
143
|
+
# }
|
144
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
en:
|
2
|
+
dog_biscuits:
|
3
|
+
labels:<% DogBiscuits.config.all_properties.sort.each {|prop| if DogBiscuits.config.property_mappings[prop] && DogBiscuits.config.property_mappings[prop][:label] %>
|
4
|
+
<%= prop %>: <%= DogBiscuits.config.property_mappings[prop][:label] %><% end } %>
|
5
|
+
simple_form:
|
6
|
+
hints:
|
7
|
+
defaults:<% DogBiscuits.config.all_properties.sort.each {|prop| if DogBiscuits.config.property_mappings[prop] && DogBiscuits.config.property_mappings[prop][:help_text] %>
|
8
|
+
<%= prop %>: <%= DogBiscuits.config.property_mappings[prop][:help_text] %><% end } %>
|
9
|
+
labels:
|
10
|
+
defaults:<% DogBiscuits.config.all_properties.sort.each {|prop| if DogBiscuits.config.property_mappings[prop] && DogBiscuits.config.property_mappings[prop][:label] %>
|
11
|
+
<%= prop %>: <%= DogBiscuits.config.property_mappings[prop][:label] %><% end } %>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
schema_org:<% DogBiscuits.config.all_properties.sort.each { | prop | if DogBiscuits.config.property_mappings[prop] && DogBiscuits.config.property_mappings[prop][:schema_org] %>
|
2
|
+
<%= prop.to_s %>:
|
3
|
+
<% DogBiscuits.config.property_mappings[prop][:schema_org].each { |k, v| %><%= k %>: <%= v %>
|
4
|
+
<% } end } %>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
Description:
|
2
|
+
The DogBiscuits Work generator makes the following changes to your application:
|
3
|
+
1. Checks that the requested Work is supported by DogBiscuits
|
4
|
+
2. Runs the Hyrax generator for the given model
|
5
|
+
3. Creates a new model, form, presenter and indexer to replace the Hyrax one
|
6
|
+
4. Creates views/hyrax/work_name_plural/_attribute_rows.html.erb
|
7
|
+
5. Updates the schema_org config, hyrax (en) locale using the configured properties for the work
|
8
|
+
|
9
|
+
Example:
|
10
|
+
rails generate dog_biscuits:work ConferenceItem
|
11
|
+
|
12
|
+
Making changes post-generation:
|
13
|
+
You can make most of the changes you'll need (property selection, order, required etc.)
|
14
|
+
in config/initializers/dog_biscuits.rb. You do not need to re-run the generator
|
15
|
+
for these changes to take effect.
|
16
|
+
If you have changed labels, help_text or schema_org mappings in the property_mappings config:
|
17
|
+
re-run the locales generator with `rails g dog_biscuits:locales`
|
18
|
+
re-run the schema_org generator with `rails g dog_biscuits:schema_org`
|
19
|
+
|
20
|
+
Adding local properties
|
21
|
+
Add the local property into the model (in app/models/)
|
22
|
+
Add an attribute into the solr_document (app/models/solr_document.rb)
|
23
|
+
Add the property to the config (config/initializers/dog_biscuits.rb)
|
24
|
+
|
25
|
+
Add custom helper methods or renderers (in app/helpers/ and app/renderers)
|
26
|
+
and add them to the property_mappings.
|
27
|
+
|
28
|
+
The generator can be re-run without overwriting the model and indexer files using the --skipmodel option
|
29
|
+
although, as noted above, you should not need to re-run the generator
|
30
|
+
|
31
|
+
Example:
|
32
|
+
rails generate dog_biscuits:work ConferenceItem --skipmodel
|
33
|
+
or (to update only labels, help_text and schema_org mappings)
|
34
|
+
rails g dog_biscuits:locales
|
35
|
+
rails g dog_biscuits:schema_org
|
@@ -0,0 +1,31 @@
|
|
1
|
+
===============================================================================
|
2
|
+
|
3
|
+
After creating your work you may wish to:
|
4
|
+
|
5
|
+
1. Customize the Work (the 'dog_biscuits way'):
|
6
|
+
|
7
|
+
in config/initializers/dog_biscuits.rb change the defaults:
|
8
|
+
|
9
|
+
fields to display in search results:
|
10
|
+
config.index_properties
|
11
|
+
|
12
|
+
fields to display as facets:
|
13
|
+
config.facet_properties
|
14
|
+
|
15
|
+
properties and order in the form and show page:
|
16
|
+
config.your_work_properties
|
17
|
+
|
18
|
+
required fields in the form
|
19
|
+
config.your_work_properties_required
|
20
|
+
|
21
|
+
Restart your application to see changes take effect.
|
22
|
+
|
23
|
+
2. Further modify the model, indexer, actor, form or presenter
|
24
|
+
|
25
|
+
Remember that if you re-run the Work generator, select 'n' if you have made local changes:
|
26
|
+
rails g dog_biscuits:work Work
|
27
|
+
|
28
|
+
You can ensure the model and indexer are not overwritten with the --skipmodel flag
|
29
|
+
rails g dog_biscuits:work Work --skipmodel
|
30
|
+
|
31
|
+
===============================================================================
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<% DogBiscuits.config.send("#{presenter.model_name.singular}_properties").each do | prop |
|
2
|
+
# skip title, description and license
|
3
|
+
next if [:title, :description, :license].include? prop
|
4
|
+
|
5
|
+
prop = "#{prop}_label".to_sym if presenter.model_name.to_s.constantize.controlled_properties.include? prop
|
6
|
+
|
7
|
+
if DogBiscuits.config.property_mappings[prop]
|
8
|
+
if DogBiscuits.config.property_mappings[prop][:render_as]
|
9
|
+
render = DogBiscuits.config.property_mappings[prop][:render_as]
|
10
|
+
elsif DogBiscuits.config.facet_properties.include? prop
|
11
|
+
render = 'faceted'
|
12
|
+
else
|
13
|
+
render = nil
|
14
|
+
end
|
15
|
+
end %>
|
16
|
+
<%= presenter.attribute_to_html(prop,
|
17
|
+
label: I18n.t("dog_biscuits.labels.#{prop.to_s}"),
|
18
|
+
render_as: render,
|
19
|
+
html_dl: true)
|
20
|
+
%>
|
21
|
+
<% end %>
|
22
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Generated via
|
2
|
+
# `rails generate hyrax:work <%= class_name %>`
|
3
|
+
module Hyrax
|
4
|
+
module Actors
|
5
|
+
class <%= class_name %>Actor < Hyrax::Actors::BaseActor
|
6
|
+
include DogBiscuits::Actors::ApplyAuthorities
|
7
|
+
include DogBiscuits::Actors::SingularAttributes
|
8
|
+
|
9
|
+
# @param [Hyrax::Actors::Environment] env
|
10
|
+
# @return [Boolean] true if create was successful
|
11
|
+
def create(env)
|
12
|
+
apply_authorities(env)
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
16
|
+
# @param [Hyrax::Actors::Environment] env
|
17
|
+
# @return [Boolean] true if update was successful
|
18
|
+
def update(env)
|
19
|
+
apply_authorities(env)
|
20
|
+
super
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# Generated via
|
2
|
+
# `rails generate dog_biscuits:work <%= class_name %>`
|
3
|
+
module Hyrax
|
4
|
+
class <%= class_name %>Form < Hyrax::Forms::WorkForm
|
5
|
+
self.model_class = <%= class_name %>
|
6
|
+
|
7
|
+
self.terms -= DogBiscuits.config.base_properties
|
8
|
+
self.terms += DogBiscuits.config.<%= file_name %>_properties
|
9
|
+
|
10
|
+
# Add any local properties here
|
11
|
+
self.terms += []
|
12
|
+
|
13
|
+
self.required_fields = DogBiscuits.config.<%= file_name %>_properties_required
|
14
|
+
|
15
|
+
# The service that determines the cardinality of each field
|
16
|
+
self.field_metadata_service = ::LocalFormMetadataService
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Generated via
|
2
|
+
# `rails generate dog_biscuits:work <%= class_name %>`
|
3
|
+
class <%= class_name %>Indexer < DogBiscuits::<%= class_name %>Indexer
|
4
|
+
# This indexes the default metadata. You can remove it if you want to
|
5
|
+
# provide your own metadata and indexing.
|
6
|
+
# include Hyrax::IndexesBasicMetadata
|
7
|
+
|
8
|
+
# Fetch remote labels for based_near. You can remove this if you don't want
|
9
|
+
# this behavior
|
10
|
+
# include Hyrax::IndexesLinkedMetadata
|
11
|
+
|
12
|
+
# Uncomment this block if you want to add custom indexing behavior:
|
13
|
+
# def generate_solr_document
|
14
|
+
# super.tap do |solr_doc|
|
15
|
+
# solr_doc['my_custom_field_ssim'] = object.my_custom_property
|
16
|
+
# end
|
17
|
+
# end
|
18
|
+
|
19
|
+
# Fetch remote labels for based_near. Copied from Hyrax::IndexesLinkedMetadata
|
20
|
+
def rdf_service
|
21
|
+
Hyrax::DeepIndexingService
|
22
|
+
end
|
23
|
+
end
|