app/controllers/manifestations_controller.rb in enju_biblio-0.1.0.pre63 vs app/controllers/manifestations_controller.rb in enju_biblio-0.1.0.pre64

- old
+ new

@@ -465,11 +465,11 @@ end # POST /manifestations # POST /manifestations.json def create - @manifestation = Manifestation.new(params[:manifestation]) + @manifestation = Manifestation.new(manifestation_params) parent = Manifestation.where(id: @manifestation.parent_id).first unless @manifestation.original_title? @manifestation.original_title = @manifestation.attachment_file_name end @@ -494,11 +494,11 @@ # PUT /manifestations/1 # PUT /manifestations/1.json def update respond_to do |format| - if @manifestation.update_attributes(params[:manifestation]) + if @manifestation.update_attributes(manifestation_params) 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 @@ -524,10 +524,84 @@ format.json { head :no_content } end end private + def manifestation_params + params.require(:manifestation).permit( + :original_title, :title_alternative, :title_transcription, + :manifestation_identifier, :date_copyrighted, + :access_address, :language_id, :carrier_type_id, :extent, :start_page, + :end_page, :height, :width, :depth, :publication_place, + :price, :fulltext, :volume_number_string, + :issue_number_string, :serial_number_string, :edition, :note, + :repository_content, :required_role_id, :frequency_id, + :title_alternative_transcription, :description, :abstract, :available_at, + :valid_until, :date_submitted, :date_accepted, :date_captured, + :ndl_bib_id, :pub_date, :edition_string, :volume_number, :issue_number, + :serial_number, :content_type_id, :attachment, :lock_version, + :dimensions, :fulltext_content, :extent, + :number_of_page_string, :parent_id, + :serial, :statement_of_responsibility, + {:creators_attributes => [ + :id, :last_name, :middle_name, :first_name, + :last_name_transcription, :middle_name_transcription, + :first_name_transcription, :corporate_name, + :corporate_name_transcription, + :full_name, :full_name_transcription, :full_name_alternative, + :other_designation, :language_id, + :country_id, :agent_type_id, :note, :required_role_id, :email, :url, + :full_name_alternative_transcription, :title, + :agent_identifier, + :_destroy + ]}, + {:contributors_attributes => [ + :id, :last_name, :middle_name, :first_name, + :last_name_transcription, :middle_name_transcription, + :first_name_transcription, :corporate_name, + :corporate_name_transcription, + :full_name, :full_name_transcription, :full_name_alternative, + :other_designation, :language_id, + :country_id, :agent_type_id, :note, :required_role_id, :email, :url, + :full_name_alternative_transcription, :title, + :agent_identifier, + :_destroy + ]}, + {:publishers_attributes => [ + :id, :last_name, :middle_name, :first_name, + :last_name_transcription, :middle_name_transcription, + :first_name_transcription, :corporate_name, + :corporate_name_transcription, + :full_name, :full_name_transcription, :full_name_alternative, + :other_designation, :language_id, + :country_id, :agent_type_id, :note, :required_role_id, :email, :url, + :full_name_alternative_transcription, :title, + :agent_identifier, + :_destroy + ]}, + {:series_statements_attributes => [ + :id, :original_title, :numbering, :title_subseries, + :numbering_subseries, :title_transcription, :title_alternative, + :title_subseries_transcription, :creator_string, :volume_number_string, + :volume_number_transcription_string, :series_master, + :_destroy + ]}, + {:subjects_attributes => [ + :id, :parent_id, :use_term_id, :term, :term_transcription, + :subject_type_id, :note, :required_role_id, :subject_heading_type_id, + :_destroy + ]}, + {:classifications_attributes => [ + :id, :parent_id, :category, :note, :classification_type_id, + :_destroy + ]}, + {:identifiers_attributes => [ + :id, :body, :identifier_type_id, + :_destroy + ]} + ) + end def make_query(query, options = {}) # TODO: integerやstringもqfに含める query = query.to_s.strip @@ -724,22 +798,32 @@ def parse_pub_date(options) pub_date = {} if options[:pub_date_from].blank? pub_date[:from] = "*" else - pub_date[:from] = Time.zone.parse(options[:pub_date_from]).beginning_of_day.utc.iso8601 rescue nil + year = options[:pub_date_from].rjust(4, "0") + if year.length == 4 + pub_date[:from] = Time.zone.parse(Time.utc(year).to_s).beginning_of_year.utc.iso8601 + else + pub_date[:from] = Time.zone.parse(options[:pub_date_from]).beginning_of_day.utc.iso8601 rescue nil + end unless pub_date[:from] - pub_date[:from] = Time.zone.parse(Time.mktime(options[:pub_date_from]).to_s).beginning_of_day.utc.iso8601 + pub_date[:from] = Time.zone.parse(Time.utc(options[:pub_date_from]).to_s).beginning_of_day.utc.iso8601 end end if options[:pub_date_to].blank? pub_date[:to] = "*" else - pub_date[:to] = Time.zone.parse(options[:pub_date_to]).end_of_day.utc.iso8601 rescue nil + year = options[:pub_date_to].rjust(4, "0") + if year.length == 4 + pub_date[:to] = Time.zone.parse(Time.utc(year).to_s).end_of_year.utc.iso8601 + else + pub_date[:to] = Time.zone.parse(options[:pub_date_to]).end_of_day.utc.iso8601 rescue nil + end unless pub_date[:to] - pub_date[:to] = Time.zone.parse(Time.mktime(options[:pub_date_to]).to_s).end_of_year.utc.iso8601 + pub_date[:to] = Time.zone.parse(Time.utc(options[:pub_date_to]).to_s).end_of_year.utc.iso8601 end end pub_date end @@ -760,23 +844,34 @@ acquisition_date = {} if options[:acquired_from].blank? acquisition_date[:from] = "*" else - acquisition_date[:from] = Time.zone.parse(options[:acquired_from]).beginning_of_day.utc.iso8601 rescue nil + year = options[:acquired_from].rjust(4, "0") + if year.length == 4 + acquisition_date[:from] = Time.zone.parse(Time.utc(year).to_s).beginning_of_year.utc.iso8601 + else + acquisition_date[:from] = Time.zone.parse(options[:acquired_from]).beginning_of_day.utc.iso8601 rescue nil + end unless acquisition_date[:from] - acquisition_date[:from] = Time.zone.parse(Time.mktime(options[:acquired_from]).to_s).beginning_of_day.utc.iso8601 + acquisition_date[:from] = Time.zone.parse(Time.utc(options[:acquired_from]).to_s).beginning_of_day.utc.iso8601 end end if options[:acquired_to].blank? acquisition_date[:to] = "*" else - acquisition_date[:to] = Time.zone.parse(options[:acquired_to]).end_of_day.utc.iso8601 rescue nil + year = options[:acquired_to].rjust(4, "0") + if year.length == 4 + acquisition_date[:to] = Time.zone.parse(Time.utc(year).to_s).end_of_year.utc.iso8601 + else + acquisition_date[:to] = Time.zone.parse(options[:acquired_to]).end_of_day.utc.iso8601 rescue nil + end unless acquisition_date[:to] - acquisition_date[:to] = Time.zone.parse(Time.mktime(options[:acquired_to]).to_s).end_of_year.utc.iso8601 + pub_date[:to] = Time.zone.parse(Time.utc(options[:acquired_to]).to_s).end_of_year.utc.iso8601 end end + query = "#{query} acquired_at_d:[#{acquisition_date[:from]} TO #{acquisition_date[:to]}]" end query end end