]> cat aescling's git repositories - mastodon.git/commitdiff
Merge branch 'master' into glitch-soc/merge-upstream
authorThibaut Girka <thib@sitedethib.com>
Sat, 23 Mar 2019 21:10:51 +0000 (22:10 +0100)
committerThibaut Girka <thib@sitedethib.com>
Tue, 26 Mar 2019 15:01:59 +0000 (16:01 +0100)
Conflicts:
- app/controllers/admin/settings_controller.rb
- app/models/form/admin_settings.rb

Conflicts caused by upstream refactoring, while we have
flavours and skins, with the flavour_and_skin pseudo-setting.

1  2 
Gemfile
Gemfile.lock
app/models/form/admin_settings.rb
app/models/user.rb
app/presenters/instance_presenter.rb
app/views/admin/settings/edit.html.haml
config/locales/en.yml
config/navigation.rb

diff --cc Gemfile
Simple merge
diff --cc Gemfile.lock
Simple merge
index 929c65793ee485047d9b75ed11c8a83c7d11338c,2d3aa726d671697de2d1ab25ec5e842ffc24a2e1..0fcbd06054667c38076ff195bd7c07c936b7dd5f
  class Form::AdminSettings
    include ActiveModel::Model
  
-   delegate(
-     :site_contact_username,
-     :site_contact_username=,
-     :site_contact_email,
-     :site_contact_email=,
-     :site_title,
-     :site_title=,
-     :site_short_description,
-     :site_short_description=,
-     :site_description,
-     :site_description=,
-     :site_extended_description,
-     :site_extended_description=,
-     :site_terms,
-     :site_terms=,
-     :registrations_mode,
-     :registrations_mode=,
-     :closed_registrations_message,
-     :closed_registrations_message=,
-     :open_deletion,
-     :open_deletion=,
-     :timeline_preview,
-     :timeline_preview=,
-     :show_staff_badge,
-     :show_staff_badge=,
-     :bootstrap_timeline_accounts,
-     :bootstrap_timeline_accounts=,
-     :hide_followers_count,
-     :hide_followers_count=,
-     :flavour,
-     :flavour=,
-     :skin,
-     :skin=,
-     :min_invite_role,
-     :min_invite_role=,
-     :activity_api_enabled,
-     :activity_api_enabled=,
-     :peers_api_enabled,
-     :peers_api_enabled=,
-     :show_known_fediverse_at_about_page,
-     :show_known_fediverse_at_about_page=,
-     :preview_sensitive_media,
-     :preview_sensitive_media=,
-     :custom_css,
-     :custom_css=,
-     :profile_directory,
-     :profile_directory=,
-     to: Setting
-   )
+   KEYS = %i(
+     site_contact_username
+     site_contact_email
+     site_title
+     site_short_description
+     site_description
+     site_extended_description
+     site_terms
+     registrations_mode
+     closed_registrations_message
+     open_deletion
+     timeline_preview
+     show_staff_badge
+     bootstrap_timeline_accounts
 -    theme
++    flavour
++    skin
+     min_invite_role
+     activity_api_enabled
+     peers_api_enabled
+     show_known_fediverse_at_about_page
+     preview_sensitive_media
+     custom_css
+     profile_directory
++    hide_followers_count
++    flavour_and_skin
+   ).freeze
+   BOOLEAN_KEYS = %i(
+     open_deletion
+     timeline_preview
+     show_staff_badge
+     activity_api_enabled
+     peers_api_enabled
+     show_known_fediverse_at_about_page
+     preview_sensitive_media
+     profile_directory
++    hide_followers_count
+   ).freeze
+   UPLOAD_KEYS = %i(
+     thumbnail
+     hero
+     mascot
+   ).freeze
++  PSEUDO_KEYS = %i(
++    flavour_and_skin
++  ).freeze
++
+   attr_accessor(*KEYS)
+   validates :site_short_description, :site_description, :site_extended_description, :site_terms, :closed_registrations_message, html: true
+   validates :registrations_mode, inclusion: { in: %w(open approved none) }
+   validates :min_invite_role, inclusion: { in: %w(disabled user moderator admin) }
+   validates :site_contact_email, :site_contact_username, presence: true
+   validates :site_contact_username, existing_username: true
+   validates :bootstrap_timeline_accounts, existing_username: { multiple: true }
+   def initialize(_attributes = {})
+     super
+     initialize_attributes
+   end
+   def save
+     return false unless valid?
+     KEYS.each do |key|
++      next if PSEUDO_KEYS.include?(key)
+       value = instance_variable_get("@#{key}")
+       if UPLOAD_KEYS.include?(key)
+         upload = SiteUpload.where(var: key).first_or_initialize(var: key)
+         upload.update(file: value)
+       else
+         setting = Setting.where(var: key).first_or_initialize(var: key)
+         setting.update(value: typecast_value(key, value))
+       end
+     end
+   end
  
 +  def flavour_and_skin
 +    "#{Setting.flavour}/#{Setting.skin}"
 +  end
++
++  def flavour_and_skin=(value)
++    @flavour, @skin = value.split('/', 2)
++  end
++
+   private
+   def initialize_attributes
+     KEYS.each do |key|
++      next if PSEUDO_KEYS.include?(key)
+       instance_variable_set("@#{key}", Setting.public_send(key)) if instance_variable_get("@#{key}").nil?
+     end
+   end
+   def typecast_value(key, value)
+     if BOOLEAN_KEYS.include?(key)
+       value == '1'
+     else
+       value
+     end
+   end
  end
Simple merge
Simple merge
Simple merge
index 86c2572d79b38cb53d79f94e71772244b352ae26,a6b2b6e4c7d10c3061589d8693ae0283bc232492..34b5661889d80e0a7587fc5612d694b362fcbbf4
@@@ -14,15 -14,9 +14,15 @@@ SimpleNavigation::Configuration.run do 
        settings.item :import, safe_join([fa_icon('cloud-upload fw'), t('settings.import')]), settings_import_url
        settings.item :export, safe_join([fa_icon('cloud-download fw'), t('settings.export')]), settings_export_url
        settings.item :authorized_apps, safe_join([fa_icon('list fw'), t('settings.authorized_apps')]), oauth_authorized_applications_url
-       settings.item :identity_proofs, safe_join([fa_icon('key fw'), t('settings.identity_proofs')]), settings_identity_proofs_path, highlights_on: %r{/settings/identity_proofs*}
+       settings.item :identity_proofs, safe_join([fa_icon('key fw'), t('settings.identity_proofs')]), settings_identity_proofs_path, highlights_on: %r{/settings/identity_proofs*}, if: proc { current_account.identity_proofs.exists? }
      end
  
 +    primary.item :flavours, safe_join([fa_icon('paint-brush fw'), t('settings.flavours')]), settings_flavours_url do |flavours|
 +      Themes.instance.flavours.each do |flavour|
 +        flavours.item flavour.to_sym, safe_join([fa_icon('star fw'), t("flavours.#{flavour}.name", default: flavour)]), settings_flavour_url(flavour)
 +      end
 +    end
 +
      primary.item :relationships, safe_join([fa_icon('users fw'), t('settings.relationships')]), relationships_url
      primary.item :filters, safe_join([fa_icon('filter fw'), t('filters.index.title')]), filters_path, highlights_on: %r{/filters}
      primary.item :invites, safe_join([fa_icon('user-plus fw'), t('invites.title')]), invites_path, if: proc { Setting.min_invite_role == 'user' }