New admin setting: open/close registrations, with custom message, from the admin UI
This commit is contained in:
		| @@ -319,7 +319,7 @@ | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .simple_form { | ||||
|   .simple_form, .closed-registrations-message { | ||||
|     width: 300px; | ||||
|     flex: 0 0 auto; | ||||
|     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 | ||||
|  | ||||
|   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.build_account | ||||
|   | ||||
| @@ -11,9 +11,13 @@ class Admin::SettingsController < ApplicationController | ||||
|  | ||||
|   def update | ||||
|     @setting = Setting.where(var: params[:id]).first_or_initialize(var: params[:id]) | ||||
|     value    = settings_params[:value] | ||||
|  | ||||
|     if @setting.value != params[:setting][:value] | ||||
|       @setting.value = params[:setting][:value] | ||||
|     # Special cases | ||||
|     value = value == 'true' if @setting.var == 'open_registrations' | ||||
|  | ||||
|     if @setting.value != value | ||||
|       @setting.value = value | ||||
|       @setting.save | ||||
|     end | ||||
|  | ||||
| @@ -22,4 +26,10 @@ class Admin::SettingsController < ApplicationController | ||||
|       format.json { respond_with_bip(@setting) } | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   private | ||||
|  | ||||
|   def settings_params | ||||
|     params.require(:setting).permit(:value) | ||||
|   end | ||||
| end | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| class Auth::RegistrationsController < Devise::RegistrationsController | ||||
|   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] | ||||
|  | ||||
|   protected | ||||
| @@ -27,12 +27,12 @@ class Auth::RegistrationsController < Devise::RegistrationsController | ||||
|     new_user_session_path | ||||
|   end | ||||
|  | ||||
|   def check_single_user_mode | ||||
|     redirect_to root_path if Rails.configuration.x.single_user_mode | ||||
|   def check_enabled_registrations | ||||
|     redirect_to root_path if Rails.configuration.x.single_user_mode || !Setting.open_registrations | ||||
|   end | ||||
|    | ||||
|  | ||||
|   private | ||||
|    | ||||
|  | ||||
|   def determine_layout | ||||
|     %w(edit update).include?(action_name) ? 'admin' : 'auth' | ||||
|   end | ||||
|   | ||||
| @@ -24,21 +24,34 @@ | ||||
|   .screenshot-with-signup | ||||
|     .mascot= image_tag 'fluffy-elephant-friend.png' | ||||
|  | ||||
|     = simple_form_for(@user, url: user_registration_path) do |f| | ||||
|       = 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') } | ||||
|     - if @open_registrations | ||||
|       = simple_form_for(@user, url: user_registration_path) do |f| | ||||
|         = 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 :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 :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_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 | ||||
|         = f.button :button, t('about.get_started'), type: :submit | ||||
|         .actions | ||||
|           = f.button :button, t('about.get_started'), type: :submit | ||||
|  | ||||
|       .info | ||||
|         = link_to t('auth.login'), new_user_session_path, class: 'webapp-btn' | ||||
|         · | ||||
|         = link_to t('about.about_this'), about_more_path | ||||
|         .info | ||||
|           = link_to t('auth.login'), new_user_session_path, class: 'webapp-btn' | ||||
|           · | ||||
|           = 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') | ||||
|  | ||||
|   | ||||
| @@ -38,3 +38,15 @@ | ||||
|         %br/ | ||||
|         You can use HTML tags | ||||
|       %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 | ||||
|     business_email: 'Business e-mail:' | ||||
|     contact: Contact | ||||
|     closed_registrations: Registrations are currently closed on this instance. | ||||
|     description_headline: What is %{domain}? | ||||
|     domain_count_after: other instances | ||||
|     domain_count_before: Connected to | ||||
|   | ||||
| @@ -5,6 +5,8 @@ defaults: &defaults | ||||
|   site_extended_description: '' | ||||
|   site_contact_username: '' | ||||
|   site_contact_email: '' | ||||
|   open_registrations: true | ||||
|   closed_registrations_message: '' | ||||
|   notification_emails: | ||||
|     follow: false | ||||
|     reblog: false | ||||
| @@ -15,6 +17,7 @@ defaults: &defaults | ||||
|   interactions: | ||||
|     must_be_follower: false | ||||
|     must_be_following: false | ||||
|  | ||||
| development: | ||||
|   <<: *defaults | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user