1 class OpacController < ApplicationController
8 @start = params[:start]
9 @per_page = params[:per_page]
10 conn = ZOOM::Connection.new
11 conn.connect("localhost", 9999)
12 conn.set_option('charset', 'UTF-8')
13 conn.preferred_record_syntax = 'MARC21'
14 conn.database_name = "zcc"
15 search_term = "@attr 1=1016 \"#{@record}\""
16 rset = conn.search(search_term)
17 #puts "rset.size: #{rset.size}"
19 record = MARC::Record.new_from_marc(rset[0].raw)
20 if record['020'] && record['020']['a']
21 isbn = record['020']['a']
22 isbn_a = isbn.split(/\s/)
28 marc_record = record.to_s
29 marc_record.gsub!("LEADER", "<br>LEADER")
30 @records_string = marc_record.gsub("\n", "<br>")
34 string = "<span id=\"title\">"
35 string += r['245']['a'].to_s + r['245']['b'].to_s + r['245']['c'].to_s + "</span>"
36 string += "<br /><br /> Published: " + r['260']['a'].to_s + " " + r['260']['b'].to_s + " " + r['260']['c'].to_s
37 string += "<br /><br /> Edition: " + r['250']['a'].to_s if r['250']
38 string += "<br /><br />Physical Description: " + r['300']['a'].to_s + r['300']['b'].to_s + " " + r['300']['c'].to_s
39 string += "<br><br>ISBN: " + r['020']['a'].to_s if r['020']
40 fields = r.find_all{|f| f.tag == "650"}
41 string += "<br /><br />Subjects: <br/>" if fields.size > 0
44 f.each{|sf| subject << sf.value}
45 string += subject.join("--")
48 string += "<br /><br />" + r['505']['a'] if r['505']
55 params[:start] = params[:term] == session[:search_term] ? params[:start] : 1
56 @data = params[:term] ? params[:term] : ""
57 session[:search_term] = @data
58 @form_value = @data.gsub("\"",""")
60 @start = params[:start] ? params[:start].to_i : 1
62 @per_page = params[:per_page] ? params[:per_page].to_i : 20
64 #data_a = @data.split("\s") unless @data.nil?
65 data_a = split_params(@data)
68 #search_term = "@attr 2=102 #{" @and " * (data_a.size - 1)} @attr 1=1016 " + data_a.join(" @attr 1=1016 ")
69 search_term = "@attr 2=102 #{" @and " * (data_a.size - 1)} "
70 data_a.each{|t| search_term << ' @attr 1=1016 "' + t + '"'}
72 search_term = '@attr 1=4 ""'
75 conn = ZOOM::Connection.new
76 conn.connect("localhost", 9999)
77 conn.set_option('charset', 'UTF-8')
78 conn.preferred_record_syntax = 'XML'
79 conn.database_name = "zcc"
82 rset = conn.search(search_term)
84 @rset_size = rset.size
85 unless @rset_size == 0
86 rset_recs = rset[@start - 1, @per_page]
87 p "gets past rset_recs"
90 rset_recs.each do |rec|
93 #marc_record = ZCC.convert_char(rec)
94 ##@total_records << MARC::Record.new_from_marc(rec.raw)
100 #@total_records << marc_record
102 @total_records = MARC::XMLReader.new(StringIO.new(all))
106 @time_difference = Time.now - start_time
113 def split_params(params)
114 # Find all phrases enclosed in quotes and pull
115 # them into a flat array of phrases
116 phrases = params.scan(/"(.*?)"/).flatten
118 # Remove those phrases from the original string
119 left_over = params.gsub(/"(.*?)"/, "").squeeze(" ").strip
121 # Break up the remaining keywords on whitespace
122 keywords = left_over.split(/ /)
124 # Return one single array of key phrases