Merge branch 'main' into glitch-soc/merge-upstream
Conflicts: - `.github/workflows/build-image.yml`: Upstream switched to pushing to both DockerHub and GitHub Container Repository, while glitch-soc was already pushing to the latter only. Updated our configuration to be slightly more consistent with upstream's naming and styling, but kept our behavior. - `Gemfile.lock`: Updated dependencies textually too close to glitch-soc only hcaptcha dependency. Updated dependencies as upstream did. - `README.md`: Upstream updated its README, but we have a completely different one. Kept our README, though it probably should be reworked at some point. - `app/views/auth/sessions/two_factor.html.haml`: Minor style fix upstream that's on a line glitch-soc removed because of its different theming system. Kept our file as is. - `spec/controllers/health_controller_spec.rb`: This file apparently did not exist upstream, upstream created it with different contents but it is functionally the same. Switched to upstream's version of the file. - `spec/presenters/instance_presenter_spec.rb`: Upstream changed the specs around `GITHUB_REPOSITORY`, while glitch-soc had its own code because it's a fork and does not have the same default source URL. Took upstream's change, but with glitch-soc's repo as the default case. - `yarn.lock`: Upstream dependencies textually too close to a glitch-soc only one. Updated dependencies as upstream did.
This commit is contained in:
commit
3ef5f62abf
171 changed files with 2089 additions and 1778 deletions
|
@ -1,128 +0,0 @@
|
|||
version: 2.1
|
||||
|
||||
orbs:
|
||||
ruby: circleci/ruby@2.0.0
|
||||
node: circleci/node@5.0.3
|
||||
|
||||
executors:
|
||||
default:
|
||||
parameters:
|
||||
ruby-version:
|
||||
type: string
|
||||
docker:
|
||||
- image: cimg/ruby:<< parameters.ruby-version >>
|
||||
environment:
|
||||
BUNDLE_JOBS: 3
|
||||
BUNDLE_RETRY: 3
|
||||
CONTINUOUS_INTEGRATION: true
|
||||
DB_HOST: localhost
|
||||
DB_USER: root
|
||||
DISABLE_SIMPLECOV: true
|
||||
RAILS_ENV: test
|
||||
- image: cimg/postgres:14.5
|
||||
environment:
|
||||
POSTGRES_USER: root
|
||||
POSTGRES_HOST_AUTH_METHOD: trust
|
||||
- image: cimg/redis:7.0
|
||||
|
||||
commands:
|
||||
install-system-dependencies:
|
||||
steps:
|
||||
- run:
|
||||
name: Install system dependencies
|
||||
command: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y libicu-dev libidn11-dev
|
||||
install-ruby-dependencies:
|
||||
parameters:
|
||||
ruby-version:
|
||||
type: string
|
||||
steps:
|
||||
- run:
|
||||
command: |
|
||||
bundle config clean 'true'
|
||||
bundle config frozen 'true'
|
||||
bundle config without 'development production'
|
||||
name: Set bundler settings
|
||||
- ruby/install-deps:
|
||||
bundler-version: '2.3.26'
|
||||
key: ruby<< parameters.ruby-version >>-gems-v2
|
||||
wait-db:
|
||||
steps:
|
||||
- run:
|
||||
command: dockerize -wait tcp://localhost:5432 -wait tcp://localhost:6379 -timeout 1m
|
||||
name: Wait for PostgreSQL and Redis
|
||||
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
- image: cimg/ruby:3.2-node
|
||||
environment:
|
||||
RAILS_ENV: test
|
||||
steps:
|
||||
- checkout
|
||||
- install-system-dependencies
|
||||
- install-ruby-dependencies:
|
||||
ruby-version: '3.2'
|
||||
- node/install-packages:
|
||||
cache-version: v1
|
||||
pkg-manager: yarn
|
||||
- run:
|
||||
command: |
|
||||
export NODE_OPTIONS=--openssl-legacy-provider
|
||||
./bin/rails assets:precompile
|
||||
name: Precompile assets
|
||||
- persist_to_workspace:
|
||||
paths:
|
||||
- public/assets
|
||||
- public/packs-test
|
||||
root: .
|
||||
|
||||
test:
|
||||
parameters:
|
||||
ruby-version:
|
||||
type: string
|
||||
executor:
|
||||
name: default
|
||||
ruby-version: << parameters.ruby-version >>
|
||||
environment:
|
||||
ALLOW_NOPAM: true
|
||||
PAM_ENABLED: true
|
||||
PAM_DEFAULT_SERVICE: pam_test
|
||||
PAM_CONTROLLED_SERVICE: pam_test_controlled
|
||||
parallelism: 4
|
||||
steps:
|
||||
- checkout
|
||||
- install-system-dependencies
|
||||
- run:
|
||||
command: sudo apt-get install -y ffmpeg imagemagick libmagickcore-dev libmagickwand-dev libjpeg-dev libpng-dev libtiff-dev libwebp-dev libpam-dev
|
||||
name: Install additional system dependencies
|
||||
- run:
|
||||
command: bundle config with 'pam_authentication'
|
||||
name: Enable PAM authentication
|
||||
- install-ruby-dependencies:
|
||||
ruby-version: << parameters.ruby-version >>
|
||||
- attach_workspace:
|
||||
at: .
|
||||
- wait-db
|
||||
- run:
|
||||
command: ./bin/rails db:create db:schema:load db:seed
|
||||
name: Load database schema
|
||||
- ruby/rspec-test
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
build-and-test:
|
||||
jobs:
|
||||
- build
|
||||
- test:
|
||||
matrix:
|
||||
parameters:
|
||||
ruby-version:
|
||||
- '2.7'
|
||||
- '3.0'
|
||||
- '3.1'
|
||||
- '3.2'
|
||||
name: test-ruby<< matrix.ruby-version >>
|
||||
requires:
|
||||
- build
|
|
@ -41,7 +41,7 @@ services:
|
|||
- internal_network
|
||||
|
||||
redis:
|
||||
image: redis:6-alpine
|
||||
image: redis:7-alpine
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- redis-data:/data
|
||||
|
|
9
.github/workflows/build-image.yml
vendored
9
.github/workflows/build-image.yml
vendored
|
@ -25,12 +25,15 @@ jobs:
|
|||
- uses: hadolint/hadolint-action@v3.1.0
|
||||
- uses: docker/setup-qemu-action@v2
|
||||
- uses: docker/setup-buildx-action@v2
|
||||
- uses: docker/login-action@v2
|
||||
|
||||
- name: Log in to the Github Container registry
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
if: github.event_name != 'pull_request'
|
||||
|
||||
- uses: docker/metadata-action@v4
|
||||
id: meta
|
||||
with:
|
||||
|
@ -39,6 +42,7 @@ jobs:
|
|||
type=raw,value=latest,enable={{is_default_branch}}
|
||||
type=edge,branch=main
|
||||
type=sha,prefix=,format=long
|
||||
|
||||
- uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
|
@ -47,5 +51,6 @@ jobs:
|
|||
builder: ${{ steps.buildx.outputs.name }}
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
|
|
17
.github/workflows/haml-lint-problem-matcher.json
vendored
Normal file
17
.github/workflows/haml-lint-problem-matcher.json
vendored
Normal file
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"problemMatcher": [
|
||||
{
|
||||
"owner": "haml-lint",
|
||||
"severity": "warning",
|
||||
"pattern": [
|
||||
{
|
||||
"regexp": "^(.*):(\\d+)\\s\\[W]\\s(.*):\\s(.*)$",
|
||||
"file": 1,
|
||||
"line": 2,
|
||||
"code": 3,
|
||||
"message": 4
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
44
.github/workflows/lint-haml.yml
vendored
Normal file
44
.github/workflows/lint-haml.yml
vendored
Normal file
|
@ -0,0 +1,44 @@
|
|||
name: Haml Linting
|
||||
on:
|
||||
push:
|
||||
branches-ignore:
|
||||
- 'dependabot/**'
|
||||
paths:
|
||||
- '.github/workflows/haml-lint-problem-matcher.json'
|
||||
- '.github/workflows/lint-haml.yml'
|
||||
- '.haml-lint*.yml'
|
||||
- '.rubocop*.yml'
|
||||
- '.ruby-version'
|
||||
- '**/*.haml'
|
||||
- 'Gemfile*'
|
||||
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/haml-lint-problem-matcher.json'
|
||||
- '.github/workflows/lint-haml.yml'
|
||||
- '.haml-lint*.yml'
|
||||
- '.rubocop*.yml'
|
||||
- '.ruby-version'
|
||||
- '**/*.haml'
|
||||
- 'Gemfile*'
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clone repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Install native Ruby dependencies
|
||||
run: sudo apt-get install -y libicu-dev libidn11-dev
|
||||
|
||||
- name: Set up Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: .ruby-version
|
||||
bundler-cache: true
|
||||
|
||||
- name: Run haml-lint
|
||||
run: |
|
||||
echo "::add-matcher::.github/workflows/haml-lint-problem-matcher.json"
|
||||
bundle exec haml-lint
|
6
.github/workflows/rebase-needed.yml
vendored
6
.github/workflows/rebase-needed.yml
vendored
|
@ -2,7 +2,13 @@ name: PR Needs Rebase
|
|||
|
||||
on:
|
||||
push:
|
||||
branches-ignore:
|
||||
- 'dependabot/**'
|
||||
- 'l10n_main'
|
||||
pull_request_target:
|
||||
branches-ignore:
|
||||
- 'dependabot/**'
|
||||
- 'l10n_main'
|
||||
types: [synchronize]
|
||||
|
||||
permissions:
|
||||
|
|
|
@ -25,7 +25,7 @@ jobs:
|
|||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:14.5
|
||||
image: postgres:14-alpine
|
||||
env:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
POSTGRES_USER: postgres
|
||||
|
@ -38,7 +38,7 @@ jobs:
|
|||
- 5432:5432
|
||||
|
||||
redis:
|
||||
image: redis:7.0
|
||||
image: redis:7-alpine
|
||||
options: >-
|
||||
--health-cmd "redis-cli ping"
|
||||
--health-interval 10s
|
||||
|
|
|
@ -25,7 +25,7 @@ jobs:
|
|||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:14.5
|
||||
image: postgres:14-alpine
|
||||
env:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
POSTGRES_USER: postgres
|
||||
|
@ -37,7 +37,7 @@ jobs:
|
|||
ports:
|
||||
- 5432:5432
|
||||
redis:
|
||||
image: redis:7.0
|
||||
image: redis:7-alpine
|
||||
options: >-
|
||||
--health-cmd "redis-cli ping"
|
||||
--health-interval 10s
|
||||
|
|
141
.github/workflows/test-ruby.yml
vendored
Normal file
141
.github/workflows/test-ruby.yml
vendored
Normal file
|
@ -0,0 +1,141 @@
|
|||
name: Ruby Testing
|
||||
|
||||
on:
|
||||
push:
|
||||
branches-ignore:
|
||||
- 'dependabot/**'
|
||||
pull_request:
|
||||
|
||||
env:
|
||||
BUNDLE_CLEAN: true
|
||||
BUNDLE_FROZEN: true
|
||||
BUNDLE_WITHOUT: 'development production'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
RAILS_ENV: test
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
cache: yarn
|
||||
node-version-file: '.nvmrc'
|
||||
|
||||
- name: Install native Ruby dependencies
|
||||
run: sudo apt-get install -y libicu-dev libidn11-dev
|
||||
|
||||
- name: Set up bundler cache
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: .ruby-version
|
||||
bundler-cache: true
|
||||
|
||||
- run: yarn install --frozen-lockfile
|
||||
- name: Precompile assets
|
||||
# Previously had set this, but it's not supported
|
||||
# export NODE_OPTIONS=--openssl-legacy-provider
|
||||
run: |-
|
||||
./bin/rails assets:precompile
|
||||
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: |-
|
||||
./public/assets
|
||||
./public/packs-test
|
||||
name: ${{ github.sha }}
|
||||
retention-days: 0
|
||||
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs:
|
||||
- build
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:14-alpine
|
||||
env:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
POSTGRES_USER: postgres
|
||||
options: >-
|
||||
--health-cmd pg_isready
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 5
|
||||
ports:
|
||||
- 5432:5432
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
options: >-
|
||||
--health-cmd "redis-cli ping"
|
||||
--health-interval 10s
|
||||
--health-timeout 5s
|
||||
--health-retries 5
|
||||
ports:
|
||||
- 6379:6379
|
||||
|
||||
env:
|
||||
DB_HOST: localhost
|
||||
DB_USER: postgres
|
||||
DB_PASS: postgres
|
||||
DISABLE_SIMPLECOV: true
|
||||
RAILS_ENV: test
|
||||
ALLOW_NOPAM: true
|
||||
PAM_ENABLED: true
|
||||
PAM_DEFAULT_SERVICE: pam_test
|
||||
PAM_CONTROLLED_SERVICE: pam_test_controlled
|
||||
BUNDLE_WITH: 'pam_authentication'
|
||||
CI_JOBS: ${{ matrix.ci_job }}/4
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
ruby-version:
|
||||
- '2.7'
|
||||
- '3.0'
|
||||
- '3.1'
|
||||
- '.ruby-version'
|
||||
ci_job:
|
||||
- 1
|
||||
- 2
|
||||
- 3
|
||||
- 4
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- uses: actions/download-artifact@v3
|
||||
with:
|
||||
path: './public'
|
||||
name: ${{ github.sha }}
|
||||
|
||||
- name: Install native Ruby dependencies
|
||||
run: sudo apt-get install -y libicu-dev libidn11-dev
|
||||
|
||||
- name: Install additional system dependencies
|
||||
run: sudo apt-get install -y ffmpeg imagemagick libpam-dev
|
||||
|
||||
- name: Set up bundler cache
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
ruby-version: ${{ matrix.ruby-version}}
|
||||
bundler-cache: true
|
||||
|
||||
- name: Update system gems
|
||||
if: matrix.ruby-version == '2.7'
|
||||
run: gem update --system
|
||||
|
||||
- name: Load database schema
|
||||
run: './bin/rails db:create db:schema:load db:seed'
|
||||
|
||||
- run: bundle exec rake rspec_chunked
|
103
.haml-lint.yml
103
.haml-lint.yml
|
@ -1,108 +1,9 @@
|
|||
# Whether to ignore frontmatter at the beginning of HAML documents for
|
||||
# frameworks such as Jekyll/Middleman
|
||||
skip_frontmatter: false
|
||||
inherits_from: .haml-lint_todo.yml
|
||||
|
||||
exclude:
|
||||
- 'vendor/**/*'
|
||||
- 'spec/**/*'
|
||||
- 'lib/templates/**/*'
|
||||
- 'app/views/kaminari/**/*'
|
||||
- lib/templates/haml/scaffold/_form.html.haml
|
||||
|
||||
linters:
|
||||
AltText:
|
||||
enabled: false
|
||||
|
||||
ClassAttributeWithStaticValue:
|
||||
enabled: true
|
||||
|
||||
ClassesBeforeIds:
|
||||
enabled: true
|
||||
|
||||
ConsecutiveComments:
|
||||
enabled: true
|
||||
|
||||
ConsecutiveSilentScripts:
|
||||
enabled: true
|
||||
max_consecutive: 2
|
||||
|
||||
EmptyObjectReference:
|
||||
enabled: true
|
||||
|
||||
EmptyScript:
|
||||
enabled: true
|
||||
|
||||
FinalNewline:
|
||||
enabled: true
|
||||
present: true
|
||||
|
||||
HtmlAttributes:
|
||||
enabled: true
|
||||
|
||||
ImplicitDiv:
|
||||
enabled: true
|
||||
|
||||
LeadingCommentSpace:
|
||||
enabled: true
|
||||
|
||||
LineLength:
|
||||
enabled: false
|
||||
max: 80
|
||||
|
||||
MultilinePipe:
|
||||
enabled: true
|
||||
|
||||
MultilineScript:
|
||||
enabled: true
|
||||
|
||||
ObjectReferenceAttributes:
|
||||
enabled: true
|
||||
|
||||
RuboCop:
|
||||
enabled: true
|
||||
# These cops are incredibly noisy when it comes to HAML templates, so we
|
||||
# ignore them.
|
||||
ignored_cops:
|
||||
- Lint/BlockAlignment
|
||||
- Lint/EndAlignment
|
||||
- Lint/Void
|
||||
- Metrics/BlockLength
|
||||
- Metrics/LineLength
|
||||
- Style/AlignParameters
|
||||
- Style/BlockNesting
|
||||
- Style/ElseAlignment
|
||||
- Style/EndOfLine
|
||||
- Style/FileName
|
||||
- Style/FinalNewline
|
||||
- Style/FrozenStringLiteralComment
|
||||
- Style/IfUnlessModifier
|
||||
- Style/IndentationWidth
|
||||
- Style/Next
|
||||
- Style/TrailingBlankLines
|
||||
- Style/TrailingWhitespace
|
||||
- Style/WhileUntilModifier
|
||||
|
||||
RubyComments:
|
||||
enabled: true
|
||||
|
||||
SpaceBeforeScript:
|
||||
enabled: true
|
||||
|
||||
SpaceInsideHashAttributes:
|
||||
enabled: true
|
||||
style: space
|
||||
|
||||
Indentation:
|
||||
enabled: true
|
||||
character: space # or tab
|
||||
|
||||
TagName:
|
||||
enabled: true
|
||||
|
||||
TrailingWhitespace:
|
||||
enabled: true
|
||||
|
||||
UnnecessaryInterpolation:
|
||||
enabled: true
|
||||
|
||||
UnnecessaryStringOutput:
|
||||
enabled: true
|
||||
|
|
128
.haml-lint_todo.yml
Normal file
128
.haml-lint_todo.yml
Normal file
|
@ -0,0 +1,128 @@
|
|||
# This configuration was generated by
|
||||
# `haml-lint --auto-gen-config`
|
||||
# on 2023-02-11 02:16:03 -0500 using Haml-Lint version 0.45.0.
|
||||
# The point is for the user to remove these configuration records
|
||||
# one by one as the lints are removed from the code base.
|
||||
# Note that changes in the inspected code, or installation of new
|
||||
# versions of Haml-Lint, may require this file to be generated again.
|
||||
|
||||
linters:
|
||||
# Offense count: 76
|
||||
RuboCop:
|
||||
exclude:
|
||||
- 'app/views/accounts/_og.html.haml'
|
||||
- 'app/views/admin/account_actions/new.html.haml'
|
||||
- 'app/views/admin/account_warnings/_account_warning.html.haml'
|
||||
- 'app/views/admin/accounts/index.html.haml'
|
||||
- 'app/views/admin/accounts/show.html.haml'
|
||||
- 'app/views/admin/action_logs/index.html.haml'
|
||||
- 'app/views/admin/announcements/edit.html.haml'
|
||||
- 'app/views/admin/announcements/new.html.haml'
|
||||
- 'app/views/admin/change_emails/show.html.haml'
|
||||
- 'app/views/admin/custom_emojis/index.html.haml'
|
||||
- 'app/views/admin/dashboard/index.html.haml'
|
||||
- 'app/views/admin/disputes/appeals/_appeal.html.haml'
|
||||
- 'app/views/admin/domain_blocks/edit.html.haml'
|
||||
- 'app/views/admin/domain_blocks/new.html.haml'
|
||||
- 'app/views/admin/ip_blocks/new.html.haml'
|
||||
- 'app/views/admin/reports/actions/preview.html.haml'
|
||||
- 'app/views/admin/reports/index.html.haml'
|
||||
- 'app/views/admin/reports/show.html.haml'
|
||||
- 'app/views/admin/roles/_form.html.haml'
|
||||
- 'app/views/admin/settings/about/show.html.haml'
|
||||
- 'app/views/admin/settings/appearance/show.html.haml'
|
||||
- 'app/views/admin/settings/registrations/show.html.haml'
|
||||
- 'app/views/admin/statuses/show.html.haml'
|
||||
- 'app/views/application/_card.html.haml'
|
||||
- 'app/views/application/_sidebar.html.haml'
|
||||
- 'app/views/auth/registrations/_sessions.html.haml'
|
||||
- 'app/views/auth/registrations/new.html.haml'
|
||||
- 'app/views/auth/sessions/new.html.haml'
|
||||
- 'app/views/disputes/strikes/show.html.haml'
|
||||
- 'app/views/filters/_filter_fields.html.haml'
|
||||
- 'app/views/invites/_form.html.haml'
|
||||
- 'app/views/layouts/application.html.haml'
|
||||
- 'app/views/layouts/error.html.haml'
|
||||
- 'app/views/layouts/mailer.html.haml'
|
||||
- 'app/views/notification_mailer/_status.html.haml'
|
||||
- 'app/views/notification_mailer/favourite.html.haml'
|
||||
- 'app/views/notification_mailer/follow_request.html.haml'
|
||||
- 'app/views/oauth/authorizations/new.html.haml'
|
||||
- 'app/views/oauth/authorized_applications/index.html.haml'
|
||||
- 'app/views/settings/applications/_fields.html.haml'
|
||||
- 'app/views/settings/imports/show.html.haml'
|
||||
- 'app/views/settings/login_activities/_login_activity.html.haml'
|
||||
- 'app/views/settings/preferences/appearance/show.html.haml'
|
||||
- 'app/views/settings/preferences/other/show.html.haml'
|
||||
- 'app/views/settings/preferences/other/show.html.haml'
|
||||
- 'app/views/statuses_cleanup/show.html.haml'
|
||||
- 'app/views/statuses/_detailed_status.html.haml'
|
||||
- 'app/views/statuses/_og_image.html.haml'
|
||||
- 'app/views/statuses/_poll.html.haml'
|
||||
- 'app/views/statuses/_status.html.haml'
|
||||
- 'app/views/statuses/show.html.haml'
|
||||
- 'app/views/user_mailer/suspicious_sign_in.html.haml'
|
||||
- 'app/views/user_mailer/warning.html.haml'
|
||||
- 'app/views/user_mailer/webauthn_credential_added.html.haml'
|
||||
- 'app/views/user_mailer/webauthn_credential_deleted.html.haml'
|
||||
|
||||
# Offense count: 918
|
||||
LineLength:
|
||||
enabled: false
|
||||
|
||||
# Offense count: 22
|
||||
UnnecessaryStringOutput:
|
||||
exclude:
|
||||
- 'app/views/accounts/show.html.haml'
|
||||
- 'app/views/admin/custom_emojis/_custom_emoji.html.haml'
|
||||
- 'app/views/admin/relays/_relay.html.haml'
|
||||
- 'app/views/admin/rules/_rule.html.haml'
|
||||
- 'app/views/admin/statuses/index.html.haml'
|
||||
- 'app/views/auth/registrations/_sessions.html.haml'
|
||||
- 'app/views/disputes/strikes/show.html.haml'
|
||||
- 'app/views/notification_mailer/_status.html.haml'
|
||||
- 'app/views/settings/two_factor_authentication_methods/index.html.haml'
|
||||
- 'app/views/statuses/_detailed_status.html.haml'
|
||||
- 'app/views/statuses/_poll.html.haml'
|
||||
- 'app/views/statuses/_simple_status.html.haml'
|
||||
- 'app/views/user_mailer/suspicious_sign_in.html.haml'
|
||||
- 'app/views/user_mailer/webauthn_credential_added.html.haml'
|
||||
- 'app/views/user_mailer/webauthn_credential_deleted.html.haml'
|
||||
- 'app/views/user_mailer/welcome.html.haml'
|
||||
|
||||
# Offense count: 3
|
||||
ViewLength:
|
||||
exclude:
|
||||
- 'app/views/admin/accounts/show.html.haml'
|
||||
- 'app/views/admin/reports/show.html.haml'
|
||||
- 'app/views/disputes/strikes/show.html.haml'
|
||||
|
||||
# Offense count: 43
|
||||
InstanceVariables:
|
||||
exclude:
|
||||
- 'app/views/admin/reports/_actions.html.haml'
|
||||
- 'app/views/admin/roles/_form.html.haml'
|
||||
- 'app/views/admin/webhooks/_form.html.haml'
|
||||
- 'app/views/application/_sidebar.html.haml'
|
||||
- 'app/views/auth/registrations/_sessions.html.haml'
|
||||
- 'app/views/auth/registrations/_status.html.haml'
|
||||
- 'app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml'
|
||||
- 'app/views/authorize_interactions/_post_follow_actions.html.haml'
|
||||
- 'app/views/invites/_form.html.haml'
|
||||
- 'app/views/relationships/_account.html.haml'
|
||||
- 'app/views/shared/_og.html.haml'
|
||||
- 'app/views/statuses/_status.html.haml'
|
||||
|
||||
# Offense count: 6
|
||||
ConsecutiveSilentScripts:
|
||||
exclude:
|
||||
- 'app/views/admin/settings/shared/_links.html.haml'
|
||||
- 'app/views/settings/login_activities/_login_activity.html.haml'
|
||||
- 'app/views/statuses/_poll.html.haml'
|
||||
|
||||
# Offense count: 3
|
||||
IdNames:
|
||||
exclude:
|
||||
- 'app/views/authorize_interactions/error.html.haml'
|
||||
- 'app/views/oauth/authorizations/error.html.haml'
|
||||
- 'app/views/shared/_error_messages.html.haml'
|
17
.rubocop.yml
17
.rubocop.yml
|
@ -96,9 +96,26 @@ Rails/Exit:
|
|||
- 'lib/mastodon/cli_helper.rb'
|
||||
- 'lib/cli.rb'
|
||||
|
||||
# Reason: Some single letter camel case files shouldn't be split
|
||||
# https://docs.rubocop.org/rubocop-rspec/cops_rspec.html#rspecfilepath
|
||||
RSpec/FilePath:
|
||||
CustomTransform:
|
||||
ActivityPub: activitypub # Ignore the snake_case due to the amount of files to rename
|
||||
DeepL: deepl
|
||||
FetchOEmbedService: fetch_oembed_service
|
||||
JsonLdHelper: jsonld_helper
|
||||
OEmbedController: oembed_controller
|
||||
OStatus: ostatus
|
||||
NodeInfoController: nodeinfo_controller # NodeInfo isn't snake_cased for any of the instances
|
||||
Exclude:
|
||||
- 'spec/config/initializers/rack_attack_spec.rb' # namespaces usually have separate folder
|
||||
- 'spec/lib/sanitize_config_spec.rb' # namespaces usually have separate folder
|
||||
- 'spec/controllers/concerns/account_controller_concern_spec.rb' # Concerns describe ApplicationController and don't fit naming
|
||||
- 'spec/controllers/concerns/export_controller_concern_spec.rb'
|
||||
- 'spec/controllers/concerns/localized_spec.rb'
|
||||
- 'spec/controllers/concerns/rate_limit_headers_spec.rb'
|
||||
- 'spec/controllers/concerns/signature_verification_spec.rb'
|
||||
- 'spec/controllers/concerns/user_tracking_concern_spec.rb'
|
||||
|
||||
RSpec/NotToNot:
|
||||
EnforcedStyle: to_not
|
||||
|
|
|
@ -301,13 +301,6 @@ Performance/DeletePrefix:
|
|||
- 'app/services/resolve_account_service.rb'
|
||||
- 'app/services/tag_search_service.rb'
|
||||
|
||||
# Offense count: 1
|
||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
||||
# Configuration parameters: SafeMultiline.
|
||||
Performance/DeleteSuffix:
|
||||
Exclude:
|
||||
- 'lib/tasks/repo.rake'
|
||||
|
||||
# Offense count: 19
|
||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
||||
Performance/MapCompact:
|
||||
|
@ -655,73 +648,6 @@ RSpec/ExpectInHook:
|
|||
- 'spec/controllers/settings/applications_controller_spec.rb'
|
||||
- 'spec/lib/status_filter_spec.rb'
|
||||
|
||||
# Offense count: 61
|
||||
# Configuration parameters: Include, CustomTransform, IgnoreMethods, SpecSuffixOnly.
|
||||
# Include: **/*_spec*rb*, **/spec/**/*
|
||||
RSpec/FilePath:
|
||||
Exclude:
|
||||
- 'spec/config/initializers/rack_attack_spec.rb'
|
||||
- 'spec/controllers/activitypub/collections_controller_spec.rb'
|
||||
- 'spec/controllers/activitypub/followers_synchronizations_controller_spec.rb'
|
||||
- 'spec/controllers/activitypub/inboxes_controller_spec.rb'
|
||||
- 'spec/controllers/activitypub/outboxes_controller_spec.rb'
|
||||
- 'spec/controllers/activitypub/replies_controller_spec.rb'
|
||||
- 'spec/controllers/admin/change_email_controller_spec.rb'
|
||||
- 'spec/controllers/admin/users/roles_controller.rb'
|
||||
- 'spec/controllers/api/oembed_controller_spec.rb'
|
||||
- 'spec/controllers/concerns/account_controller_concern_spec.rb'
|
||||
- 'spec/controllers/concerns/export_controller_concern_spec.rb'
|
||||
- 'spec/controllers/concerns/localized_spec.rb'
|
||||
- 'spec/controllers/concerns/rate_limit_headers_spec.rb'
|
||||
- 'spec/controllers/concerns/signature_verification_spec.rb'
|
||||
- 'spec/controllers/concerns/user_tracking_concern_spec.rb'
|
||||
- 'spec/controllers/well_known/nodeinfo_controller_spec.rb'
|
||||
- 'spec/helpers/admin/action_log_helper_spec.rb'
|
||||
- 'spec/helpers/jsonld_helper_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/accept_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/add_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/announce_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/block_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/create_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/delete_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/flag_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/follow_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/like_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/move_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/reject_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/remove_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/undo_spec.rb'
|
||||
- 'spec/lib/activitypub/activity/update_spec.rb'
|
||||
- 'spec/lib/activitypub/adapter_spec.rb'
|
||||
- 'spec/lib/activitypub/dereferencer_spec.rb'
|
||||
- 'spec/lib/activitypub/linked_data_signature_spec.rb'
|
||||
- 'spec/lib/activitypub/tag_manager_spec.rb'
|
||||
- 'spec/lib/ostatus/tag_manager_spec.rb'
|
||||
- 'spec/lib/sanitize_config_spec.rb'
|
||||
- 'spec/serializers/activitypub/note_serializer_spec.rb'
|
||||
- 'spec/serializers/activitypub/update_poll_serializer_spec.rb'
|
||||
- 'spec/services/activitypub/fetch_featured_collection_service_spec.rb'
|
||||
- 'spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb'
|
||||
- 'spec/services/activitypub/fetch_remote_account_service_spec.rb'
|
||||
- 'spec/services/activitypub/fetch_remote_actor_service_spec.rb'
|
||||
- 'spec/services/activitypub/fetch_remote_key_service_spec.rb'
|
||||
- 'spec/services/activitypub/fetch_remote_status_service_spec.rb'
|
||||
- 'spec/services/activitypub/fetch_replies_service_spec.rb'
|
||||
- 'spec/services/activitypub/process_account_service_spec.rb'
|
||||
- 'spec/services/activitypub/process_collection_service_spec.rb'
|
||||
- 'spec/services/activitypub/process_status_update_service_spec.rb'
|
||||
- 'spec/services/activitypub/synchronize_followers_service_spec.rb'
|
||||
- 'spec/services/fetch_oembed_service_spec.rb'
|
||||
- 'spec/services/remove_from_follwers_service_spec.rb'
|
||||
- 'spec/workers/activitypub/delivery_worker_spec.rb'
|
||||
- 'spec/workers/activitypub/distribute_poll_update_worker_spec.rb'
|
||||
- 'spec/workers/activitypub/distribution_worker_spec.rb'
|
||||
- 'spec/workers/activitypub/fetch_replies_worker_spec.rb'
|
||||
- 'spec/workers/activitypub/move_distribution_worker_spec.rb'
|
||||
- 'spec/workers/activitypub/processing_worker_spec.rb'
|
||||
- 'spec/workers/activitypub/status_update_distribution_worker_spec.rb'
|
||||
- 'spec/workers/activitypub/update_distribution_worker_spec.rb'
|
||||
|
||||
# Offense count: 16
|
||||
# This cop supports safe autocorrection (--autocorrect).
|
||||
# Configuration parameters: EnforcedStyle.
|
||||
|
|
|
@ -80,8 +80,6 @@ It is not always possible to phrase every change in such a manner, but it is des
|
|||
- Code style rules (rubocop, eslint)
|
||||
- Normalization of locale files (i18n-tasks)
|
||||
|
||||
**Note**: You may need to log in and authorise the GitHub account your fork of this repository belongs to with CircleCI to enable some of the automated checks to run.
|
||||
|
||||
## Documentation
|
||||
|
||||
The [Mastodon documentation](https://docs.joinmastodon.org) is a statically generated site. You can [submit merge requests to mastodon/documentation](https://github.com/mastodon/documentation).
|
||||
|
|
6
Gemfile
6
Gemfile
|
@ -4,7 +4,6 @@ source 'https://rubygems.org'
|
|||
ruby '>= 2.7.0', '< 3.3.0'
|
||||
|
||||
gem 'pkg-config', '~> 1.5'
|
||||
gem 'rexml', '~> 3.2'
|
||||
|
||||
gem 'puma', '~> 6.1'
|
||||
gem 'rails', '~> 6.1.7'
|
||||
|
@ -40,7 +39,7 @@ end
|
|||
gem 'net-ldap', '~> 0.17'
|
||||
gem 'omniauth-cas', '~> 2.0'
|
||||
gem 'omniauth-saml', '~> 1.10'
|
||||
gem 'omniauth_openid_connect', '~> 0.6.0'
|
||||
gem 'omniauth_openid_connect', '~> 0.6.1'
|
||||
gem 'omniauth', '~> 1.9'
|
||||
gem 'omniauth-rails_csrf_protection', '~> 0.1'
|
||||
|
||||
|
@ -105,6 +104,7 @@ group :development, :test do
|
|||
gem 'fuubar', '~> 2.5'
|
||||
gem 'i18n-tasks', '~> 1.0', require: false
|
||||
gem 'rspec-rails', '~> 6.0'
|
||||
gem 'rspec_chunked', '~> 0.6'
|
||||
gem 'rubocop-performance', require: false
|
||||
gem 'rubocop-rails', require: false
|
||||
gem 'rubocop-rspec', require: false
|
||||
|
@ -117,6 +117,7 @@ end
|
|||
|
||||
group :test do
|
||||
gem 'capybara', '~> 3.38'
|
||||
gem 'climate_control'
|
||||
gem 'faker', '~> 3.1'
|
||||
gem 'json-schema', '~> 3.0'
|
||||
gem 'rack-test', '~> 2.0'
|
||||
|
@ -138,6 +139,7 @@ group :development do
|
|||
gem 'memory_profiler'
|
||||
gem 'brakeman', '~> 5.4', require: false
|
||||
gem 'bundler-audit', '~> 0.9', require: false
|
||||
gem 'haml_lint', require: false
|
||||
|
||||
gem 'capistrano', '~> 3.17'
|
||||
gem 'capistrano-rails', '~> 1.6'
|
||||
|
|
154
Gemfile.lock
154
Gemfile.lock
|
@ -30,40 +30,40 @@ GIT
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actioncable (6.1.7.2)
|
||||
actionpack (= 6.1.7.2)
|
||||
activesupport (= 6.1.7.2)
|
||||
actioncable (6.1.7.3)
|
||||
actionpack (= 6.1.7.3)
|
||||
activesupport (= 6.1.7.3)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (>= 0.6.1)
|
||||
actionmailbox (6.1.7.2)
|
||||
actionpack (= 6.1.7.2)
|
||||
activejob (= 6.1.7.2)
|
||||
activerecord (= 6.1.7.2)
|
||||
activestorage (= 6.1.7.2)
|
||||
activesupport (= 6.1.7.2)
|
||||
actionmailbox (6.1.7.3)
|
||||
actionpack (= 6.1.7.3)
|
||||
activejob (= 6.1.7.3)
|
||||
activerecord (= 6.1.7.3)
|
||||
activestorage (= 6.1.7.3)
|
||||
activesupport (= 6.1.7.3)
|
||||
mail (>= 2.7.1)
|
||||
actionmailer (6.1.7.2)
|
||||
actionpack (= 6.1.7.2)
|
||||
actionview (= 6.1.7.2)
|
||||
activejob (= 6.1.7.2)
|
||||
activesupport (= 6.1.7.2)
|
||||
actionmailer (6.1.7.3)
|
||||
actionpack (= 6.1.7.3)
|
||||
actionview (= 6.1.7.3)
|
||||
activejob (= 6.1.7.3)
|
||||
activesupport (= 6.1.7.3)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
actionpack (6.1.7.2)
|
||||
actionview (= 6.1.7.2)
|
||||
activesupport (= 6.1.7.2)
|
||||
actionpack (6.1.7.3)
|
||||
actionview (= 6.1.7.3)
|
||||
activesupport (= 6.1.7.3)
|
||||
rack (~> 2.0, >= 2.0.9)
|
||||
rack-test (>= 0.6.3)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
||||
actiontext (6.1.7.2)
|
||||
actionpack (= 6.1.7.2)
|
||||
activerecord (= 6.1.7.2)
|
||||
activestorage (= 6.1.7.2)
|
||||
activesupport (= 6.1.7.2)
|
||||
actiontext (6.1.7.3)
|
||||
actionpack (= 6.1.7.3)
|
||||
activerecord (= 6.1.7.3)
|
||||
activestorage (= 6.1.7.3)
|
||||
activesupport (= 6.1.7.3)
|
||||
nokogiri (>= 1.8.5)
|
||||
actionview (6.1.7.2)
|
||||
activesupport (= 6.1.7.2)
|
||||
actionview (6.1.7.3)
|
||||
activesupport (= 6.1.7.3)
|
||||
builder (~> 3.1)
|
||||
erubi (~> 1.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
|
@ -74,22 +74,22 @@ GEM
|
|||
case_transform (>= 0.2)
|
||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||
active_record_query_trace (1.8)
|
||||
activejob (6.1.7.2)
|
||||
activesupport (= 6.1.7.2)
|
||||
activejob (6.1.7.3)
|
||||
activesupport (= 6.1.7.3)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (6.1.7.2)
|
||||
activesupport (= 6.1.7.2)
|
||||
activerecord (6.1.7.2)
|
||||
activemodel (= 6.1.7.2)
|
||||
activesupport (= 6.1.7.2)
|
||||
activestorage (6.1.7.2)
|
||||
actionpack (= 6.1.7.2)
|
||||
activejob (= 6.1.7.2)
|
||||
activerecord (= 6.1.7.2)
|
||||
activesupport (= 6.1.7.2)
|
||||
activemodel (6.1.7.3)
|
||||
activesupport (= 6.1.7.3)
|
||||
activerecord (6.1.7.3)
|
||||
activemodel (= 6.1.7.3)
|
||||
activesupport (= 6.1.7.3)
|
||||
activestorage (6.1.7.3)
|
||||
actionpack (= 6.1.7.3)
|
||||
activejob (= 6.1.7.3)
|
||||
activerecord (= 6.1.7.3)
|
||||
activesupport (= 6.1.7.3)
|
||||
marcel (~> 1.0)
|
||||
mini_mime (>= 1.1.0)
|
||||
activesupport (6.1.7.2)
|
||||
activesupport (6.1.7.3)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 1.6, < 2)
|
||||
minitest (>= 5.1)
|
||||
|
@ -225,7 +225,7 @@ GEM
|
|||
docile (1.4.0)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
doorkeeper (5.6.4)
|
||||
doorkeeper (5.6.5)
|
||||
railties (>= 5)
|
||||
dotenv (2.8.1)
|
||||
dotenv-rails (2.8.1)
|
||||
|
@ -308,6 +308,12 @@ GEM
|
|||
activesupport (>= 5.1)
|
||||
haml (>= 4.0.6)
|
||||
railties (>= 5.1)
|
||||
haml_lint (0.45.0)
|
||||
haml (>= 4.0, < 6.2)
|
||||
parallel (~> 1.10)
|
||||
rainbow
|
||||
rubocop (>= 0.50.0)
|
||||
sysexits (~> 1.1)
|
||||
hashdiff (1.0.1)
|
||||
hashie (5.0.0)
|
||||
hcaptcha (7.1.0)
|
||||
|
@ -399,7 +405,7 @@ GEM
|
|||
loofah (2.19.1)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
mail (2.8.0.1)
|
||||
mail (2.8.1)
|
||||
mini_mime (>= 0.1.1)
|
||||
net-imap
|
||||
net-pop
|
||||
|
@ -417,7 +423,7 @@ GEM
|
|||
mime-types-data (3.2022.0105)
|
||||
mini_mime (1.1.2)
|
||||
mini_portile2 (2.8.1)
|
||||
minitest (5.17.0)
|
||||
minitest (5.18.0)
|
||||
msgpack (1.6.0)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.3.0)
|
||||
|
@ -459,7 +465,7 @@ GEM
|
|||
omniauth-saml (1.10.3)
|
||||
omniauth (~> 1.3, >= 1.3.2)
|
||||
ruby-saml (~> 1.9)
|
||||
omniauth_openid_connect (0.6.0)
|
||||
omniauth_openid_connect (0.6.1)
|
||||
omniauth (>= 1.9, < 3)
|
||||
openid_connect (~> 1.1)
|
||||
openid_connect (1.4.2)
|
||||
|
@ -479,13 +485,13 @@ GEM
|
|||
orm_adapter (0.5.0)
|
||||
ox (2.14.14)
|
||||
parallel (1.22.1)
|
||||
parser (3.2.1.0)
|
||||
parser (3.2.1.1)
|
||||
ast (~> 2.4.1)
|
||||
parslet (2.0.0)
|
||||
pastel (0.8.0)
|
||||
tty-color (~> 0.5)
|
||||
pg (1.4.5)
|
||||
pghero (3.1.0)
|
||||
pg (1.4.6)
|
||||
pghero (3.3.0)
|
||||
activerecord (>= 6)
|
||||
pkg-config (1.5.1)
|
||||
posix-spawn (0.3.15)
|
||||
|
@ -499,13 +505,13 @@ GEM
|
|||
premailer (~> 1.7, >= 1.7.9)
|
||||
private_address_check (0.5.0)
|
||||
public_suffix (5.0.1)
|
||||
puma (6.1.0)
|
||||
puma (6.1.1)
|
||||
nio4r (~> 2.0)
|
||||
pundit (2.3.0)
|
||||
activesupport (>= 3.0.0)
|
||||
raabro (1.4.0)
|
||||
racc (1.6.2)
|
||||
rack (2.2.6.2)
|
||||
rack (2.2.6.4)
|
||||
rack-attack (6.6.1)
|
||||
rack (>= 1.0, < 3)
|
||||
rack-cors (1.1.1)
|
||||
|
@ -520,20 +526,20 @@ GEM
|
|||
rack
|
||||
rack-test (2.0.2)
|
||||
rack (>= 1.3)
|
||||
rails (6.1.7.2)
|
||||
actioncable (= 6.1.7.2)
|
||||
actionmailbox (= 6.1.7.2)
|
||||
actionmailer (= 6.1.7.2)
|
||||
actionpack (= 6.1.7.2)
|
||||
actiontext (= 6.1.7.2)
|
||||
actionview (= 6.1.7.2)
|
||||
activejob (= 6.1.7.2)
|
||||
activemodel (= 6.1.7.2)
|
||||
activerecord (= 6.1.7.2)
|
||||
activestorage (= 6.1.7.2)
|
||||
activesupport (= 6.1.7.2)
|
||||
rails (6.1.7.3)
|
||||
actioncable (= 6.1.7.3)
|
||||
actionmailbox (= 6.1.7.3)
|
||||
actionmailer (= 6.1.7.3)
|
||||
actionpack (= 6.1.7.3)
|
||||
actiontext (= 6.1.7.3)
|
||||
actionview (= 6.1.7.3)
|
||||
activejob (= 6.1.7.3)
|
||||
activemodel (= 6.1.7.3)
|
||||
activerecord (= 6.1.7.3)
|
||||
activestorage (= 6.1.7.3)
|
||||
activesupport (= 6.1.7.3)
|
||||
bundler (>= 1.15.0)
|
||||
railties (= 6.1.7.2)
|
||||
railties (= 6.1.7.3)
|
||||
sprockets-rails (>= 2.0.0)
|
||||
rails-controller-testing (1.0.5)
|
||||
actionpack (>= 5.0.1.rc1)
|
||||
|
@ -547,9 +553,9 @@ GEM
|
|||
rails-i18n (6.0.0)
|
||||
i18n (>= 0.7, < 2)
|
||||
railties (>= 6.0.0, < 7)
|
||||
railties (6.1.7.2)
|
||||
actionpack (= 6.1.7.2)
|
||||
activesupport (= 6.1.7.2)
|
||||
railties (6.1.7.3)
|
||||
actionpack (= 6.1.7.3)
|
||||
activesupport (= 6.1.7.3)
|
||||
method_source
|
||||
rake (>= 12.2)
|
||||
thor (~> 1.0)
|
||||
|
@ -598,20 +604,21 @@ GEM
|
|||
rspec-core (~> 3.0, >= 3.0.0)
|
||||
sidekiq (>= 2.4.0)
|
||||
rspec-support (3.12.0)
|
||||
rspec_chunked (0.6)
|
||||
rspec_junit_formatter (0.6.0)
|
||||
rspec-core (>= 2, < 4, != 2.12.0)
|
||||
rubocop (1.45.1)
|
||||
rubocop (1.48.1)
|
||||
json (~> 2.3)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 3.2.0.0)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
regexp_parser (>= 1.8, < 3.0)
|
||||
rexml (>= 3.2.5, < 4.0)
|
||||
rubocop-ast (>= 1.24.1, < 2.0)
|
||||
rubocop-ast (>= 1.26.0, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 2.4.0, < 3.0)
|
||||
rubocop-ast (1.24.1)
|
||||
parser (>= 3.1.1.0)
|
||||
rubocop-ast (1.27.0)
|
||||
parser (>= 3.2.1.0)
|
||||
rubocop-capybara (2.17.0)
|
||||
rubocop (~> 1.41)
|
||||
rubocop-performance (1.16.0)
|
||||
|
@ -646,9 +653,9 @@ GEM
|
|||
redis (>= 4.5.0, < 5)
|
||||
sidekiq-bulk (0.2.0)
|
||||
sidekiq
|
||||
sidekiq-scheduler (5.0.1)
|
||||
sidekiq-scheduler (5.0.2)
|
||||
rufus-scheduler (~> 3.2)
|
||||
sidekiq (>= 4, < 8)
|
||||
sidekiq (>= 6, < 8)
|
||||
tilt (>= 1.4.0)
|
||||
sidekiq-unique-jobs (7.1.29)
|
||||
brpoplpush-redis_script (> 0.1.1, <= 2.0.0)
|
||||
|
@ -688,14 +695,15 @@ GEM
|
|||
activesupport (>= 3)
|
||||
attr_required (>= 0.0.5)
|
||||
httpclient (>= 2.4)
|
||||
sysexits (1.2.0)
|
||||
temple (0.10.0)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
terrapin (0.6.0)
|
||||
climate_control (>= 0.0.3, < 1.0)
|
||||
thor (1.2.1)
|
||||
tilt (2.0.11)
|
||||
timeout (0.3.1)
|
||||
tilt (2.1.0)
|
||||
timeout (0.3.2)
|
||||
tpm-key_attestation (0.12.0)
|
||||
bindata (~> 2.4)
|
||||
openssl (> 2.0)
|
||||
|
@ -785,6 +793,7 @@ DEPENDENCIES
|
|||
capybara (~> 3.38)
|
||||
charlock_holmes (~> 0.7.7)
|
||||
chewy (~> 7.2)
|
||||
climate_control
|
||||
cocoon (~> 1.2)
|
||||
color_diff (~> 0.1)
|
||||
concurrent-ruby
|
||||
|
@ -804,6 +813,7 @@ DEPENDENCIES
|
|||
fog-openstack (~> 0.3)
|
||||
fuubar (~> 2.5)
|
||||
haml-rails (~> 2.0)
|
||||
haml_lint
|
||||
hcaptcha (~> 7.1)
|
||||
hiredis (~> 0.6)
|
||||
htmlentities (~> 4.3)
|
||||
|
@ -834,7 +844,7 @@ DEPENDENCIES
|
|||
omniauth-cas (~> 2.0)
|
||||
omniauth-rails_csrf_protection (~> 0.1)
|
||||
omniauth-saml (~> 1.10)
|
||||
omniauth_openid_connect (~> 0.6.0)
|
||||
omniauth_openid_connect (~> 0.6.1)
|
||||
ox (~> 2.14)
|
||||
parslet
|
||||
pg (~> 1.4)
|
||||
|
@ -858,10 +868,10 @@ DEPENDENCIES
|
|||
redcarpet (~> 3.6)
|
||||
redis (~> 4.5)
|
||||
redis-namespace (~> 1.10)
|
||||
rexml (~> 3.2)
|
||||
rqrcode (~> 2.1)
|
||||
rspec-rails (~> 6.0)
|
||||
rspec-sidekiq (~> 3.1)
|
||||
rspec_chunked (~> 0.6)
|
||||
rspec_junit_formatter (~> 0.6)
|
||||
rubocop
|
||||
rubocop-performance
|
||||
|
|
|
@ -63,8 +63,12 @@ class ApplicationController < ActionController::Base
|
|||
end
|
||||
|
||||
def after_sign_out_path_for(_resource_or_scope)
|
||||
if ENV['OMNIAUTH_ONLY'] == 'true' && ENV['OIDC_ENABLED'] == 'true'
|
||||
'/auth/auth/openid_connect/logout'
|
||||
else
|
||||
new_user_session_path
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
|||
|
||||
def after_sign_in_path_for(resource)
|
||||
if resource.email_present?
|
||||
root_path
|
||||
stored_location_for(resource) || root_path
|
||||
else
|
||||
auth_setup_path(missing_email: '1')
|
||||
end
|
||||
|
|
|
@ -52,7 +52,7 @@ module Settings
|
|||
end
|
||||
else
|
||||
flash[:error] = I18n.t('webauthn_credentials.create.error')
|
||||
status = :internal_server_error
|
||||
status = :unprocessable_entity
|
||||
end
|
||||
else
|
||||
flash[:error] = t('webauthn_credentials.create.error')
|
||||
|
|
|
@ -56,6 +56,8 @@ const messages = defineMessages({
|
|||
redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.' },
|
||||
replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' },
|
||||
replyMessage: { id: 'confirmations.reply.message', defaultMessage: 'Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?' },
|
||||
editConfirm: { id: 'confirmations.edit.confirm', defaultMessage: 'Edit' },
|
||||
editMessage: { id: 'confirmations.edit.message', defaultMessage: 'Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?' },
|
||||
blockDomainConfirm: { id: 'confirmations.domain_block.confirm', defaultMessage: 'Hide entire domain' },
|
||||
});
|
||||
|
||||
|
@ -149,7 +151,18 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({
|
|||
},
|
||||
|
||||
onEdit (status, history) {
|
||||
dispatch((_, getState) => {
|
||||
let state = getState();
|
||||
if (state.getIn(['compose', 'text']).trim().length !== 0) {
|
||||
dispatch(openModal('CONFIRM', {
|
||||
message: intl.formatMessage(messages.editMessage),
|
||||
confirm: intl.formatMessage(messages.editConfirm),
|
||||
onConfirm: () => dispatch(editStatus(status.get('id'), history)),
|
||||
}));
|
||||
} else {
|
||||
dispatch(editStatus(status.get('id'), history));
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
onTranslate (status) {
|
||||
|
|
|
@ -166,6 +166,8 @@
|
|||
"confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
|
||||
"confirmations.domain_block.confirm": "Block entire domain",
|
||||
"confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
|
||||
"confirmations.edit.confirm": "Edit",
|
||||
"confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
|
||||
"confirmations.logout.confirm": "Log out",
|
||||
"confirmations.logout.message": "Are you sure you want to log out?",
|
||||
"confirmations.mute.confirm": "Mute",
|
||||
|
|
|
@ -4509,6 +4509,7 @@ a.status-card.compact:hover {
|
|||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
color: $secondary-text-color;
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
|
|
|
@ -12,7 +12,7 @@ class ActivityPub::Forwarder
|
|||
end
|
||||
|
||||
def forward!
|
||||
ActivityPub::LowPriorityDeliveryWorker.push_bulk(inboxes) do |inbox_url|
|
||||
ActivityPub::LowPriorityDeliveryWorker.push_bulk(inboxes, limit: 1_000) do |inbox_url|
|
||||
[payload, signature_account_id, inbox_url]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -31,7 +31,7 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck
|
|||
def running_version
|
||||
@running_version ||= begin
|
||||
Chewy.client.info['version']['number']
|
||||
rescue Faraday::ConnectionFailed
|
||||
rescue Faraday::ConnectionFailed, Elasticsearch::Transport::Transport::Error
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
|
|
@ -18,7 +18,7 @@ class PlainTextFormatter
|
|||
if local?
|
||||
text
|
||||
else
|
||||
strip_tags(insert_newlines).chomp
|
||||
html_entities.decode(strip_tags(insert_newlines)).chomp
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -27,4 +27,8 @@ class PlainTextFormatter
|
|||
def insert_newlines
|
||||
text.gsub(NEWLINE_TAGS_RE) { |match| "#{match}\n" }
|
||||
end
|
||||
|
||||
def html_entities
|
||||
HTMLEntities.new
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class TOCGenerator
|
||||
TARGET_ELEMENTS = %w(h1 h2 h3 h4 h5 h6).freeze
|
||||
LISTED_ELEMENTS = %w(h2 h3).freeze
|
||||
|
||||
class Section
|
||||
attr_accessor :depth, :title, :children, :anchor
|
||||
|
||||
def initialize(depth, title, anchor)
|
||||
@depth = depth
|
||||
@title = title
|
||||
@children = []
|
||||
@anchor = anchor
|
||||
end
|
||||
|
||||
delegate :<<, to: :children
|
||||
end
|
||||
|
||||
def initialize(source_html)
|
||||
@source_html = source_html
|
||||
@processed = false
|
||||
@target_html = ''
|
||||
@headers = []
|
||||
@slugs = Hash.new { |h, k| h[k] = 0 }
|
||||
end
|
||||
|
||||
def html
|
||||
parse_and_transform unless @processed
|
||||
@target_html
|
||||
end
|
||||
|
||||
def toc
|
||||
parse_and_transform unless @processed
|
||||
@headers
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def parse_and_transform
|
||||
return if @source_html.blank?
|
||||
|
||||
parsed_html = Nokogiri::HTML.fragment(@source_html)
|
||||
|
||||
parsed_html.traverse do |node|
|
||||
next unless TARGET_ELEMENTS.include?(node.name)
|
||||
|
||||
anchor = node['id'] || node.text.parameterize.presence || 'sec'
|
||||
@slugs[anchor] += 1
|
||||
anchor = "#{anchor}-#{@slugs[anchor]}" if @slugs[anchor] > 1
|
||||
|
||||
node['id'] = anchor
|
||||
|
||||
next unless LISTED_ELEMENTS.include?(node.name)
|
||||
|
||||
depth = node.name[1..-1]
|
||||
latest_section = @headers.last
|
||||
|
||||
if latest_section.nil? || latest_section.depth >= depth
|
||||
@headers << Section.new(depth, node.text, anchor)
|
||||
else
|
||||
latest_section << Section.new(depth, node.text, anchor)
|
||||
end
|
||||
end
|
||||
|
||||
@target_html = parsed_html.to_s
|
||||
@processed = true
|
||||
end
|
||||
end
|
|
@ -516,11 +516,14 @@ class User < ApplicationRecord
|
|||
def prepare_new_user!
|
||||
BootstrapTimelineWorker.perform_async(account_id)
|
||||
ActivityTracker.increment('activity:accounts:local')
|
||||
ActivityTracker.record('activity:logins', id)
|
||||
UserMailer.welcome(self).deliver_later
|
||||
TriggerWebhookWorker.perform_async('account.approved', 'Account', account_id)
|
||||
end
|
||||
|
||||
def prepare_returning_user!
|
||||
return unless confirmed?
|
||||
|
||||
ActivityTracker.record('activity:logins', id)
|
||||
regenerate_feed! if needs_feed_update?
|
||||
end
|
||||
|
|
|
@ -257,11 +257,11 @@ class DeleteAccountService < BaseService
|
|||
end
|
||||
|
||||
def delete_actor!
|
||||
ActivityPub::DeliveryWorker.push_bulk(delivery_inboxes) do |inbox_url|
|
||||
ActivityPub::DeliveryWorker.push_bulk(delivery_inboxes, limit: 1_000) do |inbox_url|
|
||||
[delete_actor_json, @account.id, inbox_url]
|
||||
end
|
||||
|
||||
ActivityPub::LowPriorityDeliveryWorker.push_bulk(low_priority_delivery_inboxes) do |inbox_url|
|
||||
ActivityPub::LowPriorityDeliveryWorker.push_bulk(low_priority_delivery_inboxes, limit: 1_000) do |inbox_url|
|
||||
[delete_actor_json, @account.id, inbox_url]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -90,7 +90,7 @@ class RemoveStatusService < BaseService
|
|||
|
||||
status_reach_finder = StatusReachFinder.new(@status, unsafe: true)
|
||||
|
||||
ActivityPub::DeliveryWorker.push_bulk(status_reach_finder.inboxes) do |inbox_url|
|
||||
ActivityPub::DeliveryWorker.push_bulk(status_reach_finder.inboxes, limit: 1_000) do |inbox_url|
|
||||
[signed_activity_json, @account.id, inbox_url]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -31,21 +31,21 @@ class SuspendAccountService < BaseService
|
|||
# counterpart to this operation, i.e. you can't then force a remote
|
||||
# account to re-follow you, so this part is not reversible.
|
||||
|
||||
follows = Follow.where(account: @account).to_a
|
||||
|
||||
Follow.where(account: @account).find_in_batches do |follows|
|
||||
ActivityPub::DeliveryWorker.push_bulk(follows) do |follow|
|
||||
[Oj.dump(serialize_payload(follow, ActivityPub::RejectFollowSerializer)), follow.target_account_id, @account.inbox_url]
|
||||
end
|
||||
|
||||
follows.each(&:destroy)
|
||||
end
|
||||
end
|
||||
|
||||
def distribute_update_actor!
|
||||
return unless @account.local?
|
||||
|
||||
account_reach_finder = AccountReachFinder.new(@account)
|
||||
|
||||
ActivityPub::DeliveryWorker.push_bulk(account_reach_finder.inboxes) do |inbox_url|
|
||||
ActivityPub::DeliveryWorker.push_bulk(account_reach_finder.inboxes, limit: 1_000) do |inbox_url|
|
||||
[signed_activity_json, @account.id, inbox_url]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -41,7 +41,7 @@ class UnsuspendAccountService < BaseService
|
|||
|
||||
account_reach_finder = AccountReachFinder.new(@account)
|
||||
|
||||
ActivityPub::DeliveryWorker.push_bulk(account_reach_finder.inboxes) do |inbox_url|
|
||||
ActivityPub::DeliveryWorker.push_bulk(account_reach_finder.inboxes, limit: 1_000) do |inbox_url|
|
||||
[signed_activity_json, @account.id, inbox_url]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -22,7 +22,7 @@ class UpdateAccountService < BaseService
|
|||
def authorize_all_follow_requests(account)
|
||||
follow_requests = FollowRequest.where(target_account: account)
|
||||
follow_requests = follow_requests.preload(:account).select { |req| !req.account.silenced? }
|
||||
AuthorizeFollowWorker.push_bulk(follow_requests) do |req|
|
||||
AuthorizeFollowWorker.push_bulk(follow_requests, limit: 1_000) do |req|
|
||||
[req.account_id, req.target_account_id]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -206,7 +206,7 @@
|
|||
- if @deletion_request.present?
|
||||
= link_to t('admin.accounts.delete'), admin_account_path(@account.id), method: :delete, class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, @account)
|
||||
- else
|
||||
%div.action-buttons
|
||||
.action-buttons
|
||||
%div
|
||||
- if @account.local? && @account.user_approved?
|
||||
= link_to t('admin.accounts.warn'), new_admin_account_action_path(@account.id, type: 'none'), class: 'button' if can?(:warn, @account)
|
||||
|
@ -276,9 +276,9 @@
|
|||
%hr.spacer/
|
||||
|
||||
- if @account.user&.invite_request&.text&.present?
|
||||
%div.speech-bubble
|
||||
%div.speech-bubble__bubble
|
||||
.speech-bubble
|
||||
.speech-bubble__bubble
|
||||
= @account.user&.invite_request&.text
|
||||
%div.speech-bubble__owner
|
||||
.speech-bubble__owner
|
||||
= admin_account_link_to @account
|
||||
= t('admin.accounts.invite_request_text')
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
= select_tag :action_type, options_for_select(Admin::ActionLogFilter::ACTION_TYPE_MAP.keys.map { |key| [I18n.t("admin.action_logs.action_types.#{key}"), key]}, params[:action_type]), prompt: I18n.t('admin.accounts.moderation.all')
|
||||
|
||||
- if @action_logs.empty?
|
||||
%div.muted-hint.center-text
|
||||
.muted-hint.center-text
|
||||
= t 'admin.action_logs.empty'
|
||||
- else
|
||||
.report-notes
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
%li= filter_link_to safe_join([t('admin.announcements.live'), "(#{number_with_delimiter(Announcement.published.count)})"], ' '), published: '1', unpublished: nil
|
||||
|
||||
- if @announcements.empty?
|
||||
%div.muted-hint.center-text
|
||||
.muted-hint.center-text
|
||||
= t 'admin.announcements.empty'
|
||||
- else
|
||||
.announcements-list
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
%li= filter_link_to t('admin.trends.rejected'), status: 'rejected'
|
||||
|
||||
- if @appeals.empty?
|
||||
%div.muted-hint.center-text
|
||||
.muted-hint.center-text
|
||||
= t 'admin.disputes.appeals.empty'
|
||||
- else
|
||||
.announcements-list
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
%hr.spacer/
|
||||
|
||||
- if @instances.empty?
|
||||
%div.muted-hint.center-text
|
||||
.muted-hint.center-text
|
||||
= t 'admin.instances.empty'
|
||||
- else
|
||||
= render partial: 'instance', collection: @instances
|
||||
|
|
|
@ -54,14 +54,14 @@
|
|||
.strike-card__statuses-list__item
|
||||
- if (status = status_map[status_id.to_i])
|
||||
.one-liner
|
||||
= link_to short_account_status_url(@report.target_account, status_id), class: 'emojify' do
|
||||
= one_line_preview(status)
|
||||
.emojify= one_line_preview(status)
|
||||
|
||||
- status.ordered_media_attachments.each do |media_attachment|
|
||||
%abbr{ title: media_attachment.description }
|
||||
= fa_icon 'link'
|
||||
= media_attachment.file_file_name
|
||||
.strike-card__statuses-list__item__meta
|
||||
= link_to ActivityPub::TagManager.instance.url_for(status), target: '_blank' do
|
||||
%time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
|
||||
- unless status.application.nil?
|
||||
·
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
%hr.spacer/
|
||||
|
||||
- if @rules.empty?
|
||||
%div.muted-hint.center-text
|
||||
.muted-hint.center-text
|
||||
= t 'admin.rules.empty'
|
||||
- else
|
||||
.announcements-list
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
%hr.spacer/
|
||||
|
||||
- if @warning_presets.empty?
|
||||
%div.muted-hint.center-text
|
||||
.muted-hint.center-text
|
||||
= t 'admin.warning_presets.empty'
|
||||
- else
|
||||
.announcements-list
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
%hr.spacer/
|
||||
|
||||
- if @webhooks.empty?
|
||||
%div.muted-hint.center-text
|
||||
.muted-hint.center-text
|
||||
= t 'admin.webhooks.empty'
|
||||
- else
|
||||
.applications-list
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
.hero-widget
|
||||
.hero-widget__img
|
||||
= image_tag @instance_presenter.thumbnail&.file&.url(:'@1x') || asset_pack_path('media/images/preview.png'), alt: @instance_presenter.title
|
||||
|
||||
.hero-widget__text
|
||||
%p= @instance_presenter.description.html_safe.presence || t('about.about_mastodon_html')
|
||||
|
||||
- if Setting.trends && !(user_signed_in? && !current_user.setting_trends)
|
||||
- trends = Trends.tags.query.allowed.limit(3)
|
||||
|
||||
- unless trends.empty?
|
||||
.endorsements-widget.trends-widget
|
||||
%h4.emojify= t('footer.trending_now')
|
||||
|
||||
- trends.each do |tag|
|
||||
= react_component :hashtag, hashtag: ActiveModelSerializers::SerializableResource.new(tag, serializer: REST::TagSerializer, scope: current_user, scope_name: :current_user).as_json
|
|
@ -50,14 +50,14 @@
|
|||
.strike-card__statuses-list__item
|
||||
- if (status = status_map[status_id.to_i])
|
||||
.one-liner
|
||||
= link_to short_account_status_url(@strike.target_account, status_id), class: 'emojify' do
|
||||
= one_line_preview(status)
|
||||
.emojify= one_line_preview(status)
|
||||
|
||||
- status.ordered_media_attachments.each do |media_attachment|
|
||||
%abbr{ title: media_attachment.description }
|
||||
= fa_icon 'link'
|
||||
= media_attachment.file_file_name
|
||||
.strike-card__statuses-list__item__meta
|
||||
= link_to ActivityPub::TagManager.instance.url_for(status), target: '_blank' do
|
||||
%time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
|
||||
- unless status.application.nil?
|
||||
·
|
||||
|
|
|
@ -35,6 +35,6 @@
|
|||
= render 'keyword_fields', f: keyword
|
||||
%tfoot
|
||||
%tr
|
||||
%td{ colspan: 3}
|
||||
%td{ colspan: 3 }
|
||||
= link_to_add_association f, :keywords, class: 'table-action-link', partial: 'keyword_fields', 'data-association-insertion-node': '.keywords-table tbody', 'data-association-insertion-method': 'append' do
|
||||
= safe_join([fa_icon('plus'), t('filters.edit.add_keyword')])
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
= link_to t('filters.new.title'), new_filter_path, class: 'button'
|
||||
|
||||
- if @filters.empty?
|
||||
%div.muted-hint.center-text= t 'filters.index.empty'
|
||||
.muted-hint.center-text= t 'filters.index.empty'
|
||||
- else
|
||||
.applications-list
|
||||
= render partial: 'filter', collection: @filters
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
-# Link to the "Next" page
|
||||
-# available local variables
|
||||
-# url: url to the next page
|
||||
-# current_page: a page object for the currently displayed page
|
||||
-# total_pages: total number of pages
|
||||
-# per_page: number of items to fetch per page
|
||||
-# remote: data-remote
|
||||
-#
|
||||
Link to the "Next" page
|
||||
available local variables
|
||||
url: url to the next page
|
||||
current_page: a page object for the currently displayed page
|
||||
total_pages: total number of pages
|
||||
per_page: number of items to fetch per page
|
||||
remote: data-remote
|
||||
|
||||
%span.next
|
||||
= link_to_unless current_page.last?, safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), url, rel: 'next', remote: remote
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
-# The container tag
|
||||
-# available local variables
|
||||
-# current_page: a page object for the currently displayed page
|
||||
-# total_pages: total number of pages
|
||||
-# per_page: number of items to fetch per page
|
||||
-# remote: data-remote
|
||||
-# paginator: the paginator that renders the pagination tags inside
|
||||
-#
|
||||
The container tag
|
||||
available local variables
|
||||
current_page: a page object for the currently displayed page
|
||||
total_pages: total number of pages
|
||||
per_page: number of items to fetch per page
|
||||
remote: data-remote
|
||||
paginator: the paginator that renders the pagination tags inside
|
||||
= paginator.render do
|
||||
%nav.pagination
|
||||
= prev_page_tag unless current_page.first?
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
-# Link to the "Previous" page
|
||||
-# available local variables
|
||||
-# url: url to the previous page
|
||||
-# current_page: a page object for the currently displayed page
|
||||
-# total_pages: total number of pages
|
||||
-# per_page: number of items to fetch per page
|
||||
-# remote: data-remote
|
||||
-#
|
||||
Link to the "Previous" page
|
||||
available local variables
|
||||
url: url to the previous page
|
||||
current_page: a page object for the currently displayed page
|
||||
total_pages: total number of pages
|
||||
per_page: number of items to fetch per page
|
||||
remote: data-remote
|
||||
%span.prev
|
||||
= link_to_unless current_page.first?, safe_join([fa_icon('chevron-left'), t('pagination.prev')], ' '), url, rel: 'prev', remote: remote
|
||||
|
|
|
@ -12,6 +12,6 @@
|
|||
|
||||
.modal-layout__mastodon
|
||||
%div
|
||||
%img{alt: '', draggable: 'false', src: mascot_url }
|
||||
%img{ alt: '', draggable: 'false', src: mascot_url }
|
||||
|
||||
= render template: 'layouts/application'
|
||||
|
|
|
@ -26,11 +26,11 @@
|
|||
= "@#{status.account.pretty_acct}"
|
||||
|
||||
- if status.spoiler_text?
|
||||
%div.auto-dir
|
||||
.auto-dir
|
||||
%p
|
||||
= status.spoiler_text
|
||||
|
||||
%div.auto-dir
|
||||
.auto-dir
|
||||
= status_content_format(status)
|
||||
|
||||
- if status.ordered_media_attachments.size > 0
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
%p= t('doorkeeper.authorizations.show.title')
|
||||
.input-copy
|
||||
.input-copy__wrapper
|
||||
%input{ type: 'text', class: 'oauth-code', spellcheck: 'false', readonly: true, value: params[:code] }
|
||||
%input.oauth-code{ type: 'text', spellcheck: 'false', readonly: true, value: params[:code] }
|
||||
%button{ type: :button }= t('generic.copy')
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
= link_to t('doorkeeper.applications.index.new'), new_settings_application_path, class: 'button'
|
||||
|
||||
- if @applications.empty?
|
||||
%div.muted-hint.center-text=t 'doorkeeper.applications.index.empty'
|
||||
.muted-hint.center-text= t 'doorkeeper.applications.index.empty'
|
||||
- else
|
||||
.table-wrapper
|
||||
%table.table
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
%td
|
||||
%code= @application.secret
|
||||
%tr
|
||||
%th{ rowspan: 2}= t('applications.your_token')
|
||||
%th{ rowspan: 2 }= t('applications.your_token')
|
||||
%td
|
||||
%code= current_user.token_for_app(@application).token
|
||||
%tr
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
%hr.spacer/
|
||||
|
||||
- if @login_activities.empty?
|
||||
%div.muted-hint.center-text
|
||||
.muted-hint.center-text
|
||||
= t 'login_activities.empty'
|
||||
- else
|
||||
.announcements-list
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
- thumbnail = @instance_presenter.thumbnail
|
||||
- description ||= strip_tags(@instance_presenter.description.presence || t('about.about_mastodon_html'))
|
||||
- description ||= @instance_presenter.description.presence || strip_tags(t('about.about_mastodon_html'))
|
||||
|
||||
%meta{ name: 'description', content: description }/
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
%span.poll__chart
|
||||
- else
|
||||
%label.poll__option><
|
||||
%span.poll__input{ class: poll.multiple? ? 'checkbox' : nil}><
|
||||
%span.poll__input{ class: poll.multiple? ? 'checkbox' : nil }><
|
||||
%span.poll__option__text
|
||||
= prerender_custom_emojis(h(option.title), status.emojis)
|
||||
.poll__footer
|
||||
|
|
|
@ -12,7 +12,7 @@ class ActivityPub::DistributePollUpdateWorker
|
|||
|
||||
return if @status.preloadable_poll.nil? || @status.local_only?
|
||||
|
||||
ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url|
|
||||
ActivityPub::DeliveryWorker.push_bulk(inboxes, limit: 1_000) do |inbox_url|
|
||||
[payload, @account.id, inbox_url]
|
||||
end
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ class ActivityPub::MoveDistributionWorker
|
|||
@migration = AccountMigration.find(migration_id)
|
||||
@account = @migration.account
|
||||
|
||||
ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url|
|
||||
ActivityPub::DeliveryWorker.push_bulk(inboxes, limit: 1_000) do |inbox_url|
|
||||
[signed_payload, @account.id, inbox_url]
|
||||
end
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ class ActivityPub::RawDistributionWorker
|
|||
def distribute!
|
||||
return if inboxes.empty?
|
||||
|
||||
ActivityPub::DeliveryWorker.push_bulk(inboxes) do |inbox_url|
|
||||
ActivityPub::DeliveryWorker.push_bulk(inboxes, limit: 1_000) do |inbox_url|
|
||||
[payload, source_account_id, inbox_url, options]
|
||||
end
|
||||
end
|
||||
|
|
|
@ -5,7 +5,9 @@ require_relative '../config/boot'
|
|||
require_relative '../lib/cli'
|
||||
|
||||
begin
|
||||
Chewy.strategy(:mastodon) do
|
||||
Mastodon::CLI.start(ARGV)
|
||||
end
|
||||
rescue Interrupt
|
||||
exit(130)
|
||||
end
|
||||
|
|
|
@ -19,7 +19,6 @@ Chewy.settings = {
|
|||
# cycle, which takes care of checking if Elasticsearch is enabled
|
||||
# or not. However, mind that for the Rails console, the :urgent
|
||||
# strategy is set automatically with no way to override it.
|
||||
Chewy.root_strategy = :mastodon
|
||||
Chewy.request_strategy = :mastodon
|
||||
Chewy.use_after_commit_callbacks = false
|
||||
|
||||
|
|
|
@ -1159,8 +1159,6 @@ an:
|
|||
index:
|
||||
hint: Este filtro s'aplica a la selección de publicacions individuals independientment d'atros criterios. Puede anyadir mas publicacions a este filtro dende la interficie web.
|
||||
title: Publicacions filtradas
|
||||
footer:
|
||||
trending_now: Tendencia agora
|
||||
generic:
|
||||
all: Totz
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1214,8 +1214,6 @@ ar:
|
|||
index:
|
||||
hint: ينطبق الفلتر هذا على اختيار المنشورات الفردية بغض النظر عن المعايير الأخرى. يمكنك إضافة المزيد من المنشورات إلى هذا الفلتر من واجهة الويب.
|
||||
title: الرسائل المصفّاة
|
||||
footer:
|
||||
trending_now: المتداولة الآن
|
||||
generic:
|
||||
all: الكل
|
||||
changes_saved_msg: تم حفظ التعديلات بنجاح!
|
||||
|
|
|
@ -601,8 +601,6 @@ ast:
|
|||
title: Peñeres
|
||||
new:
|
||||
title: Amestar una peñera
|
||||
footer:
|
||||
trending_now: En tendencia
|
||||
generic:
|
||||
all: Too
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1238,8 +1238,6 @@ be:
|
|||
index:
|
||||
hint: Гэты фільтр прымяняецца для выбару асобных допісаў незалежна ад іншых крытэрыяў. Вы можаце дадаць больш допісаў у гэты фільтр з вэб-інтэрфейсу.
|
||||
title: Адфільтраваныя допісы
|
||||
footer:
|
||||
trending_now: Актуальнае
|
||||
generic:
|
||||
all: Усе
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ bg:
|
|||
index:
|
||||
hint: Този филтър се прилага за избор на отделни публикации, независимо от други критерии. Може да добавите още публикации в този филтър от уебинтерфейса.
|
||||
title: Филтрирани публикации
|
||||
footer:
|
||||
trending_now: Налагащи се сега
|
||||
generic:
|
||||
all: Всичко
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ ca:
|
|||
index:
|
||||
hint: Aquest filtre aplica als tuts seleccionats independentment d'altres criteris. Pots afegir més tuts a aquest filtre des de la interfície Web.
|
||||
title: Tuts filtrats
|
||||
footer:
|
||||
trending_now: En tendència
|
||||
generic:
|
||||
all: Tot
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -744,8 +744,6 @@ ckb:
|
|||
title: فلتەرەکان
|
||||
new:
|
||||
title: زیادکردنی فلتەری نوێ
|
||||
footer:
|
||||
trending_now: هەوادارانی ئێستا
|
||||
generic:
|
||||
all: هەموو
|
||||
changes_saved_msg: گۆڕانکاریەکان بە سەرکەوتوویی هەڵگیرا!
|
||||
|
|
|
@ -704,8 +704,6 @@ co:
|
|||
title: Filtri
|
||||
new:
|
||||
title: Aghjunghje un novu filtru
|
||||
footer:
|
||||
trending_now: Tindenze d'avà
|
||||
generic:
|
||||
all: Tuttu
|
||||
changes_saved_msg: Cambiamenti salvati!
|
||||
|
|
|
@ -1213,8 +1213,6 @@ cs:
|
|||
index:
|
||||
hint: Tento filtr se vztahuje na výběr jednotlivých příspěvků bez ohledu na jiná kritéria. Do tohoto filtru můžete přidat více příspěvků z webového rozhraní.
|
||||
title: Filtrované příspěvky
|
||||
footer:
|
||||
trending_now: Právě populární
|
||||
generic:
|
||||
all: Všechny
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1280,8 +1280,6 @@ cy:
|
|||
index:
|
||||
hint: Mae'r hidlydd hwn yn berthnasol i ddethol postiadau unigol waeth beth fo'r meini prawf eraill. Gallwch ychwanegu mwy o bostiadau at yr hidlydd hwn o'r rhyngwyneb gwe.
|
||||
title: Postiadau wedi'u hidlo
|
||||
footer:
|
||||
trending_now: Trendiau
|
||||
generic:
|
||||
all: Popeth
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1192,8 +1192,6 @@ da:
|
|||
index:
|
||||
hint: Dette filter gælder for udvalgte, individuelle indlæg uanset andre kriterier. Flere indlæg kan føjes til filteret via webfladen.
|
||||
title: Filtrerede indlæg
|
||||
footer:
|
||||
trending_now: Trender lige nu
|
||||
generic:
|
||||
all: Alle
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ de:
|
|||
index:
|
||||
hint: Dieser Filter wird verwendet, um einzelne Beiträge unabhängig von anderen Kriterien auszuwählen. Du kannst mehr Beiträge zu diesem Filter über das Webinterface hinzufügen.
|
||||
title: Gefilterte Beiträge
|
||||
footer:
|
||||
trending_now: Jetzt in den Trends
|
||||
generic:
|
||||
all: Alle
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -875,8 +875,6 @@ el:
|
|||
new:
|
||||
save: Αποθήκευση νέου φίλτρου
|
||||
title: Πρόσθεσε νέο φίλτρο
|
||||
footer:
|
||||
trending_now: Τάσεις
|
||||
generic:
|
||||
all: Όλα
|
||||
changes_saved_msg: Οι αλλαγές αποθηκεύτηκαν!
|
||||
|
|
|
@ -1196,8 +1196,6 @@ en:
|
|||
index:
|
||||
hint: This filter applies to select individual posts regardless of other criteria. You can add more posts to this filter from the web interface.
|
||||
title: Filtered posts
|
||||
footer:
|
||||
trending_now: Trending now
|
||||
generic:
|
||||
all: All
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1197,8 +1197,6 @@ eo:
|
|||
index:
|
||||
hint: Ĉi tiu filtrilo kongruas kelkaj mesaĝoj sendepende de aliaj kriterioj.
|
||||
title: Filtritaj mesaĝoj
|
||||
footer:
|
||||
trending_now: Nunaj furoraĵoj
|
||||
generic:
|
||||
all: Ĉio
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ es-AR:
|
|||
index:
|
||||
hint: Este filtro se aplica a la selección de mensajes individuales, independientemente de otros criterios. Podés agregar más mensajes a este filtro desde la interface web.
|
||||
title: Mensajes filtrados
|
||||
footer:
|
||||
trending_now: Tendencia ahora
|
||||
generic:
|
||||
all: Todas
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ es-MX:
|
|||
index:
|
||||
hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web.
|
||||
title: Publicaciones filtradas
|
||||
footer:
|
||||
trending_now: Tendencia ahora
|
||||
generic:
|
||||
all: Todos
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ es:
|
|||
index:
|
||||
hint: Este filtro se aplica a la selección de publicaciones individuales independientemente de otros criterios. Puede añadir más publicaciones a este filtro desde la interfaz web.
|
||||
title: Publicaciones filtradas
|
||||
footer:
|
||||
trending_now: Tendencia ahora
|
||||
generic:
|
||||
all: Todos
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ et:
|
|||
index:
|
||||
hint: See filter kehtib üksikute postituste valimisel, sõltumata muudest kriteeriumidest. Sellesse filtrisse saab veebiliidese kaudu rohkem postitusi lisada.
|
||||
title: Filtreeritud postitused
|
||||
footer:
|
||||
trending_now: Praegu trendikad
|
||||
generic:
|
||||
all: Kõik
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1198,8 +1198,6 @@ eu:
|
|||
index:
|
||||
hint: Iragazki honek banako bidalketei eragiten die, beste kriterioak badaude ere. Bidalketa gehiago gehitu ditzakezu iragazkira web interfazetik.
|
||||
title: Iragazitako bidalketak
|
||||
footer:
|
||||
trending_now: Joera orain
|
||||
generic:
|
||||
all: Denak
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -890,8 +890,6 @@ fa:
|
|||
title: پالایهها
|
||||
new:
|
||||
title: افزودن پالایهٔ جدید
|
||||
footer:
|
||||
trending_now: پرطرفدار
|
||||
generic:
|
||||
all: همه
|
||||
changes_saved_msg: تغییرات با موفقیت ذخیره شدند!
|
||||
|
|
|
@ -1196,8 +1196,6 @@ fi:
|
|||
index:
|
||||
hint: Tämä suodatin koskee yksittäisten viestien valintaa muista kriteereistä riippumatta. Voit lisätä lisää viestejä tähän suodattimeen web-käyttöliittymästä.
|
||||
title: Suodatetut viestit
|
||||
footer:
|
||||
trending_now: Suosittua nyt
|
||||
generic:
|
||||
all: Kaikki
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ fo:
|
|||
index:
|
||||
hint: Hetta filtrið er galdandi fyri útvaldar stakar postar óansæð aðrar treytir. Tú kanst leggja fleiri postar afturat hesum filtrinum frá vevmarkamótinum.
|
||||
title: Filtreraðir postar
|
||||
footer:
|
||||
trending_now: Rák beint nú
|
||||
generic:
|
||||
all: Alt
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ fr-QC:
|
|||
index:
|
||||
hint: Ce filtre s'applique à la sélection de messages individuels, indépendamment d'autres critères. Vous pouvez ajouter plus de messages à ce filtre à partir de l'interface Web.
|
||||
title: Messages filtrés
|
||||
footer:
|
||||
trending_now: Tendance en ce moment
|
||||
generic:
|
||||
all: Tous
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ fr:
|
|||
index:
|
||||
hint: Ce filtre s'applique à la sélection de messages individuels, indépendamment d'autres critères. Vous pouvez ajouter plus de messages à ce filtre à partir de l'interface Web.
|
||||
title: Messages filtrés
|
||||
footer:
|
||||
trending_now: Tendance en ce moment
|
||||
generic:
|
||||
all: Tous
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ fy:
|
|||
index:
|
||||
hint: Dit filter is fan tapassing om yndividuele berjochten te selektearjen, ûnôfhinklik fan oare kritearia. Jo kinne yn de webomjouwing mear berjochten oan dit filter tafoegje.
|
||||
title: Filtere berjochten
|
||||
footer:
|
||||
trending_now: Trends
|
||||
generic:
|
||||
all: Alle
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1225,8 +1225,6 @@ gd:
|
|||
index:
|
||||
hint: Bidh a’ chriathrag seo an sàs air postaichean fa leth ge b’ e dè na roghainnean eile. ’S urrainn dhut barrachd phostaichean a chur ris a’ chriathrag seo leis an eadar-aghaidh-lìn.
|
||||
title: Postaichean criathraichte
|
||||
footer:
|
||||
trending_now: A’ treandadh an-dràsta
|
||||
generic:
|
||||
all: Na h-uile
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ gl:
|
|||
index:
|
||||
hint: Este filtro aplícase para seleccionar publicacións individuais independentemente doutros criterios. Podes engadir máis publicacións a este filtro desde a interface web.
|
||||
title: Publicacións filtradas
|
||||
footer:
|
||||
trending_now: Tendencia agora
|
||||
generic:
|
||||
all: Todo
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1238,8 +1238,6 @@ he:
|
|||
index:
|
||||
hint: סנן זה חל באופן של בחירת הודעות בודדות ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד הודעות לסנן זה ממנשק הווב.
|
||||
title: הודעות שסוננו
|
||||
footer:
|
||||
trending_now: נושאים חמים
|
||||
generic:
|
||||
all: הכל
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -99,8 +99,6 @@ hr:
|
|||
title: Filteri
|
||||
new:
|
||||
title: Dodaj novi filter
|
||||
footer:
|
||||
trending_now: Popularno
|
||||
generic:
|
||||
all: Sve
|
||||
changes_saved_msg: Izmjene su uspješno sačuvane!
|
||||
|
|
|
@ -1196,8 +1196,6 @@ hu:
|
|||
index:
|
||||
hint: Ez a szűrő egyedi bejegyzések kiválasztására vonatkozik a megadott kritériumoktól függetlenül. Újabb bejegyzéseket adhatsz hozzá ehhez a szűrőhöz a webes felületen keresztül.
|
||||
title: Megszűrt bejegyzések
|
||||
footer:
|
||||
trending_now: Most felkapott
|
||||
generic:
|
||||
all: Mind
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -575,8 +575,6 @@ hy:
|
|||
title: Ֆիլտրեր
|
||||
new:
|
||||
title: Ավելացնել ֆիլտր
|
||||
footer:
|
||||
trending_now: Այժմ արդիական
|
||||
generic:
|
||||
all: Բոլորը
|
||||
changes_saved_msg: Փոփոխութիւնները յաջող պահուած են
|
||||
|
|
|
@ -1133,8 +1133,6 @@ id:
|
|||
index:
|
||||
hint: Saringan ini diterapkan ke beberapa kiriman individu tanpa memengaruhi oleh kriteria lain. Anda dapat menambahkan lebih banyak kiriman ke saringan ini dari antarmuka web.
|
||||
title: Kiriman yang disaring
|
||||
footer:
|
||||
trending_now: Sedang tren
|
||||
generic:
|
||||
all: Semua
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1112,8 +1112,6 @@ io:
|
|||
index:
|
||||
hint: Ca filtrilo aplikesas a selektita posti ne segun altra kriterio. Vu povas pozar plu multa posti a ca filtrilo de retintervizajo.
|
||||
title: Filtrita posti
|
||||
footer:
|
||||
trending_now: Nuna tendenco
|
||||
generic:
|
||||
all: Omna
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1196,8 +1196,6 @@ is:
|
|||
index:
|
||||
hint: Þessi sía virkar til að velja stakar færslur án tillits til annarra skilyrða. Þú getur bætt fleiri færslum í þessa síu í vefviðmótinu.
|
||||
title: Síaðar færslur
|
||||
footer:
|
||||
trending_now: Í umræðunni núna
|
||||
generic:
|
||||
all: Allt
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1198,8 +1198,6 @@ it:
|
|||
index:
|
||||
hint: Questo filtro si applica a singoli post indipendentemente da altri criteri. Puoi aggiungere più post a questo filtro dall'interfaccia Web.
|
||||
title: Post filtrati
|
||||
footer:
|
||||
trending_now: Di tendenza ora
|
||||
generic:
|
||||
all: Tutto
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -1175,8 +1175,6 @@ ja:
|
|||
index:
|
||||
hint: このフィルターは、他の条件に関係なく個々の投稿を選択する場合に適用されます。Webインターフェースからこのフィルターにさらに投稿を追加できます。
|
||||
title: フィルターされた投稿
|
||||
footer:
|
||||
trending_now: トレンドタグ
|
||||
generic:
|
||||
all: すべて
|
||||
all_items_on_page_selected_html:
|
||||
|
|
|
@ -543,8 +543,6 @@ kab:
|
|||
back_to_filter: Tuɣalin ɣer umsizdeg
|
||||
batch:
|
||||
remove: Kkes seg umsizdeg
|
||||
footer:
|
||||
trending_now: Ayen mucaɛen tura
|
||||
generic:
|
||||
all: Akk
|
||||
changes_saved_msg: Ttwaskelsen ibelliden-ik·im akken ilaq!
|
||||
|
|
|
@ -470,8 +470,6 @@ kk:
|
|||
title: Фильтрлер
|
||||
new:
|
||||
title: Жаңа фильтр қосу
|
||||
footer:
|
||||
trending_now: Бүгінгі трендтер
|
||||
generic:
|
||||
all: Барлығы
|
||||
changes_saved_msg: Өзгерістер сәтті сақталды!
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue