Merge pull request #2134 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changeslolsob-rspec
commit
769e8b2ad9
|
@ -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
|
- internal_network
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:6-alpine
|
image: redis:7-alpine
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- redis-data:/data
|
- redis-data:/data
|
||||||
|
|
|
@ -25,12 +25,15 @@ jobs:
|
||||||
- uses: hadolint/hadolint-action@v3.1.0
|
- uses: hadolint/hadolint-action@v3.1.0
|
||||||
- uses: docker/setup-qemu-action@v2
|
- uses: docker/setup-qemu-action@v2
|
||||||
- uses: docker/setup-buildx-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:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.repository_owner }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
|
|
||||||
- uses: docker/metadata-action@v4
|
- uses: docker/metadata-action@v4
|
||||||
id: meta
|
id: meta
|
||||||
with:
|
with:
|
||||||
|
@ -39,6 +42,7 @@ jobs:
|
||||||
type=raw,value=latest,enable={{is_default_branch}}
|
type=raw,value=latest,enable={{is_default_branch}}
|
||||||
type=edge,branch=main
|
type=edge,branch=main
|
||||||
type=sha,prefix=,format=long
|
type=sha,prefix=,format=long
|
||||||
|
|
||||||
- uses: docker/build-push-action@v4
|
- uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
|
@ -47,5 +51,6 @@ jobs:
|
||||||
builder: ${{ steps.buildx.outputs.name }}
|
builder: ${{ steps.buildx.outputs.name }}
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
cache-from: type=gha
|
cache-from: type=gha
|
||||||
cache-to: type=gha,mode=max
|
cache-to: type=gha,mode=max
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -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
|
|
@ -2,7 +2,13 @@ name: PR Needs Rebase
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
|
branches-ignore:
|
||||||
|
- 'dependabot/**'
|
||||||
|
- 'l10n_main'
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
|
branches-ignore:
|
||||||
|
- 'dependabot/**'
|
||||||
|
- 'l10n_main'
|
||||||
types: [synchronize]
|
types: [synchronize]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
|
|
|
@ -25,7 +25,7 @@ jobs:
|
||||||
|
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:14.5
|
image: postgres:14-alpine
|
||||||
env:
|
env:
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
|
@ -38,7 +38,7 @@ jobs:
|
||||||
- 5432:5432
|
- 5432:5432
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis:7.0
|
image: redis:7-alpine
|
||||||
options: >-
|
options: >-
|
||||||
--health-cmd "redis-cli ping"
|
--health-cmd "redis-cli ping"
|
||||||
--health-interval 10s
|
--health-interval 10s
|
||||||
|
|
|
@ -25,7 +25,7 @@ jobs:
|
||||||
|
|
||||||
services:
|
services:
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:14.5
|
image: postgres:14-alpine
|
||||||
env:
|
env:
|
||||||
POSTGRES_PASSWORD: postgres
|
POSTGRES_PASSWORD: postgres
|
||||||
POSTGRES_USER: postgres
|
POSTGRES_USER: postgres
|
||||||
|
@ -37,7 +37,7 @@ jobs:
|
||||||
ports:
|
ports:
|
||||||
- 5432:5432
|
- 5432:5432
|
||||||
redis:
|
redis:
|
||||||
image: redis:7.0
|
image: redis:7-alpine
|
||||||
options: >-
|
options: >-
|
||||||
--health-cmd "redis-cli ping"
|
--health-cmd "redis-cli ping"
|
||||||
--health-interval 10s
|
--health-interval 10s
|
||||||
|
|
|
@ -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
|
inherits_from: .haml-lint_todo.yml
|
||||||
# frameworks such as Jekyll/Middleman
|
|
||||||
skip_frontmatter: false
|
|
||||||
|
|
||||||
exclude:
|
exclude:
|
||||||
- 'vendor/**/*'
|
- 'vendor/**/*'
|
||||||
- 'spec/**/*'
|
- lib/templates/haml/scaffold/_form.html.haml
|
||||||
- 'lib/templates/**/*'
|
|
||||||
- 'app/views/kaminari/**/*'
|
|
||||||
|
|
||||||
linters:
|
linters:
|
||||||
AltText:
|
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
|
enabled: true
|
||||||
|
|
|
@ -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/mastodon/cli_helper.rb'
|
||||||
- 'lib/cli.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:
|
RSpec/FilePath:
|
||||||
CustomTransform:
|
CustomTransform:
|
||||||
|
ActivityPub: activitypub # Ignore the snake_case due to the amount of files to rename
|
||||||
DeepL: deepl
|
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:
|
RSpec/NotToNot:
|
||||||
EnforcedStyle: to_not
|
EnforcedStyle: to_not
|
||||||
|
|
|
@ -301,13 +301,6 @@ Performance/DeletePrefix:
|
||||||
- 'app/services/resolve_account_service.rb'
|
- 'app/services/resolve_account_service.rb'
|
||||||
- 'app/services/tag_search_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
|
# Offense count: 19
|
||||||
# This cop supports unsafe autocorrection (--autocorrect-all).
|
# This cop supports unsafe autocorrection (--autocorrect-all).
|
||||||
Performance/MapCompact:
|
Performance/MapCompact:
|
||||||
|
@ -655,73 +648,6 @@ RSpec/ExpectInHook:
|
||||||
- 'spec/controllers/settings/applications_controller_spec.rb'
|
- 'spec/controllers/settings/applications_controller_spec.rb'
|
||||||
- 'spec/lib/status_filter_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
|
# Offense count: 16
|
||||||
# This cop supports safe autocorrection (--autocorrect).
|
# This cop supports safe autocorrection (--autocorrect).
|
||||||
# Configuration parameters: EnforcedStyle.
|
# 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)
|
- Code style rules (rubocop, eslint)
|
||||||
- Normalization of locale files (i18n-tasks)
|
- 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
|
## 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).
|
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'
|
ruby '>= 2.7.0', '< 3.3.0'
|
||||||
|
|
||||||
gem 'pkg-config', '~> 1.5'
|
gem 'pkg-config', '~> 1.5'
|
||||||
gem 'rexml', '~> 3.2'
|
|
||||||
|
|
||||||
gem 'puma', '~> 6.1'
|
gem 'puma', '~> 6.1'
|
||||||
gem 'rails', '~> 6.1.7'
|
gem 'rails', '~> 6.1.7'
|
||||||
|
@ -40,7 +39,7 @@ end
|
||||||
gem 'net-ldap', '~> 0.17'
|
gem 'net-ldap', '~> 0.17'
|
||||||
gem 'omniauth-cas', '~> 2.0'
|
gem 'omniauth-cas', '~> 2.0'
|
||||||
gem 'omniauth-saml', '~> 1.10'
|
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', '~> 1.9'
|
||||||
gem 'omniauth-rails_csrf_protection', '~> 0.1'
|
gem 'omniauth-rails_csrf_protection', '~> 0.1'
|
||||||
|
|
||||||
|
@ -105,6 +104,7 @@ group :development, :test do
|
||||||
gem 'fuubar', '~> 2.5'
|
gem 'fuubar', '~> 2.5'
|
||||||
gem 'i18n-tasks', '~> 1.0', require: false
|
gem 'i18n-tasks', '~> 1.0', require: false
|
||||||
gem 'rspec-rails', '~> 6.0'
|
gem 'rspec-rails', '~> 6.0'
|
||||||
|
gem 'rspec_chunked', '~> 0.6'
|
||||||
gem 'rubocop-performance', require: false
|
gem 'rubocop-performance', require: false
|
||||||
gem 'rubocop-rails', require: false
|
gem 'rubocop-rails', require: false
|
||||||
gem 'rubocop-rspec', require: false
|
gem 'rubocop-rspec', require: false
|
||||||
|
@ -117,6 +117,7 @@ end
|
||||||
|
|
||||||
group :test do
|
group :test do
|
||||||
gem 'capybara', '~> 3.38'
|
gem 'capybara', '~> 3.38'
|
||||||
|
gem 'climate_control'
|
||||||
gem 'faker', '~> 3.1'
|
gem 'faker', '~> 3.1'
|
||||||
gem 'json-schema', '~> 3.0'
|
gem 'json-schema', '~> 3.0'
|
||||||
gem 'rack-test', '~> 2.0'
|
gem 'rack-test', '~> 2.0'
|
||||||
|
@ -138,6 +139,7 @@ group :development do
|
||||||
gem 'memory_profiler'
|
gem 'memory_profiler'
|
||||||
gem 'brakeman', '~> 5.4', require: false
|
gem 'brakeman', '~> 5.4', require: false
|
||||||
gem 'bundler-audit', '~> 0.9', require: false
|
gem 'bundler-audit', '~> 0.9', require: false
|
||||||
|
gem 'haml_lint', require: false
|
||||||
|
|
||||||
gem 'capistrano', '~> 3.17'
|
gem 'capistrano', '~> 3.17'
|
||||||
gem 'capistrano-rails', '~> 1.6'
|
gem 'capistrano-rails', '~> 1.6'
|
||||||
|
|
154
Gemfile.lock
154
Gemfile.lock
|
@ -30,40 +30,40 @@ GIT
|
||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
actioncable (6.1.7.2)
|
actioncable (6.1.7.3)
|
||||||
actionpack (= 6.1.7.2)
|
actionpack (= 6.1.7.3)
|
||||||
activesupport (= 6.1.7.2)
|
activesupport (= 6.1.7.3)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
websocket-driver (>= 0.6.1)
|
websocket-driver (>= 0.6.1)
|
||||||
actionmailbox (6.1.7.2)
|
actionmailbox (6.1.7.3)
|
||||||
actionpack (= 6.1.7.2)
|
actionpack (= 6.1.7.3)
|
||||||
activejob (= 6.1.7.2)
|
activejob (= 6.1.7.3)
|
||||||
activerecord (= 6.1.7.2)
|
activerecord (= 6.1.7.3)
|
||||||
activestorage (= 6.1.7.2)
|
activestorage (= 6.1.7.3)
|
||||||
activesupport (= 6.1.7.2)
|
activesupport (= 6.1.7.3)
|
||||||
mail (>= 2.7.1)
|
mail (>= 2.7.1)
|
||||||
actionmailer (6.1.7.2)
|
actionmailer (6.1.7.3)
|
||||||
actionpack (= 6.1.7.2)
|
actionpack (= 6.1.7.3)
|
||||||
actionview (= 6.1.7.2)
|
actionview (= 6.1.7.3)
|
||||||
activejob (= 6.1.7.2)
|
activejob (= 6.1.7.3)
|
||||||
activesupport (= 6.1.7.2)
|
activesupport (= 6.1.7.3)
|
||||||
mail (~> 2.5, >= 2.5.4)
|
mail (~> 2.5, >= 2.5.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
actionpack (6.1.7.2)
|
actionpack (6.1.7.3)
|
||||||
actionview (= 6.1.7.2)
|
actionview (= 6.1.7.3)
|
||||||
activesupport (= 6.1.7.2)
|
activesupport (= 6.1.7.3)
|
||||||
rack (~> 2.0, >= 2.0.9)
|
rack (~> 2.0, >= 2.0.9)
|
||||||
rack-test (>= 0.6.3)
|
rack-test (>= 0.6.3)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
||||||
actiontext (6.1.7.2)
|
actiontext (6.1.7.3)
|
||||||
actionpack (= 6.1.7.2)
|
actionpack (= 6.1.7.3)
|
||||||
activerecord (= 6.1.7.2)
|
activerecord (= 6.1.7.3)
|
||||||
activestorage (= 6.1.7.2)
|
activestorage (= 6.1.7.3)
|
||||||
activesupport (= 6.1.7.2)
|
activesupport (= 6.1.7.3)
|
||||||
nokogiri (>= 1.8.5)
|
nokogiri (>= 1.8.5)
|
||||||
actionview (6.1.7.2)
|
actionview (6.1.7.3)
|
||||||
activesupport (= 6.1.7.2)
|
activesupport (= 6.1.7.3)
|
||||||
builder (~> 3.1)
|
builder (~> 3.1)
|
||||||
erubi (~> 1.4)
|
erubi (~> 1.4)
|
||||||
rails-dom-testing (~> 2.0)
|
rails-dom-testing (~> 2.0)
|
||||||
|
@ -74,22 +74,22 @@ GEM
|
||||||
case_transform (>= 0.2)
|
case_transform (>= 0.2)
|
||||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||||
active_record_query_trace (1.8)
|
active_record_query_trace (1.8)
|
||||||
activejob (6.1.7.2)
|
activejob (6.1.7.3)
|
||||||
activesupport (= 6.1.7.2)
|
activesupport (= 6.1.7.3)
|
||||||
globalid (>= 0.3.6)
|
globalid (>= 0.3.6)
|
||||||
activemodel (6.1.7.2)
|
activemodel (6.1.7.3)
|
||||||
activesupport (= 6.1.7.2)
|
activesupport (= 6.1.7.3)
|
||||||
activerecord (6.1.7.2)
|
activerecord (6.1.7.3)
|
||||||
activemodel (= 6.1.7.2)
|
activemodel (= 6.1.7.3)
|
||||||
activesupport (= 6.1.7.2)
|
activesupport (= 6.1.7.3)
|
||||||
activestorage (6.1.7.2)
|
activestorage (6.1.7.3)
|
||||||
actionpack (= 6.1.7.2)
|
actionpack (= 6.1.7.3)
|
||||||
activejob (= 6.1.7.2)
|
activejob (= 6.1.7.3)
|
||||||
activerecord (= 6.1.7.2)
|
activerecord (= 6.1.7.3)
|
||||||
activesupport (= 6.1.7.2)
|
activesupport (= 6.1.7.3)
|
||||||
marcel (~> 1.0)
|
marcel (~> 1.0)
|
||||||
mini_mime (>= 1.1.0)
|
mini_mime (>= 1.1.0)
|
||||||
activesupport (6.1.7.2)
|
activesupport (6.1.7.3)
|
||||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||||
i18n (>= 1.6, < 2)
|
i18n (>= 1.6, < 2)
|
||||||
minitest (>= 5.1)
|
minitest (>= 5.1)
|
||||||
|
@ -225,7 +225,7 @@ GEM
|
||||||
docile (1.4.0)
|
docile (1.4.0)
|
||||||
domain_name (0.5.20190701)
|
domain_name (0.5.20190701)
|
||||||
unf (>= 0.0.5, < 1.0.0)
|
unf (>= 0.0.5, < 1.0.0)
|
||||||
doorkeeper (5.6.4)
|
doorkeeper (5.6.5)
|
||||||
railties (>= 5)
|
railties (>= 5)
|
||||||
dotenv (2.8.1)
|
dotenv (2.8.1)
|
||||||
dotenv-rails (2.8.1)
|
dotenv-rails (2.8.1)
|
||||||
|
@ -308,6 +308,12 @@ GEM
|
||||||
activesupport (>= 5.1)
|
activesupport (>= 5.1)
|
||||||
haml (>= 4.0.6)
|
haml (>= 4.0.6)
|
||||||
railties (>= 5.1)
|
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)
|
hashdiff (1.0.1)
|
||||||
hashie (5.0.0)
|
hashie (5.0.0)
|
||||||
hcaptcha (7.1.0)
|
hcaptcha (7.1.0)
|
||||||
|
@ -399,7 +405,7 @@ GEM
|
||||||
loofah (2.19.1)
|
loofah (2.19.1)
|
||||||
crass (~> 1.0.2)
|
crass (~> 1.0.2)
|
||||||
nokogiri (>= 1.5.9)
|
nokogiri (>= 1.5.9)
|
||||||
mail (2.8.0.1)
|
mail (2.8.1)
|
||||||
mini_mime (>= 0.1.1)
|
mini_mime (>= 0.1.1)
|
||||||
net-imap
|
net-imap
|
||||||
net-pop
|
net-pop
|
||||||
|
@ -417,7 +423,7 @@ GEM
|
||||||
mime-types-data (3.2022.0105)
|
mime-types-data (3.2022.0105)
|
||||||
mini_mime (1.1.2)
|
mini_mime (1.1.2)
|
||||||
mini_portile2 (2.8.1)
|
mini_portile2 (2.8.1)
|
||||||
minitest (5.17.0)
|
minitest (5.18.0)
|
||||||
msgpack (1.6.0)
|
msgpack (1.6.0)
|
||||||
multi_json (1.15.0)
|
multi_json (1.15.0)
|
||||||
multipart-post (2.3.0)
|
multipart-post (2.3.0)
|
||||||
|
@ -459,7 +465,7 @@ GEM
|
||||||
omniauth-saml (1.10.3)
|
omniauth-saml (1.10.3)
|
||||||
omniauth (~> 1.3, >= 1.3.2)
|
omniauth (~> 1.3, >= 1.3.2)
|
||||||
ruby-saml (~> 1.9)
|
ruby-saml (~> 1.9)
|
||||||
omniauth_openid_connect (0.6.0)
|
omniauth_openid_connect (0.6.1)
|
||||||
omniauth (>= 1.9, < 3)
|
omniauth (>= 1.9, < 3)
|
||||||
openid_connect (~> 1.1)
|
openid_connect (~> 1.1)
|
||||||
openid_connect (1.4.2)
|
openid_connect (1.4.2)
|
||||||
|
@ -479,13 +485,13 @@ GEM
|
||||||
orm_adapter (0.5.0)
|
orm_adapter (0.5.0)
|
||||||
ox (2.14.14)
|
ox (2.14.14)
|
||||||
parallel (1.22.1)
|
parallel (1.22.1)
|
||||||
parser (3.2.1.0)
|
parser (3.2.1.1)
|
||||||
ast (~> 2.4.1)
|
ast (~> 2.4.1)
|
||||||
parslet (2.0.0)
|
parslet (2.0.0)
|
||||||
pastel (0.8.0)
|
pastel (0.8.0)
|
||||||
tty-color (~> 0.5)
|
tty-color (~> 0.5)
|
||||||
pg (1.4.5)
|
pg (1.4.6)
|
||||||
pghero (3.1.0)
|
pghero (3.3.0)
|
||||||
activerecord (>= 6)
|
activerecord (>= 6)
|
||||||
pkg-config (1.5.1)
|
pkg-config (1.5.1)
|
||||||
posix-spawn (0.3.15)
|
posix-spawn (0.3.15)
|
||||||
|
@ -499,13 +505,13 @@ GEM
|
||||||
premailer (~> 1.7, >= 1.7.9)
|
premailer (~> 1.7, >= 1.7.9)
|
||||||
private_address_check (0.5.0)
|
private_address_check (0.5.0)
|
||||||
public_suffix (5.0.1)
|
public_suffix (5.0.1)
|
||||||
puma (6.1.0)
|
puma (6.1.1)
|
||||||
nio4r (~> 2.0)
|
nio4r (~> 2.0)
|
||||||
pundit (2.3.0)
|
pundit (2.3.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
raabro (1.4.0)
|
raabro (1.4.0)
|
||||||
racc (1.6.2)
|
racc (1.6.2)
|
||||||
rack (2.2.6.2)
|
rack (2.2.6.4)
|
||||||
rack-attack (6.6.1)
|
rack-attack (6.6.1)
|
||||||
rack (>= 1.0, < 3)
|
rack (>= 1.0, < 3)
|
||||||
rack-cors (1.1.1)
|
rack-cors (1.1.1)
|
||||||
|
@ -520,20 +526,20 @@ GEM
|
||||||
rack
|
rack
|
||||||
rack-test (2.0.2)
|
rack-test (2.0.2)
|
||||||
rack (>= 1.3)
|
rack (>= 1.3)
|
||||||
rails (6.1.7.2)
|
rails (6.1.7.3)
|
||||||
actioncable (= 6.1.7.2)
|
actioncable (= 6.1.7.3)
|
||||||
actionmailbox (= 6.1.7.2)
|
actionmailbox (= 6.1.7.3)
|
||||||
actionmailer (= 6.1.7.2)
|
actionmailer (= 6.1.7.3)
|
||||||
actionpack (= 6.1.7.2)
|
actionpack (= 6.1.7.3)
|
||||||
actiontext (= 6.1.7.2)
|
actiontext (= 6.1.7.3)
|
||||||
actionview (= 6.1.7.2)
|
actionview (= 6.1.7.3)
|
||||||
activejob (= 6.1.7.2)
|
activejob (= 6.1.7.3)
|
||||||
activemodel (= 6.1.7.2)
|
activemodel (= 6.1.7.3)
|
||||||
activerecord (= 6.1.7.2)
|
activerecord (= 6.1.7.3)
|
||||||
activestorage (= 6.1.7.2)
|
activestorage (= 6.1.7.3)
|
||||||
activesupport (= 6.1.7.2)
|
activesupport (= 6.1.7.3)
|
||||||
bundler (>= 1.15.0)
|
bundler (>= 1.15.0)
|
||||||
railties (= 6.1.7.2)
|
railties (= 6.1.7.3)
|
||||||
sprockets-rails (>= 2.0.0)
|
sprockets-rails (>= 2.0.0)
|
||||||
rails-controller-testing (1.0.5)
|
rails-controller-testing (1.0.5)
|
||||||
actionpack (>= 5.0.1.rc1)
|
actionpack (>= 5.0.1.rc1)
|
||||||
|
@ -547,9 +553,9 @@ GEM
|
||||||
rails-i18n (6.0.0)
|
rails-i18n (6.0.0)
|
||||||
i18n (>= 0.7, < 2)
|
i18n (>= 0.7, < 2)
|
||||||
railties (>= 6.0.0, < 7)
|
railties (>= 6.0.0, < 7)
|
||||||
railties (6.1.7.2)
|
railties (6.1.7.3)
|
||||||
actionpack (= 6.1.7.2)
|
actionpack (= 6.1.7.3)
|
||||||
activesupport (= 6.1.7.2)
|
activesupport (= 6.1.7.3)
|
||||||
method_source
|
method_source
|
||||||
rake (>= 12.2)
|
rake (>= 12.2)
|
||||||
thor (~> 1.0)
|
thor (~> 1.0)
|
||||||
|
@ -598,20 +604,21 @@ GEM
|
||||||
rspec-core (~> 3.0, >= 3.0.0)
|
rspec-core (~> 3.0, >= 3.0.0)
|
||||||
sidekiq (>= 2.4.0)
|
sidekiq (>= 2.4.0)
|
||||||
rspec-support (3.12.0)
|
rspec-support (3.12.0)
|
||||||
|
rspec_chunked (0.6)
|
||||||
rspec_junit_formatter (0.6.0)
|
rspec_junit_formatter (0.6.0)
|
||||||
rspec-core (>= 2, < 4, != 2.12.0)
|
rspec-core (>= 2, < 4, != 2.12.0)
|
||||||
rubocop (1.45.1)
|
rubocop (1.48.1)
|
||||||
json (~> 2.3)
|
json (~> 2.3)
|
||||||
parallel (~> 1.10)
|
parallel (~> 1.10)
|
||||||
parser (>= 3.2.0.0)
|
parser (>= 3.2.0.0)
|
||||||
rainbow (>= 2.2.2, < 4.0)
|
rainbow (>= 2.2.2, < 4.0)
|
||||||
regexp_parser (>= 1.8, < 3.0)
|
regexp_parser (>= 1.8, < 3.0)
|
||||||
rexml (>= 3.2.5, < 4.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)
|
ruby-progressbar (~> 1.7)
|
||||||
unicode-display_width (>= 2.4.0, < 3.0)
|
unicode-display_width (>= 2.4.0, < 3.0)
|
||||||
rubocop-ast (1.24.1)
|
rubocop-ast (1.27.0)
|
||||||
parser (>= 3.1.1.0)
|
parser (>= 3.2.1.0)
|
||||||
rubocop-capybara (2.17.0)
|
rubocop-capybara (2.17.0)
|
||||||
rubocop (~> 1.41)
|
rubocop (~> 1.41)
|
||||||
rubocop-performance (1.16.0)
|
rubocop-performance (1.16.0)
|
||||||
|
@ -646,9 +653,9 @@ GEM
|
||||||
redis (>= 4.5.0, < 5)
|
redis (>= 4.5.0, < 5)
|
||||||
sidekiq-bulk (0.2.0)
|
sidekiq-bulk (0.2.0)
|
||||||
sidekiq
|
sidekiq
|
||||||
sidekiq-scheduler (5.0.1)
|
sidekiq-scheduler (5.0.2)
|
||||||
rufus-scheduler (~> 3.2)
|
rufus-scheduler (~> 3.2)
|
||||||
sidekiq (>= 4, < 8)
|
sidekiq (>= 6, < 8)
|
||||||
tilt (>= 1.4.0)
|
tilt (>= 1.4.0)
|
||||||
sidekiq-unique-jobs (7.1.29)
|
sidekiq-unique-jobs (7.1.29)
|
||||||
brpoplpush-redis_script (> 0.1.1, <= 2.0.0)
|
brpoplpush-redis_script (> 0.1.1, <= 2.0.0)
|
||||||
|
@ -688,14 +695,15 @@ GEM
|
||||||
activesupport (>= 3)
|
activesupport (>= 3)
|
||||||
attr_required (>= 0.0.5)
|
attr_required (>= 0.0.5)
|
||||||
httpclient (>= 2.4)
|
httpclient (>= 2.4)
|
||||||
|
sysexits (1.2.0)
|
||||||
temple (0.10.0)
|
temple (0.10.0)
|
||||||
terminal-table (3.0.2)
|
terminal-table (3.0.2)
|
||||||
unicode-display_width (>= 1.1.1, < 3)
|
unicode-display_width (>= 1.1.1, < 3)
|
||||||
terrapin (0.6.0)
|
terrapin (0.6.0)
|
||||||
climate_control (>= 0.0.3, < 1.0)
|
climate_control (>= 0.0.3, < 1.0)
|
||||||
thor (1.2.1)
|
thor (1.2.1)
|
||||||
tilt (2.0.11)
|
tilt (2.1.0)
|
||||||
timeout (0.3.1)
|
timeout (0.3.2)
|
||||||
tpm-key_attestation (0.12.0)
|
tpm-key_attestation (0.12.0)
|
||||||
bindata (~> 2.4)
|
bindata (~> 2.4)
|
||||||
openssl (> 2.0)
|
openssl (> 2.0)
|
||||||
|
@ -785,6 +793,7 @@ DEPENDENCIES
|
||||||
capybara (~> 3.38)
|
capybara (~> 3.38)
|
||||||
charlock_holmes (~> 0.7.7)
|
charlock_holmes (~> 0.7.7)
|
||||||
chewy (~> 7.2)
|
chewy (~> 7.2)
|
||||||
|
climate_control
|
||||||
cocoon (~> 1.2)
|
cocoon (~> 1.2)
|
||||||
color_diff (~> 0.1)
|
color_diff (~> 0.1)
|
||||||
concurrent-ruby
|
concurrent-ruby
|
||||||
|
@ -804,6 +813,7 @@ DEPENDENCIES
|
||||||
fog-openstack (~> 0.3)
|
fog-openstack (~> 0.3)
|
||||||
fuubar (~> 2.5)
|
fuubar (~> 2.5)
|
||||||
haml-rails (~> 2.0)
|
haml-rails (~> 2.0)
|
||||||
|
haml_lint
|
||||||
hcaptcha (~> 7.1)
|
hcaptcha (~> 7.1)
|
||||||
hiredis (~> 0.6)
|
hiredis (~> 0.6)
|
||||||
htmlentities (~> 4.3)
|
htmlentities (~> 4.3)
|
||||||
|
@ -834,7 +844,7 @@ DEPENDENCIES
|
||||||
omniauth-cas (~> 2.0)
|
omniauth-cas (~> 2.0)
|
||||||
omniauth-rails_csrf_protection (~> 0.1)
|
omniauth-rails_csrf_protection (~> 0.1)
|
||||||
omniauth-saml (~> 1.10)
|
omniauth-saml (~> 1.10)
|
||||||
omniauth_openid_connect (~> 0.6.0)
|
omniauth_openid_connect (~> 0.6.1)
|
||||||
ox (~> 2.14)
|
ox (~> 2.14)
|
||||||
parslet
|
parslet
|
||||||
pg (~> 1.4)
|
pg (~> 1.4)
|
||||||
|
@ -858,10 +868,10 @@ DEPENDENCIES
|
||||||
redcarpet (~> 3.6)
|
redcarpet (~> 3.6)
|
||||||
redis (~> 4.5)
|
redis (~> 4.5)
|
||||||
redis-namespace (~> 1.10)
|
redis-namespace (~> 1.10)
|
||||||
rexml (~> 3.2)
|
|
||||||
rqrcode (~> 2.1)
|
rqrcode (~> 2.1)
|
||||||
rspec-rails (~> 6.0)
|
rspec-rails (~> 6.0)
|
||||||
rspec-sidekiq (~> 3.1)
|
rspec-sidekiq (~> 3.1)
|
||||||
|
rspec_chunked (~> 0.6)
|
||||||
rspec_junit_formatter (~> 0.6)
|
rspec_junit_formatter (~> 0.6)
|
||||||
rubocop
|
rubocop
|
||||||
rubocop-performance
|
rubocop-performance
|
||||||
|
|
|
@ -63,7 +63,11 @@ class ApplicationController < ActionController::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def after_sign_out_path_for(_resource_or_scope)
|
def after_sign_out_path_for(_resource_or_scope)
|
||||||
new_user_session_path
|
if ENV['OMNIAUTH_ONLY'] == 'true' && ENV['OIDC_ENABLED'] == 'true'
|
||||||
|
'/auth/auth/openid_connect/logout'
|
||||||
|
else
|
||||||
|
new_user_session_path
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
|
@ -33,7 +33,7 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
||||||
|
|
||||||
def after_sign_in_path_for(resource)
|
def after_sign_in_path_for(resource)
|
||||||
if resource.email_present?
|
if resource.email_present?
|
||||||
root_path
|
stored_location_for(resource) || root_path
|
||||||
else
|
else
|
||||||
auth_setup_path(missing_email: '1')
|
auth_setup_path(missing_email: '1')
|
||||||
end
|
end
|
||||||
|
|
|
@ -52,7 +52,7 @@ module Settings
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
flash[:error] = I18n.t('webauthn_credentials.create.error')
|
flash[:error] = I18n.t('webauthn_credentials.create.error')
|
||||||
status = :internal_server_error
|
status = :unprocessable_entity
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
flash[:error] = t('webauthn_credentials.create.error')
|
flash[:error] = t('webauthn_credentials.create.error')
|
||||||
|
|
|
@ -52,6 +52,8 @@ const messages = defineMessages({
|
||||||
redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.' },
|
redraftMessage: { id: 'confirmations.redraft.message', defaultMessage: 'Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.' },
|
||||||
replyConfirm: { id: 'confirmations.reply.confirm', defaultMessage: 'Reply' },
|
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?' },
|
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?' },
|
||||||
unfilterConfirm: { id: 'confirmations.unfilter.confirm', defaultMessage: 'Show' },
|
unfilterConfirm: { id: 'confirmations.unfilter.confirm', defaultMessage: 'Show' },
|
||||||
author: { id: 'confirmations.unfilter.author', defaultMessage: 'Author' },
|
author: { id: 'confirmations.unfilter.author', defaultMessage: 'Author' },
|
||||||
matchingFilters: { id: 'confirmations.unfilter.filters', defaultMessage: 'Matching {count, plural, one {filter} other {filters}}' },
|
matchingFilters: { id: 'confirmations.unfilter.filters', defaultMessage: 'Matching {count, plural, one {filter} other {filters}}' },
|
||||||
|
@ -183,7 +185,18 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({
|
||||||
},
|
},
|
||||||
|
|
||||||
onEdit (status, history) {
|
onEdit (status, history) {
|
||||||
dispatch(editStatus(status.get('id'), 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) {
|
onTranslate (status) {
|
||||||
|
|
|
@ -1628,6 +1628,7 @@ button.icon-button.active i.fa-retweet {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
text-align: center;
|
||||||
color: $secondary-text-color;
|
color: $secondary-text-color;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
|
|
@ -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.' },
|
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' },
|
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?' },
|
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' },
|
blockDomainConfirm: { id: 'confirmations.domain_block.confirm', defaultMessage: 'Hide entire domain' },
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -149,7 +151,18 @@ const mapDispatchToProps = (dispatch, { intl, contextType }) => ({
|
||||||
},
|
},
|
||||||
|
|
||||||
onEdit (status, history) {
|
onEdit (status, history) {
|
||||||
dispatch(editStatus(status.get('id'), 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) {
|
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.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.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.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.confirm": "Log out",
|
||||||
"confirmations.logout.message": "Are you sure you want to log out?",
|
"confirmations.logout.message": "Are you sure you want to log out?",
|
||||||
"confirmations.mute.confirm": "Mute",
|
"confirmations.mute.confirm": "Mute",
|
||||||
|
|
|
@ -4509,6 +4509,7 @@ a.status-card.compact:hover {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
text-align: center;
|
||||||
color: $secondary-text-color;
|
color: $secondary-text-color;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
|
|
|
@ -12,7 +12,7 @@ class ActivityPub::Forwarder
|
||||||
end
|
end
|
||||||
|
|
||||||
def forward!
|
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]
|
[payload, signature_account_id, inbox_url]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -31,7 +31,7 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck
|
||||||
def running_version
|
def running_version
|
||||||
@running_version ||= begin
|
@running_version ||= begin
|
||||||
Chewy.client.info['version']['number']
|
Chewy.client.info['version']['number']
|
||||||
rescue Faraday::ConnectionFailed
|
rescue Faraday::ConnectionFailed, Elasticsearch::Transport::Transport::Error
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,7 +18,7 @@ class PlainTextFormatter
|
||||||
if local?
|
if local?
|
||||||
text
|
text
|
||||||
else
|
else
|
||||||
strip_tags(insert_newlines).chomp
|
html_entities.decode(strip_tags(insert_newlines)).chomp
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -27,4 +27,8 @@ class PlainTextFormatter
|
||||||
def insert_newlines
|
def insert_newlines
|
||||||
text.gsub(NEWLINE_TAGS_RE) { |match| "#{match}\n" }
|
text.gsub(NEWLINE_TAGS_RE) { |match| "#{match}\n" }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def html_entities
|
||||||
|
HTMLEntities.new
|
||||||
|
end
|
||||||
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!
|
def prepare_new_user!
|
||||||
BootstrapTimelineWorker.perform_async(account_id)
|
BootstrapTimelineWorker.perform_async(account_id)
|
||||||
ActivityTracker.increment('activity:accounts:local')
|
ActivityTracker.increment('activity:accounts:local')
|
||||||
|
ActivityTracker.record('activity:logins', id)
|
||||||
UserMailer.welcome(self).deliver_later
|
UserMailer.welcome(self).deliver_later
|
||||||
TriggerWebhookWorker.perform_async('account.approved', 'Account', account_id)
|
TriggerWebhookWorker.perform_async('account.approved', 'Account', account_id)
|
||||||
end
|
end
|
||||||
|
|
||||||
def prepare_returning_user!
|
def prepare_returning_user!
|
||||||
|
return unless confirmed?
|
||||||
|
|
||||||
ActivityTracker.record('activity:logins', id)
|
ActivityTracker.record('activity:logins', id)
|
||||||
regenerate_feed! if needs_feed_update?
|
regenerate_feed! if needs_feed_update?
|
||||||
end
|
end
|
||||||
|
|
|
@ -257,11 +257,11 @@ class DeleteAccountService < BaseService
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete_actor!
|
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]
|
[delete_actor_json, @account.id, inbox_url]
|
||||||
end
|
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]
|
[delete_actor_json, @account.id, inbox_url]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -90,7 +90,7 @@ class RemoveStatusService < BaseService
|
||||||
|
|
||||||
status_reach_finder = StatusReachFinder.new(@status, unsafe: true)
|
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]
|
[signed_activity_json, @account.id, inbox_url]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -31,13 +31,13 @@ class SuspendAccountService < BaseService
|
||||||
# counterpart to this operation, i.e. you can't then force a remote
|
# counterpart to this operation, i.e. you can't then force a remote
|
||||||
# account to re-follow you, so this part is not reversible.
|
# 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
|
||||||
|
|
||||||
ActivityPub::DeliveryWorker.push_bulk(follows) do |follow|
|
follows.each(&:destroy)
|
||||||
[Oj.dump(serialize_payload(follow, ActivityPub::RejectFollowSerializer)), follow.target_account_id, @account.inbox_url]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
follows.each(&:destroy)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def distribute_update_actor!
|
def distribute_update_actor!
|
||||||
|
@ -45,7 +45,7 @@ class SuspendAccountService < BaseService
|
||||||
|
|
||||||
account_reach_finder = AccountReachFinder.new(@account)
|
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]
|
[signed_activity_json, @account.id, inbox_url]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -41,7 +41,7 @@ class UnsuspendAccountService < BaseService
|
||||||
|
|
||||||
account_reach_finder = AccountReachFinder.new(@account)
|
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]
|
[signed_activity_json, @account.id, inbox_url]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -22,7 +22,7 @@ class UpdateAccountService < BaseService
|
||||||
def authorize_all_follow_requests(account)
|
def authorize_all_follow_requests(account)
|
||||||
follow_requests = FollowRequest.where(target_account: account)
|
follow_requests = FollowRequest.where(target_account: account)
|
||||||
follow_requests = follow_requests.preload(:account).select { |req| !req.account.silenced? }
|
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]
|
[req.account_id, req.target_account_id]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -206,7 +206,7 @@
|
||||||
- if @deletion_request.present?
|
- 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)
|
= 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
|
- else
|
||||||
%div.action-buttons
|
.action-buttons
|
||||||
%div
|
%div
|
||||||
- if @account.local? && @account.user_approved?
|
- 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)
|
= 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/
|
%hr.spacer/
|
||||||
|
|
||||||
- if @account.user&.invite_request&.text&.present?
|
- if @account.user&.invite_request&.text&.present?
|
||||||
%div.speech-bubble
|
.speech-bubble
|
||||||
%div.speech-bubble__bubble
|
.speech-bubble__bubble
|
||||||
= @account.user&.invite_request&.text
|
= @account.user&.invite_request&.text
|
||||||
%div.speech-bubble__owner
|
.speech-bubble__owner
|
||||||
= admin_account_link_to @account
|
= admin_account_link_to @account
|
||||||
= t('admin.accounts.invite_request_text')
|
= 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')
|
= 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?
|
- if @action_logs.empty?
|
||||||
%div.muted-hint.center-text
|
.muted-hint.center-text
|
||||||
= t 'admin.action_logs.empty'
|
= t 'admin.action_logs.empty'
|
||||||
- else
|
- else
|
||||||
.report-notes
|
.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
|
%li= filter_link_to safe_join([t('admin.announcements.live'), "(#{number_with_delimiter(Announcement.published.count)})"], ' '), published: '1', unpublished: nil
|
||||||
|
|
||||||
- if @announcements.empty?
|
- if @announcements.empty?
|
||||||
%div.muted-hint.center-text
|
.muted-hint.center-text
|
||||||
= t 'admin.announcements.empty'
|
= t 'admin.announcements.empty'
|
||||||
- else
|
- else
|
||||||
.announcements-list
|
.announcements-list
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
%li= filter_link_to t('admin.trends.rejected'), status: 'rejected'
|
%li= filter_link_to t('admin.trends.rejected'), status: 'rejected'
|
||||||
|
|
||||||
- if @appeals.empty?
|
- if @appeals.empty?
|
||||||
%div.muted-hint.center-text
|
.muted-hint.center-text
|
||||||
= t 'admin.disputes.appeals.empty'
|
= t 'admin.disputes.appeals.empty'
|
||||||
- else
|
- else
|
||||||
.announcements-list
|
.announcements-list
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
%hr.spacer/
|
%hr.spacer/
|
||||||
|
|
||||||
- if @instances.empty?
|
- if @instances.empty?
|
||||||
%div.muted-hint.center-text
|
.muted-hint.center-text
|
||||||
= t 'admin.instances.empty'
|
= t 'admin.instances.empty'
|
||||||
- else
|
- else
|
||||||
= render partial: 'instance', collection: @instances
|
= render partial: 'instance', collection: @instances
|
||||||
|
|
|
@ -54,15 +54,15 @@
|
||||||
.strike-card__statuses-list__item
|
.strike-card__statuses-list__item
|
||||||
- if (status = status_map[status_id.to_i])
|
- if (status = status_map[status_id.to_i])
|
||||||
.one-liner
|
.one-liner
|
||||||
= link_to short_account_status_url(@report.target_account, status_id), class: 'emojify' do
|
.emojify= one_line_preview(status)
|
||||||
= one_line_preview(status)
|
|
||||||
|
|
||||||
- status.ordered_media_attachments.each do |media_attachment|
|
- status.ordered_media_attachments.each do |media_attachment|
|
||||||
%abbr{ title: media_attachment.description }
|
%abbr{ title: media_attachment.description }
|
||||||
= fa_icon 'link'
|
= fa_icon 'link'
|
||||||
= media_attachment.file_file_name
|
= media_attachment.file_file_name
|
||||||
.strike-card__statuses-list__item__meta
|
.strike-card__statuses-list__item__meta
|
||||||
%time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
|
= 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?
|
- unless status.application.nil?
|
||||||
·
|
·
|
||||||
= status.application.name
|
= status.application.name
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
%hr.spacer/
|
%hr.spacer/
|
||||||
|
|
||||||
- if @rules.empty?
|
- if @rules.empty?
|
||||||
%div.muted-hint.center-text
|
.muted-hint.center-text
|
||||||
= t 'admin.rules.empty'
|
= t 'admin.rules.empty'
|
||||||
- else
|
- else
|
||||||
.announcements-list
|
.announcements-list
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
%hr.spacer/
|
%hr.spacer/
|
||||||
|
|
||||||
- if @warning_presets.empty?
|
- if @warning_presets.empty?
|
||||||
%div.muted-hint.center-text
|
.muted-hint.center-text
|
||||||
= t 'admin.warning_presets.empty'
|
= t 'admin.warning_presets.empty'
|
||||||
- else
|
- else
|
||||||
.announcements-list
|
.announcements-list
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
%hr.spacer/
|
%hr.spacer/
|
||||||
|
|
||||||
- if @webhooks.empty?
|
- if @webhooks.empty?
|
||||||
%div.muted-hint.center-text
|
.muted-hint.center-text
|
||||||
= t 'admin.webhooks.empty'
|
= t 'admin.webhooks.empty'
|
||||||
- else
|
- else
|
||||||
.applications-list
|
.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,15 +50,15 @@
|
||||||
.strike-card__statuses-list__item
|
.strike-card__statuses-list__item
|
||||||
- if (status = status_map[status_id.to_i])
|
- if (status = status_map[status_id.to_i])
|
||||||
.one-liner
|
.one-liner
|
||||||
= link_to short_account_status_url(@strike.target_account, status_id), class: 'emojify' do
|
.emojify= one_line_preview(status)
|
||||||
= one_line_preview(status)
|
|
||||||
|
|
||||||
- status.ordered_media_attachments.each do |media_attachment|
|
- status.ordered_media_attachments.each do |media_attachment|
|
||||||
%abbr{ title: media_attachment.description }
|
%abbr{ title: media_attachment.description }
|
||||||
= fa_icon 'link'
|
= fa_icon 'link'
|
||||||
= media_attachment.file_file_name
|
= media_attachment.file_file_name
|
||||||
.strike-card__statuses-list__item__meta
|
.strike-card__statuses-list__item__meta
|
||||||
%time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
|
= 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?
|
- unless status.application.nil?
|
||||||
·
|
·
|
||||||
= status.application.name
|
= status.application.name
|
||||||
|
|
|
@ -35,6 +35,6 @@
|
||||||
= render 'keyword_fields', f: keyword
|
= render 'keyword_fields', f: keyword
|
||||||
%tfoot
|
%tfoot
|
||||||
%tr
|
%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
|
= 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')])
|
= 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'
|
= link_to t('filters.new.title'), new_filter_path, class: 'button'
|
||||||
|
|
||||||
- if @filters.empty?
|
- if @filters.empty?
|
||||||
%div.muted-hint.center-text= t 'filters.index.empty'
|
.muted-hint.center-text= t 'filters.index.empty'
|
||||||
- else
|
- else
|
||||||
.applications-list
|
.applications-list
|
||||||
= render partial: 'filter', collection: @filters
|
= render partial: 'filter', collection: @filters
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
-# Link to the "Next" page
|
-#
|
||||||
-# available local variables
|
Link to the "Next" page
|
||||||
-# url: url to the next page
|
available local variables
|
||||||
-# current_page: a page object for the currently displayed page
|
url: url to the next page
|
||||||
-# total_pages: total number of pages
|
current_page: a page object for the currently displayed page
|
||||||
-# per_page: number of items to fetch per page
|
total_pages: total number of pages
|
||||||
-# remote: data-remote
|
per_page: number of items to fetch per page
|
||||||
|
remote: data-remote
|
||||||
|
|
||||||
%span.next
|
%span.next
|
||||||
= link_to_unless current_page.last?, safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), url, rel: 'next', remote: remote
|
= 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
|
The container tag
|
||||||
-# current_page: a page object for the currently displayed page
|
available local variables
|
||||||
-# total_pages: total number of pages
|
current_page: a page object for the currently displayed page
|
||||||
-# per_page: number of items to fetch per page
|
total_pages: total number of pages
|
||||||
-# remote: data-remote
|
per_page: number of items to fetch per page
|
||||||
-# paginator: the paginator that renders the pagination tags inside
|
remote: data-remote
|
||||||
|
paginator: the paginator that renders the pagination tags inside
|
||||||
= paginator.render do
|
= paginator.render do
|
||||||
%nav.pagination
|
%nav.pagination
|
||||||
= prev_page_tag unless current_page.first?
|
= prev_page_tag unless current_page.first?
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
-# Link to the "Previous" page
|
-#
|
||||||
-# available local variables
|
Link to the "Previous" page
|
||||||
-# url: url to the previous page
|
available local variables
|
||||||
-# current_page: a page object for the currently displayed page
|
url: url to the previous page
|
||||||
-# total_pages: total number of pages
|
current_page: a page object for the currently displayed page
|
||||||
-# per_page: number of items to fetch per page
|
total_pages: total number of pages
|
||||||
-# remote: data-remote
|
per_page: number of items to fetch per page
|
||||||
|
remote: data-remote
|
||||||
%span.prev
|
%span.prev
|
||||||
= link_to_unless current_page.first?, safe_join([fa_icon('chevron-left'), t('pagination.prev')], ' '), url, rel: 'prev', remote: remote
|
= 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
|
.modal-layout__mastodon
|
||||||
%div
|
%div
|
||||||
%img{alt: '', draggable: 'false', src: mascot_url }
|
%img{ alt: '', draggable: 'false', src: mascot_url }
|
||||||
|
|
||||||
= render template: 'layouts/application'
|
= render template: 'layouts/application'
|
||||||
|
|
|
@ -26,11 +26,11 @@
|
||||||
= "@#{status.account.pretty_acct}"
|
= "@#{status.account.pretty_acct}"
|
||||||
|
|
||||||
- if status.spoiler_text?
|
- if status.spoiler_text?
|
||||||
%div.auto-dir
|
.auto-dir
|
||||||
%p
|
%p
|
||||||
= status.spoiler_text
|
= status.spoiler_text
|
||||||
|
|
||||||
%div.auto-dir
|
.auto-dir
|
||||||
= status_content_format(status)
|
= status_content_format(status)
|
||||||
|
|
||||||
- if status.ordered_media_attachments.size > 0
|
- if status.ordered_media_attachments.size > 0
|
||||||
|
|
|
@ -3,5 +3,5 @@
|
||||||
%p= t('doorkeeper.authorizations.show.title')
|
%p= t('doorkeeper.authorizations.show.title')
|
||||||
.input-copy
|
.input-copy
|
||||||
.input-copy__wrapper
|
.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')
|
%button{ type: :button }= t('generic.copy')
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
= link_to t('doorkeeper.applications.index.new'), new_settings_application_path, class: 'button'
|
= link_to t('doorkeeper.applications.index.new'), new_settings_application_path, class: 'button'
|
||||||
|
|
||||||
- if @applications.empty?
|
- if @applications.empty?
|
||||||
%div.muted-hint.center-text=t 'doorkeeper.applications.index.empty'
|
.muted-hint.center-text= t 'doorkeeper.applications.index.empty'
|
||||||
- else
|
- else
|
||||||
.table-wrapper
|
.table-wrapper
|
||||||
%table.table
|
%table.table
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
%td
|
%td
|
||||||
%code= @application.secret
|
%code= @application.secret
|
||||||
%tr
|
%tr
|
||||||
%th{ rowspan: 2}= t('applications.your_token')
|
%th{ rowspan: 2 }= t('applications.your_token')
|
||||||
%td
|
%td
|
||||||
%code= current_user.token_for_app(@application).token
|
%code= current_user.token_for_app(@application).token
|
||||||
%tr
|
%tr
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
%hr.spacer/
|
%hr.spacer/
|
||||||
|
|
||||||
- if @login_activities.empty?
|
- if @login_activities.empty?
|
||||||
%div.muted-hint.center-text
|
.muted-hint.center-text
|
||||||
= t 'login_activities.empty'
|
= t 'login_activities.empty'
|
||||||
- else
|
- else
|
||||||
.announcements-list
|
.announcements-list
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
- thumbnail = @instance_presenter.thumbnail
|
- 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 }/
|
%meta{ name: 'description', content: description }/
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
%span.poll__chart
|
%span.poll__chart
|
||||||
- else
|
- else
|
||||||
%label.poll__option><
|
%label.poll__option><
|
||||||
%span.poll__input{ class: poll.multiple? ? 'checkbox' : nil}><
|
%span.poll__input{ class: poll.multiple? ? 'checkbox' : nil }><
|
||||||
%span.poll__option__text
|
%span.poll__option__text
|
||||||
= prerender_custom_emojis(h(option.title), status.emojis)
|
= prerender_custom_emojis(h(option.title), status.emojis)
|
||||||
.poll__footer
|
.poll__footer
|
||||||
|
|
|
@ -12,7 +12,7 @@ class ActivityPub::DistributePollUpdateWorker
|
||||||
|
|
||||||
return if @status.preloadable_poll.nil? || @status.local_only?
|
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]
|
[payload, @account.id, inbox_url]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ class ActivityPub::MoveDistributionWorker
|
||||||
@migration = AccountMigration.find(migration_id)
|
@migration = AccountMigration.find(migration_id)
|
||||||
@account = @migration.account
|
@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]
|
[signed_payload, @account.id, inbox_url]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ class ActivityPub::RawDistributionWorker
|
||||||
def distribute!
|
def distribute!
|
||||||
return if inboxes.empty?
|
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]
|
[payload, source_account_id, inbox_url, options]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,9 @@ require_relative '../config/boot'
|
||||||
require_relative '../lib/cli'
|
require_relative '../lib/cli'
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Mastodon::CLI.start(ARGV)
|
Chewy.strategy(:mastodon) do
|
||||||
|
Mastodon::CLI.start(ARGV)
|
||||||
|
end
|
||||||
rescue Interrupt
|
rescue Interrupt
|
||||||
exit(130)
|
exit(130)
|
||||||
end
|
end
|
||||||
|
|
|
@ -19,7 +19,6 @@ Chewy.settings = {
|
||||||
# cycle, which takes care of checking if Elasticsearch is enabled
|
# cycle, which takes care of checking if Elasticsearch is enabled
|
||||||
# or not. However, mind that for the Rails console, the :urgent
|
# or not. However, mind that for the Rails console, the :urgent
|
||||||
# strategy is set automatically with no way to override it.
|
# strategy is set automatically with no way to override it.
|
||||||
Chewy.root_strategy = :mastodon
|
|
||||||
Chewy.request_strategy = :mastodon
|
Chewy.request_strategy = :mastodon
|
||||||
Chewy.use_after_commit_callbacks = false
|
Chewy.use_after_commit_callbacks = false
|
||||||
|
|
||||||
|
|
|
@ -1159,8 +1159,6 @@ an:
|
||||||
index:
|
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.
|
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
|
title: Publicacions filtradas
|
||||||
footer:
|
|
||||||
trending_now: Tendencia agora
|
|
||||||
generic:
|
generic:
|
||||||
all: Totz
|
all: Totz
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1214,8 +1214,6 @@ ar:
|
||||||
index:
|
index:
|
||||||
hint: ينطبق الفلتر هذا على اختيار المنشورات الفردية بغض النظر عن المعايير الأخرى. يمكنك إضافة المزيد من المنشورات إلى هذا الفلتر من واجهة الويب.
|
hint: ينطبق الفلتر هذا على اختيار المنشورات الفردية بغض النظر عن المعايير الأخرى. يمكنك إضافة المزيد من المنشورات إلى هذا الفلتر من واجهة الويب.
|
||||||
title: الرسائل المصفّاة
|
title: الرسائل المصفّاة
|
||||||
footer:
|
|
||||||
trending_now: المتداولة الآن
|
|
||||||
generic:
|
generic:
|
||||||
all: الكل
|
all: الكل
|
||||||
changes_saved_msg: تم حفظ التعديلات بنجاح!
|
changes_saved_msg: تم حفظ التعديلات بنجاح!
|
||||||
|
|
|
@ -601,8 +601,6 @@ ast:
|
||||||
title: Peñeres
|
title: Peñeres
|
||||||
new:
|
new:
|
||||||
title: Amestar una peñera
|
title: Amestar una peñera
|
||||||
footer:
|
|
||||||
trending_now: En tendencia
|
|
||||||
generic:
|
generic:
|
||||||
all: Too
|
all: Too
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1238,8 +1238,6 @@ be:
|
||||||
index:
|
index:
|
||||||
hint: Гэты фільтр прымяняецца для выбару асобных допісаў незалежна ад іншых крытэрыяў. Вы можаце дадаць больш допісаў у гэты фільтр з вэб-інтэрфейсу.
|
hint: Гэты фільтр прымяняецца для выбару асобных допісаў незалежна ад іншых крытэрыяў. Вы можаце дадаць больш допісаў у гэты фільтр з вэб-інтэрфейсу.
|
||||||
title: Адфільтраваныя допісы
|
title: Адфільтраваныя допісы
|
||||||
footer:
|
|
||||||
trending_now: Актуальнае
|
|
||||||
generic:
|
generic:
|
||||||
all: Усе
|
all: Усе
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ bg:
|
||||||
index:
|
index:
|
||||||
hint: Този филтър се прилага за избор на отделни публикации, независимо от други критерии. Може да добавите още публикации в този филтър от уебинтерфейса.
|
hint: Този филтър се прилага за избор на отделни публикации, независимо от други критерии. Може да добавите още публикации в този филтър от уебинтерфейса.
|
||||||
title: Филтрирани публикации
|
title: Филтрирани публикации
|
||||||
footer:
|
|
||||||
trending_now: Налагащи се сега
|
|
||||||
generic:
|
generic:
|
||||||
all: Всичко
|
all: Всичко
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ ca:
|
||||||
index:
|
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.
|
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
|
title: Tuts filtrats
|
||||||
footer:
|
|
||||||
trending_now: En tendència
|
|
||||||
generic:
|
generic:
|
||||||
all: Tot
|
all: Tot
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -744,8 +744,6 @@ ckb:
|
||||||
title: فلتەرەکان
|
title: فلتەرەکان
|
||||||
new:
|
new:
|
||||||
title: زیادکردنی فلتەری نوێ
|
title: زیادکردنی فلتەری نوێ
|
||||||
footer:
|
|
||||||
trending_now: هەوادارانی ئێستا
|
|
||||||
generic:
|
generic:
|
||||||
all: هەموو
|
all: هەموو
|
||||||
changes_saved_msg: گۆڕانکاریەکان بە سەرکەوتوویی هەڵگیرا!
|
changes_saved_msg: گۆڕانکاریەکان بە سەرکەوتوویی هەڵگیرا!
|
||||||
|
|
|
@ -704,8 +704,6 @@ co:
|
||||||
title: Filtri
|
title: Filtri
|
||||||
new:
|
new:
|
||||||
title: Aghjunghje un novu filtru
|
title: Aghjunghje un novu filtru
|
||||||
footer:
|
|
||||||
trending_now: Tindenze d'avà
|
|
||||||
generic:
|
generic:
|
||||||
all: Tuttu
|
all: Tuttu
|
||||||
changes_saved_msg: Cambiamenti salvati!
|
changes_saved_msg: Cambiamenti salvati!
|
||||||
|
|
|
@ -1213,8 +1213,6 @@ cs:
|
||||||
index:
|
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í.
|
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
|
title: Filtrované příspěvky
|
||||||
footer:
|
|
||||||
trending_now: Právě populární
|
|
||||||
generic:
|
generic:
|
||||||
all: Všechny
|
all: Všechny
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1280,8 +1280,6 @@ cy:
|
||||||
index:
|
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.
|
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
|
title: Postiadau wedi'u hidlo
|
||||||
footer:
|
|
||||||
trending_now: Trendiau
|
|
||||||
generic:
|
generic:
|
||||||
all: Popeth
|
all: Popeth
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1192,8 +1192,6 @@ da:
|
||||||
index:
|
index:
|
||||||
hint: Dette filter gælder for udvalgte, individuelle indlæg uanset andre kriterier. Flere indlæg kan føjes til filteret via webfladen.
|
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
|
title: Filtrerede indlæg
|
||||||
footer:
|
|
||||||
trending_now: Trender lige nu
|
|
||||||
generic:
|
generic:
|
||||||
all: Alle
|
all: Alle
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ de:
|
||||||
index:
|
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.
|
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
|
title: Gefilterte Beiträge
|
||||||
footer:
|
|
||||||
trending_now: Jetzt in den Trends
|
|
||||||
generic:
|
generic:
|
||||||
all: Alle
|
all: Alle
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -875,8 +875,6 @@ el:
|
||||||
new:
|
new:
|
||||||
save: Αποθήκευση νέου φίλτρου
|
save: Αποθήκευση νέου φίλτρου
|
||||||
title: Πρόσθεσε νέο φίλτρο
|
title: Πρόσθεσε νέο φίλτρο
|
||||||
footer:
|
|
||||||
trending_now: Τάσεις
|
|
||||||
generic:
|
generic:
|
||||||
all: Όλα
|
all: Όλα
|
||||||
changes_saved_msg: Οι αλλαγές αποθηκεύτηκαν!
|
changes_saved_msg: Οι αλλαγές αποθηκεύτηκαν!
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ en:
|
||||||
index:
|
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.
|
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
|
title: Filtered posts
|
||||||
footer:
|
|
||||||
trending_now: Trending now
|
|
||||||
generic:
|
generic:
|
||||||
all: All
|
all: All
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1197,8 +1197,6 @@ eo:
|
||||||
index:
|
index:
|
||||||
hint: Ĉi tiu filtrilo kongruas kelkaj mesaĝoj sendepende de aliaj kriterioj.
|
hint: Ĉi tiu filtrilo kongruas kelkaj mesaĝoj sendepende de aliaj kriterioj.
|
||||||
title: Filtritaj mesaĝoj
|
title: Filtritaj mesaĝoj
|
||||||
footer:
|
|
||||||
trending_now: Nunaj furoraĵoj
|
|
||||||
generic:
|
generic:
|
||||||
all: Ĉio
|
all: Ĉio
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ es-AR:
|
||||||
index:
|
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.
|
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
|
title: Mensajes filtrados
|
||||||
footer:
|
|
||||||
trending_now: Tendencia ahora
|
|
||||||
generic:
|
generic:
|
||||||
all: Todas
|
all: Todas
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ es-MX:
|
||||||
index:
|
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.
|
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
|
title: Publicaciones filtradas
|
||||||
footer:
|
|
||||||
trending_now: Tendencia ahora
|
|
||||||
generic:
|
generic:
|
||||||
all: Todos
|
all: Todos
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ es:
|
||||||
index:
|
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.
|
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
|
title: Publicaciones filtradas
|
||||||
footer:
|
|
||||||
trending_now: Tendencia ahora
|
|
||||||
generic:
|
generic:
|
||||||
all: Todos
|
all: Todos
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ et:
|
||||||
index:
|
index:
|
||||||
hint: See filter kehtib üksikute postituste valimisel, sõltumata muudest kriteeriumidest. Sellesse filtrisse saab veebiliidese kaudu rohkem postitusi lisada.
|
hint: See filter kehtib üksikute postituste valimisel, sõltumata muudest kriteeriumidest. Sellesse filtrisse saab veebiliidese kaudu rohkem postitusi lisada.
|
||||||
title: Filtreeritud postitused
|
title: Filtreeritud postitused
|
||||||
footer:
|
|
||||||
trending_now: Praegu trendikad
|
|
||||||
generic:
|
generic:
|
||||||
all: Kõik
|
all: Kõik
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1198,8 +1198,6 @@ eu:
|
||||||
index:
|
index:
|
||||||
hint: Iragazki honek banako bidalketei eragiten die, beste kriterioak badaude ere. Bidalketa gehiago gehitu ditzakezu iragazkira web interfazetik.
|
hint: Iragazki honek banako bidalketei eragiten die, beste kriterioak badaude ere. Bidalketa gehiago gehitu ditzakezu iragazkira web interfazetik.
|
||||||
title: Iragazitako bidalketak
|
title: Iragazitako bidalketak
|
||||||
footer:
|
|
||||||
trending_now: Joera orain
|
|
||||||
generic:
|
generic:
|
||||||
all: Denak
|
all: Denak
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -890,8 +890,6 @@ fa:
|
||||||
title: پالایهها
|
title: پالایهها
|
||||||
new:
|
new:
|
||||||
title: افزودن پالایهٔ جدید
|
title: افزودن پالایهٔ جدید
|
||||||
footer:
|
|
||||||
trending_now: پرطرفدار
|
|
||||||
generic:
|
generic:
|
||||||
all: همه
|
all: همه
|
||||||
changes_saved_msg: تغییرات با موفقیت ذخیره شدند!
|
changes_saved_msg: تغییرات با موفقیت ذخیره شدند!
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ fi:
|
||||||
index:
|
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ä.
|
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
|
title: Suodatetut viestit
|
||||||
footer:
|
|
||||||
trending_now: Suosittua nyt
|
|
||||||
generic:
|
generic:
|
||||||
all: Kaikki
|
all: Kaikki
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ fo:
|
||||||
index:
|
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.
|
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
|
title: Filtreraðir postar
|
||||||
footer:
|
|
||||||
trending_now: Rák beint nú
|
|
||||||
generic:
|
generic:
|
||||||
all: Alt
|
all: Alt
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ fr-QC:
|
||||||
index:
|
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.
|
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
|
title: Messages filtrés
|
||||||
footer:
|
|
||||||
trending_now: Tendance en ce moment
|
|
||||||
generic:
|
generic:
|
||||||
all: Tous
|
all: Tous
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ fr:
|
||||||
index:
|
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.
|
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
|
title: Messages filtrés
|
||||||
footer:
|
|
||||||
trending_now: Tendance en ce moment
|
|
||||||
generic:
|
generic:
|
||||||
all: Tous
|
all: Tous
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ fy:
|
||||||
index:
|
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.
|
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
|
title: Filtere berjochten
|
||||||
footer:
|
|
||||||
trending_now: Trends
|
|
||||||
generic:
|
generic:
|
||||||
all: Alle
|
all: Alle
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1225,8 +1225,6 @@ gd:
|
||||||
index:
|
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.
|
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
|
title: Postaichean criathraichte
|
||||||
footer:
|
|
||||||
trending_now: A’ treandadh an-dràsta
|
|
||||||
generic:
|
generic:
|
||||||
all: Na h-uile
|
all: Na h-uile
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ gl:
|
||||||
index:
|
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.
|
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
|
title: Publicacións filtradas
|
||||||
footer:
|
|
||||||
trending_now: Tendencia agora
|
|
||||||
generic:
|
generic:
|
||||||
all: Todo
|
all: Todo
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1238,8 +1238,6 @@ he:
|
||||||
index:
|
index:
|
||||||
hint: סנן זה חל באופן של בחירת הודעות בודדות ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד הודעות לסנן זה ממנשק הווב.
|
hint: סנן זה חל באופן של בחירת הודעות בודדות ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד הודעות לסנן זה ממנשק הווב.
|
||||||
title: הודעות שסוננו
|
title: הודעות שסוננו
|
||||||
footer:
|
|
||||||
trending_now: נושאים חמים
|
|
||||||
generic:
|
generic:
|
||||||
all: הכל
|
all: הכל
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -99,8 +99,6 @@ hr:
|
||||||
title: Filteri
|
title: Filteri
|
||||||
new:
|
new:
|
||||||
title: Dodaj novi filter
|
title: Dodaj novi filter
|
||||||
footer:
|
|
||||||
trending_now: Popularno
|
|
||||||
generic:
|
generic:
|
||||||
all: Sve
|
all: Sve
|
||||||
changes_saved_msg: Izmjene su uspješno sačuvane!
|
changes_saved_msg: Izmjene su uspješno sačuvane!
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ hu:
|
||||||
index:
|
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.
|
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
|
title: Megszűrt bejegyzések
|
||||||
footer:
|
|
||||||
trending_now: Most felkapott
|
|
||||||
generic:
|
generic:
|
||||||
all: Mind
|
all: Mind
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -575,8 +575,6 @@ hy:
|
||||||
title: Ֆիլտրեր
|
title: Ֆիլտրեր
|
||||||
new:
|
new:
|
||||||
title: Ավելացնել ֆիլտր
|
title: Ավելացնել ֆիլտր
|
||||||
footer:
|
|
||||||
trending_now: Այժմ արդիական
|
|
||||||
generic:
|
generic:
|
||||||
all: Բոլորը
|
all: Բոլորը
|
||||||
changes_saved_msg: Փոփոխութիւնները յաջող պահուած են
|
changes_saved_msg: Փոփոխութիւնները յաջող պահուած են
|
||||||
|
|
|
@ -1133,8 +1133,6 @@ id:
|
||||||
index:
|
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.
|
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
|
title: Kiriman yang disaring
|
||||||
footer:
|
|
||||||
trending_now: Sedang tren
|
|
||||||
generic:
|
generic:
|
||||||
all: Semua
|
all: Semua
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1112,8 +1112,6 @@ io:
|
||||||
index:
|
index:
|
||||||
hint: Ca filtrilo aplikesas a selektita posti ne segun altra kriterio. Vu povas pozar plu multa posti a ca filtrilo de retintervizajo.
|
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
|
title: Filtrita posti
|
||||||
footer:
|
|
||||||
trending_now: Nuna tendenco
|
|
||||||
generic:
|
generic:
|
||||||
all: Omna
|
all: Omna
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1196,8 +1196,6 @@ is:
|
||||||
index:
|
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.
|
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
|
title: Síaðar færslur
|
||||||
footer:
|
|
||||||
trending_now: Í umræðunni núna
|
|
||||||
generic:
|
generic:
|
||||||
all: Allt
|
all: Allt
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1198,8 +1198,6 @@ it:
|
||||||
index:
|
index:
|
||||||
hint: Questo filtro si applica a singoli post indipendentemente da altri criteri. Puoi aggiungere più post a questo filtro dall'interfaccia Web.
|
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
|
title: Post filtrati
|
||||||
footer:
|
|
||||||
trending_now: Di tendenza ora
|
|
||||||
generic:
|
generic:
|
||||||
all: Tutto
|
all: Tutto
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
|
@ -1175,8 +1175,6 @@ ja:
|
||||||
index:
|
index:
|
||||||
hint: このフィルターは、他の条件に関係なく個々の投稿を選択する場合に適用されます。Webインターフェースからこのフィルターにさらに投稿を追加できます。
|
hint: このフィルターは、他の条件に関係なく個々の投稿を選択する場合に適用されます。Webインターフェースからこのフィルターにさらに投稿を追加できます。
|
||||||
title: フィルターされた投稿
|
title: フィルターされた投稿
|
||||||
footer:
|
|
||||||
trending_now: トレンドタグ
|
|
||||||
generic:
|
generic:
|
||||||
all: すべて
|
all: すべて
|
||||||
all_items_on_page_selected_html:
|
all_items_on_page_selected_html:
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue