From c44db203856844fdc223becba6c6822e3067b0a5 Mon Sep 17 00:00:00 2001 From: Seth Call Date: Sun, 11 Aug 2024 19:39:56 -0500 Subject: [PATCH 1/3] Create /downloads-legacy, and update /downloads for the 3 clients --- web/Gemfile.lock | 2 +- .../content/button_download_windows.png | Bin 12415 -> 17781 bytes web/app/assets/javascripts/web/downloads.js | 64 ++++++++++++------ web/app/assets/javascripts/web/web.js | 1 + web/app/assets/stylesheets/web/downloads.scss | 28 ++++++-- web/app/controllers/users_controller.rb | 8 +++ .../views/users/_download_templates.html.slim | 61 +++++++++++------ web/app/views/users/_downloads.html.slim | 9 +-- web/config/routes.rb | 1 + wordpress/plugins/jamkazam/README.txt | 2 +- 10 files changed, 118 insertions(+), 58 deletions(-) diff --git a/web/Gemfile.lock b/web/Gemfile.lock index 03fcf0042..ec30059e5 100644 --- a/web/Gemfile.lock +++ b/web/Gemfile.lock @@ -936,7 +936,7 @@ DEPENDENCIES zip-codes RUBY VERSION - ruby 2.4.1p111 + ruby 2.3.1p112 BUNDLED WITH 1.17.3 diff --git a/web/app/assets/images/content/button_download_windows.png b/web/app/assets/images/content/button_download_windows.png index fd240ee35f82a30486fbd11c67ff96a819364c3e..b55ccdc13b1aed5b4a79cffbe67876cb6b375cd2 100644 GIT binary patch literal 17781 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 whx76ZzW*&>LQ(4VvmG3lsS$p8d5Z?Oy@~ diff --git a/web/app/assets/javascripts/web/downloads.js b/web/app/assets/javascripts/web/downloads.js index 598c8edde..8487c63e0 100644 --- a/web/app/assets/javascripts/web/downloads.js +++ b/web/app/assets/javascripts/web/downloads.js @@ -9,6 +9,18 @@ var downloadUris = {}; // map of platform > uri var rest = context.JK.Rest(); + + // We use this method to detect M1 macs and set appropriate API values to prevent sites from detecting fingerprinting protections + function isAppleSilicon () { + var canvas = document.createElement('canvas'); + var gl = canvas.getContext('webgl'); + + // Best guess if the device is an Apple Silicon + // https://stackoverflow.com/a/65412357 + // @ts-expect-error - Object is possibly 'null' + return gl.getSupportedExtensions().indexOf('WEBGL_compressed_texture_etc') !== -1 + } + function selectPlatform(selectedPlatform) { //console.log("selectedPlatform", selectedPlatform); var platformName; // mac, windows, linux @@ -18,33 +30,34 @@ var uri = downloadUris[selectedPlatform]; // prepare template varaibles - if (selectedPlatform == "Unix") { - platformName = "linux"; - platformDisplay = "Linux" - platformName1 = "mac"; - platformDisplay1 = "Mac"; + if (selectedPlatform == "MacOSX_MX") { + platformName = "mac_mx"; + platformDisplay = "Mac/M1,M2...MX"; + platformName1 = "mac_intel"; + platformDisplay1 = "Mac/Intel"; platformName2 = "windows"; platformDisplay2 = "Windows"; - platform1 = "MacOSX"; + platform1 = "MacOSX_Intel"; platform2 = "Win32" } else if(selectedPlatform == "Win32") { platformName = "windows"; platformDisplay = "Windows"; - platformName1 = "mac"; - platformDisplay1 = "Mac"; - platformName2 = "linux" - platformDisplay2 = "Linux"; - platform1 = "MacOSX"; - platform2 = "Unix"; - } else if(selectedPlatform == "MacOSX") { - platformName = "mac"; - platformDisplay = "Mac"; + platformName1 = "mac_intel"; + platformDisplay1 = "Mac/Intel"; + platformName2 = "mac_mx" + platformDisplay2 = "Mac/M1,M2...MX"; + platform1 = "MacOSX_Intel"; + platform2 = "MacOSX_MX"; + } else if(selectedPlatform == "MacOSX_Intel") { + console.log("IM MACOSXINTEL"); + platformName = "mac_intel"; + platformDisplay = "Mac/Intel"; platformName1 = "windows"; platformDisplay1 = "Windows"; - platformName2 = "linux"; - platformDisplay2 = "Linux"; + platformName2 = "mac_mx"; + platformDisplay2 = "Mac/M1,M2...MX"; platform1 = "Win32"; - platform2 = "Unix"; + platform2 = "MacOSX_MX"; } else { alert("unknown platform: " + selectedPlatform); @@ -75,7 +88,6 @@ $('div.hidden-images img[data-purpose=' + platformName1 + ']', selectOthers).remove().appendTo($('a[data-order=1]', selectOthers)); $('div.hidden-images img[data-purpose=' + platformName2 + ']', selectOthers).remove().appendTo($('a[data-order=2]', selectOthers)); - // install click handler for change selection $('a', selectOthers).click(function() { var platform = $(this).attr('data-platform'); @@ -104,6 +116,8 @@ // update blurb $('body.web .downloads-blurb').empty().append(blurb); + context.JK.popExternalLinks(blurb); + // update the 'download other platforms' buttons $('body.web .downloads-container').empty().append(selectOthers); // update system requirements @@ -144,6 +158,18 @@ var currentOS = context.JK.detectOS(); var downloads = $('.downloads'); + if(currentOS == "MacOSX") { + var silicon = isAppleSilicon(); + if(silicon == true) { + currentOS = "MacOSX_MX"; + } + else { + currentOS = "MacOSX_Intel"; + } + } + console.log("CURRENT OS ", currentOS) + + rest.getClientDownloads() .done(function(data) { //console.log('getClientDownloads', data); diff --git a/web/app/assets/javascripts/web/web.js b/web/app/assets/javascripts/web/web.js index 241f5fd8f..b0c3d3711 100644 --- a/web/app/assets/javascripts/web/web.js +++ b/web/app/assets/javascripts/web/web.js @@ -69,6 +69,7 @@ //= require landing/signup //= require recordingModel //= require web/downloads +//= require web/downloads_legacy //= require web/congratulations //= require web/sessions //= require web/session_info diff --git a/web/app/assets/stylesheets/web/downloads.scss b/web/app/assets/stylesheets/web/downloads.scss index 68b180b83..ccf024030 100644 --- a/web/app/assets/stylesheets/web/downloads.scss +++ b/web/app/assets/stylesheets/web/downloads.scss @@ -13,8 +13,18 @@ body.downloads { .badge-number { display:none; } + .download-container.legacy { + .downloads-blurb { + margin-top:20px; + } + .download-others { + p { + margin:0; + } + } + } .download-app { - left:22.5%; + left:20%; float:none; position:relative; } @@ -33,7 +43,6 @@ body.downloads { color:#CCC; font-size:14px; line-height:125%; - text-indent:-5px; margin-left:40px; &:before @@ -52,7 +61,7 @@ body.downloads { .download-app { padding-top:20px; - width:55%; + width:60%; float:left; @include border_box_sizing; } @@ -97,9 +106,9 @@ body.downloads { } .download-entreaty { - + margin-bottom:25px; p.click-to-download { - margin-bottom:5px; + } } @@ -120,7 +129,7 @@ body.downloads { } ul li { - font-size:12px; + font-size:14px; margin-left:15px; } @@ -134,7 +143,12 @@ body.downloads { .download-box { color:#fff; - text-align:center; + text-align:left; + line-height:135%; + } + + .download-legacy-backup { + margin-top:20px; } .go-jamtrack-shopping { diff --git a/web/app/controllers/users_controller.rb b/web/app/controllers/users_controller.rb index 6847087d8..d4f5109d2 100644 --- a/web/app/controllers/users_controller.rb +++ b/web/app/controllers/users_controller.rb @@ -232,6 +232,14 @@ class UsersController < ApplicationController render rend[:template], :layout => rend[:layout] end + def downloads_legacy + @no_user_dropdown = true + @page_context = 'standalone' + render :layout => 'web' + # rend = _render('downloads_legacy') + #render rend[:template], :layout => rend[:layout] + end + def downloads2021 render :downloads2021, layout: 'jk2021' end diff --git a/web/app/views/users/_download_templates.html.slim b/web/app/views/users/_download_templates.html.slim index 828738a10..0368dc5a0 100644 --- a/web/app/views/users/_download_templates.html.slim +++ b/web/app/views/users/_download_templates.html.slim @@ -8,40 +8,57 @@ script type="text/template" id="client-download-blurb-contents" h5 SYSTEM REQUIREMENTS: | {% if(data.platform == "Win32") { %} ul.windows-requirements - li Windows 7, 8, or 10 - 64-bit (32-bit not supported) + li Windows 10 or 11 - 64-bit (32-bit not supported) li Dual core processor or higher li 75MB hard disk space for app - li External audio interface recommended (but you can start with built-in mic and & headphone jack) - li USB 2.0, USB 3.0, Thunderbolt, or Firewire (not USB 1.1) for external audio interfaces - li Ethernet port for real-time online sessions (WiFi not recommended) - li Broadband Internet service with 1Mbps uplink bandwidth for real-time online sessions - | {% } else if(data.platform == "MacOSX") { %} + li + span External audio interface for audio processing ( + a rel="external" href="https://jamkazam.freshdesk.com/support/solutions/articles/66000122514-audio-interfaces-for-windows-computers" see recommendations if you don't have one + span ) + li USB 2.0, USB 3.0, or USB-C (not USB 1.1) for audio interface + li Ethernet port and Ethernet cable to connect directly to home router (WiFi not recommended) + li Broadband Internet service with 1Mbps upload bandwidth (3-5Mbps preferred) + | {% } else if(data.platform == "MacOSX_Intel") { %} ul.mac-requirements - li Mac OS X 10.8 or higher, 64-bit - li Dual-core processor or higher + li macOS 10.15 (Catalina) or higher, 64-bit li 75MB hard disk space for app - li External audio interface recommended (but you can start with built-in mic and & headphone jack) - li USB 2.0, USB 3.0, Thunderbolt, or Firewire (not USB 1.1) for external audio interfaces - li Ethernet port for real-time online sessions (WiFi not recommended) - li Broadband Internet service with 1Mbps uplink bandwidth for real-time online sessions + li + span External audio interface for audio processing ( + a rel="external" href="https://jamkazam.freshdesk.com/support/solutions/articles/66000122513-audio-interfaces-for-mac-computers" see recommendations if you don't have one + span ) + li USB 2.0, USB 3.0, or USB-C (not USB 1.1) for audio interface + li Ethernet port and Ethernet cable to connect directly to home router (WiFi not recommended) + li Broadband Internet service with 1Mbps upload bandwidth (3-5Mbps preferred) | {% } else { %} - ul.linux-requirements - li Linux is not yet supported + ul.mac-requirements + li macOS 10.15 (Catalina) or higher, 64-bit + li 75MB hard disk space for app + li + span External audio interface for audio processing ( + a rel="external" href="https://jamkazam.freshdesk.com/support/solutions/articles/66000122513-audio-interfaces-for-mac-computers" see recommendations if you don't have one + span ) + li USB 2.0, USB 3.0, or USB-C (not USB 1.1) for audio interface + li Ethernet port and Ethernet cable to connect directly to home router (WiFi not recommended) + li Broadband Internet service with 1Mbps upload bandwidth (3-5Mbps preferred) | {% } %} - + p.download-legacy-backup + | If you have trouble with the new JamKazam app and cannot get things worked out with the help of our support team, you can  + a href="/downloads-legacy" go here + |  to download and re-install the legacy JamKazam app for now. .hidden.hidden-images - = image_tag("content/button_download_mac.png", :alt => "download mac", :size => "348x92", "data-purpose" => "mac") + = image_tag("content/button_download_mac_intel.png", :alt => "download mac (intel)", :size => "348x92", "data-purpose" => "mac_intel") = image_tag("content/button_download_windows.png", :alt => "download windows", :size => "348x92", "data-purpose" => "windows") - = image_tag("content/button_download_linux.png", :alt => "download linux", :size => "348x92", "data-purpose" => "linux") + = image_tag("content/button_download_mac_mx.png", :alt => "download mac (mx)", :size => "348x92", "data-purpose" => "mac_mx") script type="text/template" id="client-download-select-others" .download-box .download-others + span Need a different version? + br a.choose-other-platform href="#" data-order="1" data-platform="{{data.platform1}}" - | Need a different version? - br - | Click here for to get JamKazam - br - | for {{data.platformDisplay1}} ' '' \ No newline at end of file + | JamKazam for {{data.platformDisplay1}} + br + a.choose-other-platform href="#" data-order="2" data-platform="{{data.platform2}}" + | JamKazam for {{data.platformDisplay2}} \ No newline at end of file diff --git a/web/app/views/users/_downloads.html.slim b/web/app/views/users/_downloads.html.slim index 934fa1b05..371ea5597 100644 --- a/web/app/views/users/_downloads.html.slim +++ b/web/app/views/users/_downloads.html.slim @@ -12,15 +12,8 @@ .download-content .download-entreaty - p You need the JamKazam application to: - ul - li Play music with others in real time on the JamKazam platform - li Make audio recordings and share them via Facebook or URL - li Make video recordings and share them via YouTube or URL - li Live broadcast your sessions to family, friends, and fans - li Play and control your JamTracks multi-track recordings + p You must use the JamKazam app to get into online sessions with other musicions. Click the button below to download the JamKazam app installer. Then double click the installer to run it. - p.click-to-download Click the button below to download the JamKazam application installer. .downloads-blurb .jamtracks diff --git a/web/config/routes.rb b/web/config/routes.rb index ff2f89a41..48e8b47d7 100644 --- a/web/config/routes.rb +++ b/web/config/routes.rb @@ -25,6 +25,7 @@ Rails.application.routes.draw do get '/congratulations_musician', to: 'users#congratulations_musician', as: :congratulations_musician get '/congratulations_fan', to: 'users#congratulations_fan' get '/downloads', to: 'users#downloads' + get '/downloads-legacy', to: 'users#downloads_legacy' get '/signin', to: 'sessions#signin' post '/signin', to: 'sessions#create' diff --git a/wordpress/plugins/jamkazam/README.txt b/wordpress/plugins/jamkazam/README.txt index da9059944..f96c78cc6 100644 --- a/wordpress/plugins/jamkazam/README.txt +++ b/wordpress/plugins/jamkazam/README.txt @@ -111,4 +111,4 @@ Titles are optional, naturally. Markdown uses email style notation for blockquotes and I've been told: > Asterisks for *emphasis*. Double it up for **strong**. -`` \ No newline at end of file +`` From c907d9c3bad3c5b1065afe3793cae20ab3cf25c9 Mon Sep 17 00:00:00 2001 From: Seth Call Date: Sun, 11 Aug 2024 20:12:33 -0500 Subject: [PATCH 2/3] Be sure to use the same product names as in the database --- web/app/assets/javascripts/web/downloads.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/web/app/assets/javascripts/web/downloads.js b/web/app/assets/javascripts/web/downloads.js index 8487c63e0..1937b77c6 100644 --- a/web/app/assets/javascripts/web/downloads.js +++ b/web/app/assets/javascripts/web/downloads.js @@ -30,14 +30,14 @@ var uri = downloadUris[selectedPlatform]; // prepare template varaibles - if (selectedPlatform == "MacOSX_MX") { + if (selectedPlatform == "MacOSX-M") { platformName = "mac_mx"; platformDisplay = "Mac/M1,M2...MX"; platformName1 = "mac_intel"; platformDisplay1 = "Mac/Intel"; platformName2 = "windows"; platformDisplay2 = "Windows"; - platform1 = "MacOSX_Intel"; + platform1 = "MacOSX-Intel"; platform2 = "Win32" } else if(selectedPlatform == "Win32") { platformName = "windows"; @@ -46,9 +46,9 @@ platformDisplay1 = "Mac/Intel"; platformName2 = "mac_mx" platformDisplay2 = "Mac/M1,M2...MX"; - platform1 = "MacOSX_Intel"; - platform2 = "MacOSX_MX"; - } else if(selectedPlatform == "MacOSX_Intel") { + platform1 = "MacOSX-Intel"; + platform2 = "MacOSX-M"; + } else if(selectedPlatform == "MacOSX-Intel") { console.log("IM MACOSXINTEL"); platformName = "mac_intel"; platformDisplay = "Mac/Intel"; @@ -57,7 +57,7 @@ platformName2 = "mac_mx"; platformDisplay2 = "Mac/M1,M2...MX"; platform1 = "Win32"; - platform2 = "MacOSX_MX"; + platform2 = "MacOSX-M"; } else { alert("unknown platform: " + selectedPlatform); @@ -161,10 +161,10 @@ if(currentOS == "MacOSX") { var silicon = isAppleSilicon(); if(silicon == true) { - currentOS = "MacOSX_MX"; + currentOS = "MacOSX-M"; } else { - currentOS = "MacOSX_Intel"; + currentOS = "MacOSX-Intel"; } } console.log("CURRENT OS ", currentOS) @@ -176,7 +176,7 @@ removeSpinner(); $.each(data, function(key, item) { - var platform = key.substring('JamClient/'.length); + var platform = key.substring('JamClientModern/'.length); downloadUris[platform] = item.uri; }); From e55ad12b61d3255d4feae8cd123464a19c62ce3b Mon Sep 17 00:00:00 2001 From: Seth Call Date: Sun, 11 Aug 2024 22:10:47 -0500 Subject: [PATCH 3/3] missed files --- .../content/button_download_mac_intel.png | Bin 0 -> 18378 bytes .../images/content/button_download_mac_mx.png | Bin 0 -> 18680 bytes .../javascripts/web/downloads_legacy.js | 174 ++++++++++++++++++ .../_download_legacy_templates.html.slim | 52 ++++++ web/app/views/users/_downloads.html.slim | 2 +- .../views/users/_downloads_legacy.html.slim | 62 +++++++ web/app/views/users/downloads_legacy.html.erb | 8 + 7 files changed, 297 insertions(+), 1 deletion(-) create mode 100644 web/app/assets/images/content/button_download_mac_intel.png create mode 100644 web/app/assets/images/content/button_download_mac_mx.png create mode 100644 web/app/assets/javascripts/web/downloads_legacy.js create mode 100644 web/app/views/users/_download_legacy_templates.html.slim create mode 100644 web/app/views/users/_downloads_legacy.html.slim create mode 100644 web/app/views/users/downloads_legacy.html.erb diff --git a/web/app/assets/images/content/button_download_mac_intel.png b/web/app/assets/images/content/button_download_mac_intel.png new file mode 100644 index 0000000000000000000000000000000000000000..20ef7405ca88c31aead9fa8bbcb5e9a454000f7c GIT binary patch literal 18378 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%0DU`8z#xc%v}?Z`0C4F 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 Eg87vwZ2$lO literal 0 HcmV?d00001 diff --git a/web/app/assets/images/content/button_download_mac_mx.png b/web/app/assets/images/content/button_download_mac_mx.png new file mode 100644 index 0000000000000000000000000000000000000000..585ae5b640896b0228cf32cc69b618e338c3256e GIT binary patch literal 18680 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 Q&Hw-a07*qoM6N<$f~U;IjsO4v literal 0 HcmV?d00001 diff --git a/web/app/assets/javascripts/web/downloads_legacy.js b/web/app/assets/javascripts/web/downloads_legacy.js new file mode 100644 index 000000000..e52fd006b --- /dev/null +++ b/web/app/assets/javascripts/web/downloads_legacy.js @@ -0,0 +1,174 @@ +(function(context,$) { + + "use strict"; + + context.JK = context.JK || {}; + + var downloads = {}; + var isCongratulations; + var downloadUris = {}; // map of platform > uri + var rest = context.JK.Rest(); + + function selectPlatform(selectedPlatform) { + //console.log("selectedPlatform", selectedPlatform); + var platformName; // mac, windows, linux + var platformDisplay; // Mac, Windows, Linux + var platform = selectedPlatform; //MacOSX, Win32, Unix + var platformName1, platformName2, platform1, platform2, platformDisplay1, platformDisplay2; + var uri = downloadUris[selectedPlatform]; + + // prepare template varaibles + if (selectedPlatform == "Unix") { + platformName = "linux"; + platformDisplay = "Linux" + platformName1 = "mac_intel"; + platformDisplay1 = "Mac/Intel"; + platformName2 = "windows"; + platformDisplay2 = "Windows"; + platform1 = "MacOSX"; + platform2 = "Win32" + } else if(selectedPlatform == "Win32") { + platformName = "windows"; + platformDisplay = "Windows"; + platformName1 = "mac_intel"; + platformDisplay1 = "Mac/Intel"; + platformName2 = "linux" + platformDisplay2 = "Linux"; + platform1 = "MacOSX"; + platform2 = "Unix"; + } else if(selectedPlatform == "MacOSX") { + platformName = "mac_intel"; + platformDisplay = "Mac/Intel"; + platformName1 = "windows"; + platformDisplay1 = "Windows"; + platformName2 = "linux"; + platformDisplay2 = "Linux"; + platform1 = "Win32"; + platform2 = "Unix"; + } + else { + alert("unknown platform: " + selectedPlatform); + } + + var options = { + platform : platform, + platformName : platformName, + platformDisplay : platformDisplay, + platformName1 : platformName1, + platformDisplay1 : platformDisplay1, + platformName2 : platformName2, + platformDisplay2 : platformDisplay2, + platform1: platform1, + platform2: platform2, + uri : uri ? uri : '#', + isCongratulations : isCongratulations + }; + + var blurb = $(context._.template($('#client-download-legacy-blurb-contents').html(), options, { variable: 'data' })); + + // isolate active image for blurb + $('div.hidden-images img[data-purpose=' + platformName + ']', blurb).remove().appendTo($('a.current-os-download', blurb)); + + var selectOthers = $(context._.template($('#client-download-legacy-select-others').html(), options, { variable: 'data' })); + + // isolate active images for selectOthers + $('div.hidden-images img[data-purpose=' + platformName1 + ']', selectOthers).remove().appendTo($('a[data-order=1]', selectOthers)); + $('div.hidden-images img[data-purpose=' + platformName2 + ']', selectOthers).remove().appendTo($('a[data-order=2]', selectOthers)); + + + // install click handler for change selection + $('a.choose-other-platform', selectOthers).click(function() { + var platform = $(this).attr('data-platform'); + selectPlatform(platform); + return false; + }); + + $('a', blurb).click(function() { + //console.log("download clicked"); + var clicked = $(this); + var href = clicked.attr('href'); + if(href != "#") { + context.JK.GA.trackDownload(clicked.attr('data-platform')); + rest.userDownloadedClient().always(function() { + $('body').append('