Skip to content

Commit

Permalink
Merge pull request #82 from sul-dlss/course-reserve
Browse files Browse the repository at this point in the history
Course reserve
  • Loading branch information
Jessie Keck committed May 16, 2014
2 parents b9e8660 + ccb9471 commit 186164f
Show file tree
Hide file tree
Showing 16 changed files with 222 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
.panel-course-reserve {
ul.links {
padding-left: 0;
list-style-type: none;
li {
padding-right: 20px;
padding-bottom: 15px;
}
li:last-child {
padding-bottom: 0px;
}
}
}

.course-reserve-title {
text-transform: capitalize !important;
font-size: $font-size-small;
}
3 changes: 2 additions & 1 deletion app/assets/stylesheets/searchworks.css.scss
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
@import 'base';
@import 'layout';

@import 'modules/access-panel-course-reserve';
@import 'modules/access-panel-online';
@import 'modules/breadcrumb';
@import 'modules/record-toolbar';
@import 'modules/search-bar';
@import 'modules/record-metadata-section';
@import 'modules/record-metadata-section';
4 changes: 2 additions & 2 deletions app/controllers/catalog_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,8 @@ class CatalogController < ApplicationController
#config.add_facet_field "dewey_2digit_facet", :label => "Refine Call Number", :show => false
#config.add_facet_field "dewey_b4cutter_facet", :label => "Refine Call Number", :show => false
#config.add_facet_field "gov_doc_type_facet", :label => "Refine Call Number", :show => false
#config.add_facet_field "course", :label => "Course", :show => false
#config.add_facet_field "instructor", :label => "Instructor", :show => false
config.add_facet_field "course", :label => "Course", :show => false
config.add_facet_field "instructor", :label => "Instructor", :show => false
config.add_facet_field "author_other_facet", :label => "Organization (as Author)", :limit => true
config.add_facet_field "geographic_facet", :label => "Region", :limit => true
config.add_facet_field "era_facet", :label => "Era", :limit => true
Expand Down
7 changes: 7 additions & 0 deletions app/helpers/access_panel_helper.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
module AccessPanelHelper

def link_to_course_reserve_course(course)
link_to("#{course.id} -- #{course.name}", catalog_index_path({f: {course: [course.id], instructor: [course.instructor]}}))
end

end
40 changes: 40 additions & 0 deletions app/models/concerns/course_reserves.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
module CourseReserves
def course_reserves
if self.respond_to?(:[])
@course_reserves ||= CourseReserves::Processor.new(self)
end
end

private
class Processor
def initialize(document)
@courses = document[:crez_course_info].map { |course| CourseInfo.new(course) } unless document[:crez_course_info].nil?
end

def present?
true ? @courses : false
end

attr_reader :courses

end

class CourseInfo
def initialize(course)
@course = course.split('-|-').map { |c| c.strip }
end

def id
@course[0]
end

def name
@course[1]
end

def instructor
@course[2]
end

end
end
12 changes: 7 additions & 5 deletions app/models/solr_document.rb
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
# -*- encoding : utf-8 -*-
class SolrDocument
class SolrDocument

include MarcLinks
include CourseReserves
include AccessPanelsConcern


include Blacklight::Solr::Document
# The following shows how to setup this blacklight document to display marc documents
extension_parameters[:marc_source_field] = :marcxml
extension_parameters[:marc_format_type] = :marcxml
use_extension( Blacklight::Solr::Document::Marc) do |document|
document.key?( :marcxml )
end
field_semantics.merge!(

field_semantics.merge!(
:title => "title_display",
:author => "author_display",
:language => "language_facet",
Expand All @@ -22,10 +24,10 @@ class SolrDocument


# self.unique_key = 'id'

# Email uses the semantic field mappings below to generate the body of an email.
SolrDocument.use_extension( Blacklight::Solr::Document::Email )

# SMS uses the semantic field mappings below to generate the body of an SMS email.
SolrDocument.use_extension( Blacklight::Solr::Document::Sms )

Expand Down
21 changes: 21 additions & 0 deletions app/views/catalog/access_panels/_course_reserve.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<% document ||= @document %>
<% if document.access_panels.course_reserve.present? %>
<div class="panel panel-default panel-course-reserve">
<div class="panel-heading">Course reserve</div>
<div class="panel-body">
<ul class="links">
<% document.access_panels.course_reserve.courses.each do |course| %>
<li>
<div class="course-reserve-course">
<%= t('blacklight.access_panels.course_reserve.course', link: link_to_course_reserve_course(course)).html_safe %>
</div>
<div class="course-reserve-instructor">
<%= t('blacklight.access_panels.course_reserve.instructor', instructor: course.instructor).html_safe %>
</div>
</li>
<% end %>
</ul>
</div>
</div>
<% end %>
3 changes: 2 additions & 1 deletion app/views/catalog/record/_record_metadata_panels.html.erb
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<div class="col-xs-12 row">
<%= render "catalog/access_panels/online" %>
<%= render "catalog/access_panels/course_reserve" %>
<%# dummy panels (to be replaced) --
<div class="panel panel-default">
<div class="panel-heading">Course reserves</div>
Expand All @@ -10,4 +11,4 @@
<div class="panel-body"></div>
</div>
%>
</div>
</div>
4 changes: 4 additions & 0 deletions config/locales/searchworks.en.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,7 @@ en:

back_to_search: '<span class="glyphicon glyphicon-backward"></span>&nbsp; Back to results'
back_to_search_xs: '<span class="glyphicon glyphicon-backward"></span>'
access_panels:
course_reserve:
course: '<span class="course-reserve-title">COURSE:</span> %{link}'
instructor: '<span class="course-reserve-title">INSTRUCTOR(S):</span> <span class="text-muted">%{instructor}</span>'
8 changes: 8 additions & 0 deletions lib/access_panels/course_reserve.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
class CourseReserve < AccessPanel
delegate :present?, to: :courses
def courses
if @document.course_reserves.present?
@document.course_reserves.courses
end
end
end
31 changes: 31 additions & 0 deletions spec/features/access_panels/course_reserve_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
require 'spec_helper'

feature "Course Reserve Access Panel" do

scenario "should have 3 course reservations" do
visit '/catalog/1'
within "div.panel-course-reserve" do
expect(page).to have_css('div.course-reserve-course', count: 3, text: "COURSE:")
expect(page).to have_css('span.course-reserve-title', text: "COURSE:")
expect(page).to have_css('a', text: "ACCT-212-01-02 -- Managerial Accounting: Base")
expect(page).to have_css('div.course-reserve-instructor', text: "INSTRUCTOR(S):")
end
end

scenario "should have 1 course reservations" do
visit '/catalog/2'
within "div.panel-course-reserve" do
expect(page).to have_css('div.course-reserve-course', count: 1, text: "CAT-401-01-01 -- Emergency Kittenz")
expect(page).to have_css('span.course-reserve-title', text: "COURSE:")
expect(page).to have_css('a', text: "CAT-401-01-01 -- Emergency Kittenz")
expect(page).to have_css('div.course-reserve-instructor', text: "INSTRUCTOR(S): McDonald, Ronald")
end
end

scenario "should have 0 course reservations" do
visit '/catalog/3'
expect(page.has_no_css?('div.panel-course-reserve')).to eql true

end

end
4 changes: 4 additions & 0 deletions spec/fixtures/solr_documents/1.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,7 @@
:pub_date: 2014
:access_facet: Online
:building_facet: Green
:crez_course_info:
- "ACCT-212-01-02 -|- Managerial Accounting: Base -|- Rajan, Madhav V."
- "ACCT-212-01-02 -|- Managerial Accounting: Base -|- Reichelstein, Stefan J"
- "ACCT-215-01-02 -|- Managerial Accounting: Accelerated -|- Marinovic Vial, Ivan"
2 changes: 2 additions & 0 deletions spec/fixtures/solr_documents/2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@
:pub_date: 2013
:access_facet: Online
:building_facet: SAL3 (off-campus storage)
:crez_course_info:
- "CAT-401-01-01 -|- Emergency Kittenz -|- McDonald, Ronald"
14 changes: 14 additions & 0 deletions spec/integration/external-data/access_panels_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,18 @@
end
end
end

describe "Course Reserve" do
it "should not be displayed for non course reserve objects" do
visit catalog_path('10473427')
expect(page).not_to have_css(".panel-course-reserve")
end
it "should be displayed for course reserve objects" do
visit catalog_path('10020587')

within(".panel-course-reserve") do
expect(page).to have_css("li a", text: "ACCT-212-01-02 -- Managerial Accounting: Base")
end
end
end
end
18 changes: 18 additions & 0 deletions spec/lib/access_panels/course_reserve_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
require 'spec_helper'
require 'course_reserve'

describe CourseReserve do

describe "present?" do

it "should have a course reserve present" do
doc = SolrDocument.new(id: '123', crez_course_info: ["CAT-401-01-01 -|- Emergency Kittenz -|- McDonald, Ronald"])
expect(CourseReserve.new(doc).present?).to eq true
end

it "should not have a course reserve present" do
doc = SolrDocument.new(id: '123')
expect(CourseReserve.new(doc).present?).to eq false
end
end
end
42 changes: 42 additions & 0 deletions spec/models/concerns/course_reserves_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
require 'spec_helper'

class CourseReservesTestClass
include CourseReserves
end

describe CourseReserves do
it "should return nil for non course reserve docs" do
expect(CourseReservesTestClass.new.course_reserves).to be_nil
end

describe "present?" do
it "should return false" do
expect(CourseReservesTestClass.new.course_reserves.present?).to be_false
end

it "should return true" do
doc = SolrDocument.new(id: '123', crez_course_info: ["CAT-401-01-01 -|- Emergency Kittenz -|- McDonald, Ronald"])
expect(doc.course_reserves.present?).to be_true
end
end

describe CourseReserves::CourseInfo do
let(:doc) {"CAT-401-01-01 -|- Emergency Kittenz -|- McDonald, Ronald"}
let(:course_info) { CourseReserves::CourseInfo.new(doc) }
it "should initialize a new reservation" do
expect(course_info).to be_an CourseReserves::CourseInfo
end

it "should have the correct id" do
expect(course_info.id).to eq "CAT-401-01-01"
end

it "should have the correct name" do
expect(course_info.name).to eq "Emergency Kittenz"
end

it "should have the correct instructor" do
expect(course_info.instructor).to eq "McDonald, Ronald"
end
end
end

0 comments on commit 186164f

Please sign in to comment.