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