diff --git a/ruby/lib/jam_ruby/models/jam_track.rb b/ruby/lib/jam_ruby/models/jam_track.rb
index 5426b08b7..a4d293276 100644
--- a/ruby/lib/jam_ruby/models/jam_track.rb
+++ b/ruby/lib/jam_ruby/models/jam_track.rb
@@ -103,6 +103,10 @@ module JamRuby
warnings.join(',')
end
+ def band_jam_track_count
+ JamTrack.where(original_artist: original_artist).count
+ end
+
class << self
# @return array[artist_name(string)]
def all_artists
diff --git a/web/app/assets/javascripts/jam_rest.js b/web/app/assets/javascripts/jam_rest.js
index 0181bd8af..43dff7227 100644
--- a/web/app/assets/javascripts/jam_rest.js
+++ b/web/app/assets/javascripts/jam_rest.js
@@ -1443,6 +1443,15 @@
});
}
+ function getJamTrackWithArtistInfo(options) {
+ return $.ajax({
+ type: "GET",
+ url: '/api/jamtracks/band/' + options['plan_code'] + '?' + $.param(options),
+ dataType: "json",
+ contentType: 'application/json'
+ });
+ }
+
function getJamtracks(options) {
return $.ajax({
type: "GET",
@@ -1752,6 +1761,7 @@
this.getLatencyTester = getLatencyTester;
this.updateAudioLatency = updateAudioLatency;
this.getJamTrack = getJamTrack;
+ this.getJamTrackWithArtistInfo = getJamTrackWithArtistInfo;
this.getJamtracks = getJamtracks;
this.getPurchasedJamTracks = getPurchasedJamTracks;
this.getPaymentHistory = getPaymentHistory;
diff --git a/web/app/assets/stylesheets/landings/individual_song.css.scss b/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss
similarity index 73%
rename from web/app/assets/stylesheets/landings/individual_song.css.scss
rename to web/app/assets/stylesheets/landings/individual_jamtrack.css.scss
index 4aebaa6c3..6111876ee 100644
--- a/web/app/assets/stylesheets/landings/individual_song.css.scss
+++ b/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss
@@ -1,4 +1,4 @@
-body.web.landing_jamtrack.individual {
+body.web.landing_jamtrack.individual_jamtrack {
.previews {
margin-top:10px;
@@ -11,6 +11,11 @@ body.web.landing_jamtrack.individual {
margin-top: 20px;
}
+ .browse-jamtracks-wrapper {
+ text-align:center;
+ width:90%;
+ }
+
.jam-track-preview-holder {
margin-bottom: 7px;
diff --git a/web/app/assets/stylesheets/landings/individual_jamtrack_band.css.scss b/web/app/assets/stylesheets/landings/individual_jamtrack_band.css.scss
new file mode 100644
index 000000000..db25181b1
--- /dev/null
+++ b/web/app/assets/stylesheets/landings/individual_jamtrack_band.css.scss
@@ -0,0 +1,32 @@
+body.web.landing_jamtrack.individual_jamtrack_band {
+
+ .previews {
+ margin-top:10px;
+ }
+ .jamtrack-reasons {
+ margin: 10px 0 0 20px;
+ }
+
+ .white-bordered-button {
+ margin-top: 20px;
+ }
+
+ .browse-jamtracks-wrapper {
+ text-align:center;
+ width:90%;
+ }
+
+ .jam-track-preview-holder {
+
+ margin-bottom: 7px;
+ float: left;
+
+ &[data-track-type="Master"] {
+ width: 100%;
+ }
+
+ &[data-track-type="Track"] {
+ width: 50%;
+ }
+ }
+}
\ No newline at end of file
diff --git a/web/app/assets/stylesheets/landings/landing_page_new.css.scss b/web/app/assets/stylesheets/landings/landing_page_new.css.scss
index 7a9b6067c..d8938ec15 100644
--- a/web/app/assets/stylesheets/landings/landing_page_new.css.scss
+++ b/web/app/assets/stylesheets/landings/landing_page_new.css.scss
@@ -23,6 +23,7 @@ body.web.landing_page {
.landing-tag {
left:50%;
+ text-align:center;
}
p, ul, li {
font-size:14px;
diff --git a/web/app/controllers/api_jam_tracks_controller.rb b/web/app/controllers/api_jam_tracks_controller.rb
index e40598fd5..fd8019462 100644
--- a/web/app/controllers/api_jam_tracks_controller.rb
+++ b/web/app/controllers/api_jam_tracks_controller.rb
@@ -1,8 +1,8 @@
class ApiJamTracksController < ApiController
# have to be signed in currently to see this screen
- before_filter :api_signed_in_user, :except => [:index, :show]
- before_filter :api_any_user, :only => [:index, :show]
+ before_filter :api_signed_in_user, :except => [:index, :show, :show_with_artist_info]
+ before_filter :api_any_user, :only => [:index, :show, :show_with_artist_info]
before_filter :lookup_jam_track_right, :only => [:download,:enqueue, :show_jam_track_right]
respond_to :json
@@ -11,6 +11,10 @@ class ApiJamTracksController < ApiController
@jam_track = JamTrack.find_by_plan_code!(params[:plan_code])
end
+ def show_with_artist_info
+ @jam_track = JamTrack.find_by_plan_code!(params[:plan_code])
+ end
+
def index
data = JamTrack.index(params, any_user)
@jam_tracks, @next = data[0], data[1]
diff --git a/web/app/controllers/landings_controller.rb b/web/app/controllers/landings_controller.rb
index 7ecd72208..a8ba721be 100644
--- a/web/app/controllers/landings_controller.rb
+++ b/web/app/controllers/landings_controller.rb
@@ -66,11 +66,16 @@ class LandingsController < ApplicationController
render 'watch_overview_tight', layout: 'web'
end
- def individual_song
+ def individual_jamtrack
gon.jam_track_plan_code = params[:plan_code] ? "jamtrack-" + params[:plan_code] : nil
+ render 'individual_jamtrack', layout: 'web'
+ end
- render 'individual_song', layout: 'web'
+ def individual_jamtrack_band
+ gon.jam_track_plan_code = params[:plan_code] ? "jamtrack-" + params[:plan_code] : nil
+
+ render 'individual_jamtrack_band', layout: 'web'
end
end
diff --git a/web/app/views/api_jam_tracks/show.rabl b/web/app/views/api_jam_tracks/show.rabl
index e616306e2..65d887ea8 100644
--- a/web/app/views/api_jam_tracks/show.rabl
+++ b/web/app/views/api_jam_tracks/show.rabl
@@ -1,6 +1,6 @@
object @jam_track
-attributes :id, :name, :description, :recording_type, :original_artist, :songwriter, :publisher, :sales_region, :price, :version, :duration
+attributes :id, :name, :description, :recording_type, :original_artist, :songwriter, :publisher, :sales_region, :price, :version
node :genres do |item|
[item.genre.description] # XXX: need to return single genre; not array
diff --git a/web/app/views/api_jam_tracks/show_with_artist_info.rabl b/web/app/views/api_jam_tracks/show_with_artist_info.rabl
new file mode 100644
index 000000000..76dc3b68b
--- /dev/null
+++ b/web/app/views/api_jam_tracks/show_with_artist_info.rabl
@@ -0,0 +1,7 @@
+object @jam_track
+
+attributes :band_jam_track_count
+
+node do |jam_track|
+ partial "api_jam_tracks/show", object: @jam_track
+end
diff --git a/web/app/views/landings/individual_song.html.slim b/web/app/views/landings/individual_jamtrack.html.slim
similarity index 95%
rename from web/app/views/landings/individual_song.html.slim
rename to web/app/views/landings/individual_jamtrack.html.slim
index 12f7b4b3b..39bba98e6 100644
--- a/web/app/views/landings/individual_song.html.slim
+++ b/web/app/views/landings/individual_jamtrack.html.slim
@@ -1,4 +1,4 @@
-- provide(:page_name, 'landing_page full landing_jamtrack individual')
+- provide(:page_name, 'landing_page full landing_jamtrack individual_jamtrack')
.two_by_two
.row
@@ -43,7 +43,7 @@ javascript:
"use strict";
context.JK = context.JK || {};
- context.JK.IndividualSong = function (app) {
+ context.JK.IndividualJamTrack = function (app) {
var rest = context.JK.Rest();
var logger = context.JK.logger;
@@ -66,7 +66,7 @@ javascript:
$previews.append($element);
- new context.JK.JamTrackPreview(app, $element, jam_track, track, {master_shows_duration: true})
+ new context.JK.JamTrackPreview(app, $element, jam_track, track, {master_shows_duration: false})
})
$previews.append('
')
@@ -90,6 +90,6 @@ javascript:
})(window, jQuery);
$(document).on('JAMKAZAM_READY', function(e, data) {
- var song = new JK.IndividualSong(data.app);
+ var song = new JK.IndividualJamTrack(data.app);
song.initialize();
})
diff --git a/web/app/views/landings/individual_jamtrack_band.html.slim b/web/app/views/landings/individual_jamtrack_band.html.slim
new file mode 100644
index 000000000..986e5c21a
--- /dev/null
+++ b/web/app/views/landings/individual_jamtrack_band.html.slim
@@ -0,0 +1,106 @@
+- provide(:page_name, 'landing_page full landing_jamtrack individual_jamtrack_band')
+
+.two_by_two
+ .row
+ .column
+ h1
+ | We Have
+ span.jamtrack_band_info
+ |
+ span.jamtrack_noun JamTracks
+ span.check-it-out , Check One Out!
+ p Click the play buttons below to hear the master mix and each fully isolated track. All are included in each single JamTrack.
+ .previews
+ .column
+ h1 See What You Can Do With JamTracks
+ .video-wrapper
+ .video-container
+ iframe src="//www.youtube.com/embed/gAJAIHMyois" frameborder="0" allowfullscreen
+ br clear="all"
+ .row
+ .column
+ h1
+ | Get Your First JamTrack Free Now!
+ p Click the GET A JAMTRACK FREE button below. Browse to find the one you want. Click Add to cart, and we'll apply a credit during checkout to make this first one free! We're confident you'll be back for more.
+ .browse-jamtracks-wrapper
+ a.white-bordered-button href="/client#/jamtrack" GET A JAMTRACK FREE!
+ .column
+ h1 Why Are JamTracks Different & Better?
+ p
+ | JamTracks are the best way to play with your favorite music.
+ | Unlike traditional backing tracks, JamTracks are complete multitrack recordings,
+ | with fully isolated tracks for each part. Used with the free JamKazam app/service, you can:
+ ul.jamtrack-reasons
+ li - Solo just the individual track you want to play to hear and learn it
+ li - Mute just the track you want to play, and play along with the rest
+ li - Make audio recordings and share them via Facebook or URL
+ li - Make video recordings and share them via YouTube or URL
+ li - And even go online to play JamTracks with others in real time!
+ br clear="all"
+ br clear="all"
+
+javascript:
+ (function (context, $) {
+
+ "use strict";
+
+ context.JK = context.JK || {};
+ context.JK.IndividualJamTrackBand = function (app) {
+
+ var rest = context.JK.Rest();
+ var logger = context.JK.logger;
+ var $page = null;
+ var $jamTrackBandInfo = null;
+ var $jamTrackNoun = null;
+ var $previews = null;
+ var $jamTracksButton = null;
+ var $checkItOut = null;
+
+ function fetchJamTrack() {
+ rest.getJamTrackWithArtistInfo({plan_code: gon.jam_track_plan_code})
+ .done(function (jam_track) {
+ logger.debug("jam_track", jam_track)
+
+ $jamTrackBandInfo.text(jam_track.band_jam_track_count + ' ' + jam_track.original_artist);
+ $jamTracksButton.attr('href', '/client?artist=' + jam_track.original_artist + '#/jamtrack')
+
+ if(jam_track.band_jam_track_count == 1) {
+ $jamTrackNoun.text('JamTrack')
+ $checkItOut.text(', Check It Out!')
+ }
+ context._.each(jam_track.tracks, function (track) {
+
+ var $element = $('