From 989a2a2b3ad01ffbbf60574997ec320bef82050b Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Tue, 27 May 2014 00:32:14 -0400 Subject: [PATCH] VRFS-1670 session info page work --- ruby/lib/jam_ruby/models/music_session.rb | 25 ++++++++++++- .../controllers/music_sessions_controller.rb | 36 ++++++++++++++----- .../music_sessions/session_info.html.haml | 2 +- 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/ruby/lib/jam_ruby/models/music_session.rb b/ruby/lib/jam_ruby/models/music_session.rb index a2ababe4c..5c71bd4d2 100644 --- a/ruby/lib/jam_ruby/models/music_session.rb +++ b/ruby/lib/jam_ruby/models/music_session.rb @@ -8,7 +8,7 @@ module JamRuby RECURRING_MODES = [NO_RECURRING, RECURRING_WEEKLY] - attr_accessor :legal_terms, :recurring_mode, :language_description, :scheduled_start_time + attr_accessor :legal_terms, :recurring_mode, :language_description, :scheduled_start_time, :access_description self.table_name = "music_sessions" @@ -305,6 +305,29 @@ module JamRuby end end + def access_description + musician_access_desc = "" + fan_access_desc = "" + + if self.musician_access + if self.approval_required + musician_access_desc = "Interested musicians may join by approval" + else + musician_access_desc = "Interested musicians may join at will" + end + end + + if self.fan_access + fan_access_desc = "Fans may listen" + end + + if self.fan_chat + fan_access_desc = "#{fan_access_desc}, chat with each other" + end + + return "#{musician_access_desc}. #{fan_access_desc}." + end + # next 3 methods are used for the right sidebar on the session info page def approved_rsvps diff --git a/web/app/controllers/music_sessions_controller.rb b/web/app/controllers/music_sessions_controller.rb index 28a43c4c1..8fc15007e 100644 --- a/web/app/controllers/music_sessions_controller.rb +++ b/web/app/controllers/music_sessions_controller.rb @@ -20,26 +20,46 @@ class MusicSessionsController < ApplicationController else @music_session = MusicSession.find(params[:id]) - current_user_invitation = Invitation.where("music_session_id = ? AND receiver_id = ?", @music_session.id, current_user.id) - - @approved_rsvps = @music_session.approved_rsvps - @open_slots = @music_session.open_slots - @pending_invitations = @music_session.pending_invitations + invitations = Invitation.where("music_session_id = ? AND receiver_id = ?", @music_session.id, current_user.id) + has_invitation = !invitations.blank? unless @music_session.scheduled_start.nil? + # session has not started yet if @music_session.scheduled_start > Time.now.utc - if @music_session.musician_access && @music_session.approval_required && invitations.blank? + if @music_session.creator.id == current_user.id || @music_session.open_rsvps || has_invitation + @can_view = true + @can_comment = true + else @can_view = false + @can_comment = false end + # only allow comments for invitees before the session has started - unless current_user_invitation.blank? + unless has_invitation @can_comment = true end + + # session has started else - + if @music_session.musician_access + if @music_session.approval_required + @can_view = false + else + @can_view = false + end + else + @can_view = false + end end end + # run these 3 queries only if the user has access to the page + if @can_view + @approved_rsvps = @music_session.approved_rsvps + @open_slots = @music_session.open_slots + @pending_invitations = @music_session.pending_invitations + end + render :layout => "web" end end diff --git a/web/app/views/music_sessions/session_info.html.haml b/web/app/views/music_sessions/session_info.html.haml index 494e9f109..97cb1f95d 100644 --- a/web/app/views/music_sessions/session_info.html.haml +++ b/web/app/views/music_sessions/session_info.html.haml @@ -51,7 +51,7 @@ .clearall.left.w20.ib.mb10 %strong Access: .right.w75.ib.mb10 - = @music_session.musician_access + = @music_session.access_description .clearall.left.w20.ib.mb10 %strong Legal: .right.w75.ib.mb10