VRFS-986 recording landing page work
This commit is contained in:
parent
59c1b02e1c
commit
59f6e10e55
|
|
@ -1,4 +1,5 @@
|
|||
.idea
|
||||
*~
|
||||
*.swp
|
||||
HTML
|
||||
HTML
|
||||
.DS_Store
|
||||
|
|
|
|||
|
|
@ -88,4 +88,4 @@ icecast.sql
|
|||
home_page_promos.sql
|
||||
mix_job_watch.sql
|
||||
music_session_constraints.sql
|
||||
mixes_drop_manifest_add_retry.sql
|
||||
ms_recording_anonymous_likes.sql
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
alter table music_sessions_comments
|
||||
add column ip_address inet;
|
||||
|
||||
alter table music_sessions_likers
|
||||
add column ip_address inet;
|
||||
|
||||
alter table music_sessions_likers
|
||||
alter column liker_id drop not null;
|
||||
|
||||
alter table recordings_comments
|
||||
add column ip_address inet;
|
||||
|
||||
alter table recordings_likers
|
||||
add column ip_address inet;
|
||||
|
||||
alter table recordings_likers
|
||||
alter column liker_id drop not null;
|
||||
|
||||
alter table recordings_plays
|
||||
add column ip_address inet;
|
||||
|
||||
alter table recordings_plays
|
||||
alter column player_id drop not null;
|
||||
|
|
@ -5,6 +5,8 @@ module JamRuby
|
|||
|
||||
self.primary_key = 'id'
|
||||
|
||||
default_scope order('created_at DESC')
|
||||
|
||||
belongs_to :music_session, :class_name => "JamRuby::MusicSessionHistory", :foreign_key => "music_session_id"
|
||||
belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "creator_id"
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ module JamRuby
|
|||
|
||||
self.primary_key = 'id'
|
||||
|
||||
default_scope order('created_at DESC')
|
||||
|
||||
belongs_to :recording, :class_name => "JamRuby::Recording", :foreign_key => "recording_id"
|
||||
belongs_to :user, :class_name => "JamRuby::User", :foreign_key => "creator_id"
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -71,6 +71,7 @@
|
|||
// initially show avatar
|
||||
function showAvatar() {
|
||||
var photoUrl = context.JK.resolveAvatarUrl(userMe.photo_url);
|
||||
logger.debug("photoUrl=" + photoUrl);
|
||||
$('#header-avatar').attr('src', photoUrl);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
(function(context,$) {
|
||||
|
||||
"use strict";
|
||||
|
||||
context.JK = context.JK || {};
|
||||
|
||||
|
||||
})(window, jQuery)
|
||||
|
|
@ -15,4 +15,6 @@
|
|||
//= require landing/init
|
||||
//= require landing/signup
|
||||
//= require web/downloads
|
||||
//= require web/congratulations
|
||||
//= require web/congratulations
|
||||
//= require web/recordings
|
||||
//= require web/sessions
|
||||
|
|
@ -7,12 +7,18 @@
|
|||
}
|
||||
|
||||
#profile {
|
||||
width:auto;
|
||||
float:right;
|
||||
height:64px;
|
||||
float: right;
|
||||
height: 54px;
|
||||
margin-top: 30px;
|
||||
text-align: right;
|
||||
|
||||
ul {
|
||||
margin-bottom:0;
|
||||
}
|
||||
|
||||
.signin {
|
||||
position:relative;
|
||||
margin-top:40px;
|
||||
text-decoration: underline;
|
||||
cursor: auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -35,7 +41,7 @@
|
|||
border-radius:26px;
|
||||
}
|
||||
|
||||
#user {
|
||||
.user {
|
||||
margin:18px 0px 0px 10px;
|
||||
font-size:20px;
|
||||
font-weight:200;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,10 @@ html {
|
|||
height:100%;
|
||||
}
|
||||
|
||||
p, div {
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
body.web {
|
||||
background-repeat: repeat-x;
|
||||
margin:0 !important;
|
||||
|
|
@ -10,165 +14,240 @@ body.web {
|
|||
overflow: visible !important;
|
||||
width:auto !important;
|
||||
|
||||
#web-container {
|
||||
padding:3% 0;
|
||||
.logo-home {
|
||||
width: 298px;
|
||||
margin-top: 30px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.landing-tag {
|
||||
display:inline-block;
|
||||
margin-left:70px;
|
||||
width:400px;
|
||||
}
|
||||
|
||||
.landing-tag h1 {
|
||||
color:#ed3718;
|
||||
font-size:26px;
|
||||
font-weight:300;
|
||||
}
|
||||
|
||||
.landing-content {
|
||||
background-color:black;
|
||||
width:100%;
|
||||
padding-bottom:15px;
|
||||
/*position:relative;
|
||||
width:100%;
|
||||
min-height: 366px;
|
||||
background-color:black;
|
||||
padding-top:20px;*/
|
||||
}
|
||||
|
||||
div.wrapper {
|
||||
white-space: nowrap;
|
||||
|
||||
p, ul {
|
||||
color:#999;
|
||||
line-height:160%;
|
||||
margin-bottom:20px;
|
||||
width:90%;
|
||||
white-space:normal;
|
||||
font-size:16px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-weight:300;
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
border-bottom: medium none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.black-bar{
|
||||
position:relative;
|
||||
width:100%;
|
||||
min-height: 366px;
|
||||
background-color:black;
|
||||
padding-top:20px;
|
||||
}
|
||||
|
||||
.black-bar-inner {
|
||||
width:1100px;
|
||||
margin: 0 auto;
|
||||
|
||||
position:relative;
|
||||
|
||||
// all custom CSS for the register page goes here
|
||||
.register-page {
|
||||
|
||||
.register-container {
|
||||
padding:10px;
|
||||
}
|
||||
|
||||
input.register-musician {
|
||||
|
||||
}
|
||||
|
||||
.actions {
|
||||
margin-top:20px;
|
||||
|
||||
a.button-grey {
|
||||
line-height:15px; // WHY is this not universal
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.error {
|
||||
padding: 5px 12px 5px 5px;
|
||||
margin-left:-5px;
|
||||
margin-right:-12px;
|
||||
}
|
||||
|
||||
input.register-fan {
|
||||
margin-left:20px;
|
||||
}
|
||||
|
||||
input[type=text], input[type=password] {
|
||||
margin-top:1px;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
select {
|
||||
width:100%;
|
||||
}
|
||||
|
||||
|
||||
.right-side {
|
||||
margin-left:25px;
|
||||
}
|
||||
|
||||
|
||||
.register-left {
|
||||
|
||||
select {
|
||||
width:104%;
|
||||
}
|
||||
|
||||
div.field {
|
||||
margin-top:31px;
|
||||
width:43%;
|
||||
float:left;
|
||||
}
|
||||
}
|
||||
|
||||
.register-right {
|
||||
|
||||
margin-top:40px;
|
||||
|
||||
table {
|
||||
border-collapse:separate;
|
||||
border-spacing:6px;
|
||||
}
|
||||
|
||||
label.instruments {
|
||||
margin-bottom:2px;
|
||||
}
|
||||
|
||||
div.field {
|
||||
margin-top:15px;
|
||||
}
|
||||
|
||||
a.tos {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.ftue-instrumentlist {
|
||||
width:100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.after-black-bar {
|
||||
position:relative;
|
||||
background-color:#262626;
|
||||
width:1100px;
|
||||
margin:0 auto;
|
||||
|
||||
.after-black-bar-inner {
|
||||
background-color:#262626;
|
||||
position:absolute;
|
||||
left:0;
|
||||
right:0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.header {
|
||||
width:1100px;
|
||||
margin:0 auto;
|
||||
|
||||
.logo-home {
|
||||
width: 298px;
|
||||
margin-top: 30px;
|
||||
display: inline-block;
|
||||
float:left;
|
||||
}
|
||||
white-space:nowrap;
|
||||
position:relative;
|
||||
}
|
||||
|
||||
#profile {
|
||||
.landing-sidebar {
|
||||
width:350px;
|
||||
background:#353535;
|
||||
border:solid 1px #ed3718;
|
||||
position:absolute;
|
||||
top:-80px;
|
||||
right:0;
|
||||
top:30px;
|
||||
right:0px;
|
||||
padding:25px;
|
||||
padding-top:0px;
|
||||
line-height:130%;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-bottom:0;
|
||||
.landing-sidebar h2 {
|
||||
font-size:18px !important;
|
||||
line-height:normal;
|
||||
color:#fff;
|
||||
}
|
||||
|
||||
.landing-band {
|
||||
float:left;
|
||||
text-align:center;
|
||||
width: 115px;
|
||||
margin-right:25px;
|
||||
font-size:17px;
|
||||
color:#fff;
|
||||
}
|
||||
|
||||
.landing-avatar {
|
||||
padding:2px;
|
||||
width:110px;
|
||||
height:110px;
|
||||
background-color:#ed3618;
|
||||
-webkit-border-radius:57px;
|
||||
-moz-border-radius:57px;
|
||||
border-radius:57px;
|
||||
margin-bottom:10px;
|
||||
}
|
||||
|
||||
.landing-avatar img {
|
||||
width:110px;
|
||||
height:110px;
|
||||
-webkit-border-radius:55px;
|
||||
-moz-border-radius:55px;
|
||||
border-radius:55px;
|
||||
}
|
||||
|
||||
.landing-details {
|
||||
float:left;
|
||||
width:515px;
|
||||
font-size:14px;
|
||||
font-weight:400;
|
||||
color:#666;
|
||||
}
|
||||
|
||||
.landing-details a {
|
||||
text-decoration:none;
|
||||
color:#ccc;
|
||||
}
|
||||
|
||||
.landing-details a:hover {
|
||||
color:#fff;
|
||||
}
|
||||
|
||||
.landing-content h2 {
|
||||
font-size:24px;
|
||||
color:#ccc;
|
||||
font-weight:200;
|
||||
}
|
||||
|
||||
.landing-comments {
|
||||
margin-left:140px;
|
||||
width:515px;
|
||||
}
|
||||
|
||||
.landing-comments a {
|
||||
text-decoration:none;
|
||||
font-weight:bold;
|
||||
color:#ED3618;
|
||||
}
|
||||
|
||||
.landing-comment-scroller {
|
||||
height:470px;
|
||||
overflow:auto;
|
||||
}
|
||||
|
||||
.landing .cta {
|
||||
margin-top:25px;
|
||||
}
|
||||
|
||||
.cta {
|
||||
margin-top:40px;
|
||||
text-align:center;
|
||||
width:345px;
|
||||
font-size:12px;
|
||||
}
|
||||
|
||||
white-space: nowrap;
|
||||
|
||||
p, ul {
|
||||
color:#999;
|
||||
line-height:160%;
|
||||
margin-bottom:20px;
|
||||
width:90%;
|
||||
white-space:normal;
|
||||
font-size:16px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-weight:300;
|
||||
}
|
||||
|
||||
.content-wrapper {
|
||||
border-bottom: medium none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
// all custom CSS for the register page goes here
|
||||
.register-page {
|
||||
|
||||
.register-container {
|
||||
padding:10px;
|
||||
}
|
||||
|
||||
input.register-musician {
|
||||
|
||||
}
|
||||
|
||||
.actions {
|
||||
margin-top:20px;
|
||||
|
||||
a.button-grey {
|
||||
line-height:15px; // WHY is this not universal
|
||||
}
|
||||
}
|
||||
|
||||
.error {
|
||||
padding: 5px 12px 5px 5px;
|
||||
margin-left:-5px;
|
||||
margin-right:-12px;
|
||||
}
|
||||
|
||||
input.register-fan {
|
||||
margin-left:20px;
|
||||
}
|
||||
|
||||
input[type=text], input[type=password] {
|
||||
margin-top:1px;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
select {
|
||||
width:100%;
|
||||
}
|
||||
|
||||
|
||||
.right-side {
|
||||
margin-left:25px;
|
||||
}
|
||||
|
||||
|
||||
.register-left {
|
||||
|
||||
select {
|
||||
width:104%;
|
||||
}
|
||||
|
||||
div.field {
|
||||
margin-top:31px;
|
||||
width:43%;
|
||||
float:left;
|
||||
}
|
||||
}
|
||||
|
||||
.register-right {
|
||||
|
||||
margin-top:40px;
|
||||
|
||||
table {
|
||||
border-collapse:separate;
|
||||
border-spacing:6px;
|
||||
}
|
||||
|
||||
label.instruments {
|
||||
margin-bottom:2px;
|
||||
}
|
||||
|
||||
div.field {
|
||||
margin-top:15px;
|
||||
}
|
||||
|
||||
a.tos {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.ftue-instrumentlist {
|
||||
width:100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -215,11 +294,6 @@ body.web {
|
|||
}
|
||||
}
|
||||
|
||||
#landing-container {
|
||||
padding: 3% 0;
|
||||
position:relative;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.signin-overlay {
|
||||
position:relative;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,56 @@
|
|||
.feed-entry .recording-controls, .feed-entry .session-controls, .landing-details .recording-controls {
|
||||
margin-top:0px;
|
||||
margin-bottom:5px;
|
||||
padding:8px 5px 8px 10px;
|
||||
width:98%;
|
||||
}
|
||||
|
||||
.recording-position {
|
||||
display:inline-block;
|
||||
width:80%;
|
||||
margin-left:-20px;
|
||||
font-family:Arial, Helvetica, sans-serif;
|
||||
font-size:11px;
|
||||
height:18px;
|
||||
vertical-align:top;
|
||||
}
|
||||
|
||||
.landing-details .recording-position {
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.recording-time {
|
||||
display:inline-block;
|
||||
height:16px;
|
||||
vertical-align:top;
|
||||
margin-top:4px;
|
||||
}
|
||||
|
||||
.landing-details .recording-current {
|
||||
top:8px;
|
||||
}
|
||||
|
||||
.recording-playback {
|
||||
display:inline-block;
|
||||
background-image:url(../images/content/bkg_playcontrols.png);
|
||||
background-repeat:repeat-x;
|
||||
position:relative;
|
||||
width:70%;
|
||||
height:16px;
|
||||
margin-top:2px;
|
||||
}
|
||||
|
||||
.recording-slider {
|
||||
position:absolute;
|
||||
left:25%;
|
||||
top:0px;
|
||||
}
|
||||
|
||||
.recording-current {
|
||||
font-family:Arial, Helvetica, sans-serif;
|
||||
display:inline-block;
|
||||
font-size:18px;
|
||||
position:absolute;
|
||||
top:3px;
|
||||
right:4px;
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
|
||||
|
|
@ -9,4 +9,6 @@
|
|||
*= require client/invitationDialog
|
||||
*= require web/main
|
||||
*= require web/footer
|
||||
*= require web/recordings
|
||||
#= require web/sessions
|
||||
*/
|
||||
|
|
@ -3,7 +3,7 @@ require 'aws-sdk'
|
|||
class ApiMusicSessionsController < ApiController
|
||||
|
||||
# have to be signed in currently to see this screen
|
||||
before_filter :api_signed_in_user
|
||||
before_filter :api_signed_in_user, :except => [ :add_like ]
|
||||
before_filter :lookup_session, only: [:show, :update, :delete, :claimed_recording_start, :claimed_recording_stop]
|
||||
skip_before_filter :api_signed_in_user, only: [:perf_upload]
|
||||
|
||||
|
|
@ -251,6 +251,7 @@ class ApiMusicSessionsController < ApiController
|
|||
comment.music_session_id = params[:id]
|
||||
comment.creator_id = params[:user_id]
|
||||
comment.comment = params[:comment]
|
||||
comment.ip_address = request.remote_ip
|
||||
comment.save
|
||||
|
||||
if comment.errors.any?
|
||||
|
|
@ -272,6 +273,7 @@ class ApiMusicSessionsController < ApiController
|
|||
liker = MusicSessionLiker.new
|
||||
liker.music_session_id = params[:id]
|
||||
liker.liker_id = params[:user_id]
|
||||
liker.ip_address = request.remote_ip
|
||||
liker.save
|
||||
|
||||
if liker.errors.any?
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
class ApiRecordingsController < ApiController
|
||||
|
||||
before_filter :api_signed_in_user
|
||||
before_filter :api_signed_in_user, :except => [ :add_like, :add_play ]
|
||||
before_filter :look_up_recording, :only => [ :show, :stop, :claim, :discard, :keep ]
|
||||
before_filter :parse_filename, :only => [ :download, :upload_next_part, :upload_sign, :upload_part_complete, :upload_complete ]
|
||||
|
||||
|
|
@ -97,6 +97,7 @@ class ApiRecordingsController < ApiController
|
|||
comment.recording_id = params[:id]
|
||||
comment.creator_id = params[:user_id]
|
||||
comment.comment = params[:comment]
|
||||
comment.ip_address = request.remote_ip
|
||||
comment.save
|
||||
|
||||
if comment.errors.any?
|
||||
|
|
@ -118,6 +119,7 @@ class ApiRecordingsController < ApiController
|
|||
liker = RecordingLiker.new
|
||||
liker.recording_id = params[:id]
|
||||
liker.liker_id = params[:user_id]
|
||||
liker.ip_address = request.remote_ip
|
||||
liker.save
|
||||
|
||||
if liker.errors.any?
|
||||
|
|
@ -139,6 +141,7 @@ class ApiRecordingsController < ApiController
|
|||
play = RecordingPlay.new
|
||||
play.recording_id = params[:id]
|
||||
play.player_id = params[:user_id]
|
||||
play.ip_address = request.remote_ip
|
||||
play.save
|
||||
|
||||
if play.errors.any?
|
||||
|
|
@ -209,10 +212,7 @@ class ApiRecordingsController < ApiController
|
|||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
private
|
||||
|
||||
def parse_filename
|
||||
@recorded_track = RecordedTrack.find_by_recording_id_and_client_track_id!(params[:id], params[:track_id])
|
||||
raise PermissionError, ValidationMessages::PERMISSION_VALIDATION_ERROR unless @recorded_track.recording.has_access?(current_user)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
class RecordingsController < ApplicationController
|
||||
|
||||
respond_to :html
|
||||
|
||||
def show
|
||||
@claimed_recording = ClaimedRecording.find(params[:id])
|
||||
render :layout => "web"
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
# I'm not sure this is right at all. The idea is to bring in all the stuff you would need to play the tracks.
|
||||
# I don't think I need to include URLs since that's handled by syncing. This is jsut to make the metadata
|
||||
# I don't think I need to include URLs since that's handled by syncing. This is just to make the metadata
|
||||
# depictable.
|
||||
|
||||
object @claimed_recording
|
||||
|
||||
attributes :id, :name, :description, :is_public, :is_downloadable
|
||||
attributes :id, :name, :description, :is_public, :is_downloadable, :genre_id
|
||||
|
||||
child(:recording => :recording) {
|
||||
attributes :id, :created_at, :duration
|
||||
attributes :id, :created_at, :duration, :comment_count, :like_count, :play_count
|
||||
child(:band => :band) {
|
||||
attributes :id, :name
|
||||
}
|
||||
|
|
@ -19,9 +19,20 @@ child(:recording => :recording) {
|
|||
child(:recorded_tracks => :recorded_tracks) {
|
||||
attributes :id, :fully_uploaded, :url, :client_track_id, :client_id, :instrument_id
|
||||
|
||||
child(:user => :user) {
|
||||
attributes :id, :first_name, :last_name, :city, :state, :country, :photo_url
|
||||
}
|
||||
child(:user => :user) {
|
||||
attributes :id, :first_name, :last_name, :city, :state, :country, :photo_url
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
child(:band => :band) {
|
||||
attributes :id, :name, :photo_url
|
||||
}
|
||||
|
||||
child(:comments => :comments) {
|
||||
attributes :comment, :created_at
|
||||
|
||||
child(:user => :creator) {
|
||||
attributes :id, :first_name, :last_name, :photo_url
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -19,30 +19,33 @@
|
|||
<%= javascript_include_tag "web/web" %>
|
||||
<div class="dialog-overlay op70" style="display:none; width:100%; height:100%; z-index:99;"></div>
|
||||
|
||||
<div id="web-container">
|
||||
|
||||
<div class="wrapper">
|
||||
|
||||
<div class="header">
|
||||
<div class="logo-home">
|
||||
<%= link_to root_path do %>
|
||||
<%= image_tag("web/logo_home.png", :alt => "JamKazam logo", :size => "298x54") %>
|
||||
<% end %>
|
||||
</div>
|
||||
<div class="logo-home">
|
||||
<%= link_to root_path do %>
|
||||
<%= image_tag("web/logo_home.png", :alt => "JamKazam logo", :size => "298x54") %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<br clear="all">
|
||||
|
||||
<div class="black-bar">
|
||||
<div class="black-bar-inner">
|
||||
<%= render "users/user_dropdown" %>
|
||||
<%= yield %>
|
||||
</div>
|
||||
<div class="landing-tag">
|
||||
<h1>Play music together over the Internet as if in the same room</h1>
|
||||
</div>
|
||||
|
||||
<div class="after-black-bar">
|
||||
<%= yield(:after_black_bar) %>
|
||||
<%= render "users/user_dropdown" %>
|
||||
|
||||
<br clear="all" /><br /><br />
|
||||
</div>
|
||||
|
||||
<div class="landing-content">
|
||||
<div class="wrapper">
|
||||
<br /><br />
|
||||
<%= yield %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="wrapper">
|
||||
<%= yield(:after_black_bar) %>
|
||||
</div>
|
||||
|
||||
<div id="footer-container">
|
||||
<%= render "clients/footer" %>
|
||||
|
|
@ -75,8 +78,6 @@
|
|||
})
|
||||
</script>
|
||||
|
||||
</div>
|
||||
|
||||
<%= render "shared/ga" %>
|
||||
<!-- version info: <%= version %> -->
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,211 @@
|
|||
<% provide(:title, "#{@claimed_recording.name}") %>
|
||||
|
||||
<div class="landing-band">
|
||||
<div class="landing-avatar">
|
||||
<img src="images/content/avatar_band4.jpg" alt=""/>
|
||||
</div>
|
||||
Raven & The Blackbirds
|
||||
</div>
|
||||
|
||||
<div class="landing-details">
|
||||
<div class="left f20 orange"><strong>RECORDING</strong></div>
|
||||
<div class="right f14 grey">Yesterday, 11:10 am</div>
|
||||
<br clear="all" /><br />
|
||||
<h2 class="left">You Hurt Me Bad</h2>
|
||||
<div class="right"><a href="#"><img src="images/content/icon_like.png" width="12" height="12" alt=""/> LIKE</a> <a href="#"><img src="images/content/icon_share.png" width="13" height="15" alt=""/> SHARE</a></div>
|
||||
<br clear="all" />
|
||||
A sweet and sexy ballad about broken hearts and bad girls.<br />
|
||||
<br />
|
||||
|
||||
<!-- timeline and controls -->
|
||||
<div class="w100">
|
||||
<!-- recording play controls -->
|
||||
<div class="recording-controls">
|
||||
|
||||
<!-- play button -->
|
||||
<a class="left" href="#"><img src="images/content/icon_playbutton.png" width="20" height="20" /></a>
|
||||
|
||||
<!-- playback position -->
|
||||
<div class="recording-position">
|
||||
|
||||
<!-- start time -->
|
||||
<div class="recording-time">0:00</div>
|
||||
|
||||
<!-- playback background & slider -->
|
||||
<div class="recording-playback">
|
||||
<div class="recording-slider"><img src="images/content/slider_playcontrols.png" width="5" height="16" /></div>
|
||||
</div>
|
||||
|
||||
<!-- end time -->
|
||||
<div class="recording-time">4:59</div>
|
||||
</div>
|
||||
<!-- end playback position -->
|
||||
|
||||
<!-- current playback time -->
|
||||
<div class="recording-current">
|
||||
1:23
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- end recording play controls -->
|
||||
|
||||
<!-- genre and social -->
|
||||
<div class="left white">Blues</div>
|
||||
<div class="right white">80 <img src="images/content/icon_arrow.png" width="7" height="12" align="absmiddle" /> 12 <img src="images/content/icon_comment.png" width="13" height="12" align="absmiddle" /> 35 <img src="images/content/icon_like.png" width="12" height="12" align="absmiddle" /></div>
|
||||
</div>
|
||||
<br clear="all" /><br />
|
||||
<table class="w100">
|
||||
<tr>
|
||||
<td><div class="avatar-small m0"><img src="images/shared/avatar_creepyeye.jpg" alt=""/></div></td>
|
||||
<td><div class="lightgrey f15 ml10">Jimmy Johnson</div></td>
|
||||
<td class="p10"><div class="ml10"><img src="images/shared/icon_guitar_256.png" width="32" alt=""/></div></td>
|
||||
<td width="5%"></td>
|
||||
<td><div class="avatar-small m0"><img src="images/shared/avatar_silverfox.jpg" alt=""/></div></td>
|
||||
<td><div class="lightgrey f15 ml10">Perry Jon Blazinsky</div></td>
|
||||
<td class="p10"><div class="ml10"><img src="images/shared/icon_keyboard_256.png" width="32" alt=""/></div></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><div class="avatar-small m0"><img src="images/shared/avatar_saltnpepper.jpg" alt=""/></div></td>
|
||||
<td><div class="lightgrey f15 ml10">Knox Pitzer</div></td>
|
||||
<td class="p10"><div class="ml10"><img src="images/shared/icon_vocals_256.png" width="32" alt=""/></div></td>
|
||||
<td width="5%"></td>
|
||||
<td><div class="avatar-small m0"><img src="images/content/avatar_generic.png" alt=""/></div></td>
|
||||
<td><div class="lightgrey f15 ml10">Coby Jones</div></td>
|
||||
<td class="p10"><div class="ml10"><img src="images/shared/icon_bass_256.png" width="32" alt=""/></div></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<br clear="all" />
|
||||
|
||||
|
||||
|
||||
<!-- sidebar -->
|
||||
<div class="landing-sidebar"><br />
|
||||
<h2>More by Raven & The Blackbirds:</h2><br />
|
||||
|
||||
<div class="grey f16"><em>Now:</em></div>
|
||||
<div class="f16"><span class="teal"><strong>SESSION:</strong></span> <a href="#" class="white">Live Session in Progress</a></div>
|
||||
<div class="f13 lightgrey">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus neque, id pulvinar odio lorem non turpis.</div>
|
||||
<br /><br />
|
||||
<div class="grey f16"><em>Yesterday:</em></div>
|
||||
<div class="f16"><span class="orange"><strong>RECORDING:</strong></span> <a href="#" class="white">You Hurt Me Bad</a></div>
|
||||
<div class="f13 lightgrey">Nullam sit amet enim. Suspendisse id velit vitae ligula volutpat condimentum. Aliquam erat volutpat. Sed quis velit. Nulla facilisi. </div>
|
||||
<br /><br />
|
||||
<div class="grey f16"><em>Dec. 18th:</em></div>
|
||||
<div class="f16"><span class="teal"><strong>SESSION:</strong></span> <span class="grey">Session Ended. Unavailable.</span></div>
|
||||
<div class="f13 lightgrey">Nulla libero. Vivamus pharetra posuere sapien. Nam consectetuer. Sed aliquam, nunc eget euismod ullamcorper, lectus nunc ullamcorper orci, fermentum bibendum enim nibh eget ipsum. </div>
|
||||
<br /><br />
|
||||
<div class="grey f16"><em>Dec. 12th:</em></div>
|
||||
<div class="f16"><span class="orange"><strong>RECORDING:</strong></span> <a href="#" class="white">Bustin' My Chops</a></div>
|
||||
<div class="f13 lightgrey">Donec porttitor ligula eu dolor. Maecenas vitae nulla consequat libero cursus venenatis. Nam magna enim, accumsan eu, blandit sed, blandit a, eros.</div>
|
||||
<br /><br />
|
||||
<div class="grey f16"><em>Dec. 10th:</em></div>
|
||||
<div class="f16"><span class="teal"><strong>SESSION:</strong></span> <span class="grey">Session Ended. Unavailable.</span></div>
|
||||
<div class="f13 lightgrey">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus neque, id pulvinar odio lorem non turpis. Nullam sit amet enim.</div>
|
||||
<br /><br />
|
||||
<div class="grey f16"><em>Nov. 29th:</em></div>
|
||||
<div class="f16"><span class="teal"><strong>SESSION:</strong></span> <span class="grey">Session Ended. Unavailable.</span></div>
|
||||
<div class="f13 lightgrey">Nulla libero. Vivamus pharetra posuere sapien. Nam consectetuer. </div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- comments -->
|
||||
<% content_for :after_black_bar do %>
|
||||
<div class="wrapper">
|
||||
<div class="landing-comments">
|
||||
<h2>Comments:</h2>
|
||||
|
||||
<!-- add a comment box -->
|
||||
<div class="avatar-small"><img src="images/content/avatar_generic.png" /></div>
|
||||
<div class="left w80 p10">
|
||||
<textarea class="w100 p5 f15" rows="2" onfocus="$(this).html('')" onblur="if($(this).html() == ''){$(this).html('Enter a comment...')}">Enter a comment...</textarea>
|
||||
</div>
|
||||
<br clear="all" />
|
||||
|
||||
<!-- scrolling area -->
|
||||
|
||||
<div class="landing-comment-scroller">
|
||||
|
||||
<!-- comment -->
|
||||
<div class="avatar-small mr10"><img src="images/shared/avatar_saltnpepper.jpg" alt=""/></div>
|
||||
<div class="w80 left p10 lightgrey">
|
||||
|
||||
<a href="#">Jeremy Jones</a> Nulla facilisi. In vel sem. Morbi id urna in diam dignissim feugiat. Proin molestie tortor eu velit.
|
||||
<br />
|
||||
<div class="f12 grey mt5">5 minutes ago</div>
|
||||
</div>
|
||||
<br clear="all" />
|
||||
|
||||
<!-- comment -->
|
||||
<div class="avatar-small mr10"><img src="images/content/avatar_generic.png" alt=""/></div>
|
||||
<div class="w80 left p10 lightgrey">
|
||||
|
||||
<a href="#">Johnny Cameroon</a> Fusce consectetuer luctus ipsum.
|
||||
<br />
|
||||
<div class="f12 grey mt5">30 minutes ago</div>
|
||||
</div>
|
||||
<br clear="all" />
|
||||
|
||||
<!-- comment -->
|
||||
<div class="avatar-small mr10"><img src="images/shared/avatar_creepyeye.jpg" alt=""/></div>
|
||||
<div class="w80 left p10 lightgrey">
|
||||
|
||||
<a href="#">Perry Gaberdeen</a> Nulla facilisi. In vel sem. Morbi id urna in diam dignissim feugiat. Proin molestie tortor eu velit.
|
||||
<br />
|
||||
<div class="f12 grey mt5">2 hours ago</div>
|
||||
</div>
|
||||
<br clear="all" />
|
||||
|
||||
<!-- comment -->
|
||||
<div class="avatar-small mr10"><img src="images/shared/avatar_silverfox.jpg" alt=""/></div>
|
||||
<div class="w80 left p10 lightgrey">
|
||||
|
||||
<a href="#">Billy Saban</a> Ut eu ligula. Etiam ligula enim, tempor ut, blandit nec, mollis eu, lectus.
|
||||
<br />
|
||||
<div class="f12 grey mt5">Yesterday, 2:45 pm</div>
|
||||
</div>
|
||||
<br clear="all" />
|
||||
|
||||
<!-- comment -->
|
||||
<div class="avatar-small mr10"><img src="images/shared/avatar_saltnpepper.jpg" alt=""/></div>
|
||||
<div class="w80 left p10 lightgrey">
|
||||
|
||||
<a href="#">Jeremy Jones</a> Nulla facilisi. In vel sem. Morbi id urna in diam dignissim feugiat. Proin molestie tortor eu velit.
|
||||
<br />
|
||||
<div class="f12 grey mt5">5 minutes ago</div>
|
||||
</div>
|
||||
<br clear="all" />
|
||||
|
||||
<!-- comment -->
|
||||
<div class="avatar-small mr10"><img src="images/content/avatar_generic.png" alt=""/></div>
|
||||
<div class="w80 left p10 lightgrey">
|
||||
|
||||
<a href="#">Johnny Cameroon</a> Fusce consectetuer luctus ipsum.
|
||||
<br />
|
||||
<div class="f12 grey mt5">30 minutes ago</div>
|
||||
</div>
|
||||
<br clear="all" />
|
||||
|
||||
<!-- comment -->
|
||||
<div class="avatar-small mr10"><img src="images/shared/avatar_creepyeye.jpg" alt=""/></div>
|
||||
<div class="w80 left p10 lightgrey">
|
||||
|
||||
<a href="#">Perry Gaberdeen</a> Nulla facilisi. In vel sem. Morbi id urna in diam dignissim feugiat. Proin molestie tortor eu velit.
|
||||
<br />
|
||||
<div class="f12 grey mt5">2 hours ago</div>
|
||||
</div>
|
||||
<br clear="all" />
|
||||
|
||||
<!-- comment -->
|
||||
<div class="avatar-small mr10"><img src="images/shared/avatar_silverfox.jpg" alt=""/></div>
|
||||
<div class="w80 left p10 lightgrey">
|
||||
|
||||
<a href="#">Billy Saban</a> Ut eu ligula. Etiam ligula enim, tempor ut, blandit nec, mollis eu, lectus.
|
||||
<br />
|
||||
<div class="f12 grey mt5">Yesterday, 2:45 pm</div>
|
||||
</div>
|
||||
<br clear="all" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
|
@ -1,14 +1,15 @@
|
|||
<div id="profile" class="userinfo">
|
||||
|
||||
<!-- avatar -->
|
||||
<a href="#" class="avatar_large">
|
||||
<img id="header-avatar" src="/assets/shared/avatar_generic.png" />
|
||||
</a>
|
||||
|
||||
<% if signed_in? %>
|
||||
<!-- profile area -->
|
||||
<!-- avatar -->
|
||||
<div class="avatar_large">
|
||||
<img id="header-avatar" />
|
||||
</div>
|
||||
|
||||
<!-- user name -->
|
||||
<div id="user"></div>
|
||||
<div id="user" class="user"></div>
|
||||
|
||||
<div class="arrow-down"></div>
|
||||
<ul class="shortcuts">
|
||||
|
|
@ -36,7 +37,7 @@
|
|||
|
||||
<!-- end profile area -->
|
||||
<% else %>
|
||||
<a class="signin" href="/signin">Sign In</a>
|
||||
<div class="user"><a class="signin" href="/signup">Sign Up</a> or <a class="signin" href="/signin">Sign In</a></div>
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ SampleApp::Application.routes.draw do
|
|||
end
|
||||
|
||||
resources :users
|
||||
|
||||
resources :sessions, only: [:new, :create, :destroy]
|
||||
|
||||
#root to: 'static_pages#home'
|
||||
|
|
@ -24,10 +23,14 @@ SampleApp::Application.routes.draw do
|
|||
|
||||
match '/signin', to: 'sessions#new'
|
||||
match '/signout', to: 'sessions#destroy', via: :delete
|
||||
|
||||
# oauth
|
||||
match '/auth/:provider/callback', :to => 'sessions#oauth_callback'
|
||||
match '/auth/failure', :to => 'sessions#failure'
|
||||
|
||||
# session / recording landing pages
|
||||
match '/sessions/:id' => 'music_sessions#show', :via => :get, :as => 'music_session_detail'
|
||||
match '/recordings/:id' => 'recordings#show', :via => :get, :as => 'recording_detail'
|
||||
|
||||
match '/isp', :to => 'users#isp'
|
||||
match '/isp/ping.jar', :to => redirect('/ping.jar')
|
||||
|
|
@ -296,6 +299,8 @@ SampleApp::Application.routes.draw do
|
|||
match '/claimed_recordings/:id' => 'api_claimed_recordings#update', :via => :put
|
||||
match '/claimed_recordings/:id' => 'api_claimed_recordings#delete', :via => :delete
|
||||
|
||||
# Mixes
|
||||
match '/mixes/schedule' => 'api_mixes#schedule', :via => :post
|
||||
match '/mixes/next' => 'api_mixes#next', :via => :get
|
||||
match '/mixes/:id/finish' => 'api_mixes#finish', :via => :put
|
||||
match '/mixes/:id/download' => 'api_mixes#download', :via => :get
|
||||
|
|
|
|||
Loading…
Reference in New Issue