Beta download page

This commit is contained in:
Seth Call 2023-09-01 16:32:57 -05:00 committed by Nuwan
parent e491461f64
commit c8a111f5f5
7 changed files with 231 additions and 1 deletions

View File

@ -0,0 +1,49 @@
context = window
@BetaDownloadLandingBottomPage = React.createClass({
render: () ->
`<div className="top-container">
<div className="row awesome">
<h2 className="awesome">Updating to the JamKazam BETA App</h2>
<p>The JamKazam BETA app installs exactly the same as the previous versions of JamKazam. By using this version
of the client, you will be able to play with other beta users, as well as users still on the current
production version. If at any time you want to go back to the current (non-BETA) version of the application,
just install the version of JamKazam found on our <a href="/downloads">downloads</a>.
</p>
<br/>
<p>Below are the typical installation instructions:</p>
</div>
<div className="row awesome-thing">
<div className="awesome-item">
<h3> <div className="awesome-number">1</div>Download the application.</h3>
<p>
Download the application by choosing your platform in the above section.
<div className="clearall" />
</p>
</div>
</div>
<div className="row awesome-thing">
<div className="awesome-item">
<h3> <div className="awesome-number">2</div>Run the installer</h3>
<p>
On Windows, double-click the .msi file and follow all the prompts to update your JamKazam application to
the BETA version. On Mac OS, double-click the .dmg file, and drag the JamKazam icon to the Application
folder in the window that opens, and selecting 'Replace' if prompted.
<div className="clearall" />
</p>
</div>
</div>
<div className="row awesome-thing">
<div className="awesome-item">
<h3> <div className="awesome-number">3</div>Launch the application</h3>
<p>
Launch the application exactly as you did before!
<div className="clearall" />
</p>
</div>
</div>
</div>`
})

View File

@ -0,0 +1,61 @@
context = window
rest = context.JK.Rest()
@BetaDownloadLandingPage = React.createClass({
render: () ->
if this.state.done
ctaButtonText10 = 'sending you in...'
ctaButtonText20 = 'sending you in...'
else if this.state.processing
ctaButtonText10 = 'hold on...'
ctaButtonText20 = 'hold on...'
else
ctaButtonText10 = `<span>ADD $10 CARD<br/>TO CART</span>`
ctaButtonText20 = `<span>ADD $20 CARD<br/>TO CART</span>`
`<div className="top-container">
<div className="full-row name-and-artist">
</div>
<div className="row summary-text">
<p className="top-summary">
The JamKazam BETA app is now ready for download!<br/><br/>We've updated the client to support Windows 10, Windows 11, Mac M1/M2, and Mac Intel.<br/>All JamKazam internals are completely upgraded, resulting in better video, clearer backing tracks & JamTracks, and countless other improvements.
</p>
</div>
</div>`
getInitialState: () ->
{processing:false}
componentDidMount:() ->
$root = $(this.getDOMNode())
# add item to cart, create the user if necessary, and then place the order to get the free JamTrack.
ctaClick: (card_type, e) ->
e.preventDefault()
return if @state.processing
loggedIn = context.JK.currentUserId?
rest.addGiftCardToShoppingCart({id: card_type}).done((response) =>
if loggedIn
@setState({done: true})
context.location = '/client#/shoppingCart'
else
@setState({done: true})
context.location = '/client#/shoppingCart'
).fail((jqXHR, textStatus, errorMessage) =>
if jqXHR.status == 422
errors = JSON.parse(jqXHR.responseText)
cart_errors = errors?.errors?.cart_id
context.JK.app.ajaxError(jqXHR, textStatus, errorMessage)
@setState({processing:false})
)
})

View File

@ -14,4 +14,5 @@
*= require landings/posa_activation *= require landings/posa_activation
*= require landings/simple_jamtracks *= require landings/simple_jamtracks
*= require landings/simple_jamclass *= require landings/simple_jamclass
*/ *= require landings/beta_download
*/

View File

@ -0,0 +1,27 @@
@import "client/common.scss";
body.web.individual_jamtrack .row.cta-row {
h2 {
margin-bottom:20px;
}
width:auto;
a.cta-button {
font-size:20px;
border-radius: 7px;
padding:8px;
color:black;
font-weight:bold;
border-color:white;
border-width:2px;
border-style:solid;
margin-right:20px;
}
a#other-select {
margin-top:20px;
}
}
body.web .landing-content {
min-height:auto;
}

View File

@ -343,6 +343,20 @@ class LandingsController < ApplicationController
render 'buy_gift_card', layout: 'web' render 'buy_gift_card', layout: 'web'
end end
def beta_download
@no_landing_tag = true
@landing_tag_play_learn_earn = false
@show_after_black_bar_border = true
@title = 'Download the JamKazam Beta App'
@description = "The JamKazam Beta client app is here! Download it for MacOSX or Windows, and try it out."
clients = ArtifactUpdate.where("product like '%JamClient%' and environment = '#{ArtifactUpdate::DEFAULT_ENVIRONMENT}'").order(:product)
@page_data = {}
gon.clients = clients
render 'beta_download', layout: 'web'
end
def school_student_register def school_student_register
@no_landing_tag = true @no_landing_tag = true
@landing_tag_play_learn_earn = true @landing_tag_play_learn_earn = true

View File

@ -0,0 +1,77 @@
- provide(:page_name, 'landing_page full individual_jamtrack betadownload')
- provide(:description, @description)
- provide(:title, @title)
= react_component 'BetaDownloadLandingPage', @page_data.to_json
- content_for :after_black_bar do
.row.cta-row
h2 DOWNLOAD THE BETA NOW!
p
.cta-buttons
a#dl-windows.cta-button.hidden Download for Windows
a#dl-mac-intel.cta-button.hidden Download for Mac OS (Intel)
a#dl-mac-m.cta-button.hidden Download Mac OS (M1/M2)
a#other-select.hidden href='#' Looking for other OS downloads?
- content_for :white_bar do
= react_component 'BetaDownloadLandingBottomPage', @page_data.to_json
- content_for :red_bar do
.full-row
| Thank you for your continued support of JamKazam!
div#client_holder *{ "data-client-downloads" => @page_data.to_json }
javascript:
function selectPlatform(selectedPlatform) {
console.log("selectedPlatform", selectedPlatform);
var platform = selectedPlatform; //MacOSX, Win32, Unix
var otherPlatform = "MacOSX"
if(platform == "MacOSX") {
otherPlatform = "Win32"
}
$('#other-select').data('platform', otherPlatform)
if(platform == 'MacOSX') {
$('#dl-windows').hide();
$('#dl-mac-intel').show();
$('#dl-mac-m').show();
}
else {
$('#dl-mac-intel').hide();
$('#dl-mac-m').hide();
$('#dl-windows').show();
}
$('#other-select').show();
}
$(document).on('JAMKAZAM_READY', function(e, data) {
var currentOS = window.JK.detectOS();
gon.clients.forEach(function(item){
console.log("item", item)
if(item.product == "JamClientModern/Win32") {
$('#dl-windows').attr('href', item.uri.url)
}
else if(item.product == "JamClientModern/MacOSX-Intel") {
$('#dl-mac-intel').attr('href', item.uri.url)
}
else if(item.product == "JamClientModern/MacOSX-M") {
$('#dl-mac-m').attr('href', item.uri.url)
}
});
$('#other-select').click(function(e) {
e.preventDefault();
var platform = $(this).data('platform')
selectPlatform(platform);
return false;
})
selectPlatform(currentOS == null || currentOS == "Unix" ? 'Win32' : currentOS);
})

View File

@ -64,6 +64,7 @@ Rails.application.routes.draw do
get '/landing/jamtracks/v2/:instrument/:plan_code', to: 'landings#individual_jamtrack_v2' get '/landing/jamtracks/v2/:instrument/:plan_code', to: 'landings#individual_jamtrack_v2'
get '/landing/jamtracks/:instrument/:plan_code', to: 'landings#individual_jamtrack', as: 'individual_jamtrack_instrument' get '/landing/jamtracks/:instrument/:plan_code', to: 'landings#individual_jamtrack', as: 'individual_jamtrack_instrument'
get '/landing/gift-card', to: 'landings#buy_gift_card', as: 'buy_gift_card' get '/landing/gift-card', to: 'landings#buy_gift_card', as: 'buy_gift_card'
get '/landing/beta-download', to: 'landings#beta_download', as: 'beta_download'
#get '/landing/jamclass/students', to: 'landings#jam_class_students', as: 'jamclass_student_signup' #get '/landing/jamclass/students', to: 'landings#jam_class_students', as: 'jamclass_student_signup'
#get '/landing/jamclass/free/students', to: 'landings#jam_class_students_free' #get '/landing/jamclass/free/students', to: 'landings#jam_class_students_free'
#get '/landing/jamclass/teachers', to: 'landings#jam_class_teachers', as: 'jamclass_teacher_signup' #get '/landing/jamclass/teachers', to: 'landings#jam_class_teachers', as: 'jamclass_teacher_signup'