bigbluebutton_rails 0.1.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: