* VRFS-352 - instrument-centric landing page

This commit is contained in:
Seth Call 2015-09-04 15:00:45 -05:00
parent 3ee71634b3
commit 0076f0205a
8 changed files with 107 additions and 20 deletions

View File

@ -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)

View File

@ -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"

View File

@ -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 =`<img src="/assets/web/button_cta_jamtrack_free.png" />`
else
img =`<img src="/assets/web/buy-jamtrack-cta.png" />`
`<div className="cta-holder">
<div className="checkout">
<a href="/client#/jamtrack/search" onClick={this.redeem} className="cta-free-jamtrack" alt="ClICK HERE TO PICK YOUR FIRST JAMTRACK FREE!">
{img}
</a>
<span className="value-indicator">$1.99 value</span>
</div>
<br/>
<div className="browse-band">
<a href={bandBrowseUrl}>or browse all {this.props.band_track_count} {this.props.jam_track.original_artist} backing tracks</a>
</div>
<br/>
<div className="browse-all">
<a href="/client?search=#/jamtrack/search">or browse all {this.props.all_track_count} backing tracks!</a>
</div>
</div>`
if @props.instrument?
getFreeText = "Get \"#{this.props.jam_track.name}\" JamTrack Free Now"
instrumentBrowseUrl = "/client?instrument=#{this.props.instrument_id}#/jamtrack/filter"
`<div className="cta-holder instrument-selection">
<div className="checkout">
<a href="/client#/jamtrack/search" onClick={this.redeem} className="cta-free-jamtrack" alt="ClICK HERE TO PICK YOUR FIRST JAMTRACK FREE!">
{getFreeText}
</a>
<div className="browse-instrument">
<a href={instrumentBrowseUrl}>Or Browse All {this.props.instrument_count} JamTracks With {this.props.instrument} Parts<br/>And Get Your Favorite Free!</a>
</div>
</div>
</div>`
else
bandBrowseUrl = "/client?artist=#{this.props.jam_track.original_artist}#/jamtrack/search"
`<div className="cta-holder">
<div className="checkout">
<a href="/client#/jamtrack/search" onClick={this.redeem} className="cta-free-jamtrack" alt="ClICK HERE TO PICK YOUR FIRST JAMTRACK FREE!">
{img}
</a>
<span className="value-indicator">$1.99 value</span>
</div>
<br/>
<div className="browse-band">
<a href={bandBrowseUrl}>or browse all {this.props.band_track_count} {this.props.jam_track.original_artist} backing tracks</a>
</div>
<br/>
<div className="browse-all">
<a href="/client?search=#/jamtrack/search">or browse all {this.props.all_track_count} backing tracks!</a>
</div>
</div>`
})

View File

@ -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 = $('<div class="jam-track-preview-holder"></div>')

View File

@ -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 {

View File

@ -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])

View File

@ -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'

View File

@ -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