app/controllers/manifestations_controller.rb in enju_biblio-0.0.2 vs app/controllers/manifestations_controller.rb in enju_biblio-0.0.3
- old
+ new
@@ -10,11 +10,11 @@
end
before_filter :get_series_statement, :only => [:index, :new, :edit]
before_filter :get_item, :get_libraries, :only => :index
before_filter :prepare_options, :only => [:new, :edit]
before_filter :get_version, :only => [:show]
- after_filter :solr_commit, :only => [:create, :update, :destroy]
+ after_filter :solr_commit, :only => :destroy
after_filter :convert_charset, :only => :index
cache_sweeper :manifestation_sweeper, :only => [:create, :update, :destroy]
include EnjuOai::OaiController if defined?(EnjuOai)
include EnjuSearchLog if defined?(EnjuSearchLog)
@@ -136,12 +136,16 @@
if defined?(EnjuSubject)
with(:subject_ids).equal_to subject.id if subject
end
if series_statement
with(:periodical_master).equal_to false
- if mode != 'add'
- with(:periodical).equal_to true
+ if series_statement.periodical?
+ if mode != 'add'
+ with(:periodical).equal_to true
+ end
+ else
+ with(:periodical).equal_to false
end
else
if mode != 'add'
with(:periodical).equal_to false
end
@@ -185,24 +189,33 @@
session[:params] = params
session[:search_params] == search.query.to_params
session[:query] = @query
end
- unless session[:manifestation_ids]
- manifestation_ids = search.build do
- paginate :page => 1, :per_page => configatron.max_number_of_results
- end.execute.raw_results.collect(&:primary_key).map{|id| id.to_i}
- session[:manifestation_ids] = manifestation_ids
- end
+ if params[:format] == 'html' or params[:format].nil?
+ @search_query = Digest::SHA1.hexdigest(Marshal.dump(search.query.to_params).force_encoding('UTF-8'))
+ if flash[:search_query] == @search_query
+ flash.keep(:search_query)
+ else
+ #raise flash[:search_query].to_s
+ flash[:search_query] = @search_query
+ @manifestation_ids = search.build do
+ paginate :page => 1, :per_page => configatron.max_number_of_results
+ end.execute.raw_results.collect(&:primary_key).map{|id| id.to_i}
+ end
- if defined?(EnjuBookmark)
- if session[:manifestation_ids]
+ if defined?(EnjuBookmark)
if params[:view] == 'tag_cloud'
- bookmark_ids = Bookmark.where(:manifestation_id => session[:manifestation_ids]).limit(1000).select(:id).collect(&:id)
+ unless @manifestation_ids
+ @manifestation_ids = search.build do
+ paginate :page => 1, :per_page => configatron.max_number_of_results
+ end.execute.raw_results.collect(&:primary_key).map{|id| id.to_i}
+ end
+ #bookmark_ids = Bookmark.where(:manifestation_id => flash[:manifestation_ids]).limit(1000).select(:id).collect(&:id)
+ bookmark_ids = Bookmark.where(:manifestation_id => @manifestation_ids).limit(1000).select(:id).collect(&:id)
@tags = Tag.bookmarked(bookmark_ids)
render :partial => 'manifestations/tag_cloud'
- #session[:manifestation_ids] = nil
return
end
end
end
@@ -238,11 +251,11 @@
@search_engines = Rails.cache.fetch('search_engine_all'){SearchEngine.all}
if defined?(EnjuBookmark)
# TODO: 検索結果が少ない場合にも表示させる
- if manifestation_ids.blank?
+ if @manifestation_ids.blank?
if query.respond_to?(:suggest_tags)
@suggested_tag = query.suggest_tags.first
end
end
end
@@ -328,14 +341,16 @@
end
end
return if render_mode(params[:mode])
+ flash.keep(:search_query)
store_location
if @manifestation.periodical_master?
flash.keep(:notice) if flash[:notice]
+ flash[:manifestation_id] = @manifestation.id
redirect_to series_statement_url(@manifestation.series_statement, :manifestation_id => @manifestation.id)
return
end
if defined?(EnjuCirculation)
@@ -353,14 +368,10 @@
else
file = @manifestation.attachment.path
end
end
- if session[:manifestation_ids]
- @manifestation_ids = session[:manifestation_ids]
- end
-
respond_to do |format|
format.html # show.html.erb
format.mobile
format.xml {
case params[:mode]
@@ -414,10 +425,11 @@
unless params[:mode] == 'tag_edit'
access_denied; return
end
end
@original_manifestation = Manifestation.where(:id => params[:manifestation_id]).first
+ @series_statement = @manifestation.series_statement unless @series_statement
if defined?(EnjuBookmark)
if params[:mode] == 'tag_edit'
@bookmark = current_user.bookmarks.where(:manifestation_id => @manifestation.id).first if @manifestation rescue nil
render :partial => 'manifestations/tag_edit', :locals => {:manifestation => @manifestation}
end
@@ -434,10 +446,11 @@
@manifestation.original_title = @manifestation.attachment_file_name
end
respond_to do |format|
if @manifestation.save
+ Sunspot.commit
Manifestation.transaction do
if @original_manifestation
@manifestation.derived_manifestations << @original_manifestation
end
end
@@ -455,10 +468,11 @@
# PUT /manifestations/1
# PUT /manifestations/1.json
def update
respond_to do |format|
if @manifestation.update_attributes(params[:manifestation])
+ Sunspot.commit
format.html { redirect_to @manifestation, :notice => t('controller.successfully_updated', :model => t('activerecord.models.manifestation')) }
format.json { head :no_content }
else
prepare_options
format.html { render :action => "edit" }
@@ -468,11 +482,13 @@
end
# DELETE /manifestations/1
# DELETE /manifestations/1.json
def destroy
+ series_statement = @manifestation.series_statement
@manifestation.destroy
+ series_statement.try(:index!)
respond_to do |format|
format.html { redirect_to manifestations_url, :notice => t('controller.successfully_deleted', :model => t('activerecord.models.manifestation')) }
format.json { head :no_content }
end
@@ -524,11 +540,11 @@
unless options[:isbn].blank?
query = "#{query} isbn_sm:#{options[:isbn].gsub('-', '')}"
end
unless options[:issn].blank?
- query = "#{query} issn_s:#{options[:issn].gsub('-', '')}"
+ query = "#{query} issn_sm:#{options[:issn].gsub('-', '')}"
end
unless options[:lccn].blank?
query = "#{query} lccn_s:#{options[:lccn]}"
end
@@ -629,10 +645,10 @@
@carrier_types = CarrierType.all
@content_types = ContentType.all
@roles = Role.all
@languages = Language.all_cache
@frequencies = Frequency.all
- @nii_types = NiiType.all if defined?(NiiType)
+ @nii_types = NiiType.all if defined?(EnjuNii)
end
def get_index_patron
patron = {}
case