bigbluebutton_rails 1.4.0 → 2.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 (125) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +10 -1
  4. data/CHANGELOG.md +259 -0
  5. data/Gemfile +14 -19
  6. data/Gemfile.lock +194 -188
  7. data/README.md +416 -0
  8. data/Rakefile +12 -12
  9. data/TODO.md +13 -0
  10. data/app/controllers/bigbluebutton/playback_types_controller.rb +44 -0
  11. data/app/controllers/bigbluebutton/recordings_controller.rb +17 -10
  12. data/app/controllers/bigbluebutton/rooms_controller.rb +65 -36
  13. data/app/controllers/bigbluebutton/servers_controller.rb +12 -8
  14. data/app/models/bigbluebutton_metadata.rb +1 -1
  15. data/app/models/bigbluebutton_playback_format.rb +22 -1
  16. data/app/models/bigbluebutton_playback_type.rb +29 -0
  17. data/app/models/bigbluebutton_recording.rb +38 -19
  18. data/app/models/bigbluebutton_room.rb +150 -73
  19. data/app/models/bigbluebutton_room_options.rb +10 -7
  20. data/app/models/bigbluebutton_server.rb +69 -13
  21. data/app/models/bigbluebutton_server_config.rb +49 -0
  22. data/app/views/bigbluebutton/recordings/_form.html.erb +4 -0
  23. data/app/views/bigbluebutton/recordings/_recordings.html.erb +10 -3
  24. data/app/views/bigbluebutton/rooms/_form.html.erb +18 -6
  25. data/app/views/bigbluebutton/rooms/_rooms.html.erb +6 -3
  26. data/app/views/bigbluebutton/rooms/invite.html.erb +5 -5
  27. data/app/views/bigbluebutton/rooms/show.html.erb +18 -6
  28. data/app/views/bigbluebutton/servers/_form.html.erb +1 -1
  29. data/app/views/bigbluebutton/servers/show.html.erb +5 -0
  30. data/app/workers/bigbluebutton_finish_meetings.rb +11 -0
  31. data/app/workers/bigbluebutton_update_recordings.rb +11 -0
  32. data/app/workers/bigbluebutton_update_server_configs.rb +18 -0
  33. data/bigbluebutton_rails.gemspec +8 -7
  34. data/config/locales/en.yml +52 -7
  35. data/config/locales/pt-br.yml +162 -0
  36. data/config/resque/resque.rake +27 -0
  37. data/config/resque/workers_schedule.yml +17 -0
  38. data/lib/bigbluebutton_rails.rb +30 -2
  39. data/lib/bigbluebutton_rails/background_tasks.rb +31 -0
  40. data/lib/bigbluebutton_rails/controller_methods.rb +12 -8
  41. data/lib/bigbluebutton_rails/dial_number.rb +48 -0
  42. data/lib/bigbluebutton_rails/rails/routes.rb +9 -2
  43. data/lib/bigbluebutton_rails/utils.rb +9 -2
  44. data/lib/bigbluebutton_rails/version.rb +1 -1
  45. data/lib/generators/bigbluebutton_rails/install_generator.rb +0 -8
  46. data/lib/generators/bigbluebutton_rails/templates/migration.rb +28 -6
  47. data/lib/generators/bigbluebutton_rails/templates/migration_2_0_0.rb +56 -0
  48. data/lib/tasks/bigbluebutton_rails/meetings.rake +1 -13
  49. data/lib/tasks/bigbluebutton_rails/recordings.rake +1 -12
  50. data/lib/tasks/bigbluebutton_rails/server_configs.rake +10 -0
  51. data/spec/bigbluebutton_rails_spec.rb +0 -13
  52. data/spec/controllers/bigbluebutton/playback_types_controller_spec.rb +76 -0
  53. data/spec/controllers/bigbluebutton/recordings_controller_spec.rb +109 -37
  54. data/spec/controllers/bigbluebutton/rooms_controller_exception_handling_spec.rb +1 -0
  55. data/spec/controllers/bigbluebutton/rooms_controller_json_responses_spec.rb +27 -3
  56. data/spec/controllers/bigbluebutton/rooms_controller_spec.rb +338 -77
  57. data/spec/controllers/bigbluebutton/servers_controller_json_responses_spec.rb +8 -0
  58. data/spec/controllers/bigbluebutton/servers_controller_spec.rb +182 -47
  59. data/spec/factories/bigbluebutton_meeting.rb +2 -2
  60. data/spec/factories/bigbluebutton_playback_format.rb +2 -2
  61. data/spec/factories/bigbluebutton_playback_type.rb +7 -0
  62. data/spec/factories/bigbluebutton_recording.rb +8 -0
  63. data/spec/factories/bigbluebutton_room.rb +10 -3
  64. data/spec/factories/bigbluebutton_server.rb +6 -1
  65. data/spec/factories/bigbluebutton_server_config.rb +6 -0
  66. data/spec/generators/install_generator_spec.rb +0 -16
  67. data/spec/lib/bigbluebutton_rails/background_tasks_spec.rb +61 -0
  68. data/spec/lib/bigbluebutton_rails/dial_number_spec.rb +78 -0
  69. data/spec/lib/bigbluebutton_rails/utils_spec.rb +56 -0
  70. data/spec/lib/tasks/meetings_rake_spec.rb +14 -1
  71. data/spec/lib/tasks/recordings_rake_spec.rb +14 -1
  72. data/spec/models/bigbluebutton_meeting_db_spec.rb +3 -3
  73. data/spec/models/bigbluebutton_meeting_spec.rb +4 -4
  74. data/spec/models/bigbluebutton_playback_format_db_spec.rb +0 -1
  75. data/spec/models/bigbluebutton_playback_format_spec.rb +75 -4
  76. data/spec/models/bigbluebutton_playback_type_db_spec.rb +14 -0
  77. data/spec/models/bigbluebutton_playback_type_spec.rb +76 -0
  78. data/spec/models/bigbluebutton_recording_db_spec.rb +3 -1
  79. data/spec/models/bigbluebutton_recording_spec.rb +234 -58
  80. data/spec/models/bigbluebutton_room_db_spec.rb +8 -6
  81. data/spec/models/bigbluebutton_room_options_db_spec.rb +1 -0
  82. data/spec/models/bigbluebutton_room_options_spec.rb +137 -38
  83. data/spec/models/bigbluebutton_room_spec.rb +540 -153
  84. data/spec/models/bigbluebutton_server_config_spec.rb +115 -0
  85. data/spec/models/bigbluebutton_server_spec.rb +180 -23
  86. data/spec/rails_app/app/controllers/my_playback_types_controller.rb +7 -0
  87. data/spec/rails_app/app/views/frontpage/show.html.erb +1 -0
  88. data/spec/rails_app/app/views/my_playback_types/index.html.erb +33 -0
  89. data/spec/rails_app/config/application.rb +0 -3
  90. data/spec/rails_app/config/database.yml.travis +10 -0
  91. data/spec/rails_app/config/environments/development.rb +1 -6
  92. data/spec/rails_app/config/environments/production.rb +2 -0
  93. data/spec/rails_app/config/environments/test.rb +2 -0
  94. data/spec/rails_app/config/routes.rb +5 -2
  95. data/spec/rails_app/db/seeds.rb +1 -1
  96. data/spec/rails_app/features/config.yml.example +3 -4
  97. data/spec/rails_app/features/join_rooms.feature +14 -14
  98. data/spec/rails_app/features/step_definitions/activity_monitor_servers_step.rb +2 -2
  99. data/spec/rails_app/features/step_definitions/create_rooms_steps.rb +4 -4
  100. data/spec/rails_app/features/step_definitions/destroy_rooms_steps.rb +2 -2
  101. data/spec/rails_app/features/step_definitions/join_rooms_steps.rb +10 -10
  102. data/spec/rails_app/features/step_definitions/web_steps.rb +2 -2
  103. data/spec/rails_app/features/support/configurations.rb +1 -1
  104. data/spec/rails_app/features/support/templates.rb +12 -12
  105. data/spec/rails_app/lib/tasks/db/populate.rake +19 -6
  106. data/spec/routing/bigbluebutton/custom_controllers_routing_spec.rb +1 -1
  107. data/spec/routing/bigbluebutton/recordings_only_routing_spec.rb +2 -2
  108. data/spec/routing/bigbluebutton/recordings_routing_spec.rb +2 -2
  109. data/spec/routing/bigbluebutton/rooms_only_routing_spec.rb +1 -1
  110. data/spec/routing/bigbluebutton/rooms_routing_spec.rb +15 -1
  111. data/spec/routing/bigbluebutton/servers_only_routing_spec.rb +1 -1
  112. data/spec/routing/bigbluebutton/servers_routing_spec.rb +1 -1
  113. data/spec/spec_helper.rb +23 -31
  114. data/spec/support/matchers/delegate_matcher.rb +8 -1
  115. data/spec/support/matchers/shoulda/respond_with_json_matcher.rb +2 -2
  116. data/spec/support/mocked_server.rb +2 -0
  117. data/spec/support/shared_contexts/rake.rb +23 -0
  118. data/spec/workers/bigbluebutton_finish_meetings_spec.rb +14 -0
  119. data/spec/workers/bigbluebutton_update_recordings_spec.rb +14 -0
  120. data/spec/workers/bigbluebutton_update_server_configs_spec.rb +47 -0
  121. metadata +70 -59
  122. data/CHANGELOG.rdoc +0 -111
  123. data/README.rdoc +0 -319
  124. data/TODO.rdoc +0 -16
  125. data/config/schedule.rb +0 -7
@@ -0,0 +1,11 @@
1
+ # A resque worker to get the list of recordings from the server and update
2
+ # the database.
3
+ # Same as "rake bigbluebutton_rails:recordings:update".
4
+ class BigbluebuttonUpdateRecordings
5
+ @queue = :bigbluebutton_rails
6
+
7
+ def self.perform
8
+ Rails.logger.info "BigbluebuttonUpdateRecordings worker running"
9
+ BigbluebuttonRails::BackgroundTasks.update_recordings
10
+ end
11
+ end
@@ -0,0 +1,18 @@
1
+ # A resque worker to get the server configs from time to time (information such
2
+ # as available layouts are updated).
3
+ class BigbluebuttonUpdateServerConfigs
4
+ @queue = :bigbluebutton_rails
5
+
6
+ def self.perform
7
+ Rails.logger.info "BigbluebuttonUpdateServerConfigs worker running"
8
+ BigbluebuttonServer.find_each do |server|
9
+ Rails.logger.info "BigbluebuttonUpdateServerConfigs updating configs for #{server.inspect}"
10
+
11
+ # update configs
12
+ server.update_config
13
+
14
+ # update API version
15
+ server.update_attributes(version: server.set_api_version_from_server)
16
+ end
17
+ end
18
+ end
@@ -8,17 +8,18 @@ Gem::Specification.new do |s|
8
8
  s.summary = "BigBlueButton integration for Ruby on Rails"
9
9
  s.email = "mconf-dev@googlegroups.com"
10
10
  s.homepage = "http://github.com/mconf/bigbluebutton_rails"
11
- s.description = "It allows you to interact with BigBlueButton from your Ruby on Rails application"
12
- s.authors = ['Mconf', 'Leonardo Crauss Daronco']
13
- s.license = 'MIT'
11
+ s.description = "Allows access and use of BigBlueButton from a Ruby on Rails application"
12
+ s.authors = ["Mconf", "Leonardo Crauss Daronco"]
13
+ s.email = ["contact@mconf.org", "leonardodaronco@gmail.com"]
14
+ s.license = "MIT"
14
15
 
15
16
  s.files = `git ls-files`.split("\n")
16
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
18
  s.require_paths = ["lib"]
18
19
 
19
- s.add_dependency("rails", ">= 3.0.0")
20
- s.add_dependency("bigbluebutton-api-ruby", "~> 1.3.0")
21
- s.add_dependency("strong_parameters", "~> 0.2.0")
20
+ s.add_dependency("rails", ">= 4.0.0")
21
+ s.add_dependency("bigbluebutton-api-ruby", "~> 1.4.0")
22
22
  s.add_dependency("resque", "~> 1.25.1")
23
- s.add_dependency("browser", "~> 0.5.0")
23
+ s.add_dependency("resque-scheduler", "~> 3.0")
24
+ s.add_dependency("browser", "~> 0.8.0")
24
25
  end
@@ -10,6 +10,10 @@ en:
10
10
  format_type: Type
11
11
  length: Length
12
12
  url: URL
13
+ bigbluebutton_playback_type:
14
+ default: Default
15
+ name: Name
16
+ visible: Visible
13
17
  bigbluebutton_recording:
14
18
  description: "Description"
15
19
  end_time: "End Time"
@@ -20,9 +24,17 @@ en:
20
24
  recordid: "Record ID"
21
25
  room_id: "Room ID"
22
26
  server_id: "Server ID"
27
+ size: "Size"
23
28
  start_time: "Start Time"
24
29
  bigbluebutton_room:
25
- attendee_password: "Attendee Password"
30
+ allow_start_stop_recording: "Allow users to start/stop recording"
31
+ attendee_api_password: "Internal API key for attendees"
32
+ attendee_key: "Key for attendees"
33
+ auto_start_video: "Auto start video"
34
+ auto_start_audio: "Auto start audio"
35
+ auto_start_recording: "Auto start recording"
36
+ background: "Background image"
37
+ default_layout: "Default Layout"
26
38
  dial_number: "Dial Number"
27
39
  duration: Duration
28
40
  external: "Externally Created"
@@ -30,10 +42,13 @@ en:
30
42
  max_participants: "Maximum Number of Participants"
31
43
  meetingid: "Meeting ID"
32
44
  metadata: Metadata
33
- moderator_password: "Moderator Password"
45
+ moderator_api_password: "Internal API key for moderators"
46
+ moderator_key: "Key for moderators"
47
+ moderator_only_message: "Message to be shown to moderators only"
34
48
  name: Name
35
49
  param: "String ID"
36
50
  private: Private
51
+ presenter_share_only: "Only presenter shares audio and video"
37
52
  record: Record
38
53
  server_id: "Server ID"
39
54
  voice_bridge: "Voice Bridge"
@@ -44,17 +59,33 @@ en:
44
59
  salt: "Security Salt"
45
60
  url: URL
46
61
  version: Version
62
+ bigbluebutton_server_config:
63
+ available_layouts: "Available layouts"
47
64
  models:
48
- bigbluebutton_metadata: "BigBlueButton Recording Metadata"
49
- bigbluebutton_playback_format: "BigBlueButton Recording Playback Format"
50
- bigbluebutton_recording: "BigBlueButton Recording"
51
- bigbluebutton_room: "BigBlueButton Room"
52
- bigbluebutton_server: "BigBlueButton Server"
65
+ bigbluebutton_metadata: "Web Conference Recording Metadata"
66
+ bigbluebutton_playback_format: "Web Conference Recording Playback Format"
67
+ bigbluebutton_recording: "Web Conference Recording"
68
+ bigbluebutton_room: "Web Conference Room"
69
+ bigbluebutton_server: "Web Conference Server"
70
+ bigbluebutton_server_config: "Web Conference Server Configurations"
53
71
  bigbluebutton_rails:
54
72
  bigbluebutton: BigBlueButton
55
73
  metadata:
56
74
  errors:
57
75
  name_format: "can only use letters, numbers and the symbols \"-\" or \"_\", but only letters at the beginning"
76
+ playback_types:
77
+ notice:
78
+ update:
79
+ success: "The playback type was successfully updated."
80
+ presentation:
81
+ name: "Play"
82
+ tip: "Plays the recording in an HTML5 page. The recording is not downloaded to your computer and will require Internet to be reproduced."
83
+ presentation_export:
84
+ name: "Download HTML"
85
+ tip: "Downloads an HTML page that you can use to reproduce the recording offline using your browser. Has all the features of the HTML player online plus the advantage of also working offline. Currently can only be reproduced using the Firefox browser."
86
+ presentation_video:
87
+ name: "Download"
88
+ tip: "Downloads a vídeo file (uses the WebM format) with the recording. You can use this video file to watch the recording offline and to share this recording in other websites."
58
89
  recordings:
59
90
  default:
60
91
  description: "Meeting held on %{time} (UTC)"
@@ -74,6 +105,8 @@ en:
74
105
  update:
75
106
  success: "Your recording was successfully updated."
76
107
  rooms:
108
+ default_welcome_msg: "Welcome to <b>%%CONFNAME%%</b>!<br><br>To join the audio bridge click the headset icon (upper-left hand corner). Use a headset to avoid causing background noise for others.<br>"
109
+ default_welcome_msg_dial_number: "Welcome to <b>%%CONFNAME%%</b>!<br><br>To join the audio bridge click the headset icon (upper-left hand corner). Use a headset to avoid causing background noise for others.<br>You can call into this conference with a regular phone using the number \"%%DIALNUM%%\".<br>"
77
110
  errors:
78
111
  fetch_recordings:
79
112
  no_server: "There's no server associated with this room."
@@ -82,6 +115,8 @@ en:
82
115
  failure: "Authentication failure."
83
116
  not_running: "The meeting is not running. You must wait for a moderator to join."
84
117
  wrong_params: "Wrong params in your request."
118
+ generate_dial_number:
119
+ not_unique: "We're sorry, but it wasn't possible to generate a unique dial number for this room. You can either try again or manually set a dial number."
85
120
  param_format: "can only use letters, numbers and the symbols \"-\" or \"_\" (not at the begin or end)"
86
121
  server:
87
122
  nil: "Your room must be associated to a server to execute this operation."
@@ -97,6 +132,8 @@ en:
97
132
  success: "The meeting was successfully ended."
98
133
  fetch_recordings:
99
134
  success: "The list of recordings for this room was successfully updated."
135
+ generate_dial_number:
136
+ success: "A unique dial number was generated and saved."
100
137
  update:
101
138
  failure: "Your room could not be updated."
102
139
  success: "Your room was successfully updated."
@@ -115,3 +152,11 @@ en:
115
152
  success: "Your recordings were successfully unpublished."
116
153
  update:
117
154
  success: "Your server was successfully updated."
155
+ server_configs:
156
+ layouts:
157
+ defaultlayout: "Default Layout"
158
+ lecture: "Lecture"
159
+ lectureassistant: "Lecture Assistant"
160
+ presentfocus: "Webinar"
161
+ videochat: "Video Chat"
162
+ webcamsfocus: "Meeting"
@@ -0,0 +1,162 @@
1
+ ---
2
+ pt-br:
3
+ activerecord:
4
+ attributes:
5
+ bigbluebutton_metadata:
6
+ content: Conteúdo
7
+ name: Nome
8
+ owner: Dono
9
+ bigbluebutton_playback_format:
10
+ format_type: Tipo
11
+ length: Tamanho
12
+ url: URL
13
+ bigbluebutton_playback_type:
14
+ default: "Padrão"
15
+ name: Nome
16
+ visible: "Visível"
17
+ bigbluebutton_recording:
18
+ description: "Descrição"
19
+ end_time: "Horário de Fim"
20
+ meetingid: "ID da Reunião"
21
+ metadata: Metadados
22
+ name: Nome
23
+ published: Publicada
24
+ recordid: "ID da Gravação"
25
+ room_id: "ID da Sala"
26
+ size: "Tamanho"
27
+ server_id: "ID do Servidor"
28
+ start_time: "Horário de Início"
29
+ bigbluebutton_room:
30
+ allow_start_stop_recording: "Permitir ao usuário iniciar/parar a gravação"
31
+ attendee_api_password: "Chave interna da API para participantes"
32
+ attendee_key: "Chave para participantes"
33
+ auto_start_video: "Auto iniciar vídeo"
34
+ auto_start_audio: "Auto iniciar áudio"
35
+ auto_start_recording: "Auto iniciar gravação"
36
+ background: "Imagem de fundo"
37
+ default_layout: "Layout Padrão"
38
+ dial_number: "Número de discagem"
39
+ duration: Duração
40
+ external: "Criada externamente"
41
+ logout_url: "URL de saída"
42
+ max_participants: "Número Máximo de Participantes"
43
+ meetingid: "ID da Reunião"
44
+ metadata: Metadados
45
+ moderator_api_password: "Chave interna da API para moderadores"
46
+ moderator_key: "Chave para moderadores"
47
+ moderator_only_message: "Mensagem mostrada somente aos moderadores"
48
+ name: Nome
49
+ param: Identificador
50
+ private: Privada
51
+ presenter_share_only: "Somente apresentador compartilha áudio e vídeo"
52
+ record: Gravar
53
+ server_id: "ID do Servidor"
54
+ voice_bridge: "Voice Bridge"
55
+ welcome_msg: "Mensagem de boas-vindas"
56
+ bigbluebutton_server:
57
+ name: Nome
58
+ param: Identificador
59
+ salt: "Chave de segurança"
60
+ url: URL
61
+ version: Versão
62
+ bigbluebutton_server_config:
63
+ available_layouts: "Layouts disponíveis"
64
+ models:
65
+ bigbluebutton_metadata: "Metadado de Gravação da Webconferência"
66
+ bigbluebutton_playback_format: "Formato de Reprodução de Webconferência"
67
+ bigbluebutton_recording: "Gravação de Webconferência"
68
+ bigbluebutton_room: "Sala de Webconferência"
69
+ bigbluebutton_server: "Servidor de Webconferência"
70
+ bigbluebutton_server_config: "Configurações do Servidor de Webconferência"
71
+ bigbluebutton_rails:
72
+ bigbluebutton: BigBlueButton
73
+ metadata:
74
+ errors:
75
+ name_format: "pode utilizar apenas letras, números e os símbolos \"-\" ou \"_\", mas apenas letras no início"
76
+ playback_types:
77
+ notice:
78
+ update:
79
+ success: "Formato de reprodução atualizado com sucesso."
80
+ presentation:
81
+ name: "Reproduzir"
82
+ tip: "Reproduz a gravação em uma página HTML5. Não é feito download da gravação para o seu computador, portanto exige internet para a gravação ser reproduzida."
83
+ presentation_export:
84
+ name: "Download HTML"
85
+ tip: "Faz o download de uma página HTML que você pode usar para reproduzir a gravação usando o seu navegador mesmo sem conexão com a internet. Tem todas as características da versão online, mas com a vantagem de não exigir internet. Atualmente só pode ser reproduzida usando o navegador Firefox."
86
+ presentation_video:
87
+ name: "Download"
88
+ tip: "Realiza o download da gravação em um arquivo de vídeo (no formato WebM). Você pode usar esse arquivo de vídeo para assistir a gravação offline e/ou compartilhar esta gravação em outros sites."
89
+ recordings:
90
+ default:
91
+ description: "Reunião realizada em %{time} (UTC)"
92
+ errors:
93
+ check_for_server:
94
+ no_server: "Não há um servidor associado a esta gravação"
95
+ play:
96
+ no_format: "Não há URL de playback para esta gravação"
97
+ notice:
98
+ destroy:
99
+ success: "Sua gravação foi destruída com sucesso."
100
+ success_with_bbb_error: "A gravação foi destruída com sucesso mas não foi removida do servidor de webconferência (\"%{error}\")"
101
+ publish:
102
+ success: "Sua gravação foi publicada com sucesso."
103
+ unpublish:
104
+ success: "Sua gravação foi ocultada com sucesso."
105
+ update:
106
+ success: "Sua gravação foi atualizada com sucesso."
107
+ rooms:
108
+ default_welcome_msg: "Bem-vindo(a) a <b>%%CONFNAME%%</b>!<br><br>Para compartilhar o seu microfone, clique no botão com um headset (à esquerda da barra superior). Use um headset para ter uma melhor experiência de áudio com menos ruídos.<br>"
109
+ default_welcome_msg_dial_number: "Bem-vindo(a) a <b>%%CONFNAME%%</b>!<br><br>Para compartilhar o seu microfone, clique no botão com um headset (à esquerda da barra superior). Use um headset para ter uma melhor experiência de áudio com menos ruídos.<br>Você pode discar para esta conferência através de um telefone usando o número \"%%DIALNUM%%\".<br>"
110
+ errors:
111
+ fetch_recordings:
112
+ no_server: "Não há nenhum servidor associado a esta sala."
113
+ join:
114
+ cannot_create: "Você não tem permissões para iniciar esta reunião."
115
+ failure: "Falha de autenticação."
116
+ not_running: "A reunião não está em andamento. Você deve aguardar por um moderador para ingressar."
117
+ wrong_params: "Parâmetros errados na sua requisição."
118
+ generate_dial_number:
119
+ not_unique: "Desculpe, mas não foi possível gerar um número de discagem único. Você pode tentar novamente ou então atribuir um número manualmente."
120
+ param_format: "você pode usar apenas letras, números e os símbolos \"-\" ou \"_\" (não no começo ou fim)"
121
+ server:
122
+ nil: "Sua sala deve ser associada a um servidor para executar esta operação."
123
+ notice:
124
+ create:
125
+ failure: "Sua sala não pôde ser criada."
126
+ success: "Sua sala foi criada com sucesso."
127
+ destroy:
128
+ success: "A reunião foi destruída com sucesso."
129
+ success_with_bbb_error: "A sala foi destruída com sucesso mas a reunião não foi finalizada no servidor de webconferência (\"%{error}\")"
130
+ end:
131
+ not_running: "A reunião não pôde ser finalizada pois não está em andamento."
132
+ success: "A reunião foi finalizada com sucesso."
133
+ fetch_recordings:
134
+ success: "A lista de gravações para esta sala foi atualizada com sucesso."
135
+ generate_dial_number:
136
+ success: "Um número de discagem único foi gerado e gravado."
137
+ update:
138
+ failure: "Sua sala não pode ser atualizada."
139
+ success: "Sua sala foi atualizada com sucesso."
140
+ servers:
141
+ errors:
142
+ param_format: "você pode usar apenas letras, números e os símbolos \"-\" ou \"_\" (não no começo ou fim)"
143
+ url_format: "deve utilizar o padrão http://<servidor>/bigbluebutton/api"
144
+ notice:
145
+ create:
146
+ success: "Seu servidor foi criado com sucesso."
147
+ fetch_recordings:
148
+ success: "A lista de gravações foi atualizada com sucesso."
149
+ publish_recordings:
150
+ success: "Suas gravações foram publicadas com sucesso."
151
+ unpublish_recordings:
152
+ success: "Suas gravações foram ocultadas com sucesso."
153
+ update:
154
+ success: "Seu servidor foi atualizado."
155
+ server_configs:
156
+ layouts:
157
+ defaultlayout: "Layout Padrão"
158
+ lecture: "Aula"
159
+ lectureassistant: "Assistente de aula"
160
+ presentfocus: "Webinar"
161
+ videochat: "Vídeo Chat"
162
+ webcamsfocus: "Reunião"
@@ -0,0 +1,27 @@
1
+ # Resque tasks
2
+ require 'resque/tasks'
3
+ require 'resque/scheduler/tasks'
4
+
5
+ task "resque:setup" => :environment
6
+
7
+ namespace :resque do
8
+ task :setup do
9
+ require 'resque'
10
+ require 'resque-scheduler'
11
+
12
+ # you probably already have this somewhere
13
+ Resque.redis = 'localhost:6379'
14
+
15
+ # If you want to be able to dynamically change the schedule,
16
+ # uncomment this line. A dynamic schedule can be updated via the
17
+ # Resque::Scheduler.set_schedule (and remove_schedule) methods.
18
+ # When dynamic is set to true, the scheduler process looks for
19
+ # schedule changes and applies them on the fly.
20
+ # Note: This feature is only available in >=2.0.0.
21
+ # Resque::Scheduler.dynamic = true
22
+
23
+ # The schedule doesn't need to be stored in a YAML, it just needs to
24
+ # be a hash. YAML is usually the easiest.
25
+ Resque.schedule = YAML.load_file('config/workers_schedule.yml')
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ finish_meetings:
2
+ every:
3
+ - "5m"
4
+ class: BigbluebuttonFinishMeetings
5
+ description: "Checks for meetings that finished and mark as finished. Same as 'rake bigbluebutton_rails:meetings:finish'."
6
+
7
+ update_recordings:
8
+ every:
9
+ - "30m"
10
+ class: BigbluebuttonUpdateRecordings
11
+ description: "Gets the recordings in the server to populate the db. Same as 'rake bigbluebutton_rails:recordings:update'."
12
+
13
+ update_server_configs:
14
+ every:
15
+ - "1h"
16
+ class: BigbluebuttonUpdateServerConfigs
17
+ description: "Updates the server configs that are stored locally. Same as 'rake bigbluebutton_rails:server_configs:update'."
@@ -3,19 +3,25 @@ require 'rails'
3
3
  require 'classes/bigbluebutton_attendee'
4
4
 
5
5
  module BigbluebuttonRails
6
+ require 'browser'
7
+ require 'resque'
8
+ require 'resque-scheduler'
6
9
  require 'bigbluebutton_rails/rails'
7
10
  require 'bigbluebutton_rails/utils'
8
11
  require 'bigbluebutton_rails/controller_methods'
9
12
  require 'bigbluebutton_rails/internal_controller_methods'
13
+ require 'bigbluebutton_rails/background_tasks'
10
14
  require 'bigbluebutton_rails/rails/routes'
11
15
  require 'bigbluebutton_rails/exceptions'
16
+ require 'bigbluebutton_rails/dial_number'
12
17
 
13
18
  # Default controllers to generate the routes
14
19
  mattr_accessor :controllers
15
20
  @@controllers = {
16
21
  :servers => 'bigbluebutton/servers',
17
22
  :rooms => 'bigbluebutton/rooms',
18
- :recordings => 'bigbluebutton/recordings'
23
+ :recordings => 'bigbluebutton/recordings',
24
+ :playback_types => 'bigbluebutton/playback_types'
19
25
  }
20
26
 
21
27
  # Default scope for routes
@@ -51,6 +57,12 @@ module BigbluebuttonRails
51
57
  @@metadata_user_id,
52
58
  @@metadata_user_name ]
53
59
 
60
+ # Name of the metadata parameter that will contain the room's invitation
61
+ # URL, in case `invitation_url_method` is implemented by the application.
62
+ # Has to be a symbol!
63
+ mattr_accessor :metadata_invitation_url
64
+ @@metadata_invitation_url = :'invitation-url'
65
+
54
66
  # Name of the attribute of a user that defines his name/username.
55
67
  # Has to be a symbol!
56
68
  mattr_accessor :user_attr_name
@@ -61,6 +73,22 @@ module BigbluebuttonRails
61
73
  mattr_accessor :user_attr_id
62
74
  @@user_attr_id = :'id'
63
75
 
76
+ # Name of the method that returns the invitation URL of a room.
77
+ # Must be implemented by the application, there's no default implemented in this gem.
78
+ # Has to be a symbol!
79
+ mattr_accessor :invitation_url_method
80
+ @@invitation_url_method = :'invitation_url'
81
+
82
+ # Whether or not the gem should pass the voice bridges set in the rooms when making
83
+ # API calls. By default it is false, meaning that the voice bridge will never be
84
+ # passed, so it will be generated by the web conference server. Setting it to true
85
+ # will make the voice bridge set locally in the room to be used in the web conference
86
+ # server. Notice that the voice bridge has to be unique in a web conference server, so
87
+ # if you are setting the voice bridges manually, you will also have to make sure that
88
+ # the voice bridges are unique (there's nothing in the gem to guarantee this uniqueness).
89
+ mattr_accessor :use_local_voice_bridges
90
+ @@use_local_voice_bridges = false
91
+
64
92
  # Finds the BigbluebuttonRoom associated with the recording data in 'data', if any.
65
93
  # TODO: if not found, remove the association or keep the old one?
66
94
  def self.match_room_recording(data)
@@ -73,7 +101,7 @@ module BigbluebuttonRails
73
101
 
74
102
  def self.set_controllers(options)
75
103
  unless options.nil?
76
- @@controllers.merge!(options).slice!(:servers, :rooms, :recordings)
104
+ @@controllers.merge!(options).slice!(:servers, :rooms, :recordings, :playback_types)
77
105
  end
78
106
  end
79
107