bigbluebutton_rails 0.1.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/CHANGELOG.rdoc +1 -12
  2. data/Gemfile.lock +1 -1
  3. data/README.rdoc +32 -46
  4. data/Rakefile +1 -0
  5. data/app/controllers/bigbluebutton/rooms_controller.rb +16 -17
  6. data/app/controllers/bigbluebutton/servers_controller.rb +2 -6
  7. data/app/models/bigbluebutton_room.rb +1 -35
  8. data/app/models/bigbluebutton_server.rb +1 -1
  9. data/app/views/bigbluebutton/rooms/_form.html.erb +3 -7
  10. data/app/views/bigbluebutton/rooms/edit.html.erb +2 -2
  11. data/app/views/bigbluebutton/rooms/external.html.erb +1 -2
  12. data/app/views/bigbluebutton/rooms/index.html.erb +37 -2
  13. data/app/views/bigbluebutton/rooms/invite.html.erb +2 -2
  14. data/app/views/bigbluebutton/rooms/join.html.erb +1 -1
  15. data/app/views/bigbluebutton/rooms/new.html.erb +1 -1
  16. data/app/views/bigbluebutton/rooms/show.html.erb +4 -10
  17. data/app/views/bigbluebutton/servers/_activity_list.html.erb +6 -6
  18. data/app/views/bigbluebutton/servers/index.html.erb +3 -4
  19. data/app/views/bigbluebutton/servers/show.html.erb +4 -3
  20. data/config/locales/en.yml +3 -7
  21. data/lib/bigbluebutton_rails/exceptions.rb +0 -4
  22. data/lib/bigbluebutton_rails/rails/routes.rb +35 -28
  23. data/lib/bigbluebutton_rails/version.rb +1 -1
  24. data/spec/controllers/bigbluebutton/rooms_controller_exception_handling_spec.rb +10 -13
  25. data/spec/controllers/bigbluebutton/rooms_controller_json_responses_spec.rb +13 -13
  26. data/spec/controllers/bigbluebutton/rooms_controller_spec.rb +115 -114
  27. data/spec/controllers/bigbluebutton/servers_controller_json_responses_spec.rb +1 -12
  28. data/spec/controllers/bigbluebutton/servers_controller_spec.rb +0 -11
  29. data/spec/generators/install_generator_spec.rb +1 -1
  30. data/spec/models/bigbluebutton_room_spec.rb +80 -166
  31. data/spec/models/bigbluebutton_server_spec.rb +4 -4
  32. data/spec/rails_app/features/activity_monitor_servers.feature +0 -6
  33. data/spec/rails_app/features/create_rooms.feature +0 -5
  34. data/spec/rails_app/features/create_servers.feature +2 -7
  35. data/spec/rails_app/features/edit_rooms.feature +0 -7
  36. data/spec/rails_app/features/edit_servers.feature +2 -8
  37. data/spec/rails_app/features/join_rooms.feature +0 -1
  38. data/spec/rails_app/features/list_and_show_rooms.feature +2 -10
  39. data/spec/rails_app/features/step_definitions/activity_monitor_servers_step.rb +10 -10
  40. data/spec/rails_app/features/step_definitions/common_steps.rb +4 -6
  41. data/spec/rails_app/features/step_definitions/create_rooms_steps.rb +0 -1
  42. data/spec/rails_app/features/step_definitions/join_mobile_steps.rb +3 -1
  43. data/spec/rails_app/features/step_definitions/join_rooms_steps.rb +7 -3
  44. data/spec/rails_app/features/step_definitions/list_and_show_rooms_steps.rb +5 -12
  45. data/spec/rails_app/features/step_definitions/list_and_show_servers_steps.rb +5 -1
  46. data/spec/rails_app/features/support/{patches/application_controller.rb → application_controller.rb} +0 -0
  47. data/spec/rails_app/features/support/paths.rb +10 -12
  48. data/spec/rails_app/features/support/templates.rb +46 -90
  49. data/spec/routing/bigbluebutton/custom_controllers_routing_spec.rb +22 -38
  50. data/spec/routing/bigbluebutton/rooms_routing_spec.rb +58 -142
  51. data/spec/routing/bigbluebutton/servers_routing_spec.rb +1 -9
  52. metadata +9 -12
  53. data/app/views/bigbluebutton/rooms/_rooms.html.erb +0 -37
  54. data/app/views/bigbluebutton/servers/rooms.html.erb +0 -2
  55. data/spec/rails_app/features/support/patches/bigbluebutton_room.rb +0 -9
data/CHANGELOG.rdoc CHANGED
@@ -1,15 +1,4 @@
1
- == 0.1.1
2
-
3
- * Rooms are now decoupled from servers:
4
- * A room can exist without a server;
5
- * Everytime a 'send_create' is called in a room, the method 'select_server' is called to select a server where the meeting will be held. The room is saved if the server changed;
6
- * The method 'select_server' by default selects the server with less rooms;
7
- * The routes for rooms are not nested with servers anymore ('/bigbluebutton/rooms' instead of '/bigbluebutton/server/:id/rooms').
8
- * Because of this change all path helpers for rooms <b>must be updated!</b>
9
- * rooms/external now receives a parameter "server_id" to indicate the server in which the external rooms is running. The views were updated.
10
- * "bigbluebutton_routes :room_matchers" now generates all routes available for rooms, not only a selected set as before.
11
-
12
- == 0.1.0
1
+ == 1.0.0
13
2
 
14
3
  * First version with support to BigBlueButton 0.8:
15
4
  * The support is still very basic: you can use the gem with BBB 0.8 but not all features are supported yet, such as pre-upload of slides and anything related to recordings.
data/Gemfile.lock CHANGED
@@ -7,7 +7,7 @@ GIT
7
7
  PATH
8
8
  remote: .
9
9
  specs:
10
- bigbluebutton_rails (0.1.1)
10
+ bigbluebutton_rails (1.0.0)
11
11
  bigbluebutton-api-ruby (~> 0.1.0)
12
12
  rails (>= 3.0.0)
13
13
 
data/README.rdoc CHANGED
@@ -1,23 +1,24 @@
1
1
  = BigBlueButton on Rails
2
- {<img src="http://travis-ci.org/mconf/bigbluebutton_rails.png" alt="Travis CI Status" />}[http://travis-ci.org/#!/mconf/bigbluebutton_rails]
2
+ http://travis-ci.org/mconf/bigbluebutton_rails.png {(more...)}[http://travis-ci.org/#!/mconf/bigbluebutton_rails]
3
3
 
4
4
  {BigBlueButton}[http://bigbluebutton.org] integration for Ruby on Rails 3.
5
5
 
6
6
  Features:
7
- * Allows multiple servers and multiple conference rooms.
8
- * Full API access using {bigbluebutton-api-ruby}[https://github.com/mconf/bigbluebutton-api-ruby].
9
- * Easy way to join conferences: simply create a room and call the "join" action.
10
- * Easy integration with authentication and authorization mechanisms, such as Devise and CanCan.
11
- * Possibility to create private rooms, that require a password to join.
12
- * Deals with visitors (users that are not logged), allowing (or forbidding) them to join rooms.
13
- * Random meeting IDs to avoid problems with end_meeting, timeouts and reuse of URLs.
14
- * Server activity monitor.
15
- * "On-the-fly" server selection when a meeting is started.
16
-
17
- Possible future features:
18
- * Limit the number of users per room and rooms per server.
19
- * Server administration (modify config.xml, use bbb-conf, etc.).
20
- * Load balancing.
7
+ * Allows multiple servers and multiple conference rooms
8
+ * Full API access using {bigbluebutton-api-ruby}[https://github.com/mconf/bigbluebutton-api-ruby]
9
+ * Easy way to join conferences: simply create a room and call the "join" action
10
+ * Easy integration with authentication and authorization mechanisms, such as Devise and CanCan
11
+ * Possibility to create private rooms, that require a password to join
12
+ * Deals with visitors (users that are not logged), allowing (or forbidding) them to join rooms
13
+ * Random meeting IDs to avoid problems with end_meeting, timeouts and reuse of URLs
14
+ * Server activity monitor
15
+
16
+ Planned features:
17
+ * Friendly URLs (e.g. http://somewhere.com/my-server/my-room)
18
+ * Limit the number of users per room and rooms per server
19
+ * Server administration (modify config.xml, use bbb-conf, etc.)
20
+ * Decouple servers-rooms to allow server selection on-the-fly
21
+ * Load balancing
21
22
 
22
23
  For more future features and issues check {our google code page}[http://code.google.com/p/mconf/issues/list?can=2&q=label%3AComponent%20label%3ABigBlueButtonRails].
23
24
 
@@ -65,32 +66,33 @@ The routes to BigbluebuttonRails can be generated with the helper <tt>bigbluebut
65
66
  It will generate the default routes. You need to call it at least once and the routes will be scoped with 'bigbluebutton'. They will look like:
66
67
 
67
68
  /bigbluebutton/servers
68
- /bigbluebutton/servers/my-server/new
69
- /bigbluebutton/servers/my-server/rooms
70
- /bigbluebutton/rooms
71
- /bigbluebutton/rooms/my-room/join
69
+ /bigbluebutton/servers/default-server/rooms/my-room
70
+ /bigbluebutton/servers/default-server/rooms/his-room/join
72
71
 
73
- You can customize the scope name and also make the routes use custom controllers.
72
+ You can customize the scope name and also make the routes point to custom controllers.
74
73
 
75
74
  bigbluebutton_routes :default, :scope => 'webconference', :controllers => { :servers => 'custom_servers', :rooms => 'custom_rooms' }
76
75
  bigbluebutton_routes :default, :scope => '' # to remove the scope
77
76
 
78
77
  You may also want shorter routes to access conference rooms. For that, use the option <tt>room_matchers</tt>:
79
78
 
79
+ bigbluebutton_routes :room_matchers
80
+
80
81
  resources :users do
81
82
  bigbluebutton_routes :room_matchers
82
83
  end
83
84
 
84
- It creates routes to the actions used to access a conference room, so you can allow access to webconference rooms using URLs such as:
85
+ It creates routes to the actions used to access the conference room, so you can allow access to webconference rooms using URLs such as:
85
86
 
86
- http://myserver.com/my-community/room-name/join
87
- http://myserver.com/user-name/room-name/join
87
+ http://myserver.com/server-name/room-name/join
88
+ http://myserver.com/user-name/public-room/join
89
+ http://myserver.com/ziltoid-room/join
88
90
 
89
91
  For more information see:
90
92
 
91
93
  * {How to: Routes}[https://github.com/mconf/bigbluebutton_rails/wiki/How-to:-Routes]
92
94
 
93
- === Basic configurations
95
+ === User authorization, permissions and assumptions
94
96
 
95
97
  There are some basic assumptions made by BigbluebuttonRails:
96
98
 
@@ -101,21 +103,7 @@ If you don't, you can change this behaviour easily, keep reading.
101
103
 
102
104
  BigbluebuttonRails uses the methods <tt>bigbluebutton_user</tt> and <tt>bigbluebutton_role(room)</tt> to get the current user and to get the permission that the current
103
105
  user has in the <tt>room</tt>, respectively. These methods are defined in {lib/bigbluebutton_rails/controller_methods.rb}[https://github.com/mconf/bigbluebutton_rails/blob/master/lib/bigbluebutton_rails/controller_methods.rb]
104
- and you can reimplement them in your application controller to change their behaviour as shown below.
105
-
106
- class ApplicationController < ActionController::Base
107
-
108
- # overriding bigbluebutton_rails function
109
- def bigbluebutton_user
110
- current_user && current_user.is_a?(User) ? current_user : nil
111
- end
112
-
113
- def bigbluebutton_role(room)
114
- ...
115
- end
116
-
117
- end
118
-
106
+ and you can reimplement them in your application controller to change their behaviour.
119
107
 
120
108
  ==== See also
121
109
 
@@ -128,27 +116,25 @@ Fork this repository, clone your fork and start by installing the dependencies:
128
116
 
129
117
  bundle install
130
118
 
131
- Save <tt>spec/rails_app/features/config.yml.example</tt> as <tt>config.yml</tt> and edit it to set values for an existent BigBlueButton server. You will need it to run the integration tests. For more information see the page {Testing}[https://github.com/mconf/bigbluebutton_rails/wiki/Testing] in our wiki.
119
+ Edit <tt>spec/rails_app/features/integration_conf.yml.example</tt> and set values for an existent BigBlueButton server. Save it as <tt>spec/integration_conf.yml</tt>. You will need it to run the integration tests. For more information see the page [Testing](https://github.com/mconf/bigbluebutton_rails/wiki/Testing) in our wiki.
132
120
 
133
121
  Prepare the rails_app used for tests:
134
122
 
135
123
  rake setup:rails_app
136
- rake setup:rails_app:db SERVER=my-server # select a server you defined in 'config.yml'
124
+ rake setup:rails_app:db
137
125
 
138
126
  Run the tests:
139
127
 
140
128
  rake spec
141
- rake cucumber SERVER=my-server
129
+ rake cucumber
142
130
 
143
131
  Or simply:
144
132
 
145
- rake SERVER=my-server
146
-
147
- Note: If you don't set the SERVER variable, the first server in <tt>config.yml</tt> will be used.
133
+ rake
148
134
 
149
135
  Develop. :)
150
136
 
151
- If you want your code to be integrated in this repository, please fork it, create a branch with your modifications and submit a pull request.
137
+ If you want your code to be integrated in this repository, please create a branch with your modifications and submit a pull request.
152
138
 
153
139
  === Test Coverage
154
140
 
data/Rakefile CHANGED
@@ -69,6 +69,7 @@ task :notes do
69
69
  puts `grep -r 'OPTIMIZE\\|FIXME\\|TODO' app/ public/ spec/`
70
70
  end
71
71
 
72
+ # FIXME: not the best way to test these migrations, but works for now
72
73
  desc 'Setup the rails_app using the migration files created when upgrading the gem
73
74
  version, run all tests and destroys the generated files.'
74
75
  namespace :spec do
@@ -2,12 +2,13 @@ require 'bigbluebutton_api'
2
2
 
3
3
  class Bigbluebutton::RoomsController < ApplicationController
4
4
 
5
+ before_filter :find_server
5
6
  before_filter :find_room, :only => [:show, :edit, :update, :destroy, :join, :invite, :running, :end, :destroy, :end, :join_mobile]
6
- before_filter :find_server, :only => [:external, :external_auth]
7
7
  respond_to :html, :except => :running
8
8
  respond_to :json, :only => [:running, :show, :new, :index, :create, :update]
9
9
 
10
10
  def index
11
+ # TODO restrict to rooms belonging to the selected server
11
12
  respond_with(@rooms = BigbluebuttonRoom.all)
12
13
  end
13
14
 
@@ -25,6 +26,7 @@ class Bigbluebutton::RoomsController < ApplicationController
25
26
 
26
27
  def create
27
28
  @room = BigbluebuttonRoom.new(params[:bigbluebutton_room])
29
+ @room.server = @server
28
30
 
29
31
  if !params[:bigbluebutton_room].has_key?(:meetingid) or
30
32
  params[:bigbluebutton_room][:meetingid].blank?
@@ -35,7 +37,7 @@ class Bigbluebutton::RoomsController < ApplicationController
35
37
  if @room.save
36
38
  message = t('bigbluebutton_rails.rooms.notice.create.success')
37
39
  format.html {
38
- params[:redir_url] ||= bigbluebutton_room_path(@room)
40
+ params[:redir_url] ||= bigbluebutton_server_room_path(@server, @room)
39
41
  redirect_to params[:redir_url], :notice => message
40
42
  }
41
43
  format.json { render :json => { :message => message }, :status => :created }
@@ -63,7 +65,7 @@ class Bigbluebutton::RoomsController < ApplicationController
63
65
  if @room.update_attributes(params[:bigbluebutton_room])
64
66
  message = t('bigbluebutton_rails.rooms.notice.update.success')
65
67
  format.html {
66
- params[:redir_url] ||= bigbluebutton_room_path(@room)
68
+ params[:redir_url] ||= bigbluebutton_server_room_path(@server, @room)
67
69
  redirect_to params[:redir_url], :notice => message
68
70
  }
69
71
  format.json { render :json => { :message => message } }
@@ -99,7 +101,7 @@ class Bigbluebutton::RoomsController < ApplicationController
99
101
  respond_with do |format|
100
102
  format.html {
101
103
  flash[:error] = message if error
102
- params[:redir_url] ||= bigbluebutton_rooms_url
104
+ params[:redir_url] ||= bigbluebutton_server_rooms_url
103
105
  redirect_to params[:redir_url]
104
106
  }
105
107
  if error
@@ -171,31 +173,24 @@ class Bigbluebutton::RoomsController < ApplicationController
171
173
  end
172
174
  end
173
175
 
174
- # receives :server_id to indicate the server and :meeting to indicate the
175
- # MeetingID of the meeting that should be joined
176
176
  def external
177
177
  if params[:meeting].blank?
178
178
  message = t('bigbluebutton_rails.rooms.errors.external.blank_meetingid')
179
- params[:redir_url] ||= bigbluebutton_rooms_path
179
+ params[:redir_url] ||= bigbluebutton_server_rooms_path(@server)
180
180
  redirect_to params[:redir_url], :notice => message
181
181
  end
182
- @room = BigbluebuttonRoom.new(:server => @server, :meetingid => params[:meeting])
182
+ @room = BigbluebuttonRoom.new(:meetingid => params[:meeting])
183
183
  end
184
184
 
185
185
  # Authenticates an user using name and password passed in the params from #external
186
186
  # Uses params[:meeting] to get the meetingID of the target room
187
187
  def external_auth
188
- # check :meeting and :user
189
188
  if !params[:meeting].blank? && !params[:user].blank?
190
189
  @server.fetch_meetings
191
190
  @room = @server.meetings.select{ |r| r.meetingid == params[:meeting] }.first
192
- message = t('bigbluebutton_rails.rooms.errors.external.inexistent_meeting') if @room.nil?
193
191
  else
194
- message = t('bigbluebutton_rails.rooms.errors.external.wrong_params')
195
- end
196
-
197
- unless message.nil?
198
192
  @room = nil
193
+ message = t('bigbluebutton_rails.rooms.errors.auth.wrong_params')
199
194
  redirect_to request.referer, :notice => message
200
195
  return
201
196
  end
@@ -260,7 +255,7 @@ class Bigbluebutton::RoomsController < ApplicationController
260
255
  else
261
256
  respond_with do |format|
262
257
  format.html {
263
- redirect_to(bigbluebutton_room_path(@room), :notice => message)
258
+ redirect_to(bigbluebutton_server_room_path(@server, @room), :notice => message)
264
259
  }
265
260
  format.json { render :json => message }
266
261
  end
@@ -269,7 +264,7 @@ class Bigbluebutton::RoomsController < ApplicationController
269
264
  end
270
265
 
271
266
  def join_mobile
272
- @join_url = join_bigbluebutton_room_url(@room, :mobile => '1')
267
+ @join_url = join_bigbluebutton_server_room_url(@server, @room, :mobile => '1')
273
268
  @join_url.gsub!(/http:\/\//i, "bigbluebutton://")
274
269
 
275
270
  # TODO: we can't use the mconf url because the mobile client scanning the qrcode is not
@@ -285,7 +280,11 @@ class Bigbluebutton::RoomsController < ApplicationController
285
280
  end
286
281
 
287
282
  def find_server
288
- @server = BigbluebuttonServer.find(params[:server_id])
283
+ if params.has_key?(:server_id)
284
+ @server = BigbluebuttonServer.find_by_param(params[:server_id])
285
+ else
286
+ @server = BigbluebuttonServer.first
287
+ end
289
288
  end
290
289
 
291
290
  def join_internal(username, role, wait_action)
@@ -1,8 +1,8 @@
1
1
  class Bigbluebutton::ServersController < ApplicationController
2
2
 
3
3
  respond_to :html
4
- respond_to :json, :only => [:index, :show, :new, :create, :update, :destroy, :activity, :rooms]
5
- before_filter :find_server, :only => [:show, :edit, :activity, :update, :destroy, :rooms]
4
+ respond_to :json, :only => [:index, :show, :new, :create, :update, :destroy, :activity]
5
+ before_filter :find_server, :only => [:show, :edit, :activity, :update, :destroy]
6
6
 
7
7
  def index
8
8
  respond_with(@servers = BigbluebuttonServer.all)
@@ -97,10 +97,6 @@ class Bigbluebutton::ServersController < ApplicationController
97
97
  end
98
98
  end
99
99
 
100
- def rooms
101
- respond_with(@rooms = @server.rooms)
102
- end
103
-
104
100
  protected
105
101
 
106
102
  def find_server
@@ -2,6 +2,7 @@ class BigbluebuttonRoom < ActiveRecord::Base
2
2
  belongs_to :server, :class_name => 'BigbluebuttonServer'
3
3
  belongs_to :owner, :polymorphic => true
4
4
 
5
+ validates :server_id, :presence => true
5
6
  validates :meetingid, :presence => true, :uniqueness => true,
6
7
  :length => { :minimum => 1, :maximum => 100 }
7
8
  validates :name, :presence => true, :uniqueness => true,
@@ -63,8 +64,6 @@ class BigbluebuttonRoom < ActiveRecord::Base
63
64
  #
64
65
  # Triggers API call: <tt>get_meeting_info</tt>.
65
66
  def fetch_meeting_info
66
- require_server
67
-
68
67
  response = self.server.api.get_meeting_info(self.meetingid, self.moderator_password)
69
68
 
70
69
  @participant_count = response[:participantCount]
@@ -87,7 +86,6 @@ class BigbluebuttonRoom < ActiveRecord::Base
87
86
  #
88
87
  # Triggers API call: <tt>is_meeting_running</tt>.
89
88
  def fetch_is_running?
90
- require_server
91
89
  @running = self.server.api.is_meeting_running?(self.meetingid)
92
90
  end
93
91
 
@@ -95,25 +93,17 @@ class BigbluebuttonRoom < ActiveRecord::Base
95
93
  #
96
94
  # Triggers API call: <tt>end_meeting</tt>.
97
95
  def send_end
98
- require_server
99
96
  self.server.api.end_meeting(self.meetingid, self.moderator_password)
100
97
  end
101
98
 
102
99
  # Sends a call to the BBB server to create the meeting.
103
100
  #
104
- # Will trigger 'select_server' to select a server where the meeting
105
- # will be created. If a server is selected, the model is saved.
106
- #
107
101
  # With the response, updates the following attributes:
108
102
  # * <tt>attendee_password</tt>
109
103
  # * <tt>moderator_password</tt>
110
104
  #
111
105
  # Triggers API call: <tt>create_meeting</tt>.
112
106
  def send_create
113
- # updates the server whenever a meeting will be created
114
- self.server = select_server
115
- self.save unless self.new_record?
116
- require_server
117
107
 
118
108
  unless self.randomize_meetingid
119
109
  response = do_create_meeting
@@ -155,8 +145,6 @@ class BigbluebuttonRoom < ActiveRecord::Base
155
145
  #
156
146
  # Uses the API but does not require a request to the server.
157
147
  def join_url(username, role, password=nil)
158
- require_server
159
-
160
148
  case role
161
149
  when :moderator
162
150
  self.server.api.join_meeting_url(self.meetingid, username, self.moderator_password)
@@ -246,28 +234,6 @@ class BigbluebuttonRoom < ActiveRecord::Base
246
234
 
247
235
  protected
248
236
 
249
- # Every room needs a server to be used.
250
- # The server of a room can change during the room's lifespan, but
251
- # it should not change if the room is running or if it was created
252
- # but not yet ended.
253
- # Any action that requires a server should call 'require_server' before
254
- # anything else.
255
- def require_server
256
- if self.server.nil?
257
- msg = I18n.t('bigbluebutton_rails.rooms.errors.server.not_set')
258
- raise BigbluebuttonRails::ServerRequired.new(msg)
259
- end
260
- end
261
-
262
- # This method can be overridden to change the way the server is selected
263
- # before a room is created
264
- # This one selects the server with less rooms in it
265
- def select_server
266
- BigbluebuttonServer.
267
- select("bigbluebutton_servers.*, count(bigbluebutton_rooms.id) as room_count").
268
- joins(:rooms).group(:server_id).order("room_count ASC").first
269
- end
270
-
271
237
  def init
272
238
  self[:meetingid] ||= random_meetingid
273
239
  self[:voice_bridge] ||= random_voice_bridge
@@ -4,7 +4,7 @@ class BigbluebuttonServer < ActiveRecord::Base
4
4
  has_many :rooms,
5
5
  :class_name => 'BigbluebuttonRoom',
6
6
  :foreign_key => 'server_id',
7
- :dependent => :nullify
7
+ :dependent => :destroy
8
8
 
9
9
  validates :name,
10
10
  :presence => true,
@@ -1,10 +1,10 @@
1
1
  <% if @room.new_record? %>
2
- <% url = bigbluebutton_rooms_path %>
2
+ <% url = bigbluebutton_server_rooms_path(@server) %>
3
3
  <% else %>
4
- <% url = bigbluebutton_room_path(@room) %>
4
+ <% url = bigbluebutton_server_room_path(@server, @room) %>
5
5
  <% end %>
6
6
 
7
- <%= form_for @room, :url => url do |f| %>
7
+ <%= form_for [@server, @room], :url => url do |f| %>
8
8
  <% if @room.errors.any? %>
9
9
  <div id="error_explanation">
10
10
  <h2><%= pluralize(@room.errors.count, "error") %>:</h2>
@@ -16,10 +16,6 @@
16
16
  </div>
17
17
  <% end %>
18
18
 
19
- <div class="field">
20
- <%= f.label :server_id %><br />
21
- <%= f.text_field :server_id %>
22
- </div>
23
19
  <div class="field">
24
20
  <%= f.label :name %><br />
25
21
  <%= f.text_field :name %>
@@ -1,6 +1,6 @@
1
1
  <h1>Edit <%= BigbluebuttonRoom.model_name.human %>:</h1>
2
2
  <%= render 'form' %>
3
3
 
4
- <%= link_to 'Show', bigbluebutton_room_path(@room) %> |
5
- <%= link_to 'Back', bigbluebutton_rooms_path %>
4
+ <%= link_to 'Show', bigbluebutton_server_room_path(@server, @room) %> |
5
+ <%= link_to 'Back', bigbluebutton_server_rooms_path %>
6
6
 
@@ -4,8 +4,7 @@
4
4
 
5
5
  <p>This meeting was created from another application.<br/>You must provide a name and a password to join:</p>
6
6
 
7
- <%= form_tag external_bigbluebutton_rooms_path do %>
8
- <%= hidden_field_tag "server_id", params[:server_id] %>
7
+ <%= form_tag external_bigbluebutton_server_rooms_path(@server) do %>
9
8
  <%= hidden_field_tag "meeting", params[:meeting] %>
10
9
 
11
10
  <div class="field">
@@ -1,2 +1,37 @@
1
- <h1>Listing rooms:</h1>
2
- <%= render 'rooms' %>
1
+ <h1>Listing <%= BigbluebuttonRoom.model_name.human %>:</h1>
2
+
3
+ <div id="bbbrails_rooms_links">
4
+ <%= link_to 'Back to server', bigbluebutton_server_path(@server) %> |
5
+ <%= link_to 'Back to server list', bigbluebutton_servers_path %><br/>
6
+ <%= link_to 'New room', new_bigbluebutton_server_room_path %>
7
+ </div>
8
+
9
+ <ul id="bbbrails_rooms_list">
10
+ <% @rooms.each do |room| %>
11
+ <li>
12
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:server_id) %></label> <%= room.server_id %></div>
13
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:meetingid) %></label> <%= room.meetingid %></div>
14
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:randomize_meetingid) %></label> <%= room.randomize_meetingid %></div>
15
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:name) %></label> <%= room.name %></div>
16
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:private) %></label> <%= room.private %></div>
17
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:attendee_password) %></label> <%= room.attendee_password %></div>
18
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:moderator_password) %></label> <%= room.moderator_password %></div>
19
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:welcome_msg) %></label> <%= room.welcome_msg %></div>
20
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:logout_url) %></label> <%= room.logout_url %></div>
21
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:dial_number) %></label> <%= room.dial_number %></div>
22
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:voice_bridge) %></label> <%= room.voice_bridge %></div>
23
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:max_participants) %></label> <%= room.max_participants %></div>
24
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:external) %></label> <%= room.external %></div>
25
+ <div class="field"><label><%= BigbluebuttonRoom.human_attribute_name(:param) %></label> <%= room.param %></div>
26
+ <div class="field"><label>Access</label>
27
+ <%= link_to 'Show', bigbluebutton_server_room_path(@server, room) %> |
28
+ <%= link_to 'Join', join_bigbluebutton_server_room_path(@server, room) %> |
29
+ <%= link_to 'Invite', invite_bigbluebutton_server_room_path(@server, room) %> |
30
+ <%= link_to 'Mobile Join', join_mobile_bigbluebutton_server_room_path(@server, room) %> |
31
+ <%= link_to 'Edit', edit_bigbluebutton_server_room_path(@server, room) %> |
32
+ <%= link_to 'End', end_bigbluebutton_server_room_path(@server, room), :confirm => 'Are you sure?' %> |
33
+ <%= link_to 'Destroy', bigbluebutton_server_room_path(@server, room), :confirm => 'Are you sure?', :method => :delete %>
34
+ </div>
35
+ </li>
36
+ <% end %>
37
+ </ul>
@@ -2,7 +2,7 @@
2
2
 
3
3
  function ajax_request() {
4
4
  $.ajax({
5
- url: "<%= running_bigbluebutton_room_url(@room, :format => 'json') %>",
5
+ url: "<%= running_bigbluebutton_server_room_url(@server, @room, :format => 'json') %>",
6
6
  dataType: 'json',
7
7
  error: function(xhr_data) {
8
8
  $("#meeting_status").html("<request error>.");
@@ -33,7 +33,7 @@ $(document).ready(function(){
33
33
  <p>Meeting status: <span id="meeting_status">-</span> (<a href="javascript:ajax_request();">refresh</a>)</p>
34
34
  <p><%= @room.name %> requires a name and/or password to join:</p>
35
35
 
36
- <%= form_tag join_bigbluebutton_room_path(@room) do %>
36
+ <%= form_tag join_bigbluebutton_server_room_path(@server, @room) do %>
37
37
 
38
38
  <div class="field">
39
39
  <label for="user_name">Name:</label><br />
@@ -2,7 +2,7 @@
2
2
 
3
3
  function ajax_request() {
4
4
  $.ajax({
5
- url: "<%= running_bigbluebutton_room_url(@room, :format => 'json') %>",
5
+ url: "<%= running_bigbluebutton_server_room_url(@server, @room, :format => 'json') %>",
6
6
  dataType: 'json',
7
7
  error: function(xhr_data) {
8
8
  //
@@ -2,4 +2,4 @@
2
2
 
3
3
  <%= render 'form' %>
4
4
 
5
- <%= link_to 'Back', bigbluebutton_rooms_path %>
5
+ <%= link_to 'Back', bigbluebutton_server_rooms_path %>
@@ -8,7 +8,7 @@
8
8
  </p>
9
9
  <p>
10
10
  <b><%= BigbluebuttonRoom.human_attribute_name(:server_id) %>:</b>
11
- <%= @room.server_id %>
11
+ <%= @room.server.id %>
12
12
  </p>
13
13
  <p>
14
14
  <b><%= BigbluebuttonRoom.human_attribute_name(:meetingid) %>:</b>
@@ -59,15 +59,9 @@
59
59
  <%= @room.param %>
60
60
  </p>
61
61
 
62
- <%= link_to 'Edit', edit_bigbluebutton_room_path(@room) %> |
63
- <%= link_to 'Back', bigbluebutton_rooms_path %>
62
+ <%= link_to 'Edit', edit_bigbluebutton_server_room_path(@room.server, @room) %> |
63
+ <%= link_to 'Back', bigbluebutton_server_rooms_path(@room.server) %>
64
64
 
65
65
  <br/>
66
66
 
67
- <span>Access:</span>
68
- <%= link_to 'Show', bigbluebutton_room_path(@room) %> |
69
- <%= link_to 'Join', join_bigbluebutton_room_path(@room) %> |
70
- <%= link_to 'Invite', invite_bigbluebutton_room_path(@room) %> |
71
- <%= link_to 'Mobile Join', join_mobile_bigbluebutton_room_path(@room) %> |
72
- <%= link_to 'End', end_bigbluebutton_room_path(@room), :confirm => 'Are you sure?' %> |
73
- <%= link_to 'Destroy', bigbluebutton_room_path(@room), :confirm => 'Are you sure?', :method => :delete %>
67
+ <%= link_to 'Join', join_bigbluebutton_server_room_path(@room.server, @room) %>
@@ -3,14 +3,14 @@
3
3
  <div class="title_bar">
4
4
  <% unless room.new_record? %>
5
5
  <div class="button_bar">
6
- <%= link_to 'Show', bigbluebutton_room_path(room) %>
7
- <%= link_to 'Edit', edit_bigbluebutton_room_path(room) %>
8
- <%= link_to 'Destroy', bigbluebutton_room_path(room), :confirm => 'Are you sure?', :method => :delete %>
6
+ <%= link_to 'Show', bigbluebutton_server_room_path(server, room) %>
7
+ <%= link_to 'Edit', edit_bigbluebutton_server_room_path(server, room) %>
8
+ <%= link_to 'Destroy', bigbluebutton_server_room_path(server, room), :confirm => 'Are you sure?', :method => :delete %>
9
9
  </div>
10
10
  <div class="button_bar">
11
- <%= link_to 'Join', join_bigbluebutton_room_path(room) %>
12
- <%= link_to 'Mobile Join', join_mobile_bigbluebutton_room_path(room) %>
13
- <%= link_to 'End', end_bigbluebutton_room_path(room), :confirm => 'Are you sure?' %>
11
+ <%= link_to 'Join', join_bigbluebutton_server_room_path(server, room) %>
12
+ <%= link_to 'Mobile Join', join_mobile_bigbluebutton_server_room_path(server, room) %>
13
+ <%= link_to 'End', end_bigbluebutton_server_room_path(server, room), :confirm => 'Are you sure?' %>
14
14
  </div>
15
15
  <% end %>
16
16
  <b><%= room.name %></b> (ID: <%= room.meetingid %>) -
@@ -1,8 +1,7 @@
1
1
  <h1>Listing <%= BigbluebuttonServer.model_name.human %>:</h1>
2
2
 
3
3
  <div id="bbbrails_servers_links">
4
- <%= link_to('View rooms list', bigbluebutton_rooms_path) %><br/>
5
- <%= link_to('New server', new_bigbluebutton_server_path) %>
4
+ <%= link_to 'New server', new_bigbluebutton_server_path %>
6
5
  </div>
7
6
 
8
7
  <ul id="bbbrails_servers_list">
@@ -15,10 +14,10 @@
15
14
  <div><label><%= BigbluebuttonServer.human_attribute_name(:param) %></label> <%= server.param %></div>
16
15
  <div><label>Access</label>
17
16
  <%= link_to 'Show', server %> |
18
- <%= link_to 'View rooms', rooms_bigbluebutton_server_path(server) %> |
17
+ <%= link_to 'View rooms', bigbluebutton_server_rooms_path(server) %> |
19
18
  <%= link_to 'Activity monitor', activity_bigbluebutton_server_path(server) %> |
20
19
  <%= link_to 'Edit', edit_bigbluebutton_server_path(server) %> |
21
- <%= link_to 'Destroy', bigbluebutton_server_path(server), :confirm => 'Are you sure?', :method => :delete %>
20
+ <%= link_to 'Destroy', server, :confirm => 'Are you sure?', :method => :delete %>
22
21
  </div>
23
22
  </li>
24
23
  <% end %>
@@ -29,7 +29,8 @@
29
29
 
30
30
 
31
31
  <%= link_to 'Edit', edit_bigbluebutton_server_path(@server) %> |
32
- <%= link_to 'View rooms', rooms_bigbluebutton_server_path(@server) %> |
33
- <%= link_to 'Activity monitor', activity_bigbluebutton_server_path(@server) %> |
34
- <%= link_to 'Destroy', bigbluebutton_server_path(@server), :confirm => 'Are you sure?', :method => :delete %> |
35
32
  <%= link_to 'Back', bigbluebutton_servers_path %>
33
+
34
+ <br/>
35
+
36
+ <%= link_to 'New room', new_bigbluebutton_server_room_path(@server) %>
@@ -27,14 +27,10 @@ en:
27
27
  auth:
28
28
  failure: "Authentication failure."
29
29
  not_running: "The meeting is not running. You must wait for a moderator to join."
30
- wrong_params: "Wrong parameters in your request."
30
+ wrong_params: "Wrong params in your request."
31
31
  external:
32
- blank_meetingid: "You must specify the meetingid of the meeting you want to join."
33
- inexistent_meeting: "The meeting informed does not exists in the server."
34
- wrong_params: "Wrong parameters in your request."
35
- param_format: 'you can only use letters, numbers and the symbols "-" or "_" (not at the begin or end).'
36
- server:
37
- not_set: "Your room must be associated to a server to execute this operation."
32
+ blank_meetingid: "You must specify the meetingid of the meeting you want to join"
33
+ param_format: 'you can only use letters, numbers and the symbols "-" or "_" (not at the begin or end)'
38
34
 
39
35
  activerecord:
40
36
  models: