forked from AkkomaGang/akkoma-fe
Merge branch 'develop' into feature/following_reblogs
This commit is contained in:
commit
541a71c3a5
31 changed files with 217 additions and 49 deletions
|
@ -7,6 +7,7 @@ stages:
|
||||||
- lint
|
- lint
|
||||||
- build
|
- build
|
||||||
- test
|
- test
|
||||||
|
- deploy
|
||||||
|
|
||||||
lint:
|
lint:
|
||||||
stage: lint
|
stage: lint
|
||||||
|
@ -33,3 +34,13 @@ build:
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- dist/
|
- dist/
|
||||||
|
|
||||||
|
docs-deploy:
|
||||||
|
stage: deploy
|
||||||
|
image: alpine:latest
|
||||||
|
only:
|
||||||
|
- develop@pleroma/pleroma-fe
|
||||||
|
before_script:
|
||||||
|
- apk add curl
|
||||||
|
script:
|
||||||
|
- curl -X POST -F"token=$DOCS_PIPELINE_TRIGGER" -F'ref=master' https://git.pleroma.social/api/v4/projects/673/trigger/pipeline
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Pleroma-FE configuration and customization for instance administrators
|
# Pleroma-FE configuration and customization for instance administrators
|
||||||
|
|
||||||
* *For user configuration, see USER_GUIDE.md*
|
* *For user configuration, see [Pleroma-FE user guide](USER_GUIDE.md)*
|
||||||
* *For local development server configuration, see HACKING.md*
|
* *For local development server configuration, see [Hacking, tweaking, contributing](HACKING.md)*
|
||||||
|
|
||||||
## Where configuration is stored
|
## Where configuration is stored
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
# Pleroma-FE user guide
|
||||||
|
|
||||||
> Be prepared for breaking changes, unexpected behavior and this user guide becoming obsolete and wrong.
|
> Be prepared for breaking changes, unexpected behavior and this user guide becoming obsolete and wrong.
|
||||||
|
|
||||||
> If there was no insanity
|
> If there was no insanity
|
||||||
|
@ -6,8 +8,6 @@
|
||||||
>
|
>
|
||||||
> --Catbag
|
> --Catbag
|
||||||
|
|
||||||
# Pleroma-FE user guide
|
|
||||||
|
|
||||||
Pleroma-FE user interface is modeled after Qvitter which is modeled after older Twitter design. It provides a simple 2-column interface for microblogging. While being simple by default it also provides many powerful customization options.
|
Pleroma-FE user interface is modeled after Qvitter which is modeled after older Twitter design. It provides a simple 2-column interface for microblogging. While being simple by default it also provides many powerful customization options.
|
||||||
|
|
||||||
## Posting, reading, basic functions.
|
## Posting, reading, basic functions.
|
||||||
|
|
|
@ -53,6 +53,15 @@
|
||||||
:title="$t('nav.preferences')"
|
:title="$t('nav.preferences')"
|
||||||
/>
|
/>
|
||||||
</router-link>
|
</router-link>
|
||||||
|
<a
|
||||||
|
v-if="currentUser && currentUser.role === 'admin'"
|
||||||
|
href="/pleroma/admin/#/login-pleroma"
|
||||||
|
class="mobile-hidden"
|
||||||
|
target="_blank"
|
||||||
|
><i
|
||||||
|
class="button-icon icon-gauge nav-icon"
|
||||||
|
:title="$t('nav.administration')"
|
||||||
|
/></a>
|
||||||
<a
|
<a
|
||||||
v-if="currentUser"
|
v-if="currentUser"
|
||||||
href="#"
|
href="#"
|
||||||
|
|
|
@ -1,24 +1,41 @@
|
||||||
import PostStatusForm from '../post_status_form/post_status_form.vue'
|
import PostStatusForm from '../post_status_form/post_status_form.vue'
|
||||||
|
import get from 'lodash/get'
|
||||||
|
|
||||||
const PostStatusModal = {
|
const PostStatusModal = {
|
||||||
components: {
|
components: {
|
||||||
PostStatusForm
|
PostStatusForm
|
||||||
},
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
resettingForm: false
|
||||||
|
}
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
isLoggedIn () {
|
isLoggedIn () {
|
||||||
return !!this.$store.state.users.currentUser
|
return !!this.$store.state.users.currentUser
|
||||||
},
|
},
|
||||||
isOpen () {
|
modalActivated () {
|
||||||
return this.isLoggedIn && this.$store.state.postStatus.modalActivated
|
return this.$store.state.postStatus.modalActivated
|
||||||
|
},
|
||||||
|
isFormVisible () {
|
||||||
|
return this.isLoggedIn && !this.resettingForm && this.modalActivated
|
||||||
},
|
},
|
||||||
params () {
|
params () {
|
||||||
return this.$store.state.postStatus.params || {}
|
return this.$store.state.postStatus.params || {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
isOpen (val) {
|
params (newVal, oldVal) {
|
||||||
|
if (get(newVal, 'repliedUser.id') !== get(oldVal, 'repliedUser.id')) {
|
||||||
|
this.resettingForm = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.resettingForm = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
isFormVisible (val) {
|
||||||
if (val) {
|
if (val) {
|
||||||
this.$nextTick(() => this.$el.querySelector('textarea').focus())
|
this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
v-if="isOpen"
|
v-if="isLoggedIn && !resettingForm"
|
||||||
|
v-show="modalActivated"
|
||||||
class="post-form-modal-view modal-view"
|
class="post-form-modal-view modal-view"
|
||||||
@click="closeModal"
|
@click="closeModal"
|
||||||
>
|
>
|
||||||
|
|
|
@ -122,6 +122,17 @@
|
||||||
{{ $t("nav.about") }}
|
{{ $t("nav.about") }}
|
||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
|
<li
|
||||||
|
v-if="currentUser && currentUser.role === 'admin'"
|
||||||
|
@click="toggleDrawer"
|
||||||
|
>
|
||||||
|
<a
|
||||||
|
href="/pleroma/admin/#/login-pleroma"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
{{ $t("nav.administration") }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<li
|
<li
|
||||||
v-if="currentUser"
|
v-if="currentUser"
|
||||||
@click="toggleDrawer"
|
@click="toggleDrawer"
|
||||||
|
|
|
@ -41,8 +41,11 @@ const UserSettings = {
|
||||||
newDefaultScope: this.$store.state.users.currentUser.default_scope,
|
newDefaultScope: this.$store.state.users.currentUser.default_scope,
|
||||||
hideFollows: this.$store.state.users.currentUser.hide_follows,
|
hideFollows: this.$store.state.users.currentUser.hide_follows,
|
||||||
hideFollowers: this.$store.state.users.currentUser.hide_followers,
|
hideFollowers: this.$store.state.users.currentUser.hide_followers,
|
||||||
|
hideFollowsCount: this.$store.state.users.currentUser.hide_follows_count,
|
||||||
|
hideFollowersCount: this.$store.state.users.currentUser.hide_followers_count,
|
||||||
showRole: this.$store.state.users.currentUser.show_role,
|
showRole: this.$store.state.users.currentUser.show_role,
|
||||||
role: this.$store.state.users.currentUser.role,
|
role: this.$store.state.users.currentUser.role,
|
||||||
|
discoverable: this.$store.state.users.currentUser.discoverable,
|
||||||
pickAvatarBtnVisible: true,
|
pickAvatarBtnVisible: true,
|
||||||
bannerUploading: false,
|
bannerUploading: false,
|
||||||
backgroundUploading: false,
|
backgroundUploading: false,
|
||||||
|
@ -142,6 +145,9 @@ const UserSettings = {
|
||||||
no_rich_text: this.newNoRichText,
|
no_rich_text: this.newNoRichText,
|
||||||
hide_follows: this.hideFollows,
|
hide_follows: this.hideFollows,
|
||||||
hide_followers: this.hideFollowers,
|
hide_followers: this.hideFollowers,
|
||||||
|
discoverable: this.discoverable,
|
||||||
|
hide_follows_count: this.hideFollowsCount,
|
||||||
|
hide_followers_count: this.hideFollowersCount,
|
||||||
show_role: this.showRole
|
show_role: this.showRole
|
||||||
/* eslint-enable camelcase */
|
/* eslint-enable camelcase */
|
||||||
} }).then((user) => {
|
} }).then((user) => {
|
||||||
|
|
|
@ -90,6 +90,15 @@
|
||||||
>
|
>
|
||||||
<label for="account-hide-follows">{{ $t('settings.hide_follows_description') }}</label>
|
<label for="account-hide-follows">{{ $t('settings.hide_follows_description') }}</label>
|
||||||
</p>
|
</p>
|
||||||
|
<p class="setting-subitem">
|
||||||
|
<input
|
||||||
|
id="account-hide-follows-count"
|
||||||
|
v-model="hideFollowsCount"
|
||||||
|
type="checkbox"
|
||||||
|
:disabled="!hideFollows"
|
||||||
|
>
|
||||||
|
<label for="account-hide-follows-count">{{ $t('settings.hide_follows_count_description') }}</label>
|
||||||
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<input
|
<input
|
||||||
id="account-hide-followers"
|
id="account-hide-followers"
|
||||||
|
@ -98,6 +107,15 @@
|
||||||
>
|
>
|
||||||
<label for="account-hide-followers">{{ $t('settings.hide_followers_description') }}</label>
|
<label for="account-hide-followers">{{ $t('settings.hide_followers_description') }}</label>
|
||||||
</p>
|
</p>
|
||||||
|
<p class="setting-subitem">
|
||||||
|
<input
|
||||||
|
id="account-hide-followers-count"
|
||||||
|
v-model="hideFollowersCount"
|
||||||
|
type="checkbox"
|
||||||
|
:disabled="!hideFollowers"
|
||||||
|
>
|
||||||
|
<label for="account-hide-followers-count">{{ $t('settings.hide_followers_count_description') }}</label>
|
||||||
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<input
|
<input
|
||||||
id="account-show-role"
|
id="account-show-role"
|
||||||
|
@ -113,6 +131,14 @@
|
||||||
for="account-show-role"
|
for="account-show-role"
|
||||||
>{{ $t('settings.show_moderator_badge') }}</label>
|
>{{ $t('settings.show_moderator_badge') }}</label>
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
<input
|
||||||
|
id="discoverable"
|
||||||
|
v-model="discoverable"
|
||||||
|
type="checkbox"
|
||||||
|
>
|
||||||
|
<label for="discoverable">{{ $t('settings.discoverable') }}</label>
|
||||||
|
</p>
|
||||||
<button
|
<button
|
||||||
:disabled="newName && newName.length === 0"
|
:disabled="newName && newName.length === 0"
|
||||||
class="btn btn-default"
|
class="btn btn-default"
|
||||||
|
@ -619,5 +645,9 @@
|
||||||
width: 10em;
|
width: 10em;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.setting-subitem {
|
||||||
|
margin-left: 1.75em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -16,21 +16,11 @@ const WhoToFollow = {
|
||||||
methods: {
|
methods: {
|
||||||
showWhoToFollow (reply) {
|
showWhoToFollow (reply) {
|
||||||
reply.forEach((i, index) => {
|
reply.forEach((i, index) => {
|
||||||
const user = {
|
this.$store.state.api.backendInteractor.fetchUser({ id: i.acct })
|
||||||
id: 0,
|
|
||||||
name: i.display_name,
|
|
||||||
screen_name: i.acct,
|
|
||||||
profile_image_url: i.avatar || '/images/avi.png',
|
|
||||||
profile_image_url_original: i.avatar || '/images/avi.png',
|
|
||||||
statusnet_profile_url: i.url
|
|
||||||
}
|
|
||||||
this.users.push(user)
|
|
||||||
|
|
||||||
this.$store.state.api.backendInteractor.fetchUser({ id: user.screen_name })
|
|
||||||
.then((externalUser) => {
|
.then((externalUser) => {
|
||||||
if (!externalUser.error) {
|
if (!externalUser.error) {
|
||||||
this.$store.commit('addNewUsers', [externalUser])
|
this.$store.commit('addNewUsers', [externalUser])
|
||||||
user.id = externalUser.id
|
this.users.push(externalUser)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -68,6 +68,7 @@
|
||||||
},
|
},
|
||||||
"nav": {
|
"nav": {
|
||||||
"about": "About",
|
"about": "About",
|
||||||
|
"administration": "Administration",
|
||||||
"back": "Back",
|
"back": "Back",
|
||||||
"chat": "Local Chat",
|
"chat": "Local Chat",
|
||||||
"friend_requests": "Follow Requests",
|
"friend_requests": "Follow Requests",
|
||||||
|
@ -231,6 +232,7 @@
|
||||||
"delete_account_description": "Permanently delete your account and all your messages.",
|
"delete_account_description": "Permanently delete your account and all your messages.",
|
||||||
"delete_account_error": "There was an issue deleting your account. If this persists please contact your instance administrator.",
|
"delete_account_error": "There was an issue deleting your account. If this persists please contact your instance administrator.",
|
||||||
"delete_account_instructions": "Type your password in the input below to confirm account deletion.",
|
"delete_account_instructions": "Type your password in the input below to confirm account deletion.",
|
||||||
|
"discoverable": "Allow discovery of this account in search results and other services",
|
||||||
"avatar_size_instruction": "The recommended minimum size for avatar images is 150x150 pixels.",
|
"avatar_size_instruction": "The recommended minimum size for avatar images is 150x150 pixels.",
|
||||||
"pad_emoji": "Pad emoji with spaces when adding from picker",
|
"pad_emoji": "Pad emoji with spaces when adding from picker",
|
||||||
"export_theme": "Save preset",
|
"export_theme": "Save preset",
|
||||||
|
@ -284,6 +286,8 @@
|
||||||
"no_mutes": "No mutes",
|
"no_mutes": "No mutes",
|
||||||
"hide_follows_description": "Don't show who I'm following",
|
"hide_follows_description": "Don't show who I'm following",
|
||||||
"hide_followers_description": "Don't show who's following me",
|
"hide_followers_description": "Don't show who's following me",
|
||||||
|
"hide_follows_count_description": "Don't show follow count",
|
||||||
|
"hide_followers_count_description": "Don't show follower count",
|
||||||
"show_admin_badge": "Show Admin badge in my profile",
|
"show_admin_badge": "Show Admin badge in my profile",
|
||||||
"show_moderator_badge": "Show Moderator badge in my profile",
|
"show_moderator_badge": "Show Moderator badge in my profile",
|
||||||
"nsfw_clickthrough": "Enable clickthrough NSFW attachment hiding",
|
"nsfw_clickthrough": "Enable clickthrough NSFW attachment hiding",
|
||||||
|
|
|
@ -106,6 +106,15 @@
|
||||||
"expired": "いれふだは {0} まえに、おわりました",
|
"expired": "いれふだは {0} まえに、おわりました",
|
||||||
"not_enough_options": "ユニークなオプションが、たりません"
|
"not_enough_options": "ユニークなオプションが、たりません"
|
||||||
},
|
},
|
||||||
|
"emoji": {
|
||||||
|
"stickers": "ステッカー",
|
||||||
|
"emoji": "えもじ",
|
||||||
|
"keep_open": "ピッカーをあけたままにする",
|
||||||
|
"search_emoji": "えもじをさがす",
|
||||||
|
"add_emoji": "えもじをうちこむ",
|
||||||
|
"custom": "カスタムえもじ",
|
||||||
|
"unicode": "ユニコードえもじ"
|
||||||
|
},
|
||||||
"stickers": {
|
"stickers": {
|
||||||
"add_sticker": "ステッカーをふやす"
|
"add_sticker": "ステッカーをふやす"
|
||||||
},
|
},
|
||||||
|
@ -224,9 +233,11 @@
|
||||||
"default_vis": "デフォルトのこうかいはんい",
|
"default_vis": "デフォルトのこうかいはんい",
|
||||||
"delete_account": "アカウントをけす",
|
"delete_account": "アカウントをけす",
|
||||||
"delete_account_description": "あなたのアカウントとメッセージが、きえます。",
|
"delete_account_description": "あなたのアカウントとメッセージが、きえます。",
|
||||||
"delete_account_error": "アカウントをけすことが、できなかったかもしれません。インスタンスのかんりしゃに、れんらくしてください。",
|
"delete_account_error": "アカウントをけすことが、できなかったかもしれません。インスタンスのアドミニストレーターに、おといあわせください。",
|
||||||
"delete_account_instructions": "ほんとうにアカウントをけしてもいいなら、パスワードをかいてください。",
|
"delete_account_instructions": "ほんとうにアカウントをけしてもいいなら、パスワードをかいてください。",
|
||||||
|
"discoverable": "けんさくなどのサービスで、このアカウントをみつけてもよい",
|
||||||
"avatar_size_instruction": "アバターのおおきさは、150×150ピクセルか、それよりもおおきくするといいです。",
|
"avatar_size_instruction": "アバターのおおきさは、150×150ピクセルか、それよりもおおきくするといいです。",
|
||||||
|
"pad_emoji": "えもじをピッカーでえらんだとき、えもじのまわりにスペースをいれる",
|
||||||
"export_theme": "セーブ",
|
"export_theme": "セーブ",
|
||||||
"filtering": "フィルタリング",
|
"filtering": "フィルタリング",
|
||||||
"filtering_explanation": "これらのことばをふくむすべてのものがミュートされます。1ぎょうに1つのことばをかいてください。",
|
"filtering_explanation": "これらのことばをふくむすべてのものがミュートされます。1ぎょうに1つのことばをかいてください。",
|
||||||
|
@ -279,6 +290,8 @@
|
||||||
"no_mutes": "ミュートしていません",
|
"no_mutes": "ミュートしていません",
|
||||||
"hide_follows_description": "フォローしているひとをみせない",
|
"hide_follows_description": "フォローしているひとをみせない",
|
||||||
"hide_followers_description": "フォロワーをみせない",
|
"hide_followers_description": "フォロワーをみせない",
|
||||||
|
"hide_follows_count_description": "フォローしているひとのかずをみせない",
|
||||||
|
"hide_followers_count_description": "フォロワーのかずをみせない",
|
||||||
"show_admin_badge": "アドミンのしるしをみせる",
|
"show_admin_badge": "アドミンのしるしをみせる",
|
||||||
"show_moderator_badge": "モデレーターのしるしをみせる",
|
"show_moderator_badge": "モデレーターのしるしをみせる",
|
||||||
"nsfw_clickthrough": "NSFWなファイルをかくす",
|
"nsfw_clickthrough": "NSFWなファイルをかくす",
|
||||||
|
@ -531,6 +544,7 @@
|
||||||
"follows_you": "フォローされました!",
|
"follows_you": "フォローされました!",
|
||||||
"its_you": "これはあなたです!",
|
"its_you": "これはあなたです!",
|
||||||
"media": "メディア",
|
"media": "メディア",
|
||||||
|
"mention": "メンション",
|
||||||
"mute": "ミュート",
|
"mute": "ミュート",
|
||||||
"muted": "ミュートしています!",
|
"muted": "ミュートしています!",
|
||||||
"per_day": "/日",
|
"per_day": "/日",
|
||||||
|
@ -610,5 +624,16 @@
|
||||||
"person_talking": "{count} にんが、はなしています",
|
"person_talking": "{count} にんが、はなしています",
|
||||||
"people_talking": "{count} にんが、はなしています",
|
"people_talking": "{count} にんが、はなしています",
|
||||||
"no_results": "みつかりませんでした"
|
"no_results": "みつかりませんでした"
|
||||||
|
},
|
||||||
|
"password_reset": {
|
||||||
|
"forgot_password": "パスワードを、わすれましたか?",
|
||||||
|
"password_reset": "パスワードリセット",
|
||||||
|
"instruction": "あなたのメールアドレスかユーザーめいをいれてください。パスワードをリセットするためのリンクをおくります。",
|
||||||
|
"placeholder": "あなたのメールアドレスかユーザーめい",
|
||||||
|
"check_email": "パスワードをリセットするためのリンクがかかれたメールが、とどいているかどうか、みてください。",
|
||||||
|
"return_home": "ホームページにもどる",
|
||||||
|
"not_found": "そのメールアドレスまたはユーザーめいを、みつけることができませんでした。",
|
||||||
|
"too_many_requests": "パスワードリセットを、ためすことが、おおすぎます。しばらくしてから、ためしてください。",
|
||||||
|
"password_reset_disabled": "このインスタンスでは、パスワードリセットは、できません。インスタンスのアドミニストレーターに、おといあわせください。"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,6 +106,15 @@
|
||||||
"expired": "投票は {0} 前に終了しました",
|
"expired": "投票は {0} 前に終了しました",
|
||||||
"not_enough_options": "相異なる選択肢が不足しています"
|
"not_enough_options": "相異なる選択肢が不足しています"
|
||||||
},
|
},
|
||||||
|
"emoji": {
|
||||||
|
"stickers": "ステッカー",
|
||||||
|
"emoji": "絵文字",
|
||||||
|
"keep_open": "ピッカーを開いたままにする",
|
||||||
|
"search_emoji": "絵文字を検索",
|
||||||
|
"add_emoji": "絵文字を挿入",
|
||||||
|
"custom": "カスタム絵文字",
|
||||||
|
"unicode": "Unicode絵文字"
|
||||||
|
},
|
||||||
"stickers": {
|
"stickers": {
|
||||||
"add_sticker": "ステッカーを追加"
|
"add_sticker": "ステッカーを追加"
|
||||||
},
|
},
|
||||||
|
@ -226,7 +235,9 @@
|
||||||
"delete_account_description": "あなたのアカウントとメッセージが、消えます。",
|
"delete_account_description": "あなたのアカウントとメッセージが、消えます。",
|
||||||
"delete_account_error": "アカウントを消すことが、できなかったかもしれません。インスタンスの管理者に、連絡してください。",
|
"delete_account_error": "アカウントを消すことが、できなかったかもしれません。インスタンスの管理者に、連絡してください。",
|
||||||
"delete_account_instructions": "本当にアカウントを消してもいいなら、パスワードを入力してください。",
|
"delete_account_instructions": "本当にアカウントを消してもいいなら、パスワードを入力してください。",
|
||||||
|
"discoverable": "検索などのサービスでこのアカウントを見つけることを許可する",
|
||||||
"avatar_size_instruction": "アバターの大きさは、150×150ピクセルか、それよりも大きくするといいです。",
|
"avatar_size_instruction": "アバターの大きさは、150×150ピクセルか、それよりも大きくするといいです。",
|
||||||
|
"pad_emoji": "ピッカーから絵文字を挿入するとき、絵文字の両側にスペースを入れる",
|
||||||
"export_theme": "保存",
|
"export_theme": "保存",
|
||||||
"filtering": "フィルタリング",
|
"filtering": "フィルタリング",
|
||||||
"filtering_explanation": "これらの言葉を含むすべてのものがミュートされます。1行に1つの言葉を書いてください。",
|
"filtering_explanation": "これらの言葉を含むすべてのものがミュートされます。1行に1つの言葉を書いてください。",
|
||||||
|
@ -279,6 +290,8 @@
|
||||||
"no_mutes": "ミュートはありません",
|
"no_mutes": "ミュートはありません",
|
||||||
"hide_follows_description": "フォローしている人を見せない",
|
"hide_follows_description": "フォローしている人を見せない",
|
||||||
"hide_followers_description": "フォロワーを見せない",
|
"hide_followers_description": "フォロワーを見せない",
|
||||||
|
"hide_follows_count_description": "フォローしている人の数を見せない",
|
||||||
|
"hide_followers_count_description": "フォロワーの数を見せない",
|
||||||
"show_admin_badge": "管理者のバッジを見せる",
|
"show_admin_badge": "管理者のバッジを見せる",
|
||||||
"show_moderator_badge": "モデレーターのバッジを見せる",
|
"show_moderator_badge": "モデレーターのバッジを見せる",
|
||||||
"nsfw_clickthrough": "NSFWなファイルを隠す",
|
"nsfw_clickthrough": "NSFWなファイルを隠す",
|
||||||
|
@ -531,6 +544,7 @@
|
||||||
"follows_you": "フォローされました!",
|
"follows_you": "フォローされました!",
|
||||||
"its_you": "これはあなたです!",
|
"its_you": "これはあなたです!",
|
||||||
"media": "メディア",
|
"media": "メディア",
|
||||||
|
"mention": "メンション",
|
||||||
"mute": "ミュート",
|
"mute": "ミュート",
|
||||||
"muted": "ミュートしています!",
|
"muted": "ミュートしています!",
|
||||||
"per_day": "/日",
|
"per_day": "/日",
|
||||||
|
@ -610,5 +624,16 @@
|
||||||
"person_talking": "{count} 人が話しています",
|
"person_talking": "{count} 人が話しています",
|
||||||
"people_talking": "{count} 人が話しています",
|
"people_talking": "{count} 人が話しています",
|
||||||
"no_results": "見つかりませんでした"
|
"no_results": "見つかりませんでした"
|
||||||
|
},
|
||||||
|
"password_reset": {
|
||||||
|
"forgot_password": "パスワードを忘れましたか?",
|
||||||
|
"password_reset": "パスワードリセット",
|
||||||
|
"instruction": "メールアドレスまたはユーザー名を入力してください。パスワードをリセットするためのリンクを送信します。",
|
||||||
|
"placeholder": "メールアドレスまたはユーザー名",
|
||||||
|
"check_email": "パスワードをリセットするためのリンクが記載されたメールが届いているか確認してください。",
|
||||||
|
"return_home": "ホームページに戻る",
|
||||||
|
"not_found": "メールアドレスまたはユーザー名が見つかりませんでした。",
|
||||||
|
"too_many_requests": "試行回数の制限に達しました。しばらく時間を置いてから再試行してください。",
|
||||||
|
"password_reset_disabled": "このインスタンスではパスワードリセットは無効になっています。インスタンスの管理者に連絡してください。"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,6 +178,8 @@
|
||||||
"no_rich_text_description": "Убрать форматирование из всех постов",
|
"no_rich_text_description": "Убрать форматирование из всех постов",
|
||||||
"hide_follows_description": "Не показывать кого я читаю",
|
"hide_follows_description": "Не показывать кого я читаю",
|
||||||
"hide_followers_description": "Не показывать кто читает меня",
|
"hide_followers_description": "Не показывать кто читает меня",
|
||||||
|
"hide_follows_count_description": "Не показывать число читаемых пользователей",
|
||||||
|
"hide_followers_count_description": "Не показывать число моих подписчиков",
|
||||||
"show_admin_badge": "Показывать значок администратора в моем профиле",
|
"show_admin_badge": "Показывать значок администратора в моем профиле",
|
||||||
"show_moderator_badge": "Показывать значок модератора в моем профиле",
|
"show_moderator_badge": "Показывать значок модератора в моем профиле",
|
||||||
"nsfw_clickthrough": "Включить скрытие NSFW вложений",
|
"nsfw_clickthrough": "Включить скрытие NSFW вложений",
|
||||||
|
|
|
@ -75,6 +75,8 @@ export const parseUser = (data) => {
|
||||||
|
|
||||||
output.hide_follows = data.pleroma.hide_follows
|
output.hide_follows = data.pleroma.hide_follows
|
||||||
output.hide_followers = data.pleroma.hide_followers
|
output.hide_followers = data.pleroma.hide_followers
|
||||||
|
output.hide_follows_count = data.pleroma.hide_follows_count
|
||||||
|
output.hide_followers_count = data.pleroma.hide_followers_count
|
||||||
|
|
||||||
output.rights = {
|
output.rights = {
|
||||||
moderator: data.pleroma.is_moderator,
|
moderator: data.pleroma.is_moderator,
|
||||||
|
@ -96,6 +98,7 @@ export const parseUser = (data) => {
|
||||||
if (data.source.pleroma) {
|
if (data.source.pleroma) {
|
||||||
output.no_rich_text = data.source.pleroma.no_rich_text
|
output.no_rich_text = data.source.pleroma.no_rich_text
|
||||||
output.show_role = data.source.pleroma.show_role
|
output.show_role = data.source.pleroma.show_role
|
||||||
|
output.discoverable = data.source.pleroma.discoverable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -141,6 +144,8 @@ export const parseUser = (data) => {
|
||||||
output.default_scope = data.default_scope
|
output.default_scope = data.default_scope
|
||||||
output.hide_follows = data.hide_follows
|
output.hide_follows = data.hide_follows
|
||||||
output.hide_followers = data.hide_followers
|
output.hide_followers = data.hide_followers
|
||||||
|
output.hide_follows_count = data.hide_follows_count
|
||||||
|
output.hide_followers_count = data.hide_followers_count
|
||||||
output.background_image = data.background_image
|
output.background_image = data.background_image
|
||||||
// on mastoapi this info is contained in a "relationship"
|
// on mastoapi this info is contained in a "relationship"
|
||||||
output.following = data.following
|
output.following = data.following
|
||||||
|
@ -192,9 +197,11 @@ export const parseAttachment = (data) => {
|
||||||
return output
|
return output
|
||||||
}
|
}
|
||||||
export const addEmojis = (string, emojis) => {
|
export const addEmojis = (string, emojis) => {
|
||||||
|
const matchOperatorsRegex = /[|\\{}()[\]^$+*?.-]/g
|
||||||
return emojis.reduce((acc, emoji) => {
|
return emojis.reduce((acc, emoji) => {
|
||||||
|
const regexSafeShortCode = emoji.shortcode.replace(matchOperatorsRegex, '\\$&')
|
||||||
return acc.replace(
|
return acc.replace(
|
||||||
new RegExp(`:${emoji.shortcode}:`, 'g'),
|
new RegExp(`:${regexSafeShortCode}:`, 'g'),
|
||||||
`<img src='${emoji.url}' alt='${emoji.shortcode}' title='${emoji.shortcode}' class='emoji' />`
|
`<img src='${emoji.url}' alt='${emoji.shortcode}' title='${emoji.shortcode}' class='emoji' />`
|
||||||
)
|
)
|
||||||
}, string)
|
}, string)
|
||||||
|
|
0
static/font/LICENSE.txt
Normal file → Executable file
0
static/font/LICENSE.txt
Normal file → Executable file
0
static/font/README.txt
Normal file → Executable file
0
static/font/README.txt
Normal file → Executable file
6
static/font/config.json
Normal file → Executable file
6
static/font/config.json
Normal file → Executable file
|
@ -297,6 +297,12 @@
|
||||||
"css": "zoom-in",
|
"css": "zoom-in",
|
||||||
"code": 59420,
|
"code": 59420,
|
||||||
"src": "fontawesome"
|
"src": "fontawesome"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"uid": "0bda4bc779d4c32623dec2e43bd67ee8",
|
||||||
|
"css": "gauge",
|
||||||
|
"code": 61668,
|
||||||
|
"src": "fontawesome"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
0
static/font/css/animation.css
Normal file → Executable file
0
static/font/css/animation.css
Normal file → Executable file
1
static/font/css/fontello-codes.css
vendored
Normal file → Executable file
1
static/font/css/fontello-codes.css
vendored
Normal file → Executable file
|
@ -34,6 +34,7 @@
|
||||||
.icon-link-ext-alt:before { content: '\f08f'; } /* '' */
|
.icon-link-ext-alt:before { content: '\f08f'; } /* '' */
|
||||||
.icon-menu:before { content: '\f0c9'; } /* '' */
|
.icon-menu:before { content: '\f0c9'; } /* '' */
|
||||||
.icon-mail-alt:before { content: '\f0e0'; } /* '' */
|
.icon-mail-alt:before { content: '\f0e0'; } /* '' */
|
||||||
|
.icon-gauge:before { content: '\f0e4'; } /* '' */
|
||||||
.icon-comment-empty:before { content: '\f0e5'; } /* '' */
|
.icon-comment-empty:before { content: '\f0e5'; } /* '' */
|
||||||
.icon-bell-alt:before { content: '\f0f3'; } /* '' */
|
.icon-bell-alt:before { content: '\f0f3'; } /* '' */
|
||||||
.icon-plus-squared:before { content: '\f0fe'; } /* '' */
|
.icon-plus-squared:before { content: '\f0fe'; } /* '' */
|
||||||
|
|
14
static/font/css/fontello-embedded.css
vendored
Normal file → Executable file
14
static/font/css/fontello-embedded.css
vendored
Normal file → Executable file
File diff suppressed because one or more lines are too long
1
static/font/css/fontello-ie7-codes.css
vendored
Normal file → Executable file
1
static/font/css/fontello-ie7-codes.css
vendored
Normal file → Executable file
|
@ -34,6 +34,7 @@
|
||||||
.icon-link-ext-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
.icon-link-ext-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
.icon-mail-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
.icon-mail-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
|
.icon-gauge { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
.icon-comment-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
.icon-comment-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
.icon-bell-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
.icon-bell-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
.icon-plus-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
.icon-plus-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
|
|
1
static/font/css/fontello-ie7.css
vendored
Normal file → Executable file
1
static/font/css/fontello-ie7.css
vendored
Normal file → Executable file
|
@ -45,6 +45,7 @@
|
||||||
.icon-link-ext-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
.icon-link-ext-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
.icon-menu { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
.icon-mail-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
.icon-mail-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
|
.icon-gauge { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
.icon-comment-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
.icon-comment-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
.icon-bell-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
.icon-bell-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
.icon-plus-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
.icon-plus-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); }
|
||||||
|
|
16
static/font/css/fontello.css
vendored
Normal file → Executable file
16
static/font/css/fontello.css
vendored
Normal file → Executable file
|
@ -1,11 +1,11 @@
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'fontello';
|
font-family: 'fontello';
|
||||||
src: url('../font/fontello.eot?94788965');
|
src: url('../font/fontello.eot?70867224');
|
||||||
src: url('../font/fontello.eot?94788965#iefix') format('embedded-opentype'),
|
src: url('../font/fontello.eot?70867224#iefix') format('embedded-opentype'),
|
||||||
url('../font/fontello.woff2?94788965') format('woff2'),
|
url('../font/fontello.woff2?70867224') format('woff2'),
|
||||||
url('../font/fontello.woff?94788965') format('woff'),
|
url('../font/fontello.woff?70867224') format('woff'),
|
||||||
url('../font/fontello.ttf?94788965') format('truetype'),
|
url('../font/fontello.ttf?70867224') format('truetype'),
|
||||||
url('../font/fontello.svg?94788965#fontello') format('svg');
|
url('../font/fontello.svg?70867224#fontello') format('svg');
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'fontello';
|
font-family: 'fontello';
|
||||||
src: url('../font/fontello.svg?94788965#fontello') format('svg');
|
src: url('../font/fontello.svg?70867224#fontello') format('svg');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
@ -83,12 +83,14 @@
|
||||||
.icon-pin:before { content: '\e819'; } /* '' */
|
.icon-pin:before { content: '\e819'; } /* '' */
|
||||||
.icon-wrench:before { content: '\e81a'; } /* '' */
|
.icon-wrench:before { content: '\e81a'; } /* '' */
|
||||||
.icon-chart-bar:before { content: '\e81b'; } /* '' */
|
.icon-chart-bar:before { content: '\e81b'; } /* '' */
|
||||||
|
.icon-zoom-in:before { content: '\e81c'; } /* '' */
|
||||||
.icon-spin3:before { content: '\e832'; } /* '' */
|
.icon-spin3:before { content: '\e832'; } /* '' */
|
||||||
.icon-spin4:before { content: '\e834'; } /* '' */
|
.icon-spin4:before { content: '\e834'; } /* '' */
|
||||||
.icon-link-ext:before { content: '\f08e'; } /* '' */
|
.icon-link-ext:before { content: '\f08e'; } /* '' */
|
||||||
.icon-link-ext-alt:before { content: '\f08f'; } /* '' */
|
.icon-link-ext-alt:before { content: '\f08f'; } /* '' */
|
||||||
.icon-menu:before { content: '\f0c9'; } /* '' */
|
.icon-menu:before { content: '\f0c9'; } /* '' */
|
||||||
.icon-mail-alt:before { content: '\f0e0'; } /* '' */
|
.icon-mail-alt:before { content: '\f0e0'; } /* '' */
|
||||||
|
.icon-gauge:before { content: '\f0e4'; } /* '' */
|
||||||
.icon-comment-empty:before { content: '\f0e5'; } /* '' */
|
.icon-comment-empty:before { content: '\f0e5'; } /* '' */
|
||||||
.icon-bell-alt:before { content: '\f0f3'; } /* '' */
|
.icon-bell-alt:before { content: '\f0f3'; } /* '' */
|
||||||
.icon-plus-squared:before { content: '\f0fe'; } /* '' */
|
.icon-plus-squared:before { content: '\f0fe'; } /* '' */
|
||||||
|
|
26
static/font/demo.html
Normal file → Executable file
26
static/font/demo.html
Normal file → Executable file
|
@ -229,11 +229,11 @@ body {
|
||||||
}
|
}
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'fontello';
|
font-family: 'fontello';
|
||||||
src: url('./font/fontello.eot?31206390');
|
src: url('./font/fontello.eot?56851497');
|
||||||
src: url('./font/fontello.eot?31206390#iefix') format('embedded-opentype'),
|
src: url('./font/fontello.eot?56851497#iefix') format('embedded-opentype'),
|
||||||
url('./font/fontello.woff?31206390') format('woff'),
|
url('./font/fontello.woff?56851497') format('woff'),
|
||||||
url('./font/fontello.ttf?31206390') format('truetype'),
|
url('./font/fontello.ttf?56851497') format('truetype'),
|
||||||
url('./font/fontello.svg?31206390#fontello') format('svg');
|
url('./font/fontello.svg?56851497#fontello') format('svg');
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
@ -340,30 +340,32 @@ body {
|
||||||
<div class="the-icons span3" title="Code: 0xe81b"><i class="demo-icon icon-chart-bar"></i> <span class="i-name">icon-chart-bar</span><span class="i-code">0xe81b</span></div>
|
<div class="the-icons span3" title="Code: 0xe81b"><i class="demo-icon icon-chart-bar"></i> <span class="i-name">icon-chart-bar</span><span class="i-code">0xe81b</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
<div class="the-icons span3" title="Code: 0xe81c"><i class="demo-icon icon-zoom-in"></i> <span class="i-name">icon-zoom-in</span><span class="i-code">0xe81c</span></div>
|
||||||
<div class="the-icons span3" title="Code: 0xe832"><i class="demo-icon icon-spin3 animate-spin"></i> <span class="i-name">icon-spin3</span><span class="i-code">0xe832</span></div>
|
<div class="the-icons span3" title="Code: 0xe832"><i class="demo-icon icon-spin3 animate-spin"></i> <span class="i-name">icon-spin3</span><span class="i-code">0xe832</span></div>
|
||||||
<div class="the-icons span3" title="Code: 0xe834"><i class="demo-icon icon-spin4 animate-spin"></i> <span class="i-name">icon-spin4</span><span class="i-code">0xe834</span></div>
|
<div class="the-icons span3" title="Code: 0xe834"><i class="demo-icon icon-spin4 animate-spin"></i> <span class="i-name">icon-spin4</span><span class="i-code">0xe834</span></div>
|
||||||
<div class="the-icons span3" title="Code: 0xf08e"><i class="demo-icon icon-link-ext"></i> <span class="i-name">icon-link-ext</span><span class="i-code">0xf08e</span></div>
|
<div class="the-icons span3" title="Code: 0xf08e"><i class="demo-icon icon-link-ext"></i> <span class="i-name">icon-link-ext</span><span class="i-code">0xf08e</span></div>
|
||||||
<div class="the-icons span3" title="Code: 0xf08f"><i class="demo-icon icon-link-ext-alt"></i> <span class="i-name">icon-link-ext-alt</span><span class="i-code">0xf08f</span></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
<div class="the-icons span3" title="Code: 0xf08f"><i class="demo-icon icon-link-ext-alt"></i> <span class="i-name">icon-link-ext-alt</span><span class="i-code">0xf08f</span></div>
|
||||||
<div class="the-icons span3" title="Code: 0xf0c9"><i class="demo-icon icon-menu"></i> <span class="i-name">icon-menu</span><span class="i-code">0xf0c9</span></div>
|
<div class="the-icons span3" title="Code: 0xf0c9"><i class="demo-icon icon-menu"></i> <span class="i-name">icon-menu</span><span class="i-code">0xf0c9</span></div>
|
||||||
<div class="the-icons span3" title="Code: 0xf0e0"><i class="demo-icon icon-mail-alt"></i> <span class="i-name">icon-mail-alt</span><span class="i-code">0xf0e0</span></div>
|
<div class="the-icons span3" title="Code: 0xf0e0"><i class="demo-icon icon-mail-alt"></i> <span class="i-name">icon-mail-alt</span><span class="i-code">0xf0e0</span></div>
|
||||||
|
<div class="the-icons span3" title="Code: 0xf0e4"><i class="demo-icon icon-gauge"></i> <span class="i-name">icon-gauge</span><span class="i-code">0xf0e4</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
<div class="the-icons span3" title="Code: 0xf0e5"><i class="demo-icon icon-comment-empty"></i> <span class="i-name">icon-comment-empty</span><span class="i-code">0xf0e5</span></div>
|
<div class="the-icons span3" title="Code: 0xf0e5"><i class="demo-icon icon-comment-empty"></i> <span class="i-name">icon-comment-empty</span><span class="i-code">0xf0e5</span></div>
|
||||||
<div class="the-icons span3" title="Code: 0xf0f3"><i class="demo-icon icon-bell-alt"></i> <span class="i-name">icon-bell-alt</span><span class="i-code">0xf0f3</span></div>
|
<div class="the-icons span3" title="Code: 0xf0f3"><i class="demo-icon icon-bell-alt"></i> <span class="i-name">icon-bell-alt</span><span class="i-code">0xf0f3</span></div>
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="the-icons span3" title="Code: 0xf0fe"><i class="demo-icon icon-plus-squared"></i> <span class="i-name">icon-plus-squared</span><span class="i-code">0xf0fe</span></div>
|
<div class="the-icons span3" title="Code: 0xf0fe"><i class="demo-icon icon-plus-squared"></i> <span class="i-name">icon-plus-squared</span><span class="i-code">0xf0fe</span></div>
|
||||||
<div class="the-icons span3" title="Code: 0xf112"><i class="demo-icon icon-reply"></i> <span class="i-name">icon-reply</span><span class="i-code">0xf112</span></div>
|
<div class="the-icons span3" title="Code: 0xf112"><i class="demo-icon icon-reply"></i> <span class="i-name">icon-reply</span><span class="i-code">0xf112</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
<div class="the-icons span3" title="Code: 0xf118"><i class="demo-icon icon-smile"></i> <span class="i-name">icon-smile</span><span class="i-code">0xf118</span></div>
|
<div class="the-icons span3" title="Code: 0xf118"><i class="demo-icon icon-smile"></i> <span class="i-name">icon-smile</span><span class="i-code">0xf118</span></div>
|
||||||
<div class="the-icons span3" title="Code: 0xf13e"><i class="demo-icon icon-lock-open-alt"></i> <span class="i-name">icon-lock-open-alt</span><span class="i-code">0xf13e</span></div>
|
<div class="the-icons span3" title="Code: 0xf13e"><i class="demo-icon icon-lock-open-alt"></i> <span class="i-name">icon-lock-open-alt</span><span class="i-code">0xf13e</span></div>
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="the-icons span3" title="Code: 0xf141"><i class="demo-icon icon-ellipsis"></i> <span class="i-name">icon-ellipsis</span><span class="i-code">0xf141</span></div>
|
<div class="the-icons span3" title="Code: 0xf141"><i class="demo-icon icon-ellipsis"></i> <span class="i-name">icon-ellipsis</span><span class="i-code">0xf141</span></div>
|
||||||
<div class="the-icons span3" title="Code: 0xf144"><i class="demo-icon icon-play-circled"></i> <span class="i-name">icon-play-circled</span><span class="i-code">0xf144</span></div>
|
<div class="the-icons span3" title="Code: 0xf144"><i class="demo-icon icon-play-circled"></i> <span class="i-name">icon-play-circled</span><span class="i-code">0xf144</span></div>
|
||||||
<div class="the-icons span3" title="Code: 0xf164"><i class="demo-icon icon-thumbs-up-alt"></i> <span class="i-name">icon-thumbs-up-alt</span><span class="i-code">0xf164</span></div>
|
|
||||||
<div class="the-icons span3" title="Code: 0xf1e5"><i class="demo-icon icon-binoculars"></i> <span class="i-name">icon-binoculars</span><span class="i-code">0xf1e5</span></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
<div class="the-icons span3" title="Code: 0xf164"><i class="demo-icon icon-thumbs-up-alt"></i> <span class="i-name">icon-thumbs-up-alt</span><span class="i-code">0xf164</span></div>
|
||||||
|
<div class="the-icons span3" title="Code: 0xf1e5"><i class="demo-icon icon-binoculars"></i> <span class="i-name">icon-binoculars</span><span class="i-code">0xf1e5</span></div>
|
||||||
<div class="the-icons span3" title="Code: 0xf234"><i class="demo-icon icon-user-plus"></i> <span class="i-name">icon-user-plus</span><span class="i-code">0xf234</span></div>
|
<div class="the-icons span3" title="Code: 0xf234"><i class="demo-icon icon-user-plus"></i> <span class="i-name">icon-user-plus</span><span class="i-code">0xf234</span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
BIN
static/font/font/fontello.eot
Normal file → Executable file
BIN
static/font/font/fontello.eot
Normal file → Executable file
Binary file not shown.
2
static/font/font/fontello.svg
Normal file → Executable file
2
static/font/font/fontello.svg
Normal file → Executable file
|
@ -76,6 +76,8 @@
|
||||||
|
|
||||||
<glyph glyph-name="mail-alt" unicode="" d="M1000 461v-443q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v443q25-27 56-49 202-137 278-192 32-24 51-37t53-27 61-13h2q28 0 61 13t53 27 51 37q95 68 278 192 32 22 56 49z m0 164q0-44-27-84t-68-69q-210-146-262-181-5-4-23-17t-30-22-29-18-32-15-28-5h-2q-12 0-27 5t-32 15-30 18-30 22-23 17q-51 35-147 101t-114 80q-35 23-65 64t-31 77q0 43 23 72t66 29h822q36 0 63-26t26-63z" horiz-adv-x="1000" />
|
<glyph glyph-name="mail-alt" unicode="" d="M1000 461v-443q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v443q25-27 56-49 202-137 278-192 32-24 51-37t53-27 61-13h2q28 0 61 13t53 27 51 37q95 68 278 192 32 22 56 49z m0 164q0-44-27-84t-68-69q-210-146-262-181-5-4-23-17t-30-22-29-18-32-15-28-5h-2q-12 0-27 5t-32 15-30 18-30 22-23 17q-51 35-147 101t-114 80q-35 23-65 64t-31 77q0 43 23 72t66 29h822q36 0 63-26t26-63z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
|
<glyph glyph-name="gauge" unicode="" d="M214 214q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m107 250q0 30-20 51t-51 21-50-21-21-51 21-50 50-21 51 21 20 50z m239-268l57 213q3 14-5 27t-21 16-27-3-17-22l-56-213q-33-3-60-25t-35-55q-11-43 11-81t66-50 81 11 50 66q9 33-4 65t-40 51z m369 18q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m-358 357q0 30-20 51t-51 21-50-21-21-51 21-50 50-21 51 21 20 50z m250-107q0 30-20 51t-51 21-50-21-21-51 21-50 50-21 51 21 20 50z m179-250q0-145-79-269-10-17-30-17h-782q-20 0-30 17-79 123-79 269 0 102 40 194t106 160 160 107 194 39 194-39 160-107 106-160 40-194z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
<glyph glyph-name="comment-empty" unicode="" d="M500 643q-114 0-213-39t-157-105-59-142q0-62 40-119t113-98l48-28-15-53q-13-51-39-97 85 36 154 96l24 21 32-3q38-5 72-5 114 0 213 39t157 105 59 142-59 142-157 105-213 39z m500-286q0-97-67-179t-182-130-251-48q-39 0-81 4-110-97-257-135-27-8-63-12h-3q-8 0-15 6t-9 15v1q-2 2 0 6t1 6 2 5l4 5t4 5 4 5q4 5 17 19t20 22 17 22 18 28 15 33 15 42q-88 50-138 123t-51 157q0 97 67 179t182 130 251 48 251-48 182-130 67-179z" horiz-adv-x="1000" />
|
<glyph glyph-name="comment-empty" unicode="" d="M500 643q-114 0-213-39t-157-105-59-142q0-62 40-119t113-98l48-28-15-53q-13-51-39-97 85 36 154 96l24 21 32-3q38-5 72-5 114 0 213 39t157 105 59 142-59 142-157 105-213 39z m500-286q0-97-67-179t-182-130-251-48q-39 0-81 4-110-97-257-135-27-8-63-12h-3q-8 0-15 6t-9 15v1q-2 2 0 6t1 6 2 5l4 5t4 5 4 5q4 5 17 19t20 22 17 22 18 28 15 33 15 42q-88 50-138 123t-51 157q0 97 67 179t182 130 251 48 251-48 182-130 67-179z" horiz-adv-x="1000" />
|
||||||
|
|
||||||
<glyph glyph-name="bell-alt" unicode="" d="M509-89q0 8-9 8-33 0-57 24t-23 57q0 9-9 9t-9-9q0-41 29-70t69-28q9 0 9 9z m455 160q0-29-21-50t-50-21h-250q0-59-42-101t-101-42-101 42-42 101h-250q-29 0-50 21t-21 50q28 24 51 49t47 67 42 89 27 115 11 145q0 84 66 157t171 89q-5 10-5 21 0 23 16 38t38 16 38-16 16-38q0-11-5-21 106-16 171-89t66-157q0-78 11-145t28-115 41-89 48-67 50-49z" horiz-adv-x="1000" />
|
<glyph glyph-name="bell-alt" unicode="" d="M509-89q0 8-9 8-33 0-57 24t-23 57q0 9-9 9t-9-9q0-41 29-70t69-28q9 0 9 9z m455 160q0-29-21-50t-50-21h-250q0-59-42-101t-101-42-101 42-42 101h-250q-29 0-50 21t-21 50q28 24 51 49t47 67 42 89 27 115 11 145q0 84 66 157t171 89q-5 10-5 21 0 23 16 38t38 16 38-16 16-38q0-11-5-21 106-16 171-89t66-157q0-78 11-145t28-115 41-89 48-67 50-49z" horiz-adv-x="1000" />
|
||||||
|
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 22 KiB |
BIN
static/font/font/fontello.ttf
Normal file → Executable file
BIN
static/font/font/fontello.ttf
Normal file → Executable file
Binary file not shown.
BIN
static/font/font/fontello.woff
Normal file → Executable file
BIN
static/font/font/fontello.woff
Normal file → Executable file
Binary file not shown.
BIN
static/font/font/fontello.woff2
Normal file → Executable file
BIN
static/font/font/fontello.woff2
Normal file → Executable file
Binary file not shown.
|
@ -278,10 +278,12 @@ describe('API Entities normalizer', () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('adds hide_follows and hide_followers user settings', () => {
|
it('adds hide_follows and hide_followers user settings', () => {
|
||||||
const user = makeMockUserMasto({ pleroma: { hide_followers: true, hide_follows: false } })
|
const user = makeMockUserMasto({ pleroma: { hide_followers: true, hide_follows: false, hide_followers_count: false, hide_follows_count: true } })
|
||||||
|
|
||||||
expect(parseUser(user)).to.have.property('hide_followers', true)
|
expect(parseUser(user)).to.have.property('hide_followers', true)
|
||||||
expect(parseUser(user)).to.have.property('hide_follows', false)
|
expect(parseUser(user)).to.have.property('hide_follows', false)
|
||||||
|
expect(parseUser(user)).to.have.property('hide_followers_count', false)
|
||||||
|
expect(parseUser(user)).to.have.property('hide_follows_count', true)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -343,5 +345,16 @@ describe('API Entities normalizer', () => {
|
||||||
const result = addEmojis('Admin add the :tenshi: emoji', emojis)
|
const result = addEmojis('Admin add the :tenshi: emoji', emojis)
|
||||||
expect(result).to.equal('Admin add the :tenshi: emoji')
|
expect(result).to.equal('Admin add the :tenshi: emoji')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('Doesn\'t blow up on regex special characters', () => {
|
||||||
|
const emojis = makeMockEmojiMasto([{
|
||||||
|
shortcode: 'c++'
|
||||||
|
}, {
|
||||||
|
shortcode: '[a-z] {|}*'
|
||||||
|
}])
|
||||||
|
const result = addEmojis('This post has :c++: emoji and :[a-z] {|}*: emoji', emojis)
|
||||||
|
expect(result).to.include('title=\'c++\'')
|
||||||
|
expect(result).to.include('title=\'[a-z] {|}*\'')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue