enju_library 0.2.0.beta.1 → 0.2.0.beta.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/concerns/enju_library/controller.rb +218 -0
- data/app/controllers/user_export_files_controller.rb +116 -0
- data/app/controllers/user_groups_controller.rb +118 -0
- data/app/controllers/user_import_files_controller.rb +129 -0
- data/app/controllers/user_import_results_controller.rb +57 -0
- data/app/mailers/notifier.rb +30 -0
- data/app/models/user_export_file.rb +67 -0
- data/app/models/user_export_file_state_machine.rb +15 -0
- data/app/models/user_export_file_transition.rb +20 -0
- data/app/models/user_group.rb +29 -0
- data/app/models/user_import_file.rb +352 -0
- data/app/models/user_import_file_state_machine.rb +19 -0
- data/app/models/user_import_file_transition.rb +20 -0
- data/app/models/user_import_result.rb +20 -0
- data/app/policies/user_export_file_policy.rb +21 -0
- data/app/policies/user_group_policy.rb +22 -0
- data/app/policies/user_import_file_policy.rb +21 -0
- data/app/policies/user_import_result_policy.rb +21 -0
- data/app/views/accepts/index.js.slim +3 -0
- data/app/views/libraries/_map.html+phone.slim +4 -0
- data/app/views/libraries/show.html+phone.slim +32 -0
- data/app/views/libraries/show.js.slim +3 -0
- data/app/views/shelves/show.html+phone.slim +33 -0
- data/app/views/user_export_files/_form.html.erb +12 -0
- data/app/views/user_export_files/edit.html.erb +6 -0
- data/app/views/user_export_files/index.html.erb +44 -0
- data/app/views/user_export_files/new.html.erb +16 -0
- data/app/views/user_export_files/show.html.erb +36 -0
- data/app/views/user_groups/_form.html.erb +40 -0
- data/app/views/user_groups/edit.html.erb +13 -0
- data/app/views/user_groups/index.html.erb +51 -0
- data/app/views/user_groups/new.html.erb +12 -0
- data/app/views/user_groups/show.html.erb +68 -0
- data/app/views/user_import_files/_form.html.erb +61 -0
- data/app/views/user_import_files/_results.html.erb +22 -0
- data/app/views/user_import_files/edit.html.erb +6 -0
- data/app/views/user_import_files/index.html.erb +45 -0
- data/app/views/user_import_files/new.html.erb +60 -0
- data/app/views/user_import_files/show.html.erb +85 -0
- data/app/views/user_import_results/_form.html.erb +29 -0
- data/app/views/user_import_results/_list.html.erb +22 -0
- data/app/views/user_import_results/_list_lines.html.erb +24 -0
- data/app/views/user_import_results/index.html.erb +25 -0
- data/app/views/user_import_results/index.txt.erb +3 -0
- data/app/views/user_import_results/show.html.erb +33 -0
- data/{spec/dummy/db → db}/migrate/077_create_user_groups.rb +0 -0
- data/{spec/dummy/db → db}/migrate/20110318183304_add_valid_period_for_new_user_to_user_group.rb +0 -0
- data/{spec/dummy/db → db}/migrate/20140110122216_create_user_import_files.rb +1 -1
- data/{spec/dummy/db → db}/migrate/20140110131010_create_user_import_results.rb +0 -0
- data/{spec/dummy/db → db}/migrate/20140524074813_create_user_import_file_transitions.rb +0 -0
- data/{spec/dummy/db → db}/migrate/20140628072217_add_user_encoding_to_user_import_file.rb +0 -0
- data/{spec/dummy/db → db}/migrate/20140709113413_create_user_export_files.rb +0 -0
- data/{spec/dummy/db → db}/migrate/20140709113905_create_user_export_file_transitions.rb +0 -0
- data/{spec/dummy/db → db}/migrate/20140720170714_add_default_library_id_to_user_import_file.rb +0 -0
- data/{spec/dummy/db → db}/migrate/20140720170735_add_default_user_group_id_to_user_import_file.rb +0 -0
- data/db/migrate/20150506105356_add_error_message_to_user_import_result.rb +5 -0
- data/db/migrate/20160610093229_add_html_snippet_to_library_group.rb +5 -0
- data/db/migrate/20160627232219_add_most_recent_to_user_import_file_transitions.rb +9 -0
- data/db/migrate/20160627232316_add_most_recent_to_user_export_file_transitions.rb +9 -0
- data/lib/enju_library/engine.rb +3 -1
- data/lib/enju_library/version.rb +1 -1
- data/spec/controllers/user_export_files_controller_spec.rb +296 -0
- data/spec/controllers/user_groups_controller_spec.rb +443 -0
- data/spec/controllers/user_import_files_controller_spec.rb +305 -0
- data/spec/controllers/user_import_results_controller_spec.rb +154 -0
- data/spec/dummy/app/controllers/application_controller.rb +2 -2
- data/spec/dummy/config/application.rb +0 -2
- data/spec/dummy/db/migrate/055_create_bookmarks.rb +22 -0
- data/spec/dummy/db/migrate/090_create_search_histories.rb +31 -0
- data/spec/dummy/db/migrate/20081212151614_create_bookmark_stats.rb +13 -0
- data/spec/dummy/db/migrate/20081212151820_create_bookmark_stat_has_manifestations.rb +13 -0
- data/spec/dummy/db/migrate/20100222124420_add_allow_bookmark_external_url_to_library_group.rb +9 -0
- data/spec/dummy/db/migrate/20100525171356_acts_as_taggable_on_migration.rb +30 -0
- data/spec/dummy/db/migrate/20100623173800_rename_search_history_version_to_sru_version.rb +9 -0
- data/spec/dummy/db/migrate/20111129044509_add_pickup_location_to_reserve.rb +6 -0
- data/spec/dummy/db/migrate/20120418121539_add_save_search_history_to_user.rb +5 -0
- data/spec/dummy/db/migrate/20140524135607_create_bookmark_stat_transitions.rb +18 -0
- data/spec/dummy/db/migrate/20140811132912_add_save_search_history_to_profile.rb +5 -0
- data/spec/dummy/db/migrate/20140812093836_add_share_bookmarks_to_profile.rb +5 -0
- data/spec/dummy/db/migrate/20150106001709_create_demands.rb +14 -0
- data/spec/dummy/db/migrate/20150421023923_create_identities.rb +15 -0
- data/spec/dummy/db/migrate/20151126005552_add_provider_to_identity.rb +5 -0
- data/spec/dummy/db/migrate/20160703184619_add_most_recent_to_reserve_transitions.rb +9 -0
- data/spec/dummy/db/migrate/20160703184650_add_most_recent_to_manifestation_checkout_stat_transitions.rb +9 -0
- data/spec/dummy/db/migrate/20160703184723_add_most_recent_to_manifestation_reserve_stat_transitions.rb +9 -0
- data/spec/dummy/db/migrate/20160703184747_add_most_recent_to_user_checkout_stat_transitions.rb +9 -0
- data/spec/dummy/db/migrate/20160703184805_add_most_recent_to_user_reserve_stat_transitions.rb +9 -0
- data/spec/dummy/db/migrate/20160703190209_add_foreign_key_on_manifestation_id_to_reserve.rb +5 -0
- data/spec/dummy/db/schema.rb +141 -6
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/001/original/user_export_file_20160808-8463-13fk7qo.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/001/original/user_export_file_20160808-8463-y41sj6.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/001/original/user_export_file_20160808-8517-1tzre93.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/001/original/user_export_file_20160808-8517-qait5x.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/001/original/user_export_file_20160808-8605-17zb3sz.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/001/original/user_export_file_20160808-8605-1bpp9w8.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-10113-ycu8m8.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-10296-1w0qa4q.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-10532-3gf0e4.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-10743-1986tss.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-10850-131ca5h.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-11057-lrwhh.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-11201-1j3f8z4.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-8698-1cv7l1l.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-8788-1j021tn.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-8964-10it3ay.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-9184-ramwb2.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-9381-1ltvlr5.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-9568-1xno5kz.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-9694-1xvbn9r.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-9796-1s8wttm.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/003/original/user_export_file_20160808-9976-os18dm.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-10113-i50cx9.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-10113-yfyk1q.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-10296-mwlqee.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-10296-q7cj81.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-10532-11e6ke6.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-10532-19zrpc6.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-10743-126qknn.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-10743-1yr9gk3.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-10850-1h0ufaw.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-10850-1j6rz0a.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-11057-4u0q76.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-11057-xkxnw0.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-11201-1pbhweq.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-11201-oe7c58.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-8698-becrga.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-8698-n6a7dl.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-8788-kcq4ud.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-8788-pk5u5w.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-8964-1it6ent.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-8964-sevvj9.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-9184-1wya34t.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-9184-53qr2e.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-9381-18m5cay.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-9381-1o6dbyx.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-9568-1rg8mif.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-9568-p2ibx2.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-9694-1lpp5g6.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-9694-1vbkp9i.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-9796-4auzfe.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-9796-is0c1e.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-9976-1n5tevc.txt +8 -0
- data/spec/dummy/private/system/user_export_files/user_exports/000/000/004/original/user_export_file_20160808-9976-1ygxnz1.txt +8 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/001/original/user_import_file_sample.tsv +10 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/001/original/user_import_file_sample_long.tsv +15 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/001/original/user_update_file.tsv +4 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/001/original/user_update_file2.tsv +2 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/001/original/user_update_file3.tsv +2 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/001/original/user_update_file4.tsv +2 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/003/original/user_import_file_sample.tsv +10 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/003/original/user_import_file_sample_long.tsv +15 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/003/original/user_update_file.tsv +4 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/003/original/user_update_file2.tsv +2 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/003/original/user_update_file3.tsv +2 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/003/original/user_update_file4.tsv +2 -0
- data/spec/dummy/private/system/user_import_files/user_imports/000/000/004/original/user_delete_file.tsv +4 -0
- data/spec/factories/checkout.rb +9 -0
- data/spec/factories/user_group.rb +5 -0
- data/spec/fixtures/message_templates.yml +41 -20
- data/spec/fixtures/user_export_files.yml +25 -0
- data/spec/fixtures/user_groups.yml +19 -0
- data/spec/fixtures/user_import_files.yml +51 -0
- data/spec/fixtures/user_import_results.yml +26 -0
- data/spec/fixtures/user_reserve_stats.yml +2 -3
- data/spec/models/user_export_file_spec.rb +30 -0
- data/spec/models/user_group_spec.rb +37 -0
- data/spec/models/user_import_file_spec.rb +220 -0
- data/spec/models/user_import_result_spec.rb +20 -0
- data/spec/support/devise.rb +2 -2
- data/spec/views/user_export_files/new.html.erb_spec.rb +19 -0
- data/spec/views/user_import_results/index.html.erb_spec.rb +29 -0
- metadata +358 -30
- data/spec/dummy/tmp/cache/4AD/470/country_all +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a2494613d957bc12ca4d509925dfe3023afec50
|
4
|
+
data.tar.gz: 966e285abe5de79de1bc10b646fdee8e8190b23b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0bda3df1f128edbb1c1f9430c72933496c7f0ccb6b30d1bad37ca48fe37aeb0161ff29d7aa69292e578a529ddc95eed2c2fe666cbbe3a2961cc16ff2e23b6227
|
7
|
+
data.tar.gz: 7853d79bc73de17da6bfeff9c84ae4f4bff422f70549b5740422dcdb0748cd9f3ae8af3cbb6b373477a8379f9ade4601776f7b9782c153793810cad560eb9a64
|
@@ -2,8 +2,226 @@ module EnjuLibrary
|
|
2
2
|
module Controller
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
|
+
included do
|
6
|
+
before_action :get_library_group, :set_locale, :set_available_languages, :set_mobile_request
|
7
|
+
before_action :store_current_location, unless: :devise_controller?
|
8
|
+
rescue_from Pundit::NotAuthorizedError, with: :render_403
|
9
|
+
#rescue_from ActiveRecord::RecordNotFound, with: :render_404
|
10
|
+
rescue_from Errno::ECONNREFUSED, with: :render_500_nosolr
|
11
|
+
#rescue_from ActionView::MissingTemplate, with: :render_404_invalid_format
|
12
|
+
end
|
13
|
+
|
5
14
|
private
|
6
15
|
|
16
|
+
def render_403
|
17
|
+
return if performed?
|
18
|
+
if user_signed_in?
|
19
|
+
respond_to do |format|
|
20
|
+
format.html {render template: 'page/403', status: 403}
|
21
|
+
#format.html.phone {render template: 'page/403', status: 403}
|
22
|
+
format.xml {render template: 'page/403', status: 403}
|
23
|
+
format.json { render text: '{"error": "forbidden"}' }
|
24
|
+
format.rss {render template: 'page/403.xml', status: 403}
|
25
|
+
end
|
26
|
+
else
|
27
|
+
respond_to do |format|
|
28
|
+
format.html { redirect_to main_app.new_user_session_url }
|
29
|
+
#format.html.phone { redirect_to new_user_session_url }
|
30
|
+
format.xml { render template: 'page/403', status: 403 }
|
31
|
+
format.json { render text: '{"error": "forbidden"}' }
|
32
|
+
format.rss { render template: 'page/403.xml', status: 403 }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def render_404
|
38
|
+
return if performed?
|
39
|
+
respond_to do |format|
|
40
|
+
format.html { render template: 'page/404', status: 404 }
|
41
|
+
#format.html.phone { render template: 'page/404', status: 404 }
|
42
|
+
format.xml { render template: 'page/404', status: 404 }
|
43
|
+
format.json { render text: '{"error": "not_found"}' }
|
44
|
+
format.rss { render template: 'page/404.xml', status: 404 }
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def render_404_invalid_format
|
49
|
+
return if performed?
|
50
|
+
render file: "#{Rails.root}/public/404", formats: [:html]
|
51
|
+
end
|
52
|
+
|
53
|
+
def render_500
|
54
|
+
return if performed?
|
55
|
+
respond_to do |format|
|
56
|
+
format.html {render file: "#{Rails.root}/public/500", layout: false, status: 500}
|
57
|
+
#format.html.phone {render file: "#{Rails.root}/public/500", layout: false, status: 500}
|
58
|
+
format.xml {render template: 'page/500', status: 500}
|
59
|
+
format.json { render text: '{"error": "server_error"}' }
|
60
|
+
format.xml {render template: 'page/500.xml', status: 500}
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def render_500_nosolr
|
65
|
+
Rails.logger.fatal("please confirm that the Solr is running.")
|
66
|
+
return if performed?
|
67
|
+
#flash[:notice] = t('page.connection_failed')
|
68
|
+
respond_to do |format|
|
69
|
+
format.html {render template: "page/500_nosolr", layout: false, status: 500}
|
70
|
+
#format.html.phone {render template: "page/500_nosolr", layout: false, status: 500}
|
71
|
+
format.xml {render template: 'page/500', status: 500}
|
72
|
+
format.json { render text: '{"error": "server_error"}' }
|
73
|
+
format.xml {render template: 'page/500.xml', status: 500}
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def after_sign_in_path_for(resource)
|
78
|
+
session[:locale] = nil
|
79
|
+
super
|
80
|
+
end
|
81
|
+
|
82
|
+
def set_locale
|
83
|
+
if params[:locale]
|
84
|
+
unless I18n.available_locales.include?(params[:locale].to_s.intern)
|
85
|
+
raise InvalidLocaleError
|
86
|
+
end
|
87
|
+
end
|
88
|
+
if user_signed_in?
|
89
|
+
locale = params[:locale] || session[:locale] || current_user.profile.try(:locale).try(:to_sym)
|
90
|
+
else
|
91
|
+
locale = params[:locale] || session[:locale]
|
92
|
+
end
|
93
|
+
if locale
|
94
|
+
I18n.locale = @locale = session[:locale] = locale.to_sym
|
95
|
+
else
|
96
|
+
I18n.locale = @locale = session[:locale] = I18n.default_locale
|
97
|
+
end
|
98
|
+
rescue InvalidLocaleError
|
99
|
+
@locale = I18n.default_locale
|
100
|
+
end
|
101
|
+
|
102
|
+
def default_url_options(options={})
|
103
|
+
{locale: nil}
|
104
|
+
end
|
105
|
+
|
106
|
+
def set_available_languages
|
107
|
+
if Rails.env == 'production'
|
108
|
+
@available_languages = Rails.cache.fetch('available_languages'){
|
109
|
+
Language.where(iso_639_1: I18n.available_locales.map{|l| l.to_s}).select([:id, :iso_639_1, :name, :native_name, :display_name, :position]).all
|
110
|
+
}
|
111
|
+
else
|
112
|
+
@available_languages = Language.where(iso_639_1: I18n.available_locales.map{|l| l.to_s})
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def reset_params_session
|
117
|
+
session[:params] = nil
|
118
|
+
end
|
119
|
+
|
120
|
+
def not_found
|
121
|
+
raise ActiveRecord::RecordNotFound
|
122
|
+
end
|
123
|
+
|
124
|
+
def access_denied
|
125
|
+
raise Pundit::NotAuthorizedError
|
126
|
+
end
|
127
|
+
|
128
|
+
def get_user
|
129
|
+
@user = User.where(username: params[:user_id]).first if params[:user_id]
|
130
|
+
#authorize! :show, @user if @user
|
131
|
+
end
|
132
|
+
|
133
|
+
def get_user_group
|
134
|
+
@user_group = UserGroup.find(params[:user_group_id]) if params[:user_group_id]
|
135
|
+
end
|
136
|
+
|
137
|
+
def convert_charset
|
138
|
+
case params[:format]
|
139
|
+
when 'csv'
|
140
|
+
return unless LibraryGroup.site_config.settings[:csv_charset_conversion]
|
141
|
+
# TODO: 他の言語
|
142
|
+
if @locale.to_sym == :ja
|
143
|
+
headers["Content-Type"] = "text/csv; charset=Shift_JIS"
|
144
|
+
response.body = NKF::nkf('-Ws', response.body)
|
145
|
+
end
|
146
|
+
when 'xml'
|
147
|
+
if @locale.to_sym == :ja
|
148
|
+
headers["Content-Type"] = "application/xml; charset=Shift_JIS"
|
149
|
+
response.body = NKF::nkf('-Ws', response.body)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def store_page
|
155
|
+
if request.get? and request.format.try(:html?) and !request.xhr?
|
156
|
+
flash[:page] = params[:page] if params[:page].to_i > 0
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
def set_role_query(user, search)
|
161
|
+
role = user.try(:role) || Role.default_role
|
162
|
+
search.build do
|
163
|
+
with(:required_role_id).less_than_or_equal_to role.id
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def get_version
|
168
|
+
@version = params[:version_id].to_i if params[:version_id]
|
169
|
+
@version = nil if @version == 0
|
170
|
+
end
|
171
|
+
|
172
|
+
def clear_search_sessions
|
173
|
+
session[:query] = nil
|
174
|
+
session[:params] = nil
|
175
|
+
session[:search_params] = nil
|
176
|
+
session[:manifestation_ids] = nil
|
177
|
+
end
|
178
|
+
|
179
|
+
def api_request?
|
180
|
+
true unless params[:format].nil? or params[:format] == 'html'
|
181
|
+
end
|
182
|
+
|
183
|
+
def get_top_page_content
|
184
|
+
if defined?(EnjuNews)
|
185
|
+
@news_feeds = Rails.cache.fetch('news_feed_all'){NewsFeed.order(:position)}
|
186
|
+
@news_posts = NewsPost.limit(LibraryGroup.site_config.settings[:news_post_number_top_page] || 10)
|
187
|
+
end
|
188
|
+
@libraries = Library.real
|
189
|
+
end
|
190
|
+
|
191
|
+
def set_mobile_request
|
192
|
+
case params[:view]
|
193
|
+
when 'phone'
|
194
|
+
session[:enju_view] = :phone
|
195
|
+
when 'desktop'
|
196
|
+
session[:enju_view] = :desktop
|
197
|
+
when 'reset'
|
198
|
+
session[:enju_view] = nil
|
199
|
+
end
|
200
|
+
|
201
|
+
case session[:enju_view].try(:to_sym)
|
202
|
+
when :phone
|
203
|
+
request.variant = :phone
|
204
|
+
when :desktop
|
205
|
+
request.variant = nil
|
206
|
+
else
|
207
|
+
request.variant = :phone if browser.device.mobile?
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
def move_position(resource, direction, redirect = true)
|
212
|
+
if ['higher', 'lower'].include?(direction)
|
213
|
+
resource.send("move_#{direction}")
|
214
|
+
if redirect
|
215
|
+
redirect_to url_for(controller: resource.class.to_s.pluralize.underscore)
|
216
|
+
return
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
def store_current_location
|
222
|
+
store_location_for(:user, request.url)
|
223
|
+
end
|
224
|
+
|
7
225
|
def get_library_group
|
8
226
|
@library_group = LibraryGroup.site_config
|
9
227
|
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
class UserExportFilesController < ApplicationController
|
2
|
+
before_action :set_user_export_file, only: [:show, :edit, :update, :destroy]
|
3
|
+
before_action :check_policy, only: [:index, :new, :create]
|
4
|
+
|
5
|
+
# GET /user_export_files
|
6
|
+
# GET /user_export_files.json
|
7
|
+
def index
|
8
|
+
@user_export_files = UserExportFile.order('id DESC').page(params[:page])
|
9
|
+
|
10
|
+
respond_to do |format|
|
11
|
+
format.html # index.html.erb
|
12
|
+
format.json { render json: @user_export_files }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# GET /user_export_files/1
|
17
|
+
# GET /user_export_files/1.json
|
18
|
+
def show
|
19
|
+
if @user_export_file.user_export.path
|
20
|
+
unless ENV['ENJU_STORAGE'] == 's3'
|
21
|
+
file = @user_export_file.user_export.path
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
respond_to do |format|
|
26
|
+
format.html # show.html.erb
|
27
|
+
format.json { render json: @user_export_file }
|
28
|
+
format.download {
|
29
|
+
if ENV['ENJU_STORAGE'] == 's3'
|
30
|
+
send_data Faraday.get(@user_export_file.user_export.expiring_url).body.force_encoding('UTF-8'),
|
31
|
+
filename: File.basename(@user_export_file.user_export_file_name), type: 'application/octet-stream'
|
32
|
+
else
|
33
|
+
send_file file, filename: @user_export_file.user_export_file_name, type: 'application/octet-stream'
|
34
|
+
end
|
35
|
+
}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# GET /user_export_files/new
|
40
|
+
# GET /user_export_files/new.json
|
41
|
+
def new
|
42
|
+
@user_export_file = UserExportFile.new
|
43
|
+
@user_export_file.user = current_user
|
44
|
+
|
45
|
+
respond_to do |format|
|
46
|
+
format.html # new.html.erb
|
47
|
+
format.json { render json: @user_export_file }
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# GET /user_export_files/1/edit
|
52
|
+
def edit
|
53
|
+
end
|
54
|
+
|
55
|
+
# POST /user_export_files
|
56
|
+
# POST /user_export_files.json
|
57
|
+
def create
|
58
|
+
@user_export_file = UserExportFile.new(user_export_file_params)
|
59
|
+
@user_export_file.user = current_user
|
60
|
+
|
61
|
+
respond_to do |format|
|
62
|
+
if @user_export_file.save
|
63
|
+
if @user_export_file.mode == 'export'
|
64
|
+
UserExportFileJob.perform_later(@user_export_file)
|
65
|
+
end
|
66
|
+
format.html { redirect_to @user_export_file, notice: t('export.successfully_created', model: t('activerecord.models.user_export_file')) }
|
67
|
+
format.json { render json: @user_export_file, status: :created, location: @user_export_file }
|
68
|
+
else
|
69
|
+
format.html { render action: "new" }
|
70
|
+
format.json { render json: @user_export_file.errors, status: :unprocessable_entity }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# PUT /user_export_files/1
|
76
|
+
# PUT /user_export_files/1.json
|
77
|
+
def update
|
78
|
+
respond_to do |format|
|
79
|
+
if @user_export_file.update_attributes(user_export_file_params)
|
80
|
+
if @user_export_file.mode == 'export'
|
81
|
+
UserExportFileJob.perform_later(@user_export_file)
|
82
|
+
end
|
83
|
+
format.html { redirect_to @user_export_file, notice: t('controller.successfully_updated', model: t('activerecord.models.user_export_file')) }
|
84
|
+
format.json { head :no_content }
|
85
|
+
else
|
86
|
+
format.html { render action: "edit" }
|
87
|
+
format.json { render json: @user_export_file.errors, status: :unprocessable_entity }
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# DELETE /user_export_files/1
|
93
|
+
# DELETE /user_export_files/1.json
|
94
|
+
def destroy
|
95
|
+
@user_export_file.destroy
|
96
|
+
|
97
|
+
respond_to do |format|
|
98
|
+
format.html { redirect_to user_export_files_url }
|
99
|
+
format.json { head :no_content }
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
private
|
104
|
+
def set_user_export_file
|
105
|
+
@user_export_file = UserExportFile.find(params[:id])
|
106
|
+
authorize @user_export_file
|
107
|
+
end
|
108
|
+
|
109
|
+
def check_policy
|
110
|
+
authorize UserExportFile
|
111
|
+
end
|
112
|
+
|
113
|
+
def user_export_file_params
|
114
|
+
params.require(:user_export_file).permit(:mode)
|
115
|
+
end
|
116
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
class UserGroupsController < ApplicationController
|
2
|
+
before_action :set_user_group, only: [:show, :edit, :update, :destroy]
|
3
|
+
before_action :check_policy, only: [:index, :new, :create]
|
4
|
+
before_action :prepare_options, only: [:new, :edit]
|
5
|
+
|
6
|
+
# GET /user_groups
|
7
|
+
# GET /user_groups.json
|
8
|
+
def index
|
9
|
+
@user_groups = UserGroup.order(:position)
|
10
|
+
|
11
|
+
respond_to do |format|
|
12
|
+
format.html # index.html.erb
|
13
|
+
format.json { render json: @user_groups }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# GET /user_groups/1
|
18
|
+
# GET /user_groups/1.json
|
19
|
+
def show
|
20
|
+
respond_to do |format|
|
21
|
+
format.html # show.html.erb
|
22
|
+
format.json { render json: @user_group }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# GET /user_groups/new
|
27
|
+
def new
|
28
|
+
@user_group = UserGroup.new
|
29
|
+
|
30
|
+
respond_to do |format|
|
31
|
+
format.html # new.html.erb
|
32
|
+
format.json { render json: @user_group }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# GET /user_groups/1/edit
|
37
|
+
def edit
|
38
|
+
end
|
39
|
+
|
40
|
+
# POST /user_groups
|
41
|
+
# POST /user_groups.json
|
42
|
+
def create
|
43
|
+
@user_group = UserGroup.new(user_group_params)
|
44
|
+
|
45
|
+
respond_to do |format|
|
46
|
+
if @user_group.save
|
47
|
+
format.html { redirect_to @user_group, notice: t('controller.successfully_created', model: t('activerecord.models.user_group')) }
|
48
|
+
format.json { render json: @user_group, status: :created, location: @user_group }
|
49
|
+
else
|
50
|
+
prepare_options
|
51
|
+
format.html { render action: "new" }
|
52
|
+
format.json { render json: @user_group.errors, status: :unprocessable_entity }
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# PUT /user_groups/1
|
58
|
+
# PUT /user_groups/1.json
|
59
|
+
def update
|
60
|
+
if params[:move]
|
61
|
+
move_position(@user_group, params[:move])
|
62
|
+
return
|
63
|
+
end
|
64
|
+
|
65
|
+
respond_to do |format|
|
66
|
+
if @user_group.update_attributes(user_group_params)
|
67
|
+
format.html { redirect_to @user_group, notice: t('controller.successfully_updated', model: t('activerecord.models.user_group')) }
|
68
|
+
format.json { head :no_content }
|
69
|
+
else
|
70
|
+
prepare_options
|
71
|
+
format.html { render action: "edit" }
|
72
|
+
format.json { render json: @user_group.errors, status: :unprocessable_entity }
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
# DELETE /user_groups/1
|
78
|
+
# DELETE /user_groups/1.json
|
79
|
+
def destroy
|
80
|
+
@user_group.destroy
|
81
|
+
|
82
|
+
respond_to do |format|
|
83
|
+
format.html { redirect_to user_groups_url }
|
84
|
+
format.json { head :no_content }
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
def set_user_group
|
90
|
+
@user_group = UserGroup.find(params[:id])
|
91
|
+
authorize @user_group
|
92
|
+
end
|
93
|
+
|
94
|
+
def check_policy
|
95
|
+
authorize UserGroup
|
96
|
+
end
|
97
|
+
|
98
|
+
def user_group_params
|
99
|
+
params.require(:user_group).permit(
|
100
|
+
:name, :display_name, :note, :valid_period_for_new_user,
|
101
|
+
:expired_at, :number_of_day_to_notify_overdue,
|
102
|
+
:number_of_day_to_notify_overdue,
|
103
|
+
:number_of_day_to_notify_due_date,
|
104
|
+
:number_of_time_to_notify_overdue,
|
105
|
+
# EnjuCirculation
|
106
|
+
{:user_group_has_checkout_types_attributes => [
|
107
|
+
:id, :checkout_type_id, :checkout_limit, :checkout_period, :checkout_renewal_limit,
|
108
|
+
:reservation_limit, :reservation_expired_period, :set_due_date_before_closing_day
|
109
|
+
]},
|
110
|
+
)
|
111
|
+
end
|
112
|
+
|
113
|
+
def prepare_options
|
114
|
+
if defined?(EnjuCirculation)
|
115
|
+
@checkout_types = CheckoutType.select([:id, :display_name, :position])
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
class UserImportFilesController < ApplicationController
|
2
|
+
before_action :set_user_import_file, only: [:show, :edit, :update, :destroy]
|
3
|
+
before_action :check_policy, only: [:index, :new, :create]
|
4
|
+
before_action :prepare_options, only: [:new, :edit]
|
5
|
+
|
6
|
+
# GET /user_import_files
|
7
|
+
# GET /user_import_files.json
|
8
|
+
def index
|
9
|
+
@user_import_files = UserImportFile.order('id DESC').page(params[:page])
|
10
|
+
|
11
|
+
respond_to do |format|
|
12
|
+
format.html # index.html.erb
|
13
|
+
format.json { render json: @user_import_files }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# GET /user_import_files/1
|
18
|
+
# GET /user_import_files/1.json
|
19
|
+
def show
|
20
|
+
if @user_import_file.user_import.path
|
21
|
+
unless ENV['ENJU_STORAGE'] == 's3'
|
22
|
+
file = @user_import_file.user_import.path
|
23
|
+
end
|
24
|
+
end
|
25
|
+
@user_import_results = @user_import_file.user_import_results.page(params[:page])
|
26
|
+
|
27
|
+
respond_to do |format|
|
28
|
+
format.html # show.html.erb
|
29
|
+
format.json { render json: @user_import_file }
|
30
|
+
format.download {
|
31
|
+
if ENV['ENJU_STORAGE'] == 's3'
|
32
|
+
send_data Faraday.get(@user_import_file.user_import.expiring_url).body.force_encoding('UTF-8'),
|
33
|
+
filename: File.basename(@user_import_file.user_import_file_name), type: 'application/octet-stream'
|
34
|
+
else
|
35
|
+
send_file file, filename: @user_import_file.user_import_file_name, type: 'application/octet-stream'
|
36
|
+
end
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# GET /user_import_files/new
|
42
|
+
# GET /user_import_files/new.json
|
43
|
+
def new
|
44
|
+
@user_import_file = UserImportFile.new
|
45
|
+
@user_import_file.default_user_group = current_user.profile.user_group
|
46
|
+
@user_import_file.default_library = current_user.profile.library
|
47
|
+
|
48
|
+
respond_to do |format|
|
49
|
+
format.html # new.html.erb
|
50
|
+
format.json { render json: @user_import_file }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# GET /user_import_files/1/edit
|
55
|
+
def edit
|
56
|
+
end
|
57
|
+
|
58
|
+
# POST /user_import_files
|
59
|
+
# POST /user_import_files.json
|
60
|
+
def create
|
61
|
+
@user_import_file = UserImportFile.new(user_import_file_params)
|
62
|
+
@user_import_file.user = current_user
|
63
|
+
|
64
|
+
respond_to do |format|
|
65
|
+
if @user_import_file.save
|
66
|
+
if @user_import_file.mode == 'import'
|
67
|
+
UserImportFileJob.perform_later(@user_import_file)
|
68
|
+
end
|
69
|
+
format.html { redirect_to @user_import_file, notice: t('import.successfully_created', model: t('activerecord.models.user_import_file')) }
|
70
|
+
format.json { render json: @user_import_file, status: :created, location: @user_import_file }
|
71
|
+
else
|
72
|
+
prepare_options
|
73
|
+
format.html { render action: "new" }
|
74
|
+
format.json { render json: @user_import_file.errors, status: :unprocessable_entity }
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# PUT /user_import_files/1
|
80
|
+
# PUT /user_import_files/1.json
|
81
|
+
def update
|
82
|
+
respond_to do |format|
|
83
|
+
if @user_import_file.update_attributes(user_import_file_params)
|
84
|
+
if @user_import_file.mode == 'import'
|
85
|
+
UserImportFileJob.perform_later(@user_import_file)
|
86
|
+
end
|
87
|
+
format.html { redirect_to @user_import_file, notice: t('controller.successfully_updated', model: t('activerecord.models.user_import_file')) }
|
88
|
+
format.json { head :no_content }
|
89
|
+
else
|
90
|
+
prepare_options
|
91
|
+
format.html { render action: "edit" }
|
92
|
+
format.json { render json: @user_import_file.errors, status: :unprocessable_entity }
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# DELETE /user_import_files/1
|
98
|
+
# DELETE /user_import_files/1.json
|
99
|
+
def destroy
|
100
|
+
@user_import_file.destroy
|
101
|
+
|
102
|
+
respond_to do |format|
|
103
|
+
format.html { redirect_to(user_import_files_url) }
|
104
|
+
format.json { head :no_content }
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
private
|
109
|
+
def set_user_import_file
|
110
|
+
@user_import_file = UserImportFile.find(params[:id])
|
111
|
+
authorize @user_import_file
|
112
|
+
end
|
113
|
+
|
114
|
+
def check_policy
|
115
|
+
authorize UserImportFile
|
116
|
+
end
|
117
|
+
|
118
|
+
def user_import_file_params
|
119
|
+
params.require(:user_import_file).permit(
|
120
|
+
:user_import, :edit_mode, :user_encoding, :mode,
|
121
|
+
:default_user_group_id, :default_library_id
|
122
|
+
)
|
123
|
+
end
|
124
|
+
|
125
|
+
def prepare_options
|
126
|
+
@user_groups = UserGroup.all
|
127
|
+
@libraries = Library.all
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
class UserImportResultsController < ApplicationController
|
2
|
+
before_action :set_user_import_result, only: [:show, :edit, :update, :destroy]
|
3
|
+
before_action :check_policy, only: [:index, :new, :create]
|
4
|
+
|
5
|
+
# GET /user_import_results
|
6
|
+
# GET /user_import_results.json
|
7
|
+
def index
|
8
|
+
@user_import_file = UserImportFile.where(id: params[:user_import_file_id]).first
|
9
|
+
if @user_import_file
|
10
|
+
@user_import_results = @user_import_file.user_import_results.page(params[:page])
|
11
|
+
else
|
12
|
+
@user_import_results = UserImportResult.page(params[:page])
|
13
|
+
end
|
14
|
+
|
15
|
+
respond_to do |format|
|
16
|
+
format.html # index.html.erb
|
17
|
+
format.json { render json: @user_import_results }
|
18
|
+
format.txt
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# GET /user_import_results/1
|
23
|
+
# GET /user_import_results/1.json
|
24
|
+
def show
|
25
|
+
respond_to do |format|
|
26
|
+
format.html # show.html.erb
|
27
|
+
format.json { render json: @user_import_result }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# DELETE /user_import_results/1
|
32
|
+
# DELETE /user_import_results/1.json
|
33
|
+
def destroy
|
34
|
+
@user_import_result.destroy
|
35
|
+
|
36
|
+
respond_to do |format|
|
37
|
+
format.html { redirect_to user_import_results_url, notice: t('controller.successfully_deleted', model: t('activerecord.models.user_import_result')) }
|
38
|
+
format.json { head :no_content }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
def set_user_import_result
|
44
|
+
@user_import_result = UserImportResult.find(params[:id])
|
45
|
+
authorize @user_import_result
|
46
|
+
end
|
47
|
+
|
48
|
+
def check_policy
|
49
|
+
authorize UserImportResult
|
50
|
+
end
|
51
|
+
|
52
|
+
def user_import_result_params
|
53
|
+
params.require(:user_import_result).permit(
|
54
|
+
:user_import_file_id, :user_id, :body
|
55
|
+
)
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class Notifier < ActionMailer::Base
|
2
|
+
def message_notification(message_id)
|
3
|
+
message = Message.find(message_id)
|
4
|
+
I18n.locale = message.receiver.profile.locale.try(:to_sym) || I18n.default_locale
|
5
|
+
from = "#{LibraryGroup.system_name(message.receiver.profile.locale)} <#{LibraryGroup.site_config.user.email}>"
|
6
|
+
if message.subject
|
7
|
+
subject = message.subject
|
8
|
+
else
|
9
|
+
subject = I18n.t('message.new_message_from_library', library: LibraryGroup.system_name(message.receiver.user.profile.locale))
|
10
|
+
end
|
11
|
+
if message.sender
|
12
|
+
@sender_name = message.sender.username
|
13
|
+
else
|
14
|
+
@sender_name = LibraryGroup.system_name(message.receiver.profile.locale)
|
15
|
+
end
|
16
|
+
@message = message
|
17
|
+
@locale = message.receiver.profile.locale
|
18
|
+
mail(from: from, to: message.receiver.email, subject: subject)
|
19
|
+
end
|
20
|
+
|
21
|
+
def manifestation_info(user_id, manifestation_id)
|
22
|
+
user = User.find(user_id)
|
23
|
+
manifestation = Manifestation.find(manifestation_id)
|
24
|
+
from = "#{LibraryGroup.system_name(user.profile.locale)} <#{LibraryGroup.site_config.user.email}>"
|
25
|
+
subject = "#{manifestation.original_title} : #{LibraryGroup.system_name(user.profile.locale)}"
|
26
|
+
@user = user
|
27
|
+
@manifestation = manifestation
|
28
|
+
mail(from: from, to: user.email, subject: subject)
|
29
|
+
end
|
30
|
+
end
|