diff --git a/ruby/lib/jam_ruby/models/jam_track.rb b/ruby/lib/jam_ruby/models/jam_track.rb
index 260a6a851..acbc2df32 100644
--- a/ruby/lib/jam_ruby/models/jam_track.rb
+++ b/ruby/lib/jam_ruby/models/jam_track.rb
@@ -328,7 +328,7 @@ module JamRuby
end
- query = query.where("jam_tracks.status = ?", 'Production') unless user.admin
+ query = query.where("jam_tracks.status = ?", 'Production') unless user && user.admin
unless options[:genre].blank?
query = query.joins(:genres)
diff --git a/web/app/assets/javascripts/react-components/landing/InvidualJamTrackPage.js.jsx.coffee b/web/app/assets/javascripts/react-components/landing/IndividualJamTrackPage.js.jsx.coffee
similarity index 92%
rename from web/app/assets/javascripts/react-components/landing/InvidualJamTrackPage.js.jsx.coffee
rename to web/app/assets/javascripts/react-components/landing/IndividualJamTrackPage.js.jsx.coffee
index 2a29f9555..b2764cddf 100644
--- a/web/app/assets/javascripts/react-components/landing/InvidualJamTrackPage.js.jsx.coffee
+++ b/web/app/assets/javascripts/react-components/landing/IndividualJamTrackPage.js.jsx.coffee
@@ -9,7 +9,9 @@ context = window
render: () ->
header = null
- if @props.band
+ if @props.instrument
+ header = "We Have #{@props.instrument_count} JamTracks With #{@props.instrument} Parts - Play Along With Your Favorites!"
+ else if @props.band
header = "#{@props.jam_track.original_artist} Backing Tracks - Complete Multitracks"
else if @props.generic?
header = "Backing Tracks + Free Amazing App = Unmatched Experience"
diff --git a/web/app/assets/javascripts/react-components/landing/JamTrackCta.js.jsx.coffee b/web/app/assets/javascripts/react-components/landing/JamTrackCta.js.jsx.coffee
index 3562a1284..490751fd5 100644
--- a/web/app/assets/javascripts/react-components/landing/JamTrackCta.js.jsx.coffee
+++ b/web/app/assets/javascripts/react-components/landing/JamTrackCta.js.jsx.coffee
@@ -39,29 +39,48 @@ rest = context.JK.Rest()
{processing: false}
render: () ->
- bandBrowseUrl = "/client?artist=#{this.props.jam_track.original_artist}#/jamtrack/search"
+
isFree = context.JK.currentUserFreeJamTrack
+
if isFree
img =`
`
else
img =`
`
- `
`
+
+ if @props.instrument?
+ getFreeText = "Get \"#{this.props.jam_track.name}\" JamTrack Free Now"
+ instrumentBrowseUrl = "/client?instrument=#{this.props.instrument_id}#/jamtrack/filter"
+
+ ``
+ else
+ bandBrowseUrl = "/client?artist=#{this.props.jam_track.original_artist}#/jamtrack/search"
+
+ ``
})
\ No newline at end of file
diff --git a/web/app/assets/javascripts/web/individual_jamtrack.js b/web/app/assets/javascripts/web/individual_jamtrack.js
index 6b0b8fd78..fc20baa68 100644
--- a/web/app/assets/javascripts/web/individual_jamtrack.js
+++ b/web/app/assets/javascripts/web/individual_jamtrack.js
@@ -12,10 +12,33 @@
var $jamTracksButton = null;
var $ctaJamTracksButton = null;
+ function computeWeight (jam_track_track, instrument) {
+ var weight;
+
+ if (jam_track_track.track_type == 'Master') {
+ weight = 0
+ }
+ else if (jam_track_track.instrument.id == instrument) {
+ weight = 1 + jam_track_track.position
+ }
+ else {
+ weight = 10000 + jam_track_track.position
+ }
+ return weight;
+ }
+
function fetchJamTrack() {
rest.getJamTrackWithArtistInfo({plan_code: gon.jam_track_plan_code})
.done(function (jam_track) {
+ if(gon.instrument_id) {
+ jam_track.tracks.sort(function(a, b) {
+ var aWeight = computeWeight(a, gon.instrument_id)
+ var bWeight = computeWeight(b, gon.instrument_id)
+ return aWeight - bWeight
+ })
+ }
+
context._.each(jam_track.tracks, function (track) {
var $element = $('')
diff --git a/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss b/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss
index a45d0d720..575a36152 100644
--- a/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss
+++ b/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss
@@ -108,6 +108,18 @@ body.web.landing_jamtrack.individual_jamtrack {
}
.cta-holder {
+
+ &.instrument-selection {
+ a {
+ font-size: 18px;
+ text-decoration:underline;
+ }
+
+ .browse-instrument {
+ margin-top:20px;
+ text-decoration:underline;
+ }
+ }
margin-top:30px;
text-align:center;
.checkout {
diff --git a/web/app/controllers/landings_controller.rb b/web/app/controllers/landings_controller.rb
index c6a3730bd..d1e95e2ad 100644
--- a/web/app/controllers/landings_controller.rb
+++ b/web/app/controllers/landings_controller.rb
@@ -70,18 +70,30 @@ class LandingsController < ApplicationController
def individual_jamtrack
@no_landing_tag = true
+ instrument_id = nil
+ instrument_name = nil
+ instrument_count = 0
+ if params[:instrument]
+ instrument = params[:instrument].downcase.sub('-', ' ')
+ instrument = Instrument.find_by_id(instrument)
+ instrument_id = instrument.id if instrument
+ instrument_name = instrument.description
+ query, next_ptr, instrument_count = JamTrack.index({instrument: instrument_id}, current_user)
+ end
@jam_track = JamTrack.find_by_slug(params[:plan_code])
@jam_track = JamTrack.find_by_plan_code("jamtrack-" + params[:plan_code]) unless @jam_track
band_jam_track_count = @jam_track.band_jam_track_count
jam_track_count = JamTrack.count
@title = individual_jamtrack_title(false, params[:generic], @jam_track)
@description = individual_jamtrack_desc(false, params[:generic], @jam_track)
- @page_data = {jam_track: @jam_track, all_track_count: jam_track_count, band_track_count: band_jam_track_count, band: false, generic: params[:generic]}
+ @page_data = {jam_track: @jam_track, all_track_count: jam_track_count, band_track_count: band_jam_track_count, band: false, generic: params[:generic], instrument: instrument_name, instrument_id: instrument_id, instrument_count: instrument_count}
gon.jam_track_plan_code = @jam_track.plan_code if @jam_track
gon.generic = params[:generic]
+ gon.instrument_id = instrument_id
render 'individual_jamtrack', layout: 'web'
end
+
def individual_jamtrack_band
@no_landing_tag = true
@jam_track = JamTrack.find_by_slug(params[:plan_code])
diff --git a/web/config/routes.rb b/web/config/routes.rb
index e0e9ea630..233521e2c 100644
--- a/web/config/routes.rb
+++ b/web/config/routes.rb
@@ -32,6 +32,7 @@ SampleApp::Application.routes.draw do
match '/landing/kick4', to: 'landings#watch_overview_kick4', via: :get, as: 'landing_kick4'
match '/landing/jamtracks/:plan_code', to: 'landings#individual_jamtrack', via: :get, as: 'individual_jamtrack'
match '/landing/jamtracks/band/:plan_code', to: 'landings#individual_jamtrack_band', via: :get, as: 'individual_jamtrack_band'
+ match '/landing/jamtracks/:instrument/:plan_code', to: 'landings#individual_jamtrack', via: :get, as: 'individual_jamtrack_instrument'
# these are the older versions of the landing pages
match '/landing/jamtracks/v1/:plan_code', to: 'landings#individual_jamtrack_v1', via: :get, as: 'individual_jamtrack_v1'
match '/landing/jamtracks/v1/band/:plan_code', to: 'landings#individual_jamtrack_band_v1', via: :get, as: 'individual_jamtrack_band_v1'
diff --git a/web/spec/features/individual_jamtrack_spec.rb b/web/spec/features/individual_jamtrack_spec.rb
index 52f10c1a7..103e0eae8 100644
--- a/web/spec/features/individual_jamtrack_spec.rb
+++ b/web/spec/features/individual_jamtrack_spec.rb
@@ -120,5 +120,23 @@ describe "Individual JamTrack", :js => true, :type => :feature, :capybara_featur
find('h1', text: 'check out')
find('h3', text: 'OR SIGN UP USING YOUR EMAIL')
end
+
+ it "instrument version" do
+ visit "/landing/jamtracks/electric%20guitar/acdc-backinblack"
+
+ find('h1', "We Have 1 JamTracks With Electric Guitar Parts - Play Along With Your Favorites!")
+ jamtrack_acdc_backinblack.jam_track_tracks.each do |track|
+ if track.master?
+ find('.jam-track-preview-holder[data-id="' + track.id + '"] img.instrument-icon[data-instrument-id="other"]')
+ find('.jam-track-preview-holder[data-id="' + track.id + '"] .instrument-name', text:'Master Mix')
+ else
+ find('.jam-track-preview-holder[data-id="' + track.id + '"] img.instrument-icon[data-instrument-id="' + track.instrument.id + '"]')
+ find('.jam-track-preview-holder[data-id="' + track.id + '"] .instrument-name', text:track.instrument.description)
+ end
+ end
+ find('a.cta-free-jamtrack').trigger(:click)
+ find('h1', text: 'check out')
+ find('h3', text: 'OR SIGN UP USING YOUR EMAIL')
+ end
end
end