Commit 8334649c authored by Shpuld Shpludson's avatar Shpuld Shpludson
Browse files

Merge branch 'develop' into feat/report-notification

parents 54def7d2 11963de2
Pipeline #34470 passed with stages
in 8 minutes and 35 seconds
......@@ -3,8 +3,13 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased]
### Fixed
- Button to remove uploaded media in post status form is now properly placed and sized.
- Fixed shoutbox not working in mobile layout
## [2.2.3] - 2021-01-18
### Added
- Added Report button to status ellipsis menu for easier reporting
......@@ -12,6 +17,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Follows/Followers tabs on user profiles now display the content properly.
- Handle punycode in screen names
### Changed
- Don't filter own posts when they hit your wordfilter
- Language picker now uses native language names
## [2.2.2] - 2020-12-22
### Added
- Mouseover titles for emojis in reaction picker
......
......@@ -178,6 +178,13 @@ a {
&.-fullwidth {
width: 100%;
}
&.-hover-highlight {
&:hover svg {
color: $fallback--lightText;
color: var(--lightText, $fallback--lightText);
}
}
}
input, textarea, .select, .input {
......
......@@ -12,11 +12,11 @@
v-model="language"
>
<option
v-for="(langCode, i) in languageCodes"
:key="langCode"
:value="langCode"
v-for="lang in languages"
:key="lang.code"
:value="lang.code"
>
{{ languageNames[i] }}
{{ lang.name }}
</option>
</select>
<FAIcon
......@@ -29,6 +29,7 @@
<script>
import languagesObject from '../../i18n/messages'
import localeService from '../../services/locale/locale.service.js'
import ISO6391 from 'iso-639-1'
import _ from 'lodash'
import { library } from '@fortawesome/fontawesome-svg-core'
......@@ -42,12 +43,8 @@ library.add(
export default {
computed: {
languageCodes () {
return languagesObject.languages
},
languageNames () {
return _.map(this.languageCodes, this.getLanguageName)
languages () {
return _.map(languagesObject.languages, (code) => ({ code: code, name: this.getLanguageName(code) })).sort((a, b) => a.name.localeCompare(b.name))
},
language: {
......@@ -61,12 +58,13 @@ export default {
methods: {
getLanguageName (code) {
const specialLanguageNames = {
'ja': 'Japanese (日本語)',
'ja_easy': 'Japanese (やさしいにほんご)',
'zh': 'Simplified Chinese (简体中文)',
'zh_Hant': 'Traditional Chinese (繁體中文)'
'ja_easy': 'やさしいにほんご',
'zh': '简体中文',
'zh_Hant': '繁體中文'
}
return specialLanguageNames[code] || ISO6391.getName(code)
const languageName = specialLanguageNames[code] || ISO6391.getNativeName(code)
const browserLocale = localeService.internalToBrowserLocale(code)
return languageName.charAt(0).toLocaleUpperCase(browserLocale) + languageName.slice(1)
}
}
}
......
......@@ -21,20 +21,17 @@
@keydown.enter.stop.prevent="nextOption(index)"
>
</div>
<div
<button
v-if="options.length > 2"
class="icon-container"
class="delete-option button-unstyled -hover-highlight"
@click="deleteOption(index)"
>
<FAIcon
icon="times"
class="delete"
@click="deleteOption(index)"
/>
</div>
<FAIcon icon="times" />
</button>
</div>
<a
<button
v-if="options.length < maxOptions"
class="add-option faint"
class="add-option faint button-unstyled -hover-highlight"
@click="addOption"
>
<FAIcon
......@@ -43,7 +40,7 @@
/>
{{ $t("polls.add_option") }}
</a>
</button>
<div class="poll-type-expiry">
<div
class="poll-type"
......@@ -116,7 +113,6 @@
align-self: flex-start;
padding-top: 0.25em;
padding-left: 0.1em;
cursor: pointer;
}
.poll-option {
......@@ -135,19 +131,11 @@
}
}
.icon-container {
.delete-option {
// Hack: Move the icon over the input box
width: 1.5em;
margin-left: -1.5em;
z-index: 1;
.delete {
cursor: pointer;
&:hover {
color: inherit;
}
}
}
.poll-type-expiry {
......
......@@ -302,11 +302,12 @@
:key="file.url"
class="media-upload-wrapper"
>
<FAIcon
class="fa-scale-110 fa-old-padding"
icon="times"
<button
class="button-unstyled hider"
@click="removeMediaFile(file)"
/>
>
<FAIcon icon="times" />
</button>
<attachment
:attachment="file"
:set-media="() => $store.dispatch('setMedia', newStatus.files)"
......@@ -516,26 +517,11 @@
}
.attachments .media-upload-wrapper {
padding: 0 0.5em;
position: relative;
.attachment {
margin: 0;
padding: 0;
position: relative;
}
.fa-scale-110 fa-old-padding {
position: absolute;
margin: 10px;
margin: .75em;
padding: .5em;
background: rgba(230,230,230,0.6);
z-index: 2;
color: black;
border-radius: $fallback--attachmentRadius;
border-radius: var(--attachmentRadius, $fallback--attachmentRadius);
font-weight: bold;
cursor: pointer;
}
}
......
......@@ -111,16 +111,17 @@
.profile-fields {
display: flex;
&>.emoji-input {
& > .emoji-input {
flex: 1 1 auto;
margin: 0 .2em .5em;
margin: 0 0.2em 0.5em;
min-width: 0;
}
&>.icon-container {
.delete-field {
width: 20px;
align-self: center;
margin: 0 .2em .5em;
margin: 0 0.2em 0.5em;
padding: 0 0.5em;
}
}
}
......@@ -124,24 +124,24 @@
:placeholder="$t('settings.profile_fields.value')"
>
</EmojiInput>
<div
class="icon-container"
<button
class="delete-field button-unstyled -hover-highlight"
@click="deleteField(i)"
>
<FAIcon
v-show="newFields.length > 1"
icon="times"
@click="deleteField(i)"
/>
</div>
</button>
</div>
<a
<button
v-if="newFields.length < maxFields"
class="add-field faint"
class="add-field faint button-unstyled -hover-highlight"
@click="addField"
>
<FAIcon icon="plus" />
{{ $t("settings.profile_fields.add_field") }}
</a>
</button>
</div>
<p>
<Checkbox v-model="bot">
......
......@@ -109,7 +109,7 @@
v-if="chat"
@click="toggleDrawer"
>
<router-link :to="{ name: 'chat' }">
<router-link :to="{ name: 'chat-panel' }">
<FAIcon
fixed-width
class="fa-scale-110 fa-old-padding"
......
......@@ -157,6 +157,7 @@ const Status = {
return muteWordHits(this.status, this.muteWords)
},
muted () {
if (this.statusoid.user.id === this.currentUser.id) return false
const { status } = this
const { reblog } = status
const relationship = this.$store.getters.relationship(status.user.id)
......
......@@ -83,7 +83,7 @@
v-if="!!visibleRole"
class="alert user-role"
>
{{ visibleRole }}
{{ $t(`user_card.roles.${visibleRole}`) }}
</span>
<span
v-if="user.bot"
......@@ -507,7 +507,6 @@
.user-role {
flex: none;
text-transform: capitalize;
color: $fallback--text;
color: var(--alertNeutralText, $fallback--text);
background-color: $fallback--fg;
......
......@@ -740,6 +740,10 @@
"quarantine": "Disallow user posts from federating",
"delete_user": "Delete user",
"delete_user_confirmation": "Are you absolutely sure? This action cannot be undone."
},
"roles": {
"admin": "Admin",
"moderator": "Moderator"
}
},
"user_profile": {
......
......@@ -30,7 +30,7 @@
"administration": "Amministrazione",
"back": "Indietro",
"interactions": "Interazioni",
"dms": "Messaggi diretti",
"dms": "Messaggi privati",
"user_search": "Ricerca utenti",
"search": "Ricerca",
"who_to_follow": "Chi seguire",
......@@ -44,7 +44,7 @@
"notifications": "Notifiche",
"read": "Letto!",
"broken_favorite": "Stato sconosciuto, lo sto cercando…",
"favorited_you": "ha gradito il tuo messaggio",
"favorited_you": "gradisce il tuo messaggio",
"load_older": "Carica notifiche precedenti",
"repeated_you": "ha condiviso il tuo messaggio",
"follow_request": "vuole seguirti",
......@@ -487,7 +487,11 @@
"follow_progress": "Richiedo…",
"follow_sent": "Richiesta inviata!",
"favorites": "Preferiti",
"message": "Contatta"
"message": "Contatta",
"roles": {
"moderator": "Moderatore",
"admin": "Amministratore"
}
},
"chat": {
"title": "Chat"
......@@ -495,7 +499,7 @@
"features_panel": {
"chat": "Chat",
"gopher": "Gopher",
"media_proxy": "Proxy multimedia",
"media_proxy": "Proxy allegati",
"scope_options": "Opzioni visibilità",
"text_limit": "Lunghezza massima",
"title": "Caratteristiche",
......@@ -505,7 +509,7 @@
},
"finder": {
"error_fetching_user": "Errore nel recupero dell'utente",
"find_user": "Trova utente"
"find_user": "Cerca utente"
},
"login": {
"login": "Accedi",
......@@ -515,18 +519,18 @@
"register": "Registrati",
"username": "Nome utente",
"description": "Accedi con OAuth",
"hint": "Accedi per partecipare alla discussione",
"hint": "Accedi per conversare",
"authentication_code": "Codice di autenticazione",
"enter_recovery_code": "Inserisci un codice di recupero",
"enter_two_factor_code": "Inserisci un codice two-factor",
"enter_two_factor_code": "Inserisci un codice 2FA",
"recovery_code": "Codice di recupero",
"heading": {
"totp": "Autenticazione two-factor",
"recovery": "Recupero two-factor"
"totp": "Autenticazione 2FA",
"recovery": "Recupero 2FA"
}
},
"post_status": {
"account_not_locked_warning": "Il tuo profilo non è {0}. Chiunque può seguirti e vedere i tuoi messaggi riservati ai tuoi seguaci.",
"account_not_locked_warning": "Il tuo profilo non è {0}. Chiunque può seguirti e vedere i tuoi messaggi per seguaci.",
"account_not_locked_warning_link": "protetto",
"attachments_sensitive": "Nascondi gli allegati",
"content_type": {
......@@ -536,7 +540,7 @@
"text/html": "HTML"
},
"content_warning": "Oggetto (facoltativo)",
"default": "Sono appena atterrato a Fiumicino.",
"default": "Sono appena atterrato a Città Laggiù.",
"direct_warning": "Questo post sarà visibile solo dagli utenti menzionati.",
"posting": "Sto pubblicando",
"scope": {
......@@ -611,13 +615,13 @@
"ftl_removal_desc": "Questa stanza rimuove le seguenti dalla sequenza globale:",
"media_removal": "Rimozione multimedia",
"media_removal_desc": "Questa istanza rimuove gli allegati dalle seguenti stanze:",
"media_nsfw": "Allegati oscurati forzatamente",
"media_nsfw": "Allegati oscurati d'ufficio",
"media_nsfw_desc": "Questa stanza oscura gli allegati dei messaggi provenienti da queste stanze:"
},
"mrf_policies": "Regole RM abilitate",
"mrf_policies_desc": "Le regole RM cambiano il comportamento federativo della stanza. Vigono le seguenti regole:"
},
"staff": "Equipaggio"
"staff": "Responsabili"
},
"domain_mute_card": {
"mute": "Zittisci",
......@@ -646,20 +650,20 @@
},
"polls": {
"add_poll": "Sondaggio",
"add_option": "Alternativa",
"add_option": "Aggiungi opzione",
"option": "Opzione",
"votes": "voti",
"vote": "Vota",
"type": "Tipo di sondaggio",
"single_choice": "Scelta singola",
"multiple_choices": "Scelta multipla",
"expiry": "Scadenza",
"expires_in": "Scade fra {0}",
"expired": "Scaduto {0} fa",
"expiry": "Età",
"expires_in": "Chiude fra {0}",
"expired": "Chiuso {0} fa",
"not_enough_options": "Aggiungi altre risposte"
},
"interactions": {
"favs_repeats": "Condivisi e preferiti",
"favs_repeats": "Condivisi e Graditi",
"load_older": "Carica vecchie interazioni",
"moves": "Utenti migrati",
"follows": "Nuovi seguìti"
......@@ -668,8 +672,8 @@
"load_all": "Carico tutti i {emojiAmount} emoji",
"load_all_hint": "Primi {saneAmount} emoji caricati, caricarli tutti potrebbe causare rallentamenti.",
"unicode": "Emoji Unicode",
"custom": "Emoji personale",
"add_emoji": "Inserisci Emoji",
"custom": "Emoji della stanza",
"add_emoji": "Inserisci emoji",
"search_emoji": "Cerca un emoji",
"keep_open": "Tieni aperto il menù",
"emoji": "Emoji",
......@@ -684,7 +688,7 @@
"remote_user_resolver": "Cerca utenti remoti"
},
"errors": {
"storage_unavailable": "Pleroma non ha potuto accedere ai dati del tuo browser. Le tue credenziali o le tue impostazioni locali non potranno essere salvate e potresti incontrare strani errori. Prova ad abilitare i cookie."
"storage_unavailable": "Pleroma non può accedere ai dati del tuo browser. Il tuo accesso o le tue impostazioni non saranno salvate e potresti incontrare strani errori. Prova ad abilitare i cookie."
},
"status": {
"pinned": "Intestato",
......
This diff is collapsed.
......@@ -183,14 +183,14 @@
"change_password": "Сменить пароль",
"change_password_error": "Произошла ошибка при попытке изменить пароль.",
"changed_password": "Пароль изменён успешно!",
"collapse_subject": "Сворачивать посты с темой",
"collapse_subject": "Сворачивать статусы с темой",
"confirm_new_password": "Подтверждение нового пароля",
"current_avatar": "Текущий аватар",
"current_password": "Текущий пароль",
"current_profile_banner": "Текущий баннер профиля",
"data_import_export_tab": "Импорт / Экспорт данных",
"delete_account": "Удалить аккаунт",
"delete_account_description": "Удалить ваш аккаунт и все ваши сообщения.",
"delete_account_description": "Удалить вашу учётную запись и все ваши сообщения.",
"delete_account_error": "Возникла ошибка в процессе удаления вашего аккаунта. Если это повторяется, свяжитесь с администратором вашего сервера.",
"delete_account_instructions": "Введите ваш пароль в поле ниже для подтверждения удаления.",
"export_theme": "Сохранить Тему",
......@@ -238,7 +238,7 @@
"hide_followers_count_description": "Не показывать число моих подписчиков",
"show_admin_badge": "Показывать значок администратора в моем профиле",
"show_moderator_badge": "Показывать значок модератора в моем профиле",
"nsfw_clickthrough": "Включить скрытие NSFW вложений и не показывать изображения в предпросмотре ссылок для NSFW статусов",
"nsfw_clickthrough": "Включить скрытие вложений и предпросмотра ссылок для NSFW статусов",
"oauth_tokens": "OAuth токены",
"token": "Токен",
"refresh_token": "Рефреш токен",
......@@ -295,7 +295,14 @@
"use_source": "Новая версия",
"use_snapshot": "Старая версия",
"keep_as_is": "Оставить, как есть",
"load_theme": "Загрузить тему"
"load_theme": "Загрузить тему",
"help": {
"fe_upgraded": "Движок тем для фронт-энда Pleroma был изменен после обновления.",
"older_version_imported": "Файл, который вы импортировали, был сделан в старой версии фронт-энда.",
"future_version_imported": "Файл, который вы импортировали, был сделан в новой версии фронт-энда.",
"v2_imported": "Файл, который вы импортировали, был сделан под старый фронт-энд. Мы стараемся улучшить совместимость, но все еще возможны несостыковки.",
"upgraded_from_v2": "Фронт-энд Pleroma был изменен. Выбранная тема может выглядеть слегка по-другому."
}
},
"common": {
"color": "Цвет",
......@@ -330,7 +337,9 @@
"borders": "Границы",
"buttons": "Кнопки",
"inputs": "Поля ввода",
"faint_text": "Маловажный текст"
"faint_text": "Маловажный текст",
"post": "Сообщения и описание пользователя",
"alert_neutral": "Нейтральный"
},
"radii": {
"_tab_label": "Скругление"
......@@ -451,7 +460,19 @@
"virtual_scrolling": "Оптимизировать рендеринг ленты",
"hide_wallpaper": "Скрыть обои узла",
"accent": "Акцент",
"upload_a_photo": "Загрузить фото"
"upload_a_photo": "Загрузить фото",
"notification_mutes": "Чтобы не получать уведомления от определённого пользователя, заглушите его.",
"reset_avatar_confirm": "Вы действительно хотите сбросить личный образ?",
"reset_profile_banner": "Сбросить личный баннер",
"reset_profile_background": "Сбросить личные обои",
"reset_avatar": "Сбросить личный образ",
"search_user_to_mute": "Искать, кого вы хотите заглушить",
"search_user_to_block": "Искать, кого вы хотите заблокировать",
"pad_emoji": "Выделять эмодзи пробелами при добавлении из панели",
"avatar_size_instruction": "Желательный наименьший размер личного образа 150 на 150 пикселей.",
"enable_web_push_notifications": "Включить web push-уведомления",
"notification_blocks": "Блокировка пользователя выключает все уведомления от него, а также отписывает вас от него.",
"notification_setting_hide_notification_contents": "Скрыть отправителя и содержимое push-уведомлений"
},
"timeline": {
"collapse": "Свернуть",
......@@ -465,7 +486,7 @@
"error": "Ошибка при обновлении ленты: {0}"
},
"status": {
"bookmark": "В закладки",
"bookmark": "Добавить в закладки",
"unbookmark": "Удалить из закладок",
"status_deleted": "Пост удален",
"reply_to": "Ответ",
......@@ -473,7 +494,11 @@
"favorites": "Понравилось",
"unmute_conversation": "Прекратить игнорировать разговор",
"mute_conversation": "Игнорировать разговор",
"thread_muted": "Разговор игнорируется"
"thread_muted": "Разговор игнорируется",
"external_source": "Перейти к источнику",
"delete_confirm": "Вы действительно хотите удалить данный статус?",
"delete": "Удалить",
"copy_link": "Скопировать ссылку"
},
"user_card": {
"block": "Заблокировать",
......@@ -515,7 +540,12 @@
"media": "С вложениями",
"mention": "Упомянуть",
"show_repeats": "Показывать повторы",
"hide_repeats": "Скрыть повторы"
"hide_repeats": "Скрыть повторы",
"report": "Пожаловаться",
"roles": {
"moderator": "Модератор",
"admin": "Администратор"
}
},
"user_profile": {
"timeline_title": "Лента пользователя"
......@@ -584,7 +614,8 @@
"title": "Особенности",
"gopher": "Gopher",
"who_to_follow": "Предложения кого читать",
"pleroma_chat_messages": "Pleroma Чат"
"pleroma_chat_messages": "Pleroma Чат",
"upload_limit": "Наибольший размер загружаемого файла"
},
"tool_tip": {
"accept_follow_request": "Принять запрос на чтение",
......@@ -673,6 +704,7 @@
"you": "Вы:"
},
"remote_user_resolver": {
"error": "Не найдено."
"error": "Не найдено.",
"searching_for": "Ищем"
}
}
......@@ -25,11 +25,11 @@
},
"features_panel": {
"gopher": "Gopher",
"pleroma_chat_messages": "Локальні балачки",
"pleroma_chat_messages": "Чати",
"chat": "Міні-чат",
"who_to_follow": "Кого відстежувати",
"title": "Особливості",
"scope_options": "Параметри осягу",
"scope_options": "Параметри обсягу",
"media_proxy": "Посередник медіа-даних",
"text_limit": "Ліміт символів",
"upload_limit": "Обмеження завантажень"
......@@ -39,9 +39,9 @@
"export": "Експорт"
},
"domain_mute_card": {
"unmute_progress": имикаю…",
"unmute_progress": "Вмикаю…",
"unmute": "Вимкнути заглушення",
"mute_progress": "Вмикаю…",
"mute_progress": имикаю…",
"mute": "Ігнорувати"
},
"shoutbox": {
......@@ -51,13 +51,13 @@
"staff": "Адміністрація",
"mrf": {
"simple": {
"media_nsfw_desc": "Даний інстанс примусово позначає медіа в наступних інстансах як NSFW:",
"media_nsfw_desc": "Даний інстанс примусово позначає медіа в наступних інстансах як дратівливий:",