From e339dcd5b748eabe98dd778d56490997779bf638 Mon Sep 17 00:00:00 2001 From: Zachary Chai Date: Tue, 24 Jan 2017 14:15:20 -0500 Subject: [PATCH 01/26] rework home layout --- app/assets/javascripts/landing.js | 2 +- app/assets/stylesheets/shared.scss | 4 +- app/views/landing/index.html.erb | 44 ++++++++++++++------ app/views/shared/_meeting_name_form.html.erb | 3 ++ config/locales/en-us.yml | 7 +++- 5 files changed, 43 insertions(+), 17 deletions(-) create mode 100644 app/views/shared/_meeting_name_form.html.erb diff --git a/app/assets/javascripts/landing.js b/app/assets/javascripts/landing.js index 7311db5f..ff41775f 100644 --- a/app/assets/javascripts/landing.js +++ b/app/assets/javascripts/landing.js @@ -170,7 +170,7 @@ var joinedMeetings = localStorage.getItem('joinedMeetings'); if (joinedMeetings && joinedMeetings.length > 0) { joinedMeetings = joinedMeetings.split(','); - $('.center-panel-wrapper .panel-footer').removeClass('hidden'); + $('.center-panel-wrapper .previously-joined-wrapper').removeClass('hidden'); for (var i = joinedMeetings.length - 1; i >= 0; i--) { $('ul.previously-joined').append('
  • '+joinedMeetings[i]+'
  • '); diff --git a/app/assets/stylesheets/shared.scss b/app/assets/stylesheets/shared.scss index 9b4f9e6e..62b47c8f 100644 --- a/app/assets/stylesheets/shared.scss +++ b/app/assets/stylesheets/shared.scss @@ -70,10 +70,10 @@ body[data-controller=landing][data-action=rooms].app-background { } .center-panel { .center-panel-size { - max-width: 900px + max-width: 1200px } .center-panel-content-size { - max-width: 800px; + max-width: 1100px; } .input-spacing { diff --git a/app/views/landing/index.html.erb b/app/views/landing/index.html.erb index f83f4f9c..7cba2273 100644 --- a/app/views/landing/index.html.erb +++ b/app/views/landing/index.html.erb @@ -15,16 +15,7 @@ with BigBlueButton; if not, see . <% content_for :title do %>
    -

    <%= t('create_session') %>

    -
    -<% end %> - -<% content_for :footer do %> - <% end %> @@ -34,8 +25,37 @@ with BigBlueButton; if not, see .
    <%= render layout: 'shared/center_panel' do %>
    - <%= render 'shared/meeting_url', hidden: false %> - <%= render 'shared/join_form' %> + <%= render 'shared/meeting_name_form' %> + +
    + +
    + +
    +
    +
    +
    +

    <%= t('invite') %>

    + <%= t('invite_description') %> +
    +
    + <%= render 'shared/meeting_url', hidden: false %> +
    +
    +
    +
    +

    <%= t('join_session_id', id: '') %>

    +
    +
    + <%= render 'shared/join_form' %> +
    +
    +
    <% end %>
    diff --git a/app/views/shared/_meeting_name_form.html.erb b/app/views/shared/_meeting_name_form.html.erb new file mode 100644 index 00000000..f9189f12 --- /dev/null +++ b/app/views/shared/_meeting_name_form.html.erb @@ -0,0 +1,3 @@ +
    + +
    diff --git a/config/locales/en-us.yml b/config/locales/en-us.yml index 92989d73..7cdea712 100644 --- a/config/locales/en-us.yml +++ b/config/locales/en-us.yml @@ -58,18 +58,21 @@ en-US: user_waiting_title: A user is waiting copied: Copied copy_error: Use Ctrl-c to copy - create_session: Invite others to a meeting create_your_session: Create your own meeting date_recorded: Date duration: Duration (minutes) end: End enter_name: Enter your name + enter_meeting_name: Enter a meeting name greet_user: Welcome, %{name} greet_guest: Welcome to %{name} Meeting Space hi_all: Hi Everyone + home_title: Welcome to BigBlueButton + invite: Invite + invite_description: (share this link below to invite others to this meeting) join: Join join_session: Join the current meeting - join_session_id: Join %{id} + join_session_id: Join "%{id}" join_session_user: Join %{name} meeting logged_in_description_html: You are logged in as %{link} login: login From b30acae006e26fe40aabfd414c284c6a2de2b402 Mon Sep 17 00:00:00 2001 From: Zachary Chai Date: Tue, 24 Jan 2017 14:25:25 -0500 Subject: [PATCH 02/26] refactor meeting object naming --- app/assets/javascripts/landing.js | 6 ++--- app/assets/javascripts/meeting.coffee | 30 ++++++++++++------------ app/assets/javascripts/recordings.coffee | 4 ++-- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/app/assets/javascripts/landing.js b/app/assets/javascripts/landing.js index ff41775f..385fa99e 100644 --- a/app/assets/javascripts/landing.js +++ b/app/assets/javascripts/landing.js @@ -41,8 +41,8 @@ // setup event handlers $('.center-panel-wrapper').on ('click', '.meeting-join', function (event) { var name = $('.meeting-user-name').val(); - Meeting.getInstance().setName(name); - Meeting.getInstance().setId($(".page-wrapper").data('id')); + Meeting.getInstance().setUserName(name); + Meeting.getInstance().setMeetingId($(".page-wrapper").data('id')); // a user name is set, join the user into the session if (name !== undefined && name !== null) { @@ -159,7 +159,7 @@ $('.generate-link').click (function (e) { e.preventDefault(); var newId = Math.trunc(Math.random() * 1000000000); - Meeting.getInstance().setId(newId); + Meeting.getInstance().setMeetingId(newId); $(".page-wrapper.meetings").data('id', newId); $('.meeting-url').val(Meeting.getInstance().getURL()); }); diff --git a/app/assets/javascripts/meeting.coffee b/app/assets/javascripts/meeting.coffee index 7364a5ea..9b13a1a4 100644 --- a/app/assets/javascripts/meeting.coffee +++ b/app/assets/javascripts/meeting.coffee @@ -19,7 +19,7 @@ _meetingInstance = null class @Meeting - constructor: (@id, @type, @name) -> + constructor: (@meetingId, @type, @userName) -> # Gets the current instance or creates a new one @getInstance: -> @@ -56,28 +56,28 @@ class @Meeting # Returns a response object # The response object contains the URL to join the meeting getJoinMeetingResponse: -> - return $.get @getURL() + "/join?name=" + @name, (data) => + return $.get @getURL() + "/join?name=" + @userName, (data) => if data.messageKey == 'ok' && @type == 'meetings' # update name used to join meeting - localStorage.setItem('lastJoinedName', @getName()) + localStorage.setItem('lastJoinedName', @getUserName()) # update previously joined meetings on client try joinedMeetings = localStorage.getItem('joinedMeetings') || '' joinedMeetings = joinedMeetings.split(',') - joinedMeetings = joinedMeetings.filter (item) => item != @id.toString() + joinedMeetings = joinedMeetings.filter (item) => item != @meetingId.toString() if joinedMeetings.length >= 5 joinedMeetings.splice(0, 1) - joinedMeetings.push(@id) + joinedMeetings.push(@meetingId) localStorage.setItem('joinedMeetings', joinedMeetings.join(',')) catch err - localStorage.setItem('joinedMeetings', @id) + localStorage.setItem('joinedMeetings', @meetingId) - getId: -> - return @id + getMeetingId: -> + return @meetingId - setId: (id) -> - @id = id + setMeetingId: (id) -> + @meetingId = id return this getType: -> @@ -88,13 +88,13 @@ class @Meeting return this getURL: -> - return Meeting.buildMeetingURL(@id, @type) + return Meeting.buildMeetingURL(@meetingId, @type) - getName: -> - return @name + getUserName: -> + return @userName - setName: (name) -> - @name = name + setUserName: (name) -> + @userName = name return this getModJoined: -> diff --git a/app/assets/javascripts/recordings.coffee b/app/assets/javascripts/recordings.coffee index a4c69396..0a53ca98 100644 --- a/app/assets/javascripts/recordings.coffee +++ b/app/assets/javascripts/recordings.coffee @@ -80,7 +80,7 @@ class @Recordings targets: -1, render: (data, type, row) -> if type == 'display' - roomName = Meeting.getInstance().getId() + roomName = Meeting.getInstance().getMeetingId() recordingActions = $('.hidden-elements').find('.recording-actions') classes = ['recording-unpublished', 'recording-unlisted', 'recording-published'] if row.published @@ -157,7 +157,7 @@ class @Recordings # refresh the recordings from the server refresh: -> table_api = this.table.api() - $.get "/rooms/"+Meeting.getInstance().getId()+"/recordings", (data) => + $.get "/rooms/"+Meeting.getInstance().getMeetingId()+"/recordings", (data) => @setOwner(data.is_owner) if !@owner table_api.column(-1).visible(false) From d7cd9eb8bb932aff9c2d16138411227ecf98f7c6 Mon Sep 17 00:00:00 2001 From: Zachary Chai Date: Tue, 24 Jan 2017 16:13:12 -0500 Subject: [PATCH 03/26] update javascript and neaten up layout --- app/assets/javascripts/landing.js | 21 +++++++++++---------- app/assets/stylesheets/shared.scss | 22 ++++++++++++++++++++++ app/views/landing/index.html.erb | 9 +++++---- app/views/shared/_meeting_url.html.erb | 5 ----- config/locales/en-us.yml | 4 ++-- 5 files changed, 40 insertions(+), 21 deletions(-) diff --git a/app/assets/javascripts/landing.js b/app/assets/javascripts/landing.js index 385fa99e..5c9156f1 100644 --- a/app/assets/javascripts/landing.js +++ b/app/assets/javascripts/landing.js @@ -134,6 +134,14 @@ } }); + $('.center-panel-wrapper').on('keyup', '.meeting-name', function (event, msg) { + var newId = $(this).val(); + Meeting.getInstance().setMeetingId(newId); + $(".page-wrapper.meetings").data('id', newId); + $('.meeting-url').val(Meeting.getInstance().getURL()); + $('.join-meeting-title').html(I18n.join_title.replace(/%{id}/, newId)); + }) + // enable tooltips var options = { selector: '.has-tooltip', @@ -148,7 +156,9 @@ $(document).tooltip(options); // focus name input or join button - if ($('.meeting-user-name').is(':visible')) { + if ($('.meeting-name').is(':visible')) { + $('.meeting-name').focus(); + } else if ($('.meeting-user-name').is(':visible')) { $('.meeting-user-name').focus(); } else { $('.meeting-join').focus(); @@ -156,15 +166,6 @@ }; var initIndex = function() { - $('.generate-link').click (function (e) { - e.preventDefault(); - var newId = Math.trunc(Math.random() * 1000000000); - Meeting.getInstance().setMeetingId(newId); - $(".page-wrapper.meetings").data('id', newId); - $('.meeting-url').val(Meeting.getInstance().getURL()); - }); - - $('.generate-link').click(); $('ul.previously-joined').empty(); var joinedMeetings = localStorage.getItem('joinedMeetings'); diff --git a/app/assets/stylesheets/shared.scss b/app/assets/stylesheets/shared.scss index 62b47c8f..d0a2e32f 100644 --- a/app/assets/stylesheets/shared.scss +++ b/app/assets/stylesheets/shared.scss @@ -26,6 +26,10 @@ html, body { background: #ffffff; } +.container-fluid { + height: 100%; +} + .background { height: 350px; width: 100%; @@ -68,11 +72,16 @@ body[data-controller=landing][data-action=rooms].app-background { .center-block { float: none; } +.center-panel-wrapper { + height: 100%; +} .center-panel { + height: 100%; .center-panel-size { max-width: 1200px } .center-panel-content-size { + height: 100%; max-width: 1100px; } @@ -157,3 +166,16 @@ a.signin-link { color: #444; } } + +.verticle-line { + // parent must be position relative to work + width: 1px; + background-color: lightgray; + height: 100%; + position: absolute; + left: 50%; +} + +.invite-join-wrapper { + position: relative; +} diff --git a/app/views/landing/index.html.erb b/app/views/landing/index.html.erb index 7cba2273..3bd3f593 100644 --- a/app/views/landing/index.html.erb +++ b/app/views/landing/index.html.erb @@ -36,20 +36,21 @@ with BigBlueButton; if not, see . -
    +
    -
    +

    <%= t('invite') %>

    <%= t('invite_description') %>
    <%= render 'shared/meeting_url', hidden: false %>
    +
    -
    -

    <%= t('join_session_id', id: '') %>

    +
    +

    <%= t('join') %>

    <%= render 'shared/join_form' %> diff --git a/app/views/shared/_meeting_url.html.erb b/app/views/shared/_meeting_url.html.erb index 38197633..e3c08e3f 100644 --- a/app/views/shared/_meeting_url.html.erb +++ b/app/views/shared/_meeting_url.html.erb @@ -17,11 +17,6 @@ with BigBlueButton; if not, see .
    - <% if params[:action] == 'index' %> - - <% end %>
    diff --git a/config/locales/en-us.yml b/config/locales/en-us.yml index 7cdea712..f63662a4 100644 --- a/config/locales/en-us.yml +++ b/config/locales/en-us.yml @@ -43,6 +43,7 @@ en-US: client: are_you_sure: Are you sure? delete_recording: Delete recording + join_title: Join "%{id}" meeting_ended: Meeting was ended meeting_started: Meeting was started no_recordings: No Recordings @@ -72,7 +73,7 @@ en-US: invite_description: (share this link below to invite others to this meeting) join: Join join_session: Join the current meeting - join_session_id: Join "%{id}" + join_session_id: Join %{id} join_session_user: Join %{name} meeting logged_in_description_html: You are logged in as %{link} login: login @@ -109,7 +110,6 @@ en-US: unlisted: Unlisted unpublished: Unpublished url_copy_explanation: Copy this URL to invite others to the meeting - url_refresh_hint: Generate a new meeting URL video: Video views: Views wait_for_mod_msg: Looks like you're the first one here... From f7363df80e756abce90ac377ae029506bbc63b42 Mon Sep 17 00:00:00 2001 From: Zachary Chai Date: Tue, 24 Jan 2017 16:21:38 -0500 Subject: [PATCH 04/26] remove unused style --- app/assets/stylesheets/landing.scss | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/app/assets/stylesheets/landing.scss b/app/assets/stylesheets/landing.scss index 06900393..0b214e16 100644 --- a/app/assets/stylesheets/landing.scss +++ b/app/assets/stylesheets/landing.scss @@ -67,19 +67,6 @@ .meeting-url-group { position: relative; - - .generate-link { - position: absolute; - right: 12px; - top: 10px; - z-index: 9; - color: #999; - cursor: pointer; - - &:hover { - color: #000; - } - } } .recording-update-trigger { From 540ab7d369408d14c551eaad129f045216982ab4 Mon Sep 17 00:00:00 2001 From: Zachary Chai Date: Thu, 26 Jan 2017 09:34:05 -0500 Subject: [PATCH 05/26] URI encode meeting name and only show invite/join when a name is entered --- app/assets/javascripts/landing.js | 7 ++++++- app/assets/javascripts/meeting.coffee | 2 +- app/views/landing/index.html.erb | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/landing.js b/app/assets/javascripts/landing.js index 5c9156f1..eb38db9d 100644 --- a/app/assets/javascripts/landing.js +++ b/app/assets/javascripts/landing.js @@ -140,7 +140,12 @@ $(".page-wrapper.meetings").data('id', newId); $('.meeting-url').val(Meeting.getInstance().getURL()); $('.join-meeting-title').html(I18n.join_title.replace(/%{id}/, newId)); - }) + if (newId === '') { + $('.invite-join-wrapper').addClass('hidden'); + } else { + $('.invite-join-wrapper').removeClass('hidden'); + } + }); // enable tooltips var options = { diff --git a/app/assets/javascripts/meeting.coffee b/app/assets/javascripts/meeting.coffee index 9b13a1a4..b0a6e193 100644 --- a/app/assets/javascripts/meeting.coffee +++ b/app/assets/javascripts/meeting.coffee @@ -36,7 +36,7 @@ class @Meeting _meetingInstance = null @buildMeetingURL: (id, type) -> - return @buildFullDomainURL() + '/' + type + '/' + id + return @buildFullDomainURL() + '/' + type + '/' + encodeURIComponent(id) @buildFullDomainURL: -> url = location.protocol + '//' + location.hostname diff --git a/app/views/landing/index.html.erb b/app/views/landing/index.html.erb index 3bd3f593..c61793f0 100644 --- a/app/views/landing/index.html.erb +++ b/app/views/landing/index.html.erb @@ -36,7 +36,7 @@ with BigBlueButton; if not, see .
    -
    +