hydra-collections 3.0.0.beta2 → 3.0.0.beta3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc290495566cb41d1d88d160bd16b9cc20caed29
4
- data.tar.gz: 4c4cee59c337d138b042e0f80487ec3e9496d240
3
+ metadata.gz: 89c0019427e673f40b0abd3a2293d9bf74bd19cc
4
+ data.tar.gz: d2f4fb9c57d32e5b3a392afb27174a62666f4021
5
5
  SHA512:
6
- metadata.gz: d8df8b62d6d5dab6a376b9e3569485d2308b6ae8f92dc0bd2331afc66266b7b9025a1c265d50a2015fcaddfb1047cc47e7adc2abdea03a2310dbc85776cbcd98
7
- data.tar.gz: 3a0923ea41a07be5931251ea88b126e919f5e47af7f79185946d3c7512061a90f228c8c0ab4f2a152786925cfe0630ef6ba1658121461936fa841dd881f006fd
6
+ metadata.gz: c09ea609b5bfa9befba296dc44dbb2349d3d52f289f68549feceaefd8afbe07d6d6973e77ed1c9dbd95e5623a779f4c8ce71ff6a2380fda548aa9d04e4cc4124
7
+ data.tar.gz: eaf736cb88e9690b7b93d09deb2ba3aada36ca27c9d649753592885e88dbfd7d1db0a8e5a8353b4b7e6a8b0c1e6a456494c55e7d3e9436a427d057a5bb0680e4
data/README.md CHANGED
@@ -35,7 +35,7 @@ Or install it yourself as:
35
35
 
36
36
  ### Make your Models Collectible
37
37
 
38
- Add `include Hydra::Collections::Collectible` to the models for anything that you want to be able to add to collections (ie. GenericFile, Book, Article, etc.), then add `index_collection_ids` to the solrization logic (ie. put it in to_solr)
38
+ Add `include Hydra::Collections::Collectible` to the models for anything that you want to be able to add to collections (ie. GenericFile, Book, Article, etc.), then add `index_collection_pids` to the solrization logic (ie. put it in to_solr)
39
39
 
40
40
  Example:
41
41
  ```ruby
@@ -44,13 +44,13 @@ class GenericFile < ActiveFedora::Base
44
44
  ...
45
45
  def to_solr(solr_doc={}, opts={})
46
46
  super(solr_doc, opts)
47
- index_collection_ids(solr_doc)
47
+ index_collection_pids(solr_doc)
48
48
  return solr_doc
49
49
  end
50
50
  end
51
51
  ```
52
52
 
53
- Any items that include the `Hydra::Collections::Collectible` module can look up which collections they belong to via `.collections`. The `index_collection_ids` puts the ids of all associated collections into the `collection` facet.
53
+ Any items that include the `Hydra::Collections::Collectible` module can look up which collections they belong to via `.collections`. The `index_collection_pids` puts the pids of all associated collections into the `collection` facet.
54
54
 
55
55
  ### Make the Collection show as a facet in your CatalogController
56
56
 
@@ -14,7 +14,7 @@ module Hydra
14
14
 
15
15
  # Catch permission errors
16
16
  rescue_from Hydra::AccessDenied, CanCan::AccessDenied do |exception|
17
- if exception.action == :edit
17
+ if (exception.action == :edit)
18
18
  redirect_to(collections.url_for({:action=>'show'}), :alert => "You do not have sufficient privileges to edit this document")
19
19
  elsif current_user and current_user.persisted?
20
20
  redirect_to root_url, :alert => exception.message
@@ -46,19 +46,18 @@ module Hydra
46
46
 
47
47
  def after_create
48
48
  respond_to do |format|
49
- ActiveFedora::SolrService.instance.conn.commit
50
49
  format.html { redirect_to collections.collection_path(@collection), notice: 'Collection was successfully created.' }
51
50
  format.json { render json: @collection, status: :created, location: @collection }
52
51
  end
53
52
  end
54
-
53
+
55
54
  def after_create_error
56
55
  respond_to do |format|
57
56
  format.html { render action: "new" }
58
57
  format.json { render json: @collection.errors, status: :unprocessable_entity }
59
58
  end
60
59
  end
61
-
60
+
62
61
  def create
63
62
  @collection.apply_depositor_metadata(current_user.user_key)
64
63
  add_members_to_collection unless batch.empty?
@@ -68,8 +67,8 @@ module Hydra
68
67
  after_create_error
69
68
  end
70
69
  end
71
-
72
- def after_update
70
+
71
+ def after_update
73
72
  if flash[:notice].nil?
74
73
  flash[:notice] = 'Collection was successfully updated.'
75
74
  end
@@ -78,14 +77,14 @@ module Hydra
78
77
  format.json { render json: @collection, status: :updated, location: @collection }
79
78
  end
80
79
  end
81
-
80
+
82
81
  def after_update_error
83
82
  respond_to do |format|
84
83
  format.html { render action: collections.edit_collection_path(@collection) }
85
84
  format.json { render json: @collection.errors, status: :unprocessable_entity }
86
85
  end
87
86
  end
88
-
87
+
89
88
  def update
90
89
  process_member_changes
91
90
  @collection.update_attributes(params[:collection].except(:members))
@@ -95,21 +94,21 @@ module Hydra
95
94
  after_update_error
96
95
  end
97
96
  end
98
-
97
+
99
98
  def after_destroy (id)
100
99
  respond_to do |format|
101
100
  format.html { redirect_to catalog_index_path, notice: 'Collection was successfully deleted.' }
102
101
  format.json { render json: {id:id}, status: :destroyed, location: @collection }
103
- end
102
+ end
104
103
  end
105
104
 
106
105
  def after_destroy_error (id)
107
106
  respond_to do |format|
108
107
  format.html { redirect_to catalog_index_path, notice: 'Collection could not be deleted.' }
109
108
  format.json { render json: {id:id}, status: :destroy_error, location: @collection }
110
- end
109
+ end
111
110
  end
112
-
111
+
113
112
  def destroy
114
113
  if @collection.destroy
115
114
  after_destroy(params[:id])
@@ -117,16 +116,16 @@ module Hydra
117
116
  after_destroy_error(params[:id])
118
117
  end
119
118
  end
120
-
119
+
121
120
  protected
122
121
 
123
- # Queries Solr for members of the collection.
122
+ # Queries Solr for members of the collection.
124
123
  # Populates @response and @member_docs similar to Blacklight Catalog#index populating @response and @documents
125
124
  def query_collection_members
126
125
  query = params[:cq]
127
126
 
128
127
  #default the rows to 100 if not specified then merge in the user parameters and the attach the collection query
129
- solr_params = { rows: 100 }.merge(params.symbolize_keys).merge(q: query)
128
+ solr_params = {rows:100}.merge(params.symbolize_keys).merge({:q => query})
130
129
 
131
130
  # run the solr query to find the collections
132
131
  (@response, @member_docs) = get_search_results(solr_params)
@@ -143,15 +142,17 @@ module Hydra
143
142
 
144
143
  def add_members_to_collection collection = nil
145
144
  collection ||= @collection
145
+ collection.members(true)
146
146
  collection.member_ids = batch.concat(collection.member_ids)
147
147
  end
148
148
 
149
149
  def remove_members_from_collection
150
- @collection.members.delete(batch.map { |pid| ActiveFedora::Base.find(pid) })
150
+ @collection.members(true)
151
+ @collection.member_ids = (@collection.member_ids - batch)
151
152
  end
152
153
 
153
154
  def assign_batch_to_collection
154
- @collection.members(true) #Force the members to get cached before (maybe) removing some of them
155
+ @collection.members(true)
155
156
  @collection.member_ids = batch
156
157
  end
157
158
 
@@ -165,11 +166,11 @@ module Hydra
165
166
  flash[:error] = "An error occured. Files were not moved to #{destination_collection.title} Collection."
166
167
  end
167
168
  end
168
-
169
+
169
170
  # include filters into the query to only include the collection memebers
170
171
  def include_collection_ids(solr_parameters, user_parameters)
171
172
  solr_parameters[:fq] ||= []
172
- solr_parameters[:fq] << Solrizer.solr_name(:collection, :facetable)+':"'+@collection.id+'"'
173
+ solr_parameters[:fq] << Solrizer.solr_name(:collection)+':"'+@collection.id+'"'
173
174
  end
174
175
  end # module CollectionsControllerBehavior
175
176
  end # module Hydra
@@ -4,8 +4,7 @@ module CollectionsSearchHelper
4
4
  # @param [String] collection_pid the pid of a collection
5
5
  # @return [String] the title of the collection if available, otherwise its pid
6
6
  def collection_name(collection_pid)
7
- #TODO this can be loaded from solr
8
- Collection.find(collection_pid).title || collection_pid
7
+ Collection.load_instance_from_solr(collection_pid).title || collection_pid
9
8
  end
10
9
 
11
10
  end
@@ -7,87 +7,26 @@ module Hydra
7
7
  include Hydra::Collections::Collectible
8
8
 
9
9
  included do
10
- has_and_belongs_to_many :members, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasCollectionMember, class_name: "ActiveFedora::Base" , after_remove: :update_member
11
-
12
- property :depositor, predicate: RDF::URI.new("http://id.loc.gov/vocabulary/relators/dpt")
13
-
14
- property :part_of, predicate: RDF::DC.isPartOf
15
- property :contributor, predicate: RDF::DC.contributor do |index|
16
- index.as :stored_searchable, :facetable
17
- end
18
- property :creator, predicate: RDF::DC.creator do |index|
19
- index.as :stored_searchable, :facetable
20
- end
21
- property :title, predicate: RDF::DC.title do |index|
22
- index.as :stored_searchable
23
- end
24
- property :description, predicate: RDF::DC.description do |index|
25
- index.type :text
26
- index.as :stored_searchable
27
- end
28
- property :publisher, predicate: RDF::DC.publisher do |index|
29
- index.as :stored_searchable, :facetable
30
- end
31
- property :date_created, predicate: RDF::DC.created do |index|
32
- index.as :stored_searchable
33
- end
34
- property :date_uploaded, predicate: RDF::DC.dateSubmitted do |index|
35
- index.type :date
36
- index.as :stored_sortable
37
- end
38
- property :date_modified, predicate: RDF::DC.modified do |index|
39
- index.type :date
40
- index.as :stored_sortable
41
- end
42
- property :subject, predicate: RDF::DC.subject do |index|
43
- index.as :stored_searchable, :facetable
44
- end
45
- property :language, predicate: RDF::DC.language do |index|
46
- index.as :stored_searchable, :facetable
47
- end
48
- property :rights, predicate: RDF::DC.rights do |index|
49
- index.as :stored_searchable
50
- end
51
- property :resource_type, predicate: RDF::DC.type do |index|
52
- index.as :stored_searchable, :facetable
53
- end
54
- property :identifier, predicate: RDF::DC.identifier do |index|
55
- index.as :stored_searchable
56
- end
57
- property :based_near, predicate: RDF::FOAF.based_near do |index|
58
- index.as :stored_searchable, :facetable
59
- end
60
- property :tag, predicate: RDF::DC.relation do |index|
61
- index.as :stored_searchable, :facetable
62
- end
63
- property :related_url, predicate: RDF::RDFS.seeAlso
64
-
65
- # Single-valued properties
66
- def depositor
67
- super.first
68
- end
69
-
70
- def title
71
- super.first
72
- end
73
-
74
- def date_uploaded
75
- super.first
76
- end
77
-
78
- def date_modified
79
- super.first
80
- end
81
-
82
- def description
83
- super.first
84
- end
10
+ has_metadata "descMetadata", type: Hydra::CollectionRdfDatastream
11
+ has_metadata "properties", type: Hydra::Datastream::Properties
12
+
13
+ has_and_belongs_to_many :members, property: :has_collection_member, class_name: "ActiveFedora::Base" , after_remove: :update_member
14
+
15
+ has_attributes :depositor, datastream: :properties, multiple: false
16
+
17
+ has_attributes :title, :date_uploaded, :date_modified, :description,
18
+ datastream: :descMetadata, multiple: false
19
+ has_attributes :creator, :contributor, :based_near, :part_of, :publisher,
20
+ :date_created, :subject,:resource_type, :rights,
21
+ :identifier, :language, :tag, :related_url,
22
+ datastream: :descMetadata, multiple: true
85
23
 
86
24
  before_create :set_date_uploaded
87
25
  before_save :set_date_modified
88
- before_destroy :update_all_members
89
26
 
90
27
  after_save :update_all_members
28
+
29
+ before_destroy :update_all_members
91
30
  end
92
31
 
93
32
  def terms_for_editing
@@ -95,11 +34,7 @@ module Hydra
95
34
  end
96
35
 
97
36
  def terms_for_display
98
- [
99
- :part_of, :contributor, :creator, :title, :description, :publisher,
100
- :date_created, :date_uploaded, :date_modified, :subject, :language, :rights,
101
- :resource_type, :identifier, :based_near, :tag, :related_url
102
- ]
37
+ self.descMetadata.class.properties.keys.map{|v| v.to_sym}
103
38
  end
104
39
 
105
40
  def update_all_members
@@ -123,5 +58,6 @@ module Hydra
123
58
  self.date_modified = Date.today
124
59
  end
125
60
 
126
- end
61
+ end
62
+
127
63
  end
@@ -0,0 +1,54 @@
1
+ module Hydra
2
+ class CollectionRdfDatastream < ActiveFedora::NtriplesRDFDatastream
3
+ property :part_of, predicate: RDF::DC.isPartOf
4
+ property :contributor, predicate: RDF::DC.contributor do |index|
5
+ index.as :stored_searchable, :facetable
6
+ end
7
+ property :creator, predicate: RDF::DC.creator do |index|
8
+ index.as :stored_searchable, :facetable
9
+ end
10
+ property :title, predicate: RDF::DC.title do |index|
11
+ index.as :stored_searchable
12
+ end
13
+ property :description, predicate: RDF::DC.description do |index|
14
+ index.type :text
15
+ index.as :stored_searchable
16
+ end
17
+ property :publisher, predicate: RDF::DC.publisher do |index|
18
+ index.as :stored_searchable, :facetable
19
+ end
20
+ property :date_created, predicate: RDF::DC.created do |index|
21
+ index.as :stored_searchable
22
+ end
23
+ property :date_uploaded, predicate: RDF::DC.dateSubmitted do |index|
24
+ index.type :date
25
+ index.as :stored_sortable
26
+ end
27
+ property :date_modified, predicate: RDF::DC.modified do |index|
28
+ index.type :date
29
+ index.as :stored_sortable
30
+ end
31
+ property :subject, predicate: RDF::DC.subject do |index|
32
+ index.as :stored_searchable, :facetable
33
+ end
34
+ property :language, predicate: RDF::DC.language do |index|
35
+ index.as :stored_searchable, :facetable
36
+ end
37
+ property :rights, predicate: RDF::DC.rights do |index|
38
+ index.as :stored_searchable
39
+ end
40
+ property :resource_type, predicate: RDF::DC.type do |index|
41
+ index.as :stored_searchable, :facetable
42
+ end
43
+ property :identifier, predicate: RDF::DC.identifier do |index|
44
+ index.as :stored_searchable
45
+ end
46
+ property :based_near, predicate: RDF::FOAF.based_near do |index|
47
+ index.as :stored_searchable, :facetable
48
+ end
49
+ property :tag, predicate: RDF::DC.relation do |index|
50
+ index.as :stored_searchable, :facetable
51
+ end
52
+ property :related_url, predicate: RDF::RDFS.seeAlso
53
+ end
54
+ end
@@ -1,3 +1,19 @@
1
+ <%#
2
+ Copyright © 2012 The Pennsylvania State University
3
+
4
+ Licensed under the Apache License, Version 2.0 (the "License");
5
+ you may not use this file except in compliance with the License.
6
+ You may obtain a copy of the License at
7
+
8
+ http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+ Unless required by applicable law or agreed to in writing, software
11
+ distributed under the License is distributed on an "AS IS" BASIS,
12
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ See the License for the specific language governing permissions and
14
+ limitations under the License.
15
+ %>
16
+
1
17
  <div style="float: right;" >
2
18
  <%= form_for([collections, @collection] , :method => :get, :class => "well form-search") do |f| %>
3
19
 
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["cam156@psu.edu"]
11
11
  spec.description = "A rails engine for managing Hydra Collections"
12
12
  spec.summary = "A rails engine for managing Hydra Collections"
13
- spec.homepage = "https://github.com/projecthydra-labs/hydra-collections"
13
+ spec.homepage = "https://github.com/psu-stewardship/hydra-collections"
14
14
  spec.license = "APACHE2"
15
15
 
16
16
  spec.files = `git ls-files`.split($/)
@@ -19,8 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency "blacklight"
22
- spec.add_dependency "hydra-head", "~> 9.0.0.beta1"
23
- spec.add_dependency 'deprecation'
22
+ spec.add_dependency "hydra-head", "~> 8.0.0.beta1"
24
23
 
25
24
  spec.add_development_dependency "engine_cart"
26
25
  spec.add_development_dependency "rspec-rails"
@@ -18,12 +18,12 @@ module Hydra
18
18
  protected
19
19
 
20
20
  def batch_ids_from_params
21
- if params["batch_document_ids"].blank?
22
- []
21
+ if params["batch_document_ids"].nil? || params["batch_document_ids"].empty?
22
+ return []
23
23
  elsif params["batch_document_ids"] == "all"
24
- Hydra::Collections::SearchService.new(session, current_user.user_key).last_search_documents.map(&:id)
24
+ return Hydra::Collections::SearchService.new(session, current_user.user_key).last_search_documents.map(&:id)
25
25
  else
26
- params["batch_document_ids"]
26
+ return params["batch_document_ids"]
27
27
  end
28
28
  end
29
29
 
@@ -52,4 +52,4 @@ module Hydra
52
52
 
53
53
  end
54
54
  end
55
- end
55
+ end
@@ -1,32 +1,25 @@
1
1
  # This module adds a `has_many :collections` association to any models that you mix it into, using the :has_collection_member property
2
2
  # It also provides methods to help you index the information as a facet
3
- require 'deprecation'
4
3
  module Hydra::Collections::Collectible
4
+ extend ActiveSupport::Autoload
5
5
  extend ActiveSupport::Concern
6
- extend Deprecation
7
- self.deprecation_horizon = "hydra-collections 4.0"
8
-
6
+
9
7
  included do
10
- has_many :collections, predicate: ActiveFedora::RDF::Fcrepo::RelsExt.hasCollectionMember, class_name: "ActiveFedora::Base"
8
+ #after_solrize << :index_collection_pids
9
+ has_many :collections, property: :has_collection_member, :class_name => "ActiveFedora::Base"
11
10
  end
12
11
 
13
- # Add this method to your solrization logic (ie. in to_solr) in order to populate the 'collection' facet
12
+ # Add this method to your solrization logic (ie. in to_solr) in order to populate the 'collection' facet
14
13
  # with the pids of any collections that contain the current object.
15
14
  # @example
16
15
  # def to_solr(solr_doc={}, opts={})
17
16
  # super(solr_doc, opts)
18
- # index_collection_ids(solr_doc)
17
+ # index_collection_pids(solr_doc)
19
18
  # return solr_doc
20
19
  # end
21
- def index_collection_ids(solr_doc={})
20
+ def index_collection_pids(solr_doc={})
22
21
  solr_doc[Solrizer.solr_name(:collection, :facetable)] = self.collection_ids
23
22
  solr_doc[Solrizer.solr_name(:collection)] = self.collection_ids
24
23
  solr_doc
25
24
  end
26
-
27
- def index_collection_pids(solr_doc={})
28
- index_collection_ids(solr_doc)
29
- end
30
- deprecation_deprecate :index_collection_pids
31
-
32
- end
25
+ end