enju_biblio 0.1.0.pre33 → 0.1.0.pre34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/manifestations_controller.rb +6 -27
- data/app/controllers/series_has_manifestations_controller.rb +2 -2
- data/app/controllers/series_statements_controller.rb +1 -17
- data/app/models/enju_biblio/ability.rb +2 -2
- data/app/models/item.rb +2 -3
- data/app/models/manifestation.rb +109 -163
- data/app/models/page_sweeper.rb +1 -3
- data/app/models/resource_import_file.rb +26 -62
- data/app/models/series_statement.rb +35 -76
- data/app/views/manifestations/_form.html.erb +9 -24
- data/app/views/manifestations/_manifestation.html.erb +5 -5
- data/app/views/manifestations/_show_detail_librarian.html.erb +6 -2
- data/app/views/manifestations/_show_detail_user.html.erb +6 -2
- data/app/views/manifestations/_show_index.html.erb +3 -8
- data/app/views/manifestations/_show_periodical_master.html.erb +6 -23
- data/app/views/manifestations/_show_series_index.html.erb +1 -9
- data/app/views/manifestations/show.html.erb +1 -1
- data/app/views/series_statements/_form.html.erb +0 -8
- data/app/views/series_statements/_index.html.erb +3 -17
- data/app/views/series_statements/_index_manifestation.html.erb +0 -15
- data/app/views/series_statements/_index_parent.html.erb +0 -2
- data/app/views/series_statements/_index_series_statement_merge_list.html.erb +0 -2
- data/app/views/series_statements/_manifestation_list.html.erb +1 -1
- data/app/views/series_statements/show.html.erb +0 -9
- data/config/locales/translation_en.yml +1 -0
- data/config/locales/translation_ja.yml +1 -0
- data/db/migrate/20130421093852_add_periodical_to_manifestation.rb +5 -0
- data/db/migrate/20130421155019_add_creator_string_to_series_statement.rb +7 -0
- data/db/migrate/20130421164124_add_series_master_to_series_statement.rb +5 -0
- data/lib/enju_biblio/version.rb +1 -1
- data/spec/cassette_library/ImportRequest/import/should_import_bibliographic_record.yml +49 -47
- data/spec/cassette_library/ImportRequestsController/POST_create/When_logged_in_as_Administrator/with_isbn_which_is_already_imported/redirects_to_the_created_import_request.yml +624 -0
- data/spec/cassette_library/ImportRequestsController/POST_create/When_logged_in_as_Administrator/with_valid_params/assigns_a_newly_created_import_request_as_import_request.yml +624 -0
- data/spec/cassette_library/ImportRequestsController/POST_create/When_logged_in_as_Administrator/with_valid_params/redirects_to_the_created_import_request.yml +624 -0
- data/spec/cassette_library/ImportRequestsController/POST_create/When_logged_in_as_Librarian/with_valid_params/assigns_a_newly_created_import_request_as_import_request.yml +624 -0
- data/spec/cassette_library/ImportRequestsController/POST_create/When_logged_in_as_Librarian/with_valid_params/redirects_to_the_created_import_request.yml +624 -0
- data/spec/controllers/import_requests_controller_spec.rb +29 -31
- data/spec/controllers/manifestations_controller_spec.rb +5 -37
- data/spec/dummy/app/models/ability.rb +2 -2
- data/spec/dummy/config/application.rb +0 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/schema.rb +10 -7
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/private/system/resource_import_files/resource_imports/000/000/004/original/resource_import_file_sample1.tsv +1 -1
- data/spec/dummy/private/system/resource_import_files/resource_imports/000/000/004/original/resource_import_file_sample2.tsv +1 -1
- data/spec/dummy/solr/data/test/index/segments.gen +0 -0
- data/spec/dummy/solr/data/test/index/segments_gs2 +0 -0
- data/spec/dummy/tmp/cache/4AD/470/country_all +0 -0
- data/spec/fixtures/items.yml +2 -3
- data/spec/fixtures/manifestations.yml +72 -72
- data/spec/fixtures/series_statements.yml +21 -23
- data/spec/models/item_spec.rb +26 -28
- data/spec/models/manifestation_spec.rb +80 -76
- data/spec/models/resource_import_file_spec.rb +33 -9
- data/spec/models/series_statement_spec.rb +22 -34
- metadata +22 -25
- data/app/views/series_statements/_periodical_facet.html.erb +0 -15
- data/db/migrate/20110425133109_add_issn_to_series_statement.rb +0 -9
- data/db/migrate/20110618091240_add_periodical_to_series_statement.rb +0 -9
- data/db/migrate/20110918161853_rename_series_statement_manifestation_id_to_root_manifestation_id.rb +0 -13
- data/spec/dummy/solr/data/test/index/segments_6n6 +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a61cbe1e5100da511b2e44411b7c45727ff50fc4
|
4
|
+
data.tar.gz: fdbd62984455ea5e0786a4707bcd8be30e3e258b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ccb0b3ffd7d43dc350546820a2303b2a7619f85db19b634596437fb2913c93624e679ea241162abf6bffa72117568ed7aeaf18779ec873d90d946f8f64c7bc2
|
7
|
+
data.tar.gz: 3f78f29acd4a0a7a25213fd42737d2ed476c912cea2f45a22b7aeb5d66ab11b93bf1e2c572e20ca36700d22e9c5a10b2e6d62e2cc600b5d16b73cd45c2fc7b61
|
@@ -97,7 +97,7 @@ class ManifestationsController < ApplicationController
|
|
97
97
|
@query = query.dup
|
98
98
|
query = query.gsub(' ', ' ')
|
99
99
|
|
100
|
-
includes = [:carrier_type,
|
100
|
+
includes = [:carrier_type, :series_statements]
|
101
101
|
includes << :bookmarks if defined?(EnjuBookmark)
|
102
102
|
search = Manifestation.search(:include => includes)
|
103
103
|
role = current_user.try(:role) || Role.default_role
|
@@ -125,7 +125,7 @@ class ManifestationsController < ApplicationController
|
|
125
125
|
with(:contributor_ids).equal_to patron[:contributor].id if patron[:contributor]
|
126
126
|
with(:publisher_ids).equal_to patron[:publisher].id if patron[:publisher]
|
127
127
|
with(:original_manifestation_ids).equal_to manifestation.id if manifestation
|
128
|
-
with(:
|
128
|
+
with(:series_statement_ids).equal_to series_statement.id if series_statement
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
@@ -137,7 +137,7 @@ class ManifestationsController < ApplicationController
|
|
137
137
|
with(:subject_ids).equal_to subject.id if subject
|
138
138
|
end
|
139
139
|
if series_statement
|
140
|
-
with(:
|
140
|
+
with(:series_master).equal_to false
|
141
141
|
if series_statement.periodical?
|
142
142
|
if mode != 'add'
|
143
143
|
order_by :volume_number, sort[:order]
|
@@ -374,10 +374,10 @@ class ManifestationsController < ApplicationController
|
|
374
374
|
flash.keep(:search_query)
|
375
375
|
store_location
|
376
376
|
|
377
|
-
if @manifestation.
|
377
|
+
if @manifestation.series_master?
|
378
378
|
flash.keep(:notice) if flash[:notice]
|
379
379
|
flash[:manifestation_id] = @manifestation.id
|
380
|
-
redirect_to series_statement_manifestations_url(@manifestation.
|
380
|
+
redirect_to series_statement_manifestations_url(@manifestation.root_series_statement)
|
381
381
|
return
|
382
382
|
end
|
383
383
|
|
@@ -435,11 +435,7 @@ class ManifestationsController < ApplicationController
|
|
435
435
|
# GET /manifestations/new.json
|
436
436
|
def new
|
437
437
|
@manifestation = Manifestation.new
|
438
|
-
@original_manifestation = Manifestation.where(:id => params[:manifestation_id]).first
|
439
|
-
set_title
|
440
438
|
@manifestation.language = Language.where(:iso_639_1 => @locale).first
|
441
|
-
@manifestation.series_has_manifestation = SeriesHasManifestation.new
|
442
|
-
@manifestation.series_has_manifestation.series_statement = @series_statement
|
443
439
|
|
444
440
|
respond_to do |format|
|
445
441
|
format.html # new.html.erb
|
@@ -454,8 +450,6 @@ class ManifestationsController < ApplicationController
|
|
454
450
|
access_denied; return
|
455
451
|
end
|
456
452
|
end
|
457
|
-
@original_manifestation = Manifestation.where(:id => params[:manifestation_id]).first
|
458
|
-
@series_statement = @manifestation.series_statement unless @series_statement
|
459
453
|
if defined?(EnjuSubject)
|
460
454
|
@classification_types = ClassificationType.select(:display_name)
|
461
455
|
end
|
@@ -472,7 +466,6 @@ class ManifestationsController < ApplicationController
|
|
472
466
|
# POST /manifestations.json
|
473
467
|
def create
|
474
468
|
@manifestation = Manifestation.new(params[:manifestation])
|
475
|
-
@original_manifestation = Manifestation.where(:id => params[:manifestation_id]).first
|
476
469
|
unless @manifestation.original_title?
|
477
470
|
@manifestation.original_title = @manifestation.attachment_file_name
|
478
471
|
end
|
@@ -481,9 +474,6 @@ class ManifestationsController < ApplicationController
|
|
481
474
|
set_patrons
|
482
475
|
if @manifestation.save
|
483
476
|
Sunspot.commit
|
484
|
-
if @original_manifestation
|
485
|
-
@manifestation.derived_manifestations << @original_manifestation
|
486
|
-
end
|
487
477
|
|
488
478
|
format.html { redirect_to @manifestation, :notice => t('controller.successfully_created', :model => t('activerecord.models.manifestation')) }
|
489
479
|
format.json { render :json => @manifestation, :status => :created, :location => @manifestation }
|
@@ -499,8 +489,8 @@ class ManifestationsController < ApplicationController
|
|
499
489
|
# PUT /manifestations/1.json
|
500
490
|
def update
|
501
491
|
respond_to do |format|
|
502
|
-
set_patrons
|
503
492
|
if @manifestation.update_attributes(params[:manifestation])
|
493
|
+
set_patrons
|
504
494
|
Sunspot.commit
|
505
495
|
format.html { redirect_to @manifestation, :notice => t('controller.successfully_updated', :model => t('activerecord.models.manifestation')) }
|
506
496
|
format.json { head :no_content }
|
@@ -515,9 +505,7 @@ class ManifestationsController < ApplicationController
|
|
515
505
|
# DELETE /manifestations/1
|
516
506
|
# DELETE /manifestations/1.json
|
517
507
|
def destroy
|
518
|
-
series_statement = @manifestation.series_statement
|
519
508
|
@manifestation.destroy
|
520
|
-
series_statement.try(:index!)
|
521
509
|
|
522
510
|
respond_to do |format|
|
523
511
|
format.html { redirect_to manifestations_url, :notice => t('controller.successfully_deleted', :model => t('activerecord.models.manifestation')) }
|
@@ -767,15 +755,6 @@ class ManifestationsController < ApplicationController
|
|
767
755
|
query
|
768
756
|
end
|
769
757
|
|
770
|
-
def set_title
|
771
|
-
if @series_statement
|
772
|
-
@manifestation.set_series_statement(@series_statement)
|
773
|
-
elsif @original_manifestation
|
774
|
-
@manifestation.original_title = @original_manifestation.original_title
|
775
|
-
@manifestation.title_transcription = @original_manifestation.title_transcription
|
776
|
-
end
|
777
|
-
end
|
778
|
-
|
779
758
|
def set_patrons
|
780
759
|
@manifestation.set_creators(@manifestation.creators)
|
781
760
|
@manifestation.set_contributors(@manifestation.contributors)
|
@@ -66,10 +66,10 @@ class SeriesHasManifestationsController < ApplicationController
|
|
66
66
|
# PUT /series_has_manifestations/1
|
67
67
|
# PUT /series_has_manifestations/1.json
|
68
68
|
def update
|
69
|
-
|
69
|
+
old_series_statements = @series_has_manifestation.manifestation.series_statements
|
70
70
|
respond_to do |format|
|
71
71
|
if @series_has_manifestation.update_attributes(params[:series_has_manifestation])
|
72
|
-
|
72
|
+
old_series_statements.map{|s| s.index}
|
73
73
|
Sunspot.commit
|
74
74
|
format.html { redirect_to @series_has_manifestation, :notice => t('controller.successfully_updated', :model => t('activerecord.models.series_has_manifestation')) }
|
75
75
|
format.json { head :no_content }
|
@@ -14,8 +14,6 @@ class SeriesStatementsController < ApplicationController
|
|
14
14
|
search = Sunspot.new_search(SeriesStatement)
|
15
15
|
query = params[:query].to_s.strip
|
16
16
|
page = params[:page] || 1
|
17
|
-
set_periodical
|
18
|
-
periodical = @periodical
|
19
17
|
|
20
18
|
unless query.blank?
|
21
19
|
@query = query.dup
|
@@ -25,8 +23,6 @@ class SeriesStatementsController < ApplicationController
|
|
25
23
|
fulltext query if query.present?
|
26
24
|
paginate :page => page.to_i, :per_page => SeriesStatement.default_per_page
|
27
25
|
order_by :position, :asc
|
28
|
-
with(:periodical).equal_to periodical unless periodical.nil?
|
29
|
-
facet :periodical
|
30
26
|
end
|
31
27
|
#work = @work
|
32
28
|
manifestation = @manifestation
|
@@ -38,7 +34,7 @@ class SeriesStatementsController < ApplicationController
|
|
38
34
|
# with(:work_id).equal_to work.id if work
|
39
35
|
with(:parent_ids).equal_to parent.id if parent
|
40
36
|
with(:child_ids).equal_to child.id if child
|
41
|
-
with(:
|
37
|
+
with(:manifestation_id).equal_to manifestation.id if manifestation
|
42
38
|
with(:series_statement_merge_list_ids).equal_to series_statement_merge_list.id if series_statement_merge_list
|
43
39
|
end
|
44
40
|
else
|
@@ -50,7 +46,6 @@ class SeriesStatementsController < ApplicationController
|
|
50
46
|
search.query.paginate(page.to_i, SeriesStatement.default_per_page)
|
51
47
|
search_result = search.execute!
|
52
48
|
@series_statements = search_result.results
|
53
|
-
@periodical_facet = search_result.facet(:periodical).rows
|
54
49
|
|
55
50
|
respond_to do |format|
|
56
51
|
format.html # index.html.erb
|
@@ -151,15 +146,4 @@ class SeriesStatementsController < ApplicationController
|
|
151
146
|
@parent = SeriesStatement.find(params[:parent_id]) if params[:parent_id]
|
152
147
|
@child = SeriesStatement.find(params[:child_id]) if params[:child_id]
|
153
148
|
end
|
154
|
-
|
155
|
-
def set_periodical
|
156
|
-
case params[:periodical]
|
157
|
-
when "true"
|
158
|
-
@periodical = true
|
159
|
-
when "false"
|
160
|
-
@periodical = false
|
161
|
-
else
|
162
|
-
@periodical = nil
|
163
|
-
end
|
164
|
-
end
|
165
149
|
end
|
@@ -15,7 +15,7 @@ module EnjuBiblio
|
|
15
15
|
end
|
16
16
|
can [:read, :create, :update], Manifestation
|
17
17
|
can [:destroy, :delete], Manifestation do |manifestation|
|
18
|
-
manifestation.items.empty? and !manifestation.
|
18
|
+
manifestation.items.empty? and !manifestation.series_master?
|
19
19
|
end
|
20
20
|
can :manage, [
|
21
21
|
Create,
|
@@ -74,7 +74,7 @@ module EnjuBiblio
|
|
74
74
|
can :index, Manifestation
|
75
75
|
can [:show, :create, :update], Manifestation
|
76
76
|
can [:destroy, :delete], Manifestation do |manifestation|
|
77
|
-
manifestation.items.empty? and !manifestation.
|
77
|
+
manifestation.items.empty? and !manifestation.series_master?
|
78
78
|
end
|
79
79
|
can [:index, :create], Patron
|
80
80
|
can :show, Patron do |patron|
|
data/app/models/item.rb
CHANGED
@@ -102,8 +102,6 @@ end
|
|
102
102
|
# id :integer not null, primary key
|
103
103
|
# call_number :string(255)
|
104
104
|
# item_identifier :string(255)
|
105
|
-
# circulation_status_id :integer default(5), not null
|
106
|
-
# checkout_type_id :integer default(1), not null
|
107
105
|
# created_at :datetime not null
|
108
106
|
# updated_at :datetime not null
|
109
107
|
# deleted_at :datetime
|
@@ -119,6 +117,7 @@ end
|
|
119
117
|
# acquired_at :datetime
|
120
118
|
# bookstore_id :integer
|
121
119
|
# budget_type_id :integer
|
122
|
-
#
|
120
|
+
# circulation_status_id :integer default(5), not null
|
121
|
+
# checkout_type_id :integer default(1), not null
|
123
122
|
#
|
124
123
|
|
data/app/models/manifestation.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
1
2
|
class Manifestation < ActiveRecord::Base
|
2
3
|
enju_circulation_manifestation_model if defined?(EnjuCirculation)
|
3
4
|
enju_subject_manifestation_model if defined?(EnjuSubject)
|
@@ -19,13 +20,11 @@ class Manifestation < ActiveRecord::Base
|
|
19
20
|
:valid_until, :date_submitted, :date_accepted, :date_captured, :ndl_bib_id,
|
20
21
|
:pub_date, :edition_string, :volume_number, :issue_number, :serial_number,
|
21
22
|
:ndc, :content_type_id, :attachment, :classification_number,
|
22
|
-
:
|
23
|
+
:series_statements_attributes,
|
23
24
|
:creators_attributes, :contributors_attributes, :publishers_attributes
|
24
25
|
attr_accessible :fulltext_content,
|
25
26
|
:doi, :number_of_page_string
|
26
27
|
|
27
|
-
scope :periodical_master, where(:periodical => false)
|
28
|
-
scope :periodical_children, where(:periodical => true)
|
29
28
|
has_many :creates, :dependent => :destroy, :foreign_key => 'work_id'
|
30
29
|
has_many :creators, :through => :creates, :source => :patron, :order => 'creates.position'
|
31
30
|
has_many :realizes, :dependent => :destroy, :foreign_key => 'expression_id'
|
@@ -42,16 +41,15 @@ class Manifestation < ActiveRecord::Base
|
|
42
41
|
belongs_to :language
|
43
42
|
belongs_to :carrier_type
|
44
43
|
belongs_to :manifestation_content_type, :class_name => 'ContentType', :foreign_key => 'content_type_id'
|
45
|
-
|
46
|
-
has_one :series_statement, :through => :series_has_manifestation
|
44
|
+
has_many :series_statements
|
47
45
|
belongs_to :frequency
|
48
46
|
belongs_to :required_role, :class_name => 'Role', :foreign_key => 'required_role_id', :validate => true
|
49
47
|
has_one :resource_import_result
|
50
48
|
belongs_to :nii_type if defined?(EnjuNii)
|
51
|
-
accepts_nested_attributes_for :series_has_manifestation
|
52
49
|
accepts_nested_attributes_for :creators, :allow_destroy => true, :reject_if => :all_blank
|
53
50
|
accepts_nested_attributes_for :contributors, :allow_destroy => true, :reject_if => :all_blank
|
54
51
|
accepts_nested_attributes_for :publishers, :allow_destroy => true, :reject_if => :all_blank
|
52
|
+
accepts_nested_attributes_for :series_statements, :allow_destroy => true, :reject_if => :all_blank
|
55
53
|
|
56
54
|
searchable do
|
57
55
|
text :title, :default_boost => 2 do
|
@@ -59,8 +57,8 @@ class Manifestation < ActiveRecord::Base
|
|
59
57
|
end
|
60
58
|
text :fulltext, :note, :creator, :contributor, :publisher, :description
|
61
59
|
text :item_identifier do
|
62
|
-
if
|
63
|
-
|
60
|
+
if series_master?
|
61
|
+
root_series_statement.manifestation.items.pluck(:item_identifier)
|
64
62
|
else
|
65
63
|
items.pluck(:item_identifier)
|
66
64
|
end
|
@@ -82,10 +80,10 @@ class Manifestation < ActiveRecord::Base
|
|
82
80
|
[isbn, isbn10, wrong_isbn]
|
83
81
|
end
|
84
82
|
string :issn, :multiple => true do
|
85
|
-
if
|
86
|
-
|
83
|
+
if series_statements.exists?
|
84
|
+
[issn, (series_statements.map{|s| s.manifestation.issn})].flatten.uniq.compact
|
87
85
|
else
|
88
|
-
|
86
|
+
issn
|
89
87
|
end
|
90
88
|
end
|
91
89
|
string :lccn
|
@@ -94,22 +92,18 @@ class Manifestation < ActiveRecord::Base
|
|
94
92
|
carrier_type.name
|
95
93
|
end
|
96
94
|
string :library, :multiple => true do
|
97
|
-
if
|
98
|
-
|
95
|
+
if series_master?
|
96
|
+
root_series_statement.manifestation.items.map{|i| i.shelf.library.name}.flatten.uniq
|
99
97
|
else
|
100
98
|
items.map{|i| i.shelf.library.name}
|
101
99
|
end
|
102
100
|
end
|
103
101
|
string :language do
|
104
|
-
|
105
|
-
series_statement.last_issue.try(:language).try(:name)
|
106
|
-
else
|
107
|
-
language.try(:name)
|
108
|
-
end
|
102
|
+
language.try(:name)
|
109
103
|
end
|
110
104
|
string :item_identifier, :multiple => true do
|
111
|
-
if
|
112
|
-
|
105
|
+
if series_master?
|
106
|
+
root_series_statement.manifestation.items.pluck(:item_identifier)
|
113
107
|
else
|
114
108
|
items.collect(&:item_identifier)
|
115
109
|
end
|
@@ -121,8 +115,8 @@ class Manifestation < ActiveRecord::Base
|
|
121
115
|
time :updated_at
|
122
116
|
time :deleted_at
|
123
117
|
time :pub_date, :multiple => true do
|
124
|
-
if
|
125
|
-
|
118
|
+
if series_master?
|
119
|
+
root_series_statement.manifestation.pub_dates
|
126
120
|
else
|
127
121
|
pub_dates
|
128
122
|
end
|
@@ -147,9 +141,7 @@ class Manifestation < ActiveRecord::Base
|
|
147
141
|
integer :end_page
|
148
142
|
integer :number_of_pages
|
149
143
|
float :price
|
150
|
-
integer :
|
151
|
-
series_has_manifestation.try(:series_statement_id)
|
152
|
-
end
|
144
|
+
integer :series_statement_ids, :multiple => true
|
153
145
|
boolean :repository_content
|
154
146
|
# for OpenURL
|
155
147
|
text :aulast do
|
@@ -166,24 +158,24 @@ class Manifestation < ActiveRecord::Base
|
|
166
158
|
creator
|
167
159
|
end
|
168
160
|
text :atitle do
|
169
|
-
|
161
|
+
unless series_master?
|
162
|
+
title if periodical?
|
163
|
+
end
|
170
164
|
end
|
171
165
|
text :btitle do
|
172
|
-
title unless
|
166
|
+
title unless periodical?
|
173
167
|
end
|
174
168
|
text :jtitle do
|
175
|
-
if
|
176
|
-
|
177
|
-
else # 雑誌以外(雑誌の記事も含む)
|
178
|
-
original_manifestations.map{|m| m.title}.flatten
|
169
|
+
if periodical?
|
170
|
+
titles
|
179
171
|
end
|
180
172
|
end
|
181
173
|
text :isbn do # 前方一致検索のためtext指定を追加
|
182
174
|
[isbn, isbn10, wrong_isbn]
|
183
175
|
end
|
184
176
|
text :issn do # 前方一致検索のためtext指定を追加
|
185
|
-
if
|
186
|
-
|
177
|
+
if series_statements.exists?
|
178
|
+
[issn, (series_statements.map{|s| s.manifestation.issn})].flatten.uniq.compact
|
187
179
|
else
|
188
180
|
issn
|
189
181
|
end
|
@@ -193,8 +185,8 @@ class Manifestation < ActiveRecord::Base
|
|
193
185
|
boolean :periodical do
|
194
186
|
periodical?
|
195
187
|
end
|
196
|
-
boolean :
|
197
|
-
|
188
|
+
boolean :series_master do
|
189
|
+
series_master?
|
198
190
|
end
|
199
191
|
time :acquired_at
|
200
192
|
end
|
@@ -212,7 +204,7 @@ class Manifestation < ActiveRecord::Base
|
|
212
204
|
validates_associated :carrier_type, :language
|
213
205
|
validates :start_page, :numericality => true, :allow_blank => true
|
214
206
|
validates :end_page, :numericality => true, :allow_blank => true
|
215
|
-
validates :isbn, :uniqueness => true, :allow_blank => true, :unless => proc{|manifestation| manifestation.
|
207
|
+
validates :isbn, :uniqueness => true, :allow_blank => true, :unless => proc{|manifestation| manifestation.series_statements.exists?}
|
216
208
|
validates :nbn, :uniqueness => true, :allow_blank => true
|
217
209
|
validates :manifestation_identifier, :uniqueness => true, :allow_blank => true
|
218
210
|
validates :pub_date, :format => {:with => /\A\[{0,1}\d+([\/-]\d{0,2}){0,2}\]{0,1}\z/}, :allow_blank => true
|
@@ -340,7 +332,7 @@ class Manifestation < ActiveRecord::Base
|
|
340
332
|
title << issue_number_string
|
341
333
|
title << serial_number.to_s
|
342
334
|
title << edition_string
|
343
|
-
title <<
|
335
|
+
title << series_statements.map{|s| s.titles}
|
344
336
|
#title << original_title.wakati
|
345
337
|
#title << title_transcription.wakati rescue nil
|
346
338
|
#title << title_alternative.wakati rescue nil
|
@@ -352,17 +344,6 @@ class Manifestation < ActiveRecord::Base
|
|
352
344
|
"#{LibraryGroup.site_config.url}#{self.class.to_s.tableize}/#{self.id}"
|
353
345
|
end
|
354
346
|
|
355
|
-
def set_series_statement(series_statement)
|
356
|
-
if series_statement
|
357
|
-
if series_statement.periodical?
|
358
|
-
set_serial_information(series_statement)
|
359
|
-
else
|
360
|
-
self.original_title = series_statement.original_title
|
361
|
-
self.title_transcription = series_statement.title_transcription
|
362
|
-
end
|
363
|
-
end
|
364
|
-
end
|
365
|
-
|
366
347
|
def creator
|
367
348
|
creators.collect(&:name).flatten
|
368
349
|
end
|
@@ -418,11 +399,11 @@ class Manifestation < ActiveRecord::Base
|
|
418
399
|
end
|
419
400
|
|
420
401
|
def sort_title
|
421
|
-
if
|
422
|
-
if
|
423
|
-
NKF.nkf('-w --katakana',
|
402
|
+
if series_master?
|
403
|
+
if root_series_statement.title_transcription?
|
404
|
+
NKF.nkf('-w --katakana', root_series_statement.title_transcription)
|
424
405
|
else
|
425
|
-
|
406
|
+
root_series_statement.original_title
|
426
407
|
end
|
427
408
|
else
|
428
409
|
if title_transcription?
|
@@ -441,28 +422,20 @@ class Manifestation < ActiveRecord::Base
|
|
441
422
|
end
|
442
423
|
|
443
424
|
def index_series_statement
|
444
|
-
|
425
|
+
series_statements.map{|s| s.index}
|
445
426
|
end
|
446
427
|
|
447
428
|
def acquired_at
|
448
429
|
items.order(:acquired_at).first.try(:acquired_at)
|
449
430
|
end
|
450
431
|
|
451
|
-
def
|
452
|
-
|
453
|
-
false
|
454
|
-
end
|
455
|
-
|
456
|
-
def periodical_master?
|
457
|
-
if series_statement
|
458
|
-
return true if series_statement.periodical and root_of_series?
|
459
|
-
end
|
460
|
-
false
|
432
|
+
def root_series_statement
|
433
|
+
series_statements.where(:series_master => true).first
|
461
434
|
end
|
462
435
|
|
463
|
-
def
|
464
|
-
|
465
|
-
return true
|
436
|
+
def series_master?
|
437
|
+
series_statements.each do |series_statement|
|
438
|
+
return true if series_statement.series_master
|
466
439
|
end
|
467
440
|
false
|
468
441
|
end
|
@@ -546,38 +519,6 @@ class Manifestation < ActiveRecord::Base
|
|
546
519
|
end
|
547
520
|
|
548
521
|
private
|
549
|
-
def set_serial_information(series_statement)
|
550
|
-
return nil unless series_statement.periodical?
|
551
|
-
manifestation = series_statement.last_issue
|
552
|
-
|
553
|
-
if manifestation
|
554
|
-
self.original_title = manifestation.original_title
|
555
|
-
self.title_transcription = manifestation.title_transcription
|
556
|
-
self.title_alternative = manifestation.title_alternative
|
557
|
-
self.issn = series_statement.issn
|
558
|
-
# TODO: 雑誌ごとに巻・号・通号のパターンを設定できるようにする
|
559
|
-
if manifestation.serial_number.to_i > 0
|
560
|
-
self.serial_number = manifestation.serial_number.to_i + 1
|
561
|
-
if manifestation.issue_number.to_i > 0
|
562
|
-
self.issue_number = manifestation.issue_number.to_i + 1
|
563
|
-
else
|
564
|
-
self.issue_number = manifestation.issue_number
|
565
|
-
end
|
566
|
-
self.volume_number = manifestation.volume_number
|
567
|
-
else
|
568
|
-
if manifestation.issue_number.to_i > 0
|
569
|
-
self.issue_number = manifestation.issue_number.to_i + 1
|
570
|
-
self.volume_number = manifestation.volume_number
|
571
|
-
else
|
572
|
-
if manifestation.volume_number.to_i > 0
|
573
|
-
self.volume_number = manifestation.volume_number.to_i + 1
|
574
|
-
end
|
575
|
-
end
|
576
|
-
end
|
577
|
-
end
|
578
|
-
self
|
579
|
-
end
|
580
|
-
|
581
522
|
def set_patrons(patrons)
|
582
523
|
new_patrons = []
|
583
524
|
patrons.each do |patron|
|
@@ -595,70 +536,75 @@ end
|
|
595
536
|
#
|
596
537
|
# Table name: manifestations
|
597
538
|
#
|
598
|
-
# id
|
599
|
-
# original_title
|
600
|
-
# title_alternative
|
601
|
-
# title_transcription
|
602
|
-
# classification_number
|
603
|
-
# manifestation_identifier
|
604
|
-
# date_of_publication
|
605
|
-
# date_copyrighted
|
606
|
-
# created_at
|
607
|
-
# updated_at
|
608
|
-
# deleted_at
|
609
|
-
# access_address
|
610
|
-
# language_id
|
611
|
-
# carrier_type_id
|
612
|
-
# extent_id
|
613
|
-
# start_page
|
614
|
-
# end_page
|
615
|
-
# height
|
616
|
-
# width
|
617
|
-
# depth
|
618
|
-
# isbn
|
619
|
-
# isbn10
|
620
|
-
# wrong_isbn
|
621
|
-
# nbn
|
622
|
-
# lccn
|
623
|
-
# oclc_number
|
624
|
-
# issn
|
625
|
-
# price
|
626
|
-
# fulltext
|
627
|
-
# volume_number_string
|
628
|
-
# issue_number_string
|
629
|
-
# serial_number_string
|
630
|
-
# edition
|
631
|
-
# note
|
632
|
-
# repository_content
|
633
|
-
# lock_version
|
634
|
-
# required_role_id
|
635
|
-
# state
|
636
|
-
# required_score
|
637
|
-
# frequency_id
|
638
|
-
# subscription_master
|
639
|
-
# attachment_file_name
|
640
|
-
# attachment_content_type
|
641
|
-
# attachment_file_size
|
642
|
-
# attachment_updated_at
|
643
|
-
# title_alternative_transcription
|
644
|
-
# description
|
645
|
-
# abstract
|
646
|
-
# available_at
|
647
|
-
# valid_until
|
648
|
-
# date_submitted
|
649
|
-
# date_accepted
|
650
|
-
# date_caputured
|
651
|
-
# pub_date
|
652
|
-
# edition_string
|
653
|
-
# volume_number
|
654
|
-
# issue_number
|
655
|
-
# serial_number
|
656
|
-
# ndc
|
657
|
-
# content_type_id
|
658
|
-
# year_of_publication
|
659
|
-
# attachment_meta
|
660
|
-
# month_of_publication
|
661
|
-
# fulltext_content
|
662
|
-
# doi
|
539
|
+
# id :integer not null, primary key
|
540
|
+
# original_title :text not null
|
541
|
+
# title_alternative :text
|
542
|
+
# title_transcription :text
|
543
|
+
# classification_number :string(255)
|
544
|
+
# manifestation_identifier :string(255)
|
545
|
+
# date_of_publication :datetime
|
546
|
+
# date_copyrighted :datetime
|
547
|
+
# created_at :datetime not null
|
548
|
+
# updated_at :datetime not null
|
549
|
+
# deleted_at :datetime
|
550
|
+
# access_address :string(255)
|
551
|
+
# language_id :integer default(1), not null
|
552
|
+
# carrier_type_id :integer default(1), not null
|
553
|
+
# extent_id :integer default(1), not null
|
554
|
+
# start_page :integer
|
555
|
+
# end_page :integer
|
556
|
+
# height :integer
|
557
|
+
# width :integer
|
558
|
+
# depth :integer
|
559
|
+
# isbn :string(255)
|
560
|
+
# isbn10 :string(255)
|
561
|
+
# wrong_isbn :string(255)
|
562
|
+
# nbn :string(255)
|
563
|
+
# lccn :string(255)
|
564
|
+
# oclc_number :string(255)
|
565
|
+
# issn :string(255)
|
566
|
+
# price :integer
|
567
|
+
# fulltext :text
|
568
|
+
# volume_number_string :string(255)
|
569
|
+
# issue_number_string :string(255)
|
570
|
+
# serial_number_string :string(255)
|
571
|
+
# edition :integer
|
572
|
+
# note :text
|
573
|
+
# repository_content :boolean default(FALSE), not null
|
574
|
+
# lock_version :integer default(0), not null
|
575
|
+
# required_role_id :integer default(1), not null
|
576
|
+
# state :string(255)
|
577
|
+
# required_score :integer default(0), not null
|
578
|
+
# frequency_id :integer default(1), not null
|
579
|
+
# subscription_master :boolean default(FALSE), not null
|
580
|
+
# attachment_file_name :string(255)
|
581
|
+
# attachment_content_type :string(255)
|
582
|
+
# attachment_file_size :integer
|
583
|
+
# attachment_updated_at :datetime
|
584
|
+
# title_alternative_transcription :text
|
585
|
+
# description :text
|
586
|
+
# abstract :text
|
587
|
+
# available_at :datetime
|
588
|
+
# valid_until :datetime
|
589
|
+
# date_submitted :datetime
|
590
|
+
# date_accepted :datetime
|
591
|
+
# date_caputured :datetime
|
592
|
+
# pub_date :string(255)
|
593
|
+
# edition_string :string(255)
|
594
|
+
# volume_number :integer
|
595
|
+
# issue_number :integer
|
596
|
+
# serial_number :integer
|
597
|
+
# ndc :string(255)
|
598
|
+
# content_type_id :integer default(1)
|
599
|
+
# year_of_publication :integer
|
600
|
+
# attachment_meta :text
|
601
|
+
# month_of_publication :integer
|
602
|
+
# fulltext_content :boolean
|
603
|
+
# doi :string(255)
|
604
|
+
# periodical :boolean
|
605
|
+
# series_original_title :text
|
606
|
+
# series_title_transcription :text
|
607
|
+
# series_title_creator_string :text
|
608
|
+
# series_title_volume_number_string :text
|
663
609
|
#
|
664
610
|
|
data/app/models/page_sweeper.rb
CHANGED
@@ -22,9 +22,7 @@ class PageSweeper < ActionController::Caching::Sweeper
|
|
22
22
|
expire_editable_fragment(record.manifestation)
|
23
23
|
expire_editable_fragment(record.item)
|
24
24
|
when :SeriesStatement
|
25
|
-
record.
|
26
|
-
expire_editable_fragment(manifestation)
|
27
|
-
end
|
25
|
+
expire_editable_fragment(record.manifestation)
|
28
26
|
when :SeriesHasManifestation
|
29
27
|
expire_editable_fragment(record.manifestation)
|
30
28
|
when :PictureFile
|