sufia 2.0.1 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +111 -0
- data/Gemfile +4 -4
- data/History.md +126 -0
- data/README.md +23 -5
- data/SUFIA_VERSION +1 -1
- data/app/assets/javascripts/sufia/multiForm.js +10 -2
- data/app/assets/stylesheets/{application-bootstrap.css → application-bootstrap.css.erb} +7 -7
- data/app/assets/stylesheets/{bootstrap.min.css → bootstrap.min.css.erb} +1 -1
- data/app/controllers/concerns/sufia/users_controller_behavior.rb +9 -3
- data/app/controllers/single_use_link_controller.rb +1 -1
- data/app/helpers/sufia_helper.rb +7 -1
- data/app/models/contact_form.rb +0 -14
- data/app/views/_user_util_links.html.erb +0 -15
- data/app/views/batch_edits/_check_all.html.erb +2 -2
- data/app/views/batch_edits/_delete_selected.html.erb +1 -1
- data/app/views/layouts/{_head-tag-content.html.erb → _head_tag_content.html.erb} +0 -0
- data/app/views/layouts/homepage.html.erb +2 -2
- data/app/views/layouts/sufia-one-column.html.erb +1 -1
- data/app/views/layouts/sufia-two-column.html.erb +1 -1
- data/app/views/users/edit.html.erb +1 -1
- data/app/views/users/show.html.erb +1 -17
- data/config/routes.rb +31 -33
- data/lib/generators/sufia/sufia_generator.rb +5 -3
- data/lib/generators/sufia/templates/catalog_controller.rb +5 -1
- data/lib/generators/sufia/templates/config/redis_config.rb +1 -14
- data/lib/sufia/batch_edits_controller_behavior.rb +1 -1
- data/lib/sufia/controller.rb +1 -1
- data/lib/sufia/dashboard_controller_behavior.rb +8 -2
- data/lib/sufia/files_controller_behavior.rb +1 -2
- data/lib/sufia/version.rb +1 -1
- data/spec/active_fedora/unsaved_digital_object_spec.rb +1 -15
- data/spec/controllers/authorities_controller_spec.rb +1 -15
- data/spec/controllers/batch_controller_spec.rb +10 -16
- data/spec/controllers/batch_edits_controller_spec.rb +1 -1
- data/spec/controllers/catalog_controller_spec.rb +1 -15
- data/spec/controllers/dashboard_controller_spec.rb +23 -17
- data/spec/controllers/downloads_controller_spec.rb +1 -15
- data/spec/controllers/generic_files_controller_spec.rb +18 -32
- data/spec/controllers/mailbox_controller_spec.rb +1 -15
- data/spec/controllers/single_use_link_controller_spec.rb +6 -13
- data/spec/controllers/users_controller_spec.rb +27 -41
- data/spec/factories/users.rb +5 -14
- data/spec/features/browse_dashboard_files.rb +21 -0
- data/spec/features/browse_files.rb +31 -0
- data/spec/features/contact_form.rb +99 -0
- data/spec/features/display_dashboard.rb +46 -0
- data/spec/features/ingest_upload_files.rb +24 -0
- data/spec/features/users_spec.rb +25 -0
- data/spec/helpers/generic_file_helper_spec.rb +10 -3
- data/spec/helpers/sufia_helper_spec.rb +1 -1
- data/spec/lib/sufia/id_service_spec.rb +1 -15
- data/spec/models/audit_job_spec.rb +1 -15
- data/spec/models/batch_spec.rb +1 -15
- data/spec/models/batch_update_job_spec.rb +3 -16
- data/spec/models/characterize_job_spec.rb +4 -4
- data/spec/models/checksum_audit_log_spec.rb +1 -15
- data/spec/models/event_jobs_spec.rb +1 -15
- data/spec/models/file_content_datastream_spec.rb +5 -19
- data/spec/models/fits_datastream_spec.rb +1 -15
- data/spec/models/generic_file/web_form_spec.rb +34 -0
- data/spec/models/generic_file_spec.rb +11 -39
- data/spec/models/local_authority_spec.rb +3 -15
- data/spec/models/properties_datastream_spec.rb +1 -1
- data/spec/models/single_use_link_spec.rb +1 -1
- data/spec/models/solr_document_spec.rb +1 -1
- data/spec/models/transcode_audio_job_spec.rb +1 -1
- data/spec/models/transcode_video_job_spec.rb +1 -1
- data/spec/models/trophy_spec.rb +1 -1
- data/spec/models/unzip_job_spec.rb +1 -15
- data/spec/models/user_spec.rb +1 -15
- data/spec/rake/sufia_fixtures_spec.rb +3 -17
- data/spec/routing/route_spec.rb +7 -21
- data/spec/spec_helper.rb +8 -20
- data/spec/support/features.rb +6 -0
- data/spec/support/features/session_helpers.rb +21 -0
- data/spec/support/lib/generators/test_app_generator.rb +4 -0
- data/spec/views/batch_edits/check_all_spec.rb +6 -4
- data/sufia-models/app/models/checksum_audit_log.rb +1 -15
- data/sufia-models/app/models/domain_term.rb +3 -15
- data/sufia-models/app/models/geo_names_resource.rb +1 -13
- data/sufia-models/app/models/local_authority.rb +12 -17
- data/sufia-models/app/models/local_authority_entry.rb +1 -15
- data/sufia-models/app/models/single_use_link.rb +2 -3
- data/sufia-models/app/models/trophy.rb +1 -1
- data/sufia-models/app/models/version_committer.rb +1 -15
- data/sufia-models/lib/sufia/models.rb +6 -2
- data/sufia-models/lib/sufia/models/engine.rb +1 -1
- data/sufia-models/lib/sufia/models/generic_file.rb +3 -0
- data/sufia-models/lib/sufia/models/generic_file/accessible_attributes.rb +87 -0
- data/sufia-models/lib/sufia/models/generic_file/permissions.rb +2 -1
- data/sufia-models/lib/sufia/models/generic_file/web_form.rb +4 -1
- data/sufia-models/lib/sufia/models/user.rb +9 -2
- data/sufia-models/lib/sufia/models/version.rb +1 -1
- data/{lib → sufia-models/lib}/tasks/resque.rake +0 -0
- data/sufia-models/sufia-models.gemspec +13 -11
- data/sufia.gemspec +1 -3
- data/tasks/sufia-dev.rake +21 -10
- metadata +30 -84
- data/config/cucumber.yml +0 -8
- data/features/browse_dashboard_files.feature +0 -16
- data/features/browse_files.feature +0 -16
- data/features/contact_form.feature +0 -86
- data/features/display_dashboard.feature +0 -42
- data/features/ingest_upload_files.feature +0 -21
- data/features/step_definitions/edit_metadata_steps.rb +0 -89
- data/features/step_definitions/fixture_steps.rb +0 -35
- data/features/step_definitions/show_document_steps.rb +0 -103
- data/features/step_definitions/sufia.rb +0 -69
- data/features/step_definitions/user_steps.rb +0 -58
- data/features/step_definitions/web_steps.rb +0 -235
- data/features/support/cleanup.rb +0 -19
- data/features/support/env.rb +0 -90
- data/features/support/headless.rb +0 -26
- data/features/support/paths.rb +0 -101
- data/features/users.feature +0 -18
- data/spec/lib/sufia/role_mapper_spec.rb +0 -28
- data/spec/support/Gemfile +0 -24
- data/spec/views/single_user_link/download.html.erb_spec.rb +0 -5
- data/spec/views/single_user_link/generate_download.html.erb_spec.rb +0 -5
- data/spec/views/single_user_link/generate_show.html.erb_spec.rb +0 -5
- data/spec/views/single_user_link/show.html.erb_spec.rb +0 -5
- data/tasks/cucumber.rake +0 -72
@@ -73,7 +73,7 @@ class SingleUseLinkController < DownloadsController
|
|
73
73
|
def lookup_hash
|
74
74
|
id = params[:id]
|
75
75
|
# invalid hash send not found
|
76
|
-
link = SingleUseLink.
|
76
|
+
link = SingleUseLink.where(downloadKey:id).first || not_found
|
77
77
|
|
78
78
|
# expired hash send not found
|
79
79
|
now = DateTime.now
|
data/app/helpers/sufia_helper.rb
CHANGED
@@ -96,8 +96,14 @@ module SufiaHelper
|
|
96
96
|
if item.is_a? Array
|
97
97
|
render_array_facet_value(facet_solr_field, item, options)
|
98
98
|
end
|
99
|
-
|
99
|
+
if params[:controller] == "dashboard"
|
100
|
+
path = sufia.url_for(add_facet_params_and_redirect(facet_solr_field, item.value).merge(:only_path=>true))
|
100
101
|
(link_to_unless(options[:suppress_link], item.value, path, :class=>"facet_select") + " " + render_facet_count(item.hits)).html_safe
|
102
|
+
else
|
103
|
+
# This is for controllers that use this helper method that are defined outside Sufia
|
104
|
+
path = url_for(add_facet_params_and_redirect(facet_solr_field, item.value).merge(:only_path=>true))
|
105
|
+
(link_to_unless(options[:suppress_link], item.value, path, :class=>"facet_select") + " " + render_facet_count(item.hits)).html_safe
|
106
|
+
end
|
101
107
|
end
|
102
108
|
|
103
109
|
# link_back_to_catalog(:label=>'Back to Search')
|
data/app/models/contact_form.rb
CHANGED
@@ -1,17 +1,3 @@
|
|
1
|
-
# Copyright © 2012 The Pennsylvania State University
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
1
|
require 'mail_form'
|
16
2
|
|
17
3
|
class ContactForm < MailForm::Base
|
@@ -1,18 +1,3 @@
|
|
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
|
<% if user_signed_in? %>
|
17
2
|
<%= render :partial => 'users/notify_link' %>
|
18
3
|
<a href="<%= sufia.profile_path(current_user) %>" class="btn btn-small " title="click for User Profile"><i class="icon-user"> </i><%= current_user.name %></a>
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<%= check_box_tag 'check_all', 'yes', @all_checked, :disabled => ((@batch_size_on_other_page + @document_list.count) > @max_batch_size) %>
|
4
4
|
<a class="dropdown-toggle" data-toggle="dropdown" href="#"><span class="icon-cog" title="click for selection options"></span></a>
|
5
5
|
<ul class="dropdown-menu">
|
6
|
-
<%= render partial:
|
6
|
+
<%= render partial: "#{controller_name}/batch_edits_actions" %>
|
7
7
|
</ul>
|
8
8
|
</div>
|
9
|
-
<% end %>
|
9
|
+
<% end %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= form_tag(batch_edits_path, :method => :
|
1
|
+
<%= form_tag(batch_edits_path, :method => :delete, :class=> "batch-select-all hidden", "data-behavior" => 'batch-select-all') do -%>
|
2
2
|
<%= hidden_field_tag('update_type', 'delete_all') %>
|
3
3
|
<%= submit_tag("Delete Selected", :class=>'batch-all-button btn btn-primary submits-batches', :data => { :confirm => "Deleting a file from #{t('sufia.product_name')} is permanent. Click OK to delete this file from #{t('sufia.product_name')}, or Cancel to cancel this operation"}) %>
|
4
4
|
<% end %>
|
File without changes
|
@@ -17,7 +17,7 @@ limitations under the License.
|
|
17
17
|
<!DOCTYPE html>
|
18
18
|
<html>
|
19
19
|
<head>
|
20
|
-
<%= render :partial => "layouts/
|
20
|
+
<%= render :partial => "layouts/head_tag_content"%>
|
21
21
|
</head>
|
22
22
|
|
23
23
|
<body>
|
@@ -53,4 +53,4 @@ limitations under the License.
|
|
53
53
|
<%= render partial: '/footer' %>
|
54
54
|
<div id="ajax-modal" class="modal hide" tabindex="-1"></div>
|
55
55
|
</body>
|
56
|
-
</html>
|
56
|
+
</html>
|
@@ -21,7 +21,7 @@ $("a[rel=popover]").popover({ html: true });
|
|
21
21
|
|
22
22
|
<h1>Edit Profile</h1>
|
23
23
|
<div class="span45 well">
|
24
|
-
<%= form_for @user, :url => sufia.
|
24
|
+
<%= form_for @user, :url => sufia.profile_path(URI.escape(@user.to_s, '@.')), :html => {:multipart => true, :class => 'form-horizontal' } do |f| %>
|
25
25
|
<div class="control-group">
|
26
26
|
<%= f.label :avatar, '<i class="icon-camera-retro"></i> Change picture'.html_safe, :class => "control-label" %>
|
27
27
|
<div class="controls">
|
@@ -1,19 +1,3 @@
|
|
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
|
-
|
17
1
|
<h1 class="span110">
|
18
2
|
<span class="span60">
|
19
3
|
<%= image_tag @user.avatar.url(:thumb), :width => 100 %>
|
@@ -24,7 +8,7 @@ limitations under the License.
|
|
24
8
|
<% if not signed_in? %>
|
25
9
|
<!-- sign in to access social functions -->
|
26
10
|
<% elsif current_user == @user %>
|
27
|
-
<a class="btn btn-primary" href="<%= sufia.edit_profile_path(
|
11
|
+
<a class="btn btn-primary" href="<%= sufia.edit_profile_path(@user) %>"><i class="icon-edit"></i> Edit Your Profile </a>
|
28
12
|
<% elsif current_user.following?(@user) %>
|
29
13
|
<a class="btn btn-primary" href="<%= sufia.unfollow_user_path(@user.to_s) %>"><i class="icon-eye-close"></i> Unfollow </a>
|
30
14
|
<% else %>
|
data/config/routes.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
Sufia::Engine.routes.draw do
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
get 'single_use_link/generate_download/:id' => 'single_use_link#generate_download', :as => :generate_download_single_use_link
|
3
|
+
get 'single_use_link/generate_show/:id' => 'single_use_link#generate_show', :as => :generate_show_single_use_link
|
4
|
+
get 'single_use_link/show/:id' => 'single_use_link#show', :as => :show_single_use_link
|
5
|
+
get 'single_use_link/download/:id' => 'single_use_link#download', :as => :download_single_use_link
|
6
6
|
|
7
|
-
match 'batch_edits/clear' => 'batch_edits#clear', :as => :batch_edits_clear
|
7
|
+
match 'batch_edits/clear' => 'batch_edits#clear', :as => :batch_edits_clear, via: [:get, :post]
|
8
8
|
|
9
9
|
# Route path-less requests to the index view of catalog
|
10
10
|
root :to => "catalog#index"
|
11
11
|
|
12
12
|
# "Recently added files" route for catalog index view
|
13
|
-
|
13
|
+
get "catalog/recent" => "catalog#recent", :as => :catalog_recent
|
14
14
|
|
15
15
|
# "Notifications" route for catalog index view
|
16
|
-
|
16
|
+
get "users/notifications_number" => "users#notifications_number", :as => :user_notify
|
17
17
|
|
18
18
|
# Generic file routes
|
19
19
|
resources :generic_files, :path => :files, :except => :index do
|
@@ -27,21 +27,19 @@ Sufia::Engine.routes.draw do
|
|
27
27
|
resources :downloads, :only => "show"
|
28
28
|
|
29
29
|
# Messages
|
30
|
-
|
31
|
-
match 'notifications/delete_all' => 'mailbox#delete_all', :
|
32
|
-
match 'notifications/:uid/delete' => 'mailbox#delete', :
|
30
|
+
get 'notifications' => 'mailbox#index', :as => :mailbox
|
31
|
+
match 'notifications/delete_all' => 'mailbox#delete_all', as: :mailbox_delete_all, via: [:get, :post]
|
32
|
+
match 'notifications/:uid/delete' => 'mailbox#delete', as: :mailbox_delete, via: [:get, :post]
|
33
33
|
|
34
34
|
# User profile & follows
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
match 'users/:uid/follow' => 'users#follow', :as => :follow_user
|
44
|
-
match 'users/:uid/unfollow' => 'users#unfollow', :as => :unfollow_user
|
35
|
+
resources :users, only: [:index, :show, :edit, :update], as: :profiles
|
36
|
+
# get 'users' => 'users#index', :as => :profiles
|
37
|
+
# get 'users/:uid' => 'users#show', :as => :profile
|
38
|
+
# get 'users/:uid/edit' => 'users#edit', :as => :edit_profile
|
39
|
+
# put 'users/:uid/update' => 'users#update', :as => :update_profile
|
40
|
+
post "users/:id/trophy" => "users#toggle_trophy", :as => :update_trophy_user
|
41
|
+
match 'users/:id/follow' => 'users#follow', :as => :follow_user, via: [:get, :post]
|
42
|
+
match 'users/:id/unfollow' => 'users#unfollow', :as => :unfollow_user, via: [:get, :post]
|
45
43
|
|
46
44
|
# Dashboard routes (based partly on catalog routes)
|
47
45
|
resources 'dashboard', :only=>:index do
|
@@ -54,23 +52,23 @@ Sufia::Engine.routes.draw do
|
|
54
52
|
|
55
53
|
|
56
54
|
# advanced routes for advanced search
|
57
|
-
|
55
|
+
get 'search' => 'advanced#index', :as => :advanced
|
58
56
|
|
59
57
|
# Authority vocabulary queries route
|
60
|
-
|
58
|
+
get 'authorities/:model/:term' => 'authorities#query'
|
61
59
|
|
62
60
|
# LDAP-related routes for group and user lookups
|
63
|
-
|
64
|
-
|
65
|
-
|
61
|
+
get 'directory/user/:uid' => 'directory#user'
|
62
|
+
get 'directory/user/:uid/:attribute' => 'directory#user_attribute'
|
63
|
+
get 'directory/group/:cn' => 'directory#group', :constraints => { :cn => /.*/ }
|
66
64
|
|
67
65
|
# Batch edit routes
|
68
|
-
|
69
|
-
|
66
|
+
get 'batches/:id/edit' => 'batch#edit', :as => :batch_edit
|
67
|
+
post 'batches/:id/' => 'batch#update', :as => :batch_generic_files
|
70
68
|
|
71
69
|
# Contact form routes
|
72
|
-
|
73
|
-
|
70
|
+
post 'contact' => 'contact_form#create', :as => :contact_form_index
|
71
|
+
get 'contact' => 'contact_form#new'
|
74
72
|
|
75
73
|
# Resque monitoring routes. Don't bother with this route unless Sufia::ResqueAdmin
|
76
74
|
# has been defined in the initalizers.
|
@@ -83,15 +81,15 @@ Sufia::Engine.routes.draw do
|
|
83
81
|
end
|
84
82
|
|
85
83
|
# Static page routes (workaround)
|
86
|
-
|
84
|
+
get ':action' => 'static#:action', :constraints => { :action => /about|help|terms|zotero|mendeley|agreement|subject_libraries|versions/ }, :as => :static
|
87
85
|
|
88
86
|
#Single use link errors
|
89
|
-
|
90
|
-
|
87
|
+
get 'single_use_link/not_found' => 'errors#single_use_error'
|
88
|
+
get 'single_use_link/expired' => 'errors#single_use_error'
|
91
89
|
|
92
90
|
# Catch-all (for routing errors)
|
93
91
|
unless Rails.env.development? || Rails.env.test?
|
94
|
-
match '*error' => 'errors#routing'
|
92
|
+
match '*error' => 'errors#routing', via: [:get, :post]
|
95
93
|
end
|
96
94
|
|
97
95
|
end
|
@@ -62,7 +62,7 @@ add_groups_to_users.rb create_local_authorities.rb create_trophies.rb}.each do
|
|
62
62
|
" \n# Adds Sufia behaviors into the application controller \n" +
|
63
63
|
" include Sufia::Controller\n"
|
64
64
|
end
|
65
|
-
gsub_file file_path, "layout 'blacklight'", "layout
|
65
|
+
gsub_file file_path, "layout 'blacklight'", "layout :search_layout"
|
66
66
|
else
|
67
67
|
puts " \e[31mFailure\e[0m Could not find #{file_path}. To add Sufia behaviors to your Controllers, you must include the Sufia::Controller module in the Controller class definition."
|
68
68
|
end
|
@@ -86,9 +86,11 @@ add_groups_to_users.rb create_local_authorities.rb create_trophies.rb}.each do
|
|
86
86
|
sentinel = /HydraHead.add_routes\(self\)/
|
87
87
|
inject_into_file 'config/routes.rb', "\n #{routing_code}\n", { :after => sentinel, :verbose => false }
|
88
88
|
|
89
|
-
routing_code = "
|
89
|
+
routing_code = "\n # This must be the very last route in the file because it has a catch all route for 404 errors.
|
90
|
+
# This behavior seems to show up only in production mode.
|
91
|
+
mount Sufia::Engine => '/'\n"
|
90
92
|
sentinel = /devise_for :users/
|
91
|
-
inject_into_file 'config/routes.rb',
|
93
|
+
inject_into_file 'config/routes.rb', routing_code, { :after => sentinel, :verbose => false }
|
92
94
|
|
93
95
|
end
|
94
96
|
|
@@ -56,7 +56,7 @@ class CatalogController < ApplicationController
|
|
56
56
|
|
57
57
|
def recent_me
|
58
58
|
if user_signed_in?
|
59
|
-
(_, @recent_user_documents) = get_search_results(:q =>
|
59
|
+
(_, @recent_user_documents) = get_search_results(:q =>filter_mine,
|
60
60
|
:sort=>sort_field, :rows=>4)
|
61
61
|
end
|
62
62
|
end
|
@@ -377,6 +377,10 @@ class CatalogController < ApplicationController
|
|
377
377
|
"{!lucene q.op=AND df=#{depositor}}-#{current_user.user_key}"
|
378
378
|
end
|
379
379
|
|
380
|
+
def filter_mine
|
381
|
+
"{!lucene q.op=AND df=#{depositor}}#{current_user.user_key}"
|
382
|
+
end
|
383
|
+
|
380
384
|
def sort_field
|
381
385
|
"#{Solrizer.solr_name('system_create', :sortable)} desc"
|
382
386
|
end
|
@@ -1,17 +1,3 @@
|
|
1
|
-
# Copyright © 2012 The Pennsylvania State University
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
1
|
if defined?(PhusionPassenger)
|
16
2
|
PhusionPassenger.on_event(:starting_worker_process) do |forked|
|
17
3
|
# We're in smart spawning mode.
|
@@ -23,6 +9,7 @@ if defined?(PhusionPassenger)
|
|
23
9
|
# The important two lines
|
24
10
|
$redis.client.disconnect if $redis
|
25
11
|
$redis = Redis.new(host: config[:host], port: config[:port], thread_safe: true) rescue nil
|
12
|
+
Resque.redis = $redis
|
26
13
|
Resque.redis.client.reconnect if Resque.redis
|
27
14
|
end
|
28
15
|
end
|
@@ -34,7 +34,7 @@ module Sufia
|
|
34
34
|
|
35
35
|
# map the permissions to parameter like input so that the assign will work
|
36
36
|
# todo sort the access level some how...
|
37
|
-
perm_param ={'user'=>{},'group'=>{"public"=>"
|
37
|
+
perm_param ={'user'=>{},'group'=>{"public"=>"read"}}
|
38
38
|
permissions.each{ |perm| perm_param[perm[:type]][perm[:name]] = perm[:access]}
|
39
39
|
@show_file.permissions = HashWithIndifferentAccess.new(perm_param)
|
40
40
|
end
|
data/lib/sufia/controller.rb
CHANGED
@@ -52,7 +52,7 @@ module Sufia::Controller
|
|
52
52
|
@batches=[]
|
53
53
|
return if action_name == "index" && controller_name == "mailbox"
|
54
54
|
if user_signed_in?
|
55
|
-
@notify_number= current_user.mailbox.inbox(:unread => true).count
|
55
|
+
@notify_number= current_user.mailbox.inbox(:unread => true).count
|
56
56
|
@batches=current_user.mailbox.inbox.map {|msg| msg.last_message.body[/<a class="batchid ui-helper-hidden">(.*)<\/a>The file(.*)/,1]}.select{|val| !val.blank?}
|
57
57
|
end
|
58
58
|
end
|
@@ -44,8 +44,14 @@ module Sufia
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def index
|
47
|
-
|
48
|
-
|
47
|
+
if params[:controller] == "dashboard"
|
48
|
+
extra_head_content << view_context.auto_discovery_link_tag(:rss, sufia.url_for(params.merge(:format => 'rss')), :title => "RSS for results")
|
49
|
+
extra_head_content << view_context.auto_discovery_link_tag(:atom, sufia.url_for(params.merge(:format => 'atom')), :title => "Atom for results")
|
50
|
+
else
|
51
|
+
# This is for controllers that use this behavior that are defined outside Sufia
|
52
|
+
extra_head_content << view_context.auto_discovery_link_tag(:rss, url_for(params.merge(:format => 'rss')), :title => "RSS for results")
|
53
|
+
extra_head_content << view_context.auto_discovery_link_tag(:atom, url_for(params.merge(:format => 'atom')), :title => "Atom for results")
|
54
|
+
end
|
49
55
|
(@response, @document_list) = get_search_results
|
50
56
|
@user = current_user
|
51
57
|
@events = @user.events(100)
|
@@ -225,8 +225,7 @@ module Sufia
|
|
225
225
|
|
226
226
|
# this is provided so that implementing application can override this behavior and map params to different attributes
|
227
227
|
def update_metadata
|
228
|
-
|
229
|
-
@generic_file.attributes = valid_attributes
|
228
|
+
@generic_file.attributes = @generic_file.sanitize_attributes(params[:generic_file])
|
230
229
|
@generic_file.set_visibility(params[:visibility])
|
231
230
|
@generic_file.date_modified = DateTime.now
|
232
231
|
end
|
data/lib/sufia/version.rb
CHANGED
@@ -1,18 +1,4 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'spec_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
16
2
|
|
17
3
|
describe ActiveFedora::UnsavedDigitalObject do
|
18
4
|
it "should have an ARK-style pid" do
|
@@ -1,18 +1,4 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'spec_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
16
2
|
|
17
3
|
describe AuthoritiesController do
|
18
4
|
describe "#query" do
|
@@ -1,18 +1,4 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
require 'spec_helper'
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
16
2
|
|
17
3
|
describe BatchController do
|
18
4
|
before do
|
@@ -48,7 +34,7 @@ describe BatchController do
|
|
48
34
|
end
|
49
35
|
it "should enqueue a batch update job" do
|
50
36
|
params = {'generic_file' => {'read_groups_string' => '', 'read_users_string' => 'archivist1, archivist2', 'tag' => ['']}, 'id' => @batch.pid, 'controller' => 'batch', 'action' => 'update'}
|
51
|
-
s1 =
|
37
|
+
s1 = double('one')
|
52
38
|
BatchUpdateJob.should_receive(:new).with(@user.user_key, params).and_return(s1)
|
53
39
|
Sufia.queue.should_receive(:push).with(s1).once
|
54
40
|
post :update, :id=>@batch.pid, "generic_file"=>{"read_groups_string"=>"", "read_users_string"=>"archivist1, archivist2", "tag"=>[""]}
|
@@ -63,7 +49,15 @@ describe BatchController do
|
|
63
49
|
flash[:notice].should include("Your files are being processed")
|
64
50
|
end
|
65
51
|
end
|
52
|
+
|
66
53
|
describe "when user has edit permissions on a file" do
|
54
|
+
it "should set the groups" do
|
55
|
+
post :update, :id=>@batch.pid, "generic_file"=>{"permissions"=>{"group"=>{"public"=>"1", "registered"=>"2"}}}
|
56
|
+
@file.reload.read_groups.should == []
|
57
|
+
@file.reload.edit_groups.should == []
|
58
|
+
response.should redirect_to @routes.url_helpers.dashboard_index_path
|
59
|
+
end
|
60
|
+
|
67
61
|
it "should set the users with read access" do
|
68
62
|
post :update, :id=>@batch.pid, "generic_file"=>{"read_groups_string"=>"", "read_users_string"=>"archivist1, archivist2", "tag"=>[""]}
|
69
63
|
file = GenericFile.find(@file.pid)
|