diff --git a/ruby/lib/jam_ruby/models/music_session.rb b/ruby/lib/jam_ruby/models/music_session.rb index 717ed7202..d6e85e0cd 100644 --- a/ruby/lib/jam_ruby/models/music_session.rb +++ b/ruby/lib/jam_ruby/models/music_session.rb @@ -20,6 +20,7 @@ module JamRuby has_many :music_session_user_histories, :class_name => "JamRuby::MusicSessionUserHistory", :foreign_key => "music_session_id", :dependent => :delete_all has_many :comments, :class_name => "JamRuby::MusicSessionComment", :foreign_key => "music_session_id" + has_many :session_info_comments, :class_name => "JamRuby::SessionInfoComment", :foreign_key => "music_session_id" has_many :likes, :class_name => "JamRuby::MusicSessionLiker", :foreign_key => "session_id" has_many :plays, :class_name => "JamRuby::PlayablePlay", :as => :playable, :dependent => :destroy has_one :share_token, :class_name => "JamRuby::ShareToken", :inverse_of => :shareable, :foreign_key => 'shareable_id' @@ -274,6 +275,21 @@ module JamRuby self.creator == user && self.started_at.nil? end + def legal_policy_url + # TODO: move to DB or config file + case legal_policy + when "standard" + return "http://www.jamkazam.com/session-legal-policies/standard" + when "creative" + return "http://www.jamkazam.com/session-legal-policies/creativecommons" + when "offline" + return "http://www.jamkazam.com/session-legal-policies/offline" + when "jamtracks" + return "http://www.jamkazam.com/session-legal-policies/jamtracks" + else + return "" + end + def recordings Recording.where(music_session_id: self.id) end diff --git a/web/app/assets/javascripts/web/scheduled_session.js b/web/app/assets/javascripts/web/scheduled_session.js new file mode 100644 index 000000000..ca4cdc005 --- /dev/null +++ b/web/app/assets/javascripts/web/scheduled_session.js @@ -0,0 +1,17 @@ +(function(context, $) { + + "use strict"; + + context.JK = context.JK || {}; + + context.JK.ShowSessionInfo = function(app) { + var logger = context.JK.logger; + var rest = JK.Rest(); + + function initialize(musicSessionId) { + } + + this.initialize = initialize; + } + +})(window, jQuery); \ No newline at end of file diff --git a/web/app/assets/javascripts/web/web.js b/web/app/assets/javascripts/web/web.js index f79dba4a7..edf1ca888 100644 --- a/web/app/assets/javascripts/web/web.js +++ b/web/app/assets/javascripts/web/web.js @@ -53,6 +53,7 @@ //= require web/downloads //= require web/congratulations //= require web/sessions +//= require web/scheduled_session //= require web/recordings //= require web/welcome //= require banner diff --git a/web/app/assets/stylesheets/client/content.css.scss b/web/app/assets/stylesheets/client/content.css.scss index 6685d883d..ecfef5fe6 100644 --- a/web/app/assets/stylesheets/client/content.css.scss +++ b/web/app/assets/stylesheets/client/content.css.scss @@ -307,6 +307,10 @@ width:110px; } +a.gold { + color: #cc9900 !important; +} + a.arrow-up { float:right; margin-right:5px; @@ -465,6 +469,10 @@ ul.shortcuts { } } +.clearall { + clear: both; +} + .tagline { font-size:30px; margin-top:35px; @@ -495,6 +503,10 @@ a.arrow-down-orange { white-space:normal; } +.ib { + display: inline-block; +} + .w0 {width:0% !important} .w5 {width:5% !important} .w10 {width:10% !important} diff --git a/web/app/controllers/music_sessions_controller.rb b/web/app/controllers/music_sessions_controller.rb index 9419204d5..66886feaa 100644 --- a/web/app/controllers/music_sessions_controller.rb +++ b/web/app/controllers/music_sessions_controller.rb @@ -8,8 +8,37 @@ class MusicSessionsController < ApplicationController end def session_info - @music_session = MusicSession.find(params[:id]) - render :layout => "web" + @can_view = true + @can_comment = false + + # check whether user is logged in + if current_user.nil? + @music_session = MusicSession.new + @can_view = false + render :layout => "web", :status => 404 + + else + + @music_session = MusicSession.find(params[:id]) + current_user_invitation = Invitation.where("music_session_id = ? AND receiver_id = ?", music_session.id, current_user.id) + + # get all invitations for users that do not have an RSVP request + @pending_invitations = + + if @music_session.scheduled_start > Time.now.utc + if @music_session.musician_access && @music_session.approval_required && invitations.blank? + @can_view = false + end + # only allow comments for invitees before the session has started + unless current_user_invitation.blank? + @can_comment = true + end + else + + end + + render :layout => "web" + end end end diff --git a/web/app/views/api_music_sessions/show.rabl b/web/app/views/api_music_sessions/show.rabl index 87fcfc683..f2498edaf 100644 --- a/web/app/views/api_music_sessions/show.rabl +++ b/web/app/views/api_music_sessions/show.rabl @@ -13,7 +13,7 @@ if !current_user } else - attributes :id, :description, :musician_access, :approval_required, :fan_access, :fan_chat, :band_id, :user_id, :claimed_recording_initiator_id, :track_changes_counter, :max_score + attributes :id, :name, :description, :musician_access, :approval_required, :fan_access, :fan_chat, :band_id, :user_id, :claimed_recording_initiator_id, :track_changes_counter, :max_score node :genres do |item| [item.genre.description] # XXX: need to return single genre; not array diff --git a/web/app/views/api_music_sessions/show_history.rabl b/web/app/views/api_music_sessions/show_history.rabl index c71bcfb61..e21bc7558 100644 --- a/web/app/views/api_music_sessions/show_history.rabl +++ b/web/app/views/api_music_sessions/show_history.rabl @@ -16,8 +16,8 @@ if !current_user } else - attributes :id, :music_session_id, :description, :musician_access, :approval_required, :fan_access, :fan_chat, - :band_id, :user_id, :genre_id, :created_at, :like_count, :comment_count, :scheduled_start, :scheduled_duration + attributes :id, :music_session_id, :name, :description, :musician_access, :approval_required, :fan_access, :fan_chat, + :band_id, :user_id, :genre_id, :created_at, :like_count, :comment_count, :scheduled_start, :scheduled_duration, :language node :share_url do |history| unless history.share_token.nil? diff --git a/web/app/views/music_sessions/session_info.html.erb b/web/app/views/music_sessions/session_info.html.erb deleted file mode 100644 index e69de29bb..000000000 diff --git a/web/app/views/music_sessions/session_info.html.haml b/web/app/views/music_sessions/session_info.html.haml new file mode 100644 index 000000000..886934321 --- /dev/null +++ b/web/app/views/music_sessions/session_info.html.haml @@ -0,0 +1,78 @@ +- unless @music_session.nil? + - provide(:title, @music_session.name) + +.sessions-page + - if @can_view + .landing-band + .landing-avatar + - unless @music_session.creator.photo_url.blank? + = image_tag "#{@music_session.creator.photo_url}", alt: "" + - else + = image_tag "shared/avatar_generic.png", alt: "" + - end + = @music_session.creator.name + %br/ + %span.f12 Session Creator + %br/ + %br/ + .f12 Tell the session creator you'd like to play in this session + %br/ + %br/ + %a.button-orange{:id => "btn-rsvp"} + RSVP NOW! + .landing-details + .left.f20.teal + %strong SESSION + %br/ + %strong Date/Time: + .right.w75.ib.mb10 + = @music_session.scheduled_start + .clearall.left.w20.ib.mb10 + %strong Genre: + .right.w75.ib.mb10 + = @music_session.scheduled_start + .clearall.left.w20.ib.mb10 + %strong Name: + .right.w75.ib.mb10 + = @music_session.name + .clearall.left.w20.ib.mb10 + %strong Description: + .right.w75.ib.mb10 + = @music_session.description + .clearall.left.w20.ib.mb10 + %strong Notation Files: + .right.w75.ib.mb10 + - @music_session.music_notations.each do |n| + %a.gold{:href => n.file_url}  + .clearall.left.w20.ib.mb10 + %strong Language: + .right.w75.ib.mb10 + = @music_session.language + .clearall.left.w20.ib.mb10 + %strong Access: + .right.w75.ib.mb10 + = @music_session.access + .clearall.left.w20.ib.mb10 + %strong Legal: + .right.w75.ib.mb10 + = @music_session.legal_policy.capitalize agreement( + %a.{:href => @music_session.legal_policy_url, :target => "_blank"} View full legal details) + + %br{clear:'all'} + + .landing-sidebar + %br/ + %h2 SESSION MUSICIANS + %br/ + .left.w65.ib + %strong RSVPs + .right.w30.ib.f11.center Your latency + + - else + .left.f20.teal + %strong SESSION NOT FOUND + %br/ + .clearall.left.w20.ib.mb10 + + + diff --git a/web/app/views/users/_feed_recording.html.haml b/web/app/views/users/_feed_recording.html.haml index d487821c2..389175298 100644 --- a/web/app/views/users/_feed_recording.html.haml +++ b/web/app/views/users/_feed_recording.html.haml @@ -88,7 +88,7 @@ %td .nowrap - track.instrument_ids.uniq.each do |instrument_id| - %img.instrument-icon{'instrument-id' =>instrument_id, height:24, width:24} + %img.instrument-icon{'instrument-id' => instrument_id, height:24, width:24} %br{:clear => "all"}/ %br/