diff --git a/admin/app/views/jam_track/dump_released.html.erb b/admin/app/views/jam_track/dump_released.html.erb index 6d4fe0655..e04e8fe04 100644 --- a/admin/app/views/jam_track/dump_released.html.erb +++ b/admin/app/views/jam_track/dump_released.html.erb @@ -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 -%> \ No newline at end of file diff --git a/db/manifest b/db/manifest index cbb24506b..92a320cd7 100755 --- a/db/manifest +++ b/db/manifest @@ -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 \ No newline at end of file +harry_fox_agency.sql +jam_track_slug.sql \ No newline at end of file diff --git a/db/up/jam_track_slug.sql b/db/up/jam_track_slug.sql new file mode 100644 index 000000000..e31ddc162 --- /dev/null +++ b/db/up/jam_track_slug.sql @@ -0,0 +1 @@ +ALTER TABLE jam_tracks ADD COLUMN slug VARCHAR(2000) UNIQUE; \ No newline at end of file diff --git a/ruby/lib/jam_ruby/jam_track_importer.rb b/ruby/lib/jam_ruby/jam_track_importer.rb index a0b21938c..ca5c9172e 100644 --- a/ruby/lib/jam_ruby/jam_track_importer.rb +++ b/ruby/lib/jam_ruby/jam_track_importer.rb @@ -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 = [] diff --git a/ruby/lib/jam_ruby/models/jam_track.rb b/ruby/lib/jam_ruby/models/jam_track.rb index e42eac2e1..f18303c7c 100644 --- a/ruby/lib/jam_ruby/models/jam_track.rb +++ b/ruby/lib/jam_ruby/models/jam_track.rb @@ -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 diff --git a/web/app/assets/javascripts/jam_track_preview.js.coffee b/web/app/assets/javascripts/jam_track_preview.js.coffee index 98801ea63..d4462bd10 100644 --- a/web/app/assets/javascripts/jam_track_preview.js.coffee +++ b/web/app/assets/javascripts/jam_track_preview.js.coffee @@ -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? diff --git a/web/app/assets/javascripts/react-components/landing/InvidualJamTrackPage.js.jsx.coffee b/web/app/assets/javascripts/react-components/landing/InvidualJamTrackPage.js.jsx.coffee index 809a273a6..2a29f9555 100644 --- a/web/app/assets/javascripts/react-components/landing/InvidualJamTrackPage.js.jsx.coffee +++ b/web/app/assets/javascripts/react-components/landing/InvidualJamTrackPage.js.jsx.coffee @@ -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}" `
`
+ else
+ img =`
`
+
``
})
\ No newline at end of file
diff --git a/web/app/assets/stylesheets/client/jamTrackPreview.css.scss b/web/app/assets/stylesheets/client/jamTrackPreview.css.scss
index c3cae6e81..13495af22 100644
--- a/web/app/assets/stylesheets/client/jamTrackPreview.css.scss
+++ b/web/app/assets/stylesheets/client/jamTrackPreview.css.scss
@@ -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;
diff --git a/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss b/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss
index c663d91e6..ab1ef152a 100644
--- a/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss
+++ b/web/app/assets/stylesheets/landings/individual_jamtrack.css.scss
@@ -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 {
diff --git a/web/app/controllers/landings_controller.rb b/web/app/controllers/landings_controller.rb
index 70fc1bb71..c6a3730bd 100644
--- a/web/app/controllers/landings_controller.rb
+++ b/web/app/controllers/landings_controller.rb
@@ -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
diff --git a/web/app/views/clients/_jam_track_preview.html.slim b/web/app/views/clients/_jam_track_preview.html.slim
index bf6f22d40..65f570949 100644
--- a/web/app/views/clients/_jam_track_preview.html.slim
+++ b/web/app/views/clients/_jam_track_preview.html.slim
@@ -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
diff --git a/web/config/sitemap.rb b/web/config/sitemap.rb
index 1748e8306..b63fc9634 100644
--- a/web/config/sitemap.rb
+++ b/web/config/sitemap.rb
@@ -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|
diff --git a/web/lib/tasks/jam_tracks.rake b/web/lib/tasks/jam_tracks.rake
index b431b4cdb..0d758bada 100644
--- a/web/lib/tasks/jam_tracks.rake
+++ b/web/lib/tasks/jam_tracks.rake
@@ -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