blacklight 3.0pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. data/.gitignore +17 -0
  2. data/.gitmodules +6 -0
  3. data/.yardopts +4 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE +14 -0
  6. data/README.rdoc +168 -0
  7. data/Rakefile +9 -0
  8. data/app/controllers/bookmarks_controller.rb +98 -0
  9. data/app/controllers/feedback_controller.rb +37 -0
  10. data/app/controllers/folder_controller.rb +49 -0
  11. data/app/controllers/saved_searches_controller.rb +45 -0
  12. data/app/controllers/search_history_controller.rb +25 -0
  13. data/app/helpers/blacklight_helper.rb +606 -0
  14. data/app/helpers/bookmarks_helper.rb +3 -0
  15. data/app/helpers/catalog_helper.rb +65 -0
  16. data/app/helpers/feedback_helper.rb +2 -0
  17. data/app/helpers/hash_as_hidden_fields.rb +57 -0
  18. data/app/helpers/render_constraints_helper.rb +120 -0
  19. data/app/helpers/saved_searches_helper.rb +2 -0
  20. data/app/helpers/search_history_helper.rb +2 -0
  21. data/app/models/bookmark.rb +6 -0
  22. data/app/models/record_mailer.rb +43 -0
  23. data/app/models/search.rb +19 -0
  24. data/app/views/_flash_msg.html.erb +6 -0
  25. data/app/views/_user_util_links.html.erb +13 -0
  26. data/app/views/bookmarks/index.html.erb +33 -0
  27. data/app/views/catalog/_bookmark_control.html.erb +25 -0
  28. data/app/views/catalog/_bookmark_form.html.erb +8 -0
  29. data/app/views/catalog/_citation.html.erb +15 -0
  30. data/app/views/catalog/_constraints.html.erb +7 -0
  31. data/app/views/catalog/_constraints_element.html.erb +33 -0
  32. data/app/views/catalog/_did_you_mean.html.erb +10 -0
  33. data/app/views/catalog/_document_list.html.erb +30 -0
  34. data/app/views/catalog/_email_form.html.erb +11 -0
  35. data/app/views/catalog/_facet_limit.html.erb +33 -0
  36. data/app/views/catalog/_facet_pagination.html.erb +28 -0
  37. data/app/views/catalog/_facets.html.erb +9 -0
  38. data/app/views/catalog/_folder_control.html.erb +12 -0
  39. data/app/views/catalog/_home.html.erb +6 -0
  40. data/app/views/catalog/_home_text.html.erb +6 -0
  41. data/app/views/catalog/_index_partials/_default.erb +11 -0
  42. data/app/views/catalog/_marc_view.html.erb +33 -0
  43. data/app/views/catalog/_opensearch_response_metadata.html.erb +3 -0
  44. data/app/views/catalog/_previous_next_doc.html.erb +6 -0
  45. data/app/views/catalog/_refworks_form.html.erb +7 -0
  46. data/app/views/catalog/_results_pagination.html.erb +11 -0
  47. data/app/views/catalog/_search_form.html.erb +14 -0
  48. data/app/views/catalog/_show_partials/_default.html.erb +9 -0
  49. data/app/views/catalog/_show_sidebar.html.erb +1 -0
  50. data/app/views/catalog/_show_tools.html.erb +46 -0
  51. data/app/views/catalog/_sms_form.html.erb +23 -0
  52. data/app/views/catalog/_solr_request.html.erb +5 -0
  53. data/app/views/catalog/_sort_and_per_page.html.erb +20 -0
  54. data/app/views/catalog/_unapi_microformat.html.erb +1 -0
  55. data/app/views/catalog/citation.html.erb +1 -0
  56. data/app/views/catalog/email.erb +1 -0
  57. data/app/views/catalog/endnote.endnote.erb +1 -0
  58. data/app/views/catalog/facet.html.erb +28 -0
  59. data/app/views/catalog/index.atom.builder +108 -0
  60. data/app/views/catalog/index.html.erb +37 -0
  61. data/app/views/catalog/index.rss.builder +19 -0
  62. data/app/views/catalog/librarian_view.html.erb +3 -0
  63. data/app/views/catalog/opensearch.json.erb +0 -0
  64. data/app/views/catalog/opensearch.xml.erb +11 -0
  65. data/app/views/catalog/send_email_record.erb +0 -0
  66. data/app/views/catalog/show.endnote.erb +1 -0
  67. data/app/views/catalog/show.html.erb +42 -0
  68. data/app/views/catalog/show.refworks.erb +1 -0
  69. data/app/views/catalog/sms.erb +1 -0
  70. data/app/views/catalog/unapi.xml.builder +6 -0
  71. data/app/views/feedback/complete.html.erb +3 -0
  72. data/app/views/feedback/show.html.erb +20 -0
  73. data/app/views/folder/_tools.html.erb +23 -0
  74. data/app/views/folder/index.html.erb +44 -0
  75. data/app/views/layouts/blacklight.html.erb +49 -0
  76. data/app/views/record_mailer/email_record.erb +6 -0
  77. data/app/views/record_mailer/sms_record.erb +4 -0
  78. data/app/views/saved_searches/index.html.erb +27 -0
  79. data/app/views/search_history/index.html.erb +23 -0
  80. data/blacklight.gemspec +50 -0
  81. data/config.ru +4 -0
  82. data/config/routes.rb +54 -0
  83. data/db/seeds.rb +7 -0
  84. data/features/generators.feature +77 -0
  85. data/features/support/aruba.rb +9 -0
  86. data/install.rb +0 -0
  87. data/install/solr.yml +8 -0
  88. data/lib/blacklight.rb +121 -0
  89. data/lib/blacklight/catalog.rb +311 -0
  90. data/lib/blacklight/comma_link_renderer.rb +27 -0
  91. data/lib/blacklight/configurable.rb +46 -0
  92. data/lib/blacklight/controller.rb +121 -0
  93. data/lib/blacklight/engine.rb +32 -0
  94. data/lib/blacklight/exceptions.rb +13 -0
  95. data/lib/blacklight/marc.rb +46 -0
  96. data/lib/blacklight/marc/citation.rb +251 -0
  97. data/lib/blacklight/search_fields.rb +107 -0
  98. data/lib/blacklight/solr.rb +7 -0
  99. data/lib/blacklight/solr/document.rb +239 -0
  100. data/lib/blacklight/solr/document/dublin_core.rb +40 -0
  101. data/lib/blacklight/solr/document/email.rb +15 -0
  102. data/lib/blacklight/solr/document/marc.rb +84 -0
  103. data/lib/blacklight/solr/document/marc_export.rb +430 -0
  104. data/lib/blacklight/solr/document/sms.rb +13 -0
  105. data/lib/blacklight/solr/facet_paginator.rb +93 -0
  106. data/lib/blacklight/solr_helper.rb +413 -0
  107. data/lib/blacklight/user.rb +55 -0
  108. data/lib/blacklight/version.rb +3 -0
  109. data/lib/colorize.rb +196 -0
  110. data/lib/generators/blacklight/blacklight_generator.rb +134 -0
  111. data/lib/generators/blacklight/templates/SolrMarc.jar +0 -0
  112. data/lib/generators/blacklight/templates/catalog_controller.rb +8 -0
  113. data/lib/generators/blacklight/templates/config/SolrMarc/config-test.properties +37 -0
  114. data/lib/generators/blacklight/templates/config/SolrMarc/config.properties +37 -0
  115. data/lib/generators/blacklight/templates/config/SolrMarc/index.properties +97 -0
  116. data/lib/generators/blacklight/templates/config/SolrMarc/index_scripts/dewey.bsh +47 -0
  117. data/lib/generators/blacklight/templates/config/SolrMarc/index_scripts/format.bsh +126 -0
  118. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/README_MAPS +1 -0
  119. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/callnumber_map.properties +407 -0
  120. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/composition_era_map.properties +56 -0
  121. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/country_map.properties +379 -0
  122. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/format_map.properties +50 -0
  123. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/instrument_map.properties +101 -0
  124. data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/language_map.properties +490 -0
  125. data/lib/generators/blacklight/templates/config/blacklight_config.rb +245 -0
  126. data/lib/generators/blacklight/templates/config/solr.yml +6 -0
  127. data/lib/generators/blacklight/templates/migrations/add_user_types_to_bookmarks_searches.rb +11 -0
  128. data/lib/generators/blacklight/templates/migrations/create_bookmarks.rb +17 -0
  129. data/lib/generators/blacklight/templates/migrations/create_searches.rb +15 -0
  130. data/lib/generators/blacklight/templates/migrations/remove_editable_fields_from_bookmarks.rb +11 -0
  131. data/lib/generators/blacklight/templates/public/images/blacklight/bg.png +0 -0
  132. data/lib/generators/blacklight/templates/public/images/blacklight/border.png +0 -0
  133. data/lib/generators/blacklight/templates/public/images/blacklight/bul_sq_gry.gif +0 -0
  134. data/lib/generators/blacklight/templates/public/images/blacklight/checkmark.gif +0 -0
  135. data/lib/generators/blacklight/templates/public/images/blacklight/logo.png +0 -0
  136. data/lib/generators/blacklight/templates/public/images/blacklight/magnifying_glass.gif +0 -0
  137. data/lib/generators/blacklight/templates/public/images/blacklight/remove.gif +0 -0
  138. data/lib/generators/blacklight/templates/public/images/blacklight/separator.gif +0 -0
  139. data/lib/generators/blacklight/templates/public/images/blacklight/start_over.gif +0 -0
  140. data/lib/generators/blacklight/templates/public/javascripts/blacklight.js +485 -0
  141. data/lib/generators/blacklight/templates/public/javascripts/jquery-1.4.2.min.js +154 -0
  142. data/lib/generators/blacklight/templates/public/javascripts/jquery-ui-1.8.1.custom.min.js +756 -0
  143. data/lib/generators/blacklight/templates/public/stylesheets/blacklight.css +487 -0
  144. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  145. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  146. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
  147. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  148. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  149. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  150. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_gloss-wave_35_558fd0_500x100.png +0 -0
  151. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  152. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  153. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
  154. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
  155. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_2e4f81_256x240.png +0 -0
  156. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
  157. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
  158. data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/jquery-ui-1.8.1.custom.css +486 -0
  159. data/lib/generators/blacklight/templates/public/stylesheets/yui.css +31 -0
  160. data/lib/generators/blacklight/templates/solr_document.rb +30 -0
  161. data/lib/railties/blacklight.rake +66 -0
  162. data/lib/railties/cucumber.rake +53 -0
  163. data/lib/railties/rspec.rake +188 -0
  164. data/lib/railties/solr_marc.rake +148 -0
  165. data/lib/railties/test_solr_server.rb +130 -0
  166. data/spec/helpers/catalog_helper_spec.rb +111 -0
  167. data/spec/views/catalog/_sms_form.html.erb_spec.rb +19 -0
  168. data/tasks/blacklight_tasks.rake +4 -0
  169. data/uninstall.rb +1 -0
  170. metadata +431 -0
@@ -0,0 +1,108 @@
1
+ require 'base64'
2
+
3
+ xml.instruct!(:xml, :encoding => "UTF-8")
4
+
5
+ xml.feed("xmlns" => "http://www.w3.org/2005/Atom",
6
+ "xmlns:opensearch"=>"http://a9.com/-/spec/opensearch/1.1/") do
7
+
8
+ xml.title application_name + " Search Results"
9
+ # an author is required, so we'll just use the app name
10
+ xml.author { xml.name application_name }
11
+
12
+ xml.link "rel" => "self", "href" => url_for(params.merge(:only_path => false))
13
+ xml.link "rel" => "alternate", "href" => url_for(params.merge(:only_path => false, :format => "html")), "type" => "text/html"
14
+ xml.id url_for(params.merge(:only_path => false, :format => "html", :content_format => nil, "type" => "text/html"))
15
+
16
+ # Navigational and context links
17
+
18
+ xml.link( "rel" => "next",
19
+ "href" => url_for(params.merge(:only_path => false, :page => (@response.docs.current_page() + 1).to_s))
20
+ ) if @response.docs.has_next?
21
+
22
+ xml.link( "rel" => "previous",
23
+ "href" => url_for(params.merge(:only_path => false, :page => (@response.docs.current_page() - 1).to_s))
24
+ ) if @response.docs.has_previous?
25
+
26
+ xml.link( "rel" => "first",
27
+ "href" => url_for(params.merge(:only_path => false, :page => "1")))
28
+
29
+ xml.link( "rel" => "last",
30
+ "href" => url_for(params.merge(:only_path => false, :page => @response.docs.total_pages.to_s)))
31
+
32
+ # "search" doesn't seem to actually be legal, but is very common, and
33
+ # used as an example in opensearch docs
34
+ xml.link( "rel" => "search",
35
+ "type" => "application/opensearchdescription+xml",
36
+ "href" => url_for(:controller=>'catalog',:action => 'opensearch', :format => 'xml', :only_path => false))
37
+
38
+ # opensearch response elements
39
+ xml.opensearch :totalResults, @response.docs.total.to_s
40
+ xml.opensearch :startIndex, @response.docs.start.to_s
41
+ xml.opensearch :itemsPerPage, @response.docs.per_page.to_s
42
+ xml.opensearch :Query, :role => "request", :searchTerms => params[:q], :startPage => @response.docs.current_page
43
+
44
+
45
+ # updated is required, for now we'll just set it to now, sorry
46
+ xml.updated Time.now.strftime("%Y-%m-%dT%H:%M:%SZ")
47
+
48
+ @document_list.each do |doc|
49
+ xml.entry do
50
+ xml.title doc.to_semantic_values[:title][0] || doc[:id]
51
+
52
+ # updated is required, for now we'll just set it to now, sorry
53
+ xml.updated Time.now.strftime("%Y-%m-%dT%H:%M:%SZ")
54
+
55
+ xml.link "rel" => "alternate", "type" => "text/html", "href" => catalog_url(doc[:id])
56
+ # add other doc-specific formats, atom only lets us have one per
57
+ # content type, so the first one in the list wins.
58
+ xml << render_link_rel_alternates(doc, :unique => true)
59
+
60
+ xml.id catalog_url(doc[:id])
61
+
62
+
63
+ if doc.to_semantic_values[:author][0]
64
+ xml.author { xml.name(doc.to_semantic_values[:author][0]) }
65
+ end
66
+
67
+ with_format("html") do
68
+ xml.summary "type" => "html" do
69
+ xml.text! render_document_partial(doc, :index)
70
+ end
71
+ end
72
+
73
+ #If they asked for a format, give it to them.
74
+ if (params["content_format"] &&
75
+ doc.export_formats[params["content_format"].to_sym])
76
+
77
+ type = doc.export_formats[params["content_format"].to_sym][:content_type]
78
+
79
+ xml.content :type => type do |content_element|
80
+ data = doc.export_as(params["content_format"])
81
+
82
+ # encode properly. See:
83
+ # http://tools.ietf.org/html/rfc4287#section-4.1.3.3
84
+ type = type.downcase
85
+ if (type.downcase =~ /\+|\/xml$/)
86
+ # xml, just put it right in
87
+ content_element << data
88
+ elsif (type.downcase =~ /text\//)
89
+ # text, escape
90
+ content_element.text! data
91
+ else
92
+ #something else, base64 encode it
93
+ content_element << Base64.encode64(data)
94
+ end
95
+ end
96
+
97
+ end
98
+
99
+
100
+ end
101
+ end
102
+
103
+ end
104
+
105
+
106
+
107
+
108
+
@@ -0,0 +1,37 @@
1
+
2
+ <% unless has_search_parameters? %>
3
+ <%# if there are no input/search related params, display the "home" partial -%>
4
+ <%= render 'home' %>
5
+ <% else %>
6
+
7
+ <% @page_title = application_name + " Search Results" %>
8
+
9
+ <% extra_head_content << render_opensearch_response_metadata.html_safe %>
10
+
11
+ <%= render :partial => 'search_form' %>
12
+
13
+ <%= render :partial => 'did_you_mean' %>
14
+
15
+ <%= render 'constraints', :localized_params=>params %>
16
+
17
+ <div class="pageEntriesInfo">
18
+ <%= (page_entries_info @response.docs, :entry_name=>'item').html_safe %>
19
+ <%=link_to "start over", catalog_index_path, :id=>"startOverLink" %>
20
+ </div>
21
+
22
+ <%= render 'sort_and_per_page' %>
23
+
24
+ <%= render 'results_pagination' %>
25
+
26
+ <%= render :partial => 'document_list' %>
27
+
28
+ <% sidebar_items << capture do %>
29
+ <%= render :partial=>'facets' %>
30
+ <% end %>
31
+
32
+ <%= render 'results_pagination' %>
33
+
34
+ <%= render :partial=>'solr_request' %>
35
+
36
+ <% end %>
37
+
@@ -0,0 +1,19 @@
1
+ xml.instruct! :xml, :version=>"1.0"
2
+ xml.rss(:version=>"2.0") {
3
+
4
+ xml.channel {
5
+
6
+ xml.title(application_name + " Search Results")
7
+ xml.link(catalog_index_url(params))
8
+ xml.description(application_name + " Search Results")
9
+ xml.language('en-us')
10
+ @document_list.each do |doc|
11
+ xml.item do
12
+ xml.title( doc.to_semantic_values[:title][0] || doc[:id] )
13
+ xml.link(catalog_url(doc[:id]))
14
+ xml.author( doc.to_semantic_values[:author][0] ) if doc.to_semantic_values[:author][0]
15
+ end
16
+ end
17
+
18
+ }
19
+ }
@@ -0,0 +1,3 @@
1
+ <%- if @document.respond_to?(:to_marc) -%>
2
+ <%= render "marc_view" %>
3
+ <%- end -%>
File without changes
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0"?>
2
+ <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
3
+ <ShortName><%= application_name %></ShortName>
4
+ <Description><%= application_name %> Search</Description>
5
+ <Image height="16" width="16" type="image/x-icon">/favicon.ico</Image>
6
+ <Contact/>
7
+ <Url type="text/html" method="get" template="<%= url_for :controller=>'catalog', :only_path => false %>?q={searchTerms}"/>
8
+ <Url type="application/rss+xml" method="get" template="<%= url_for :controller=>'catalog', :only_path => false %>.rss?q={searchTerms}"/>
9
+ <Url type="application/atom+xml" method="get" template="<%= url_for :controller=>'catalog', :only_path => false %>.atom?q={searchTerms}"/>
10
+ <Url type="application/x-suggestions+json" method="get" template="<%= url_for :controller=>'catalog',:action => 'opensearch', :format=> 'json', :only_path => false %>?q={searchTerms}"/>
11
+ </OpenSearchDescription>
@@ -0,0 +1 @@
1
+ <%= render_endnote_text(@document) %>
@@ -0,0 +1,42 @@
1
+ <% @page_title = "#{document_show_html_title} - #{application_name}" %>
2
+ <% extra_head_content << render_link_rel_alternates %>
3
+ <% sidebar_items << render_document_sidebar_partial %>
4
+
5
+ <div class="show">
6
+ <%= render 'constraints', :localized_params=>session[:search] %>
7
+ </div>
8
+
9
+ <div class="pageEntriesInfo">
10
+ <%= item_page_entry_info %>
11
+ <%=link_to "start over", catalog_index_path, :id=>"startOverLink" %>
12
+ </div>
13
+
14
+ <%= render 'previous_next_doc' %>
15
+
16
+ <%# this should be in a partial -%>
17
+ <div id="document" class="<%= render_document_class %>">
18
+ <div id="doc_<%= @document[:id] %>">
19
+
20
+ <% # bookmark/folder functions -%>
21
+ <%= render_show_doc_actions @document %>
22
+
23
+ <%= render_document_heading.html_safe %>
24
+ <div class="tools"><%= render :partial => 'show_tools' %></div>
25
+ <div class="document">
26
+ <%= render_document_partial @document, :show %>
27
+ </div>
28
+ <%= render_document_unapi_microformat @document %>
29
+ </div>
30
+ </div>
31
+
32
+ <%= render :partial=>'solr_request' %>
33
+
34
+
35
+ <% if @document.respond_to?(:export_as_openurl_ctx_kev) %>
36
+ <!--
37
+ // COinS, for Zotero among others.
38
+ // This document_partial_name(@document) business is not quite right,
39
+ // but has been there for a while.
40
+ -->
41
+ <span class="Z3988" title="<%= @document.export_as_openurl_ctx_kev(document_partial_name(@document)) %>"></span>
42
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= render_refworks_text(@document) %>
@@ -0,0 +1 @@
1
+ <%= render :partial => 'sms_form' %>
@@ -0,0 +1,6 @@
1
+ xml.instruct!
2
+ xml.formats(({:id => @document.id} if @document) || {}) do
3
+ @export_formats.each do |shortname, meta|
4
+ xml.format :name => shortname, :type => meta[:content_type]
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ <h1>Thank-you for your feedback</h1>
2
+
3
+ <%= link_to '<< Back to search', catalog_index_path %>
@@ -0,0 +1,20 @@
1
+ <h1>Send Us Feedback</h1>
2
+
3
+ <% unless @errors.empty? %>
4
+ <strong>Please fix the following form errors:</strong>
5
+ <ul class="errors">
6
+ <% @errors.each do |msg| %>
7
+ <li><%= msg %></li>
8
+ <% end %>
9
+ </ul>
10
+ <% end %>
11
+
12
+ <%= form_tag do %>
13
+ <fieldset>
14
+ <div class="row"><%= label_tag 'Your Name' %> <%= text_field_tag :name, params[:name] %></div>
15
+ <div class="row"><%= label_tag 'Your Email' %> <%= text_field_tag :email, params[:email] %></div>
16
+ <div class="row"><%= label_tag 'Your Message' %> <%= text_area_tag :message, params[:message] %></div>
17
+ <%#= show_simple_captcha(:image_style => 'random', :label => "Enter the characters you see into the text field") %>
18
+ <div class="row"><%= label_tag '' %><%= submit_tag 'Send!' %></div>
19
+ </fieldset>
20
+ <% end %>
@@ -0,0 +1,23 @@
1
+ <ul class="folderTools">
2
+ <li class="cite">
3
+ <%= link_to "Cite", citation_catalog_path(:id => @documents.collect{|doc| doc.get(:id)}), {:id => 'citeLink', :name => 'citation'} %>
4
+ </li>
5
+ <li class="refworks">
6
+ <%= render :partial => 'catalog/refworks_form', :locals => {:documents=>@documents} %>
7
+ </li>
8
+ <li class="endnote">
9
+ <%= link_to "Export to EndNote", endnote_catalog_path(:id => @documents.collect {|doc| doc.get(:id)}, :format => 'endnote')%>
10
+ </li>
11
+ <li class="email">
12
+ <%= link_to "Email", email_catalog_path(:id => @documents.collect {|doc| doc.get(:id)}), :class=>"lightboxLink", :id => "emailLink" %>
13
+ </li>
14
+ <% if current_user %>
15
+ <li>
16
+ <%= render :partial=>'catalog/bookmark_form', :locals=>{:documents=>@documents} %>
17
+ </li>
18
+ <% end %>
19
+ <li>
20
+ <%= link_to "Clear Selected Items", clear_folder_path, :method => :delete %>
21
+ </li>
22
+ </ul>
23
+
@@ -0,0 +1,44 @@
1
+ <% sidebar_items << capture do %>
2
+ <p><%= link_back_to_catalog %></p>
3
+ <% end %>
4
+ <h1>Selected Items</h1>
5
+
6
+ <% unless @documents.empty? %>
7
+ <%- # just adding pageEntriedInfo div to get the proper rounded corners at the top -%>
8
+ <div class="pageEntriesInfo"></div>
9
+ <%= render "catalog/sort_and_per_page" %>
10
+ <%= render "catalog/results_pagination" %>
11
+
12
+ <%= render 'tools' %>
13
+ <% end %>
14
+
15
+ <div id="documents">
16
+ <% @documents.each_with_index do |document, i| %>
17
+ <% # container for a single doc -%>
18
+ <div class="document">
19
+ <% # header bar for doc items in index view -%>
20
+ <div class="documentHeader">
21
+ <div class="documentFunctions">
22
+ <div class="in_folder">
23
+ <%= render :partial=>'catalog/folder_control', :locals=>{:document=>document} %>
24
+ </div>
25
+ </div>
26
+
27
+ <h3 class="index_title"><%= i + 1 + @response.params[:start].to_i%>. <%= link_to_document document, :label => document_show_link_field, :results_view => false %></h3>
28
+
29
+
30
+ </div>
31
+
32
+ <%= render_document_partial document, :index %>
33
+ <% if document.respond_to?(:export_as_openurl_ctx_kev) %>
34
+ <!--
35
+ // COinS, for Zotero among others.
36
+ // This document_partial_name(@document) business is not quite right,
37
+ // but has been there for a while.
38
+ -->
39
+ <span class="Z3988" title="<%= document.export_as_openurl_ctx_kev(document_partial_name(document)) %>"></span>
40
+ <% end %>
41
+ </div>
42
+
43
+ <% end %>
44
+ </div>
@@ -0,0 +1,49 @@
1
+
2
+ <html xmlns="http://www.w3.org/1999/xhtml">
3
+
4
+ <head>
5
+
6
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
+
8
+ <title><%= h(@page_title || application_name) %></title>
9
+ <link href="<%= opensearch_catalog_path %>" title="<%= application_name%>" type="application/opensearchdescription+xml" rel="search"/>
10
+
11
+ <%= raw(render_head_content) %>
12
+
13
+
14
+ </head>
15
+ <% if params[:q].to_s.empty? and params[:f].to_s.empty? and params[:id].nil? %>
16
+ <body onload="$('input#q').focus();" class="<%= render_body_class %>">
17
+ <% else %>
18
+ <body class="<%= render_body_class.html_safe %>">
19
+ <% end %>
20
+ <div id="doc4" class="yui-t2">
21
+
22
+ <div id="hd">
23
+ <div class="yui-g">
24
+ <div class="yui-u first">
25
+ <h1 class="site_title"><%= link_to application_name, "/" %><%= (params[:controller] == "catalog" and !params[:id]) ? "<span id='results_text'>Search Results</span>".html_safe : "" %></h1>
26
+ </div>
27
+ <div class="yui-u user_util_links">
28
+ <%= render :partial=>'/user_util_links' %>
29
+ </div>
30
+ </div>
31
+ </div>
32
+
33
+ <div id="bd">
34
+
35
+ <div id="yui-main">
36
+ <div class="yui-b">
37
+ <%= render :partial=>'/flash_msg' %>
38
+ <%= yield %>
39
+ </div>
40
+ </div>
41
+
42
+ <div class="yui-b sidebar"><%= sidebar_items.join('').html_safe %></div>
43
+
44
+ </div>
45
+ <div id="ft"><%= raw(@footer) %></div>
46
+ </div>
47
+ </body>
48
+
49
+ </html>
@@ -0,0 +1,6 @@
1
+ <%- @documents.each do |document| -%>
2
+ <%= document.to_email_text -%>
3
+ URL: <%= catalog_path(document[:id], {:only_path => false}.merge(@url_gen_params)) -%>
4
+ <%- end -%>
5
+
6
+ Message: <%= @message %>
@@ -0,0 +1,4 @@
1
+ <%- @documents.each do |document| -%>
2
+ <%= document.to_sms_text -%>
3
+ Link: <%= catalog_path(document[:id], {:only_path => false}.merge(@url_gen_params) ) -%>
4
+ <%- end -%>
@@ -0,0 +1,27 @@
1
+ <h1>Saved Searches</h1>
2
+
3
+ <%- if current_user.blank? -%>
4
+
5
+ <h2>Please log in to see your saved searches.</h2>
6
+
7
+ <%- elsif @searches.blank? -%>
8
+
9
+ <h2>You have no saved searches</h2>
10
+
11
+ <%- else -%>
12
+ <p>
13
+ <%= link_to "Clear Saved Searches", clear_saved_searches_path, :method => :delete, :confirm => "Clear your saved searches?" %>
14
+ </p>
15
+
16
+ <h2>Your saved searches</h2>
17
+ <table class="zebra">
18
+ <%- @searches.each do |search| -%>
19
+ <tr>
20
+ <td><%= link_to_previous_search(search.query_params) %></td>
21
+ <td><%= button_to "delete", forget_search_path(search.id) %></td>
22
+ </tr>
23
+ <%- end -%>
24
+ </table>
25
+
26
+ <%- end -%>
27
+
@@ -0,0 +1,23 @@
1
+ <h1>Search History</h1>
2
+ <%- if @searches.blank? -%>
3
+ <h2>You have no search history</h2>
4
+ <%- else -%>
5
+ <p>
6
+ <%= link_to "Clear Search History", clear_search_history_path, :method => :delete, :confirm => "Clear your search history?" %>
7
+ </p>
8
+ <h2>Your recent searches</h2>
9
+ <table class="zebra search_history">
10
+ <%- @searches.each_with_index do |search,index| -%>
11
+ <%= content_tag :tr, :id => "document_#{index + 1}" do %>
12
+ <td class="query"><%= link_to_previous_search(search.query_params) %></td>
13
+ <td class="actions"><%- if current_user && search.saved? -%>
14
+ <%= button_to "forget", forget_search_path(search.id) %>
15
+ <%- else -%>
16
+ <%= button_to "save", save_search_path(search.id), :method => :put %>
17
+ <%- end -%></td>
18
+ <td class="actions"><%= button_to "delete", delete_search_path(search.id), :confirm => "Delete item?" %></td>
19
+ <% end #content_tag %>
20
+ <%- end -%>
21
+ </table>
22
+ <%- end -%>
23
+