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