forked from treehouse/mastodon
New admin setting: open/close registrations, with custom message, from the admin UI
parent
405c495c23
commit
5f54981846
|
@ -319,7 +319,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.simple_form {
|
.simple_form, .closed-registrations-message {
|
||||||
width: 300px;
|
width: 300px;
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
background: rgba(darken($color1, 7%), 0.5);
|
background: rgba(darken($color1, 7%), 0.5);
|
||||||
|
@ -340,3 +340,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.closed-registrations-message {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
|
@ -4,7 +4,9 @@ class AboutController < ApplicationController
|
||||||
before_action :set_body_classes
|
before_action :set_body_classes
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@description = Setting.site_description
|
@description = Setting.site_description
|
||||||
|
@open_registrations = Setting.open_registrations
|
||||||
|
@closed_registrations_message = Setting.closed_registrations_message
|
||||||
|
|
||||||
@user = User.new
|
@user = User.new
|
||||||
@user.build_account
|
@user.build_account
|
||||||
|
|
|
@ -11,9 +11,13 @@ class Admin::SettingsController < ApplicationController
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@setting = Setting.where(var: params[:id]).first_or_initialize(var: params[:id])
|
@setting = Setting.where(var: params[:id]).first_or_initialize(var: params[:id])
|
||||||
|
value = settings_params[:value]
|
||||||
|
|
||||||
if @setting.value != params[:setting][:value]
|
# Special cases
|
||||||
@setting.value = params[:setting][:value]
|
value = value == 'true' if @setting.var == 'open_registrations'
|
||||||
|
|
||||||
|
if @setting.value != value
|
||||||
|
@setting.value = value
|
||||||
@setting.save
|
@setting.save
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -22,4 +26,10 @@ class Admin::SettingsController < ApplicationController
|
||||||
format.json { respond_with_bip(@setting) }
|
format.json { respond_with_bip(@setting) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def settings_params
|
||||||
|
params.require(:setting).permit(:value)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
class Auth::RegistrationsController < Devise::RegistrationsController
|
class Auth::RegistrationsController < Devise::RegistrationsController
|
||||||
layout :determine_layout
|
layout :determine_layout
|
||||||
|
|
||||||
before_action :check_single_user_mode
|
before_action :check_enabled_registrations, only: [:new, :create]
|
||||||
before_action :configure_sign_up_params, only: [:create]
|
before_action :configure_sign_up_params, only: [:create]
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
@ -27,12 +27,12 @@ class Auth::RegistrationsController < Devise::RegistrationsController
|
||||||
new_user_session_path
|
new_user_session_path
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_single_user_mode
|
def check_enabled_registrations
|
||||||
redirect_to root_path if Rails.configuration.x.single_user_mode
|
redirect_to root_path if Rails.configuration.x.single_user_mode || !Setting.open_registrations
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def determine_layout
|
def determine_layout
|
||||||
%w(edit update).include?(action_name) ? 'admin' : 'auth'
|
%w(edit update).include?(action_name) ? 'admin' : 'auth'
|
||||||
end
|
end
|
||||||
|
|
|
@ -24,21 +24,34 @@
|
||||||
.screenshot-with-signup
|
.screenshot-with-signup
|
||||||
.mascot= image_tag 'fluffy-elephant-friend.png'
|
.mascot= image_tag 'fluffy-elephant-friend.png'
|
||||||
|
|
||||||
= simple_form_for(@user, url: user_registration_path) do |f|
|
- if @open_registrations
|
||||||
= f.simple_fields_for :account do |ff|
|
= simple_form_for(@user, url: user_registration_path) do |f|
|
||||||
= ff.input :username, autofocus: true, placeholder: t('simple_form.labels.defaults.username'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.username') }
|
= f.simple_fields_for :account do |ff|
|
||||||
|
= ff.input :username, autofocus: true, placeholder: t('simple_form.labels.defaults.username'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.username') }
|
||||||
|
|
||||||
= f.input :email, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email') }
|
= f.input :email, placeholder: t('simple_form.labels.defaults.email'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.email') }
|
||||||
= f.input :password, autocomplete: "off", placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password') }
|
= f.input :password, autocomplete: "off", placeholder: t('simple_form.labels.defaults.password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.password') }
|
||||||
= f.input :password_confirmation, autocomplete: "off", placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password') }
|
= f.input :password_confirmation, autocomplete: "off", placeholder: t('simple_form.labels.defaults.confirm_password'), required: true, input_html: { 'aria-label' => t('simple_form.labels.defaults.confirm_password') }
|
||||||
|
|
||||||
.actions
|
.actions
|
||||||
= f.button :button, t('about.get_started'), type: :submit
|
= f.button :button, t('about.get_started'), type: :submit
|
||||||
|
|
||||||
.info
|
.info
|
||||||
= link_to t('auth.login'), new_user_session_path, class: 'webapp-btn'
|
= link_to t('auth.login'), new_user_session_path, class: 'webapp-btn'
|
||||||
·
|
·
|
||||||
= link_to t('about.about_this'), about_more_path
|
= link_to t('about.about_this'), about_more_path
|
||||||
|
- else
|
||||||
|
.closed-registrations-message
|
||||||
|
- if @closed_registrations_message.blank?
|
||||||
|
%p= t('about.closed_registrations')
|
||||||
|
- else
|
||||||
|
= @closed_registrations_message.html_safe
|
||||||
|
.info
|
||||||
|
= link_to t('auth.login'), new_user_session_path, class: 'webapp-btn'
|
||||||
|
·
|
||||||
|
= link_to t('about.other_instances'), 'https://github.com/tootsuite/mastodon/blob/master/docs/Using-Mastodon/List-of-Mastodon-instances.md'
|
||||||
|
·
|
||||||
|
= link_to t('about.about_this'), about_more_path
|
||||||
|
|
||||||
%h3= t('about.features_headline')
|
%h3= t('about.features_headline')
|
||||||
|
|
||||||
|
|
|
@ -38,3 +38,15 @@
|
||||||
%br/
|
%br/
|
||||||
You can use HTML tags
|
You can use HTML tags
|
||||||
%td= best_in_place @settings['site_extended_description'], :value, as: :textarea, url: admin_setting_path(@settings['site_extended_description'])
|
%td= best_in_place @settings['site_extended_description'], :value, as: :textarea, url: admin_setting_path(@settings['site_extended_description'])
|
||||||
|
%tr
|
||||||
|
%td
|
||||||
|
%strong Open registration
|
||||||
|
%td= best_in_place @settings['open_registrations'], :value, as: :checkbox, collection: { false: 'Disabled', true: 'Enabled'}, url: admin_setting_path(@settings['open_registrations'])
|
||||||
|
%tr
|
||||||
|
%td
|
||||||
|
%strong Closed registration message
|
||||||
|
%br/
|
||||||
|
Displayed on frontpage when registrations are closed
|
||||||
|
%br/
|
||||||
|
You can use HTML tags
|
||||||
|
%td= best_in_place @settings['closed_registrations_message'], :value, as: :textarea, url: admin_setting_path(@settings['closed_registrations_message'])
|
||||||
|
|
|
@ -6,6 +6,7 @@ en:
|
||||||
apps: Apps
|
apps: Apps
|
||||||
business_email: 'Business e-mail:'
|
business_email: 'Business e-mail:'
|
||||||
contact: Contact
|
contact: Contact
|
||||||
|
closed_registrations: Registrations are currently closed on this instance.
|
||||||
description_headline: What is %{domain}?
|
description_headline: What is %{domain}?
|
||||||
domain_count_after: other instances
|
domain_count_after: other instances
|
||||||
domain_count_before: Connected to
|
domain_count_before: Connected to
|
||||||
|
|
|
@ -5,6 +5,8 @@ defaults: &defaults
|
||||||
site_extended_description: ''
|
site_extended_description: ''
|
||||||
site_contact_username: ''
|
site_contact_username: ''
|
||||||
site_contact_email: ''
|
site_contact_email: ''
|
||||||
|
open_registrations: true
|
||||||
|
closed_registrations_message: ''
|
||||||
notification_emails:
|
notification_emails:
|
||||||
follow: false
|
follow: false
|
||||||
reblog: false
|
reblog: false
|
||||||
|
@ -15,6 +17,7 @@ defaults: &defaults
|
||||||
interactions:
|
interactions:
|
||||||
must_be_follower: false
|
must_be_follower: false
|
||||||
must_be_following: false
|
must_be_following: false
|
||||||
|
|
||||||
development:
|
development:
|
||||||
<<: *defaults
|
<<: *defaults
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue