Skip to content

Commit

Permalink
We are not saving externally created rooms by default anymore.
Browse files Browse the repository at this point in the history
Also started to implement actions to join external meetings.
Refs issue 156.
  • Loading branch information
daronco committed Jun 27, 2011
1 parent 7dec120 commit 7714dbf
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 7 deletions.
6 changes: 6 additions & 0 deletions app/controllers/bigbluebutton/rooms_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,12 @@ def join_mobile
@join_url.gsub!("http://", "bigbluebutton://")
end

def external
# TODO: error if params[:meeting].nil?

@room = BigbluebuttonRoom.new(:meetingid => params[:meeting])
end

protected

def find_server
Expand Down
10 changes: 4 additions & 6 deletions app/models/bigbluebutton_server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,18 +65,16 @@ def fetch_meetings
response[:meetings].each do |attr|
room = BigbluebuttonRoom.find_by_server_id_and_meetingid(self.id, attr[:meetingID])
if room.nil?
room = BigbluebuttonRoom.create(:server => self, :meetingid => attr[:meetingID],
:name => attr[:meetingID], :attendee_password => attr[:attendeePW],
:moderator_password => attr[:moderatorPW], :external => true,
:randomize_meetingid => false)
room = BigbluebuttonRoom.new(:server => self, :meetingid => attr[:meetingID],
:name => attr[:meetingID], :attendee_password => attr[:attendeePW],
:moderator_password => attr[:moderatorPW], :external => true,
:randomize_meetingid => false)
else
room.update_attributes(:attendee_password => attr[:attendeePW],
:moderator_password => attr[:moderatorPW])
end
room.running = attr[:running]

# TODO What if the update/save above fails?

@meetings << room
end
end
Expand Down
23 changes: 23 additions & 0 deletions app/views/bigbluebutton/rooms/external.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<h1>Join the meeting <%= @room.name %></h1>

<p id="error"><%= flash[:error] %></p>

<p>This meeting was created from another application.<br/>You must provide a name and a password to join:</p>

<%= form_tag external_bigbluebutton_server_rooms_path(@server) do %>

<div class="field">
Name:<br />
<% if bigbluebutton_user.nil? %>
<%= text_field_tag "user[name]", "" %>
<% else %>
<%= text_field_tag "user[name]", bigbluebutton_user.name %>
<% end %>
</div>
<div class="field">
Password:<br />
<%= password_field_tag "user[password]", "" %>
</div>

<%= submit_tag "Submit" %>
<% end %>
1 change: 1 addition & 0 deletions lib/bigbluebutton_rails/rails/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ def bigbluebutton_routes_default(*params) #:nodoc:
resources :servers, :controller => BigbluebuttonRails.controllers[:servers] do
get :activity, :on => :member
resources :rooms, :controller => BigbluebuttonRails.controllers[:rooms] do
get :external, :on => :collection
get :join, :on => :member
get :running, :on => :member
get :end, :on => :member
Expand Down
15 changes: 15 additions & 0 deletions spec/controllers/bigbluebutton/rooms_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -910,5 +910,20 @@ def build_running_json(value, error=nil)

end # json responses

describe "#external" do
before { mock_server_and_api }
let(:user) { Factory.build(:user) }
let(:new_room) { BigbluebuttonRoom.new(:meetingid => 'my-meeting-id') }

context "for an anonymous user" do
before { controller.stub(:bigbluebutton_user).and_return(nil) }
before(:each) { get :external, :server_id => mocked_server.to_param, :meeting => new_room.meetingid }
it { should respond_with(:success) }
it { should render_template(:external) }
it { should assign_to(:room).with_kind_of(BigbluebuttonRoom) }
it { assigns(:room).meetingid.should be(new_room.meetingid) }
end
end

end

2 changes: 1 addition & 1 deletion spec/models/bigbluebutton_server_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@
server.meetings[2].attendee_password.should == "pass"
server.meetings[2].moderator_password.should == "pass"
server.meetings[2].running.should == true
server.meetings[2].new_record?.should be_false
server.meetings[2].new_record?.should be_true
server.meetings[2].external.should be_true
server.meetings[2].randomize_meetingid.should be_false
end
Expand Down
4 changes: 4 additions & 0 deletions spec/routing/bigbluebutton/rooms_routing_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@
{:get => "/#{prefix}/servers/1/rooms/new"}.
should route_to(:controller => "bigbluebutton/rooms", :action => "new", :server_id => "1")
}
it {
{:get => "/#{prefix}/servers/1/rooms/external"}.
should route_to(:controller => "bigbluebutton/rooms", :action => "external", :server_id => "1")
}
it {
{:get => "/#{prefix}/servers/1/rooms/1/edit"}.
should route_to(:controller => "bigbluebutton/rooms", :action => "edit", :server_id => "1", :id => "1")
Expand Down

0 comments on commit 7714dbf

Please sign in to comment.