hydra-head 4.0.3 → 4.1.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 (125) hide show
  1. data/.gitignore +1 -0
  2. data/HISTORY.textile +17 -2
  3. data/app/assets/stylesheets/hydra/html_refactor.css +3 -30
  4. data/app/assets/stylesheets/hydra/styles.css +6 -64
  5. data/app/controllers/downloads_controller.rb +1 -1
  6. data/app/controllers/hydra/assets_controller.rb +10 -1
  7. data/app/controllers/hydra/contributors_controller.rb +15 -1
  8. data/app/controllers/hydra/file_assets_controller.rb +1 -1
  9. data/app/controllers/hydra/permissions_controller.rb +14 -0
  10. data/app/helpers/hydra/article_metadata_helper_behavior.rb +14 -1
  11. data/app/helpers/hydra/downloads_helper_behavior.rb +6 -0
  12. data/app/helpers/hydra/facets_helper_behavior.rb +7 -0
  13. data/app/helpers/hydra/generic_content_objects_helper_behavior.rb +6 -0
  14. data/app/helpers/hydra/hydra_assets_helper_behavior.rb +10 -0
  15. data/app/helpers/hydra/hydra_fedora_metadata_helper_behavior.rb +31 -0
  16. data/app/helpers/hydra/hydra_helper_behavior.rb +18 -7
  17. data/app/helpers/hydra/hydra_uploader_helper_behavior.rb +5 -0
  18. data/app/helpers/hydra/inline_editable_metadata_helper_behavior.rb +6 -0
  19. data/app/helpers/hydra/javascript_includes_helper_behavior.rb +7 -0
  20. data/app/helpers/hydra/personalization_helper_behavior.rb +5 -0
  21. data/app/helpers/hydra/release_process_helper_behavior.rb +5 -0
  22. data/app/models/generic_content.rb +3 -0
  23. data/app/models/generic_image.rb +3 -0
  24. data/app/models/superuser.rb +4 -2
  25. data/app/models/user_attribute.rb +7 -2
  26. data/app/views/_add_assets_links.html.erb +4 -4
  27. data/app/views/catalog/_index_partials/_default.html.erb +2 -2
  28. data/app/views/catalog/show.html.erb +1 -1
  29. data/app/views/generic_contents/_index.html.erb +2 -2
  30. data/app/views/generic_images/_edit.html.erb +1 -1
  31. data/app/views/generic_images/_index.html.erb +2 -2
  32. data/app/views/hydra/file_assets/_file_assets_form.html.erb +1 -1
  33. data/app/views/hydra/file_assets/_index.html.erb +2 -2
  34. data/app/views/hydra/file_assets/_result.html.erb +1 -1
  35. data/app/views/layouts/hydra-head.html.erb +4 -1
  36. data/app/views/mods_assets/_index_list.html.erb +1 -1
  37. data/app/views/mods_assets/_index_table.html.erb +2 -2
  38. data/app/views/mods_assets/_show.html.erb +1 -1
  39. data/app/views/mods_assets/_show_file_assets.html.erb +1 -1
  40. data/config/jetty.yml +1 -1
  41. data/config/locales/hydra.en.yml +7 -0
  42. data/config/solr.yml +1 -1
  43. data/config/solr_mappings.yml +2 -2
  44. data/hydra-head.gemspec +5 -4
  45. data/lib/generators/hydra/head_generator.rb +6 -5
  46. data/lib/generators/hydra/templates/config/fedora.yml +1 -1
  47. data/lib/generators/hydra/templates/config/solr.yml +1 -1
  48. data/lib/hydra-head/version.rb +1 -1
  49. data/lib/hydra.rb +13 -11
  50. data/lib/hydra/assets.rb +5 -135
  51. data/lib/hydra/catalog.rb +6 -44
  52. data/lib/hydra/controller.rb +10 -27
  53. data/lib/hydra/controller/assets_controller_behavior.rb +142 -0
  54. data/lib/hydra/controller/catalog_controller_behavior.rb +56 -0
  55. data/lib/hydra/controller/controller_behavior.rb +59 -0
  56. data/lib/hydra/controller/file_assets_behavior.rb +142 -0
  57. data/lib/hydra/controller/repository_controller_behavior.rb +119 -0
  58. data/lib/hydra/controller/upload_behavior.rb +139 -0
  59. data/lib/hydra/file_assets.rb +3 -138
  60. data/lib/hydra/file_assets_helper.rb +6 -133
  61. data/lib/hydra/generic_content.rb +15 -0
  62. data/lib/hydra/generic_image.rb +10 -0
  63. data/lib/hydra/global_configurable.rb +46 -0
  64. data/lib/hydra/model_methods.rb +3 -3
  65. data/lib/hydra/model_mixins.rb +1 -1
  66. data/lib/hydra/model_mixins/solr_document_extension.rb +24 -0
  67. data/lib/hydra/repository_controller.rb +4 -95
  68. data/lib/hydra/ui/controller.rb +1 -2
  69. data/lib/hydra/user.rb +13 -1
  70. data/lib/railties/hydra-fixtures.rake +1 -1
  71. data/tasks/hydra-head.rake +2 -0
  72. data/{app/models → test_support/etc}/common_metadata_asset.rb +1 -2
  73. data/test_support/features/mods_asset_show.feature +1 -1
  74. data/test_support/features/support/env.rb +2 -0
  75. data/test_support/features/support/paths.rb +2 -0
  76. data/test_support/spec/controllers/catalog_controller_spec.rb +8 -0
  77. data/test_support/spec/controllers/catalog_controller_viewing_context_spec.rb +10 -1
  78. data/test_support/spec/controllers/catalog_valid_html_spec.rb +8 -0
  79. data/test_support/spec/controllers/contributors_controller_spec.rb +10 -0
  80. data/test_support/spec/controllers/file_assets_controller_spec.rb +15 -3
  81. data/test_support/spec/controllers/hydra-assets_controller_spec.rb +11 -1
  82. data/test_support/spec/controllers/hydra_controller_spec.rb +15 -4
  83. data/test_support/spec/controllers/permissions_controller_spec.rb +8 -0
  84. data/test_support/spec/helpers/access_controls_enforcement_spec.rb +1 -2
  85. data/test_support/spec/helpers/file_assets_helper_spec.rb +1 -1
  86. data/test_support/spec/helpers/generic_content_objects_helper_spec.rb +10 -1
  87. data/test_support/spec/helpers/hydra-repository_controller_spec.rb +1 -1
  88. data/test_support/spec/helpers/hydra_assets_helper_spec.rb +8 -0
  89. data/test_support/spec/helpers/hydra_fedora_metadata_helper_spec.rb +11 -0
  90. data/test_support/spec/helpers/hydra_helper_spec.rb +18 -0
  91. data/test_support/spec/helpers/hydra_model_methods_spec.rb +0 -12
  92. data/test_support/spec/helpers/hydra_uploader_helper_spec.rb +8 -0
  93. data/test_support/spec/helpers/javascript_includes_helper_spec.rb +9 -1
  94. data/test_support/spec/lib/catalog_spec.rb +10 -3
  95. data/test_support/spec/lib/global_configurable_spec.rb +98 -0
  96. data/test_support/spec/lib/model_methods_spec.rb +29 -0
  97. data/test_support/spec/models/generic_content_spec.rb +11 -0
  98. data/test_support/spec/models/generic_image_spec.rb +15 -0
  99. data/test_support/spec/models/user_spec.rb +25 -0
  100. metadata +39 -37
  101. data/app/models/ability.rb +0 -5
  102. data/app/models/hydra/ability.rb +0 -137
  103. data/app/models/hydra/datastream/common_mods_index_methods.rb +0 -47
  104. data/app/models/hydra/datastream/mods_article.rb +0 -530
  105. data/app/models/hydra/datastream/mods_dataset.rb +0 -173
  106. data/app/models/hydra/datastream/mods_generic_content.rb +0 -498
  107. data/app/models/hydra/datastream/mods_image.rb +0 -497
  108. data/app/models/hydra/datastream/rights_metadata.rb +0 -191
  109. data/app/models/hydra/role_mapper_behavior.rb +0 -33
  110. data/app/models/role_mapper.rb +0 -6
  111. data/lib/hydra/access_controls_enforcement.rb +0 -237
  112. data/lib/hydra/access_controls_evaluation.rb +0 -38
  113. data/lib/hydra/common_mods_index_methods.rb +0 -46
  114. data/lib/hydra/model_mixins/mods_object.rb +0 -17
  115. data/lib/hydra/model_mixins/rights_metadata.rb +0 -357
  116. data/lib/hydra/mods_article.rb +0 -535
  117. data/lib/hydra/mods_dataset.rb +0 -177
  118. data/lib/hydra/mods_generic_content.rb +0 -500
  119. data/lib/hydra/mods_image.rb +0 -500
  120. data/lib/uva/mods_index_methods.rb +0 -30
  121. data/test_support/spec/lib/common_mods_index_methods_spec.rb +0 -26
  122. data/test_support/spec/models/ability_spec.rb +0 -40
  123. data/test_support/spec/models/hydra_rights_metadata_spec.rb +0 -175
  124. data/test_support/spec/models/role_mapper_spec.rb +0 -22
  125. data/test_support/spec/unit/rights_metadata_spec.rb +0 -80
@@ -1,177 +0,0 @@
1
- # @deprecated -- this will be removed in 5.x release
2
- require "uva/mods_index_methods"
3
- require 'deprecation'
4
- module Hydra
5
- extend Deprecation
6
-
7
- self.deprecation_horizon = 'hydra-head 5.x'
8
-
9
- class ModsDataset < ActiveFedora::NokogiriDatastream
10
- include Hydra::CommonModsIndexMethods
11
-
12
- def initialize(digital_object, dsid, options={})
13
- Deprecation.warn(Hydra::ModsDataset, "ModsDataset is deprecated and will be removed in release 5 or 6. It has been moved into wiki documentation here: https://github.com/projecthydra/hydra-head/wiki/Models---Some-Examples")
14
- super
15
- end
16
-
17
- set_terminology do |t|
18
- t.root(:path=>"mods", :xmlns=>"http://www.loc.gov/mods/v3", :schema=>"http://www.loc.gov/standards/mods/v3/mods-3-2.xsd")
19
-
20
- # Common MODS info -- might eventually be put into its own shared terminology.
21
-
22
- t.title_info(:path=>"titleInfo") {
23
- t.main_title(:path=>"title", :label=>"title")
24
- t.language(:path=>{:attribute=>"lang"})
25
- }
26
- t.title(:proxy=>[:title_info, :main_title])
27
- t.abstract
28
- t.subject {
29
- t.topic(:index_as=>[:facetable])
30
- }
31
- t.topic_tag(:path=>"subject", :default_content_path=>"topic")
32
- t.identifier {
33
- t.type_(:path=>{:attribute=>"type"})
34
- }
35
- # This is a mods:name. The underscore is purely to avoid namespace conflicts.
36
- t.name_ {
37
- t.namePart(:index_as=>[:searchable, :displayable, :facetable, :sortable], :required=>:true, :type=>:string, :label=>"generic name")
38
- t.affiliation
39
- t.institution(:path=>"affiliation")
40
- t.displayForm
41
- t.role(:ref=>[:role])
42
- t.description
43
- t.date(:path=>"namePart", :attributes=>{:type=>"date"})
44
- t.last_name(:path=>"namePart", :attributes=>{:type=>"family"})
45
- t.first_name(:path=>"namePart", :attributes=>{:type=>"given"}, :label=>"first name")
46
- t.terms_of_address(:path=>"namePart", :attributes=>{:type=>"termsOfAddress"})
47
- }
48
- # lookup :person, :first_name
49
- t.person(:ref=>:name, :attributes=>{:type=>"personal"})
50
- t.organization(:ref=>:name, :attributes=>{:type=>"institutional"})
51
- t.conference(:ref=>:name, :attributes=>{:type=>"conference"})
52
-
53
- t.role {
54
- t.text(:path=>"roleTerm",:attributes=>{:type=>"text"})
55
- t.code(:path=>"roleTerm",:attributes=>{:type=>"code"})
56
- }
57
-
58
- # Dataset-specific Terms
59
-
60
- # In datasets, we're calling the abstract "methodology"
61
- t.methodology(:path=>"abstract")
62
-
63
- # Most of these are forcing non-bibliographic information into mods by using the note field pretty freely
64
- t.note
65
- t.gps(:index_as=>[:facetable],:path=>"note",:attributes=>{:type=>"location"})
66
- t.timespan_start(:path=>"note",:attributes=>{:type=>"timespan-start"})
67
- t.timespan_end(:path=>"note",:attributes=>{:type=>"timespan-end"})
68
- t.region(:index_as=>[:facetable],:path=>"note",:attributes=>{:type=>"region"})
69
- t.site(:index_as=>[:facetable],:path=>"note",:attributes=>{:type=>"site"})
70
- t.ecosystem(:index_as=>[:facetable],:path=>"note",:attributes=>{:type=>"ecosystem"})
71
- end
72
-
73
- # It would be nice if we could declare properties with refined info like this
74
- # accessor :grant_agency, :relative_xpath=>'oxns:mods/oxns:name[contains(oxns:role/oxns:roleTerm, "Funder")]'
75
-
76
- # Generates an empty Mods Article (used when you call ModsArticle.new without passing in existing xml)
77
- def self.xml_template
78
- builder = Nokogiri::XML::Builder.new do |xml|
79
- xml.mods(:version=>"3.3", "xmlns:xlink"=>"http://www.w3.org/1999/xlink",
80
- "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance",
81
- "xmlns"=>"http://www.loc.gov/mods/v3",
82
- "xsi:schemaLocation"=>"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-3.xsd") {
83
- xml.titleInfo(:lang=>"") {
84
- xml.title
85
- }
86
- xml.name(:type=>"personal") {
87
- xml.namePart(:type=>"given")
88
- xml.namePart(:type=>"family")
89
- xml.affiliation
90
- xml.role {
91
- xml.roleTerm(:authority=>"marcrelator", :type=>"text")
92
- }
93
- }
94
- xml.name(:type=>"corporate") {
95
- xml.namePart
96
- xml.affiliation
97
- xml.role {
98
- xml.roleTerm("Funder", :authority=>"marcrelator", :type=>"text")
99
- }
100
- }
101
- xml.typeOfResource "software, multimedia"
102
- xml.genre("dataset", :authority=>"dct")
103
- xml.language {
104
- xml.languageTerm("eng", :authority=>"iso639-2b", :type=>"code")
105
- }
106
- xml.abstract
107
- xml.subject {
108
- xml.topic
109
- }
110
- xml.note(:type=>"completeness")
111
- xml.note(:type=>"interval")
112
- xml.note(:type=>"datatype")
113
- xml.note(:type=>"timespan-start")
114
- xml.note(:type=>"timespan-end")
115
- xml.note(:type=>"location")
116
- xml.note(:type=>"grant")
117
- xml.note(:type=>"data quality")
118
- xml.note(:type=>"contact-name")
119
- xml.note(:type=>"contact-email")
120
- }
121
- end
122
- return builder.doc
123
- end
124
-
125
- def self.person_relator_terms
126
- {"anl" => "Analyst",
127
- "aut" => "Author",
128
- "clb" => "Collaborator",
129
- "com" => "Compiler",
130
- "cre" => "Creator",
131
- "ctb" => "Contributor",
132
- "dpt" => "Depositor",
133
- "dtc" => "Data contributor ",
134
- "dtm" => "Data manager ",
135
- "edt" => "Editor",
136
- "lbr" => "Laboratory ",
137
- "ldr" => "Laboratory director ",
138
- "pdr" => "Project director",
139
- "prg" => "Programmer",
140
- "res" => "Researcher",
141
- "rth" => "Research team head",
142
- "rtm" => "Research team member"
143
- }
144
- end
145
-
146
- def self.completed_choices
147
- ["Time Series",
148
- "Snapshot / Sample"
149
- ]
150
- end
151
-
152
-
153
- def self.interval_choices
154
- ["Monthly",
155
- "Quarterly",
156
- "Semi-annually",
157
- "Annually",
158
- "Irregular"
159
- ]
160
- end
161
-
162
- def self.data_type_choices
163
- ["transect","observation","data logging","remote sensing"]
164
- end
165
-
166
- def self.valid_child_types
167
- ["data", "supporting file", "profile", "lorem ipsum", "dolor"]
168
- end
169
- def to_solr(solr_doc=Hash.new)
170
- super(solr_doc)
171
- solr_doc.merge!(extract_person_full_names)
172
- solr_doc.merge!(extract_person_organizations)
173
- solr_doc.merge!(:object_type_facet => "Dataset")
174
- solr_doc
175
- end
176
- end
177
- end
@@ -1,500 +0,0 @@
1
- module Hydra
2
- # @deprecated -- this will be removed in 5.x releaes
3
- class ModsGenericContent < ActiveFedora::NokogiriDatastream
4
- include Hydra::CommonModsIndexMethods
5
-
6
- def initialize(digital_object, dsid, options={})
7
- ActiveSupport::Deprecation.warn("Hydra::ModsGenericContent has been deprecated. Use Hydra::Datastream::ModsGenericContent instead")
8
- super
9
- end
10
-
11
- set_terminology do |t|
12
- t.root(:path=>"mods", :xmlns=>"http://www.loc.gov/mods/v3", :schema=>"http://www.loc.gov/standards/mods/v3/mods-3-2.xsd")
13
-
14
- t.title_info(:path=>"titleInfo") {
15
- t.main_title(:path=>"title", :label=>"title")
16
- t.language(:index_as=>[:facetable],:path=>{:attribute=>"lang"})
17
- }
18
-
19
- t.language{
20
- t.lang_code(:index_as=>[:facetable], :path=>"languageTerm", :attributes=>{:type=>"code"})
21
- }
22
- t.abstract
23
- t.subject {
24
- t.topic
25
- }
26
- t.topic_tag(:index_as=>[:facetable],:path=>"subject", :default_content_path=>"topic")
27
-
28
- # mods:physicaldescription/mods:extent - used for storing file size in human-readable form.
29
- t.physical_description(:path => "physicalDescription") {
30
- t.extent( :path => "extent")
31
- }
32
-
33
- # This is a mods:name. The underscore is purely to avoid namespace conflicts.
34
- t.name_ {
35
- # this is a namepart
36
- t.namePart(:type=>:string, :label=>"generic name")
37
- # affiliations are great
38
- t.affiliation
39
- t.institution(:path=>"affiliation", :index_as=>[:facetable], :label=>"organization")
40
- t.displayForm
41
- t.role(:ref=>[:role])
42
- t.description
43
- t.date(:path=>"namePart", :attributes=>{:type=>"date"})
44
- t.last_name(:path=>"namePart", :attributes=>{:type=>"family"})
45
- t.first_name(:path=>"namePart", :attributes=>{:type=>"given"}, :label=>"first name")
46
- t.terms_of_address(:path=>"namePart", :attributes=>{:type=>"termsOfAddress"})
47
- }
48
- # lookup :person, :first_name
49
- t.person(:ref=>:name, :attributes=>{:type=>"personal"}, :index_as=>[:facetable])
50
- t.organization(:ref=>:name, :attributes=>{:type=>"corporate"}, :index_as=>[:facetable])
51
- t.conference(:ref=>:name, :attributes=>{:type=>"conference"}, :index_as=>[:facetable])
52
- t.role {
53
- t.text(:path=>"roleTerm",:attributes=>{:type=>"text"})
54
- t.code(:path=>"roleTerm",:attributes=>{:type=>"code"})
55
- }
56
- t.journal(:path=>'relatedItem', :attributes=>{:type=>"host"}) {
57
- t.title_info(:index_as=>[:facetable],:ref=>[:title_info])
58
- t.origin_info(:path=>"originInfo") {
59
- t.publisher
60
- t.date_issued(:path=>"dateIssued")
61
- }
62
- t.issn(:path=>"identifier", :attributes=>{:type=>"issn"})
63
- t.issue(:path=>"part") {
64
- t.volume(:path=>"detail", :attributes=>{:type=>"volume"}, :default_content_path=>"number")
65
- t.level(:path=>"detail", :attributes=>{:type=>"number"}, :default_content_path=>"number")
66
- t.extent
67
- t.pages(:path=>"extent", :attributes=>{:unit=>"pages"}) {
68
- t.start
69
- t.end
70
- }
71
- t.start_page(:proxy=>[:pages, :start])
72
- t.end_page(:proxy=>[:pages, :end])
73
- t.publication_date(:path=>"date")
74
- }
75
- }
76
- end
77
-
78
- # accessor :title, :term=>[:mods, :title_info, :main_title]
79
-
80
- # Generates an empty Mods Generic Content (used when you call ModsGenericContent.new without passing in existing xml)
81
- def self.xml_template
82
- builder = Nokogiri::XML::Builder.new do |xml|
83
- xml.mods(:version=>"3.3", "xmlns:xlink"=>"http://www.w3.org/1999/xlink",
84
- "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance",
85
- "xmlns"=>"http://www.loc.gov/mods/v3",
86
- "xsi:schemaLocation"=>"http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-3.xsd") {
87
- xml.titleInfo(:lang=>"") {
88
- xml.title
89
- }
90
- xml.name(:type=>"personal") {
91
- xml.namePart(:type=>"given")
92
- xml.namePart(:type=>"family")
93
- xml.affiliation
94
- xml.role {
95
- xml.roleTerm(:authority=>"marcrelator", :type=>"text")
96
- }
97
- }
98
- xml.typeOfResource
99
- xml.genre(:authority=>"marcgt")
100
- xml.language {
101
- xml.languageTerm(:authority=>"iso639-2b", :type=>"code")
102
- }
103
- # mods:physicaldescription/mods:extent - used for storing file size in human-readable form.
104
- xml.physicalDescription {
105
- xml.extent
106
- }
107
- xml.abstract
108
- xml.subject {
109
- xml.topic
110
- }
111
- xml.relatedItem(:type=>"host") {
112
- xml.titleInfo {
113
- xml.title
114
- }
115
- xml.identifier(:type=>"issn")
116
- xml.originInfo {
117
- xml.publisher
118
- xml.dateIssued
119
- }
120
- xml.part {
121
- xml.detail(:type=>"volume") {
122
- xml.number
123
- }
124
- xml.detail(:type=>"number") {
125
- xml.number
126
- }
127
- xml.extent(:unit=>"pages") {
128
- xml.start
129
- xml.end
130
- }
131
- xml.date
132
- }
133
- }
134
- xml.location {
135
- xml.url
136
- }
137
- }
138
- end
139
- return builder.doc
140
- end
141
-
142
- # Generates a new Person node
143
- def self.person_template
144
- builder = Nokogiri::XML::Builder.new do |xml|
145
- xml.name(:type=>"personal") {
146
- xml.namePart(:type=>"family")
147
- xml.namePart(:type=>"given")
148
- xml.affiliation
149
- xml.role {
150
- xml.roleTerm(:type=>"text")
151
- }
152
- }
153
- end
154
- return builder.doc.root
155
- end
156
-
157
- def self.full_name_template
158
- builder = Nokogiri::XML::Builder.new do |xml|
159
- xml.full_name(:type => "personal")
160
- end
161
- return builder.doc.root
162
- end
163
-
164
- # Generates a new Organization node
165
- # Uses mods:name[@type="corporate"]
166
- def self.organization_template
167
- builder = Nokogiri::XML::Builder.new do |xml|
168
- xml.name(:type=>"corporate") {
169
- xml.namePart
170
- xml.role {
171
- xml.roleTerm(:authority=>"marcrelator", :type=>"text")
172
- }
173
- }
174
- end
175
- return builder.doc.root
176
- end
177
-
178
- # Generates a new Conference node
179
- def self.conference_template
180
- builder = Nokogiri::XML::Builder.new do |xml|
181
- xml.name(:type=>"conference") {
182
- xml.namePart
183
- xml.role {
184
- xml.roleTerm(:authority=>"marcrelator", :type=>"text")
185
- }
186
- }
187
- end
188
- return builder.doc.root
189
- end
190
-
191
- # Inserts a new contributor (mods:name) into the mods document
192
- # creates contributors of type :person, :organization, or :conference
193
- def insert_contributor(type, opts={})
194
- case type.to_sym
195
- when :person
196
- node = Hydra::ModsGenericContent.person_template
197
- nodeset = self.find_by_terms(:person)
198
- when :organization
199
- node = Hydra::ModsGenericContent.organization_template
200
- nodeset = self.find_by_terms(:organization)
201
- when :conference
202
- node = Hydra::ModsGenericContent.conference_template
203
- nodeset = self.find_by_terms(:conference)
204
- else
205
- ActiveFedora.logger.warn("#{type} is not a valid argument for Hydra::ModsGenericContent.insert_contributor")
206
- node = nil
207
- index = nil
208
- end
209
-
210
- unless nodeset.nil?
211
- if nodeset.empty?
212
- self.ng_xml.root.add_child(node)
213
- index = 0
214
- else
215
- nodeset.after(node)
216
- index = nodeset.length
217
- end
218
- self.dirty = true
219
- end
220
-
221
- return node, index
222
- end
223
-
224
- # Remove the contributor entry identified by @contributor_type and @index
225
- def remove_contributor(contributor_type, index)
226
- self.find_by_terms( {contributor_type.to_sym => index.to_i} ).first.remove
227
- self.dirty = true
228
- end
229
-
230
- def self.common_relator_terms
231
- {"aut" => "Author",
232
- "clb" => "Collaborator",
233
- "com" => "Compiler",
234
- "ctb" => "Contributor",
235
- "cre" => "Creator",
236
- "edt" => "Editor",
237
- "ill" => "Illustrator",
238
- "oth" => "Other",
239
- "trl" => "Translator",
240
- }
241
- end
242
-
243
- def self.person_relator_terms
244
- {"aut" => "Author",
245
- "clb" => "Collaborator",
246
- "com" => "Compiler",
247
- "cre" => "Creator",
248
- "ctb" => "Contributor",
249
- "edt" => "Editor",
250
- "ill" => "Illustrator",
251
- "res" => "Researcher",
252
- "rth" => "Research team head",
253
- "rtm" => "Research team member",
254
- "trl" => "Translator"
255
- }
256
- end
257
-
258
- def self.conference_relator_terms
259
- {
260
- "hst" => "Host"
261
- }
262
- end
263
-
264
- def self.organization_relator_terms
265
- {
266
- "fnd" => "Funder",
267
- "hst" => "Host"
268
- }
269
- end
270
-
271
- def self.dc_relator_terms
272
- {"acp" => "Art copyist",
273
- "act" => "Actor",
274
- "adp" => "Adapter",
275
- "aft" => "Author of afterword, colophon, etc.",
276
- "anl" => "Analyst",
277
- "anm" => "Animator",
278
- "ann" => "Annotator",
279
- "ant" => "Bibliographic antecedent",
280
- "app" => "Applicant",
281
- "aqt" => "Author in quotations or text abstracts",
282
- "arc" => "Architect",
283
- "ard" => "Artistic director ",
284
- "arr" => "Arranger",
285
- "art" => "Artist",
286
- "asg" => "Assignee",
287
- "asn" => "Associated name",
288
- "att" => "Attributed name",
289
- "auc" => "Auctioneer",
290
- "aud" => "Author of dialog",
291
- "aui" => "Author of introduction",
292
- "aus" => "Author of screenplay",
293
- "aut" => "Author",
294
- "bdd" => "Binding designer",
295
- "bjd" => "Bookjacket designer",
296
- "bkd" => "Book designer",
297
- "bkp" => "Book producer",
298
- "bnd" => "Binder",
299
- "bpd" => "Bookplate designer",
300
- "bsl" => "Bookseller",
301
- "ccp" => "Conceptor",
302
- "chr" => "Choreographer",
303
- "clb" => "Collaborator",
304
- "cli" => "Client",
305
- "cll" => "Calligrapher",
306
- "clt" => "Collotyper",
307
- "cmm" => "Commentator",
308
- "cmp" => "Composer",
309
- "cmt" => "Compositor",
310
- "cng" => "Cinematographer",
311
- "cnd" => "Conductor",
312
- "cns" => "Censor",
313
- "coe" => "Contestant -appellee",
314
- "col" => "Collector",
315
- "com" => "Compiler",
316
- "cos" => "Contestant",
317
- "cot" => "Contestant -appellant",
318
- "cov" => "Cover designer",
319
- "cpc" => "Copyright claimant",
320
- "cpe" => "Complainant-appellee",
321
- "cph" => "Copyright holder",
322
- "cpl" => "Complainant",
323
- "cpt" => "Complainant-appellant",
324
- "cre" => "Creator",
325
- "crp" => "Correspondent",
326
- "crr" => "Corrector",
327
- "csl" => "Consultant",
328
- "csp" => "Consultant to a project",
329
- "cst" => "Costume designer",
330
- "ctb" => "Contributor",
331
- "cte" => "Contestee-appellee",
332
- "ctg" => "Cartographer",
333
- "ctr" => "Contractor",
334
- "cts" => "Contestee",
335
- "ctt" => "Contestee-appellant",
336
- "cur" => "Curator",
337
- "cwt" => "Commentator for written text",
338
- "dfd" => "Defendant",
339
- "dfe" => "Defendant-appellee",
340
- "dft" => "Defendant-appellant",
341
- "dgg" => "Degree grantor",
342
- "dis" => "Dissertant",
343
- "dln" => "Delineator",
344
- "dnc" => "Dancer",
345
- "dnr" => "Donor",
346
- "dpc" => "Depicted",
347
- "dpt" => "Depositor",
348
- "drm" => "Draftsman",
349
- "drt" => "Director",
350
- "dsr" => "Designer",
351
- "dst" => "Distributor",
352
- "dtc" => "Data contributor ",
353
- "dte" => "Dedicatee",
354
- "dtm" => "Data manager ",
355
- "dto" => "Dedicator",
356
- "dub" => "Dubious author",
357
- "edt" => "Editor",
358
- "egr" => "Engraver",
359
- "elg" => "Electrician ",
360
- "elt" => "Electrotyper",
361
- "eng" => "Engineer",
362
- "etr" => "Etcher",
363
- "exp" => "Expert",
364
- "fac" => "Facsimilist",
365
- "fld" => "Field director ",
366
- "flm" => "Film editor",
367
- "fmo" => "Former owner",
368
- "fpy" => "First party",
369
- "fnd" => "Funder",
370
- "frg" => "Forger",
371
- "gis" => "Geographic information specialist ",
372
- "grt" => "Graphic technician",
373
- "hnr" => "Honoree",
374
- "hst" => "Host",
375
- "ill" => "Illustrator",
376
- "ilu" => "Illuminator",
377
- "ins" => "Inscriber",
378
- "inv" => "Inventor",
379
- "itr" => "Instrumentalist",
380
- "ive" => "Interviewee",
381
- "ivr" => "Interviewer",
382
- "lbr" => "Laboratory ",
383
- "lbt" => "Librettist",
384
- "ldr" => "Laboratory director ",
385
- "led" => "Lead",
386
- "lee" => "Libelee-appellee",
387
- "lel" => "Libelee",
388
- "len" => "Lender",
389
- "let" => "Libelee-appellant",
390
- "lgd" => "Lighting designer",
391
- "lie" => "Libelant-appellee",
392
- "lil" => "Libelant",
393
- "lit" => "Libelant-appellant",
394
- "lsa" => "Landscape architect",
395
- "lse" => "Licensee",
396
- "lso" => "Licensor",
397
- "ltg" => "Lithographer",
398
- "lyr" => "Lyricist",
399
- "mcp" => "Music copyist",
400
- "mfr" => "Manufacturer",
401
- "mdc" => "Metadata contact",
402
- "mod" => "Moderator",
403
- "mon" => "Monitor",
404
- "mrk" => "Markup editor",
405
- "msd" => "Musical director",
406
- "mte" => "Metal-engraver",
407
- "mus" => "Musician",
408
- "nrt" => "Narrator",
409
- "opn" => "Opponent",
410
- "org" => "Originator",
411
- "orm" => "Organizer of meeting",
412
- "oth" => "Other",
413
- "own" => "Owner",
414
- "pat" => "Patron",
415
- "pbd" => "Publishing director",
416
- "pbl" => "Publisher",
417
- "pdr" => "Project director",
418
- "pfr" => "Proofreader",
419
- "pht" => "Photographer",
420
- "plt" => "Platemaker",
421
- "pma" => "Permitting agency",
422
- "pmn" => "Production manager",
423
- "pop" => "Printer of plates",
424
- "ppm" => "Papermaker",
425
- "ppt" => "Puppeteer",
426
- "prc" => "Process contact",
427
- "prd" => "Production personnel",
428
- "prf" => "Performer",
429
- "prg" => "Programmer",
430
- "prm" => "Printmaker",
431
- "pro" => "Producer",
432
- "prt" => "Printer",
433
- "pta" => "Patent applicant",
434
- "pte" => "Plaintiff -appellee",
435
- "ptf" => "Plaintiff",
436
- "pth" => "Patent holder",
437
- "ptt" => "Plaintiff-appellant",
438
- "rbr" => "Rubricator",
439
- "rce" => "Recording engineer",
440
- "rcp" => "Recipient",
441
- "red" => "Redactor",
442
- "ren" => "Renderer",
443
- "res" => "Researcher",
444
- "rev" => "Reviewer",
445
- "rps" => "Repository",
446
- "rpt" => "Reporter",
447
- "rpy" => "Responsible party",
448
- "rse" => "Respondent-appellee",
449
- "rsg" => "Restager",
450
- "rsp" => "Respondent",
451
- "rst" => "Respondent-appellant",
452
- "rth" => "Research team head",
453
- "rtm" => "Research team member",
454
- "sad" => "Scientific advisor",
455
- "sce" => "Scenarist",
456
- "scl" => "Sculptor",
457
- "scr" => "Scribe",
458
- "sds" => "Sound designer",
459
- "sec" => "Secretary",
460
- "sgn" => "Signer",
461
- "sht" => "Supporting host",
462
- "sng" => "Singer",
463
- "spk" => "Speaker",
464
- "spn" => "Sponsor",
465
- "spy" => "Second party",
466
- "srv" => "Surveyor",
467
- "std" => "Set designer",
468
- "stl" => "Storyteller",
469
- "stm" => "Stage manager",
470
- "stn" => "Standards body",
471
- "str" => "Stereotyper",
472
- "tcd" => "Technical director",
473
- "tch" => "Teacher",
474
- "ths" => "Thesis advisor",
475
- "trc" => "Transcriber",
476
- "trl" => "Translator",
477
- "tyd" => "Type designer",
478
- "tyg" => "Typographer",
479
- "vdg" => "Videographer",
480
- "voc" => "Vocalist",
481
- "wam" => "Writer of accompanying material",
482
- "wdc" => "Woodcutter",
483
- "wde" => "Wood -engraver",
484
- "wit" => "Witness"}
485
- end
486
-
487
- def self.valid_child_types
488
- ["data", "supporting file", "profile", "lorem ipsum", "dolor"]
489
- end
490
-
491
- def to_solr(solr_doc=Hash.new)
492
- super(solr_doc)
493
- solr_doc.merge!(extract_person_full_names)
494
- solr_doc.merge!(extract_person_organizations)
495
- solr_doc.merge!(:object_type_facet => "Generic content")
496
- solr_doc
497
- end
498
-
499
- end
500
- end