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.
|
||||
/db/**/*.sqlite3
|
||||
/db/**/*.sqlite3-journal
|
||||
/public/system/**
|
||||
/public/assets/**
|
||||
|
||||
# Ignore all logfiles and tempfiles.
|
||||
/log/*
|
||||
|
|
4
Gemfile
4
Gemfile
|
@ -77,4 +77,8 @@ gem 'rails-timeago', '~> 2.0'
|
|||
|
||||
gem 'http_accept_language'
|
||||
|
||||
# For sending slack notifications.
|
||||
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)
|
||||
builder (3.2.2)
|
||||
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-script (>= 2.2.0)
|
||||
railties (>= 4.0.0, < 5.2.x)
|
||||
|
@ -105,6 +108,7 @@ GEM
|
|||
mime-types (3.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2016.0521)
|
||||
mimemagic (0.3.0)
|
||||
mini_portile2 (2.1.0)
|
||||
minitest (5.9.1)
|
||||
mocha (1.2.1)
|
||||
|
@ -139,6 +143,12 @@ GEM
|
|||
omniauth-twitter (1.2.1)
|
||||
json (~> 1.3)
|
||||
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)
|
||||
puma (3.6.0)
|
||||
rack (2.0.1)
|
||||
|
@ -242,6 +252,7 @@ DEPENDENCIES
|
|||
omniauth (= 1.3.1)
|
||||
omniauth-google-oauth2 (= 0.4.1)
|
||||
omniauth-twitter (= 1.2.1)
|
||||
paperclip (~> 4.2)
|
||||
pg
|
||||
puma (~> 3.0)
|
||||
rails (~> 5.0.0, >= 5.0.0.1)
|
||||
|
|
|
@ -55,6 +55,19 @@ class LandingController < ApplicationController
|
|||
end
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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)
|
||||
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] %>"
|
||||
data-resource="<%= params[:resource] %>"
|
||||
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 -->
|
||||
<div id='alerts'>
|
||||
<div class='flash-alerts'>
|
||||
|
|
|
@ -25,7 +25,8 @@
|
|||
</div>
|
||||
<%= yield :footer %>
|
||||
<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>
|
||||
|
|
|
@ -40,6 +40,8 @@ en-US:
|
|||
admin_room_title: Welcome %{user}
|
||||
are_you: Are you %{name}?
|
||||
are_you_sure: Are you sure?
|
||||
background_image: Background Image
|
||||
back: Back
|
||||
change_recording_visibility: "Change visibility to:"
|
||||
client:
|
||||
are_you_sure: Are you sure?
|
||||
|
@ -79,6 +81,7 @@ en-US:
|
|||
hi_all: Hi Everyone
|
||||
home_page: Home page
|
||||
home_title: Welcome to BigBlueButton
|
||||
invalid_file: You may only upload an image file (jpg, gif, png).
|
||||
invite: Invite
|
||||
invite_description: (share this link below to invite others to this meeting)
|
||||
join: Join
|
||||
|
@ -106,6 +109,7 @@ en-US:
|
|||
my_room: my room
|
||||
name: Name
|
||||
'no': 'No'
|
||||
no_file: You must select a file to upload.
|
||||
not_found_title: Sorry we couldn't find that.
|
||||
notification_mailer:
|
||||
recording_ready_email:
|
||||
|
@ -129,6 +133,8 @@ en-US:
|
|||
users: Users
|
||||
participants: Users
|
||||
past_recordings: Past Recordings
|
||||
preferences: Preferences
|
||||
preferences_logged: You must be logged in to edit preferences.
|
||||
presentation: Presentation
|
||||
previous_meetings: (previous meetings)
|
||||
return_to_room: Return to main page
|
||||
|
@ -138,8 +144,8 @@ en-US:
|
|||
meeting_end: "%{meeting} has ended."
|
||||
meeting_join: "%{user} joined %{meeting}.\n[Click here join!]"
|
||||
recording_visibility: "A recording of %{meeting} was %{change}"
|
||||
published: published
|
||||
unpublished: unpublished
|
||||
published: published.
|
||||
unpublished: unpublished.
|
||||
start: Start
|
||||
start_join: Start
|
||||
start_meeting: Start meeting
|
||||
|
@ -148,6 +154,7 @@ en-US:
|
|||
subject: Test Email
|
||||
phrase1: This is a test email sent to %{email}
|
||||
thumbnails: Thumbnails
|
||||
upload: Upload
|
||||
url_copy_explanation: Copy this URL to invite others to the meeting
|
||||
user_person_room: "%{name} personal room"
|
||||
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}
|
||||
end
|
||||
|
||||
get '/preferences', to: 'landing#preferences', as: :preferences
|
||||
|
||||
root to: 'landing#index', :resource => 'meetings'
|
||||
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.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20161208185458) do
|
||||
ActiveRecord::Schema.define(version: 20170510175654) do
|
||||
|
||||
create_table "users", force: :cascade do |t|
|
||||
t.string "provider", null: false
|
||||
t.string "uid", null: false
|
||||
t.string "provider", null: false
|
||||
t.string "uid", null: false
|
||||
t.string "name"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.string "username"
|
||||
t.string "encrypted_id", null: false
|
||||
t.string "encrypted_id", null: false
|
||||
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 ["encrypted_id"], name: "index_users_on_encrypted_id", 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_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
|
||||
#
|
||||
GREENLIGHT_MAIL_NOTIFICATIONS=true
|
||||
|
|
Loading…
Reference in New Issue