This commit is contained in:
Seth Call 2020-12-29 19:02:08 -06:00
parent 48fc8152a4
commit 4de066e505
22 changed files with 404 additions and 10 deletions

View File

@ -155,4 +155,4 @@ CREATE INDEX mixes_recording_id_idx ON mixes USING btree (recording_id);
CREATE INDEX msuh_id_idx ON music_sessions_user_history USING btree (id);
CREATE INDEX quick_mixes_user_id_idx ON quick_mixes USING btree (user_id);
CREATE INDEX recorded_videos_user_id_idx ON recorded_videos USING btree (user_id);
CREATE INDEX CONCURRENTLY music_sessions_user_id_idx ON music_sessions USING btree (user_id);
CREATE INDEX music_sessions_user_id_idx ON music_sessions USING btree (user_id);

View File

@ -2862,6 +2862,11 @@ module JamRuby
end
end
def has_support?
return false if !subscription_trial_ended?
return true if admin
SubscriptionDefinitions.rules(self.subscription_plan_code)[:has_support]
end
def subscription_rules(dynamic_definitions = true)
rules = SubscriptionDefinitions.rules(self.subscription_plan_code)

View File

@ -37,6 +37,7 @@ module JamRuby
broadcasting_type: 3,
max_players: 4,
pro_audio: false,
has_support: false,
name: 'Free'
}
@ -52,8 +53,9 @@ module JamRuby
audio_max_bitrate: 2, #192
can_broadcast: true,
broadcasting_type: 3,
max_players: 6,
max_players: nil,
pro_audio: false,
has_support: false,
name: 'Silver'
}
@ -70,6 +72,7 @@ module JamRuby
broadcasting_type: 3,
max_players: nil,
pro_audio: true,
has_support: true,
name: 'Gold'
}
@ -86,6 +89,7 @@ module JamRuby
broadcasting_type: 3,
max_players: nil,
pro_audio: true,
has_support: true,
name: 'Platinum'
}

View File

@ -1 +1 @@
2.0.0-p247
2.3.1

View File

@ -375,7 +375,7 @@ context = window
rel="external">privacy</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a
href="/corp/terms" rel="external">terms of
service</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a
href="/corp/help" rel="external">help</a>
href="/help_desk" rel="external">help</a>
</div>
</div>
</div>

View File

@ -1,3 +1,4 @@
window.JK = window.JK || {};
window.JK.Actions = {}
window.JK.Stores = {}
window.JK.Components = {}

View File

@ -0,0 +1 @@
//= require_directory ./react-components

View File

@ -0,0 +1,46 @@
window.SupportPage = React.createClass({
render: function () {
var support_space = null;
var support_warning = null;
if(gon.has_support) {
var src = `https://jamkazam.freshdesk.com/widgets/feedback_widget/new?&helpdesk_ticket[requester]=${encodeURIComponent(gon.email)}&widgetType=embedded&formTitle=JamKazam+Support&submitTitle=Send+Feedback&submitThanks=Thank+you+for+your+message.+We+will+use+our+best+efforts+to+reply+within+24+hours.`
support_space = <div className="buffer"><iframe title="Get Help Form" class="freshwidget-embedded-form" id="freshwidget-embedded-form" src={src} scrolling="no" height="700px" width="100%" frameBorder="0" >
</iframe></div>
}
else {
if(gon.in_trial) {
support_space=<div className="support-warning">The functionality on this page is disabled because you are currently in the free trial period and are not eligible for support.<br/><br/>You can <a href="/client#/account/subscription">change your plan</a> here.</div>
}
else {
support_space=<div className="support-warning">The functionality on this page is disabled because you must have a Platinum or Gold plan to use support.<br/><br/>You can <a href="/client#/account/subscription">change your plan</a> here.</div>
}
}
var response = <div>
<div id="header">
<a href="/client#/home" className="logo-holder"><span id="help-desk">Help Desk</span></a>
</div>
<div id="top-container">
{support_warning}
<div className="description">
The JamKazam help desk offers 1:1 help desk support only to our Gold and Platinum plan
subscribers. <a href="https://jamkazam.freshdesk.com/support/solutions/articles/66000122535-what-are-jamkazam-s-free-vs-premium-features-"
target="_blank">More information on subscription plans can be found here</a>.<br/><br/> If you are not a Gold or Platinum subscriber,
we'd suggest that you look for help in our <a href="https://jamkazam.freshdesk.com/support/home" target="_blank">extensive knowledge base of
help articles</a>,
or check out our <a href="https://forum.jamkazam.com/" target="_blank">user forum</a> to see if
other JamKazam users can help you.
</div>
{support_space}
</div>
</div>
return response
}
})

View File

@ -0,0 +1,7 @@
//= require reflux
//= require react
//= require react_ujs
//= require react-init
//= require react-input-autosize
//= require react-select
//= require ./react-components

View File

@ -0,0 +1,19 @@
$base-font-family: 'arial', sans-serif;
$large-font-size: 1.5rem;
$standard-font-size: 1rem;
$smaller-font-size: .8rem;
$small-font-size: .7rem;
$input-font-size: 1.0rem;
$submit-button-width:9rem;
$checkbox-label-width:14rem;
$create-account-width:10rem;
$start-promo-btn-width:13rem;
$jamkazam-background:#323232;
$jamkazam-background2:#2c2c2c;
$copy-color-on-dark: #b9b9b9;
$copy-color-on-white: #575757;
$cta-color: #e03d04;
$chunkyBorderWidth: 6px;

View File

@ -0,0 +1,172 @@
@import "support/constants";
@import "client/common.scss";
[data-react-class="SupportPage"] {
width:100%;
.EventsPage {
width:100%;
}
#header {
display:grid;
justify-content: center;
width:100%;
background-color:$jamkazam-background2;
padding:1.5rem 0;
}
#root {
min-height: 100%;
align-items: center;
//justify-content: center;
min-width: 50%;
display: flex;
flex-direction: column;
}
.logo-holder {
background: url('/assets/logo.png') no-repeat;
height: 47px;
width: 252px;
color:white;
}
.title {
font-size: 2rem;
}
.description {
font-size: 1rem;
margin-top: .2rem;
width:1000px;
margin-bottom:2rem;
color:$copy-color-on-white;
a {
color:darken(#fc0, 20%);
white-space:nowrap;
}
line-height:150%;
}
iframe {
background-color:white;
}
.buffer {
background-color:white;
padding:1rem;
}
.support-warning {
background-color:lightgrey;
font-weight:bold;
font-size: 1rem;
margin-top: 1rem;
width:1000px;
margin-bottom:2.5rem;
padding:1rem;
color:$copy-color-on-white;
a {
color:darken(#fc0, 20%);
white-space:nowrap;
}
line-height:150%;
}
#powered-by, #powered-by-2 {
text-align: center;
vertical-align: middle;
position: absolute;
top: -3rem;
margin: auto;
width: 100%;
display: grid;
align-items: center;
justify-content: center;
span {
font-size: .8rem;
text-align: left;
}
}
.powered-by {
background: url("/assets/shared/jk_logo_small.png") no-repeat center;
height: 26px;
width: 142px;
}
#powered-by-2 {
display: none;
}
#body-content {
background-color:black;
display:grid;
grid-template-columns: 60% 2% 38%;
justify-content:center;
margin-bottom:6rem;
padding:0 1rem;
}
#top-container {
background-color:white;
display: grid;
justify-content:center;
padding:2rem 0 7rem 0;
grid-template-columns: min-content;
}
.logo-holder {
max-width: 300px;
min-width:0;
img {
width: 100%;
}
position:relative;
}
#help-desk {
position:absolute;
bottom: -25px;
left: 134px;
font-size:1.5rem;
}
div.root {
flex-grow: 1;
overflow: auto;
}
.header {
font-size: $large-font-size;
margin-top: 1rem;
min-width: 1000px;
text-align: center;
}
html {
font-size: 100%;
}
@media (min-width:1px) and (max-width: 1199px) {
html {
font-size: 100%;
}
.header {
min-width:90%;
padding-left:1.5rem;
}
.description {
width:90%;
padding-left:1.5rem;
}
}
}

View File

@ -0,0 +1,68 @@
/**
*= require_directory ./react-components
*/
@import "support/constants";
html,
body {
min-height: 100%;
overflow:auto;
//background-color:$jamkazam-background;
background-color:white;
color:white;
}
body {
min-height: 100%;
margin: 0;
padding: 0;
font-size: 16px;
line-height: 1.2;
font-family: Raleway, Arial, Helvetica, sans-serif;
}
#footer {
display:inline-block;
margin-top: 30px;
padding-top: 10px;
border-top:solid 1px #444;
position: fixed;
left: 0;
bottom: 0;
width: 100%;
color: white;
text-align: center;
background-color:#323232;
}
#copyright {
float:left;
font-size:11px;
color:#ccc;
}
#footer-links {
float:right;
font-size:11px;
color:#ccc;
}
#footer-links a {
color:#ccc;
text-decoration:none;
}
#footer-links a:hover {
color:#fff;
text-decoration:underline;
}
#version {
font-size:11px;
color:#ccc;
text-align: center;
}

View File

@ -0,0 +1,19 @@
class SupportsController < ApplicationController
respond_to :html
def show
if current_user.nil?
redirect_to signin_url + "?redirect-to=" + URI.escape("/help_desk"), notice: "Please sign in."
return
end
gon.has_support = current_user.has_support?
gon.email = current_user.email
gon.in_trial = !current_user.subscription_trial_ended?
@title = "Help Desk"
@description = "The JamKazam help desk offers 1:1 help desk support only to our Gold and Platinum plan subscribers."
render 'show', :layout => 'support'
end
end

View File

@ -5,7 +5,7 @@
<!-- footer links -->
<div id="footer-links">
<%= link_to "about", corp_about_path , :rel=>"external" %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "news", corp_news_path , :rel=>"external" %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "media", corp_media_center_path , :rel=>"external" %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "contact", corp_contact_path , :rel=>"external" %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "privacy", corp_privacy_path, :rel=>"external" %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "terms of service", corp_terms_path , :rel=>"external" %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "help", corp_help_path , :rel=>"external" %>
<%= link_to "about", corp_about_path , :rel=>"external" %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "news", corp_news_path , :rel=>"external" %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "media", corp_media_center_path , :rel=>"external" %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "contact", corp_contact_path , :rel=>"external" %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "privacy", corp_privacy_path, :rel=>"external" %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "terms of service", corp_terms_path , :rel=>"external" %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "help", help_desk_path, :rel=>"external" %>
</div>
<%= render "clients/recordingManager" %>

View File

@ -9,5 +9,5 @@
Desk.com service using your JamKazam credentials, so you won't have to register for a separate support account.</p>
<p class="support">
<a rel="external" href="https://forum.jamkazam.com/showthread.php?tid=69">JamKazam Support</a>
<a rel="external" href="/help_desk">JamKazam Support</a>
</p>

View File

@ -32,7 +32,7 @@
<div id="copyright">Copyright &copy; <%= Time.now.year %> JamKazam, Inc. All Rights Reserved</div>
<!-- footer links -->
<div id="footer-links"><%= link_to "about", corp_about_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "news", corp_news_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "media", corp_media_center_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "contact", corp_contact_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "privacy", corp_privacy_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "terms of service", corp_terms_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "help", corp_help_path %></div>
<div id="footer-links"><%= link_to "about", corp_about_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "news", corp_news_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "media", corp_media_center_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "contact", corp_contact_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "privacy", corp_privacy_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "terms of service", corp_terms_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "help", help_desk_path, :rel=>"external" %></div>
</div>
</div>

View File

@ -0,0 +1,45 @@
<!DOCTYPE html>
<html>
<head>
<title><%= full_title(yield(:title)) %></title>
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="css/ie.css" media="screen, projection"/>
<![endif]-->
<script type="text/javascript" src="https://s3.amazonaws.com/assets.freshdesk.com/widget/freshwidget.js"></script>
<style type="text/css" media="screen, projection">
@import url(https://s3.amazonaws.com/assets.freshdesk.com/widget/freshwidget.css);
</style>
<link href='http://fonts.googleapis.com/css?family=Raleway:100,200,300,400,500,600,700' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="https://cdn.plyr.io/3.5.10/plyr.css" />
<%= stylesheet_link_tag "support/support", media: "all" %>
<%= include_gon(:init => true) %>
<%= csrf_meta_tags %>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="description" content="<%= meta_description(yield(:description)) %>">
<% if content_for?(:social_meta) %>
<%= yield(:social_meta) %>
<% else %>
<%= render "layouts/social_meta" %>
<% end %>
<%= render "shared/ad_sense" %>
</head>
<body class="support <%= yield(:page_name) %>">
<div id="basic-container">
<%= javascript_include_tag "support/support" %>
<div class="wrapper">
<%= yield %>
<div id="footer">
<!-- copyright -->
<div id="copyright">Copyright &copy; <%= Time.now.year %> JamKazam, Inc. All Rights Reserved</div>
<!-- footer links -->
<div id="footer-links"><%= link_to "about", corp_about_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "news", corp_news_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "media", corp_media_center_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "contact", corp_contact_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "privacy", corp_privacy_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "terms of service", corp_terms_path %>&nbsp;&nbsp;|&nbsp;&nbsp;<%= link_to "help", help_desk_path %></div>
</div>
</div>
</div>
<%= render "shared/ga" %>
</body>
</html>

View File

@ -0,0 +1,6 @@
- provide(:page_name, 'Open Support Ticket')
- provide(:description, @description)
- provide(:title, @title)
#root
= react_component 'SupportPage'

View File

@ -64,11 +64,11 @@
<% if false #@nativeClient %>
<li class="test-network"><%= link_to "Test Network", '#' %></li>
<% end %>
<li class="get-help"><%= link_to "Get Help", 'https://forum.jamkazam.com/', :rel => "external" %></li>
<li class="get-help"><%= link_to "Get Help", help_desk_path, :rel => "external" %></li>
<li class="sign-out"><%= link_to "Sign Out", signout_path, method: "delete" %></li>
<% else %>
<li class="download-app"><%= link_to "Download App", downloads_path, :rel => "external" %></li>
<li class="get-help"><%= link_to "Get Help", 'https://forum.jamkazam.com/', :rel => "external" %></li>
<li class="get-help"><%= link_to "Get Help", help_desk_path, :rel => "external" %></li>
<% end %>

View File

@ -91,6 +91,7 @@ if defined?(Bundler)
config.assets.precompile += %w( modern/modern.js modern/modern.css )
config.assets.precompile += %w( basic/basic.js basic/basic.css )
config.assets.precompile += %w( events/events.js events/events.scss )
config.assets.precompile += %w( support/support.js support/support.scss )
# where is rabbitmq?
config.rabbitmq_host = "127.0.0.1"

View File

@ -141,6 +141,7 @@ Rails.application.routes.draw do
get '/events/:slug', to: 'events#show', :as => 'event'
get '/events', to: 'events#list', as: 'events'
get '/help_desk', to:'supports#show', as: 'help_desk'
get '/endorse/:id/:service', to: 'users#endorse', :as => 'endorse'

View File

@ -1505,7 +1505,6 @@ module JamWebsockets
#
#end
puts "periodical_check_connections"
@client_lookup.each do |client_id, client_context|
if Time.now - client_context.updated_at > @connect_time_expire_client
cleanup_client_with_id(client_id)