* VRFS-3449 - updates for direct landing pages

This commit is contained in:
Seth Call 2015-08-20 14:19:07 -05:00
parent 0d075a9568
commit e7b50ca4a8
14 changed files with 73 additions and 21 deletions

View File

@ -1,6 +1,6 @@
<%- headers = ['Artist Name', 'Song Name', 'Direct Landing', 'Generic Direct Landing', 'Band Landing'] -%>
<%= CSV.generate_line headers %><%- @jam_tracks.each do |jam_track| -%><%= CSV.generate_line([jam_track.original_artist, jam_track.name,
"https://www.jamkazam.com/landing/jamtracks/#{jam_track.short_plan_code}",
"https://www.jamkazam.com/landing/jamtracks/#{jam_track.short_plan_code}?generic=1",
"https://www.jamkazam.com/landing/jamtracks/band/#{jam_track.short_plan_code}"
"https://www.jamkazam.com/landing/jamtracks/#{jam_track.slug}",
"https://www.jamkazam.com/landing/jamtracks/#{jam_track.slug}?generic=1",
"https://www.jamkazam.com/landing/jamtracks/band/#{jam_track.slug}"
]) %><%- end -%>

View File

@ -301,4 +301,5 @@ repair_band_profile.sql
jam_track_onboarding_enhancements.sql
jam_track_name_drop_unique.sql
jam_track_searchability.sql
harry_fox_agency.sql
harry_fox_agency.sql
jam_track_slug.sql

1
db/up/jam_track_slug.sql Normal file
View File

@ -0,0 +1 @@
ALTER TABLE jam_tracks ADD COLUMN slug VARCHAR(2000) UNIQUE;

View File

@ -444,6 +444,7 @@ module JamRuby
jam_track.alternative_license_status = false
jam_track.hfa_license_desired = true
jam_track.server_fixation_date = Time.now
jam_track.slug = metadata['slug'] || jam_track.generate_slug
if is_tency_storage?
jam_track.vendor_id = metadata[:id]
@ -1743,11 +1744,20 @@ module JamRuby
def remove_s3_special_chars(filename)
filename.tr('/&@:,$=+?;\^`><{}[]#%~|', '')
end
def generate_slugs
JamTrack.all.each do |jam_track|
jam_track.generate_slug
jam_track.save!
end
end
def onboarding_exceptions
JamTrack.all.each do |jam_track|
jam_track.onboarding_exceptions
end
end
def synchronize_all(options)
importers = []

View File

@ -45,6 +45,7 @@ module JamRuby
validates :hfa_license_number, numericality: {only_integer: true}, :allow_nil => true
validates :hfa_song_code, length: {maximum: 200}
validates :album_title, length: {maximum: 200}
validates :slug, uniqueness: true
validates_format_of :reproduction_royalty_amount, with: /^\d+\.*\d{0,4}$/, :allow_blank => true
validates_format_of :licensor_royalty_amount, with: /^\d+\.*\d{0,4}$/, :allow_blank => true
@ -431,5 +432,15 @@ module JamRuby
plan_code[prefix.length..-1]
end
# http://stackoverflow.com/questions/4308377/ruby-post-title-to-slug
def sluggarize(field)
field.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
end
def generate_slug
self.slug = sluggarize(original_artist) + '-' + sluggarize(name)
puts "Self.slug #{self.slug}"
end
end
end

View File

@ -30,6 +30,7 @@ context.JK.JamTrackPreview = class JamTrackPreview
@playButton = @root.find('.play-button')
@stopButton = @root.find('.stop-button')
@instrumentIcon = @root.find('.instrument-icon')
@instrumentPart = @root.find('.instrument-part')
@instrumentName = @root.find('.instrument-name')
@part = @root.find('.part')
@loading = @root.find('.loading')
@ -64,7 +65,7 @@ context.JK.JamTrackPreview = class JamTrackPreview
if @options.master_adds_line_break
part = '"' + @jamTrack.name + '"' + ' by ' + @jamTrack.original_artist
@part.html("#{part}") if part != ''
@part.text("#{part}") if part != ''
@part.addClass('adds-line-break')
else
@ -79,6 +80,7 @@ context.JK.JamTrackPreview = class JamTrackPreview
@part.text("(#{part})") if part != ''
@instrumentPart.text(@instrumentName.text() + ' ' + @part.text())
if @jamTrackTrack.preview_mp3_url?

View File

@ -4,7 +4,7 @@ context = window
watchVideo: (e) ->
e.preventDefault()
window.open("/popups/youtube/player?id=askHvcCoNfw", 'What Are JamTracks?', 'scrollbars=yes,toolbar=no,status=no,height=282,width=500')
window.open("/popups/youtube/player?id=askHvcCoNfw", 'What Are JamTracks?', 'scrollbars=yes,toolbar=no,status=no,height=540,width=960')
render: () ->
@ -14,7 +14,7 @@ context = window
else if @props.generic?
header = "Backing Tracks + Free Amazing App = Unmatched Experience"
else
header = "#{@props.jam_track.name} Backing Track by #{@props.jam_track.original_artist}"
header = "\"#{@props.jam_track.name}\" Backing Track by #{@props.jam_track.original_artist}"
`<div className="one_by_two">

View File

@ -41,20 +41,27 @@ rest = context.JK.Rest()
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 src="/assets/web/button_cta_jamtrack_free.png" />
{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} AC/DC backing tracks</a>
<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#/jamtrack/search">or browse all {this.props.all_track_count} backing tracks!</a>
<a href="/client?search=#/jamtrack/search">or browse all {this.props.all_track_count} backing tracks!</a>
</div>
</div>`
})

View File

@ -21,16 +21,27 @@
margin-left:10px;
}
.instrument-part {
display:inline-block;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
vertical-align: middle;
margin-left:10px;
}
.instrument-name {
display:inline;
vertical-align: middle;
margin-left:10px;
display:none;
}
.part {
display:inline;
vertical-align: middle;
margin-left:4px;
display:none;
}
.play-button, .stop-button {
vertical-align:middle;

View File

@ -48,12 +48,10 @@ body.web.landing_jamtrack.individual_jamtrack {
}
}
.watch-video {
position:absolute;
bottom:25px;
position:relative;
top:40px;
text-align:center;
display:block;
width: 50%;
left: 20%;
font-size:16px;
}
@ -92,6 +90,10 @@ body.web.landing_jamtrack.individual_jamtrack {
.jam-track-preview {
font-size:12px;
.instrument-part {
width:175px
}
}
.cta-holder {

View File

@ -70,26 +70,28 @@ class LandingsController < ApplicationController
def individual_jamtrack
@no_landing_tag = true
@jam_track = JamTrack.find_by_plan_code("jamtrack-" + params[:plan_code])
@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]}
gon.jam_track_plan_code = params[:plan_code] ? "jamtrack-" + params[:plan_code] : nil
gon.jam_track_plan_code = @jam_track.plan_code if @jam_track
gon.generic = params[:generic]
render 'individual_jamtrack', layout: 'web'
end
def individual_jamtrack_band
@no_landing_tag = true
@jam_track = JamTrack.find_by_plan_code("jamtrack-" + params[:plan_code])
@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(true, params[:generic], @jam_track)
@description = individual_jamtrack_desc(true, params[:generic], @jam_track)
@page_data = {jam_track: @jam_track, all_track_count: jam_track_count, band_track_count: band_jam_track_count, band: true, generic: params[:generic]}
gon.jam_track_plan_code = params[:plan_code] ? "jamtrack-" + params[:plan_code] : nil
gon.jam_track_plan_code = @jam_track.plan_code if @jam_track
gon.generic = params[:generic]
render 'individual_jamtrack', layout: 'web'
end

View File

@ -4,6 +4,7 @@ script type="text/template" id='template-jam-track-preview'
a href="#" class='play-button {{data.color}}'
a.hidden href="#" class='stop-button {{data.color}}'
img.instrument-icon hoveraction="instrument" data-instrument-id="" width="24" height="24"
.instrument-part
.instrument-name
.part
.loading.spinner-small.hidden

View File

@ -34,9 +34,9 @@ SitemapGenerator::Sitemap.create do
add(corp_about_path, priority: 0.9)
JamTrack.all.each do |jam_track|
shortened_plan_code = jam_track.short_plan_code
add(individual_jamtrack_path(shortened_plan_code), priority:0.9)
add(individual_jamtrack_band_path(shortened_plan_code), priority:0.9)
slug = jam_track.slug
add(individual_jamtrack_path(slug), priority:0.9)
add(individual_jamtrack_band_path(slug), priority:0.9)
end
Recording.popular_recordings.each do |recording|

View File

@ -82,6 +82,10 @@ namespace :jam_tracks do
JamTrackImporter.onboarding_exceptions
end
task generate_slugs: :environment do |task, arg|
JamTrackImporter.generate_slugs
end
task sync_all: :environment do |task, args|
JamTrackImporter.synchronize_all(skip_audio_upload:false)
end