(Grav GitSync) Automatic Commit from RealStickman
This commit is contained in:
parent
4e42b97315
commit
409c4c6120
@ -1,3 +1,11 @@
|
|||||||
|
# v1.3.2
|
||||||
|
## 12/02/2022
|
||||||
|
|
||||||
|
1. [](#improved)
|
||||||
|
* Various translation enhancements
|
||||||
|
1. [](#bugfix)
|
||||||
|
* Fixed frontend editing objects with urlencoded ids
|
||||||
|
|
||||||
# v1.3.1
|
# v1.3.1
|
||||||
## 09/08/2022
|
## 09/08/2022
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@
|
|||||||
{# FIXME: Search fields should be passed and individually customizable, right now defaulting to all fields selected #}
|
{# FIXME: Search fields should be passed and individually customizable, right now defaulting to all fields selected #}
|
||||||
{% set searchFields = searchFields|merge([key|replace({'.': '_'})]) %}
|
{% set searchFields = searchFields|merge([key|replace({'.': '_'})]) %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% set tableFields = tableFields|merge([{ name: '_actions_', title: 'Actions', titleClass: 'right' }]) %}
|
{% set tableFields = tableFields|merge([{ name: '_actions_', title: "PLUGIN_FLEX_OBJECTS.ACTION.ACTIONS"|tu, titleClass: 'right' }]) %}
|
||||||
|
|
||||||
|
|
||||||
{% set list = table.jsonSerialize %}
|
{% set list = table.jsonSerialize %}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
name: Flex Objects
|
name: Flex Objects
|
||||||
slug: flex-objects
|
slug: flex-objects
|
||||||
type: plugin
|
type: plugin
|
||||||
version: 1.3.1
|
version: 1.3.2
|
||||||
description: Flex Objects plugin allows you to manage Flex Objects in Grav Admin.
|
description: Flex Objects plugin allows you to manage Flex Objects in Grav Admin.
|
||||||
icon: list-alt
|
icon: list-alt
|
||||||
author:
|
author:
|
||||||
|
@ -261,7 +261,7 @@ class FlexObjectsPlugin extends Plugin
|
|||||||
if (!isset($form['flex']['key']) && $edit === true) {
|
if (!isset($form['flex']['key']) && $edit === true) {
|
||||||
/** @var Route $route */
|
/** @var Route $route */
|
||||||
$route = $this->grav['route'];
|
$route = $this->grav['route'];
|
||||||
$id = $route->getGravParam('id');
|
$id = rawurldecode($route->getGravParam('id'));
|
||||||
if (null !== $id) {
|
if (null !== $id) {
|
||||||
$form['flex']['key'] = $id;
|
$form['flex']['key'] = $id;
|
||||||
$event['form'] = $form;
|
$event['form'] = $form;
|
||||||
|
@ -13,6 +13,7 @@ PLUGIN_FLEX_OBJECTS:
|
|||||||
DIRECTORIES: "Verzeichnisse"
|
DIRECTORIES: "Verzeichnisse"
|
||||||
CSV: "CSV"
|
CSV: "CSV"
|
||||||
PARENTS: "Eltern"
|
PARENTS: "Eltern"
|
||||||
|
NEW: "Neu"
|
||||||
|
|
||||||
CONTROLLER:
|
CONTROLLER:
|
||||||
TASK_DELETE_SUCCESS: 'Eintrag erfolgreich gelöscht'
|
TASK_DELETE_SUCCESS: 'Eintrag erfolgreich gelöscht'
|
||||||
@ -35,6 +36,7 @@ PLUGIN_FLEX_OBJECTS:
|
|||||||
ADVANCED_OPTIONS: "Erweiterte Optionen"
|
ADVANCED_OPTIONS: "Erweiterte Optionen"
|
||||||
APPLY_FILTERS: "Filter anwenden"
|
APPLY_FILTERS: "Filter anwenden"
|
||||||
RESET_FILTERS: "Filter zurücksetzen"
|
RESET_FILTERS: "Filter zurücksetzen"
|
||||||
|
ACTIONS: "Aktionen"
|
||||||
|
|
||||||
FILTER:
|
FILTER:
|
||||||
PAGE_ATTRIBUTES: "Seitenattribute"
|
PAGE_ATTRIBUTES: "Seitenattribute"
|
||||||
|
@ -30,13 +30,13 @@ PLUGIN_FLEX_OBJECTS:
|
|||||||
CREATE_NEW: Create New Item
|
CREATE_NEW: Create New Item
|
||||||
EDIT_ITEM: Edit Item
|
EDIT_ITEM: Edit Item
|
||||||
LIST_ITEMS: "List Items"
|
LIST_ITEMS: "List Items"
|
||||||
LIST_ITEM: List Items
|
|
||||||
DELETE_N: "Delete" # In some languages 'delete OBJECT' may need a special declination
|
DELETE_N: "Delete" # In some languages 'delete OBJECT' may need a special declination
|
||||||
REALLY_DELETE: "Are you sure you want to permanently delete the %s?"
|
REALLY_DELETE: "Are you sure you want to permanently delete the %s?"
|
||||||
SEARCH_PLACEHOLDER: "Search…"
|
SEARCH_PLACEHOLDER: "Search…"
|
||||||
ADVANCED_OPTIONS: "Advanced Options"
|
ADVANCED_OPTIONS: "Advanced Options"
|
||||||
APPLY_FILTERS: "Apply Filters"
|
APPLY_FILTERS: "Apply Filters"
|
||||||
RESET_FILTERS: "Reset to Defaults"
|
RESET_FILTERS: "Reset to Defaults"
|
||||||
|
ACTIONS: "Actions"
|
||||||
|
|
||||||
FILTER:
|
FILTER:
|
||||||
PAGE_ATTRIBUTES: "Page Attributes"
|
PAGE_ATTRIBUTES: "Page Attributes"
|
||||||
|
@ -30,13 +30,13 @@ PLUGIN_FLEX_OBJECTS:
|
|||||||
CREATE_NEW: "Crear nuevo ítem"
|
CREATE_NEW: "Crear nuevo ítem"
|
||||||
EDIT_ITEM: "Editar ítem"
|
EDIT_ITEM: "Editar ítem"
|
||||||
LIST_ITEMS: "Listar ítems"
|
LIST_ITEMS: "Listar ítems"
|
||||||
LIST_ITEM: "Listar ítem"
|
|
||||||
DELETE_N: "Eliminar"
|
DELETE_N: "Eliminar"
|
||||||
REALLY_DELETE: "¿Realmente quieres eliminar %s permanentemente?"
|
REALLY_DELETE: "¿Realmente quieres eliminar %s permanentemente?"
|
||||||
SEARCH_PLACEHOLDER: "Buscar…"
|
SEARCH_PLACEHOLDER: "Buscar…"
|
||||||
ADVANCED_OPTIONS: "Opciones avazadas"
|
ADVANCED_OPTIONS: "Opciones avazadas"
|
||||||
APPLY_FILTERS: "Aplicar filtros"
|
APPLY_FILTERS: "Aplicar filtros"
|
||||||
RESET_FILTERS: "Restablecer filtros"
|
RESET_FILTERS: "Restablecer filtros"
|
||||||
|
ACTIONS: "Acciones"
|
||||||
|
|
||||||
FILTER:
|
FILTER:
|
||||||
PAGE_ATTRIBUTES: "Atributos de página"
|
PAGE_ATTRIBUTES: "Atributos de página"
|
||||||
|
@ -30,13 +30,13 @@ PLUGIN_FLEX_OBJECTS:
|
|||||||
CREATE_NEW: 新しいデータを作成
|
CREATE_NEW: 新しいデータを作成
|
||||||
EDIT_ITEM: "データの編集"
|
EDIT_ITEM: "データの編集"
|
||||||
LIST_ITEMS: "データの一覧表示"
|
LIST_ITEMS: "データの一覧表示"
|
||||||
LIST_ITEM: データの一覧
|
|
||||||
DELETE_N: "削除" # In some languages 'delete OBJECT' may need a special declination
|
DELETE_N: "削除" # In some languages 'delete OBJECT' may need a special declination
|
||||||
REALLY_DELETE: "%s を削除します。復元はできませんがよろしいですか?"
|
REALLY_DELETE: "%s を削除します。復元はできませんがよろしいですか?"
|
||||||
SEARCH_PLACEHOLDER: "検索…"
|
SEARCH_PLACEHOLDER: "検索…"
|
||||||
ADVANCED_OPTIONS: "詳細設定"
|
ADVANCED_OPTIONS: "詳細設定"
|
||||||
APPLY_FILTERS: "フィルターを適用"
|
APPLY_FILTERS: "フィルターを適用"
|
||||||
RESET_FILTERS: "標準にリセットする"
|
RESET_FILTERS: "標準にリセットする"
|
||||||
|
ACTIONS: "アクション"
|
||||||
|
|
||||||
FILTER:
|
FILTER:
|
||||||
PAGE_ATTRIBUTES: "ページ属性"
|
PAGE_ATTRIBUTES: "ページ属性"
|
||||||
|
71
plugins/flex-objects/languages/nl.yaml
Normal file
71
plugins/flex-objects/languages/nl.yaml
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
PLUGIN_FLEX_OBJECTS:
|
||||||
|
PLUGIN_NAME: "Flex Objects"
|
||||||
|
PLUGIN_DESCRIPTION: "De Flex Objects plugin maakt het mogelijk om flexibele objecten te maken en te beheren."
|
||||||
|
|
||||||
|
TITLE: Flex Objects
|
||||||
|
TYPES_TITLE: Mappen
|
||||||
|
AFTER_SAVE: Na opslaan…
|
||||||
|
LIST_INFO: '{from} tot {to} van {total} items weergegeven'
|
||||||
|
EMPTY_RESULT: Deze zoekopdracht geeft geen resultaat
|
||||||
|
|
||||||
|
USE_BUILT_IN_CSS: "Gebruik ingebouwde CSS"
|
||||||
|
EXTRA_ADMIN_TWIG_PATH: "Extra Admin Twig pad"
|
||||||
|
DIRECTORIES: "Mappen"
|
||||||
|
CSV: "CSV"
|
||||||
|
PARENTS: "Ouders"
|
||||||
|
|
||||||
|
CONTROLLER:
|
||||||
|
TASK_DELETE_SUCCESS: 'Item succesvol verwijderd'
|
||||||
|
TASK_DELETE_FAILURE: 'Item verwijderen mislukt: %s'
|
||||||
|
TASK_NEW_FOLDER_SUCCESS: 'Map succesvol aangemaakt'
|
||||||
|
TASK_COPY_SUCCESS: 'Kopie succesvol aangemaakt'
|
||||||
|
TASK_COPY_FAILURE: 'Kopie aanmaken mislukt: %s'
|
||||||
|
TASK_SAVE_SUCCESS: 'Item succesvol opgeslagen'
|
||||||
|
TASK_SAVE_FAILURE: 'Item opslaan mislukt: %s'
|
||||||
|
TASK_CONFIGURE_SUCCESS: 'Configuratie succesvol opgeslagen'
|
||||||
|
TASK_CONFIGURE_FAILURE: 'Configuratie opslaan mislukt: %s'
|
||||||
|
|
||||||
|
ACTION:
|
||||||
|
CREATE_NEW: Nieuw item aanmaken
|
||||||
|
EDIT_ITEM: Item bewerken
|
||||||
|
LIST_ITEMS: Items weergeven
|
||||||
|
DELETE_N: "Verwijderen"
|
||||||
|
REALLY_DELETE: "Weet je zeker dat je %s permanent wilt verwijderen?"
|
||||||
|
SEARCH_PLACEHOLDER: "Zoeken…"
|
||||||
|
ADVANCED_OPTIONS: "Geavanceerde opties"
|
||||||
|
APPLY_FILTERS: "Filters toepassen"
|
||||||
|
RESET_FILTERS: "Filters resetten"
|
||||||
|
|
||||||
|
FILTER:
|
||||||
|
PAGE_ATTRIBUTES: "Pagina attributen"
|
||||||
|
PAGE_TYPES: "Pagina types"
|
||||||
|
MODULAR_TYPES: "Modulaire types"
|
||||||
|
|
||||||
|
LANGUAGE:
|
||||||
|
USING_DEFAULT: "<b>Standaard</b> taalbestand in gebruik."
|
||||||
|
UNUSED_DEFAULT: "Ongebruikt <b>standaard</b> taalbestand aanwezig."
|
||||||
|
USING_OVERRIDE: "<b>%s</b> taalbestand in gebruik."
|
||||||
|
NOT_TRANSLATED_YET: "Deze pagina is nog niet vertaald naar <i class=\"fa fa-flag-o\"></i> <b>%s</b>!"
|
||||||
|
NO_FALLBACK_FOUND: "Geen fallback taalbestand gevonden."
|
||||||
|
FALLING_BACK: "Terugvallen op <b>%s</b> taalbestand."
|
||||||
|
|
||||||
|
STATE:
|
||||||
|
LOADING: "Laden…"
|
||||||
|
CREATED_SUCCESSFULLY: "Succesvol aangemaakt"
|
||||||
|
UPDATED_SUCCESSFULLY: "Succesvol bijgewerkt"
|
||||||
|
DELETED_SUCCESSFULLY: "Succesvol verwijderd"
|
||||||
|
EDITING_DRAFT: "Je bewerkt een concept."
|
||||||
|
NOT_CREATED_YET: "Deze pagina bestaat niet, totdat je hem opslaat."
|
||||||
|
|
||||||
|
ERROR:
|
||||||
|
BAD_DIRECTORY: "Niet bestaande map"
|
||||||
|
PAGE_NOT_FOUND: "Pagina niet gevonden"
|
||||||
|
PAGE_NOT_EXIST: "Oeps! Deze pagina bestaat niet."
|
||||||
|
PAGE_FORBIDDEN: "Oeps! Je hebt geen toegang tot deze pagina."
|
||||||
|
LAYOUT_NOT_FOUND: "Object layout '%s' niet gevonden."
|
||||||
|
BLUEPRINT_NO_LIST: "De blueprint van <i>%s</i> bevat geen velddata of lijst pagina overschrijving."
|
||||||
|
BLUEPRINT_NO_LIST_ADVISE: "Voeg een <i>list</i> sectie toe aan de blueprint of overschrijf de <i>list</i> pagina in de configuratie."
|
||||||
|
BLUEPRINT_NO_LIST_TEMPLATE: "Maak een template bestand voor dit type aan in <b>flex-objects/types/%s/list.html.twig</b>"
|
||||||
|
LIST_EMPTY: "Er zijn geen items gevonden."
|
||||||
|
LIST_EMPTY_ADD: "Er zijn geen items op dit moment. Klik op de knop <a href=\"%s\">Toevoegen</a> om een nieuw item aan te maken."
|
||||||
|
NO_FLEX_DIRECTORIES: "Geen Flex Object mappen gedefinieerd."
|
@ -1,3 +1,9 @@
|
|||||||
|
# v7.1.1
|
||||||
|
## 11/29/2022
|
||||||
|
|
||||||
|
1. [](#bugfix)
|
||||||
|
* Fix missing blueprint entries for Turnstile configuration [#583](https://github.com/getgrav/grav-plugin-form/issues/583)
|
||||||
|
|
||||||
# v7.1.0
|
# v7.1.0
|
||||||
## 11/16/2022
|
## 11/16/2022
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
name: Form
|
name: Form
|
||||||
slug: form
|
slug: form
|
||||||
type: plugin
|
type: plugin
|
||||||
version: 7.1.0
|
version: 7.1.1
|
||||||
description: Enables forms handling and processing
|
description: Enables forms handling and processing
|
||||||
icon: check-square
|
icon: check-square
|
||||||
author:
|
author:
|
||||||
@ -197,6 +197,29 @@ form:
|
|||||||
help: PLUGIN_FORM.RECAPTCHA_SECRET_KEY_HELP
|
help: PLUGIN_FORM.RECAPTCHA_SECRET_KEY_HELP
|
||||||
default: ''
|
default: ''
|
||||||
|
|
||||||
|
turnstile_captcha:
|
||||||
|
type: section
|
||||||
|
title: PLUGIN_FORM.TURNSTILE_CAPTCHA
|
||||||
|
|
||||||
|
fields:
|
||||||
|
turnstile.theme:
|
||||||
|
type: select
|
||||||
|
label: PLUGIN_FORM.RECAPTCHA_THEME
|
||||||
|
default: light
|
||||||
|
options:
|
||||||
|
light: PLUGIN_FORM.RECAPTCHA_THEME_LIGHT
|
||||||
|
dark: PLUGIN_FORM.RECAPTCHA_THEME_DARK
|
||||||
|
turnstile.site_key:
|
||||||
|
type: text
|
||||||
|
label: PLUGIN_FORM.RECAPTCHA_SITE_KEY
|
||||||
|
help: PLUGIN_FORM.RECAPTCHA_SITE_KEY_HELP
|
||||||
|
default: ''
|
||||||
|
turnstile.secret_key:
|
||||||
|
type: text
|
||||||
|
label: PLUGIN_FORM.RECAPTCHA_SECRET_KEY
|
||||||
|
help: PLUGIN_FORM.RECAPTCHA_SECRET_KEY_HELP
|
||||||
|
default: ''
|
||||||
|
|
||||||
basic_captcha:
|
basic_captcha:
|
||||||
type: section
|
type: section
|
||||||
title: PLUGIN_FORM.BASIC_CAPTCHA
|
title: PLUGIN_FORM.BASIC_CAPTCHA
|
||||||
|
@ -19,7 +19,6 @@ recaptcha:
|
|||||||
site_key:
|
site_key:
|
||||||
secret_key:
|
secret_key:
|
||||||
turnstile:
|
turnstile:
|
||||||
widget: managed # options: [managed | non-interactive | invisible]
|
|
||||||
theme: light # options: [light | dark]
|
theme: light # options: [light | dark]
|
||||||
site_key:
|
site_key:
|
||||||
secret_key:
|
secret_key:
|
||||||
|
@ -87,6 +87,7 @@ en:
|
|||||||
BASIC_CAPTCHA_MATH_MIN: "Minimum number"
|
BASIC_CAPTCHA_MATH_MIN: "Minimum number"
|
||||||
BASIC_CAPTCHA_MATH_MAX: "Maximum number"
|
BASIC_CAPTCHA_MATH_MAX: "Maximum number"
|
||||||
BASIC_CAPTCHA_MATH_OPERATORS: "Mathematical operators (randomized)"
|
BASIC_CAPTCHA_MATH_OPERATORS: "Mathematical operators (randomized)"
|
||||||
|
TURNSTILE_CAPTCHA: "Cloudflare Turnstile Captcha"
|
||||||
|
|
||||||
eu:
|
eu:
|
||||||
PLUGIN_FORM:
|
PLUGIN_FORM:
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
# v3.1.0
|
||||||
|
## 12/12/2022
|
||||||
|
|
||||||
|
1. [](#new)
|
||||||
|
* Using blocks in `partials/langswitcher.html.twig` to make it easier to extend without having to copy the logic
|
||||||
|
|
||||||
# v3.0.2
|
# v3.0.2
|
||||||
## 10/05/2022
|
## 10/05/2022
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
name: LangSwitcher
|
name: LangSwitcher
|
||||||
version: 3.0.2
|
version: 3.1.0
|
||||||
description: LangSwitcher is a [Grav](https://github.com/getgrav/grav) plugin that provides native language text links to switch between [multiple languages](http://learn.getgrav.org/content/multi-language) in Grav **v0.9.30** or greater.
|
description: LangSwitcher is a [Grav](https://github.com/getgrav/grav) plugin that provides native language text links to switch between [multiple languages](http://learn.getgrav.org/content/multi-language) in Grav **v0.9.30** or greater.
|
||||||
icon: globe
|
icon: globe
|
||||||
author:
|
author:
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
{{ block('language_block_start') }}
|
||||||
|
{% set display_format = display_format ?? config.get('plugins.langswitcher.language_display', 'long') %}
|
||||||
|
|
||||||
|
{% for language in langswitcher.languages %}
|
||||||
|
{% set active_class = '' %}
|
||||||
|
{% set show_language = true %}
|
||||||
|
{% if language == langswitcher.current %}
|
||||||
|
{% set active_class = 'active' %}
|
||||||
|
{% endif %}
|
||||||
|
{% if langswitcher.translated_routes[language] %}
|
||||||
|
{% set lang_url = langswitcher.translated_routes[language] ~ page.urlExtension %}
|
||||||
|
{% else %}
|
||||||
|
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
|
||||||
|
{% set lang_url = base_lang_url ~ langswitcher.page_route ~ page.urlExtension %}
|
||||||
|
{% endif %}
|
||||||
|
{% set untranslated_pages_behavior = grav.config.plugins.langswitcher.untranslated_pages_behavior %}
|
||||||
|
{% if untranslated_pages_behavior != 'none' %}
|
||||||
|
{% set translated_page = langswitcher.translated_pages[language] %}
|
||||||
|
{% if (not translated_page) or (not translated_page.published) %}
|
||||||
|
{% if untranslated_pages_behavior == 'redirect' %}
|
||||||
|
{% set lang_url = url('/') %}
|
||||||
|
{% elseif untranslated_pages_behavior == 'hide' %}
|
||||||
|
{% set show_language = false %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{{ block('language_item') }}
|
||||||
|
{% endfor %}
|
||||||
|
{{ block('language_block_end') }}
|
@ -1,33 +1,15 @@
|
|||||||
|
{% extends 'partials/langswitcher-logic.html.twig' %}
|
||||||
|
|
||||||
|
{% block language_block_start %}
|
||||||
<ul class="langswitcher">
|
<ul class="langswitcher">
|
||||||
{% set display_format = display_format ?? config.get('plugins.langswitcher.language_display', 'long') %}
|
{% endblock %}
|
||||||
|
|
||||||
{% for language in langswitcher.languages %}
|
{% block language_block_end %}
|
||||||
{% set active_class = '' %}
|
</ul>
|
||||||
{% set show_language = true %}
|
{% endblock %}
|
||||||
{% if language == langswitcher.current %}
|
|
||||||
{% set active_class = 'active' %}
|
|
||||||
{% endif %}
|
|
||||||
{% if langswitcher.translated_routes[language] %}
|
|
||||||
{% set lang_url = langswitcher.translated_routes[language] ~ page.urlExtension %}
|
|
||||||
{% else %}
|
|
||||||
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
|
|
||||||
{% set lang_url = base_lang_url ~ langswitcher.page_route ~ page.urlExtension %}
|
|
||||||
{% endif %}
|
|
||||||
{% set untranslated_pages_behavior = grav.config.plugins.langswitcher.untranslated_pages_behavior %}
|
|
||||||
{% if untranslated_pages_behavior != 'none' %}
|
|
||||||
{% set translated_page = langswitcher.translated_pages[language] %}
|
|
||||||
{% if (not translated_page) or (not translated_page.published) %}
|
|
||||||
{% if untranslated_pages_behavior == 'redirect' %}
|
|
||||||
{% set lang_url = url('/') %}
|
|
||||||
{% elseif untranslated_pages_behavior == 'hide' %}
|
|
||||||
{% set show_language = false %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
|
{% block language_item %}
|
||||||
{% if show_language %}
|
{% if show_language %}
|
||||||
<li><a href="{{ lang_url ~ uri.params ~ (uri.query|length > 1 ? '?' ~ uri.query) }}" class="external {{ active_class }}">{% include 'partials/langswitcher-' ~ display_format ~ '.html.twig' %}</a></li>
|
<li><a href="{{ lang_url ~ uri.params ~ (uri.query|length > 1 ? '?' ~ uri.query) }}" class="external {{ active_class }}">{% include 'partials/langswitcher-' ~ display_format ~ '.html.twig' %}</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endblock %}
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
|
Loading…
Reference in New Issue
Block a user