sufia 4.0.0.beta3 → 4.0.0.beta4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -0
  3. data/SUFIA_VERSION +1 -1
  4. data/app/assets/javascripts/sufia/search.js +4 -6
  5. data/app/assets/stylesheets/dashboard.css.scss +26 -0
  6. data/app/assets/stylesheets/header.css.scss +21 -12
  7. data/app/controllers/batch_controller.rb +0 -1
  8. data/app/controllers/collections_controller.rb +0 -1
  9. data/app/controllers/concerns/sufia/catalog.rb +0 -9
  10. data/app/controllers/concerns/sufia/controller.rb +4 -0
  11. data/app/controllers/concerns/sufia/dashboard_controller_behavior.rb +24 -74
  12. data/app/controllers/concerns/sufia/downloads_controller_behavior.rb +0 -3
  13. data/app/controllers/concerns/sufia/files_controller_behavior.rb +4 -13
  14. data/app/controllers/concerns/sufia/my_controller_behavior.rb +87 -0
  15. data/app/controllers/{dashboard → my}/collections_controller.rb +3 -2
  16. data/app/controllers/{dashboard → my}/files_controller.rb +3 -2
  17. data/app/controllers/{dashboard → my}/highlights_controller.rb +3 -2
  18. data/app/controllers/{dashboard → my}/shares_controller.rb +3 -2
  19. data/app/controllers/my_controller.rb +3 -0
  20. data/app/controllers/single_use_links_controller.rb +0 -2
  21. data/app/helpers/dashboard_helper.rb +3 -0
  22. data/app/helpers/generic_file_helper.rb +4 -4
  23. data/app/helpers/sufia/dashboard_helper_behavior.rb +25 -0
  24. data/app/helpers/sufia/sufia_helper_behavior.rb +44 -0
  25. data/app/jobs/content_delete_event_job.rb +2 -2
  26. data/app/models/concerns/sufia/solr_document_behavior.rb +5 -0
  27. data/app/views/_user_util_links.html.erb +5 -5
  28. data/app/views/catalog/_results_pagination.html.erb +1 -1
  29. data/app/views/catalog/_search_form.html.erb +56 -28
  30. data/app/views/collections/_dashboard_document_list.html.erb +1 -1
  31. data/app/views/collections/_document_list.html.erb +1 -1
  32. data/app/views/collections/edit.html.erb +8 -11
  33. data/app/views/collections/show.html.erb +2 -2
  34. data/app/views/collections/show_fields/_creator.html.erb +11 -0
  35. data/app/views/collections/show_fields/_description.html.erb +8 -0
  36. data/app/views/collections/show_fields/_title.html.erb +8 -0
  37. data/app/views/dashboard/_index_partials/_stats.html.erb +16 -0
  38. data/app/views/dashboard/_index_partials/_user_info.html.erb +18 -0
  39. data/app/views/dashboard/index.html.erb +51 -19
  40. data/app/views/generic_files/_show_descriptions.html.erb +11 -10
  41. data/app/views/generic_files/show.html.erb +1 -1
  42. data/app/views/generic_files/show_fields/_based_near.html.erb +7 -0
  43. data/app/views/generic_files/show_fields/_contributor.html.erb +7 -0
  44. data/app/views/generic_files/show_fields/_creator.html.erb +7 -0
  45. data/app/views/generic_files/show_fields/_date_created.html.erb +7 -0
  46. data/app/views/generic_files/show_fields/_default.html.erb +6 -12
  47. data/app/views/generic_files/show_fields/_description.html.erb +7 -0
  48. data/app/views/generic_files/show_fields/_identifier.html.erb +4 -0
  49. data/app/views/generic_files/show_fields/_language.html.erb +4 -0
  50. data/app/views/generic_files/show_fields/_publisher.html.erb +7 -0
  51. data/app/views/generic_files/show_fields/_related_url.html.erb +6 -0
  52. data/app/views/generic_files/show_fields/_resource_type.html.erb +4 -0
  53. data/app/views/generic_files/show_fields/_rights.html.erb +4 -0
  54. data/app/views/generic_files/show_fields/_subject.html.erb +7 -0
  55. data/app/views/generic_files/show_fields/_tag.html.erb +4 -0
  56. data/app/views/generic_files/show_fields/_title.html.erb +7 -0
  57. data/app/views/generic_files/upload/_form_fields.html.erb +4 -5
  58. data/app/views/generic_files/upload/_script_templates.html.erb +1 -2
  59. data/app/views/layouts/sufia-dashboard.html.erb +16 -30
  60. data/app/views/mailbox/_notifications.html.erb +21 -0
  61. data/app/views/mailbox/index.html.erb +2 -23
  62. data/app/views/{dashboard → my}/_action_menu.html.erb +0 -0
  63. data/app/views/{dashboard → my}/_batch_edits_actions.html.erb +0 -0
  64. data/app/views/{dashboard → my}/_collection_action_menu.html.erb +0 -0
  65. data/app/views/{dashboard → my}/_did_you_mean.html.erb +0 -0
  66. data/app/views/my/_document_list.html.erb +4 -0
  67. data/app/views/{dashboard → my}/_facet_layout.html.erb +0 -0
  68. data/app/views/{dashboard → my}/_facet_limit.html.erb +0 -0
  69. data/app/views/{dashboard → my}/_facet_pagination.html.erb +0 -0
  70. data/app/views/{dashboard → my}/_facet_selected.html.erb +0 -0
  71. data/app/views/{dashboard → my}/_facets.html.erb +0 -0
  72. data/app/views/{dashboard → my}/_index_partials/_default_group.html.erb +2 -2
  73. data/app/views/{dashboard → my}/_index_partials/_list_collections.html.erb +0 -0
  74. data/app/views/{dashboard → my}/_index_partials/_list_files.html.erb +0 -0
  75. data/app/views/{dashboard → my}/_results_pagination.html.erb +0 -0
  76. data/app/views/my/_scripts.js.erb +11 -0
  77. data/app/views/{dashboard → my}/_sort_and_per_page.html.erb +0 -0
  78. data/app/views/{dashboard → my}/facet.html.erb +0 -0
  79. data/app/views/{dashboard/lists → my}/index.html.erb +4 -20
  80. data/app/views/users/_user_info.html.erb +1 -1
  81. data/config/initializers/sufia_events.rb +19 -2
  82. data/config/locales/sufia.en.yml +27 -2
  83. data/config/routes.rb +7 -11
  84. data/lib/generators/sufia/sufia_generator.rb +15 -0
  85. data/lib/generators/sufia/templates/catalog_controller.rb +14 -14
  86. data/lib/sufia.rb +1 -0
  87. data/lib/sufia/version.rb +1 -1
  88. data/spec/controllers/catalog_controller_spec.rb +7 -16
  89. data/spec/controllers/dashboard_controller_spec.rb +63 -30
  90. data/spec/controllers/generic_files_controller_spec.rb +1 -1
  91. data/spec/controllers/{dashboard → my}/collections_controller_spec.rb +1 -15
  92. data/spec/controllers/my/files_controller_spec.rb +68 -0
  93. data/spec/controllers/{dashboard → my}/highlights_controller_spec.rb +1 -15
  94. data/spec/controllers/{dashboard → my}/shares_controller_spec.rb +1 -15
  95. data/spec/controllers/my_controller_spec.rb +9 -0
  96. data/spec/features/browse_dashboard_files_spec.rb +72 -26
  97. data/spec/features/collection_spec.rb +2 -4
  98. data/spec/features/display_dashboard_spec.rb +20 -26
  99. data/spec/features/search_spec.rb +25 -13
  100. data/spec/helpers/dashboard_helper_spec.rb +41 -0
  101. data/spec/helpers/sufia_helper_spec.rb +104 -3
  102. data/spec/jobs/event_jobs_spec.rb +1 -1
  103. data/spec/models/generic_file/web_form_spec.rb +3 -4
  104. data/spec/models/generic_file_spec.rb +47 -43
  105. data/spec/routing/route_spec.rb +10 -14
  106. data/spec/views/batch_edits/check_all_spec.rb +4 -4
  107. data/spec/views/catalog/sort_and_per_pange.html.erb_spec.rb +27 -0
  108. data/spec/views/dashboard/index_spec.rb +105 -0
  109. data/spec/views/{dashboard → my}/facet_limit.html.erb_spec.rb +2 -2
  110. data/sufia-models/app/actors/sufia/generic_file/actor.rb +23 -3
  111. data/sufia-models/app/models/concerns/sufia/generic_file.rb +0 -5
  112. data/sufia-models/app/models/concerns/sufia/generic_file/metadata.rb +9 -2
  113. data/sufia-models/app/models/concerns/sufia/generic_file/web_form.rb +2 -2
  114. data/sufia-models/app/models/datastreams/generic_file_rdf_datastream.rb +1 -1
  115. data/sufia-models/app/services/sufia/noid.rb +21 -16
  116. data/sufia-models/lib/generators/sufia/models/install_generator.rb +2 -16
  117. data/sufia-models/lib/generators/sufia/models/templates/config/sufia.rb +23 -0
  118. data/sufia-models/lib/sufia/models/version.rb +1 -1
  119. data/sufia-models/sufia-models.gemspec +1 -1
  120. data/vendor/assets/javascripts/fileupload/jquery.fileupload-ui.js +18 -10
  121. metadata +68 -45
  122. data/app/assets/images/glyphicons-halflings-white.png +0 -0
  123. data/app/assets/images/glyphicons-halflings.png +0 -0
  124. data/app/controllers/dashboard/lists_controller.rb +0 -13
  125. data/app/views/dashboard/_constraints.html.erb +0 -6
  126. data/app/views/dashboard/_document_list.html.erb +0 -4
  127. data/app/views/dashboard/_heading.html.erb +0 -1
  128. data/app/views/dashboard/_search_form.html.erb +0 -14
  129. data/app/views/dashboard/_show_partials/_default.html.erb +0 -20
  130. data/app/views/dashboard/_show_partials/_default_details.html.erb +0 -15
  131. data/app/views/dashboard/_show_partials/_facets.html.erb +0 -87
  132. data/app/views/generic_files/_field_display.html.erb +0 -12
  133. data/spec/controllers/dashboard/files_controller_spec.rb +0 -71
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8dc0a47a4d02bb4ce230928b4242bc02db1ae5db
4
- data.tar.gz: e998ecb28e7c6b68074cc2ecf3a3ca4372fdf547
3
+ metadata.gz: d8143524ee97650ca264d7daf37e8daf09d3cb7d
4
+ data.tar.gz: b4714ff53d0ea22cb0f73df735e3133072daca9c
5
5
  SHA512:
6
- metadata.gz: 973bb882c5efa1463f8ccc303bd3954e09f3f781249fe504dfac14c8b4e08491895c3d70485ca5c497e91ce9e8f1de8ab16604d5b0754c3f3b394a666231210b
7
- data.tar.gz: 94cde82bad64900cda91fe6d84f9cb39e75e6c8443784ba14f319dc5e3f0931088fa1669933ce5fd9b5305ea95dfa91407ba9a4dd6d2c7f42dc18cff8b0c84d8
6
+ metadata.gz: aca36c15faed0587db40c7f4b528033b971d3083c14846eda85e1fd45478dd58daef919d688d322ba10eb3d3c9483f4dde6bbb3054010bf22027197525f75fd1
7
+ data.tar.gz: 7a76f154841c3cc1b464f9723bd12370a4836ef4ad7c297eae1c73156a84c23193a5299096f437abf90644afa9883abe80bcaf82995928d8e82221e2a637ee61
data/README.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Sufia [![Version](https://badge.fury.io/rb/sufia.png)](http://badge.fury.io/rb/sufia) [![Build Status](https://travis-ci.org/projecthydra/sufia.png?branch=master)](https://travis-ci.org/projecthydra/sufia) [![Dependency Status](https://gemnasium.com/projecthydra/sufia.png)](https://gemnasium.com/projecthydra/sufia)
2
2
 
3
+ # Please Note!
4
+ Sufia is currently in transition to a new 4.0 release scheduled for late summer 2014. If wish to use Sufia now,
5
+ please ensure you using version 3.7.2, available from RubyGems.org. For documentation specific to this version,
6
+ please consult the [Sufia 3.7.2 documentation](http://rubydoc.info/gems/sufia/3.7.2/frames).
7
+
8
+ If you have questions or need help, please email `hydra-tech@googlegroups.com`
9
+
3
10
  ## What is Sufia?
4
11
  Sufia is a component that adds self-deposit institutional repository features to a Rails app.
5
12
  Sufia is created with Ruby on Rails and builds on the Hydra Framework.
@@ -1 +1 @@
1
- 4.0.0.beta3
1
+ 4.0.0.beta4
@@ -5,7 +5,6 @@
5
5
  this.init = function() {
6
6
  this.$label = this.$element.find('[data-search-element="label"]');
7
7
  this.$items = this.$element.find('[data-search-option]');
8
- this.$hidden = this.$element.find('input#owner[type="hidden"]');
9
8
  this.setDefault();
10
9
  }
11
10
 
@@ -26,12 +25,11 @@
26
25
 
27
26
  clicked: function($anchor) {
28
27
  this.setLabel($anchor.data('search-label'));
29
- this.$hidden.val($anchor.data('search-option'));
28
+ this.setFormAction($anchor.data('search-option'));
30
29
  },
31
30
 
32
- // Grab the "owner" value out of the hidden field
33
- getDefaultValue: function () {
34
- return this.$hidden.val();
31
+ setFormAction: function(path) {
32
+ this.$element.attr('action', path);
35
33
  },
36
34
 
37
35
  getLabelForValue: function(value) {
@@ -40,7 +38,7 @@
40
38
  },
41
39
 
42
40
  setDefault: function() {
43
- this.setLabel(this.getLabelForValue(this.getDefaultValue()));
41
+ this.setLabel(this.getLabelForValue(this.$element.attr('action')));
44
42
  },
45
43
 
46
44
  setLabel: function(label) {
@@ -91,6 +91,32 @@ $gray-lighter: #eee;
91
91
  text-decoration: none;
92
92
  }
93
93
 
94
+ .portal {
95
+ border: 1px solid $gray-lightish;
96
+ margin: 5px;
97
+ padding: 5px;
98
+ h3 {
99
+ margin-top: 10px;
100
+ }
101
+ }
102
+
103
+ .heading-tile {
104
+ border-right: 1px solid $gray-lightish;
105
+ margin-top: 10px;
106
+ margin-bottom: 10px;
107
+ text-align: center;
108
+ font-size: x-large;
109
+ font-weight: normal;
110
+ span {
111
+ display: block;
112
+ }
113
+ }
114
+
115
+ .heading-row {
116
+ border-bottom: 1px solid $gray-lightish;
117
+ //margin-left: 10px;
118
+ }
119
+
94
120
  #collection-list-container {
95
121
  .collection-list {
96
122
  li {
@@ -17,6 +17,24 @@ $gray-lighter: #eee;
17
17
  background-image: linear-gradient(to bottom, #0071BC 0%, #003457 100%);
18
18
  min-height: 4em;
19
19
 
20
+ #logo span.glyphicon {
21
+ color: #FFF;
22
+ font-size: 4em;
23
+ margin: .25em 0 0 .25em;
24
+ }
25
+
26
+ .institution_name {
27
+ font-family: 'Lato', Verdana, Arial, Helvetica;
28
+ font-size: 4em;
29
+ font-weight: 300;
30
+ margin: 0 0 0 .25em;
31
+ }
32
+
33
+ .institution_name, .institution_name a:link, .institution_name a:visited {
34
+ color: #FFF;
35
+ text-decoration: none;
36
+ }
37
+
20
38
  .navbar {
21
39
  min-height: 0px;
22
40
  margin-bottom: 0.8em;
@@ -71,18 +89,6 @@ $gray-lighter: #eee;
71
89
  }
72
90
  }
73
91
 
74
- #logo span.glyphicon {
75
- color: #FFF;
76
- font-size: 4em;
77
- margin: .25em 0 0 .25em;
78
- }
79
- .institution_name {
80
- color: #FFF;
81
- font-family: 'Lato', Verdana, Arial, Helvetica;
82
- font-size: 4em;
83
- font-weight: 300;
84
- margin: 0 0 0 .25em;
85
- }
86
92
 
87
93
  .login_button {
88
94
  margin: 1.75em 3em 0 0;
@@ -90,4 +96,7 @@ $gray-lighter: #eee;
90
96
 
91
97
  #search-form-header {
92
98
  margin-top: 7px;
99
+ }
100
+ #search-submit-header {
101
+ margin-left: -15px;
93
102
  }
@@ -1,6 +1,5 @@
1
1
  class BatchController < ApplicationController
2
2
  include Hydra::Controller::ControllerBehavior
3
- include Sufia::Noid # for normalize_identifier method
4
3
  layout "sufia-one-column"
5
4
 
6
5
  before_filter :has_access?
@@ -4,7 +4,6 @@ class CollectionsController < ApplicationController
4
4
  include Blacklight::Catalog::SearchContext
5
5
  include BlacklightAdvancedSearch::ParseBasicQ
6
6
  include BlacklightAdvancedSearch::Controller
7
- include Sufia::Noid # for normalize_identifier method
8
7
  prepend_before_filter :normalize_identifier, except: [:index, :create, :new]
9
8
  before_filter :filter_docs_with_read_access!, except: :show
10
9
  before_filter :has_access?, except: :show
@@ -15,14 +15,5 @@ module Sufia
15
15
  solr_parameters[:fq] << "#{Solrizer.solr_name("has_model", :symbol)}:\"info:fedora/afmodel:GenericFile\""
16
16
  end
17
17
 
18
- # If they've selected "owner=mine" then restrict to files I have edit access to
19
- def discovery_permissions
20
- if params['owner'] == 'mine'
21
- ["edit"]
22
- else
23
- super
24
- end
25
- end
26
-
27
18
  end
28
19
  end
@@ -12,6 +12,10 @@ module Sufia::Controller
12
12
  user_signed_in? ? current_user.ability : super
13
13
  end
14
14
 
15
+ def normalize_identifier
16
+ params[:id] = Sufia::Noid.namespaceize(params[:id])
17
+ end
18
+
15
19
  def render_404(exception)
16
20
  logger.error("Rendering 404 page due to exception: #{exception.inspect} - #{exception.backtrace if exception.respond_to? :backtrace}")
17
21
  render template: '/error/404', layout: "error", formats: [:html], status: 404
@@ -1,103 +1,53 @@
1
- require 'blacklight/catalog'
2
-
3
1
  module Sufia
4
2
  module DashboardControllerBehavior
5
3
  extend ActiveSupport::Concern
6
- include Hydra::BatchEditBehavior
7
- include Blacklight::Catalog
8
-
9
- include Hydra::Collections::SelectsCollections
10
-
4
+
11
5
  included do
12
- include Blacklight::Configurable
13
6
  include ActionView::Helpers::DateHelper
14
7
 
15
- self.copy_blacklight_config_from(CatalogController)
16
-
17
- include BlacklightAdvancedSearch::ParseBasicQ
18
- include BlacklightAdvancedSearch::Controller
19
-
20
8
  before_filter :authenticate_user!
21
- before_filter :enforce_show_permissions, only: :show
22
- before_filter :enforce_viewing_context_for_show_requests, only: :show
23
-
24
- # not filtering further with a specific access level since the catalog controller already gets the colections with edit access
25
- # if we include other access levels in this controller we will need to modify this.
26
- before_filter :find_collections, only: :index
27
9
 
28
- # This applies appropriate access controls to all solr queries (the internal method of this is overidden bellow to only include edit files)
29
- self.solr_search_params_logic += [:add_access_controls_to_solr_params]
30
-
31
- layout 'sufia-dashboard'
10
+ layout "sufia-dashboard"
32
11
  end
33
12
 
13
+ # Render our dashboard page
34
14
  def index
35
- (@response, @document_list) = get_search_results
36
- @user = current_user
37
- @events = @user.events(100)
38
- @last_event_timestamp = @user.events.first[:timestamp].to_i || 0 rescue 0
39
- @filters = params[:f] || []
40
-
15
+ gather_dashboard_information
41
16
  respond_to do |format|
42
17
  format.html { }
43
18
  format.rss { render layout: false }
44
19
  format.atom { render layout: false }
45
20
  end
46
-
47
- # set up some parameters for allowing the batch controls to show appropiately
48
- @max_batch_size = 80
49
- count_on_page = @document_list.count {|doc| batch.index(doc.id)}
50
- @disable_select_all = @document_list.count > @max_batch_size
51
- batch_size = batch.uniq.size
52
- @result_set_size = @response.response["numFound"]
53
- @empty_batch = batch.empty?
54
- @all_checked = (count_on_page == @document_list.count)
55
- @entire_result_set_selected = @response.response["numFound"] == batch_size
56
- @batch_size_on_other_page = batch_size - count_on_page
57
- @batch_part_on_other_page = (@batch_size_on_other_page) > 0
58
21
  end
59
22
 
23
+ # Returns a formated list of recent events in JSON for use with AJAX.
60
24
  def activity
61
- # reverse events since we're prepending rows. without reverse, old events wind up first
62
- events = current_user.events.reverse
63
- # filter events to include only those that have occurred since params[:since]
64
- events.select! { |event| event[:timestamp].to_i > params[:since].to_i } if params[:since]
65
- # return the event, a formatted date string, and a numerical timestamp
66
- render json: events.map { |event| [event[:action], "#{time_ago_in_words(Time.at(event[:timestamp].to_i))} ago", event[:timestamp].to_i] }
67
- rescue
68
- render json: []
69
- end
70
-
71
- # TODO: This can be removed after we upgrade to hydra-collections 2.0.1 or greater
72
- def add_collection_filter(solr_parameters, user_parameters)
73
- super(solr_parameters, user_parameters)
74
- solr_parameters[:rows] = 100
75
- end
76
-
77
-
78
-
79
- def search_action_url *args
80
- sufia.dashboard_index_path *args
25
+ render json: human_readable_user_activity
81
26
  end
82
27
 
83
28
  protected
84
- # show only files with edit permissions in lib/hydra/access_controls_enforcement.rb apply_gated_discovery
85
- def discovery_permissions
86
- ["edit"]
29
+
30
+ # Gathers all the information that we'll display in the user's dashboard.
31
+ # Override this method if you want to exclude or gather additional data elements
32
+ # in your dashboard view. You'll need to alter dashboard/index.html.erb accordingly.
33
+ def gather_dashboard_information
34
+ @user = current_user
35
+ @activity = get_user_activity
36
+ @notifications = current_user.mailbox.inbox
87
37
  end
88
38
 
89
- def show_only_files_deposited_by_current_user(solr_parameters, user_parameters)
90
- solr_parameters[:fq] ||= []
91
- solr_parameters[:fq] += [
92
- ActiveFedora::SolrService.construct_query_for_rel(depositor: current_user.user_key)
93
- ]
39
+ # Returns the most recent activity in the last 24 hours, or since a given timestamp
40
+ # specified by params[:since]
41
+ def get_user_activity
42
+ since = params[:since] ? params[:since].to_i : (DateTime.now.to_i - 86400)
43
+ current_user.events.reverse.collect { |event| event if event[:timestamp].to_i > since }.compact
94
44
  end
95
45
 
96
- def show_only_generic_files(solr_parameters, user_parameters)
97
- solr_parameters[:fq] ||= []
98
- solr_parameters[:fq] += [
99
- ActiveFedora::SolrService.construct_query_for_rel(has_model: ::GenericFile.to_class_uri)
100
- ]
46
+ # Formats the user's activities into human-readable strings used for rendering JSON
47
+ def human_readable_user_activity
48
+ get_user_activity.map do |event|
49
+ [event[:action], "#{time_ago_in_words(Time.at(event[:timestamp].to_i))} ago", event[:timestamp].to_i]
50
+ end
101
51
  end
102
52
 
103
53
  end
@@ -4,9 +4,6 @@ module Sufia
4
4
  include Hydra::Controller::DownloadBehavior
5
5
 
6
6
  included do
7
- # module mixes in normalize_identifier method
8
- include Sufia::Noid
9
-
10
7
  # moved check into the routine so we can handle the user with no access
11
8
  prepend_before_filter :normalize_identifier
12
9
  end
@@ -12,7 +12,6 @@ module Sufia
12
12
  included do
13
13
  include Hydra::Controller::ControllerBehavior
14
14
  include Blacklight::Configurable
15
- include Sufia::Noid # for normalize_identifier method
16
15
  include Sufia::FilesController::BrowseEverything
17
16
  include Sufia::FilesController::LocalIngestBehavior
18
17
  extend Sufia::FilesController::UploadCompleteBehavior
@@ -60,9 +59,7 @@ module Sufia
60
59
 
61
60
  # routed to /files/:id (DELETE)
62
61
  def destroy
63
- pid = @generic_file.noid
64
- @generic_file.destroy
65
- Sufia.queue.push(ContentDeleteEventJob.new(pid, current_user.user_key))
62
+ actor.destroy
66
63
  redirect_to self.class.destroy_complete_path(params), notice:
67
64
  render_to_string(partial: 'generic_files/asset_deleted_flash', locals: { generic_file: @generic_file })
68
65
  end
@@ -142,22 +139,16 @@ module Sufia
142
139
  end
143
140
 
144
141
  def update_version
145
- if actor.revert_content(params[:revision], datastream_id)
146
- Sufia.queue.push(ContentRestoredVersionEventJob.new(@generic_file.pid, current_user.user_key, params[:revision]))
147
- end
142
+ actor.revert_content(params[:revision], datastream_id)
148
143
  end
149
144
 
150
145
  def update_file
151
- if actor.update_content(params[:filedata], datastream_id)
152
- Sufia.queue.push(ContentNewVersionEventJob.new(@generic_file.pid, current_user.user_key))
153
- end
146
+ actor.update_content(params[:filedata], datastream_id)
154
147
  end
155
148
 
156
149
  # this is provided so that implementing application can override this behavior and map params to different attributes
157
150
  def update_metadata
158
- if actor.update_metadata(params[:generic_file], params[:visibility])
159
- Sufia.queue.push(ContentUpdateEventJob.new(@generic_file.pid, current_user.user_key))
160
- end
151
+ actor.update_metadata(params[:generic_file], params[:visibility])
161
152
  end
162
153
 
163
154
  def json_error(error, name=nil, additional_arguments={})
@@ -0,0 +1,87 @@
1
+ require 'blacklight/catalog'
2
+
3
+ module Sufia
4
+ module MyControllerBehavior
5
+ extend ActiveSupport::Concern
6
+ include Blacklight::Catalog
7
+ include Hydra::BatchEditBehavior
8
+ include Hydra::Collections::SelectsCollections
9
+
10
+ included do
11
+ include Blacklight::Configurable
12
+
13
+ self.copy_blacklight_config_from(CatalogController)
14
+
15
+ include BlacklightAdvancedSearch::ParseBasicQ
16
+ include BlacklightAdvancedSearch::Controller
17
+
18
+ before_filter :authenticate_user!
19
+ before_filter :enforce_show_permissions, only: :show
20
+ before_filter :enforce_viewing_context_for_show_requests, only: :show
21
+ before_filter :find_collections, only: :index
22
+
23
+ # This applies appropriate access controls to all solr queries (the internal method of this is overidden bellow to only include edit files)
24
+ self.solr_search_params_logic += [:add_access_controls_to_solr_params]
25
+
26
+ layout 'sufia-dashboard'
27
+ end
28
+
29
+ # specify the controller_name here to specify where we should look for
30
+ # the batch_edit menu options (_batch_edits_actions.html.erb)
31
+ def controller_name
32
+ :my
33
+ end
34
+
35
+ def index
36
+ (@response, @document_list) = get_search_results
37
+ @user = current_user
38
+ @events = @user.events(100)
39
+ @last_event_timestamp = @user.events.first[:timestamp].to_i || 0 rescue 0
40
+ @filters = params[:f] || []
41
+
42
+ # set up some parameters for allowing the batch controls to show appropiately
43
+ @max_batch_size = 80
44
+ count_on_page = @document_list.count {|doc| batch.index(doc.id)}
45
+ @disable_select_all = @document_list.count > @max_batch_size
46
+ batch_size = batch.uniq.size
47
+ @result_set_size = @response.response["numFound"]
48
+ @empty_batch = batch.empty?
49
+ @all_checked = (count_on_page == @document_list.count)
50
+ @entire_result_set_selected = @response.response["numFound"] == batch_size
51
+ @batch_size_on_other_page = batch_size - count_on_page
52
+ @batch_part_on_other_page = (@batch_size_on_other_page) > 0
53
+
54
+ respond_to do |format|
55
+ format.html { }
56
+ format.rss { render layout: false }
57
+ format.atom { render layout: false }
58
+ end
59
+ end
60
+
61
+ def search_action_url opts={}
62
+ sufia.url_for(opts)
63
+ end
64
+
65
+ protected
66
+
67
+ # show only files with edit permissions in lib/hydra/access_controls_enforcement.rb apply_gated_discovery
68
+ def discovery_permissions
69
+ ["edit"]
70
+ end
71
+
72
+ def show_only_files_deposited_by_current_user solr_parameters, user_parameters
73
+ solr_parameters[:fq] ||= []
74
+ solr_parameters[:fq] += [
75
+ ActiveFedora::SolrService.construct_query_for_rel(depositor: current_user.user_key)
76
+ ]
77
+ end
78
+
79
+ def show_only_generic_files solr_parameters, user_parameters
80
+ solr_parameters[:fq] ||= []
81
+ solr_parameters[:fq] += [
82
+ ActiveFedora::SolrService.construct_query_for_rel(has_model: ::GenericFile.to_class_uri)
83
+ ]
84
+ end
85
+
86
+ end
87
+ end