blacklight 3.0pre1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/.gitmodules +6 -0
- data/.yardopts +4 -0
- data/Gemfile +4 -0
- data/LICENSE +14 -0
- data/README.rdoc +168 -0
- data/Rakefile +9 -0
- data/app/controllers/bookmarks_controller.rb +98 -0
- data/app/controllers/feedback_controller.rb +37 -0
- data/app/controllers/folder_controller.rb +49 -0
- data/app/controllers/saved_searches_controller.rb +45 -0
- data/app/controllers/search_history_controller.rb +25 -0
- data/app/helpers/blacklight_helper.rb +606 -0
- data/app/helpers/bookmarks_helper.rb +3 -0
- data/app/helpers/catalog_helper.rb +65 -0
- data/app/helpers/feedback_helper.rb +2 -0
- data/app/helpers/hash_as_hidden_fields.rb +57 -0
- data/app/helpers/render_constraints_helper.rb +120 -0
- data/app/helpers/saved_searches_helper.rb +2 -0
- data/app/helpers/search_history_helper.rb +2 -0
- data/app/models/bookmark.rb +6 -0
- data/app/models/record_mailer.rb +43 -0
- data/app/models/search.rb +19 -0
- data/app/views/_flash_msg.html.erb +6 -0
- data/app/views/_user_util_links.html.erb +13 -0
- data/app/views/bookmarks/index.html.erb +33 -0
- data/app/views/catalog/_bookmark_control.html.erb +25 -0
- data/app/views/catalog/_bookmark_form.html.erb +8 -0
- data/app/views/catalog/_citation.html.erb +15 -0
- data/app/views/catalog/_constraints.html.erb +7 -0
- data/app/views/catalog/_constraints_element.html.erb +33 -0
- data/app/views/catalog/_did_you_mean.html.erb +10 -0
- data/app/views/catalog/_document_list.html.erb +30 -0
- data/app/views/catalog/_email_form.html.erb +11 -0
- data/app/views/catalog/_facet_limit.html.erb +33 -0
- data/app/views/catalog/_facet_pagination.html.erb +28 -0
- data/app/views/catalog/_facets.html.erb +9 -0
- data/app/views/catalog/_folder_control.html.erb +12 -0
- data/app/views/catalog/_home.html.erb +6 -0
- data/app/views/catalog/_home_text.html.erb +6 -0
- data/app/views/catalog/_index_partials/_default.erb +11 -0
- data/app/views/catalog/_marc_view.html.erb +33 -0
- data/app/views/catalog/_opensearch_response_metadata.html.erb +3 -0
- data/app/views/catalog/_previous_next_doc.html.erb +6 -0
- data/app/views/catalog/_refworks_form.html.erb +7 -0
- data/app/views/catalog/_results_pagination.html.erb +11 -0
- data/app/views/catalog/_search_form.html.erb +14 -0
- data/app/views/catalog/_show_partials/_default.html.erb +9 -0
- data/app/views/catalog/_show_sidebar.html.erb +1 -0
- data/app/views/catalog/_show_tools.html.erb +46 -0
- data/app/views/catalog/_sms_form.html.erb +23 -0
- data/app/views/catalog/_solr_request.html.erb +5 -0
- data/app/views/catalog/_sort_and_per_page.html.erb +20 -0
- data/app/views/catalog/_unapi_microformat.html.erb +1 -0
- data/app/views/catalog/citation.html.erb +1 -0
- data/app/views/catalog/email.erb +1 -0
- data/app/views/catalog/endnote.endnote.erb +1 -0
- data/app/views/catalog/facet.html.erb +28 -0
- data/app/views/catalog/index.atom.builder +108 -0
- data/app/views/catalog/index.html.erb +37 -0
- data/app/views/catalog/index.rss.builder +19 -0
- data/app/views/catalog/librarian_view.html.erb +3 -0
- data/app/views/catalog/opensearch.json.erb +0 -0
- data/app/views/catalog/opensearch.xml.erb +11 -0
- data/app/views/catalog/send_email_record.erb +0 -0
- data/app/views/catalog/show.endnote.erb +1 -0
- data/app/views/catalog/show.html.erb +42 -0
- data/app/views/catalog/show.refworks.erb +1 -0
- data/app/views/catalog/sms.erb +1 -0
- data/app/views/catalog/unapi.xml.builder +6 -0
- data/app/views/feedback/complete.html.erb +3 -0
- data/app/views/feedback/show.html.erb +20 -0
- data/app/views/folder/_tools.html.erb +23 -0
- data/app/views/folder/index.html.erb +44 -0
- data/app/views/layouts/blacklight.html.erb +49 -0
- data/app/views/record_mailer/email_record.erb +6 -0
- data/app/views/record_mailer/sms_record.erb +4 -0
- data/app/views/saved_searches/index.html.erb +27 -0
- data/app/views/search_history/index.html.erb +23 -0
- data/blacklight.gemspec +50 -0
- data/config.ru +4 -0
- data/config/routes.rb +54 -0
- data/db/seeds.rb +7 -0
- data/features/generators.feature +77 -0
- data/features/support/aruba.rb +9 -0
- data/install.rb +0 -0
- data/install/solr.yml +8 -0
- data/lib/blacklight.rb +121 -0
- data/lib/blacklight/catalog.rb +311 -0
- data/lib/blacklight/comma_link_renderer.rb +27 -0
- data/lib/blacklight/configurable.rb +46 -0
- data/lib/blacklight/controller.rb +121 -0
- data/lib/blacklight/engine.rb +32 -0
- data/lib/blacklight/exceptions.rb +13 -0
- data/lib/blacklight/marc.rb +46 -0
- data/lib/blacklight/marc/citation.rb +251 -0
- data/lib/blacklight/search_fields.rb +107 -0
- data/lib/blacklight/solr.rb +7 -0
- data/lib/blacklight/solr/document.rb +239 -0
- data/lib/blacklight/solr/document/dublin_core.rb +40 -0
- data/lib/blacklight/solr/document/email.rb +15 -0
- data/lib/blacklight/solr/document/marc.rb +84 -0
- data/lib/blacklight/solr/document/marc_export.rb +430 -0
- data/lib/blacklight/solr/document/sms.rb +13 -0
- data/lib/blacklight/solr/facet_paginator.rb +93 -0
- data/lib/blacklight/solr_helper.rb +413 -0
- data/lib/blacklight/user.rb +55 -0
- data/lib/blacklight/version.rb +3 -0
- data/lib/colorize.rb +196 -0
- data/lib/generators/blacklight/blacklight_generator.rb +134 -0
- data/lib/generators/blacklight/templates/SolrMarc.jar +0 -0
- data/lib/generators/blacklight/templates/catalog_controller.rb +8 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/config-test.properties +37 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/config.properties +37 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/index.properties +97 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/index_scripts/dewey.bsh +47 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/index_scripts/format.bsh +126 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/README_MAPS +1 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/callnumber_map.properties +407 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/composition_era_map.properties +56 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/country_map.properties +379 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/format_map.properties +50 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/instrument_map.properties +101 -0
- data/lib/generators/blacklight/templates/config/SolrMarc/translation_maps/language_map.properties +490 -0
- data/lib/generators/blacklight/templates/config/blacklight_config.rb +245 -0
- data/lib/generators/blacklight/templates/config/solr.yml +6 -0
- data/lib/generators/blacklight/templates/migrations/add_user_types_to_bookmarks_searches.rb +11 -0
- data/lib/generators/blacklight/templates/migrations/create_bookmarks.rb +17 -0
- data/lib/generators/blacklight/templates/migrations/create_searches.rb +15 -0
- data/lib/generators/blacklight/templates/migrations/remove_editable_fields_from_bookmarks.rb +11 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/bg.png +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/border.png +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/bul_sq_gry.gif +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/checkmark.gif +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/logo.png +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/magnifying_glass.gif +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/remove.gif +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/separator.gif +0 -0
- data/lib/generators/blacklight/templates/public/images/blacklight/start_over.gif +0 -0
- data/lib/generators/blacklight/templates/public/javascripts/blacklight.js +485 -0
- data/lib/generators/blacklight/templates/public/javascripts/jquery-1.4.2.min.js +154 -0
- data/lib/generators/blacklight/templates/public/javascripts/jquery-ui-1.8.1.custom.min.js +756 -0
- data/lib/generators/blacklight/templates/public/stylesheets/blacklight.css +487 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_flat_10_000000_40x100.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_gloss-wave_35_558fd0_500x100.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_222222_256x240.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_228ef1_256x240.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_2e4f81_256x240.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffd27a_256x240.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/images/ui-icons_ffffff_256x240.png +0 -0
- data/lib/generators/blacklight/templates/public/stylesheets/jquery/ui-lightness/jquery-ui-1.8.1.custom.css +486 -0
- data/lib/generators/blacklight/templates/public/stylesheets/yui.css +31 -0
- data/lib/generators/blacklight/templates/solr_document.rb +30 -0
- data/lib/railties/blacklight.rake +66 -0
- data/lib/railties/cucumber.rake +53 -0
- data/lib/railties/rspec.rake +188 -0
- data/lib/railties/solr_marc.rake +148 -0
- data/lib/railties/test_solr_server.rb +130 -0
- data/spec/helpers/catalog_helper_spec.rb +111 -0
- data/spec/views/catalog/_sms_form.html.erb_spec.rb +19 -0
- data/tasks/blacklight_tasks.rake +4 -0
- data/uninstall.rb +1 -0
- metadata +431 -0
data/.gitignore
ADDED
data/.gitmodules
ADDED
data/.yardopts
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
##########################################################################
|
2
|
+
# Copyright 2008 Rector and Visitors of the University of Virginia
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
data/README.rdoc
ADDED
@@ -0,0 +1,168 @@
|
|
1
|
+
Please note: The main Blacklight website is http://projectblacklight.org
|
2
|
+
|
3
|
+
=Installing Blacklight
|
4
|
+
|
5
|
+
== Some background information
|
6
|
+
|
7
|
+
Blacklight is open source discovery software. Libraries (or anyone else) can use Blacklight to enable searching and browsing of their collections online. Blacklight uses the Apache SOLR ( http://lucene.apache.org/solr ) search engine to index and search full text and/or metadata, and Blacklight has a highly configurable Ruby on Rails front-end. Blacklight was originally developed at the University of Virginia Library and is made public under an Apache 2.0 license.
|
8
|
+
|
9
|
+
== Install & Use (With Devise)
|
10
|
+
|
11
|
+
Create a new rails 3 application
|
12
|
+
|
13
|
+
$ rails new my_app
|
14
|
+
|
15
|
+
Add blacklight to your gem file
|
16
|
+
|
17
|
+
/my_app/Gemfile
|
18
|
+
...
|
19
|
+
gem 'blackight'
|
20
|
+
|
21
|
+
Install blacklight
|
22
|
+
|
23
|
+
$ rails generate blacklight --devise
|
24
|
+
|
25
|
+
Run your database migrations
|
26
|
+
|
27
|
+
$ rake db:migrate
|
28
|
+
|
29
|
+
Start up your application
|
30
|
+
|
31
|
+
$ rails server
|
32
|
+
|
33
|
+
Visit the catalog at: http://localhost/catalog
|
34
|
+
|
35
|
+
|
36
|
+
== Install and Use (with a custom user authentication system)
|
37
|
+
|
38
|
+
Blacklight 3 requires Rails 3.0 or greater.
|
39
|
+
|
40
|
+
Add the blacklight gem to your ./Gemfile
|
41
|
+
|
42
|
+
gem 'blacklight'
|
43
|
+
|
44
|
+
$ bundle install
|
45
|
+
|
46
|
+
If you have a user model already, the Blacklight generator will connect to it automatically during installation. However, you will need to make sure the following named routes are included in your /config/routes.rb file:
|
47
|
+
|
48
|
+
match 'new_user_session', :to => 'Your User Session Controller # Log in action'
|
49
|
+
match 'destroy_user_session', :to => 'Your User Session Controller # Log Out action'
|
50
|
+
|
51
|
+
And you will need to make sure the following helper methods are available:
|
52
|
+
|
53
|
+
current_user - Which should return a user object that include Blacklight::User
|
54
|
+
user_session - Which should return a user session
|
55
|
+
|
56
|
+
Once these are in place, you can run the Blacklight Installation Generator:
|
57
|
+
|
58
|
+
rails generate blacklight
|
59
|
+
|
60
|
+
Execute your migrations, and you should be good to go.
|
61
|
+
|
62
|
+
rake db:migrate
|
63
|
+
|
64
|
+
Start up your application
|
65
|
+
|
66
|
+
$ rails server
|
67
|
+
|
68
|
+
Visit the catalog at: http://localhost/catalog
|
69
|
+
|
70
|
+
== Setting up a development environment
|
71
|
+
|
72
|
+
Checkout the code:
|
73
|
+
|
74
|
+
$ git clone git@github.com:projectblacklight/blacklight.git blacklight
|
75
|
+
$ cd blacklight
|
76
|
+
|
77
|
+
(While the rails3 branch is still a seperate branch called 'rails3':)
|
78
|
+
$ git checkout -t origin/rails3
|
79
|
+
|
80
|
+
Now create a test bed application inside of Blacklight that will allow you
|
81
|
+
to include Blacklight as a gem.
|
82
|
+
The test_app directory already exists, and contains a .gitignore file that
|
83
|
+
will mean all of the generated code is ingored. - There are a few directories
|
84
|
+
already in palce in test_app that WILL be included in the git repository. These
|
85
|
+
include:
|
86
|
+
* test_app/features - which contains cucumber tests for blacklight
|
87
|
+
* test_app/spec - rspec tests
|
88
|
+
* test_app/jetty - The blacklight Jetty module (discussed later)
|
89
|
+
* test_app/data - Another remote module.
|
90
|
+
|
91
|
+
To create the rails application:
|
92
|
+
|
93
|
+
$ rails new test_app --skip-test-unit --skip-git
|
94
|
+
|
95
|
+
Or if you are using Jruby:
|
96
|
+
|
97
|
+
$ jruby -S rails new test_app -m http://jruby.org/rails3.rb --skip-test-unit --skip-git
|
98
|
+
|
99
|
+
Add gem 'blacklight' to the test applications Gemfile:
|
100
|
+
|
101
|
+
gem 'blacklight', :path => '../'
|
102
|
+
|
103
|
+
Run bundle install in the test app
|
104
|
+
$ bundle install
|
105
|
+
|
106
|
+
Install and configure blacklight (with devise setting)
|
107
|
+
$ rails generate blacklight --devise
|
108
|
+
|
109
|
+
Remove index.html - which will allow the routes to take you directly to the catalog page.
|
110
|
+
$ rm public/index.html (allow us to redirect to catalog)
|
111
|
+
|
112
|
+
Migrate your database
|
113
|
+
$ rake db:migrate
|
114
|
+
|
115
|
+
Get Solr running somewhere. If you don't have Solr installed, blacklight comes with a default setup.
|
116
|
+
$ cd blacklight
|
117
|
+
$ git submodule init
|
118
|
+
$ git submodule update
|
119
|
+
$ cd test_app
|
120
|
+
$ rake solr:marc:index_test_data RAILS_ENV=test
|
121
|
+
$ cd jetty
|
122
|
+
$ java -jar start.jar
|
123
|
+
|
124
|
+
Start up your Server, and take a test run. (from blacklight/test_app)
|
125
|
+
$ rails server
|
126
|
+
|
127
|
+
Now go check it out, should be running.
|
128
|
+
|
129
|
+
== Running the tests
|
130
|
+
|
131
|
+
You will need to add some gems to your test_app's Gemfile
|
132
|
+
|
133
|
+
group :development, :test do
|
134
|
+
gem "rspec"
|
135
|
+
gem "rspec-rails", "~>2.5.0"
|
136
|
+
gem "cucumber-rails"
|
137
|
+
gem "database_cleaner"
|
138
|
+
gem "capybara"
|
139
|
+
gem "webrat"
|
140
|
+
gem "aruba"
|
141
|
+
end
|
142
|
+
|
143
|
+
Run bundle install
|
144
|
+
|
145
|
+
$ bundle install
|
146
|
+
|
147
|
+
Install cucumber
|
148
|
+
|
149
|
+
$ rails generate cucumber:install
|
150
|
+
|
151
|
+
If you haven't yet done this to load the bundled jetty/solr environment and test data in your blacklight checkout, from the blacklight checkout dir:
|
152
|
+
git submodule init
|
153
|
+
git submodule update
|
154
|
+
|
155
|
+
Load in the test data
|
156
|
+
|
157
|
+
$ rake solr:marc:index_test_data RAILS_ENV=test
|
158
|
+
|
159
|
+
Run the tests
|
160
|
+
|
161
|
+
$ rake solr:spec
|
162
|
+
$ rake solr:features
|
163
|
+
|
164
|
+
==Pre-requisites
|
165
|
+
Whichever method you choose for installation, be sure you have all the pre-requisites in place. You can find these detailed in {PRE-REQUISITES}[https://github.com/projectblacklight/blacklight/wiki/PRE-REQUISITES]
|
166
|
+
|
167
|
+
==Running solr
|
168
|
+
You'll also want some information about how Blacklight expects Apache SOLR ( http://lucene.apache.org/solr ) to run, which you can find in {README_SOLR}[https://github.com/projectblacklight/blacklight/wiki/README_SOLR]
|
data/Rakefile
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
# note that while this is mostly restful routing, the #update and #destroy actions
|
2
|
+
# take the Solr document ID as the :id, NOT the id of the actual Bookmark action.
|
3
|
+
class BookmarksController < ApplicationController
|
4
|
+
|
5
|
+
before_filter :verify_user
|
6
|
+
|
7
|
+
# Beware, :id is the Solr document_id, not the actual Bookmark id.
|
8
|
+
# idempotent, as PUT is supposed to be.
|
9
|
+
# you can also send a bookmark[title] param, which will be used for simplest case
|
10
|
+
# or fall through display of Bookmark in list.
|
11
|
+
def update
|
12
|
+
bookmark = current_user.existing_bookmark_for(params[:id])
|
13
|
+
if bookmark
|
14
|
+
#update existing one with new values if present
|
15
|
+
bookmark.attributes = params[:bookmark] if params[:bookmark]
|
16
|
+
else
|
17
|
+
# create new one with values and document_id
|
18
|
+
bookmark = current_user.bookmarks.build(params[:bookmark].merge(:document_id => params[:id]))
|
19
|
+
end
|
20
|
+
|
21
|
+
success = bookmark.save
|
22
|
+
|
23
|
+
unless request.xhr?
|
24
|
+
if bookmark.save
|
25
|
+
flash[:notice] = "Successfully added bookmark."
|
26
|
+
else
|
27
|
+
flash[:error] = "Could not save bookmark."
|
28
|
+
end
|
29
|
+
redirect_to :back
|
30
|
+
else
|
31
|
+
#ajaxy request doesn't need a redirect and shouldn't have flash set
|
32
|
+
render :text => "", :status => (success ? "200" : "500" )
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def index
|
37
|
+
@bookmarks = current_user.bookmarks.paginate :page => params[:page]
|
38
|
+
end
|
39
|
+
|
40
|
+
# For adding a single bookmark, suggest use PUT/#update to
|
41
|
+
# /bookmarks/$docuemnt_id instead.
|
42
|
+
# But this method, accessed via POST to /bookmarks, can be used for
|
43
|
+
# creating multiple bookmarks at once, by posting with keys
|
44
|
+
# such as bookmarks[n][document_id], bookmarks[n][title].
|
45
|
+
# It can also be used for creating a single bookmark by including keys
|
46
|
+
# bookmark[title] and bookmark[document_id], but in that case #update
|
47
|
+
# is simpler.
|
48
|
+
def create
|
49
|
+
@bookmarks = params[:bookmarks] || []
|
50
|
+
@bookmarks << params[:bookmark] if params[:bookmark]
|
51
|
+
|
52
|
+
success = true
|
53
|
+
@bookmarks.each do |key, bookmark|
|
54
|
+
success = false unless current_user.bookmarks.create(bookmark)
|
55
|
+
end
|
56
|
+
if @bookmarks.length > 0 && success
|
57
|
+
flash[:notice] = "Successfully added bookmarks."
|
58
|
+
elsif @bookmarks.length > 0
|
59
|
+
flash[:error] = "There was a problem adding bookmarks"
|
60
|
+
end
|
61
|
+
|
62
|
+
redirect_to :back
|
63
|
+
end
|
64
|
+
|
65
|
+
# Beware, :id is the Solr document_id, not the actual Bookmark id.
|
66
|
+
# idempotent, as DELETE is supposed to be.
|
67
|
+
def destroy
|
68
|
+
bookmark = current_user.existing_bookmark_for(params[:id])
|
69
|
+
|
70
|
+
success = (!bookmark) || current_user.bookmarks.delete(bookmark)
|
71
|
+
|
72
|
+
unless request.xhr?
|
73
|
+
if success
|
74
|
+
flash[:notice] = "Successfully removed bookmark."
|
75
|
+
else
|
76
|
+
flash[:error] = "Sorry, there was a problem removing the bookmark."
|
77
|
+
end
|
78
|
+
redirect_to :back
|
79
|
+
else
|
80
|
+
# ajaxy request needs no redirect and should not have flash set
|
81
|
+
render :text => "", :status => (success ? "200" : "500")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def clear
|
86
|
+
if current_user.bookmarks.clear
|
87
|
+
flash[:notice] = "Cleared your bookmarks."
|
88
|
+
else
|
89
|
+
flash[:error] = "There was a problem clearing your bookmarks."
|
90
|
+
end
|
91
|
+
redirect_to :action => "index"
|
92
|
+
end
|
93
|
+
|
94
|
+
protected
|
95
|
+
def verify_user
|
96
|
+
flash[:notice] = "Please log in to manage and view your bookmarks." and raise Blacklight::Exceptions::AccessDenied unless current_user
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class FeedbackController < ApplicationController
|
2
|
+
|
3
|
+
# http://expressica.com/simple_captcha/
|
4
|
+
# include SimpleCaptcha::ControllerHelpers
|
5
|
+
|
6
|
+
# show the feedback form
|
7
|
+
def show
|
8
|
+
@errors=[]
|
9
|
+
if request.post?
|
10
|
+
if validate
|
11
|
+
Notifier.feedback(params)
|
12
|
+
redirect_to feedback_complete_path
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
protected
|
18
|
+
|
19
|
+
# validates the incoming params
|
20
|
+
# returns either an empty array or an array with error messages
|
21
|
+
def validate
|
22
|
+
unless params[:name] =~ /\w+/
|
23
|
+
@errors << 'A valid name is required'
|
24
|
+
end
|
25
|
+
unless params[:email] =~ /\w+@\w+\.\w+/
|
26
|
+
@errors << 'A valid email address is required'
|
27
|
+
end
|
28
|
+
unless params[:message] =~ /\w+/
|
29
|
+
@errors << 'A message is required'
|
30
|
+
end
|
31
|
+
#unless simple_captcha_valid?
|
32
|
+
# @errors << 'Captcha did not match'
|
33
|
+
#end
|
34
|
+
@errors.empty?
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
class FolderController < ApplicationController
|
2
|
+
|
3
|
+
include Blacklight::SolrHelper
|
4
|
+
|
5
|
+
# fetch the documents that match the ids in the folder
|
6
|
+
def index
|
7
|
+
@response, @documents = get_solr_response_for_field_values("id",session[:folder_document_ids] || [])
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
# add a document_id to the folder. :id of action is solr doc id
|
12
|
+
def update
|
13
|
+
session[:folder_document_ids] = session[:folder_document_ids] || []
|
14
|
+
session[:folder_document_ids] << params[:id]
|
15
|
+
# Rails 3 uses a one line notation for setting the flash notice.
|
16
|
+
# flash[:notice] = "#{params[:title] || "Item"} successfully added to Folder"
|
17
|
+
respond_to do |format|
|
18
|
+
format.html { redirect_to :back, :notice => "#{params[:title] || "Item"} successfully added to Folder"}
|
19
|
+
format.js { render :json => session[:folder_document_ids] }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# remove a document_id from the folder. :id of action is solr_doc_id
|
24
|
+
def destroy
|
25
|
+
session[:folder_document_ids].delete(params[:id])
|
26
|
+
|
27
|
+
unless request.xhr?
|
28
|
+
respond_to do |format|
|
29
|
+
format.html do
|
30
|
+
flash[:notice] = "#{params[:title] || "Item"} successfully removed from selected items"
|
31
|
+
redirect_to :back
|
32
|
+
end
|
33
|
+
end
|
34
|
+
else
|
35
|
+
render :text => "OK"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# get rid of the items in the folder
|
40
|
+
def clear
|
41
|
+
flash[:notice] = "Cleared Selected Items"
|
42
|
+
session[:folder_document_ids] = []
|
43
|
+
respond_to do |format|
|
44
|
+
format.html { redirect_to :back }
|
45
|
+
format.js { render :json => session[:folder_document_ids] }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class SavedSearchesController < ApplicationController
|
2
|
+
before_filter :verify_user
|
3
|
+
|
4
|
+
def index
|
5
|
+
@searches = current_user.searches
|
6
|
+
end
|
7
|
+
|
8
|
+
def save
|
9
|
+
current_user.searches << Search.find(params[:id])
|
10
|
+
if current_user.save
|
11
|
+
flash[:notice] = "Successfully saved your search."
|
12
|
+
else
|
13
|
+
flash[:error] = "The was a problem saving your search."
|
14
|
+
end
|
15
|
+
redirect_to :back
|
16
|
+
end
|
17
|
+
|
18
|
+
# Only dereferences the user rather than removing the item in case it
|
19
|
+
# is in the session[:history]
|
20
|
+
def forget
|
21
|
+
if current_user.search_ids.include?(params[:id].to_i) && Search.update(params[:id].to_i, :user_id => nil)
|
22
|
+
flash[:notice] = "Successfully removed that saved search."
|
23
|
+
else
|
24
|
+
flash[:error] = "Couldn't remove that saved search."
|
25
|
+
end
|
26
|
+
redirect_to :back
|
27
|
+
end
|
28
|
+
|
29
|
+
# Only dereferences the user rather than removing the items in case they
|
30
|
+
# are in the session[:history]
|
31
|
+
def clear
|
32
|
+
if Search.update_all("user_id = NULL", "user_id = #{current_user.id}")
|
33
|
+
flash[:notice] = "Cleared your saved searches."
|
34
|
+
else
|
35
|
+
flash[:error] = "There was a problem clearing your saved searches."
|
36
|
+
end
|
37
|
+
redirect_to :action => "index"
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
protected
|
42
|
+
def verify_user
|
43
|
+
flash[:notice] = "Please log in to manage and view your saved searches." and raise Blacklight::Exceptions::AccessDenied unless current_user
|
44
|
+
end
|
45
|
+
end
|