forked from External/greenlight
add preferences and customization (#171)
This commit is contained in:
parent
45c55efd04
commit
24c8952e59
|
@ -11,6 +11,8 @@ vendor/.bundle
|
||||||
# Ignore the default SQLite database.
|
# Ignore the default SQLite database.
|
||||||
/db/**/*.sqlite3
|
/db/**/*.sqlite3
|
||||||
/db/**/*.sqlite3-journal
|
/db/**/*.sqlite3-journal
|
||||||
|
/public/system/**
|
||||||
|
/public/assets/**
|
||||||
|
|
||||||
# Ignore all logfiles and tempfiles.
|
# Ignore all logfiles and tempfiles.
|
||||||
/log/*
|
/log/*
|
||||||
|
|
4
Gemfile
4
Gemfile
|
@ -77,4 +77,8 @@ gem 'rails-timeago', '~> 2.0'
|
||||||
|
|
||||||
gem 'http_accept_language'
|
gem 'http_accept_language'
|
||||||
|
|
||||||
|
# For sending slack notifications.
|
||||||
gem 'slack-notifier'
|
gem 'slack-notifier'
|
||||||
|
|
||||||
|
# For landing background image uploading.
|
||||||
|
gem 'paperclip', '~> 4.2'
|
||||||
|
|
11
Gemfile.lock
11
Gemfile.lock
|
@ -47,6 +47,9 @@ GEM
|
||||||
railties (>= 3.1)
|
railties (>= 3.1)
|
||||||
builder (3.2.2)
|
builder (3.2.2)
|
||||||
byebug (9.0.6)
|
byebug (9.0.6)
|
||||||
|
climate_control (0.1.0)
|
||||||
|
cocaine (0.5.8)
|
||||||
|
climate_control (>= 0.0.3, < 1.0)
|
||||||
coffee-rails (4.2.1)
|
coffee-rails (4.2.1)
|
||||||
coffee-script (>= 2.2.0)
|
coffee-script (>= 2.2.0)
|
||||||
railties (>= 4.0.0, < 5.2.x)
|
railties (>= 4.0.0, < 5.2.x)
|
||||||
|
@ -105,6 +108,7 @@ GEM
|
||||||
mime-types (3.1)
|
mime-types (3.1)
|
||||||
mime-types-data (~> 3.2015)
|
mime-types-data (~> 3.2015)
|
||||||
mime-types-data (3.2016.0521)
|
mime-types-data (3.2016.0521)
|
||||||
|
mimemagic (0.3.0)
|
||||||
mini_portile2 (2.1.0)
|
mini_portile2 (2.1.0)
|
||||||
minitest (5.9.1)
|
minitest (5.9.1)
|
||||||
mocha (1.2.1)
|
mocha (1.2.1)
|
||||||
|
@ -139,6 +143,12 @@ GEM
|
||||||
omniauth-twitter (1.2.1)
|
omniauth-twitter (1.2.1)
|
||||||
json (~> 1.3)
|
json (~> 1.3)
|
||||||
omniauth-oauth (~> 1.1)
|
omniauth-oauth (~> 1.1)
|
||||||
|
paperclip (4.3.7)
|
||||||
|
activemodel (>= 3.2.0)
|
||||||
|
activesupport (>= 3.2.0)
|
||||||
|
cocaine (~> 0.5.5)
|
||||||
|
mime-types
|
||||||
|
mimemagic (= 0.3.0)
|
||||||
pg (0.19.0)
|
pg (0.19.0)
|
||||||
puma (3.6.0)
|
puma (3.6.0)
|
||||||
rack (2.0.1)
|
rack (2.0.1)
|
||||||
|
@ -242,6 +252,7 @@ DEPENDENCIES
|
||||||
omniauth (= 1.3.1)
|
omniauth (= 1.3.1)
|
||||||
omniauth-google-oauth2 (= 0.4.1)
|
omniauth-google-oauth2 (= 0.4.1)
|
||||||
omniauth-twitter (= 1.2.1)
|
omniauth-twitter (= 1.2.1)
|
||||||
|
paperclip (~> 4.2)
|
||||||
pg
|
pg
|
||||||
puma (~> 3.0)
|
puma (~> 3.0)
|
||||||
rails (~> 5.0.0, >= 5.0.0.1)
|
rails (~> 5.0.0, >= 5.0.0.1)
|
||||||
|
|
|
@ -55,6 +55,19 @@ class LandingController < ApplicationController
|
||||||
end
|
end
|
||||||
helper_method :admin?
|
helper_method :admin?
|
||||||
|
|
||||||
|
def preferences
|
||||||
|
@user = current_user
|
||||||
|
end
|
||||||
|
|
||||||
|
def landing_background
|
||||||
|
if !current_user || !current_user.background? then
|
||||||
|
(ENV['LANDING_BACKGROUND'].present?) ? ENV['LANDING_BACKGROUND'] : 'greenlight_background.png'
|
||||||
|
else
|
||||||
|
current_user.background.url
|
||||||
|
end
|
||||||
|
end
|
||||||
|
helper_method :landing_background
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def render_meeting
|
def render_meeting
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
|
||||||
|
#
|
||||||
|
# Copyright (c) 2016 BigBlueButton Inc. and by respective authors (see below).
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under the
|
||||||
|
# terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 3.0 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License along
|
||||||
|
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
class UsersController < ActionController::Base
|
||||||
|
|
||||||
|
# For updating a users background image.
|
||||||
|
def update
|
||||||
|
|
||||||
|
# Make sure they actually select a file.
|
||||||
|
if params[:user] then
|
||||||
|
@user = User.find(params[:id])
|
||||||
|
@user.assign_attributes(background: user_params[:background])
|
||||||
|
flash[:danger] = t('invalid_file') unless @user.save
|
||||||
|
else
|
||||||
|
flash[:danger] = t('no_file')
|
||||||
|
end
|
||||||
|
|
||||||
|
# Reload the page to apply changes and show flash messages.
|
||||||
|
redirect_back(fallback_location: root_path)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def user_params
|
||||||
|
params.require(:user).permit(:background)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -17,6 +17,9 @@
|
||||||
class User < ApplicationRecord
|
class User < ApplicationRecord
|
||||||
|
|
||||||
before_create :set_encrypted_id
|
before_create :set_encrypted_id
|
||||||
|
has_attached_file :background
|
||||||
|
validates_attachment :background,
|
||||||
|
:content_type => { :content_type => ["image/jpg", "image/jpeg", "image/gif", "image/png"] }
|
||||||
|
|
||||||
def self.from_omniauth(auth_hash)
|
def self.from_omniauth(auth_hash)
|
||||||
user = find_or_initialize_by(uid: auth_hash['uid'], provider: auth_hash['provider'])
|
user = find_or_initialize_by(uid: auth_hash['uid'], provider: auth_hash['provider'])
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
<%
|
||||||
|
# BigBlueButton open source conferencing system - http://www.bigbluebutton.org/.
|
||||||
|
# Copyright (c) 2016 BigBlueButton Inc. and by respective authors (see below).
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under the
|
||||||
|
# terms of the GNU Lesser General Public License as published by the Free Software
|
||||||
|
# Foundation; either version 3.0 of the License, or (at your option) any later
|
||||||
|
# version.
|
||||||
|
#
|
||||||
|
# BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
# PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
|
||||||
|
# You should have received a copy of the GNU Lesser General Public License along
|
||||||
|
# with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||||
|
%>
|
||||||
|
|
||||||
|
<div class="center-panel-wrapper">
|
||||||
|
|
||||||
|
<%= render layout: 'shared/center_panel' do %>
|
||||||
|
|
||||||
|
<div class="center-block center-panel-content-size col-xs-12">
|
||||||
|
<h1><%= t('preferences') %></h1>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<% if @user %>
|
||||||
|
<div class="upload-form">
|
||||||
|
<p> <%= t('background_image') + ": " + (@user.background_file_name || '') %> </p>
|
||||||
|
<%= form_for @user, :html => { :multipart => true } do |f| %>
|
||||||
|
<div class="form-group">
|
||||||
|
<%= f.file_field :background, class: 'form-control'%>
|
||||||
|
</div>
|
||||||
|
<%= f.submit t('upload'), class: 'btn btn-info' %>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<% else %>
|
||||||
|
<h3><%= t('preferences_logged') %></h3>
|
||||||
|
<% end %>
|
||||||
|
<br><br>
|
||||||
|
<%= link_to t('back'), @user ? meeting_room_url(resource: 'rooms', id: @user.encrypted_id) : root_url, class: 'btn btn-info' %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
</div>
|
|
@ -48,7 +48,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
|
||||||
<body class="app-background" data-controller="<%= params[:controller] %>" data-action="<%= params[:action] %>"
|
<body class="app-background" data-controller="<%= params[:controller] %>" data-action="<%= params[:action] %>"
|
||||||
data-resource="<%= params[:resource] %>"
|
data-resource="<%= params[:resource] %>"
|
||||||
data-current-user="<%= current_user.try(:encrypted_id) %>"
|
data-current-user="<%= current_user.try(:encrypted_id) %>"
|
||||||
style="background-image:url(<%= image_path('greenlight_background.png') if params[:controller] == 'landing' %>);">
|
style="background-image:url(<%= image_path(landing_background) if params[:controller] == 'landing' %>);">
|
||||||
<!-- Messages -->
|
<!-- Messages -->
|
||||||
<div id='alerts'>
|
<div id='alerts'>
|
||||||
<div class='flash-alerts'>
|
<div class='flash-alerts'>
|
||||||
|
|
|
@ -25,7 +25,8 @@
|
||||||
</div>
|
</div>
|
||||||
<%= yield :footer %>
|
<%= yield :footer %>
|
||||||
<div class="help-link">
|
<div class="help-link">
|
||||||
<%= link_to t('help'), 'http://bigbluebutton.org/videos/', target: '_blank' %>
|
<%= link_to t('help'), 'http://bigbluebutton.org/videos/', target: '_blank' %> |
|
||||||
|
<%= link_to t('preferences'), preferences_path %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -40,6 +40,8 @@ en-US:
|
||||||
admin_room_title: Welcome %{user}
|
admin_room_title: Welcome %{user}
|
||||||
are_you: Are you %{name}?
|
are_you: Are you %{name}?
|
||||||
are_you_sure: Are you sure?
|
are_you_sure: Are you sure?
|
||||||
|
background_image: Background Image
|
||||||
|
back: Back
|
||||||
change_recording_visibility: "Change visibility to:"
|
change_recording_visibility: "Change visibility to:"
|
||||||
client:
|
client:
|
||||||
are_you_sure: Are you sure?
|
are_you_sure: Are you sure?
|
||||||
|
@ -79,6 +81,7 @@ en-US:
|
||||||
hi_all: Hi Everyone
|
hi_all: Hi Everyone
|
||||||
home_page: Home page
|
home_page: Home page
|
||||||
home_title: Welcome to BigBlueButton
|
home_title: Welcome to BigBlueButton
|
||||||
|
invalid_file: You may only upload an image file (jpg, gif, png).
|
||||||
invite: Invite
|
invite: Invite
|
||||||
invite_description: (share this link below to invite others to this meeting)
|
invite_description: (share this link below to invite others to this meeting)
|
||||||
join: Join
|
join: Join
|
||||||
|
@ -106,6 +109,7 @@ en-US:
|
||||||
my_room: my room
|
my_room: my room
|
||||||
name: Name
|
name: Name
|
||||||
'no': 'No'
|
'no': 'No'
|
||||||
|
no_file: You must select a file to upload.
|
||||||
not_found_title: Sorry we couldn't find that.
|
not_found_title: Sorry we couldn't find that.
|
||||||
notification_mailer:
|
notification_mailer:
|
||||||
recording_ready_email:
|
recording_ready_email:
|
||||||
|
@ -129,6 +133,8 @@ en-US:
|
||||||
users: Users
|
users: Users
|
||||||
participants: Users
|
participants: Users
|
||||||
past_recordings: Past Recordings
|
past_recordings: Past Recordings
|
||||||
|
preferences: Preferences
|
||||||
|
preferences_logged: You must be logged in to edit preferences.
|
||||||
presentation: Presentation
|
presentation: Presentation
|
||||||
previous_meetings: (previous meetings)
|
previous_meetings: (previous meetings)
|
||||||
return_to_room: Return to main page
|
return_to_room: Return to main page
|
||||||
|
@ -138,8 +144,8 @@ en-US:
|
||||||
meeting_end: "%{meeting} has ended."
|
meeting_end: "%{meeting} has ended."
|
||||||
meeting_join: "%{user} joined %{meeting}.\n[Click here join!]"
|
meeting_join: "%{user} joined %{meeting}.\n[Click here join!]"
|
||||||
recording_visibility: "A recording of %{meeting} was %{change}"
|
recording_visibility: "A recording of %{meeting} was %{change}"
|
||||||
published: published
|
published: published.
|
||||||
unpublished: unpublished
|
unpublished: unpublished.
|
||||||
start: Start
|
start: Start
|
||||||
start_join: Start
|
start_join: Start
|
||||||
start_meeting: Start meeting
|
start_meeting: Start meeting
|
||||||
|
@ -148,6 +154,7 @@ en-US:
|
||||||
subject: Test Email
|
subject: Test Email
|
||||||
phrase1: This is a test email sent to %{email}
|
phrase1: This is a test email sent to %{email}
|
||||||
thumbnails: Thumbnails
|
thumbnails: Thumbnails
|
||||||
|
upload: Upload
|
||||||
url_copy_explanation: Copy this URL to invite others to the meeting
|
url_copy_explanation: Copy this URL to invite others to the meeting
|
||||||
user_person_room: "%{name} personal room"
|
user_person_room: "%{name} personal room"
|
||||||
video: Video
|
video: Video
|
||||||
|
|
|
@ -52,5 +52,7 @@ Rails.application.routes.draw do
|
||||||
get '/(:room_id)/:id', to: 'landing#resource', as: :meeting_room, defaults: {room_id: nil}, :constraints => {:id => disallow_slash, :room_id => disallow_slash}
|
get '/(:room_id)/:id', to: 'landing#resource', as: :meeting_room, defaults: {room_id: nil}, :constraints => {:id => disallow_slash, :room_id => disallow_slash}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get '/preferences', to: 'landing#preferences', as: :preferences
|
||||||
|
|
||||||
root to: 'landing#index', :resource => 'meetings'
|
root to: 'landing#index', :resource => 'meetings'
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
class AddAttachmentBackgroundToUsers < ActiveRecord::Migration
|
||||||
|
def self.up
|
||||||
|
change_table :users do |t|
|
||||||
|
t.attachment :background
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.down
|
||||||
|
remove_attachment :users, :background
|
||||||
|
end
|
||||||
|
end
|
16
db/schema.rb
16
db/schema.rb
|
@ -10,17 +10,21 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20161208185458) do
|
ActiveRecord::Schema.define(version: 20170510175654) do
|
||||||
|
|
||||||
create_table "users", force: :cascade do |t|
|
create_table "users", force: :cascade do |t|
|
||||||
t.string "provider", null: false
|
t.string "provider", null: false
|
||||||
t.string "uid", null: false
|
t.string "uid", null: false
|
||||||
t.string "name"
|
t.string "name"
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.string "username"
|
t.string "username"
|
||||||
t.string "encrypted_id", null: false
|
t.string "encrypted_id", null: false
|
||||||
t.string "email"
|
t.string "email"
|
||||||
|
t.string "background_file_name"
|
||||||
|
t.string "background_content_type"
|
||||||
|
t.integer "background_file_size"
|
||||||
|
t.datetime "background_updated_at"
|
||||||
t.index ["email"], name: "index_users_on_email", unique: true
|
t.index ["email"], name: "index_users_on_email", unique: true
|
||||||
t.index ["encrypted_id"], name: "index_users_on_encrypted_id", unique: true
|
t.index ["encrypted_id"], name: "index_users_on_encrypted_id", unique: true
|
||||||
t.index ["provider", "uid"], name: "index_users_on_provider_and_uid", unique: true
|
t.index ["provider", "uid"], name: "index_users_on_provider_and_uid", unique: true
|
||||||
|
|
9
env
9
env
|
@ -57,6 +57,15 @@ GREENLIGHT_USE_WEBHOOKS=false
|
||||||
SLACK_WEBHOOK=
|
SLACK_WEBHOOK=
|
||||||
SLACK_CHANNEL=
|
SLACK_CHANNEL=
|
||||||
|
|
||||||
|
# Landing Background (optional)
|
||||||
|
#
|
||||||
|
# Supply a URL to an image to change the landing background. If no
|
||||||
|
# URL is provided GreenLight will use a default image. If you
|
||||||
|
# supply a path that does not lead to an image, no landing image
|
||||||
|
# will appear.
|
||||||
|
#
|
||||||
|
LANDING_BACKGROUND=
|
||||||
|
|
||||||
# SMTP Mailer
|
# SMTP Mailer
|
||||||
#
|
#
|
||||||
GREENLIGHT_MAIL_NOTIFICATIONS=true
|
GREENLIGHT_MAIL_NOTIFICATIONS=true
|
||||||
|
|
Loading…
Reference in New Issue