hydra-head 3.1.1 → 3.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/HISTORY.textile CHANGED
@@ -1,7 +1,11 @@
1
+ h3. 3.1.2
2
+ * Make asset controller easily overridden
3
+
4
+
1
5
  h3. 3.1.1
2
- * Fixed bug where selected facet was not html_safe
3
- * Fixed document_list, called when sorting by object_type_facet
4
- * Don't issue two notice messags when saving document.
6
+ * Selected facet was not html_safe
7
+ * document_list was attempting to call Mash#get, when sorting by object_type_facet
8
+ * Don't issue two notice messages when saving document.
5
9
 
6
10
 
7
11
  h3. 3.1.0
@@ -1,147 +1,3 @@
1
- require 'mediashelf/active_fedora_helper'
2
-
3
1
  class AssetsController < ApplicationController
4
- include MediaShelf::ActiveFedoraHelper
5
- include Blacklight::SolrHelper
6
- include Hydra::RepositoryController
7
- include Hydra::AssetsControllerHelper
8
- include ReleaseProcessHelper
9
-
10
-
11
- include Blacklight::Catalog
12
- helper :hydra
13
-
14
- before_filter :search_session, :history_session
15
- before_filter :load_document, :only => :update # allows other filters to operate on the document before the update method is called
16
- before_filter :require_solr
17
-
18
- # need to include this after the :require_solr/fedora before filters because of the before filter that the workflow provides.
19
- include Hydra::SubmissionWorkflow
20
-
21
-
22
- prepend_before_filter :sanitize_update_params, :only=>:update
23
- before_filter :check_embargo_date_format, :only=>:update
24
-
25
- def show
26
- if params.has_key?("field")
27
-
28
- @response, @document = get_solr_response_for_doc_id
29
- # @document = SolrDocument.new(@response.docs.first)
30
- result = @document["#{params["field"]}_t"]
31
- # document_fedora = SaltDocument.load_instance(params[:id])
32
- # result = document_fedora.datastreams_in_memory[params["datastream"]].send("#{params[:field]}_values")
33
- unless result.nil?
34
- if params.has_key?("field_index")
35
- result = result[params["field_index"].to_i-1]
36
- elsif result.kind_of?(Array)
37
- result = result.first
38
- end
39
- end
40
- respond_to do |format|
41
- format.html { render :text=>result }
42
- format.textile { render :text=> RedCloth.new(result, [:sanitize_html]).to_html }
43
- end
44
- else
45
- redirect_to :controller=>"catalog", :action=>"show"
46
- end
47
- end
48
-
49
- # Uses the update_indexed_attributes method provided by ActiveFedora::Base
50
- # This should behave pretty much like the ActiveRecord update_indexed_attributes method
51
- # For more information, see the ActiveFedora docs.
52
- #
53
- # @example Appends a new "subject" value of "My Topic" to on the descMetadata datastream in in the _PID_ document.
54
- # put :update, :id=>"_PID_", "asset"=>{"descMetadata"=>{"subject"=>{"-1"=>"My Topic"}}
55
- # @example Sets the 1st and 2nd "medium" values on the descMetadata datastream in the _PID_ document, overwriting any existing values.
56
- # put :update, :id=>"_PID_", "asset"=>{"descMetadata"=>{"medium"=>{"0"=>"Paper Document", "1"=>"Image"}}
57
- def update
58
- logger.debug("attributes submitted: #{@sanitized_params.inspect}")
59
-
60
- @response = update_document(@document, @sanitized_params)
61
-
62
- @document.save
63
- flash[:notice] = "Your changes have been saved."
64
-
65
- logger.debug("returning #{response.inspect}")
66
-
67
- respond_to do |want|
68
- want.html {
69
- redirect_to( {:controller => "catalog", :action => "edit", :id => params[:id]}.merge(params_for_next_step_in_wokflow) )
70
- }
71
- want.js {
72
- render :json=> tidy_response_from_update(@response)
73
- }
74
- want.textile {
75
- if @response.kind_of?(Hash)
76
- textile_response = tidy_response_from_update(@response).values.first
77
- end
78
- render :text=> RedCloth.new(textile_response, [:sanitize_html]).to_html
79
- }
80
- end
81
- end
82
-
83
- def new
84
- af_model = retrieve_af_model(params[:content_type])
85
- if af_model
86
- @asset = af_model.new
87
- apply_depositor_metadata(@asset)
88
- set_collection_type(@asset, params[:content_type])
89
- @asset.save
90
- model_display_name = af_model.to_s.camelize.scan(/[A-Z][^A-Z]*/).join(" ")
91
- msg = "Created a #{model_display_name} with pid #{@asset.pid}. Now it's ready to be edited."
92
- flash[:notice]= msg
93
- end
94
- session[:scripts] = params[:combined] == "true"
95
- redirect_to url_for(:action=>"edit", :controller=>"catalog", :id=>@asset.pid, :new_asset=>true)
96
- end
97
-
98
- def destroy
99
- af = ActiveFedora::Base.load_instance_from_solr(params[:id])
100
- the_model = ActiveFedora::ContentModel.known_models_for( af ).first
101
- unless the_model.nil?
102
- af = the_model.load_instance_from_solr(params[:id])
103
- assets = af.destroy_child_assets
104
- end
105
- af.delete
106
- msg = "Deleted #{params[:id]}"
107
- msg.concat(" and associated file_asset(s): #{assets.join(", ")}") unless assets.empty?
108
- flash[:notice]= msg
109
- redirect_to url_for(:action => 'index', :controller => "catalog", :q => nil , :f => nil)
110
- end
111
-
112
-
113
- # This is a method to simply remove the item from SOLR but keep the object in fedora.
114
- alias_method :withdraw, :destroy
115
-
116
- protected
117
-
118
- def load_document
119
- @document = load_document_from_params
120
- end
121
-
122
-
123
- def mods_assets_update_validation
124
- desc_metadata = params[:asset][:descMetadata]
125
- rights_metadata = params[:asset][:rightsMetadata]
126
- if !rights_metadata.nil? and rights_metadata.has_key?(:embargo_embargo_release_date)
127
- unless rights_metadata[:embargo_embargo_release_date]["0"].blank?
128
- begin
129
- parsed_date = Date.parse(rights_metadata[:embargo_embargo_release_date]["0"]).to_s
130
- params[:asset][:rightsMetadata][:embargo_embargo_release_date]["0"] = parsed_date
131
- rescue
132
- flash[:error] = "You must enter a valid release date."
133
- return false
134
- end
135
- end
136
- end
137
-
138
- if !desc_metadata.nil? and desc_metadata.has_key?(:title_info_main_title) and desc_metadata.has_key?(:journal_0_title_info_main_title)
139
- if desc_metadata[:title_info_main_title]["0"].blank? or desc_metadata[:journal_0_title_info_main_title]["0"].blank?
140
- flash[:error] = "The title fields are required."
141
- return false
142
- end
143
- end
144
-
145
- return true
146
- end
2
+ include Hydra::Assets
147
3
  end
@@ -4,8 +4,6 @@
4
4
  <%= form_tag url_for(:action=>"update", :controller=>"assets"), :id=>"document_metadata" "accept-charset"=>"utf-8" do %>
5
5
 
6
6
  <div id="multipleEdit">
7
- <div id="loading" style="display:none;"><img src="/plugin_assets/hydra-head/images/ajax-loader.gif" width="32" height="32" alt="Saving"/> Saving...</div>
8
- <div>
9
7
  <dl class="defList fl-theme-mist">
10
8
  <%= editable_metadata_field(@document_fedora, "descMetadata", :title, :label => "Title:") %>
11
9
  </dl>
@@ -1,4 +1,4 @@
1
1
  module HydraHead
2
- VERSION = "3.1.1"
2
+ VERSION = "3.1.2"
3
3
  end
4
4
 
data/lib/hydra.rb CHANGED
@@ -1,8 +1,10 @@
1
1
  require "blacklight"
2
2
  # Hydra libraries
3
3
  module Hydra
4
- autoload :Configurable, 'blacklight/configurable'
5
4
  extend Blacklight::Configurable
5
+ extend ActiveSupport::Autoload
6
+ autoload :Configurable, 'blacklight/configurable'
7
+ autoload :Assets
6
8
  end
7
9
 
8
10
 
@@ -0,0 +1,147 @@
1
+ module Hydra::Assets
2
+ extend ActiveSupport::Concern
3
+ include MediaShelf::ActiveFedoraHelper
4
+ include Blacklight::SolrHelper
5
+ include Hydra::RepositoryController
6
+ include Hydra::AssetsControllerHelper
7
+ include ReleaseProcessHelper
8
+ include Blacklight::Catalog
9
+
10
+ included do
11
+ helper :hydra
12
+
13
+ before_filter :search_session, :history_session
14
+ before_filter :require_solr
15
+ before_filter :load_document, :only => :update # allows other filters to operate on the document before the update method is called
16
+
17
+ # need to include this after the :require_solr/fedora before filters because of the before filter that the workflow provides.
18
+ include Hydra::SubmissionWorkflow
19
+
20
+
21
+ prepend_before_filter :sanitize_update_params, :only=>:update
22
+ before_filter :check_embargo_date_format, :only=>:update
23
+ end
24
+
25
+ def show
26
+ if params.has_key?("field")
27
+
28
+ @response, @document = get_solr_response_for_doc_id
29
+ # @document = SolrDocument.new(@response.docs.first)
30
+ result = @document["#{params["field"]}_t"]
31
+ # document_fedora = SaltDocument.load_instance(params[:id])
32
+ # result = document_fedora.datastreams_in_memory[params["datastream"]].send("#{params[:field]}_values")
33
+ unless result.nil?
34
+ if params.has_key?("field_index")
35
+ result = result[params["field_index"].to_i-1]
36
+ elsif result.kind_of?(Array)
37
+ result = result.first
38
+ end
39
+ end
40
+ respond_to do |format|
41
+ format.html { render :text=>result }
42
+ format.textile { render :text=> RedCloth.new(result, [:sanitize_html]).to_html }
43
+ end
44
+ else
45
+ redirect_to :controller=>"catalog", :action=>"show"
46
+ end
47
+ end
48
+
49
+ # Uses the update_indexed_attributes method provided by ActiveFedora::Base
50
+ # This should behave pretty much like the ActiveRecord update_indexed_attributes method
51
+ # For more information, see the ActiveFedora docs.
52
+ #
53
+ # @example Appends a new "subject" value of "My Topic" to on the descMetadata datastream in in the _PID_ document.
54
+ # put :update, :id=>"_PID_", "asset"=>{"descMetadata"=>{"subject"=>{"-1"=>"My Topic"}}
55
+ # @example Sets the 1st and 2nd "medium" values on the descMetadata datastream in the _PID_ document, overwriting any existing values.
56
+ # put :update, :id=>"_PID_", "asset"=>{"descMetadata"=>{"medium"=>{"0"=>"Paper Document", "1"=>"Image"}}
57
+ def update
58
+ logger.debug("attributes submitted: #{@sanitized_params.inspect}")
59
+
60
+ @response = update_document(@document, @sanitized_params)
61
+
62
+ @document.save
63
+ flash[:notice] = "Your changes have been saved."
64
+
65
+ logger.debug("returning #{response.inspect}")
66
+
67
+ respond_to do |want|
68
+ want.html {
69
+ redirect_to( {:controller => "catalog", :action => "edit", :id => params[:id]}.merge(params_for_next_step_in_wokflow) )
70
+ }
71
+ want.js {
72
+ render :json=> tidy_response_from_update(@response)
73
+ }
74
+ want.textile {
75
+ if @response.kind_of?(Hash)
76
+ textile_response = tidy_response_from_update(@response).values.first
77
+ end
78
+ render :text=> RedCloth.new(textile_response, [:sanitize_html]).to_html
79
+ }
80
+ end
81
+ end
82
+
83
+ def new
84
+ af_model = retrieve_af_model(params[:content_type])
85
+ if af_model
86
+ @asset = af_model.new
87
+ apply_depositor_metadata(@asset)
88
+ set_collection_type(@asset, params[:content_type])
89
+ @asset.save
90
+ model_display_name = af_model.to_s.camelize.scan(/[A-Z][^A-Z]*/).join(" ")
91
+ msg = "Created a #{model_display_name} with pid #{@asset.pid}. Now it's ready to be edited."
92
+ flash[:notice]= msg
93
+ end
94
+ session[:scripts] = params[:combined] == "true"
95
+ redirect_to url_for(:action=>"edit", :controller=>"catalog", :id=>@asset.pid, :new_asset=>true)
96
+ end
97
+
98
+ def destroy
99
+ af = ActiveFedora::Base.load_instance_from_solr(params[:id])
100
+ the_model = ActiveFedora::ContentModel.known_models_for( af ).first
101
+ unless the_model.nil?
102
+ af = the_model.load_instance_from_solr(params[:id])
103
+ assets = af.destroy_child_assets
104
+ end
105
+ af.delete
106
+ msg = "Deleted #{params[:id]}"
107
+ msg.concat(" and associated file_asset(s): #{assets.join(", ")}") unless assets.empty?
108
+ flash[:notice]= msg
109
+ redirect_to url_for(:action => 'index', :controller => "catalog", :q => nil , :f => nil)
110
+ end
111
+
112
+
113
+ # This is a method to simply remove the item from SOLR but keep the object in fedora.
114
+ alias_method :withdraw, :destroy
115
+
116
+ protected
117
+
118
+ def load_document
119
+ @document = load_document_from_params
120
+ end
121
+
122
+
123
+ def mods_assets_update_validation
124
+ desc_metadata = params[:asset][:descMetadata]
125
+ rights_metadata = params[:asset][:rightsMetadata]
126
+ if !rights_metadata.nil? and rights_metadata.has_key?(:embargo_embargo_release_date)
127
+ unless rights_metadata[:embargo_embargo_release_date]["0"].blank?
128
+ begin
129
+ parsed_date = Date.parse(rights_metadata[:embargo_embargo_release_date]["0"]).to_s
130
+ params[:asset][:rightsMetadata][:embargo_embargo_release_date]["0"] = parsed_date
131
+ rescue
132
+ flash[:error] = "You must enter a valid release date."
133
+ return false
134
+ end
135
+ end
136
+ end
137
+
138
+ if !desc_metadata.nil? and desc_metadata.has_key?(:title_info_main_title) and desc_metadata.has_key?(:journal_0_title_info_main_title)
139
+ if desc_metadata[:title_info_main_title]["0"].blank? or desc_metadata[:journal_0_title_info_main_title]["0"].blank?
140
+ flash[:error] = "The title fields are required."
141
+ return false
142
+ end
143
+ end
144
+
145
+ return true
146
+ end
147
+ end
Binary file
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-head
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 1
9
- - 1
10
- version: 3.1.1
9
+ - 2
10
+ version: 3.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matt Zumwalt, Bess Sadler, Julie Meloni, Naomi Dushay, Jessie Keck, John Scofield, Justin Coyne & many more. See https://github.com/projecthydra/hydra-head/contributors
@@ -973,6 +973,7 @@ files:
973
973
  - lib/hydra.rb
974
974
  - lib/hydra/access_controls_enforcement.rb
975
975
  - lib/hydra/access_controls_evaluation.rb
976
+ - lib/hydra/assets.rb
976
977
  - lib/hydra/assets_controller_helper.rb
977
978
  - lib/hydra/catalog.rb
978
979
  - lib/hydra/common_mods_index_methods.rb
@@ -1154,6 +1155,7 @@ files:
1154
1155
  - vendor/cache/crack-0.3.1.gem
1155
1156
  - vendor/cache/cucumber-1.1.0.gem
1156
1157
  - vendor/cache/cucumber-rails-1.1.1.gem
1158
+ - vendor/cache/curb-0.7.15.gem
1157
1159
  - vendor/cache/daemons-1.1.4.gem
1158
1160
  - vendor/cache/database_cleaner-0.6.7.gem
1159
1161
  - vendor/cache/diff-lcs-1.1.3.gem