Compare commits
47 Commits
Author | SHA1 | Date | |
---|---|---|---|
0926c92245 | |||
e880d7da6c | |||
6ad90ecfa8 | |||
fbd51f0079 | |||
60b60fda8d | |||
612db86141 | |||
49911d15d3 | |||
8a1aa08200 | |||
64bd853b07 | |||
e7890eb6b9 | |||
b59db33435 | |||
ef5a4bc078 | |||
f662319bf1 | |||
83277ccbaf | |||
bf1a4a4be3 | |||
7bd39f44a7 | |||
0b5ac1daec | |||
3f86bf6557 | |||
a251c9a1a7 | |||
c696666b32 | |||
a8ade110e6 | |||
f5cad1b142 | |||
b247852bf8 | |||
c5feafb893 | |||
99e6769f48 | |||
c78e75db78 | |||
d90292eb0c | |||
c972869688 | |||
409967a17f | |||
ed848c986c | |||
d6cbfa5b06 | |||
d032e89f48 | |||
c6c58daaef | |||
f9c1923fa8 | |||
dc36113c06 | |||
f4a5ef8292 | |||
f221c4da64 | |||
b1716a1dda | |||
b25a8ef5d4 | |||
4317e76104 | |||
1529a2eded | |||
893bac8b3b | |||
605700b98e | |||
4ad51672c1 | |||
89a58dc596 | |||
e1672e539b | |||
518f6e9677 |
11
.travis.yml
11
.travis.yml
@ -7,7 +7,7 @@ notifications:
|
||||
language: node_js
|
||||
|
||||
node_js:
|
||||
- 9.8.0
|
||||
- 10.1.0
|
||||
|
||||
env:
|
||||
- CXX=g++-4.8 NODE_ENV=production
|
||||
@ -22,19 +22,14 @@ addons:
|
||||
|
||||
cache:
|
||||
directories:
|
||||
# パッケージをキャッシュすると本来は動かないはずなのに動いてしまう
|
||||
# 場合があり危険なのでキャッシュはしない:
|
||||
#- node_modules
|
||||
- node_modules
|
||||
|
||||
services:
|
||||
- mongodb
|
||||
- redis-server
|
||||
|
||||
before_script:
|
||||
# Travisはproduction環境なので(10行目により)、
|
||||
# npm install しただけでは devDependencies はインストールされないので、
|
||||
# --only=dev オプションを付けてそれらもインストールされるようにする:
|
||||
- npm install --only=dev
|
||||
- npm install
|
||||
|
||||
# 設定ファイルを配置
|
||||
- cp ./.travis/default.yml ./.config
|
||||
|
@ -19,7 +19,7 @@ common:
|
||||
wednesday: "Mi"
|
||||
thursday: "Do"
|
||||
friday: "Fr"
|
||||
saturday: "土"
|
||||
saturday: "Sa"
|
||||
reactions:
|
||||
like: "Gefällt mir"
|
||||
love: "Lieben"
|
||||
@ -142,10 +142,10 @@ common/views/components/stream-indicator.vue:
|
||||
common/views/components/twitter-setting.vue:
|
||||
description: "お使いのTwitterアカウントをお使いのMisskeyアカウントに接続しておくと、プロフィールでTwitterアカウント情報が表示されるようになったり、Twitterを用いた便利なサインインを利用できるようになります。"
|
||||
connected-to: "次のTwitterアカウントに接続されています"
|
||||
detail: "詳細..."
|
||||
reconnect: "再接続する"
|
||||
connect: "Twitterと接続する"
|
||||
disconnect: "切断する"
|
||||
detail: "Mehr..."
|
||||
reconnect: "Erneut verbinden"
|
||||
connect: "Mit Twitter verbinden"
|
||||
disconnect: "Trennen"
|
||||
common/views/components/uploader.vue:
|
||||
waiting: "待機中"
|
||||
common/views/widgets/broadcast.vue:
|
||||
@ -221,6 +221,31 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "Ein Verzeichnis erstellen"
|
||||
upload: "Eine Datei hochladen"
|
||||
url-upload: "Von einer URL hochladen"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
channel: "チャンネル"
|
||||
access-log: "アクセスログ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "Nachrichten"
|
||||
desktop/views/components/notes.note.vue:
|
||||
@ -273,6 +298,7 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
@ -300,6 +326,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
@ -344,6 +371,17 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "Einen neuen Post erstellen"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "Suchen"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
fetching: "読み込んでいます"
|
||||
desktop/views/pages/note.vue:
|
||||
prev: "Vorheriger Kommentar"
|
||||
next: "Nächster Kommentar"
|
||||
@ -435,6 +473,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
|
@ -19,7 +19,7 @@ common:
|
||||
wednesday: "W"
|
||||
thursday: "T"
|
||||
friday: "F"
|
||||
saturday: "S"
|
||||
saturday: "土"
|
||||
reactions:
|
||||
like: "Like"
|
||||
love: "Love"
|
||||
@ -221,6 +221,31 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "Create a folder"
|
||||
upload: "Upload a file"
|
||||
url-upload: "Upload from a URL"
|
||||
desktop/views/components/home.vue:
|
||||
done: "Submit"
|
||||
add-widget: "Add widget:"
|
||||
profile: "Profile"
|
||||
calendar: "Calendar"
|
||||
timemachine: "Calendar (Time Machine)"
|
||||
activity: "Activity"
|
||||
rss: "RSS reader"
|
||||
trends: "Trends"
|
||||
photostream: "Photostream"
|
||||
slideshow: "Slideshow"
|
||||
version: "Version"
|
||||
broadcast: "Broadcast"
|
||||
notifications: "Notifications"
|
||||
users: "Recommended users"
|
||||
polls: "Polls"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "Messaging"
|
||||
channel: "Channel"
|
||||
access-log: "Access log"
|
||||
server: "Server info"
|
||||
donation: "Donation"
|
||||
nav: "Navigation"
|
||||
tips: "Tips"
|
||||
add: "Add"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "Messaging"
|
||||
desktop/views/components/notes.note.vue:
|
||||
@ -273,6 +298,7 @@ desktop/views/components/settings.vue:
|
||||
mute: "Mute"
|
||||
drive: "Drive"
|
||||
security: "Security"
|
||||
signin: "Sign in history"
|
||||
password: "Password"
|
||||
2fa: "Two-factor authentication"
|
||||
other: "Other"
|
||||
@ -300,6 +326,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "Please do not show this token to third parties (do not enter it somewhere else other than here) otherwise your account could get compromised."
|
||||
regeneration-of-token: "In the unlikely event that this token leaks out you can regenerate it."
|
||||
regenerate-token: "Regenerate the token"
|
||||
token: "Token:"
|
||||
enter-password: "Please enter the password"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "No authorized apps"
|
||||
@ -344,6 +371,17 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "Compose new Post"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "Search"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "Create list"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "Posts"
|
||||
following: "Following"
|
||||
followers: "Followers"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "All"
|
||||
iknow: "You know"
|
||||
load-more: "More"
|
||||
fetching: "Loading…"
|
||||
desktop/views/pages/note.vue:
|
||||
prev: "Previous note"
|
||||
next: "Next note"
|
||||
@ -435,6 +473,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "No notifications"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "Post"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "Reply to this note..."
|
||||
note-placeholder: "What's happening?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
|
@ -221,6 +221,31 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
url-upload: "URLからアップロード"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
channel: "チャンネル"
|
||||
access-log: "アクセスログ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/components/notes.note.vue:
|
||||
@ -273,6 +298,7 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
@ -300,6 +326,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
@ -344,6 +371,17 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "新規投稿"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
fetching: "読み込んでいます"
|
||||
desktop/views/pages/note.vue:
|
||||
prev: "前の投稿"
|
||||
next: "次の投稿"
|
||||
@ -435,6 +473,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
|
@ -19,7 +19,7 @@ common:
|
||||
wednesday: "M"
|
||||
thursday: "J"
|
||||
friday: "V"
|
||||
saturday: "S"
|
||||
saturday: "土"
|
||||
reactions:
|
||||
like: "Aime"
|
||||
love: "Adore"
|
||||
@ -221,6 +221,31 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "Créer un dossier"
|
||||
upload: "Uploader un fichier"
|
||||
url-upload: "Uploader d'un URL"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
channel: "チャンネル"
|
||||
access-log: "アクセスログ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "Messagerie"
|
||||
desktop/views/components/notes.note.vue:
|
||||
@ -273,6 +298,7 @@ desktop/views/components/settings.vue:
|
||||
mute: "Mettre en sourdine"
|
||||
drive: "Drive"
|
||||
security: "Sécurité"
|
||||
signin: "サインイン履歴"
|
||||
password: "Mot de Passe"
|
||||
2fa: "Vérification en deux étapes"
|
||||
other: "Autres"
|
||||
@ -300,6 +326,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "Regenerer le token"
|
||||
token: "Token:"
|
||||
enter-password: "Veuillez entrer le mot de passe"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "Aucune application authorisée"
|
||||
@ -344,6 +371,17 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "Composer un nouveau post"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "Chercher"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
fetching: "読み込んでいます"
|
||||
desktop/views/pages/note.vue:
|
||||
prev: "Note précédente"
|
||||
next: "Note suivante"
|
||||
@ -435,6 +473,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "Pas de notifications"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "Poster"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "Répondre à cette note"
|
||||
note-placeholder: "Qu'est-ce qu'il se passe?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
|
@ -221,6 +221,31 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
url-upload: "URLからアップロード"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
channel: "チャンネル"
|
||||
access-log: "アクセスログ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/components/notes.note.vue:
|
||||
@ -273,6 +298,7 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
@ -300,6 +326,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
@ -344,6 +371,17 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "新規投稿"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
fetching: "読み込んでいます"
|
||||
desktop/views/pages/note.vue:
|
||||
prev: "前の投稿"
|
||||
next: "次の投稿"
|
||||
@ -435,6 +473,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
|
@ -253,6 +253,32 @@ desktop/views/components/drive.vue:
|
||||
upload: "ファイルをアップロード"
|
||||
url-upload: "URLからアップロード"
|
||||
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
channel: "チャンネル"
|
||||
access-log: "アクセスログ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
|
||||
@ -312,6 +338,7 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
@ -341,6 +368,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
|
||||
desktop/views/components/settings.app.vue:
|
||||
@ -396,6 +424,20 @@ desktop/views/components/ui.header.post.vue:
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
fetching: "読み込んでいます"
|
||||
|
||||
desktop/views/pages/note.vue:
|
||||
prev: "前の投稿"
|
||||
next: "次の投稿"
|
||||
@ -510,6 +552,9 @@ mobile/views/components/notifications.vue:
|
||||
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
|
||||
|
@ -221,6 +221,31 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
url-upload: "URLからアップロード"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
channel: "チャンネル"
|
||||
access-log: "アクセスログ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/components/notes.note.vue:
|
||||
@ -273,6 +298,7 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
@ -300,6 +326,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
@ -344,6 +371,17 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "新規投稿"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
fetching: "読み込んでいます"
|
||||
desktop/views/pages/note.vue:
|
||||
prev: "前の投稿"
|
||||
next: "次の投稿"
|
||||
@ -435,6 +473,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
|
@ -157,7 +157,7 @@ common/views/widgets/donation.vue:
|
||||
title: "Dotacje"
|
||||
text: "Aby utrzymywać Misskey, płacimy za domenę, serwery i nie tylko… Nie zarabiamy na tym, więc byłoby nam miło, gdybyśmy uzyskali od Ciebie dotację. Jeżeli jesteś zainteresowany, skontaktuj się z {}. Dziękujemy za wsparcie!"
|
||||
common/views/widgets/photo-stream.vue:
|
||||
title: "フォトストリーム"
|
||||
title: "Photostream"
|
||||
no-photos: "Brak zdjęć"
|
||||
common/views/widgets/server.vue:
|
||||
title: "Informacje o serwerze"
|
||||
@ -221,6 +221,31 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "Utwórz katalog"
|
||||
upload: "Wyślij plik"
|
||||
url-upload: "Wyślij z adresu URL"
|
||||
desktop/views/components/home.vue:
|
||||
done: "Wyślij"
|
||||
add-widget: "Dodaj widżet:"
|
||||
profile: "Profil"
|
||||
calendar: "Kalendarz"
|
||||
timemachine: "Kalendarz (wehikuł czasu)"
|
||||
activity: "Aktywność"
|
||||
rss: "Czytnik RSS"
|
||||
trends: "Na czasie"
|
||||
photostream: "Photostream"
|
||||
slideshow: "Pokaz slajdów"
|
||||
version: "Wersja"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "Powiadomienia"
|
||||
users: "Polecani użytkownicy"
|
||||
polls: "Ankiety"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "Wiadomości"
|
||||
channel: "Kanał"
|
||||
access-log: "アクセスログ"
|
||||
server: "Informacje o serwerze"
|
||||
donation: "Dotacje"
|
||||
nav: "Nawigacja"
|
||||
tips: "Wskazówki"
|
||||
add: "Dodaj"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "Wiadomości"
|
||||
desktop/views/components/notes.note.vue:
|
||||
@ -273,6 +298,7 @@ desktop/views/components/settings.vue:
|
||||
mute: "Wyciszanie"
|
||||
drive: "Dysk"
|
||||
security: "Bezpieczeństwo"
|
||||
signin: "Historia logowań"
|
||||
password: "Hasło"
|
||||
2fa: "Uwierzytelnianie dwuetapowe"
|
||||
other: "Inne"
|
||||
@ -300,6 +326,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "Nie pokazuj tego tokenu osobom trzecim (nie wprowadzaj go nigdzie indziej), aby konto nie trafiło w niepowołane ręce."
|
||||
regeneration-of-token: "W przypadku wycieku tokenu, możesz wygenerować nowy."
|
||||
regenerate-token: "Wygeneruj nowy token"
|
||||
token: "Token:"
|
||||
enter-password: "Wprowadź hasło"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "Brak zautoryzowanych aplikacji"
|
||||
@ -321,10 +348,10 @@ desktop/views/components/settings.profile.vue:
|
||||
birthday: "Data urodzenia"
|
||||
save: "Aktualizuj profil"
|
||||
desktop/views/components/timeline.vue:
|
||||
home: "ホーム"
|
||||
local: "ローカル"
|
||||
global: "グローバル"
|
||||
list: "リスト"
|
||||
home: "Strona główna"
|
||||
local: "Lokalne"
|
||||
global: "Globalne"
|
||||
list: "Listy"
|
||||
desktop/views/components/ui.header.account.vue:
|
||||
profile: "Twój profil"
|
||||
drive: "Dysk"
|
||||
@ -344,6 +371,17 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "Utwórz nowy wpis"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "Szukaj"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "Utwórz listę"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "Wpisy"
|
||||
following: "Śledzeni"
|
||||
followers: "Śledzący"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "Wszyscy"
|
||||
iknow: "Znasz"
|
||||
load-more: "Więcej"
|
||||
fetching: "Ładowanie…"
|
||||
desktop/views/pages/note.vue:
|
||||
prev: "Poprzedni wpis"
|
||||
next: "Następny wpis"
|
||||
@ -379,7 +417,7 @@ desktop/views/pages/user/user.profile.vue:
|
||||
muted: "Wyciszyłeś"
|
||||
unmute: "Cofnij wyciszenie"
|
||||
desktop/views/widgets/messaging.vue:
|
||||
title: "メッセージ"
|
||||
title: "Wiadomości"
|
||||
desktop/views/widgets/notifications.vue:
|
||||
title: "Powiadomienia"
|
||||
settings: "Ustawienia"
|
||||
@ -426,7 +464,7 @@ mobile/views/components/follow-button.vue:
|
||||
follow: "Śledź"
|
||||
unfollow: "Przestań śledzić"
|
||||
mobile/views/components/note.vue:
|
||||
reposted-by: "{}がRenote"
|
||||
reposted-by: "Udostępniono przez {}"
|
||||
mobile/views/components/note-detail.vue:
|
||||
reply: "Odpowiedz"
|
||||
reaction: "Reakcja"
|
||||
@ -435,6 +473,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "Brak powiadomień"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "Wyślij"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "Odpowiedź na ten wpis…"
|
||||
note-placeholder: "Co się dzieje?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
@ -501,7 +542,7 @@ mobile/views/pages/selectdrive.vue:
|
||||
mobile/views/pages/settings.vue:
|
||||
signed-in-as: "Zalogowany jako {}"
|
||||
profile: "Profil"
|
||||
twitter: "Twitter連携"
|
||||
twitter: "Połączenie z Twitterem"
|
||||
signin-history: "Historia logowań"
|
||||
settings: "Ustawienia"
|
||||
signout: "Wyloguj"
|
||||
|
@ -221,6 +221,31 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
url-upload: "URLからアップロード"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
channel: "チャンネル"
|
||||
access-log: "アクセスログ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/components/notes.note.vue:
|
||||
@ -273,6 +298,7 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
@ -300,6 +326,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
@ -344,6 +371,17 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "新規投稿"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
fetching: "読み込んでいます"
|
||||
desktop/views/pages/note.vue:
|
||||
prev: "前の投稿"
|
||||
next: "次の投稿"
|
||||
@ -435,6 +473,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
|
@ -221,6 +221,31 @@ desktop/views/components/drive.vue:
|
||||
create-folder: "フォルダーを作成"
|
||||
upload: "ファイルをアップロード"
|
||||
url-upload: "URLからアップロード"
|
||||
desktop/views/components/home.vue:
|
||||
done: "完了"
|
||||
add-widget: "ウィジェットを追加:"
|
||||
profile: "プロフィール"
|
||||
calendar: "カレンダー"
|
||||
timemachine: "カレンダー(タイムマシン)"
|
||||
activity: "アクティビティ"
|
||||
rss: "RSSリーダー"
|
||||
trends: "トレンド"
|
||||
photostream: "フォトストリーム"
|
||||
slideshow: "スライドショー"
|
||||
version: "バージョン"
|
||||
broadcast: "ブロードキャスト"
|
||||
notifications: "通知"
|
||||
users: "おすすめユーザー"
|
||||
polls: "投票"
|
||||
post-form: "投稿フォーム"
|
||||
messaging: "メッセージ"
|
||||
channel: "チャンネル"
|
||||
access-log: "アクセスログ"
|
||||
server: "サーバー情報"
|
||||
donation: "寄付のお願い"
|
||||
nav: "ナビゲーション"
|
||||
tips: "ヒント"
|
||||
add: "追加"
|
||||
desktop/views/components/messaging-window.vue:
|
||||
title: "メッセージ"
|
||||
desktop/views/components/notes.note.vue:
|
||||
@ -273,6 +298,7 @@ desktop/views/components/settings.vue:
|
||||
mute: "ミュート"
|
||||
drive: "ドライブ"
|
||||
security: "セキュリティ"
|
||||
signin: "サインイン履歴"
|
||||
password: "パスワード"
|
||||
2fa: "二段階認証"
|
||||
other: "その他"
|
||||
@ -300,6 +326,7 @@ desktop/views/components/settings.api.vue:
|
||||
caution: "アカウントを不正利用される可能性があるため、このトークンは第三者に教えないでください(アプリなどにも入力しないでください)。"
|
||||
regeneration-of-token: "万が一このトークンが漏れたりその可能性がある場合はトークンを再生成できます。"
|
||||
regenerate-token: "トークンを再生成"
|
||||
token: "Token:"
|
||||
enter-password: "パスワードを入力してください"
|
||||
desktop/views/components/settings.app.vue:
|
||||
no-apps: "連携しているアプリケーションはありません"
|
||||
@ -344,6 +371,17 @@ desktop/views/components/ui.header.post.vue:
|
||||
post: "新規投稿"
|
||||
desktop/views/components/ui.header.search.vue:
|
||||
placeholder: "検索"
|
||||
desktop/views/components/user-lists-window.vue:
|
||||
create-list: "リストを作成"
|
||||
desktop/views/components/user-preview.vue:
|
||||
notes: "投稿"
|
||||
following: "フォロー"
|
||||
followers: "フォロワー"
|
||||
desktop/views/components/users-list.vue:
|
||||
all: "すべて"
|
||||
iknow: "知り合い"
|
||||
load-more: "もっと"
|
||||
fetching: "読み込んでいます"
|
||||
desktop/views/pages/note.vue:
|
||||
prev: "前の投稿"
|
||||
next: "次の投稿"
|
||||
@ -435,6 +473,9 @@ mobile/views/components/notifications.vue:
|
||||
empty: "ありません!"
|
||||
mobile/views/components/post-form.vue:
|
||||
submit: "投稿"
|
||||
reply: "返信"
|
||||
renote: "Renote"
|
||||
renote-placeholder: "この投稿を引用... (オプション)"
|
||||
reply-placeholder: "この投稿への返信..."
|
||||
note-placeholder: "いまどうしてる?"
|
||||
mobile/views/components/sub-note-content.vue:
|
||||
|
23
package.json
23
package.json
@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "misskey",
|
||||
"author": "syuilo <i@syuilo.com>",
|
||||
"version": "2.7.1",
|
||||
"clientVersion": "1.0.5345",
|
||||
"version": "2.9.0",
|
||||
"clientVersion": "1.0.5394",
|
||||
"codename": "nighthike",
|
||||
"main": "./built/index.js",
|
||||
"private": true,
|
||||
@ -31,8 +31,6 @@
|
||||
"@prezzemolo/rap": "0.1.2",
|
||||
"@prezzemolo/zip": "0.0.3",
|
||||
"@types/bcryptjs": "2.4.1",
|
||||
"@types/chai": "4.1.3",
|
||||
"@types/chai-http": "3.0.4",
|
||||
"@types/debug": "0.0.30",
|
||||
"@types/deep-equal": "1.0.1",
|
||||
"@types/elasticsearch": "5.0.23",
|
||||
@ -58,7 +56,7 @@
|
||||
"@types/koa-multer": "1.0.0",
|
||||
"@types/koa-router": "7.0.28",
|
||||
"@types/koa-send": "4.1.1",
|
||||
"@types/koa-views": "^2.0.3",
|
||||
"@types/koa-views": "2.0.3",
|
||||
"@types/koa__cors": "2.2.2",
|
||||
"@types/kue": "0.11.8",
|
||||
"@types/license-checker": "15.0.0",
|
||||
@ -69,7 +67,7 @@
|
||||
"@types/ms": "0.7.30",
|
||||
"@types/node": "10.1.0",
|
||||
"@types/nopt": "3.0.29",
|
||||
"@types/parse5": "^3.0.0",
|
||||
"@types/parse5": "3.0.0",
|
||||
"@types/pug": "2.0.4",
|
||||
"@types/qrcode": "0.8.1",
|
||||
"@types/ratelimiter": "2.1.28",
|
||||
@ -78,7 +76,7 @@
|
||||
"@types/request-promise-native": "1.0.14",
|
||||
"@types/rimraf": "2.0.2",
|
||||
"@types/seedrandom": "2.4.27",
|
||||
"@types/single-line-log": "^1.1.0",
|
||||
"@types/single-line-log": "1.1.0",
|
||||
"@types/speakeasy": "2.0.2",
|
||||
"@types/tmp": "0.0.33",
|
||||
"@types/uuid": "3.4.3",
|
||||
@ -92,8 +90,6 @@
|
||||
"bcryptjs": "2.4.3",
|
||||
"bootstrap-vue": "2.0.0-rc.6",
|
||||
"cafy": "8.0.0",
|
||||
"chai": "4.1.2",
|
||||
"chai-http": "4.0.0",
|
||||
"chalk": "2.4.1",
|
||||
"crc-32": "1.2.0",
|
||||
"css-loader": "0.28.11",
|
||||
@ -148,7 +144,7 @@
|
||||
"koa-router": "7.4.0",
|
||||
"koa-send": "4.1.3",
|
||||
"koa-slow": "2.1.0",
|
||||
"koa-views": "^6.1.4",
|
||||
"koa-views": "6.1.4",
|
||||
"kue": "0.11.6",
|
||||
"license-checker": "19.0.0",
|
||||
"loader-utils": "1.1.0",
|
||||
@ -167,10 +163,10 @@
|
||||
"object-assign-deep": "0.4.0",
|
||||
"on-build-webpack": "0.1.0",
|
||||
"os-utils": "0.0.14",
|
||||
"parse5": "^4.0.0",
|
||||
"parse5": "4.0.0",
|
||||
"progress-bar-webpack-plugin": "1.11.0",
|
||||
"prominence": "0.2.0",
|
||||
"promise-sequential": "^1.1.1",
|
||||
"promise-sequential": "1.1.1",
|
||||
"pug": "2.0.3",
|
||||
"punycode": "2.1.0",
|
||||
"qrcode": "1.2.0",
|
||||
@ -185,7 +181,7 @@
|
||||
"s-age": "1.1.2",
|
||||
"sass-loader": "7.0.1",
|
||||
"seedrandom": "2.4.3",
|
||||
"single-line-log": "^1.1.2",
|
||||
"single-line-log": "1.1.2",
|
||||
"speakeasy": "2.0.0",
|
||||
"style-loader": "0.21.0",
|
||||
"stylus": "0.54.5",
|
||||
@ -218,7 +214,6 @@
|
||||
"webfinger.js": "2.6.6",
|
||||
"webpack": "4.8.3",
|
||||
"webpack-cli": "2.1.3",
|
||||
"webpack-replace-loader": "1.3.0",
|
||||
"websocket": "1.0.26",
|
||||
"ws": "5.1.1",
|
||||
"xev": "2.0.0"
|
||||
|
16
src/client/app/common/scripts/can-hide-text.ts
Normal file
16
src/client/app/common/scripts/can-hide-text.ts
Normal file
@ -0,0 +1,16 @@
|
||||
export default function(note) {
|
||||
if (note.text == null) return true;
|
||||
|
||||
let txt = note.text;
|
||||
|
||||
if (note.media) {
|
||||
note.media.forEach(file => {
|
||||
txt = txt.replace(file.url, '');
|
||||
if (file.src) txt = txt.replace(file.src, '');
|
||||
});
|
||||
|
||||
if (txt == '') return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
@ -126,16 +126,21 @@ root(isDark)
|
||||
line-height 16px
|
||||
vertical-align top
|
||||
|
||||
@media (max-width 500px)
|
||||
font-size 8px
|
||||
border none
|
||||
|
||||
@media (max-width 700px)
|
||||
> .thumbnail
|
||||
width 70px
|
||||
position relative
|
||||
width 100%
|
||||
height 100px
|
||||
|
||||
& + article
|
||||
left 70px
|
||||
width calc(100% - 70px)
|
||||
left 0
|
||||
width 100%
|
||||
|
||||
@media (max-width 500px)
|
||||
font-size 8px
|
||||
|
||||
> .thumbnail
|
||||
height 70px
|
||||
|
||||
> article
|
||||
padding 8px
|
||||
|
@ -1,37 +1,37 @@
|
||||
<template>
|
||||
<div class="mkw-calendar"
|
||||
:data-melt="props.design == 1"
|
||||
:data-special="special"
|
||||
:data-mobile="isMobile"
|
||||
>
|
||||
<div class="calendar" :data-is-holiday="isHoliday">
|
||||
<p class="month-and-year">
|
||||
<span class="year">{{ year }}年</span>
|
||||
<span class="month">{{ month }}月</span>
|
||||
</p>
|
||||
<p class="day">{{ day }}日</p>
|
||||
<p class="week-day">{{ weekDay }}曜日</p>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div>
|
||||
<p>今日:<b>{{ dayP.toFixed(1) }}%</b></p>
|
||||
<div class="meter">
|
||||
<div class="val" :style="{ width: `${dayP}%` }"></div>
|
||||
<div class="mkw-calendar" :data-special="special" :data-mobile="isMobile">
|
||||
<mk-widget-container :naked="props.design == 1" :show-header="false">
|
||||
<div class="mkw-calendar--body">
|
||||
<div class="calendar" :data-is-holiday="isHoliday">
|
||||
<p class="month-and-year">
|
||||
<span class="year">{{ year }}年</span>
|
||||
<span class="month">{{ month }}月</span>
|
||||
</p>
|
||||
<p class="day">{{ day }}日</p>
|
||||
<p class="week-day">{{ weekDay }}曜日</p>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div>
|
||||
<p>今日:<b>{{ dayP.toFixed(1) }}%</b></p>
|
||||
<div class="meter">
|
||||
<div class="val" :style="{ width: `${dayP}%` }"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>今月:<b>{{ monthP.toFixed(1) }}%</b></p>
|
||||
<div class="meter">
|
||||
<div class="val" :style="{ width: `${monthP}%` }"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>今年:<b>{{ yearP.toFixed(1) }}%</b></p>
|
||||
<div class="meter">
|
||||
<div class="val" :style="{ width: `${yearP}%` }"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>今月:<b>{{ monthP.toFixed(1) }}%</b></p>
|
||||
<div class="meter">
|
||||
<div class="val" :style="{ width: `${monthP}%` }"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<p>今年:<b>{{ yearP.toFixed(1) }}%</b></p>
|
||||
<div class="meter">
|
||||
<div class="val" :style="{ width: `${yearP}%` }"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</mk-widget-container>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -111,93 +111,82 @@ export default define({
|
||||
@import '~const.styl'
|
||||
|
||||
root(isDark)
|
||||
padding 16px 0
|
||||
color isDark ? #c5ced6 :#777
|
||||
background isDark ? #282C37 : #fff
|
||||
border solid 1px rgba(#000, 0.075)
|
||||
border-radius 6px
|
||||
|
||||
&[data-special='on-new-years-day']
|
||||
border-color #ef95a0
|
||||
|
||||
&[data-melt]
|
||||
background transparent
|
||||
border none
|
||||
.mkw-calendar--body
|
||||
padding 16px 0
|
||||
color isDark ? #c5ced6 : #777
|
||||
|
||||
&[data-mobile]
|
||||
border none
|
||||
border-radius 8px
|
||||
box-shadow 0 0 0 1px rgba(#000, 0.2)
|
||||
&:after
|
||||
content ""
|
||||
display block
|
||||
clear both
|
||||
|
||||
&:after
|
||||
content ""
|
||||
display block
|
||||
clear both
|
||||
> .calendar
|
||||
float left
|
||||
width 60%
|
||||
text-align center
|
||||
|
||||
> .calendar
|
||||
float left
|
||||
width 60%
|
||||
text-align center
|
||||
|
||||
&[data-is-holiday]
|
||||
> .day
|
||||
color #ef95a0
|
||||
|
||||
> p
|
||||
margin 0
|
||||
line-height 18px
|
||||
font-size 14px
|
||||
|
||||
> span
|
||||
margin 0 4px
|
||||
|
||||
> .day
|
||||
margin 10px 0
|
||||
line-height 32px
|
||||
font-size 28px
|
||||
|
||||
> .info
|
||||
display block
|
||||
float left
|
||||
width 40%
|
||||
padding 0 16px 0 0
|
||||
|
||||
> div
|
||||
margin-bottom 8px
|
||||
|
||||
&:last-child
|
||||
margin-bottom 4px
|
||||
&[data-is-holiday]
|
||||
> .day
|
||||
color #ef95a0
|
||||
|
||||
> p
|
||||
margin 0 0 2px 0
|
||||
font-size 12px
|
||||
margin 0
|
||||
line-height 18px
|
||||
color isDark ? #7a8692 : #888
|
||||
font-size 14px
|
||||
|
||||
> b
|
||||
margin-left 2px
|
||||
> span
|
||||
margin 0 4px
|
||||
|
||||
> .meter
|
||||
width 100%
|
||||
overflow hidden
|
||||
background isDark ? #1c1f25 : #eee
|
||||
border-radius 8px
|
||||
> .day
|
||||
margin 10px 0
|
||||
line-height 32px
|
||||
font-size 28px
|
||||
|
||||
> .val
|
||||
height 4px
|
||||
background $theme-color
|
||||
> .info
|
||||
display block
|
||||
float left
|
||||
width 40%
|
||||
padding 0 16px 0 0
|
||||
|
||||
&:nth-child(1)
|
||||
> .meter > .val
|
||||
background #f7796c
|
||||
> div
|
||||
margin-bottom 8px
|
||||
|
||||
&:nth-child(2)
|
||||
> .meter > .val
|
||||
background #a1de41
|
||||
&:last-child
|
||||
margin-bottom 4px
|
||||
|
||||
&:nth-child(3)
|
||||
> .meter > .val
|
||||
background #41ddde
|
||||
> p
|
||||
margin 0 0 2px 0
|
||||
font-size 12px
|
||||
line-height 18px
|
||||
color isDark ? #7a8692 : #888
|
||||
|
||||
> b
|
||||
margin-left 2px
|
||||
|
||||
> .meter
|
||||
width 100%
|
||||
overflow hidden
|
||||
background isDark ? #1c1f25 : #eee
|
||||
border-radius 8px
|
||||
|
||||
> .val
|
||||
height 4px
|
||||
background $theme-color
|
||||
|
||||
&:nth-child(1)
|
||||
> .meter > .val
|
||||
background #f7796c
|
||||
|
||||
&:nth-child(2)
|
||||
> .meter > .val
|
||||
background #a1de41
|
||||
|
||||
&:nth-child(3)
|
||||
> .meter > .val
|
||||
background #41ddde
|
||||
|
||||
.mkw-calendar[data-darkmode]
|
||||
root(true)
|
||||
|
@ -1,10 +1,10 @@
|
||||
<template>
|
||||
<div class="mkw-rss" :data-mobile="isMobile">
|
||||
<div class="mkw-rss">
|
||||
<mk-widget-container :show-header="!props.compact">
|
||||
<template slot="header">%fa:rss-square%RSS</template>
|
||||
<button slot="func" title="設定" @click="setting">%fa:cog%</button>
|
||||
|
||||
<div class="mkw-rss--body">
|
||||
<div class="mkw-rss--body" :data-mobile="isMobile">
|
||||
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:common.loading%<mk-ellipsis/></p>
|
||||
<div class="feed" v-else>
|
||||
<a v-for="item in items" :href="item.link" target="_blank">{{ item.title }}</a>
|
||||
@ -85,15 +85,17 @@ root(isDark)
|
||||
margin-right 4px
|
||||
|
||||
&[data-mobile]
|
||||
background isDark ? #21242f : #f3f3f3
|
||||
|
||||
.feed
|
||||
padding 0
|
||||
font-size 1em
|
||||
|
||||
> a
|
||||
padding 8px 16px
|
||||
border-bottom none
|
||||
|
||||
&:nth-child(even)
|
||||
background rgba(#000, 0.05)
|
||||
background isDark ? rgba(#000, 0.05) : rgba(#fff, 0.7)
|
||||
|
||||
.mkw-rss[data-darkmode]
|
||||
root(true)
|
||||
|
@ -1,34 +1,34 @@
|
||||
<template>
|
||||
<div class="mk-home" :data-customize="customize">
|
||||
<div class="customize" v-if="customize">
|
||||
<router-link to="/">%fa:check%完了</router-link>
|
||||
<router-link to="/">%fa:check%%i18n:@done%</router-link>
|
||||
<div>
|
||||
<div class="adder">
|
||||
<p>ウィジェットを追加:</p>
|
||||
<p>%i18n:@add-widget%</p>
|
||||
<select v-model="widgetAdderSelected">
|
||||
<option value="profile">プロフィール</option>
|
||||
<option value="calendar">カレンダー</option>
|
||||
<option value="timemachine">カレンダー(タイムマシン)</option>
|
||||
<option value="activity">アクティビティ</option>
|
||||
<option value="rss">RSSリーダー</option>
|
||||
<option value="trends">トレンド</option>
|
||||
<option value="photo-stream">フォトストリーム</option>
|
||||
<option value="slideshow">スライドショー</option>
|
||||
<option value="version">バージョン</option>
|
||||
<option value="broadcast">ブロードキャスト</option>
|
||||
<option value="notifications">通知</option>
|
||||
<option value="users">おすすめユーザー</option>
|
||||
<option value="polls">投票</option>
|
||||
<option value="post-form">投稿フォーム</option>
|
||||
<option value="messaging">メッセージ</option>
|
||||
<option value="channel">チャンネル</option>
|
||||
<option value="access-log">アクセスログ</option>
|
||||
<option value="server">サーバー情報</option>
|
||||
<option value="donation">寄付のお願い</option>
|
||||
<option value="nav">ナビゲーション</option>
|
||||
<option value="tips">ヒント</option>
|
||||
<option value="profile">%i18n:@profile%</option>
|
||||
<option value="calendar">%i18n:@calendar%</option>
|
||||
<option value="timemachine">%i18n:@timemachine%</option>
|
||||
<option value="activity">%i18n:@activity%</option>
|
||||
<option value="rss">%i18n:@rss%</option>
|
||||
<option value="trends">%i18n:@trends%</option>
|
||||
<option value="photo-stream">%i18n:@photo-stream%</option>
|
||||
<option value="slideshow">%i18n:@slideshow%</option>
|
||||
<option value="version">%i18n:@version%</option>
|
||||
<option value="broadcast">%i18n:@broadcast%</option>
|
||||
<option value="notifications">%i18n:@notifications%</option>
|
||||
<option value="users">%i18n:@users%</option>
|
||||
<option value="polls">%i18n:@polls%</option>
|
||||
<option value="post-form">%i18n:@post-form%</option>
|
||||
<option value="messaging">%i18n:@messaging%</option>
|
||||
<option value="channel">%i18n:@channel%</option>
|
||||
<option value="access-log">%i18n:@access-log%</option>
|
||||
<option value="server">%i18n:@server%</option>
|
||||
<option value="donation">%i18n:@donation%</option>
|
||||
<option value="nav">%i18n:@nav%</option>
|
||||
<option value="tips">%i18n:@tips%</option>
|
||||
</select>
|
||||
<button @click="addWidget">追加</button>
|
||||
<button @click="addWidget">%i18n:@add%</button>
|
||||
</div>
|
||||
<div class="trash">
|
||||
<x-draggable v-model="trash" :options="{ group: 'x' }" @add="onTrash"></x-draggable>
|
||||
|
@ -44,7 +44,7 @@
|
||||
<div class="text">
|
||||
<span v-if="p.isHidden" style="opacity: 0.5">(この投稿は非公開です)</span>
|
||||
<a class="reply" v-if="p.reply">%fa:reply%</a>
|
||||
<mk-note-html v-if="p.text" :text="p.text" :i="os.i" :class="$style.text"/>
|
||||
<mk-note-html v-if="p.text && !canHideText(p)" :text="p.text" :i="os.i" :class="$style.text"/>
|
||||
<a class="rp" v-if="p.renote">RP:</a>
|
||||
</div>
|
||||
<div class="media" v-if="p.media.length > 0">
|
||||
@ -94,6 +94,7 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import dateStringify from '../../../common/scripts/date-stringify';
|
||||
import canHideText from '../../../common/scripts/can-hide-text';
|
||||
import parse from '../../../../../text/parse';
|
||||
|
||||
import MkPostFormWindow from './post-form-window.vue';
|
||||
@ -130,16 +131,17 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
computed: {
|
||||
|
||||
isRenote(): boolean {
|
||||
return (this.note.renote &&
|
||||
this.note.text == null &&
|
||||
this.note.mediaIds.length == 0 &&
|
||||
this.note.poll == null);
|
||||
},
|
||||
|
||||
p(): any {
|
||||
return this.isRenote ? this.note.renote : this.note;
|
||||
},
|
||||
|
||||
reactionsCount(): number {
|
||||
return this.p.reactionCounts
|
||||
? Object.keys(this.p.reactionCounts)
|
||||
@ -147,9 +149,11 @@ export default Vue.extend({
|
||||
.reduce((a, b) => a + b)
|
||||
: 0;
|
||||
},
|
||||
|
||||
title(): string {
|
||||
return dateStringify(this.p.createdAt);
|
||||
},
|
||||
|
||||
urls(): string[] {
|
||||
if (this.p.text) {
|
||||
const ast = parse(this.p.text);
|
||||
@ -205,6 +209,8 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
methods: {
|
||||
canHideText,
|
||||
|
||||
capture(withHandler = false) {
|
||||
if ((this as any).os.isSignedIn) {
|
||||
this.connection.send({
|
||||
@ -214,6 +220,7 @@ export default Vue.extend({
|
||||
if (withHandler) this.connection.on('note-updated', this.onStreamNoteUpdated);
|
||||
}
|
||||
},
|
||||
|
||||
decapture(withHandler = false) {
|
||||
if ((this as any).os.isSignedIn) {
|
||||
this.connection.send({
|
||||
@ -223,9 +230,11 @@ export default Vue.extend({
|
||||
if (withHandler) this.connection.off('note-updated', this.onStreamNoteUpdated);
|
||||
}
|
||||
},
|
||||
|
||||
onStreamConnected() {
|
||||
this.capture();
|
||||
},
|
||||
|
||||
onStreamNoteUpdated(data) {
|
||||
const note = data.note;
|
||||
if (note.id == this.note.id) {
|
||||
@ -234,28 +243,33 @@ export default Vue.extend({
|
||||
this.note.renote = note;
|
||||
}
|
||||
},
|
||||
|
||||
reply() {
|
||||
(this as any).os.new(MkPostFormWindow, {
|
||||
reply: this.p
|
||||
});
|
||||
},
|
||||
|
||||
renote() {
|
||||
(this as any).os.new(MkRenoteFormWindow, {
|
||||
note: this.p
|
||||
});
|
||||
},
|
||||
|
||||
react() {
|
||||
(this as any).os.new(MkReactionPicker, {
|
||||
source: this.$refs.reactButton,
|
||||
note: this.p
|
||||
});
|
||||
},
|
||||
|
||||
menu() {
|
||||
(this as any).os.new(MkNoteMenu, {
|
||||
source: this.$refs.menuButton,
|
||||
note: this.p
|
||||
});
|
||||
},
|
||||
|
||||
onKeydown(e) {
|
||||
let shouldBeCancel = true;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="root api">
|
||||
<p>Token: <code>{{ os.i.token }}</code></p>
|
||||
<p>%i18n:@token% <code>{{ os.i.token }}</code></p>
|
||||
<p>%i18n:@intro%</p>
|
||||
<div class="ui info warn"><p>%fa:exclamation-triangle%%i18n:@caution%</p></div>
|
||||
<p>%i18n:@regeneration-of-token%</p>
|
||||
|
@ -101,7 +101,7 @@
|
||||
</section>
|
||||
|
||||
<section class="notification" v-show="page == 'notification'">
|
||||
<h1>通知</h1>
|
||||
<h1>%i18n:@notification%</h1>
|
||||
<mk-switch v-model="os.i.settings.autoWatch" @change="onChangeAutoWatch" text="投稿の自動ウォッチ">
|
||||
<span>リアクションしたり返信したりした投稿に関する通知を自動的に受け取るようにします。</span>
|
||||
</mk-switch>
|
||||
@ -118,7 +118,7 @@
|
||||
</section>
|
||||
|
||||
<section class="apps" v-show="page == 'apps'">
|
||||
<h1>アプリケーション</h1>
|
||||
<h1>%i18n:@apps%</h1>
|
||||
<x-apps/>
|
||||
</section>
|
||||
|
||||
@ -138,7 +138,7 @@
|
||||
</section>
|
||||
|
||||
<section class="signin" v-show="page == 'security'">
|
||||
<h1>サインイン履歴</h1>
|
||||
<h1>%i18n:@signin%</h1>
|
||||
<x-signins/>
|
||||
</section>
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
<span slot="header">%fa:list% リスト</span>
|
||||
|
||||
<div data-id="6e4caea3-d8f9-4ab7-96de-ab67fe8d5c82" :data-darkmode="_darkmode_">
|
||||
<button class="ui" @click="add">リストを作成</button>
|
||||
<button class="ui" @click="add">%i18n:@create-list%</button>
|
||||
<a v-for="list in lists" :key="list.id" @click="choice(list)">{{ list.title }}</a>
|
||||
</div>
|
||||
</mk-window>
|
||||
|
@ -10,13 +10,13 @@
|
||||
<div class="description">{{ u.description }}</div>
|
||||
<div class="status">
|
||||
<div>
|
||||
<p>投稿</p><a>{{ u.notesCount }}</a>
|
||||
<p>%i18n:@notes%</p><a>{{ u.notesCount }}</a>
|
||||
</div>
|
||||
<div>
|
||||
<p>フォロー</p><a>{{ u.followingCount }}</a>
|
||||
<p>%i18n:@following%</p><a>{{ u.followingCount }}</a>
|
||||
</div>
|
||||
<div>
|
||||
<p>フォロワー</p><a>{{ u.followersCount }}</a>
|
||||
<p>%i18n:@followers%</p><a>{{ u.followersCount }}</a>
|
||||
</div>
|
||||
</div>
|
||||
<mk-follow-button v-if="os.isSignedIn && user.id != os.i.id" :user="u"/>
|
||||
|
@ -2,8 +2,8 @@
|
||||
<div class="mk-users-list">
|
||||
<nav>
|
||||
<div>
|
||||
<span :data-active="mode == 'all'" @click="mode = 'all'">すべて<span>{{ count }}</span></span>
|
||||
<span v-if="os.isSignedIn && youKnowCount" :data-active="mode == 'iknow'" @click="mode = 'iknow'">知り合い<span>{{ youKnowCount }}</span></span>
|
||||
<span :data-active="mode == 'all'" @click="mode = 'all'">%i18n:@all%<span>{{ count }}</span></span>
|
||||
<span v-if="os.isSignedIn && youKnowCount" :data-active="mode == 'iknow'" @click="mode = 'iknow'">%i18n:@iknow%<span>{{ youKnowCount }}</span></span>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="users" v-if="!fetching && users.length != 0">
|
||||
@ -12,13 +12,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<button class="more" v-if="!fetching && next != null" @click="more" :disabled="moreFetching">
|
||||
<span v-if="!moreFetching">もっと</span>
|
||||
<span v-if="moreFetching">読み込み中<mk-ellipsis/></span>
|
||||
<span v-if="!moreFetching">%i18n:@load-more%</span>
|
||||
<span v-if="moreFetching">%i18n:common.loading%<mk-ellipsis/></span>
|
||||
</button>
|
||||
<p class="no" v-if="!fetching && users.length == 0">
|
||||
<slot></slot>
|
||||
</p>
|
||||
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%読み込んでいます<mk-ellipsis/></p>
|
||||
<p class="fetching" v-if="fetching">%fa:spinner .pulse .fw%%i18n:@fetching%<mk-ellipsis/></p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -1,43 +1,24 @@
|
||||
import PostForm from '../views/components/post-form.vue';
|
||||
//import RenoteForm from '../views/components/renote-form.vue';
|
||||
import getNoteSummary from '../../../../renderers/get-note-summary';
|
||||
|
||||
export default (os) => (opts) => {
|
||||
const o = opts || {};
|
||||
|
||||
if (o.renote) {
|
||||
/*const vm = new RenoteForm({
|
||||
propsData: {
|
||||
renote: o.renote
|
||||
}
|
||||
}).$mount();
|
||||
vm.$once('cancel', recover);
|
||||
vm.$once('note', recover);
|
||||
document.body.appendChild(vm.$el);*/
|
||||
const app = document.getElementById('app');
|
||||
app.style.display = 'none';
|
||||
|
||||
const text = window.prompt(`「${getNoteSummary(o.renote)}」をRenote`);
|
||||
if (text == null) return;
|
||||
os.api('notes/create', {
|
||||
renoteId: o.renote.id,
|
||||
text: text == '' ? undefined : text
|
||||
});
|
||||
} else {
|
||||
const app = document.getElementById('app');
|
||||
app.style.display = 'none';
|
||||
|
||||
function recover() {
|
||||
app.style.display = 'block';
|
||||
}
|
||||
|
||||
const vm = new PostForm({
|
||||
parent: os.app,
|
||||
propsData: {
|
||||
reply: o.reply
|
||||
}
|
||||
}).$mount();
|
||||
vm.$once('cancel', recover);
|
||||
vm.$once('note', recover);
|
||||
document.body.appendChild(vm.$el);
|
||||
(vm as any).focus();
|
||||
function recover() {
|
||||
app.style.display = 'block';
|
||||
}
|
||||
|
||||
const vm = new PostForm({
|
||||
parent: os.app,
|
||||
propsData: {
|
||||
reply: o.reply,
|
||||
renote: o.renote
|
||||
}
|
||||
}).$mount();
|
||||
vm.$once('cancel', recover);
|
||||
vm.$once('note', recover);
|
||||
document.body.appendChild(vm.$el);
|
||||
(vm as any).focus();
|
||||
};
|
||||
|
@ -41,7 +41,7 @@
|
||||
<div class="text">
|
||||
<span v-if="p.isHidden" style="opacity: 0.5">(この投稿は非公開です)</span>
|
||||
<a class="reply" v-if="p.reply">%fa:reply%</a>
|
||||
<mk-note-html v-if="p.text" :text="p.text" :i="os.i" :class="$style.text"/>
|
||||
<mk-note-html v-if="p.text && !canHideText(p)" :text="p.text" :i="os.i" :class="$style.text"/>
|
||||
<a class="rp" v-if="p.renote != null">RP:</a>
|
||||
</div>
|
||||
<div class="media" v-if="p.media.length > 0">
|
||||
@ -85,6 +85,7 @@
|
||||
<script lang="ts">
|
||||
import Vue from 'vue';
|
||||
import parse from '../../../../../text/parse';
|
||||
import canHideText from '../../../common/scripts/can-hide-text';
|
||||
|
||||
import MkNoteMenu from '../../../common/views/components/note-menu.vue';
|
||||
import MkReactionPicker from '../../../common/views/components/reaction-picker.vue';
|
||||
@ -112,9 +113,11 @@ export default Vue.extend({
|
||||
this.note.mediaIds.length == 0 &&
|
||||
this.note.poll == null);
|
||||
},
|
||||
|
||||
p(): any {
|
||||
return this.isRenote ? this.note.renote : this.note;
|
||||
},
|
||||
|
||||
reactionsCount(): number {
|
||||
return this.p.reactionCounts
|
||||
? Object.keys(this.p.reactionCounts)
|
||||
@ -122,6 +125,7 @@ export default Vue.extend({
|
||||
.reduce((a, b) => a + b)
|
||||
: 0;
|
||||
},
|
||||
|
||||
urls(): string[] {
|
||||
if (this.p.text) {
|
||||
const ast = parse(this.p.text);
|
||||
@ -177,6 +181,8 @@ export default Vue.extend({
|
||||
},
|
||||
|
||||
methods: {
|
||||
canHideText,
|
||||
|
||||
capture(withHandler = false) {
|
||||
if ((this as any).os.isSignedIn) {
|
||||
this.connection.send({
|
||||
@ -186,6 +192,7 @@ export default Vue.extend({
|
||||
if (withHandler) this.connection.on('note-updated', this.onStreamNoteUpdated);
|
||||
}
|
||||
},
|
||||
|
||||
decapture(withHandler = false) {
|
||||
if ((this as any).os.isSignedIn) {
|
||||
this.connection.send({
|
||||
@ -195,9 +202,11 @@ export default Vue.extend({
|
||||
if (withHandler) this.connection.off('note-updated', this.onStreamNoteUpdated);
|
||||
}
|
||||
},
|
||||
|
||||
onStreamConnected() {
|
||||
this.capture();
|
||||
},
|
||||
|
||||
onStreamNoteUpdated(data) {
|
||||
const note = data.note;
|
||||
if (note.id == this.note.id) {
|
||||
@ -206,16 +215,19 @@ export default Vue.extend({
|
||||
this.note.renote = note;
|
||||
}
|
||||
},
|
||||
|
||||
reply() {
|
||||
(this as any).apis.post({
|
||||
reply: this.p
|
||||
});
|
||||
},
|
||||
|
||||
renote() {
|
||||
(this as any).apis.post({
|
||||
renote: this.p
|
||||
});
|
||||
},
|
||||
|
||||
react() {
|
||||
(this as any).os.new(MkReactionPicker, {
|
||||
source: this.$refs.reactButton,
|
||||
@ -223,6 +235,7 @@ export default Vue.extend({
|
||||
compact: true
|
||||
});
|
||||
},
|
||||
|
||||
menu() {
|
||||
(this as any).os.new(MkNoteMenu, {
|
||||
source: this.$refs.menuButton,
|
||||
|
@ -1,7 +1,5 @@
|
||||
<template>
|
||||
<div class="mk-notes">
|
||||
<div class="newer-indicator" :style="{ top: $store.state.uiHeaderHeight + 'px' }" v-show="queue.length > 0"></div>
|
||||
|
||||
<slot name="head"></slot>
|
||||
|
||||
<slot name="empty" v-if="notes.length == 0 && !fetching && requestInitPromise == null"></slot>
|
||||
@ -71,6 +69,16 @@ export default Vue.extend({
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
queue(x) {
|
||||
if (x.length > 0) {
|
||||
this.$store.commit('indicate', true);
|
||||
} else {
|
||||
this.$store.commit('indicate', false);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
document.addEventListener('visibilitychange', this.onVisibilitychange, false);
|
||||
window.addEventListener('scroll', this.onScroll);
|
||||
@ -238,13 +246,6 @@ root(isDark)
|
||||
[data-fa]
|
||||
margin-right 8px
|
||||
|
||||
> .newer-indicator
|
||||
position -webkit-sticky
|
||||
position sticky
|
||||
z-index 100
|
||||
height 3px
|
||||
background $theme-color
|
||||
|
||||
> .init
|
||||
padding 64px 0
|
||||
text-align center
|
||||
|
@ -5,17 +5,22 @@
|
||||
<div>
|
||||
<span class="text-count" :class="{ over: text.length > 1000 }">{{ 1000 - text.length }}</span>
|
||||
<span class="geo" v-if="geo">%fa:map-marker-alt%</span>
|
||||
<button class="submit" :disabled="posting" @click="post">{{ reply ? '返信' : '%i18n:!@submit%' }}</button>
|
||||
<button class="submit" :disabled="posting" @click="post">
|
||||
<template v-if="reply">%i18n:@reply%</template>
|
||||
<template v-else-if="renote">%i18n:@renote%</template>
|
||||
<template v-else>%i18n:@submit%</template>
|
||||
</button>
|
||||
</div>
|
||||
</header>
|
||||
<div class="form">
|
||||
<mk-note-preview v-if="reply" :note="reply"/>
|
||||
<mk-note-preview v-if="renote" :note="renote"/>
|
||||
<div v-if="visibility == 'specified'" class="visibleUsers">
|
||||
<span v-for="u in visibleUsers">{{ u | userName }}<a @click="removeVisibleUser(u)">[x]</a></span>
|
||||
<a @click="addVisibleUser">+ユーザーを追加</a>
|
||||
</div>
|
||||
<input v-show="useCw" v-model="cw" placeholder="内容への注釈 (オプション)">
|
||||
<textarea v-model="text" ref="text" :disabled="posting" :placeholder="reply ? '%i18n:!@reply-placeholder%' : '%i18n:!@note-placeholder%'"></textarea>
|
||||
<textarea v-model="text" ref="text" :disabled="posting" :placeholder="reply ? '%i18n:!@reply-placeholder%' : renote ? '%i18n:!@renote-placeholder%' : '%i18n:!@note-placeholder%'"></textarea>
|
||||
<div class="attaches" v-show="files.length != 0">
|
||||
<x-draggable class="files" :list="files" :options="{ animation: 150 }">
|
||||
<div class="file" v-for="file in files" :key="file.id">
|
||||
@ -51,7 +56,7 @@ export default Vue.extend({
|
||||
MkVisibilityChooser
|
||||
},
|
||||
|
||||
props: ['reply'],
|
||||
props: ['reply', 'renote'],
|
||||
|
||||
data() {
|
||||
return {
|
||||
@ -177,6 +182,7 @@ export default Vue.extend({
|
||||
text: this.text == '' ? undefined : this.text,
|
||||
mediaIds: this.files.length > 0 ? this.files.map(f => f.id) : undefined,
|
||||
replyId: this.reply ? this.reply.id : undefined,
|
||||
renoteId: this.renote ? this.renote.id : undefined,
|
||||
poll: this.poll ? (this.$refs.poll as any).get() : undefined,
|
||||
cw: this.useCw ? this.cw || '' : undefined,
|
||||
geo: this.geo ? {
|
||||
|
@ -13,6 +13,7 @@
|
||||
<slot name="func"></slot>
|
||||
</div>
|
||||
</div>
|
||||
<div class="indicator" v-show="$store.state.indicate"></div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -156,6 +157,10 @@ root(isDark)
|
||||
&, *
|
||||
user-select none
|
||||
|
||||
> .indicator
|
||||
height 3px
|
||||
background $theme-color
|
||||
|
||||
> .main
|
||||
color rgba(#fff, 0.9)
|
||||
|
||||
|
@ -25,27 +25,27 @@ export default Vue.extend({
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.mk-widget-container
|
||||
background #eee
|
||||
root(isDark)
|
||||
background isDark ? #21242f : #eee
|
||||
border-radius 8px
|
||||
box-shadow 0 0 0 1px rgba(#000, 0.2)
|
||||
box-shadow 0 4px 16px rgba(#000, 0.1)
|
||||
overflow hidden
|
||||
|
||||
&.hideHeader
|
||||
background #fff
|
||||
|
||||
&.naked
|
||||
background transparent !important
|
||||
box-shadow none !important
|
||||
|
||||
&.hideHeader
|
||||
background isDark ? #21242f : #fff
|
||||
|
||||
> header
|
||||
> .title
|
||||
margin 0
|
||||
padding 8px 10px
|
||||
font-size 15px
|
||||
font-weight normal
|
||||
color #465258
|
||||
background #fff
|
||||
color isDark ? #b8c5cc : #465258
|
||||
background isDark ? #282c37 : #fff
|
||||
border-radius 8px 8px 0 0
|
||||
|
||||
> [data-fa]
|
||||
@ -65,4 +65,10 @@ export default Vue.extend({
|
||||
font-size 15px
|
||||
color #465258
|
||||
|
||||
.mk-widget-container[data-darkmode]
|
||||
root(true)
|
||||
|
||||
.mk-widget-container:not([data-darkmode])
|
||||
root(false)
|
||||
|
||||
</style>
|
||||
|
@ -141,17 +141,25 @@ export default Vue.extend({
|
||||
<style lang="stylus" scoped>
|
||||
main
|
||||
margin 0 auto
|
||||
padding 8px
|
||||
max-width 500px
|
||||
width 100%
|
||||
|
||||
@media (min-width 500px)
|
||||
padding 8px
|
||||
padding 16px 8px
|
||||
|
||||
@media (min-width 600px)
|
||||
padding 32px 8px
|
||||
|
||||
> header
|
||||
padding 8px
|
||||
background #fff
|
||||
|
||||
.widget
|
||||
margin 8px
|
||||
margin-bottom 8px
|
||||
|
||||
@media (min-width 600px)
|
||||
margin-bottom 16px
|
||||
|
||||
.customize-container
|
||||
margin 8px
|
||||
|
@ -24,10 +24,15 @@ export default (os: MiOS) => new Vuex.Store({
|
||||
}],
|
||||
|
||||
state: {
|
||||
indicate: false,
|
||||
uiHeaderHeight: 0
|
||||
},
|
||||
|
||||
mutations: {
|
||||
indicate(state, x) {
|
||||
state.indicate = x;
|
||||
},
|
||||
|
||||
setUiHeaderHeight(state, height) {
|
||||
state.uiHeaderHeight = height;
|
||||
}
|
||||
|
@ -154,6 +154,7 @@ export const pack = (
|
||||
|
||||
_target = Object.assign(_target, _file.metadata);
|
||||
|
||||
_target.src = _file.metadata.url;
|
||||
_target.url = `${config.drive_url}/${_target.id}/${encodeURIComponent(_target.name)}`;
|
||||
|
||||
if (_target.properties == null) _target.properties = {};
|
||||
|
1152
test/api.ts
1152
test/api.ts
File diff suppressed because it is too large
Load Diff
10
test/text.ts
10
test/text.ts
@ -1,11 +1,7 @@
|
||||
/**
|
||||
* Text Tests!
|
||||
*/
|
||||
import * as assert from 'assert';
|
||||
|
||||
const assert = require('assert');
|
||||
|
||||
const analyze = require('../built/text/parse').default;
|
||||
const syntaxhighlighter = require('../built/text/parse/core/syntax-highlighter').default;
|
||||
import analyze from '../src/text/parse';
|
||||
import syntaxhighlighter from '../src/text/parse/core/syntax-highlighter';
|
||||
|
||||
describe('Text', () => {
|
||||
it('can be analyzed', () => {
|
||||
|
Reference in New Issue
Block a user