From 7fadd6be6944ad4463c5e28dc25e3b994ea06d73 Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 13 Jun 2018 14:43:08 -0400 Subject: [PATCH] seperate js in files --- app/assets/javascripts/errors.coffee | 3 -- app/assets/javascripts/main.coffee | 3 -- app/assets/javascripts/main.js | 0 app/assets/javascripts/room.js | 40 +++++++++++++++++++ app/assets/javascripts/rooms.js | 27 ------------- app/assets/javascripts/sessions.coffee | 3 -- app/assets/javascripts/settings.js | 27 +++++++++++++ app/assets/javascripts/users.coffee | 3 -- app/assets/javascripts/wait.js | 38 ++++++++++++++++++ app/models/room.rb | 2 +- app/views/layouts/application.html.erb | 1 - app/views/rooms/show.html.erb | 33 --------------- app/views/rooms/wait.html.erb | 34 ---------------- .../shared/modals/_create_room_modal.html.erb | 4 +- app/views/users/edit.html.erb | 23 ----------- config/initializers/assets.rb | 2 +- 16 files changed, 109 insertions(+), 134 deletions(-) delete mode 100644 app/assets/javascripts/errors.coffee delete mode 100644 app/assets/javascripts/main.coffee create mode 100644 app/assets/javascripts/main.js create mode 100644 app/assets/javascripts/room.js delete mode 100644 app/assets/javascripts/rooms.js delete mode 100644 app/assets/javascripts/sessions.coffee create mode 100644 app/assets/javascripts/settings.js delete mode 100644 app/assets/javascripts/users.coffee create mode 100644 app/assets/javascripts/wait.js diff --git a/app/assets/javascripts/errors.coffee b/app/assets/javascripts/errors.coffee deleted file mode 100644 index 24f83d18..00000000 --- a/app/assets/javascripts/errors.coffee +++ /dev/null @@ -1,3 +0,0 @@ -# Place all the behaviors and hooks related to the matching controller here. -# All this logic will automatically be available in application.js. -# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/main.coffee b/app/assets/javascripts/main.coffee deleted file mode 100644 index 24f83d18..00000000 --- a/app/assets/javascripts/main.coffee +++ /dev/null @@ -1,3 +0,0 @@ -# Place all the behaviors and hooks related to the matching controller here. -# All this logic will automatically be available in application.js. -# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js new file mode 100644 index 00000000..e69de29b diff --git a/app/assets/javascripts/room.js b/app/assets/javascripts/room.js new file mode 100644 index 00000000..b1415cb6 --- /dev/null +++ b/app/assets/javascripts/room.js @@ -0,0 +1,40 @@ +// Room specific js for copy button and email link. + +$(document).on('turbolinks:load', function(){ + var controller = $("body").data('controller'); + var action = $("body").data('action'); + + // Only run on room pages. + if (controller == "rooms" && action == "show"){ + var invite_url; + var copy = $('#copy'); + + // Handle copy button. + copy.on('click', function(){ + var inviteURL = $('#invite-url'); + inviteURL.select(); + + var success = document.execCommand("copy"); + if (success) { + inviteURL.blur(); + copy.addClass('btn-success'); + copy.html(" Copy") + setTimeout(function(){ + copy.removeClass('btn-success'); + copy.html(" Copy") + }, 2000) + } + }); + + // Handle recording emails. + $('.email-link').each(function(){ + $(this).click(function(){ + var subject = $(".username").text() + " has invited you to view a recording."; + var body = "To view the recording, follow the link below:\n\n" + $(this).attr("data-pres-link"); + var footer = "\n\nThis e-mail is auto-generated by BigBlueButton.\nBigBlueButton is an open source web conferencing system. For more information on BigBlueButton, see https://bigbluebutton.org/." + var win = window.open("mailto:?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(body) + encodeURIComponent(footer), '_blank'); + win.focus(); + }); + }); + } +}); diff --git a/app/assets/javascripts/rooms.js b/app/assets/javascripts/rooms.js deleted file mode 100644 index 7a1aa73c..00000000 --- a/app/assets/javascripts/rooms.js +++ /dev/null @@ -1,27 +0,0 @@ -$(document).on("turbolinks:load", function() { - var action = $("body").data('action'); - var controller = $("body").data('controller'); - - // If the user is on the waiting screen. - if (controller == 'rooms' && action == 'wait') { - setTimeout(refresh, 10000); - } -}); - -// Send a request to the meeting wait endpoint. -// This checks if the meeting is running on the -// server and will auto join the user if it is. -var refresh = function() { - $.ajax({ - url: window.location.pathname, - type: 'POST', - data: { - unauthenticated_join_name: $('#unauthenticated_join_name_').val() - }, - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - } - }); - - setTimeout(refresh, 10000); -} \ No newline at end of file diff --git a/app/assets/javascripts/sessions.coffee b/app/assets/javascripts/sessions.coffee deleted file mode 100644 index 24f83d18..00000000 --- a/app/assets/javascripts/sessions.coffee +++ /dev/null @@ -1,3 +0,0 @@ -# Place all the behaviors and hooks related to the matching controller here. -# All this logic will automatically be available in application.js. -# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/settings.js b/app/assets/javascripts/settings.js new file mode 100644 index 00000000..1a07fffb --- /dev/null +++ b/app/assets/javascripts/settings.js @@ -0,0 +1,27 @@ +// Handle changing of settings tabs. + +$(document).on('turbolinks:load', function(){ + var controller = $("body").data('controller'); + var action = $("body").data('action'); + + // Only run on the settings page. + if (controller == "users" && action == "edit"){ + settingsButtons = $('.setting-btn'); + settingsViews = $('.setting-view'); + + settingsButtons.each(function(i, btn) { + if(i != 0){ $(settingsViews[i]).hide(); } + $(btn).click(function(){ + $(btn).addClass("active"); + settingsViews.each(function(i, view){ + if($(view).attr("id") == $(btn).attr("id")){ + $(view).show(); + } else { + $(settingsButtons[i]).removeClass("active"); + $(view).hide(); + } + }); + }); + }); + } +}); diff --git a/app/assets/javascripts/users.coffee b/app/assets/javascripts/users.coffee deleted file mode 100644 index 24f83d18..00000000 --- a/app/assets/javascripts/users.coffee +++ /dev/null @@ -1,3 +0,0 @@ -# Place all the behaviors and hooks related to the matching controller here. -# All this logic will automatically be available in application.js. -# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/app/assets/javascripts/wait.js b/app/assets/javascripts/wait.js new file mode 100644 index 00000000..7b0a47ac --- /dev/null +++ b/app/assets/javascripts/wait.js @@ -0,0 +1,38 @@ +// Handle client request to join when meeting starts. + +$(document).on("turbolinks:load", function(){ + var controller = $("body").data('controller'); + var action = $("body").data('action'); + + if(controller == "rooms" && action == "join"){ + App.waiting = App.cable.subscriptions.create({ + channel: "WaitingChannel", + uid: $(".room-section").attr("room") + }, { + received: function(data){ + if(data.action = "started"){ request_to_join_meeting(); } + } + }); + } +}); + +var join_attempts = 0; + +var request_to_join_meeting = function(){ + $.ajax({ + url: window.location.pathname, + type: 'POST', + data: { + join_name: $(".room-section").attr("join-name") + }, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') + }, + error: function(){ + // The meeting is still booting (going slowly), retry shortly. + if(join_attempts < 4){ setTimeout(request_to_join_meeting, 10000); } + join_attempts++; + } + }); +} diff --git a/app/models/room.rb b/app/models/room.rb index 6a3eb413..a03e464f 100644 --- a/app/models/room.rb +++ b/app/models/room.rb @@ -166,7 +166,7 @@ class Room < ApplicationRecord # Sets a BigBlueButtonApi object for interacting with the API. def bbb - @bbb = BigBlueButton::BigBlueButtonApi.new(remove_slash(bbb_endpoint), bbb_secret, "0.8") + @bbb ||= BigBlueButton::BigBlueButtonApi.new(remove_slash(bbb_endpoint), bbb_secret, "0.8") #@bbb ||= if Rails.configuration.loadbalanced_configuration # lb_user = retrieve_loadbalanced_credentials(self.room.owner.provider) # BigBlueButton::BigBlueButtonApi.new(remove_slash(lb_user["apiURL"]), lb_user["secret"], "0.8") diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index df106757..094b35c9 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -30,7 +30,6 @@ <%= yield %> - <% if current_user %> <%= render "shared/modals/create_room_modal" %> <% end %> diff --git a/app/views/rooms/show.html.erb b/app/views/rooms/show.html.erb index b177bb63..f97d58da 100644 --- a/app/views/rooms/show.html.erb +++ b/app/views/rooms/show.html.erb @@ -55,36 +55,3 @@ <%= render "shared/sessions", recordings: @recordings, only_public: false %> - - diff --git a/app/views/rooms/wait.html.erb b/app/views/rooms/wait.html.erb index cc7231e8..83f01a7e 100644 --- a/app/views/rooms/wait.html.erb +++ b/app/views/rooms/wait.html.erb @@ -9,37 +9,3 @@ <% end %> - - diff --git a/app/views/shared/modals/_create_room_modal.html.erb b/app/views/shared/modals/_create_room_modal.html.erb index 07aae0e3..43bd825a 100644 --- a/app/views/shared/modals/_create_room_modal.html.erb +++ b/app/views/shared/modals/_create_room_modal.html.erb @@ -34,7 +34,8 @@ diff --git a/app/views/users/edit.html.erb b/app/views/users/edit.html.erb index 4e72c6db..82229586 100644 --- a/app/views/users/edit.html.erb +++ b/app/views/users/edit.html.erb @@ -1,5 +1,4 @@
- <%= render "shared/components/subtitle", subtitle: "Settings", search: false %>
@@ -46,25 +45,3 @@
- - diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 01ef3e66..11fc7a3d 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -8,4 +8,4 @@ Rails.application.config.assets.version = '1.0' # Precompile additional assets. # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. -# Rails.application.config.assets.precompile += %w( search.js ) +Rails.application.config.assets.precompile += %w(settings.js room.js wait.js)