diff --git a/admin/Gemfile b/admin/Gemfile
index b5e4ca236..7502a288e 100644
--- a/admin/Gemfile
+++ b/admin/Gemfile
@@ -49,7 +49,7 @@ gem 'unf', '0.1.3' #optional fog dependency
gem 'country-select'
gem 'aasm', '3.0.16'
gem 'postgres-copy', '0.6.0'
-gem 'aws-sdk' #, '1.29.1'
+gem 'aws-sdk', '~> 1'
gem 'bugsnag'
gem 'gon'
gem 'cocoon'
diff --git a/ruby/Gemfile b/ruby/Gemfile
index f38b2de02..7a31165d1 100644
--- a/ruby/Gemfile
+++ b/ruby/Gemfile
@@ -28,7 +28,7 @@ gem 'amqp', '1.0.2'
gem 'will_paginate'
gem 'actionmailer', '3.2.13'
gem 'sendgrid', '1.2.0'
-gem 'aws-sdk' #, '1.29.1'
+gem 'aws-sdk', '~> 1'
gem 'carrierwave', '0.9.0'
gem 'aasm', '3.0.16'
gem 'devise', '3.3.0' # 3.4.0 causes: uninitialized constant ActionController::Metal (NameError)
diff --git a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/welcome_message.html.erb b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/welcome_message.html.erb
index 439aefe3a..35e380618 100644
--- a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/welcome_message.html.erb
+++ b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/welcome_message.html.erb
@@ -1,45 +1,64 @@
<% provide(:title, 'Welcome to JamKazam!') %>
+
Hello <%= EmailBatchProgression::VAR_FIRST_NAME %> --
+
We're delighted that you have decided to try the JamKazam service,
- and we hope that you will enjoy using JamKazam to play music with others.
- Following are links to some resources that can help to get you up and running quickly.
+ and we hope that you will enjoy using JamKazam to play
+ music with others.
+ Following are some resources that can help you get oriented and get the most out of JamKazam.
+
+
+
+
+
+
Getting Started
+ There are basically three kinds of setups you can use to play on JamKazam.
+
+ - Built-In Audio on Your Computer - You can use a Windows or Mac computer, and just use the built-in mic and headphone jack to
+ handle your audio. This is cheap and easy, but your audio quality will suffer, and it will also process audio very slowly,
+ creating problems with latency, or lag, in your sessions. Still, you can at least start experimenting with JamKazam in this way.
+ - Computer with External Audio Interface - You can use a Windows or Mac computer with an external audio interface that you
+ already own and use for recording, if you happen to have one already. If you are going to do this, or use the built-in mic/headphones on your computer, please refer
+ to our Minimum System Requirements
+ to make sure your computer will work. These requirements were on the download page for the app, but you may have sped by them. Also, we'd recommend watching our
+ Getting Started Video to learn more about your options here.
+ - The JamBlaster - JamKazam has designed a new product from the ground up to be the best way to play music online in real time. It's called the JamBlaster.
+ It processes audio faster than any of the thousands of combinations of computers and interfaces in use on JamKazam today, which means you can play with musicians
+ who are farther away from you, and closer sessions will feel/sound tighter. The JamBlaster is both a computer and an audio interface, so it also eliminates the
+ system requirements worries, and it "just works" so you don't have to be an audio and computer genius to get it working. This is a great product - available only
+ through a Kickstarter program running during a 30-day window during parts of February and March 2015. You can watch the
+ JamBlaster Video to learn more about this amazing new product.
+
+
+
+JamKazam Features
+ JamKazam offers a very robust and exciting set of features for playing online and sharing your performances with others. Here are some videos you can watch
+ to easily get up to speed on some of the things you can do with JamKazam:
+
+
+
+Getting Help
+ If you run into trouble and need help, please reach out to us. We will be glad to do everything we can to answer your questions and get you up and running.
+ You can visit our
+ Support Portal
+ to find knowledge base articles and post questions that have
+ not already been answered. You can email us at support@jamkazam.com. And if you just want to chat, share tips and war stories, and hang out with fellow JamKazamers,
+ you can visit our Community Forum
+ .
-Getting Started Video
-We recommend watching this video before you jump into the service just to get oriented. It will really help you hit the ground running:
-https://www.youtube.com/watch?v=DBo--aj_P1w
+ Again, welcome to JamKazam, and we look forward to seeing – and hearing – you online soon!
-
-Other Great Tutorial Videos
-There are several other very great videos that will help you understand how to find and connect with other musicians on the service, create your own sessions or find and join other musicians’ sessions, play in sessions, record and share your performances, and even live broadcast your sessions to family, friends, and fans. Check these helpful videos out here:
-https://jamkazam.desk.com/customer/portal/topics/673198-tutorials-on-major-features/articles
-
-
-
-Knowledge Base Articles
-You can find Getting Started knowledge base articles on things like frequently asked questions (FAQ), minimum system requirements for your Windows or Mac computer, how to troubleshoot audio problems in sessions, and more here:
-https://jamkazam.desk.com/customer/portal/topics/564807-getting-started/articles
-
-
-
-JamKazam Support Portal
-If you run into trouble and need help, please reach out to us. We will be glad to do everything we can to get you up and running. You can find our support portal here:
-https://jamkazam.desk.com/
-
-
-
-JamKazam Community Forum
-And if you just want to chat, share tips and war stories, and hang out with fellow JamKazamers, you can visit our community forum here:
-http://forums.jamkazam.com/
-
-
-
-Please take a moment to like or follow us by clicking the icons below, and we look forward to seeing – and hearing – you online soon!
-
-
- -- Team JamKazam
+Best Regards,
+ Team JamKazam
\ No newline at end of file
diff --git a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/welcome_message.text.erb b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/welcome_message.text.erb
index 90efc88ef..a9f2ed06b 100644
--- a/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/welcome_message.text.erb
+++ b/ruby/lib/jam_ruby/app/views/jam_ruby/user_mailer/welcome_message.text.erb
@@ -1,27 +1,43 @@
Hello <%= EmailBatchProgression::VAR_FIRST_NAME %> --
-We're delighted that you have decided to try the JamKazam service, and we hope that you will enjoy using JamKazam to play music with others. Following are links to some resources that can help to get you up and running quickly.
+We're delighted that you have decided to try the JamKazam service, and we hope that you will enjoy using JamKazam to play music with others. Following are some resources that can help you get oriented and get the most out of JamKazam.
-Getting Started Video
-We recommend watching this video before you jump into the service just to get oriented. It will really help you hit the ground running:
-https://www.youtube.com/watch?v=DBo--aj_P1w
-Other Great Tutorial Videos
-There are several other very great videos that will help you understand how to find and connect with other musicians on the service, create your own sessions or find and join other musicians’ sessions, play in sessions, record and share your performances, and even live broadcast your sessions to family, friends, and fans. Check these helpful videos out here:
-https://jamkazam.desk.com/customer/portal/topics/673198-tutorials-on-major-features/articles
+Getting Started
+---------------
-Knowledge Base Articles
-You can find Getting Started knowledge base articles on things like frequently asked questions (FAQ), minimum system requirements for your Windows or Mac computer, how to troubleshoot audio problems in sessions, and more here:
-https://jamkazam.desk.com/customer/portal/topics/564807-getting-started/articles
+There are basically three kinds of setups you can use to play on JamKazam.
-JamKazam Support Portal
-If you run into trouble and need help, please reach out to us. We will be glad to do everything we can to get you up and running. You can find our support portal here:
-https://jamkazam.desk.com
+* Built-In Audio on Your Computer - You can use a Windows or Mac computer, and just use the built-in mic and headphone jack to handle your audio. This is cheap and easy, but your audio quality will suffer, and it will also process audio very slowly, creating problems with latency, or lag, in your sessions. Still, you can at least start experimenting with JamKazam in this way.
-JamKazam Community Forum
-And if you just want to chat, share tips and war stories, and hang out with fellow JamKazamers, you can visit our community forum here:
-http://forums.jamkazam.com
+* Computer with External Audio Interface - - You can use a Windows or Mac computer with an external audio interface that you already own and use for recording, if you happen to have one already. If you are going to do this, or use the built-in mic/headphones on your computer, please refer to our Minimum System Requirements at https://jamkazam.desk.com/customer/portal/articles/1288274-minimum-system-requirements to make sure your computer will work. These requirements were on the download page for the app, but you may have sped by them. Also, we'd recommend watching our Getting Started Video at https://www.youtube.com/watch?v=DBo--aj_P1w to learn more about your options here.
-Please take a moment to like or follow us by clicking the icons below, and we look forward to seeing – and hearing – you online soon!
+* The JamBlaster - JamKazam has designed a new product from the ground up to be the best way to play music online in real time. It's called the JamBlaster. It processes audio faster than any of the thousands of combinations of computers and interfaces in use on JamKazam today, which means you can play with musicians who are farther away from you, and closer sessions will feel/sound tighter. The JamBlaster is both a computer and an audio interface, so it also eliminates the system requirements worries, and it "just works" so you don't have to be an audio and computer genius to get it working. This is a great product - available only through a Kickstarter program running during a 30-day window during parts of February and March 2015. You can watch the JamBlaster Video at https://www.youtube.com/watch?v=gAJAIHMyois to learn more about this amazing new product.
+
+
+JamKazam Features
+-----------------
+
+JamKazam offers a very robust and exciting set of features for playing online and sharing your performances with others. Here are some videos you can watch to easily get up to speed on some of the things you can do with JamKazam:
+
+* Creating a Session - https://www.youtube.com/watch?v=EZZuGcDUoWk
+
+* Finding a Session - https://www.youtube.com/watch?v=xWponSJo-GU
+
+* Playing in a Session - https://www.youtube.com/watch?v=zJ68hA8-fLA
+
+* Connecting with Other Musicians - https://www.youtube.com/watch?v=4KWklSZZxRc
+
+* Working with Recordings - https://www.youtube.com/watch?v=Gn-dOqnNLoY
+
+
+Getting Help
+------------
+
+If you run into trouble and need help, please reach out to us. We will be glad to do everything we can to answer your questions and get you up and running. You can visit our Support Portal at https://jamkazam.desk.com/ to find knowledge base articles and post questions that have not already been answered. You can email us at support@jamkazam.com. And if you just want to chat, share tips and war stories, and hang out with fellow JamKazamers, you can visit our Community Forum at http://forums.jamkazam.com/.
+
+Again, welcome to JamKazam, and we look forward to seeing – and hearing – you online soon!
+
+Best Regards,
+Team JamKazam
--- Team JamKazam
diff --git a/web/Gemfile b/web/Gemfile
index e5c3f1583..5c8370e30 100644
--- a/web/Gemfile
+++ b/web/Gemfile
@@ -51,7 +51,7 @@ gem 'twitter'
gem 'fb_graph', '2.5.9'
gem 'sendgrid', '1.2.0'
gem 'filepicker-rails', '0.1.0'
-gem 'aws-sdk' #, '1.29.1'
+gem 'aws-sdk', '~> 1'
gem 'aasm', '3.0.16'
gem 'carrierwave', '0.9.0'
gem 'carrierwave_direct'
diff --git a/web/app/assets/images/web/carousel_community.png b/web/app/assets/images/web/carousel_community.png
new file mode 100644
index 000000000..ace54546b
Binary files /dev/null and b/web/app/assets/images/web/carousel_community.png differ
diff --git a/web/app/assets/images/web/carousel_jamblaster.png b/web/app/assets/images/web/carousel_jamblaster.png
new file mode 100644
index 000000000..636ede273
Binary files /dev/null and b/web/app/assets/images/web/carousel_jamblaster.png differ
diff --git a/web/app/assets/images/web/carousel_overview.png b/web/app/assets/images/web/carousel_overview.png
new file mode 100644
index 000000000..f8493c1f4
Binary files /dev/null and b/web/app/assets/images/web/carousel_overview.png differ
diff --git a/web/app/assets/javascripts/jam_rest.js b/web/app/assets/javascripts/jam_rest.js
index 6fdb20c50..0a5d20c95 100644
--- a/web/app/assets/javascripts/jam_rest.js
+++ b/web/app/assets/javascripts/jam_rest.js
@@ -1478,10 +1478,10 @@
});
}
- function validateUrlSite(url) {
+ function validateUrlSite(url, sitetype) {
return $.ajax({
type: "GET",
- url: '/api/data_validation?data=' + encodeURIComponent(url),
+ url: '/api/data_validation?sitetype='+sitetype+'&data=' + encodeURIComponent(url),
contentType: 'application/json'
});
}
diff --git a/web/app/assets/javascripts/layout.js b/web/app/assets/javascripts/layout.js
index 723e75650..6c40f596d 100644
--- a/web/app/assets/javascripts/layout.js
+++ b/web/app/assets/javascripts/layout.js
@@ -215,6 +215,14 @@
top: childLayout.top,
left: childLayout.left
}, opts.animationDuration);
+
+ if($(this).is('.feed')) {
+ $('#jamblaster-notice').animate({
+ width: childLayout.width,
+ bottom: '102%',
+ left: childLayout.left
+ }, opts.animationDuration)
+ }
});
}
diff --git a/web/app/assets/javascripts/website_validator.js.coffee b/web/app/assets/javascripts/site_validator.js.coffee
similarity index 69%
rename from web/app/assets/javascripts/website_validator.js.coffee
rename to web/app/assets/javascripts/site_validator.js.coffee
index f13a2c0fe..dfa89b1c4 100644
--- a/web/app/assets/javascripts/website_validator.js.coffee
+++ b/web/app/assets/javascripts/site_validator.js.coffee
@@ -2,13 +2,14 @@ $ = jQuery
context = window
context.JK ||= {};
-context.JK.WebsiteValidator = class WebsiteValidator
+context.JK.SiteValidator = class SiteValidator
- constructor: (input_div) ->
+ constructor: (site_type) ->
@EVENTS = context.JK.EVENTS
@rest = context.JK.Rest()
- @input_div = input_div
- @url_input = @input_div.find('input')
+ @site_type = site_type
+ @input_div = $(".site_validator#"+site_type+"_validator")
+ @data_input = @input_div.find('input')
this.show_format_status()
@logger = context.JK.logger
@site_status = null
@@ -19,39 +20,36 @@ context.JK.WebsiteValidator = class WebsiteValidator
this.renderErrors({})
@spinner.hide()
validator = this
- @url_input.bind 'blur', ->
+ @data_input.bind 'blur', ->
if validator.show_format_status()
- validator.validate_url_site()
- @url_input.bind 'focus', ->
+ validator.validate_site()
+ @data_input.bind 'focus', ->
validator.show_format_status()
- url_to_validate: () =>
- url = @url_input.val()
+ data_to_validate: () =>
+ url = @data_input.val()
if 0 < url.length
url.substring(0,2000)
else
null
- validate_url_format: () =>
- regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
- regexp.test(this.url_to_validate())
-
show_format_status: () =>
- url = this.url_to_validate()
+ data = this.data_to_validate()
yn = true
- if url
- yn = this.validate_url_format()
+ if data && 'url' == @site_type
+ regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
+ yn = regexp.test(this.data_to_validate())
if yn
@checkmark.show()
else
@checkmark.hide()
yn
- validate_url_site: () =>
+ validate_site: () =>
@site_status = null
@spinner.show()
@checkmark.hide()
- @rest.validateUrlSite(this.url_to_validate())
+ @rest.validateUrlSite(this.data_to_validate(), @site_type)
.done(this.processSiteCheck)
.fail(this.processSiteCheckFail)
diff --git a/web/app/assets/stylesheets/client/jamkazam.css.scss b/web/app/assets/stylesheets/client/jamkazam.css.scss
index 8ccd7a022..ab1444769 100644
--- a/web/app/assets/stylesheets/client/jamkazam.css.scss
+++ b/web/app/assets/stylesheets/client/jamkazam.css.scss
@@ -593,5 +593,16 @@ body.jam .icheckbox_minimal {
display:inline-block;
}
+}
+#jamblaster-notice {
+ position:absolute;
+ width:100%;
+ bottom:105%;
+ border-color:#ED3618;
+ border-style:solid;
+ border-width:1px;
+ padding:10px;
+ text-align:center;
+ @include border_box_sizing;
}
\ No newline at end of file
diff --git a/web/app/assets/stylesheets/client/website_validator.css.scss b/web/app/assets/stylesheets/client/site_validator.css.scss
similarity index 96%
rename from web/app/assets/stylesheets/client/website_validator.css.scss
rename to web/app/assets/stylesheets/client/site_validator.css.scss
index f6d7349ba..549d58594 100644
--- a/web/app/assets/stylesheets/client/website_validator.css.scss
+++ b/web/app/assets/stylesheets/client/site_validator.css.scss
@@ -1,6 +1,6 @@
@import "client/common";
-.website_validator {
+.site_validator {
input {
width: 100%;
padding: 5px;
diff --git a/web/app/assets/stylesheets/landings/landing_page.css.scss b/web/app/assets/stylesheets/landings/landing_page.css.scss
index 51491d12a..fe5209df2 100644
--- a/web/app/assets/stylesheets/landings/landing_page.css.scss
+++ b/web/app/assets/stylesheets/landings/landing_page.css.scss
@@ -10,9 +10,42 @@ body.web.landing_page {
}
&.wo_1 {
- .landing-content h1 {
- margin-left:45px;
+
+ .landing-tag {
+ left: 50%;
}
+
+ .cta-container {
+ width:75%;
+ text-align:center;
+ margin-left:0% !important;
+
+ h2 {
+ margin-left:0px !important;
+ }
+ }
+
+ .column:nth-child(1) {
+ width:50% !important;
+ }
+
+ .column:nth-child(2) {
+ width:50% !important;
+ h1 {
+
+ }
+
+ h2 {
+ margin-bottom:30px;
+ }
+
+ .cta-container a {
+
+ margin-bottom:8px;
+ }
+ }
+
+
}
&.wo_3 {
.landing-content h1 {
diff --git a/web/app/assets/stylesheets/web/main.css.scss b/web/app/assets/stylesheets/web/main.css.scss
index 291f61967..82c5160fd 100644
--- a/web/app/assets/stylesheets/web/main.css.scss
+++ b/web/app/assets/stylesheets/web/main.css.scss
@@ -64,10 +64,16 @@ body.web {
}
}
+ &.register {
+ .landing-content {
+ min-height:460px;
+ }
+ }
+
.landing-content {
background-color:black;
width:100%;
- min-height: 460px;
+ min-height: 366px;
position:relative;
padding-bottom:30px;
diff --git a/web/app/assets/stylesheets/web/welcome.css.scss b/web/app/assets/stylesheets/web/welcome.css.scss
index c4bd44786..2171789eb 100644
--- a/web/app/assets/stylesheets/web/welcome.css.scss
+++ b/web/app/assets/stylesheets/web/welcome.css.scss
@@ -19,6 +19,15 @@ body.web {
}
}
+ .jamfest {
+ top:-70px;
+ position:relative;
+
+ .jamblaster {
+ font-weight:bold;
+ }
+ }
+
.follow-links {
position: absolute;
right: 0;
diff --git a/web/app/controllers/api_users_controller.rb b/web/app/controllers/api_users_controller.rb
index b9a1b6d42..f31dd0ea0 100644
--- a/web/app/controllers/api_users_controller.rb
+++ b/web/app/controllers/api_users_controller.rb
@@ -700,25 +700,25 @@ class ApiUsersController < ApiController
end
def validate_data
- data = params[:data]
- vtype = data =~ /^http/ ? 'url' : 'username'
- if 'url' == vtype
- if data.present?
- result = `curl --output /dev/null --silent --head --fail --show-error '#{data}' 2>&1`.chomp
- if $?.success?
- render json: { message: 'Valid Site' }, status: 200
- else
- result =~ /curl: \(\d+\) (.*)/
- render json: { message: 'Invalid Site', errors: { site: [$1] } }, status: 200
- end
- else
- render json: { message: "blank data #{data}" }, status: :unprocessable_entity
- end
- return
- elsif 'username' == vtype
+ unless (data = params[:data]).present?
+ render(json: { message: "blank data #{data}" }, status: :unprocessable_entity) && return
+ end
+ url = nil
+ site = params[:sitetype]
+ if site.blank? || 'url'==site
+ url = data
+ else
+ url = Utils.username_url(data, site)
+ end
+ unless url.blank?
+ if errmsg = Utils.site_validator(url)
+ render json: { message: 'Invalid Site', errors: { site: [errmsg] } }, status: 200
+ else
+ render json: { message: 'Valid Site' }, status: 200
+ end
+ else
+ render json: { message: "unknown validation for data '#{params[:data]}', site '#{params[:site]}'" }, status: :unprocessable_entity
end
-
- render json: { message: "unknown validation type #{params[:validation_type]}" }, status: :unprocessable_entity
end
###################### RECORDINGS #######################
diff --git a/web/app/controllers/users_controller.rb b/web/app/controllers/users_controller.rb
index 6cd34cabd..61c42fe28 100644
--- a/web/app/controllers/users_controller.rb
+++ b/web/app/controllers/users_controller.rb
@@ -190,12 +190,12 @@ class UsersController < ApplicationController
def welcome
@slides = [
- Slide.new("JamKazam Overview", "web/carousel_musicians.jpg", "http://www.youtube.com/embed/ylYcvTY9CVo?autoplay=1"),
- Slide.new("Getting Started", "web/carousel_fans.jpg", "http://www.youtube.com/embed/DBo--aj_P1w?autoplay=1"),
- Slide.new("Playing in a Session", "web/carousel_bands.jpg", "http://www.youtube.com/embed/zJ68hA8-fLA?autoplay=1"),
- Slide.new("JamKazam Overview", "web/carousel_musicians.jpg", "http://www.youtube.com/embed/ylYcvTY9CVo?autoplay=1"),
- Slide.new("Getting Started", "web/carousel_fans.jpg", "http://www.youtube.com/embed/DBo--aj_P1w?autoplay=1"),
- Slide.new("Playing in a Session", "web/carousel_bands.jpg", "http://www.youtube.com/embed/zJ68hA8-fLA?autoplay=1")
+ Slide.new("JamKazam Overview", "web/carousel_overview.png", "http://www.youtube.com/embed/ylYcvTY9CVo?autoplay=1"),
+ Slide.new("The Revolutionary New JamBlaster!", "web/carousel_jamblaster.png", "http://www.youtube.com/embed/gAJAIHMyois?autoplay=1"),
+ Slide.new("Kudos From Our Community", "web/carousel_community.png", "http://www.youtube.com/embed/_7qj5RXyHCo?autoplay=1"),
+ Slide.new("JamKazam Overview", "web/carousel_overview.png", "http://www.youtube.com/embed/ylYcvTY9CVo?autoplay=1"),
+ Slide.new("The Revolutionary New JamBlaster!", "web/carousel_fans.jpg", "http://www.youtube.com/embed/gAJAIHMyois?autoplay=1"),
+ Slide.new("Kudos From Our Community", "web/carousel_community.png", "http://www.youtube.com/embed/_7qj5RXyHCo?autoplay=1")
]
@promo_buzz = PromoBuzz.active
@@ -207,8 +207,8 @@ class UsersController < ApplicationController
end
# temporary--will go away soon
- @jamfest_2014 = Event.find_by_id('80bb6acf-3ddc-4305-9442-75e6ec047c27') # production ID
- @jamfest_2014 = Event.find_by_id('a2dfbd26-9b17-4446-8c61-b67a542ea6ee') unless @jamfest_2014 # development ID
+ #@jamfest_2014 = Event.find_by_id('80bb6acf-3ddc-4305-9442-75e6ec047c27') # production ID
+ #@jamfest_2014 = Event.find_by_id('a2dfbd26-9b17-4446-8c61-b67a542ea6ee') unless @jamfest_2014 # development ID
# temporary--end
@welcome_page = true
diff --git a/web/app/views/clients/_home.html.slim b/web/app/views/clients/_home.html.slim
index 5492f904c..8130e82cc 100644
--- a/web/app/views/clients/_home.html.slim
+++ b/web/app/views/clients/_home.html.slim
@@ -1,4 +1,8 @@
-.screen layout="screen" layout-id="home"
+.screen layout="screen" layout-id="home"
+ -if Rails.configuration.show_jamblaster_notice
+ #jamblaster-notice
+ a href='https://www.youtube.com/watch?v=gAJAIHMyois' rel="external"
+ span Check out the amazing new JamBlaster, and learn how it can improve your sessions!
/ Layout is different if jam_tracks tile available:
-jamtracks=Rails.configuration.jam_tracks_available
-if (jamtracks)
@@ -19,7 +23,7 @@
h2 find session
.homebox-info
/! 1 session invitation, 19 public sessions active
- .homecard.feed layout-grid-columns="4" layout-grid-position="8,0" layout-grid-rows="1" layout-link="feed"
+ .homecard.feed layout-grid-columns="4" layout-grid-position="8,0" layout-grid-rows="1" layout-link="feed"
h2 feed
.homebox-info
/! 4 friends online, 2 currently in sessions
diff --git a/web/app/views/clients/_site_validator.html.slim b/web/app/views/clients/_site_validator.html.slim
new file mode 100644
index 000000000..d66dcf917
--- /dev/null
+++ b/web/app/views/clients/_site_validator.html.slim
@@ -0,0 +1,6 @@
+div class="site_validator" id="#{site_type}_validator"
+ span class="validate-checkmark"
+ span class="spinner-small upload-spinner"
+ input type='text' id="validate_input_#{site_type}" maxlength="2000"
+ br
+ div class="error"
diff --git a/web/app/views/clients/_website_validator.html.slim b/web/app/views/clients/_website_validator.html.slim
deleted file mode 100644
index 0fa8ef718..000000000
--- a/web/app/views/clients/_website_validator.html.slim
+++ /dev/null
@@ -1,7 +0,0 @@
-div class="website_validator" id="#{siteid}_url"
- span class="validate-checkmark"
- span class="spinner-small upload-spinner"
- input type='text' id="url_input_#{siteid}" maxlength="2000"
- br
- div class="error"
-
diff --git a/web/app/views/landings/watch_overview_1.html.slim b/web/app/views/landings/watch_overview_1.html.slim
index 6895a6028..34f552ae7 100644
--- a/web/app/views/landings/watch_overview_1.html.slim
+++ b/web/app/views/landings/watch_overview_1.html.slim
@@ -7,11 +7,20 @@
iframe src="//www.youtube.com/embed/ylYcvTY9CVo" frameborder="0" allowfullscreen
.cta-container
h2 It's FREE! Ready to Go?
- = link_to image_tag("web/cta_button.png", :alt => "Sign up now for your free account!"), signup_path, class: "signup", id: "signup"
+ = link_to image_tag("web/cta_button.png", :alt => "Sign up now for your free account!"), signup_path, class: "signup", id: "signup", rel: "external"
.column
- = render :partial => "users/buzz", locals: {header: 'From Our Community'}
- .more-container
- h2 Need to Know More?
- = link_to 'Watch 6 Bands Play Using JamKazam', landing_wo_path(p: 2), class: 'landing_wb'
+ h1
+ | Learn About the Revolutionary New
+ b JamBlaster
+ .video-wrapper
+ .video-container
+ iframe src="//www.youtube.com/embed/gAJAIHMyois" frameborder="0" allowfullscreen
+ .cta-container
+ h2 More Resources:
+ a href="https://www.youtube.com/watch?v=_7qj5RXyHCo" rel="external"
+ | See kudos and endorsements from JamKazam users
+ a href="https://www.kickstarter.com/projects/jamkazam/jamblaster-play-music-in-real-time-with-others-from-home" rel="external"
+ | Visit the JamBlaster page on KickStarter
+
br clear="all"
\ No newline at end of file
diff --git a/web/app/views/spikes/site_validate.html.slim b/web/app/views/spikes/site_validate.html.slim
index cd8a57ce5..ccd9d8749 100644
--- a/web/app/views/spikes/site_validate.html.slim
+++ b/web/app/views/spikes/site_validate.html.slim
@@ -1,14 +1,19 @@
-= javascript_include_tag "website_validator"
+= javascript_include_tag "site_validator"
div style="width:50%"
- = render "clients/website_validator", siteid: 'foobar'
-= stylesheet_link_tag "client/website_validator"
+ = render "clients/site_validator", site_type: params[:site_type] || 'url'
+= stylesheet_link_tag "client/site_validator"
+
+= select_tag "site_type", options_for_select(Utils::SITE_TYPES, params[:site_type] || 'url')
javascript:
var initialized = false;
$(document).on('JAMKAZAM_READY', function(e, data) {
setTimeout(function() {
- window.website_validator = new JK.WebsiteValidator($(".website_validator#foobar_url"))
- website_validator.init()
- $('#url_input_foobar').val('http://www.jamkazam.com')
+ window.site_validator = new JK.SiteValidator('#{params[:site_type] || 'url'}');
+ site_validator.init();
+ $('#validate_input_'+'#{params[:site_type] || 'url'}').val('jonathankolyer');
}, 1)
- })
+ });
+ $('#site_type').change(function(){
+ location.href = 'site_validate?site_type='+$(this).val();
+ });
diff --git a/web/app/views/users/welcome.html.haml b/web/app/views/users/welcome.html.haml
index d41505f1c..cf159cbed 100644
--- a/web/app/views/users/welcome.html.haml
+++ b/web/app/views/users/welcome.html.haml
@@ -9,11 +9,14 @@
= link_to "Already have an account?", signin_path, class: "signin", id: "signin"
- content_for :after_black_bar do
- = render :partial => 'users/follow_links'
- - if @jamfest_2014
- .jamfest{style: 'top:-70px;position:relative'}
- %a{ href: event_path(@jamfest_2014.slug), style: 'font-size:20px;margin-top:11px' }
- Listen to the terrific band performances from Virtual Jam Fest 2014!
+ //= render :partial => 'users/follow_links'
+ - if Rails.application.config.show_jamblaster_kickstarter_link
+ .jamfest
+ %a{ href: 'https://www.kickstarter.com/projects/jamkazam/jamblaster-play-music-in-real-time-with-others-from-home', style: 'font-size:20px;margin-top:11px' }
+ = "Check out our new "
+ %span.jamblaster JamBlaster
+ = " on "
+ %span Kickstarter, the fastest way to play!
%div{style: "padding-top:20px;"}
.right
= render :partial => "buzz"
diff --git a/web/config/application.rb b/web/config/application.rb
index a396cb57f..7ffd31ed7 100644
--- a/web/config/application.rb
+++ b/web/config/application.rb
@@ -309,5 +309,8 @@ if defined?(Bundler)
config.influxdb_hosts = ["localhost"]
config.influxdb_port = 8086
config.influxdb_ignored_environments = ENV["INFLUXDB_ENABLED"] == '1' ? ['test', 'cucumber'] : ['test', 'cucumber', 'development']
+
+ config.show_jamblaster_notice = true
+ config.show_jamblaster_kickstarter_link = true
end
end
diff --git a/web/config/routes.rb b/web/config/routes.rb
index e22c43b2a..0835f7001 100644
--- a/web/config/routes.rb
+++ b/web/config/routes.rb
@@ -93,6 +93,7 @@ SampleApp::Application.routes.draw do
match '/websocket', to: 'spikes#websocket'
match '/test_subscription', to: 'spikes#subscription'
match '/site_validate', to: 'spikes#site_validate'
+ match '/username_validate', to: 'spikes#username_validate'
# junk pages
match '/help', to: 'static_pages#help'
diff --git a/web/lib/utils.rb b/web/lib/utils.rb
new file mode 100644
index 000000000..941294be4
--- /dev/null
+++ b/web/lib/utils.rb
@@ -0,0 +1,37 @@
+class Utils
+
+ USERNAME_SITES = %W{youtube facebook soundcloud bandcamp fandalism twitter reverbnation}
+ SITE_TYPES = ['url'].concat(USERNAME_SITES)
+
+ def self.username_url(username, site)
+ case site
+ when 'youtube'
+ "https://www.youtube.com/c/#{username}"
+ when 'facebook' #
+ "https://www.facebook.com/#{username}"
+ when 'soundcloud' #
+ "https://soundcloud.com/#{username}"
+ when 'bandcamp' #
+ "http://#{username}.bandcamp.com"
+ when 'fandalism'
+ "http://fandalism.com/#{username}"
+ when 'twitter'
+ "https://twitter.com/#{username}"
+ when 'reverbnation'
+ "http://www.reverbnation.com/#{username}"
+ else
+ nil
+ end
+ end
+
+ def self.site_validator(url)
+ result = `curl --output /dev/null --silent --head --fail --show-error '#{url}' 2>&1`.chomp
+ if $?.success?
+ return nil
+ else
+ result =~ /curl: \(\d+\) (.*)/
+ return "#{$1} (#{url})"
+ end
+ end
+
+end
diff --git a/web/spec/features/alt_landing_spec.rb b/web/spec/features/alt_landing_spec.rb
index f8663886c..56d50c4ba 100644
--- a/web/spec/features/alt_landing_spec.rb
+++ b/web/spec/features/alt_landing_spec.rb
@@ -11,21 +11,18 @@ describe "Alternate Landing Pages", :js => true, :type => :feature, :capybara_fe
find('h1', text: 'See How JamKazam Works')
find('a.landing_wb', text: 'Watch a Video to See How to Get Started').trigger(:click)
find('h1', text: 'See How to Get Started')
- find('div.fb-like')
- find('a.twitter-follow-button')
- find('.g-follow-btn iframe')
+ #find('div.fb-like')
+ #find('a.twitter-follow-button')
+ #find('.g-follow-btn iframe')
end
it "landing-page watch-overview" do
visit landing_wo_path
find('h1', text: 'Watch Video to See How JamKazam Works')
- find('a.landing_wb', text: 'Watch 6 Bands Play Using JamKazam').trigger(:click)
- find('h1', text: 'Watch 6 Bands Play Together from Different Locations')
- find('a.landing_wb', text: 'See How to Get Started Using JamKazam').trigger(:click)
- find('h1', text: 'See How to Get Started Using JamKazam')
- find('div.fb-like')
- find('a.twitter-follow-button')
- find('.g-follow-btn iframe')
+ find('h1', text: 'Learn About the Revolutionary New JamBlaster')
+ #find('div.fb-like')
+ #find('a.twitter-follow-button')
+ #find('.g-follow-btn iframe')
end
it "landing-page-tight watch-bands" do
@@ -33,9 +30,9 @@ describe "Alternate Landing Pages", :js => true, :type => :feature, :capybara_fe
find('h1', text: 'Watch 6 Bands Play Together from Different Locations')
find('h2', text: "It's FREE! Ready to Go?")
find('h2', text: 'Not a Good Time to Sign Up?')
- find('div.fb-like')
- find('a.twitter-follow-button')
- find('.g-follow-btn iframe')
+ #find('div.fb-like')
+ #find('a.twitter-follow-button')
+ #find('.g-follow-btn iframe')
end
it "landing-page-tight watch-overview" do
@@ -43,9 +40,9 @@ describe "Alternate Landing Pages", :js => true, :type => :feature, :capybara_fe
find('h1', text: 'Watch Overview Video to See How JamKazam Works')
find('h2', text: "It's FREE! Ready to Go?")
find('h2', text: 'Not a Good Time to Sign Up?')
- find('div.fb-like')
- find('a.twitter-follow-button')
- find('.g-follow-btn iframe')
+ #find('div.fb-like')
+ #find('a.twitter-follow-button')
+ #find('.g-follow-btn iframe')
end
diff --git a/web/spec/javascripts/fixtures/site_validator_spec.html.slim b/web/spec/javascripts/fixtures/site_validator_spec.html.slim
new file mode 100644
index 000000000..4ca796476
--- /dev/null
+++ b/web/spec/javascripts/fixtures/site_validator_spec.html.slim
@@ -0,0 +1,4 @@
+= stylesheet_link_tag "client/url_validator"
+= javascript_include_tag "url_validator"
+div style="width:50%"
+ = render "clients/url_validator", siteid: 'teaspoon'
diff --git a/web/spec/javascripts/fixtures/website_validator_spec.html.slim b/web/spec/javascripts/fixtures/website_validator_spec.html.slim
deleted file mode 100644
index e9d0d8d2e..000000000
--- a/web/spec/javascripts/fixtures/website_validator_spec.html.slim
+++ /dev/null
@@ -1,4 +0,0 @@
-= stylesheet_link_tag "client/website_validator"
-= javascript_include_tag "website_validator"
-div style="width:50%"
- = render "clients/website_validator", siteid: 'teaspoon'
diff --git a/web/spec/javascripts/site_validator_spec.js.coffee b/web/spec/javascripts/site_validator_spec.js.coffee
new file mode 100644
index 000000000..dc35b8aaf
--- /dev/null
+++ b/web/spec/javascripts/site_validator_spec.js.coffee
@@ -0,0 +1,19 @@
+describe "UrlValidator", ->
+
+ beforeEach ->
+ this.fixtures = fixture.load("url_validator_spec.html", append=false)
+ this.server = sinon.fakeServer.create();
+ window.jamClient = sinon.stub()
+ this.url_validator = new JK.UrlValidator($(".url_validator#teaspoon_url"))
+ this.url_validator.init()
+ $('body').append(this.url_validator.input_div)
+ this.url_validator.url_input.val('http://www.jamkazam.com')
+ window.gon = {}
+ window.gon.isNativeClient = true
+
+ afterEach ->
+ this.server.restore();
+
+ it "displays validator widget", ->
+ # this.url_validator.url_input.focus()
+ # expect(this.url_validator.checkmark).toBeVisible()
diff --git a/web/spec/javascripts/stylesheets/site_validator.css.scss b/web/spec/javascripts/stylesheets/site_validator.css.scss
new file mode 100644
index 000000000..1b6f223bb
--- /dev/null
+++ b/web/spec/javascripts/stylesheets/site_validator.css.scss
@@ -0,0 +1 @@
+//= require client/url_validator
diff --git a/web/spec/javascripts/website_validator_spec.js.coffee b/web/spec/javascripts/website_validator_spec.js.coffee
deleted file mode 100644
index d3661ea6c..000000000
--- a/web/spec/javascripts/website_validator_spec.js.coffee
+++ /dev/null
@@ -1,19 +0,0 @@
-describe "WebsiteValidator", ->
-
- beforeEach ->
- this.fixtures = fixture.load("website_validator_spec.html", append=false)
- this.server = sinon.fakeServer.create();
- window.jamClient = sinon.stub()
- this.website_validator = new JK.WebsiteValidator($(".website_validator#teaspoon_url"))
- this.website_validator.init()
- $('body').append(this.website_validator.input_div)
- this.website_validator.url_input.val('http://www.jamkazam.com')
- window.gon = {}
- window.gon.isNativeClient = true
-
- afterEach ->
- this.server.restore();
-
- it "displays validator widget", ->
- # this.website_validator.url_input.focus()
- # expect(this.website_validator.checkmark).toBeVisible()
diff --git a/websocket-gateway/Gemfile b/websocket-gateway/Gemfile
index f4d36e2d1..3e32bbc4c 100644
--- a/websocket-gateway/Gemfile
+++ b/websocket-gateway/Gemfile
@@ -36,7 +36,7 @@ gem 'carrierwave'
gem 'fog'
gem 'devise', '3.3.0' # 3.4.0 causes uninitialized constant ActionController::Metal (NameError)
gem 'postgres-copy'
-gem 'aws-sdk' #, '1.29.1'
+gem 'aws-sdk', '~> 1'
gem 'bugsnag'
gem 'postgres_ext'
gem 'resque'