enju_trunk_subject 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +36 -0
- data/app/controllers/classification_types_controller.rb +13 -0
- data/app/controllers/classifications_controller.rb +114 -0
- data/app/controllers/subject_has_classifications_controller.rb +97 -0
- data/app/controllers/subject_heading_type_has_subjects_controller.rb +80 -0
- data/app/controllers/subject_heading_types_controller.rb +13 -0
- data/app/controllers/subject_types_controller.rb +13 -0
- data/app/controllers/subjects_controller.rb +216 -0
- data/app/controllers/work_has_subjects_controller.rb +107 -0
- data/app/models/classification.rb +89 -0
- data/app/models/classification_type.rb +20 -0
- data/app/models/enju_subject/ability.rb +55 -0
- data/app/models/subject.rb +100 -0
- data/app/models/subject_has_classification.rb +37 -0
- data/app/models/subject_heading_type.rb +21 -0
- data/app/models/subject_heading_type_has_subject.rb +22 -0
- data/app/models/subject_type.rb +20 -0
- data/app/models/work_has_subject.rb +35 -0
- data/app/views/classification_types/_form.html.erb +19 -0
- data/app/views/classification_types/edit.html.erb +13 -0
- data/app/views/classification_types/index.html.erb +45 -0
- data/app/views/classification_types/new.html.erb +12 -0
- data/app/views/classification_types/show.html.erb +30 -0
- data/app/views/classifications/_form.html.erb +27 -0
- data/app/views/classifications/edit.html.erb +13 -0
- data/app/views/classifications/index.html.erb +54 -0
- data/app/views/classifications/new.html.erb +12 -0
- data/app/views/classifications/show.html.erb +34 -0
- data/app/views/manifestations/_classification_detail.html.erb +14 -0
- data/app/views/manifestations/_subject_detail.html.erb +14 -0
- data/app/views/manifestations/_subject_facet.html.erb +18 -0
- data/app/views/manifestations/_subject_form.html.erb +21 -0
- data/app/views/subject_has_classifications/edit.html.erb +30 -0
- data/app/views/subject_has_classifications/index.html.erb +38 -0
- data/app/views/subject_has_classifications/new.html.erb +32 -0
- data/app/views/subject_has_classifications/show.html.erb +22 -0
- data/app/views/subject_heading_type_has_subjects/edit.html.erb +28 -0
- data/app/views/subject_heading_type_has_subjects/index.html.erb +30 -0
- data/app/views/subject_heading_type_has_subjects/new.html.erb +27 -0
- data/app/views/subject_heading_type_has_subjects/show.html.erb +23 -0
- data/app/views/subject_heading_types/_form.html.erb +19 -0
- data/app/views/subject_heading_types/edit.html.erb +13 -0
- data/app/views/subject_heading_types/index.html.erb +43 -0
- data/app/views/subject_heading_types/new.html.erb +12 -0
- data/app/views/subject_heading_types/show.html.erb +27 -0
- data/app/views/subject_types/_form.html.erb +19 -0
- data/app/views/subject_types/edit.html.erb +13 -0
- data/app/views/subject_types/index.html.erb +43 -0
- data/app/views/subject_types/new.html.erb +12 -0
- data/app/views/subject_types/show.html.erb +29 -0
- data/app/views/subjects/_form.html.erb +42 -0
- data/app/views/subjects/_index.html.erb +48 -0
- data/app/views/subjects/_index_classification.html.erb +57 -0
- data/app/views/subjects/_index_work.html.erb +60 -0
- data/app/views/subjects/_show_work_list.html.erb +15 -0
- data/app/views/subjects/edit.html.erb +13 -0
- data/app/views/subjects/index.atom.builder +10 -0
- data/app/views/subjects/index.html.erb +7 -0
- data/app/views/subjects/index.rss.builder +29 -0
- data/app/views/subjects/new.html.erb +12 -0
- data/app/views/subjects/show.html.erb +69 -0
- data/app/views/subjects/show.js.erb +1 -0
- data/app/views/work_has_subjects/_form.html.erb +24 -0
- data/app/views/work_has_subjects/edit.html.erb +29 -0
- data/app/views/work_has_subjects/index.html.erb +31 -0
- data/app/views/work_has_subjects/new.html.erb +42 -0
- data/app/views/work_has_subjects/show.html.erb +25 -0
- data/config/locales/translation_en.yml +35 -0
- data/config/locales/translation_ja.yml +39 -0
- data/config/routes.rb +7 -0
- data/db/fixtures/classification_types.yml +7 -0
- data/db/fixtures/subject_types.yml +28 -0
- data/db/migrate/029_create_subjects.rb +28 -0
- data/db/migrate/142_create_classifications.rb +19 -0
- data/db/migrate/144_create_classification_types.rb +16 -0
- data/db/migrate/145_create_subject_heading_types.rb +16 -0
- data/db/migrate/146_create_subject_types.rb +16 -0
- data/db/migrate/20110913120629_add_lft_and_rgt_to_classification.rb +11 -0
- data/db/migrate/20140427142354_add_classifiation_identifier_to_classification.rb +6 -0
- data/lib/enju_subject.rb +33 -0
- data/lib/enju_subject/engine.rb +8 -0
- data/lib/enju_subject/manifestation.rb +31 -0
- data/lib/enju_subject/master_model.rb +41 -0
- data/lib/enju_subject/version.rb +3 -0
- data/lib/generators/enju_subject/setup/USAGE +8 -0
- data/lib/generators/enju_subject/setup/setup_generator.rb +10 -0
- data/lib/generators/enju_subject/setup/templates/db/fixtures/classification_types.yml +13 -0
- data/lib/generators/enju_subject/setup/templates/db/fixtures/subject_heading_types.yml +39 -0
- data/lib/generators/enju_subject/setup/templates/db/fixtures/subject_types.yml +28 -0
- data/lib/tasks/enju_subject_tasks.rake +19 -0
- data/spec/controllers/classification_types_controller_spec.rb +445 -0
- data/spec/controllers/classifications_controller_spec.rb +441 -0
- data/spec/controllers/subject_heading_types_controller_spec.rb +445 -0
- data/spec/controllers/subject_types_controller_spec.rb +447 -0
- data/spec/controllers/subjects_controller_spec.rb +437 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +9 -0
- data/spec/dummy/app/assets/stylesheets/application.css +7 -0
- data/spec/dummy/app/controllers/application_controller.rb +47 -0
- data/spec/dummy/app/helpers/application_helper.rb +21 -0
- data/spec/dummy/app/models/ability.rb +59 -0
- data/spec/dummy/app/models/setting.rb +4 -0
- data/spec/dummy/app/models/user.rb +43 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +46 -0
- data/spec/dummy/config/application.yml +38 -0
- data/spec/dummy/config/boot.rb +10 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +30 -0
- data/spec/dummy/config/environments/production.rb +60 -0
- data/spec/dummy/config/environments/test.rb +39 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/devise.rb +207 -0
- data/spec/dummy/config/initializers/inflections.rb +10 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +7 -0
- data/spec/dummy/config/initializers/session_store.rb +8 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/devise.en.yml +57 -0
- data/spec/dummy/config/locales/en.yml +18 -0
- data/spec/dummy/config/locales/ja.yml +18 -0
- data/spec/dummy/config/routes.rb +60 -0
- data/spec/dummy/db/fixtures/roles.yml +25 -0
- data/spec/dummy/db/migrate/001_create_agents.rb +53 -0
- data/spec/dummy/db/migrate/005_create_manifestations.rb +56 -0
- data/spec/dummy/db/migrate/006_create_items.rb +24 -0
- data/spec/dummy/db/migrate/012_create_owns.rb +12 -0
- data/spec/dummy/db/migrate/015_create_creates.rb +12 -0
- data/spec/dummy/db/migrate/047_create_produces.rb +12 -0
- data/spec/dummy/db/migrate/059_create_libraries.rb +28 -0
- data/spec/dummy/db/migrate/069_create_shelves.rb +15 -0
- data/spec/dummy/db/migrate/073_create_carrier_types.rb +11 -0
- data/spec/dummy/db/migrate/077_create_user_groups.rb +12 -0
- data/spec/dummy/db/migrate/080_create_library_groups.rb +18 -0
- data/spec/dummy/db/migrate/112_create_frequencies.rb +12 -0
- data/spec/dummy/db/migrate/117_create_form_of_works.rb +12 -0
- data/spec/dummy/db/migrate/120_create_baskets.rb +12 -0
- data/spec/dummy/db/migrate/124_create_bookstores.rb +17 -0
- data/spec/dummy/db/migrate/125_create_donates.rb +12 -0
- data/spec/dummy/db/migrate/130_create_request_status_types.rb +12 -0
- data/spec/dummy/db/migrate/131_create_request_types.rb +12 -0
- data/spec/dummy/db/migrate/20080830154109_create_realizes.rb +13 -0
- data/spec/dummy/db/migrate/20080830172106_create_exemplifies.rb +13 -0
- data/spec/dummy/db/migrate/20080905191442_create_agent_types.rb +12 -0
- data/spec/dummy/db/migrate/20081006090811_create_subscriptions.rb +17 -0
- data/spec/dummy/db/migrate/20081006093246_create_subscribes.rb +14 -0
- data/spec/dummy/db/migrate/20081023092436_create_search_engines.rb +17 -0
- data/spec/dummy/db/migrate/20081025083323_create_countries.rb +28 -0
- data/spec/dummy/db/migrate/20081025083905_create_languages.rb +23 -0
- data/spec/dummy/db/migrate/20081027150907_create_picture_files.rb +15 -0
- data/spec/dummy/db/migrate/20081028083142_create_agent_import_files.rb +22 -0
- data/spec/dummy/db/migrate/20081028083208_create_resource_import_files.rb +22 -0
- data/spec/dummy/db/migrate/20090705133942_add_attachments_picture_to_picture_file.rb +15 -0
- data/spec/dummy/db/migrate/20090705212043_add_attachments_attachment_to_manifestation.rb +15 -0
- data/spec/dummy/db/migrate/20090719201843_create_extents.rb +12 -0
- data/spec/dummy/db/migrate/20090720091106_create_medium_of_performances.rb +12 -0
- data/spec/dummy/db/migrate/20090720091429_create_content_types.rb +12 -0
- data/spec/dummy/db/migrate/20090812151902_create_agent_relationship_types.rb +12 -0
- data/spec/dummy/db/migrate/20091012101112_add_dcndl_schema.rb +27 -0
- data/spec/dummy/db/migrate/20091025080447_create_licenses.rb +12 -0
- data/spec/dummy/db/migrate/20091202124834_create_versions.rb +18 -0
- data/spec/dummy/db/migrate/20091214131723_create_series_statements.rb +13 -0
- data/spec/dummy/db/migrate/20100129142347_create_import_requests.rb +15 -0
- data/spec/dummy/db/migrate/20100211105551_add_admin_networks_to_library_group.rb +9 -0
- data/spec/dummy/db/migrate/20100223121519_rename_series_statement_title_to_original_title.rb +13 -0
- data/spec/dummy/db/migrate/20100321235924_add_series_statement_identifier_to_series_statement.rb +10 -0
- data/spec/dummy/db/migrate/20100525124311_create_manifestation_relationships.rb +13 -0
- data/spec/dummy/db/migrate/20100606073747_create_agent_relationships.rb +13 -0
- data/spec/dummy/db/migrate/20100607044753_create_manifestation_relationship_types.rb +12 -0
- data/spec/dummy/db/migrate/20100814091104_add_position_to_agent_relationship.rb +11 -0
- data/spec/dummy/db/migrate/20100925043847_create_resource_import_results.rb +15 -0
- data/spec/dummy/db/migrate/20100925074559_create_agent_import_results.rb +12 -0
- data/spec/dummy/db/migrate/20101212070145_add_acquired_at_to_item.rb +9 -0
- data/spec/dummy/db/migrate/20110222073537_add_url_to_library_group.rb +9 -0
- data/spec/dummy/db/migrate/20110301035123_add_pub_date_to_manifestation.rb +9 -0
- data/spec/dummy/db/migrate/20110301121550_add_birth_date_and_death_date_to_agent.rb +11 -0
- data/spec/dummy/db/migrate/20110425133109_add_issn_to_series_statement.rb +9 -0
- data/spec/dummy/db/migrate/20110603184217_add_edit_mode_to_resource_import_file.rb +9 -0
- data/spec/dummy/db/migrate/20110618091240_add_periodical_to_series_statement.rb +9 -0
- data/spec/dummy/db/migrate/20110619064807_add_edition_string_to_manifestation.rb +9 -0
- data/spec/dummy/db/migrate/20110620173525_add_bookstore_id_to_item.rb +11 -0
- data/spec/dummy/db/migrate/20110627034940_create_series_statement_merge_lists.rb +9 -0
- data/spec/dummy/db/migrate/20110627035057_create_series_statement_merges.rb +12 -0
- data/spec/dummy/db/migrate/20110627122938_add_number_of_day_to_notify_overdue_to_user_group.rb +13 -0
- data/spec/dummy/db/migrate/20110820131417_create_series_has_manifestations.rb +13 -0
- data/spec/dummy/db/migrate/20110916053430_rename_manifestation_number_list_to_number_string.rb +13 -0
- data/spec/dummy/db/migrate/20110916091020_add_volume_number_to_manifestation.rb +13 -0
- data/spec/dummy/db/migrate/20110916103953_add_manifestaiton_id_to_series_statement.rb +10 -0
- data/spec/dummy/db/migrate/20110918162329_add_note_to_series_statement.rb +9 -0
- data/spec/dummy/db/migrate/20111009183423_add_ndc_to_manifestation.rb +9 -0
- data/spec/dummy/db/migrate/20111124110059_create_create_types.rb +12 -0
- data/spec/dummy/db/migrate/20111124110319_create_realize_types.rb +12 -0
- data/spec/dummy/db/migrate/20111124110355_create_produce_types.rb +12 -0
- data/spec/dummy/db/migrate/20111124112131_add_create_type_to_create.rb +7 -0
- data/spec/dummy/db/migrate/20111201121844_create_roles.rb +12 -0
- data/spec/dummy/db/migrate/20111201155456_create_users.rb +8 -0
- data/spec/dummy/db/migrate/20111201155513_add_devise_to_users.rb +49 -0
- data/spec/dummy/db/migrate/20111201163718_create_user_has_roles.rb +10 -0
- data/spec/dummy/db/migrate/20120105074911_add_isil_to_library.rb +5 -0
- data/spec/dummy/db/migrate/20120125152919_add_title_subseries_transcription_to_series_statement.rb +6 -0
- data/spec/dummy/db/migrate/20120129014038_create_budget_types.rb +12 -0
- data/spec/dummy/db/migrate/20120129020544_add_budget_type_id_to_item.rb +6 -0
- data/spec/dummy/db/migrate/20120319120638_add_content_type_id_to_manifestation.rb +6 -0
- data/spec/dummy/db/migrate/20120319173203_create_accepts.rb +14 -0
- data/spec/dummy/db/migrate/20120410104851_add_year_of_publication_to_manifestation.rb +5 -0
- data/spec/dummy/db/migrate/20120413072700_add_picture_meta_to_picture_file.rb +5 -0
- data/spec/dummy/db/migrate/20120413100352_add_fingerprint_to_picture_file.rb +5 -0
- data/spec/dummy/db/migrate/20120413161340_add_fingerprint_to_resource_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20120413161403_add_fingerprint_to_agent_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20120413170705_add_error_message_to_resource_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20120413170720_add_error_message_to_agent_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20120415060308_rename_resource_import_file_imported_at_to_executed_at.rb +9 -0
- data/spec/dummy/db/migrate/20120415164821_add_attachment_meta_to_manifestation.rb +5 -0
- data/spec/dummy/db/migrate/20120418081407_add_month_of_publication_to_manifestation.rb +5 -0
- data/spec/dummy/db/migrate/20120510140958_add_closed_to_shelf.rb +5 -0
- data/spec/dummy/db/migrate/20120511072422_add_agent_identifier_to_agent.rb +6 -0
- data/spec/dummy/db/migrate/20120602141129_add_edit_mode_to_agent_import_file.rb +5 -0
- data/spec/dummy/db/migrate/20130221154434_add_additional_attributes_to_user.rb +26 -0
- data/spec/dummy/db/migrate/20130421093852_add_periodical_to_manifestation.rb +5 -0
- data/spec/dummy/db/migrate/20130421155019_add_creator_string_to_series_statement.rb +7 -0
- data/spec/dummy/db/migrate/20130421164124_add_series_master_to_series_statement.rb +5 -0
- data/spec/dummy/db/migrate/20130506175303_create_identifier_types.rb +12 -0
- data/spec/dummy/db/migrate/20130506175834_create_identifiers.rb +15 -0
- data/spec/dummy/db/migrate/20130509185724_add_statement_of_responsibility_to_manifestation.rb +5 -0
- data/spec/dummy/db/schema.rb +901 -0
- data/spec/dummy/db/seeds.rb +32 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +26 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/spec/fixtures/subjects.yml +72 -0
- data/spec/dummy/test/fixtures/user_groups.yml +13 -0
- data/spec/dummy/test/fixtures/user_has_roles.yml +9 -0
- data/spec/dummy/test/fixtures/users.yml +11 -0
- data/spec/dummy/test/unit/user_group_test.rb +7 -0
- data/spec/dummy/test/unit/user_has_role_test.rb +7 -0
- data/spec/dummy/test/unit/user_test.rb +7 -0
- data/spec/factories/classification.rb +6 -0
- data/spec/factories/classification_type.rb +5 -0
- data/spec/factories/manifestation.rb +6 -0
- data/spec/factories/subject.rb +7 -0
- data/spec/factories/subject_heading_type.rb +5 -0
- data/spec/factories/subject_heading_type_has_subject.rb +6 -0
- data/spec/factories/subject_type.rb +5 -0
- data/spec/factories/user.rb +34 -0
- data/spec/fixtures/agent_types.yml +35 -0
- data/spec/fixtures/agents.yml +143 -0
- data/spec/fixtures/carrier_types.yml +51 -0
- data/spec/fixtures/classification_types.yml +188 -0
- data/spec/fixtures/classifications.yml +118 -0
- data/spec/fixtures/languages.yml +1901 -0
- data/spec/fixtures/library_groups.yml +33 -0
- data/spec/fixtures/manifestations.yml +22 -0
- data/spec/fixtures/roles.yml +21 -0
- data/spec/fixtures/shtsv.tsv +3 -0
- data/spec/fixtures/subject_heading_types.yml +39 -0
- data/spec/fixtures/subject_types.yml +42 -0
- data/spec/fixtures/subjects.yml +80 -0
- data/spec/fixtures/user_groups.yml +25 -0
- data/spec/fixtures/user_has_roles.yml +41 -0
- data/spec/fixtures/users.yml +69 -0
- data/spec/models/classification_spec.rb +46 -0
- data/spec/models/classification_type_spec.rb +21 -0
- data/spec/models/subject_heading_type_spec.rb +21 -0
- data/spec/models/subject_spec.rb +33 -0
- data/spec/models/subject_type_spec.rb +21 -0
- data/spec/requests/subjects_spec.rb +9 -0
- data/spec/routing/subject_heading_types_routing_spec.rb +35 -0
- data/spec/routing/subject_types_routing_spec.rb +35 -0
- data/spec/routing/subjects_routing_spec.rb +35 -0
- data/spec/spec_helper.rb +45 -0
- data/spec/support/controller_macros.rb +48 -0
- data/spec/support/devise.rb +3 -0
- metadata +675 -0
@@ -0,0 +1,107 @@
|
|
1
|
+
class WorkHasSubjectsController < ApplicationController
|
2
|
+
load_and_authorize_resource
|
3
|
+
helper_method :get_work, :get_subject
|
4
|
+
after_filter :solr_commit, :only => [:create, :update, :destroy]
|
5
|
+
cache_sweeper :subject_sweeper, :only => [:create, :update, :destroy]
|
6
|
+
|
7
|
+
# GET /work_has_subjects
|
8
|
+
# GET /work_has_subjects.json
|
9
|
+
def index
|
10
|
+
get_work; get_subject
|
11
|
+
if @work
|
12
|
+
@work_has_subjects = @work.work_has_subjects.page(params[:page])
|
13
|
+
elsif @subject
|
14
|
+
@work_has_subjects = @subject.work_has_subjects.page(params[:page])
|
15
|
+
else
|
16
|
+
@work_has_subjects = WorkHasSubject.page(params[:page])
|
17
|
+
end
|
18
|
+
|
19
|
+
respond_to do |format|
|
20
|
+
format.html # index.html.erb
|
21
|
+
format.json { render :json => @work_has_subjects }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# GET /work_has_subjects/1
|
26
|
+
# GET /work_has_subjects/1.json
|
27
|
+
def show
|
28
|
+
respond_to do |format|
|
29
|
+
format.html # show.html.erb
|
30
|
+
format.json { render :json => @work_has_subject }
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# GET /work_has_subjects/new
|
35
|
+
# GET /work_has_subjects/new.json
|
36
|
+
def new
|
37
|
+
get_work; get_subject
|
38
|
+
@work_has_subject = WorkHasSubject.new(:work => @work, :subject => @subject)
|
39
|
+
|
40
|
+
respond_to do |format|
|
41
|
+
format.html # new.html.erb
|
42
|
+
format.json { render :json => @work_has_subject }
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# GET /work_has_subjects/1/edit
|
47
|
+
def edit
|
48
|
+
end
|
49
|
+
|
50
|
+
# POST /work_has_subjects
|
51
|
+
# POST /work_has_subjects.json
|
52
|
+
def create
|
53
|
+
@work_has_subject = WorkHasSubject.new(params[:work_has_subject])
|
54
|
+
|
55
|
+
respond_to do |format|
|
56
|
+
if @work_has_subject.save
|
57
|
+
format.html { redirect_to @work_has_subject, :notice => t('controller.successfully_created', :model => t('activerecord.models.work_has_subject')) }
|
58
|
+
format.json { render :json => @work_has_subject, :status => :created, :location => @work_has_subject }
|
59
|
+
else
|
60
|
+
format.html { render :action => "new" }
|
61
|
+
format.json { render :json => @work_has_subject.errors, :status => :unprocessable_entity }
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# PUT /work_has_subjects/1
|
67
|
+
# PUT /work_has_subjects/1.json
|
68
|
+
def update
|
69
|
+
get_work
|
70
|
+
if @work and params[:move]
|
71
|
+
move_position(@work_has_subject, params[:move], false)
|
72
|
+
redirect_to work_work_has_subjects_url(@work)
|
73
|
+
return
|
74
|
+
end
|
75
|
+
|
76
|
+
respond_to do |format|
|
77
|
+
if @work_has_subject.update_attributes(params[:work_has_subject])
|
78
|
+
format.html { redirect_to @work_has_subject, :notice => t('controller.successfully_updated', :model => t('activerecord.models.work_has_subject')) }
|
79
|
+
format.json { head :no_content }
|
80
|
+
else
|
81
|
+
format.html { render :action => "edit" }
|
82
|
+
format.json { render :json => @work_has_subject.errors, :status => :unprocessable_entity }
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
# DELETE /work_has_subjects/1
|
88
|
+
# DELETE /work_has_subjects/1.json
|
89
|
+
def destroy
|
90
|
+
get_work; get_subject
|
91
|
+
@work_has_subject.destroy
|
92
|
+
|
93
|
+
respond_to do |format|
|
94
|
+
format.html {
|
95
|
+
case
|
96
|
+
when @work
|
97
|
+
redirect_to work_work_has_subjects_url(@work)
|
98
|
+
when @subject
|
99
|
+
redirect_to subject_work_has_subjects_url(@subject)
|
100
|
+
else
|
101
|
+
redirect_to work_has_subjects_url
|
102
|
+
end
|
103
|
+
}
|
104
|
+
format.json { head :no_content }
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
class Classification < ActiveRecord::Base
|
3
|
+
attr_accessible :parent_id, :category, :note, :classification_type_id, :classifiation_identifier
|
4
|
+
has_many :subject_has_classifications, :dependent => :destroy
|
5
|
+
has_many :subjects, :through => :subject_has_classifications
|
6
|
+
belongs_to :classification_type, :validate => true
|
7
|
+
#has_many_polymorphs :subjects, :from => [:concepts, :places], :through => :subject_has_classifications
|
8
|
+
|
9
|
+
validates_associated :classification_type
|
10
|
+
validates_presence_of :category, :classification_type, :classifiation_identifier
|
11
|
+
validates_uniqueness_of :classifiation_identifier, :scope => :classification_type_id
|
12
|
+
searchable do
|
13
|
+
text :category, :note, :subject, :classifiation_identifier
|
14
|
+
integer :subject_ids, :multiple => true
|
15
|
+
integer :classification_type_id
|
16
|
+
end
|
17
|
+
#acts_as_nested_set
|
18
|
+
#acts_as_taggable_on :tags
|
19
|
+
normalize_attributes :category
|
20
|
+
|
21
|
+
paginates_per 10
|
22
|
+
|
23
|
+
def self.import_from_tsv(filename)
|
24
|
+
logger.info "import_from_tsv start"
|
25
|
+
|
26
|
+
cnt = 0
|
27
|
+
ndc9 = ClassificationType.where(name: "ndc9").first
|
28
|
+
unless ndc9
|
29
|
+
logger.fatal "ndc9 not found"
|
30
|
+
raise ActiveRecord::RecordNotFound("ndc9 not found")
|
31
|
+
end
|
32
|
+
|
33
|
+
Classification.destroy_all(classification_type_id: ndc9.id)
|
34
|
+
|
35
|
+
open(filename) do |file|
|
36
|
+
file.each do |line|
|
37
|
+
if cnt == 0
|
38
|
+
else
|
39
|
+
rows = line.split("\t")
|
40
|
+
if rows[9].present?
|
41
|
+
ndcs = rows[9].split(';')
|
42
|
+
ndcs.each do |ndc|
|
43
|
+
logger.debug "ndc=#{ndc} ndlsh=#{rows[0]}"
|
44
|
+
parent_id = nil
|
45
|
+
category = rows[0].strip
|
46
|
+
identifier = ndc.strip
|
47
|
+
c = Classification.where(classification_type_id: ndc9.id, classifiation_identifier: identifier)
|
48
|
+
if c.blank?
|
49
|
+
c = Classification.new
|
50
|
+
c.parent_id = parent_id
|
51
|
+
c.category = category
|
52
|
+
c.classifiation_identifier = identifier
|
53
|
+
c.classification_type = ndc9
|
54
|
+
c.save!
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
cnt = cnt + 1
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
logger.info "import_from_tsv end"
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
def subject
|
68
|
+
subjects.collect{|s| [s.term, s.term_transcription]}
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
# == Schema Information
|
75
|
+
#
|
76
|
+
# Table name: classifications
|
77
|
+
#
|
78
|
+
# id :integer not null, primary key
|
79
|
+
# parent_id :integer
|
80
|
+
# category :string(255) not null
|
81
|
+
# note :text
|
82
|
+
# classification_type_id :integer not null
|
83
|
+
# created_at :datetime not null
|
84
|
+
# updated_at :datetime not null
|
85
|
+
# lft :integer
|
86
|
+
# rgt :integer
|
87
|
+
# manifestation_id :integer
|
88
|
+
#
|
89
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class ClassificationType < ActiveRecord::Base
|
2
|
+
attr_accessible :name, :display_name, :note
|
3
|
+
include MasterModel
|
4
|
+
default_scope :order => 'position'
|
5
|
+
has_many :classifications
|
6
|
+
end
|
7
|
+
|
8
|
+
# == Schema Information
|
9
|
+
#
|
10
|
+
# Table name: classification_types
|
11
|
+
#
|
12
|
+
# id :integer not null, primary key
|
13
|
+
# name :string(255) not null
|
14
|
+
# display_name :text
|
15
|
+
# note :text
|
16
|
+
# position :integer
|
17
|
+
# created_at :datetime
|
18
|
+
# updated_at :datetime
|
19
|
+
#
|
20
|
+
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module EnjuSubject
|
2
|
+
class Ability
|
3
|
+
include CanCan::Ability
|
4
|
+
|
5
|
+
def initialize(user, ip_address = nil)
|
6
|
+
case user.try(:role).try(:name)
|
7
|
+
when 'Administrator'
|
8
|
+
can :manage, [
|
9
|
+
Classification,
|
10
|
+
Subject
|
11
|
+
]
|
12
|
+
if LibraryGroup.site_config.network_access_allowed?(ip_address)
|
13
|
+
can [:read, :create, :update], ClassificationType
|
14
|
+
can [:destroy, :delete], ClassificationType do |classification_type|
|
15
|
+
classification_type.classifications.empty?
|
16
|
+
end
|
17
|
+
can :manage, [
|
18
|
+
Classification,
|
19
|
+
Subject,
|
20
|
+
SubjectHeadingType,
|
21
|
+
SubjectType
|
22
|
+
]
|
23
|
+
else
|
24
|
+
can :read, [
|
25
|
+
ClassificationType,
|
26
|
+
SubjectHeadingType,
|
27
|
+
SubjectType
|
28
|
+
]
|
29
|
+
end
|
30
|
+
when 'Librarian'
|
31
|
+
can :read, [
|
32
|
+
Classification,
|
33
|
+
ClassificationType,
|
34
|
+
Subject,
|
35
|
+
SubjectType,
|
36
|
+
SubjectHeadingType
|
37
|
+
]
|
38
|
+
when 'User'
|
39
|
+
can :read, [
|
40
|
+
Classification,
|
41
|
+
ClassificationType,
|
42
|
+
Subject,
|
43
|
+
SubjectHeadingType
|
44
|
+
]
|
45
|
+
else
|
46
|
+
can :read, [
|
47
|
+
Classification,
|
48
|
+
ClassificationType,
|
49
|
+
Subject,
|
50
|
+
SubjectHeadingType
|
51
|
+
]
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
class Subject < ActiveRecord::Base
|
3
|
+
attr_accessor :classification_id, :subject_heading_type_id
|
4
|
+
|
5
|
+
attr_accessible :parent_id, :use_term_id, :term, :term_transcription,
|
6
|
+
:subject_type_id, :note, :required_role_id, :subject_heading_type_id,
|
7
|
+
:term_alternative
|
8
|
+
|
9
|
+
has_paper_trail
|
10
|
+
|
11
|
+
# belongs_to :manifestation
|
12
|
+
belongs_to :subject_type
|
13
|
+
belongs_to :subject_heading_type
|
14
|
+
belongs_to :subject_type, :validate => true
|
15
|
+
belongs_to :required_role, :class_name => 'Role', :foreign_key => 'required_role_id'
|
16
|
+
|
17
|
+
has_many :work_has_subjects, :dependent => :destroy
|
18
|
+
has_many :works, :through => :work_has_subjects, :class_name => 'Manifestation'
|
19
|
+
|
20
|
+
has_many :subject_has_classifications, :dependent => :destroy
|
21
|
+
has_many :classifications, :through => :subject_has_classifications, :class_name => 'Classification'
|
22
|
+
|
23
|
+
has_many :subject_heading_type_has_subjects
|
24
|
+
has_many :subject_heading_types, :through => :subject_heading_type_has_subjects, :class_name => 'SubjectHeadingType'
|
25
|
+
|
26
|
+
validates_associated :subject_type
|
27
|
+
validates_presence_of :term, :subject_type
|
28
|
+
|
29
|
+
|
30
|
+
searchable do
|
31
|
+
text :term
|
32
|
+
time :created_at
|
33
|
+
integer :required_role_id
|
34
|
+
integer :work_ids, :multiple => true
|
35
|
+
integer :subject_heading_type_ids, :multiple => true
|
36
|
+
end
|
37
|
+
|
38
|
+
normalize_attributes :term
|
39
|
+
|
40
|
+
paginates_per 10
|
41
|
+
|
42
|
+
def subject_heading_type
|
43
|
+
self.subject_heading_types.first
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.import_subjects(subject_lists, subject_transcriptions = nil)
|
47
|
+
return [] if subject_lists.blank?
|
48
|
+
subjects = subject_lists.gsub(';', ';').split(/;/)
|
49
|
+
transcriptions = []
|
50
|
+
if subject_transcriptions.present?
|
51
|
+
transcriptions = subject_transcriptions.gsub(';', ';').split(/;/)
|
52
|
+
transcriptions = transcriptions.uniq.compact
|
53
|
+
end
|
54
|
+
list = []
|
55
|
+
subjects.compact.uniq.each_with_index do |s, i|
|
56
|
+
s = s.to_s.exstrip_with_full_size_space
|
57
|
+
next if s == ""
|
58
|
+
subject = Subject.where(:term => s).first
|
59
|
+
term_transcription = transcriptions[i].exstrip_with_full_size_space rescue nil
|
60
|
+
unless subject
|
61
|
+
# TODO: Subject typeの設定
|
62
|
+
subject = Subject.new(
|
63
|
+
:term => s,
|
64
|
+
:term_transcription => term_transcription,
|
65
|
+
:subject_type_id => 1,
|
66
|
+
)
|
67
|
+
subject.required_role = Role.where(:name => 'Guest').first
|
68
|
+
subject.save
|
69
|
+
else
|
70
|
+
if term_transcription
|
71
|
+
subject.term_transcription = term_transcription
|
72
|
+
subject.save
|
73
|
+
end
|
74
|
+
end
|
75
|
+
list << subject
|
76
|
+
end
|
77
|
+
list
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
# == Schema Information
|
83
|
+
#
|
84
|
+
# Table name: subjects
|
85
|
+
#
|
86
|
+
# id :integer not null, primary key
|
87
|
+
# parent_id :integer
|
88
|
+
# use_term_id :integer
|
89
|
+
# term :string(255)
|
90
|
+
# term_transcription :text
|
91
|
+
# subject_type_id :integer not null
|
92
|
+
# scope_note :text
|
93
|
+
# note :text
|
94
|
+
# required_role_id :integer default(1), not null
|
95
|
+
# lock_version :integer default(0), not null
|
96
|
+
# created_at :datetime
|
97
|
+
# updated_at :datetime
|
98
|
+
# deleted_at :datetime
|
99
|
+
#
|
100
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class SubjectHasClassification < ActiveRecord::Base
|
2
|
+
attr_accessible :subject_id, :classification_id
|
3
|
+
belongs_to :subject #, :polymorphic => true, :validate => true
|
4
|
+
belongs_to :classification, :validate => true
|
5
|
+
|
6
|
+
validates_associated :subject, :classification
|
7
|
+
validates_presence_of :subject, :classification
|
8
|
+
validates_uniqueness_of :classification_id, :scope => :subject_id
|
9
|
+
|
10
|
+
#def after_save
|
11
|
+
# if self.subject
|
12
|
+
# self.subject.reload
|
13
|
+
# self.subject.save
|
14
|
+
# end
|
15
|
+
# if self.classification
|
16
|
+
# self.classification.reload
|
17
|
+
# self.classification.save
|
18
|
+
# end
|
19
|
+
#end
|
20
|
+
|
21
|
+
#def after_destroy
|
22
|
+
# after_save
|
23
|
+
#end
|
24
|
+
end
|
25
|
+
|
26
|
+
# == Schema Information
|
27
|
+
#
|
28
|
+
# Table name: subject_has_classifications
|
29
|
+
#
|
30
|
+
# id :integer not null, primary key
|
31
|
+
# subject_id :integer
|
32
|
+
# subject_type :string(255)
|
33
|
+
# classification_id :integer not null
|
34
|
+
# created_at :datetime
|
35
|
+
# updated_at :datetime
|
36
|
+
#
|
37
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class SubjectHeadingType < ActiveRecord::Base
|
2
|
+
attr_accessible :name, :display_name, :note
|
3
|
+
include MasterModel
|
4
|
+
#has_many_polymorphs :subjects, :from => [:concepts, :places], :through => :subject_heading_type_has_subjects
|
5
|
+
has_many :subject_heading_type_has_subjects
|
6
|
+
has_many :subjects, :through => :subject_heading_type_has_subjects
|
7
|
+
end
|
8
|
+
|
9
|
+
# == Schema Information
|
10
|
+
#
|
11
|
+
# Table name: subject_heading_types
|
12
|
+
#
|
13
|
+
# id :integer not null, primary key
|
14
|
+
# name :string(255) not null
|
15
|
+
# display_name :text
|
16
|
+
# note :text
|
17
|
+
# position :integer
|
18
|
+
# created_at :datetime
|
19
|
+
# updated_at :datetime
|
20
|
+
#
|
21
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class SubjectHeadingTypeHasSubject < ActiveRecord::Base
|
2
|
+
attr_accessible :subject_id, :subject_heading_type_id
|
3
|
+
belongs_to :subject #, :polymorphic => true
|
4
|
+
belongs_to :subject_heading_type
|
5
|
+
|
6
|
+
validates_presence_of :subject, :subject_heading_type
|
7
|
+
validates_associated :subject, :subject_heading_type
|
8
|
+
validates_uniqueness_of :subject_id, :scope => :subject_heading_type_id
|
9
|
+
end
|
10
|
+
|
11
|
+
# == Schema Information
|
12
|
+
#
|
13
|
+
# Table name: subject_heading_type_has_subjects
|
14
|
+
#
|
15
|
+
# id :integer not null, primary key
|
16
|
+
# subject_id :integer not null
|
17
|
+
# subject_type :string(255)
|
18
|
+
# subject_heading_type_id :integer not null
|
19
|
+
# created_at :datetime
|
20
|
+
# updated_at :datetime
|
21
|
+
#
|
22
|
+
|