diff --git a/app/controllers/main_controller.rb b/app/controllers/main_controller.rb index b6fcf319..5eb1a746 100644 --- a/app/controllers/main_controller.rb +++ b/app/controllers/main_controller.rb @@ -1,9 +1,16 @@ class MainController < ApplicationController + before_action :redirect_to_room + # GET / def index + @meeting = Meeting.new + end + + private + + def redirect_to_room # If the user is logged in already, move them along to their room. redirect_to room_path(current_user.room.uid) if current_user end - end diff --git a/app/controllers/meetings_controller.rb b/app/controllers/meetings_controller.rb index 2f020402..ef6a591e 100644 --- a/app/controllers/meetings_controller.rb +++ b/app/controllers/meetings_controller.rb @@ -1,14 +1,46 @@ class MeetingsController < ApplicationController - #before_action :verify_room_ownership + # GET /m/:meeting_uid + def show + @meeting = Meeting.find_by(uid: params[:meeting_uid]) + if @meeting + + else + # Handle meeting doesn't exist. + + end + end - # GET /r/:room_uid/meetings - def index + # POST /m/:meeting_uid + def join + meeting = Meeting.find_by(uid: params[:meeting_uid]) + if meeting + # If the user is logged in, join using their authenticated name. + if current_user + redirect_to meeting.join_path(current_user.name) + # Otherwise, use their inputed join name. + elsif params[:join_name] + redirect_to meeting.join_path(params[:join_name]) + end + else + # Handle meeting doesn't exist. + + end + end + + # POST /m + def create + meeting = Meeting.new(meeting_params) + if meeting.save + redirect_to meeting_path(meeting_uid: meeting.uid) + else + redirect_to root_path + end end private - #def meeting_params(room) - # params.require(:meeting).permit(:name).merge!(room: room) - #end + def meeting_params + params.require(:meeting).permit(:name) + end end diff --git a/app/controllers/rooms_controller.rb b/app/controllers/rooms_controller.rb index 01282f1c..843665e5 100644 --- a/app/controllers/rooms_controller.rb +++ b/app/controllers/rooms_controller.rb @@ -1,7 +1,7 @@ class RoomsController < ApplicationController before_action :find_room, :verify_room_ownership - skip_before_action :verify_room_ownership, only: [:index, :join, :wait] + skip_before_action :verify_room_ownership, only: [:show, :join, :wait] # GET /r/:room_uid def index @@ -82,6 +82,10 @@ class RoomsController < ApplicationController redirect_to room_path(@room.uid) end + # GET /r/:room_uid/sessions + def sessions + end + private # Find the room from the uid. @@ -111,4 +115,4 @@ class RoomsController < ApplicationController redirect_to root_path end end -end \ No newline at end of file +end diff --git a/app/models/meeting.rb b/app/models/meeting.rb index 5efa1a69..5ee2c4b4 100644 --- a/app/models/meeting.rb +++ b/app/models/meeting.rb @@ -4,13 +4,12 @@ class Meeting < ApplicationRecord validates :name, presence: true - belongs_to :room + belongs_to :room, optional: true RETURNCODE_SUCCESS = "SUCCESS" # Creates a meeting on the BigBlueButton server. def start_meeting(options = {}) - puts bbb create_options = { record: options[:meeting_recorded].to_s, logoutURL: options[:meeting_logout_url] || '', @@ -154,4 +153,4 @@ class Meeting < ApplicationRecord o = ([('a'..'z'), ('A'..'Z')].map do |i| i.to_a end).flatten ((0...length).map do o[rand(o.length)] end).join end -end \ No newline at end of file +end diff --git a/app/views/main/index.html.erb b/app/views/main/index.html.erb index c7b19fc1..df729989 100644 --- a/app/views/main/index.html.erb +++ b/app/views/main/index.html.erb @@ -10,12 +10,14 @@
<%= render layout: 'shared/center_panel' do %>
- <%= render 'shared/meeting_name_form' %> - -
- <%= render 'main/invite_join' %> -
- + <%= form_for(:meeting, url: create_meeting_path) do |f| %> +
+ <%= f.label :name, "Name" %> + <%= f.text_field :name %> +
+
+ <%= f.submit "Start Meeting", class: "btn white-text light-green" %> + <% end %>
<% end %>
@@ -31,4 +33,4 @@ - \ No newline at end of file + diff --git a/app/views/meetings/index.html.erb b/app/views/meetings/index.html.erb deleted file mode 100644 index e69de29b..00000000 diff --git a/app/views/meetings/show.html.erb b/app/views/meetings/show.html.erb new file mode 100644 index 00000000..ee49dae0 --- /dev/null +++ b/app/views/meetings/show.html.erb @@ -0,0 +1,11 @@ +

This is an unauthenticated meeting page.

+ +<% if current_user %> + <%= link_to "Join", join_meeting_path(uid: @meeting.uid), {method: :post} %> +<% else %> +

Enter a name to join the session.

+ <%= form_tag join_meeting_path do %> + <%= text_field_tag "join_name" %> + <%= submit_tag "Join" %> + <% end %> +<% end %> diff --git a/app/views/rooms/sessions.html.erb b/app/views/rooms/sessions.html.erb new file mode 100644 index 00000000..2e1ae635 --- /dev/null +++ b/app/views/rooms/sessions.html.erb @@ -0,0 +1,10 @@ +Sessions +

+<%= @meeting.recordings %> + +<% @meeting.recordings.each do |rec| %> +

<%= rec[:metadata][:meetingName] %>

+ <% Array.wrap(rec[:playback][:format]).each do |form| %> + <%= link_to form[:type], form[:url] %> + <% end %> +<% end %> diff --git a/app/views/rooms/index.html.erb b/app/views/rooms/show.html.erb similarity index 75% rename from app/views/rooms/index.html.erb rename to app/views/rooms/show.html.erb index b01ff69e..1b50ba61 100644 --- a/app/views/rooms/index.html.erb +++ b/app/views/rooms/show.html.erb @@ -4,8 +4,7 @@

<%= @room.meeting.uid %>

<%= @room.uid %>

-<%= link_to 'Sessions', root_path %> -<%= link_to 'Recordings', root_path %> +<%= link_to 'Sessions', sessions_path %> <%= link_to 'Settings', root_path %>

Click below to join the meeting.

@@ -18,4 +17,4 @@

-<%= link_to 'Logout', logout_path %> \ No newline at end of file +<%= link_to 'Logout', logout_path %> diff --git a/config/routes.rb b/config/routes.rb index 7fdd6eff..a524aaf8 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,20 +1,27 @@ Rails.application.routes.draw do - # Room and Meeting routes. + # Room routes. scope '/r/:room_uid' do - get '/', to: 'rooms#index', as: :room + get '/', to: 'rooms#show', as: :room match '/start', to: 'rooms#start', as: :start_room, via: [:get, :post] match '/join', to: 'rooms#join', as: :join_room, via: [:get, :post] match '/wait', to: 'rooms#wait', as: :wait_room, via: [:get, :post] match '/logout', to: 'rooms#logout', as: :logout_room, via: [:get, :post] - resources :meetings, only: [:index], param: :meeting_uid + get '/sessions', to: 'rooms#sessions', as: :sessions + end + + # Meeting routes. + scope '/m' do + post '/', to: 'meetings#create', as: :create_meeting + get '/:meeting_uid', to: 'meetings#show', as: :meeting + post '/:meeting_uid', to: 'meetings#join', as: :join_meeting end # Signup routes. get '/signup', to: 'users#new' post '/signup', to: 'users#create' - # Handles login of :greenlight provider account. + # Handles login of greenlight provider accounts. post '/login', to: 'sessions#create', as: :create_session # Login to Greenlight. @@ -31,4 +38,4 @@ Rails.application.routes.draw do get '/auth/failure', to: 'sessions#fail' root to: 'main#index' -end \ No newline at end of file +end