New admin setting: open/close registrations, with custom message, from the admin UI
This commit is contained in:
		
							parent
							
								
									405c495c23
								
							
						
					
					
						commit
						5f54981846
					
				
					 8 changed files with 70 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -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,8 +27,8 @@ 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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue