From 1c0b2479045015b96907eaa7567bfd14e4593424 Mon Sep 17 00:00:00 2001 From: pluralcafe-docker Date: Tue, 11 Dec 2018 19:07:38 +0000 Subject: Revert "Add profile directory (#9427)" This reverts commit ee5213093a084c2eb5fa97fb4bdea6019dda5cf5. --- app/controllers/admin/tags_controller.rb | 44 ------ .../api/v1/accounts/credentials_controller.rb | 2 +- app/controllers/directories_controller.rb | 48 ------ app/controllers/settings/profiles_controller.rb | 2 +- app/helpers/admin/filter_helper.rb | 3 +- app/javascript/styles/mastodon/accounts.scss | 5 - app/javascript/styles/mastodon/widgets.scss | 165 --------------------- app/models/account.rb | 40 ----- app/models/account_stat.rb | 12 +- app/models/account_tag_stat.rb | 24 --- app/models/concerns/account_associations.rb | 3 - app/models/concerns/account_counters.rb | 1 - app/models/tag.rb | 26 ---- app/policies/tag_policy.rb | 15 -- app/services/update_account_service.rb | 5 - app/views/admin/tags/_tag.html.haml | 12 -- app/views/admin/tags/index.html.haml | 19 --- app/views/directories/index.html.haml | 59 -------- app/views/layouts/public.html.haml | 4 - app/views/settings/profiles/show.html.haml | 4 +- 20 files changed, 6 insertions(+), 487 deletions(-) delete mode 100644 app/controllers/admin/tags_controller.rb delete mode 100644 app/controllers/directories_controller.rb delete mode 100644 app/models/account_tag_stat.rb delete mode 100644 app/policies/tag_policy.rb delete mode 100644 app/views/admin/tags/_tag.html.haml delete mode 100644 app/views/admin/tags/index.html.haml delete mode 100644 app/views/directories/index.html.haml (limited to 'app') diff --git a/app/controllers/admin/tags_controller.rb b/app/controllers/admin/tags_controller.rb deleted file mode 100644 index 3f2256566..000000000 --- a/app/controllers/admin/tags_controller.rb +++ /dev/null @@ -1,44 +0,0 @@ -# frozen_string_literal: true - -module Admin - class TagsController < BaseController - before_action :set_tags, only: :index - before_action :set_tag, except: :index - before_action :set_filter_params - - def index - authorize :tag, :index? - end - - def hide - authorize @tag, :hide? - @tag.account_tag_stat.update!(hidden: true) - redirect_to admin_tags_path(@filter_params) - end - - def unhide - authorize @tag, :unhide? - @tag.account_tag_stat.update!(hidden: true) - redirect_to admin_tags_path(@filter_params) - end - - private - - def set_tags - @tags = Tag.discoverable - @tags.merge!(Tag.hidden) if filter_params[:hidden] - end - - def set_tag - @tag = Tag.find(params[:id]) - end - - def set_filter_params - @filter_params = filter_params.to_hash.symbolize_keys - end - - def filter_params - params.permit(:hidden) - end - end -end diff --git a/app/controllers/api/v1/accounts/credentials_controller.rb b/app/controllers/api/v1/accounts/credentials_controller.rb index e77f57910..dcd41b35c 100644 --- a/app/controllers/api/v1/accounts/credentials_controller.rb +++ b/app/controllers/api/v1/accounts/credentials_controller.rb @@ -21,7 +21,7 @@ class Api::V1::Accounts::CredentialsController < Api::BaseController private def account_params - params.permit(:display_name, :note, :avatar, :header, :locked, :bot, :discoverable, fields_attributes: [:name, :value]) + params.permit(:display_name, :note, :avatar, :header, :locked, :bot, fields_attributes: [:name, :value]) end def user_settings_params diff --git a/app/controllers/directories_controller.rb b/app/controllers/directories_controller.rb deleted file mode 100644 index 265fd5fab..000000000 --- a/app/controllers/directories_controller.rb +++ /dev/null @@ -1,48 +0,0 @@ -# frozen_string_literal: true - -class DirectoriesController < ApplicationController - layout 'public' - - before_action :set_instance_presenter - before_action :set_tag, only: :show - before_action :set_tags - before_action :set_accounts - - def index - render :index - end - - def show - render :index - end - - private - - def set_tag - @tag = Tag.discoverable.find_by!(name: params[:id].downcase) - end - - def set_tags - @tags = Tag.discoverable.limit(30) - end - - def set_accounts - @accounts = Account.searchable.discoverable.page(params[:page]).per(50).tap do |query| - query.merge!(Account.tagged_with(@tag.id)) if @tag - - if popular_requested? - query.merge!(Account.popular) - else - query.merge!(Account.by_recent_status) - end - end - end - - def set_instance_presenter - @instance_presenter = InstancePresenter.new - end - - def popular_requested? - request.path.ends_with?('/popular') - end -end diff --git a/app/controllers/settings/profiles_controller.rb b/app/controllers/settings/profiles_controller.rb index 1a0b73d16..918dbc6c6 100644 --- a/app/controllers/settings/profiles_controller.rb +++ b/app/controllers/settings/profiles_controller.rb @@ -25,7 +25,7 @@ class Settings::ProfilesController < Settings::BaseController private def account_params - params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :bot, :discoverable, fields_attributes: [:name, :value]) + params.require(:account).permit(:display_name, :note, :avatar, :header, :locked, :bot, fields_attributes: [:name, :value]) end def set_account diff --git a/app/helpers/admin/filter_helper.rb b/app/helpers/admin/filter_helper.rb index 8807cc784..9a663051c 100644 --- a/app/helpers/admin/filter_helper.rb +++ b/app/helpers/admin/filter_helper.rb @@ -5,9 +5,8 @@ module Admin::FilterHelper REPORT_FILTERS = %i(resolved account_id target_account_id).freeze INVITE_FILTER = %i(available expired).freeze CUSTOM_EMOJI_FILTERS = %i(local remote by_domain shortcode).freeze - TAGS_FILTERS = %i(hidden).freeze - FILTERS = ACCOUNT_FILTERS + REPORT_FILTERS + INVITE_FILTER + CUSTOM_EMOJI_FILTERS + TAGS_FILTERS + FILTERS = ACCOUNT_FILTERS + REPORT_FILTERS + INVITE_FILTER + CUSTOM_EMOJI_FILTERS def filter_link_to(text, link_to_params, link_class_params = link_to_params) new_url = filtered_url_for(link_to_params) diff --git a/app/javascript/styles/mastodon/accounts.scss b/app/javascript/styles/mastodon/accounts.scss index 63a5c61b8..06effbdb2 100644 --- a/app/javascript/styles/mastodon/accounts.scss +++ b/app/javascript/styles/mastodon/accounts.scss @@ -189,11 +189,6 @@ &--under-tabs { border-radius: 0 0 4px 4px; } - - &--flexible { - box-sizing: border-box; - min-height: 100%; - } } .account-role { diff --git a/app/javascript/styles/mastodon/widgets.scss b/app/javascript/styles/mastodon/widgets.scss index a838ca778..f843f0b42 100644 --- a/app/javascript/styles/mastodon/widgets.scss +++ b/app/javascript/styles/mastodon/widgets.scss @@ -240,168 +240,3 @@ border-radius: 0; } } - -.page-header { - background: lighten($ui-base-color, 8%); - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - border-radius: 4px; - padding: 60px 15px; - text-align: center; - margin: 10px 0; - - h1 { - color: $primary-text-color; - font-size: 36px; - line-height: 1.1; - font-weight: 700; - margin-bottom: 10px; - } - - p { - font-size: 15px; - color: $darker-text-color; - } -} - -.directory { - background: $ui-base-color; - border-radius: 0 0 4px 4px; - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - - &__tag { - box-sizing: border-box; - margin-bottom: 10px; - - a { - display: flex; - align-items: center; - justify-content: space-between; - background: $ui-base-color; - border-radius: 4px; - padding: 15px; - text-decoration: none; - color: inherit; - box-shadow: 0 0 15px rgba($base-shadow-color, 0.2); - - &:hover, - &:active, - &:focus { - background: lighten($ui-base-color, 8%); - } - } - - &.active a { - background: $ui-highlight-color; - cursor: default; - } - - h4 { - flex: 1 1 auto; - font-size: 18px; - font-weight: 700; - color: $primary-text-color; - - .fa { - color: $darker-text-color; - } - - small { - display: block; - font-weight: 400; - font-size: 15px; - margin-top: 8px; - color: $darker-text-color; - } - } - - &.active h4 { - &, - .fa, - small { - color: $primary-text-color; - } - } - - .avatar-stack { - flex: 0 0 auto; - width: (36px + 4px) * 3; - } - - &.active .avatar-stack .account__avatar { - border-color: $ui-highlight-color; - } - } -} - -.avatar-stack { - display: flex; - justify-content: flex-end; - - .account__avatar { - flex: 0 0 auto; - width: 36px; - height: 36px; - border-radius: 50%; - position: relative; - margin-left: -10px; - border: 2px solid $ui-base-color; - - &:nth-child(1) { - z-index: 1; - } - - &:nth-child(2) { - z-index: 2; - } - - &:nth-child(3) { - z-index: 3; - } - } -} - -.accounts-table { - width: 100%; - - .account { - padding: 0; - border: 0; - } - - thead th { - text-align: center; - text-transform: uppercase; - color: $darker-text-color; - font-weight: 700; - padding: 10px; - - &:first-child { - text-align: left; - } - } - - tbody td { - padding: 15px 0; - vertical-align: middle; - border-bottom: 1px solid lighten($ui-base-color, 8%); - } - - tbody tr:last-child td { - border-bottom: 0; - } - - &__count { - width: 120px; - text-align: center; - font-size: 15px; - font-weight: 500; - color: $primary-text-color; - - small { - display: block; - color: $darker-text-color; - font-weight: 400; - font-size: 14px; - } - } -} diff --git a/app/models/account.rb b/app/models/account.rb index f993b0765..e6b5bd69f 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -43,13 +43,11 @@ # featured_collection_url :string # fields :jsonb # actor_type :string -# discoverable :boolean # class Account < ApplicationRecord USERNAME_RE = /[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?/i MENTION_RE = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[a-z0-9\.\-]+[a-z0-9]+)?)/i - MIN_FOLLOWERS_DISCOVERY = 10 include AccountAssociations include AccountAvatar @@ -95,10 +93,6 @@ class Account < ApplicationRecord scope :matches_display_name, ->(value) { where(arel_table[:display_name].matches("#{value}%")) } scope :matches_domain, ->(value) { where(arel_table[:domain].matches("%#{value}%")) } scope :searchable, -> { where(suspended: false).where(moved_to_account_id: nil) } - scope :discoverable, -> { where(silenced: false).where(discoverable: true).joins(:account_stat).where(AccountStat.arel_table[:followers_count].gteq(MIN_FOLLOWERS_DISCOVERY)) } - scope :tagged_with, ->(tag) { joins(:accounts_tags).where(accounts_tags: { tag_id: tag }) } - scope :popular, -> { order('account_stats.followers_count desc') } - scope :by_recent_status, -> { order('(case when account_stats.last_status_at is null then 1 else 0 end) asc, account_stats.last_status_at desc') } delegate :email, :unconfirmed_email, @@ -184,40 +178,6 @@ class Account < ApplicationRecord @keypair ||= OpenSSL::PKey::RSA.new(private_key || public_key) end - def tags_as_strings=(tag_names) - tag_names.map! { |name| name.mb_chars.downcase } - tag_names.uniq!(&:to_s) - - # Existing hashtags - hashtags_map = Tag.where(name: tag_names).each_with_object({}) { |tag, h| h[tag.name] = tag } - - # Initialize not yet existing hashtags - tag_names.each do |name| - next if hashtags_map.key?(name) - hashtags_map[name.downcase] = Tag.new(name: name) - end - - # Remove hashtags that are to be deleted - tags.each do |tag| - if hashtags_map.key?(tag.name) - hashtags_map.delete(tag.name) - else - transaction do - tags.delete(tag) - tag.decrement_count!(:accounts_count) - end - end - end - - # Add hashtags that were so far missing - hashtags_map.each_value do |tag| - transaction do - tags << tag - tag.increment_count!(:accounts_count) - end - end - end - def fields (self[:fields] || []).map { |f| Field.new(self, f) } end diff --git a/app/models/account_stat.rb b/app/models/account_stat.rb index 9813aa84f..d5715268e 100644 --- a/app/models/account_stat.rb +++ b/app/models/account_stat.rb @@ -1,4 +1,5 @@ # frozen_string_literal: true + # == Schema Information # # Table name: account_stats @@ -10,25 +11,16 @@ # followers_count :bigint(8) default(0), not null # created_at :datetime not null # updated_at :datetime not null -# last_status_at :datetime # class AccountStat < ApplicationRecord belongs_to :account, inverse_of: :account_stat def increment_count!(key) - update(attributes_for_increment(key)) + update(key => public_send(key) + 1) end def decrement_count!(key) update(key => [public_send(key) - 1, 0].max) end - - private - - def attributes_for_increment(key) - attrs = { key => public_send(key) + 1 } - attrs[:last_status_at] = Time.now.utc if key == :statuses_count - attrs - end end diff --git a/app/models/account_tag_stat.rb b/app/models/account_tag_stat.rb deleted file mode 100644 index 3c36c155a..000000000 --- a/app/models/account_tag_stat.rb +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true -# == Schema Information -# -# Table name: account_tag_stats -# -# id :bigint(8) not null, primary key -# tag_id :bigint(8) not null -# accounts_count :bigint(8) default(0), not null -# hidden :boolean default(FALSE), not null -# created_at :datetime not null -# updated_at :datetime not null -# - -class AccountTagStat < ApplicationRecord - belongs_to :tag, inverse_of: :account_tag_stat - - def increment_count!(key) - update(key => public_send(key) + 1) - end - - def decrement_count!(key) - update(key => [public_send(key) - 1, 0].max) - end -end diff --git a/app/models/concerns/account_associations.rb b/app/models/concerns/account_associations.rb index 38e2481c5..9dba8000d 100644 --- a/app/models/concerns/account_associations.rb +++ b/app/models/concerns/account_associations.rb @@ -50,8 +50,5 @@ module AccountAssociations # Account migrations belongs_to :moved_to_account, class_name: 'Account', optional: true - - # Hashtags - has_and_belongs_to_many :tags end end diff --git a/app/models/concerns/account_counters.rb b/app/models/concerns/account_counters.rb index 3581df8dd..fa3ec9a3d 100644 --- a/app/models/concerns/account_counters.rb +++ b/app/models/concerns/account_counters.rb @@ -16,7 +16,6 @@ module AccountCounters :followers_count=, :increment_count!, :decrement_count!, - :last_status_at, to: :account_stat def account_stat diff --git a/app/models/tag.rb b/app/models/tag.rb index b28e2cc18..4f31f796e 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -11,31 +11,12 @@ class Tag < ApplicationRecord has_and_belongs_to_many :statuses - has_and_belongs_to_many :accounts - - has_one :account_tag_stat, dependent: :destroy HASHTAG_NAME_RE = '[[:word:]_]*[[:alpha:]_ยท][[:word:]_]*' HASHTAG_RE = /(?:^|[^\/\)\w])#(#{HASHTAG_NAME_RE})/i validates :name, presence: true, uniqueness: true, format: { with: /\A#{HASHTAG_NAME_RE}\z/i } - scope :discoverable, -> { joins(:account_tag_stat).where(AccountTagStat.arel_table[:accounts_count].gt(0)).where(account_tag_stats: { hidden: false }).order(name: :asc) } - scope :hidden, -> { where(account_tag_stats: { hidden: true }) } - - delegate :accounts_count, - :accounts_count=, - :increment_count!, - :decrement_count!, - :hidden?, - to: :account_tag_stat - - after_save :save_account_tag_stat - - def account_tag_stat - super || build_account_tag_stat - end - def to_param name end @@ -62,11 +43,4 @@ class Tag < ApplicationRecord Tag.where('lower(name) like lower(?)', pattern).order(:name).limit(limit) end end - - private - - def save_account_tag_stat - return unless account_tag_stat&.changed? - account_tag_stat.save - end end diff --git a/app/policies/tag_policy.rb b/app/policies/tag_policy.rb deleted file mode 100644 index c63de01db..000000000 --- a/app/policies/tag_policy.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -class TagPolicy < ApplicationPolicy - def index? - staff? - end - - def hide? - staff? - end - - def unhide? - staff? - end -end diff --git a/app/services/update_account_service.rb b/app/services/update_account_service.rb index 36665177d..ec69d944a 100644 --- a/app/services/update_account_service.rb +++ b/app/services/update_account_service.rb @@ -10,7 +10,6 @@ class UpdateAccountService < BaseService authorize_all_follow_requests(account) if was_locked && !account.locked check_links(account) - process_hashtags(account) end end @@ -25,8 +24,4 @@ class UpdateAccountService < BaseService def check_links(account) VerifyAccountLinksWorker.perform_async(account.id) end - - def process_hashtags(account) - account.tags_as_strings = Extractor.extract_hashtags(account.note) - end end diff --git a/app/views/admin/tags/_tag.html.haml b/app/views/admin/tags/_tag.html.haml deleted file mode 100644 index 961b83f93..000000000 --- a/app/views/admin/tags/_tag.html.haml +++ /dev/null @@ -1,12 +0,0 @@ -%tr - %td - = link_to explore_hashtag_path(tag) do - = fa_icon 'hashtag' - = tag.name - %td - = t('directories.people', count: tag.accounts_count) - %td - - if tag.hidden? - = table_link_to 'eye', t('admin.tags.unhide'), unhide_admin_tag_path(tag.id, **@filter_params), method: :post - - else - = table_link_to 'eye-slash', t('admin.tags.hide'), hide_admin_tag_path(tag.id, **@filter_params), method: :post diff --git a/app/views/admin/tags/index.html.haml b/app/views/admin/tags/index.html.haml deleted file mode 100644 index 4ba395860..000000000 --- a/app/views/admin/tags/index.html.haml +++ /dev/null @@ -1,19 +0,0 @@ -- content_for :page_title do - = t('admin.tags.title') - -.filters - .filter-subset - %strong= t('admin.reports.status') - %ul - %li= filter_link_to t('admin.tags.visible'), hidden: nil - %li= filter_link_to t('admin.tags.hidden'), hidden: '1' - -.table-wrapper - %table.table - %thead - %tr - %th= t('admin.tags.name') - %th= t('admin.tags.accounts') - %th - %tbody - = render @tags diff --git a/app/views/directories/index.html.haml b/app/views/directories/index.html.haml deleted file mode 100644 index 7cd6b50d4..000000000 --- a/app/views/directories/index.html.haml +++ /dev/null @@ -1,59 +0,0 @@ -- content_for :page_title do - = t('directories.explore_mastodon') - -- content_for :header_tags do - %meta{ name: 'description', content: t('directories.explanation') } - - = opengraph 'og:site_name', site_title - = opengraph 'og:title', t('directories.explore_mastodon', title: site_title) - = opengraph 'og:description', t('directories.explanation') - -.page-header - %h1= t('directories.explore_mastodon', title: site_title) - %p= t('directories.explanation') - -.grid - .column-0 - .account__section-headline - = active_link_to t('directories.most_recently_active'), @tag ? explore_hashtag_path(@tag) : explore_path - = active_link_to t('directories.most_popular'), @tag ? explore_hashtag_popular_path(@tag) : explore_popular_path - - - if @accounts.empty? - = nothing_here - - else - .directory - %table.accounts-table - %tbody - - @accounts.each do |account| - %tr - %td= account_link_to account - %td.accounts-table__count - = number_to_human account.statuses_count, strip_insignificant_zeros: true - %small= t('accounts.posts', count: account.statuses_count) - %td.accounts-table__count - = number_to_human account.followers_count, strip_insignificant_zeros: true - %small= t('accounts.followers', count: account.followers_count) - %td.accounts-table__count - - if account.last_status_at.present? - %time.time-ago{ datetime: account.last_status_at.iso8601, title: l(account.last_status_at) }= l account.last_status_at - - else - \- - %small= t('accounts.last_active') - - = paginate @accounts - - .column-1 - - if @tags.empty? - .nothing-here.nothing-here--flexible - - else - - @tags.each do |tag| - .directory__tag{ class: tag.id == @tag&.id ? 'active' : nil } - = link_to explore_hashtag_path(tag) do - %h4 - = fa_icon 'hashtag' - = tag.name - %small= t('directories.people', count: tag.accounts_count) - - .avatar-stack - - tag.accounts.limit(3).each do |account| - = image_tag current_account&.user&.setting_auto_play_gif ? account.avatar_original_url : account.avatar_static_url, width: 48, height: 48, alt: '', class: 'account__avatar' diff --git a/app/views/layouts/public.html.haml b/app/views/layouts/public.html.haml index ee49ed06c..fd5c67a99 100644 --- a/app/views/layouts/public.html.haml +++ b/app/views/layouts/public.html.haml @@ -5,10 +5,6 @@ .nav-left = link_to root_url, class: 'brand' do = image_tag asset_pack_path('logo_full.svg'), alt: 'Mastodon' - - = link_to t('directories.directory'), explore_path, class: 'nav-link' - = link_to t('about.about_this'), about_more_path, class: 'nav-link' - = link_to t('about.apps'), 'https://joinmastodon.org/apps', class: 'nav-link' .nav-center .nav-right - if user_signed_in? diff --git a/app/views/settings/profiles/show.html.haml b/app/views/settings/profiles/show.html.haml index 212c6cb44..2ba236fb5 100644 --- a/app/views/settings/profiles/show.html.haml +++ b/app/views/settings/profiles/show.html.haml @@ -18,6 +18,7 @@ = f.input :avatar, wrapper: :with_label, input_html: { accept: AccountAvatar::IMAGE_MIME_TYPES.join(',') }, hint: t('simple_form.hints.defaults.avatar', dimensions: '400x400', size: number_to_human_size(AccountAvatar::LIMIT)) + %hr.spacer/ .fields-group @@ -26,9 +27,6 @@ .fields-group = f.input :bot, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.bot') - .fields-group - = f.input :discoverable, as: :boolean, wrapper: :with_label, hint: t('simple_form.hints.defaults.discoverable_html', min_followers: Account::MIN_FOLLOWERS_DISCOVERY, path: explore_path) - %hr.spacer/ .fields-row -- cgit