Skip to content

Commit

Permalink
Merge pull request #239 from Sayamame-beans/pick-emoji-grid
Browse files Browse the repository at this point in the history
開発中の新カスタム絵文字管理画面(β)の取り込み
  • Loading branch information
Sayamame-beans authored Dec 29, 2024
2 parents 0ba3fe8 + 4707291 commit f00ee3f
Show file tree
Hide file tree
Showing 65 changed files with 7,425 additions and 49 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
## 2024.11.0-kinel.2

### General
- Feat: カスタム絵文字管理画面をリニューアル #10996
* β版として公開のため、旧画面も引き続き利用可能です

### Server
- Fix: ユーザーのプロフィール画面をアドレス入力などで直接表示した際に概要タブの描画に失敗する問題の修正( #15032 )

Expand Down
224 changes: 224 additions & 0 deletions locales/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ export interface Locale extends ILocale {
* 検索
*/
"search": string;
/**
* リセット
*/
"reset": string;
/**
* 通知
*/
Expand Down Expand Up @@ -10619,6 +10623,226 @@ export interface Locale extends ILocale {
*/
"native": string;
};
"_gridComponent": {
"_error": {
/**
* この値は必須項目です
*/
"requiredValue": string;
/**
* 正規表現によるバリデーションはtype:textのカラムのみサポートします。
*/
"columnTypeNotSupport": string;
/**
* この値は{pattern}のパターンに一致しません
*/
"patternNotMatch": ParameterizedString<"pattern">;
/**
* この値は一意である必要があります
*/
"notUnique": string;
};
};
"_roleSelectDialog": {
/**
* 選択されていません
*/
"notSelected": string;
};
"_customEmojisManager": {
"_gridCommon": {
/**
* 選択行をコピー
*/
"copySelectionRows": string;
/**
* 選択範囲をコピー
*/
"copySelectionRanges": string;
/**
* 選択行を削除
*/
"deleteSelectionRows": string;
/**
* 選択範囲の行を削除
*/
"deleteSelectionRanges": string;
/**
* 検索設定
*/
"searchSettings": string;
/**
* 検索条件を詳細に設定します。
*/
"searchSettingCaption": string;
/**
* 並び順
*/
"sortOrder": string;
/**
* 登録ログ
*/
"registrationLogs": string;
/**
* 絵文字更新・削除時のログが表示されます。更新・削除操作を行ったり、ページを遷移・リロードすると消えます。
*/
"registrationLogsCaption": string;
/**
* エラー
*/
"alertEmojisRegisterFailedTitle": string;
/**
* 絵文字の更新・削除に失敗しました。詳細は登録ログをご確認ください。
*/
"alertEmojisRegisterFailedDescription": string;
};
"_logs": {
/**
* 成功ログを表示
*/
"showSuccessLogSwitch": string;
/**
* 失敗ログはありません。
*/
"failureLogNothing": string;
/**
* ログはありません。
*/
"logNothing": string;
};
"_remote": {
/**
* 選択行をインポート
*/
"importSelectionRows": string;
/**
* 選択範囲の行をインポート
*/
"importSelectionRangesRows": string;
/**
* チェックされた絵文字をインポート
*/
"importEmojisButton": string;
/**
* 絵文字のインポート
*/
"confirmImportEmojisTitle": string;
/**
* リモートから受信した{count}個の絵文字のインポートを行います。絵文字のライセンスに十分な注意を払ってください。実行しますか?
*/
"confirmImportEmojisDescription": ParameterizedString<"count">;
};
"_local": {
/**
* 登録済み絵文字一覧
*/
"tabTitleList": string;
/**
* 絵文字の登録
*/
"tabTitleRegister": string;
"_list": {
/**
* 登録された絵文字はありません。
*/
"emojisNothing": string;
/**
* 選択行を削除対象にする
*/
"markAsDeleteTargetRows": string;
/**
* 選択範囲の行を削除対象にする
*/
"markAsDeleteTargetRanges": string;
/**
* 変更された絵文字はありません。
*/
"alertUpdateEmojisNothingDescription": string;
/**
* 削除対象の絵文字はありません。
*/
"alertDeleteEmojisNothingDescription": string;
/**
* 確認
*/
"confirmUpdateEmojisTitle": string;
/**
* {count}個の絵文字を更新します。実行しますか?
*/
"confirmUpdateEmojisDescription": ParameterizedString<"count">;
/**
* 確認
*/
"confirmDeleteEmojisTitle": string;
/**
* チェックがつけられた{count}個の絵文字を削除します。実行しますか?
*/
"confirmDeleteEmojisDescription": ParameterizedString<"count">;
/**
* 絵文字に設定されたロールで検索
*/
"dialogSelectRoleTitle": string;
};
"_register": {
/**
* アップロード設定
*/
"uploadSettingTitle": string;
/**
* この画面で絵文字アップロードを行う際の動作を設定できます。
*/
"uploadSettingDescription": string;
/**
* ディレクトリ名を"category"に入力する
*/
"directoryToCategoryLabel": string;
/**
* ディレクトリをドラッグ・ドロップした時に、ディレクトリ名を"category"に入力します。
*/
"directoryToCategoryCaption": string;
/**
* いずれかの方法で登録する絵文字を選択してください。
*/
"emojiInputAreaCaption": string;
/**
* この枠に画像ファイルまたはディレクトリをドラッグ&ドロップ
*/
"emojiInputAreaList1": string;
/**
* このリンクをクリックしてPCから選択する
*/
"emojiInputAreaList2": string;
/**
* このリンクをクリックしてドライブから選択する
*/
"emojiInputAreaList3": string;
/**
* 確認
*/
"confirmRegisterEmojisTitle": string;
/**
* リストに表示されている絵文字を新たなカスタム絵文字として登録します。よろしいですか?(負荷を避けるため、一度の操作で登録可能な絵文字は{count}件までです)
*/
"confirmRegisterEmojisDescription": ParameterizedString<"count">;
/**
* 確認
*/
"confirmClearEmojisTitle": string;
/**
* 編集内容を破棄し、リストに表示されている絵文字をクリアします。よろしいですか?
*/
"confirmClearEmojisDescription": string;
/**
* 確認
*/
"confirmUploadEmojisTitle": string;
/**
* ドラッグ&ドロップされた{count}個のファイルをドライブにアップロードします。実行しますか?
*/
"confirmUploadEmojisDescription": ParameterizedString<"count">;
};
};
};
"_embedCodeGen": {
/**
* 埋め込みコードをカスタマイズ
Expand Down
64 changes: 64 additions & 0 deletions locales/ja-JP.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ introMisskey: "ようこそ!Misskeyは、オープンソースの分散型マ
poweredByMisskeyDescription: "{name}は、オープンソースのプラットフォーム<b>Misskey</b>のサーバーのひとつです。"
monthAndDay: "{month}月 {day}日"
search: "検索"
reset: "リセット"
notifications: "通知"
username: "ユーザー名"
password: "パスワード"
Expand Down Expand Up @@ -2829,6 +2830,69 @@ _contextMenu:
appWithShift: "Shiftキーでアプリケーション"
native: "ブラウザのUI"

_gridComponent:
_error:
requiredValue: "この値は必須項目です"
columnTypeNotSupport: "正規表現によるバリデーションはtype:textのカラムのみサポートします。"
patternNotMatch: "この値は{pattern}のパターンに一致しません"
notUnique: "この値は一意である必要があります"

_roleSelectDialog:
notSelected: "選択されていません"

_customEmojisManager:
_gridCommon:
copySelectionRows: "選択行をコピー"
copySelectionRanges: "選択範囲をコピー"
deleteSelectionRows: "選択行を削除"
deleteSelectionRanges: "選択範囲の行を削除"
searchSettings: "検索設定"
searchSettingCaption: "検索条件を詳細に設定します。"
sortOrder: "並び順"
registrationLogs: "登録ログ"
registrationLogsCaption: "絵文字更新・削除時のログが表示されます。更新・削除操作を行ったり、ページを遷移・リロードすると消えます。"
alertEmojisRegisterFailedTitle: "エラー"
alertEmojisRegisterFailedDescription: "絵文字の更新・削除に失敗しました。詳細は登録ログをご確認ください。"
_logs:
showSuccessLogSwitch: "成功ログを表示"
failureLogNothing: "失敗ログはありません。"
logNothing: "ログはありません。"
_remote:
importSelectionRows: "選択行をインポート"
importSelectionRangesRows: "選択範囲の行をインポート"
importEmojisButton: "チェックされた絵文字をインポート"
confirmImportEmojisTitle: "絵文字のインポート"
confirmImportEmojisDescription: "リモートから受信した{count}個の絵文字のインポートを行います。絵文字のライセンスに十分な注意を払ってください。実行しますか?"
_local:
tabTitleList: "登録済み絵文字一覧"
tabTitleRegister: "絵文字の登録"
_list:
emojisNothing: "登録された絵文字はありません。"
markAsDeleteTargetRows: "選択行を削除対象にする"
markAsDeleteTargetRanges: "選択範囲の行を削除対象にする"
alertUpdateEmojisNothingDescription: "変更された絵文字はありません。"
alertDeleteEmojisNothingDescription: "削除対象の絵文字はありません。"
confirmUpdateEmojisTitle: "確認"
confirmUpdateEmojisDescription: "{count}個の絵文字を更新します。実行しますか?"
confirmDeleteEmojisTitle: "確認"
confirmDeleteEmojisDescription: "チェックがつけられた{count}個の絵文字を削除します。実行しますか?"
dialogSelectRoleTitle: "絵文字に設定されたロールで検索"
_register:
uploadSettingTitle: "アップロード設定"
uploadSettingDescription: "この画面で絵文字アップロードを行う際の動作を設定できます。"
directoryToCategoryLabel: "ディレクトリ名を\"category\"に入力する"
directoryToCategoryCaption: "ディレクトリをドラッグ・ドロップした時に、ディレクトリ名を\"category\"に入力します。"
emojiInputAreaCaption: "いずれかの方法で登録する絵文字を選択してください。"
emojiInputAreaList1: "この枠に画像ファイルまたはディレクトリをドラッグ&ドロップ"
emojiInputAreaList2: "このリンクをクリックしてPCから選択する"
emojiInputAreaList3: "このリンクをクリックしてドライブから選択する"
confirmRegisterEmojisTitle: "確認"
confirmRegisterEmojisDescription: "リストに表示されている絵文字を新たなカスタム絵文字として登録します。よろしいですか?(負荷を避けるため、一度の操作で登録可能な絵文字は{count}件までです)"
confirmClearEmojisTitle: "確認"
confirmClearEmojisDescription: "編集内容を破棄し、リストに表示されている絵文字をクリアします。よろしいですか?"
confirmUploadEmojisTitle: "確認"
confirmUploadEmojisDescription: "ドラッグ&ドロップされた{count}個のファイルをドライブにアップロードします。実行しますか?"

_embedCodeGen:
title: "埋め込みコードをカスタマイズ"
header: "ヘッダーを表示"
Expand Down
18 changes: 18 additions & 0 deletions packages/backend/migration/1709126576000-optimize-emoji-index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/

export class OptimizeEmojiIndex1709126576000 {
name = 'OptimizeEmojiIndex1709126576000'

async up(queryRunner) {
await queryRunner.query(`CREATE INDEX "IDX_EMOJI_ROLE_IDS" ON "emoji" using gin ("roleIdsThatCanBeUsedThisEmojiAsReaction")`)
await queryRunner.query(`CREATE INDEX "IDX_EMOJI_CATEGORY" ON "emoji" ("category")`)
}

async down(queryRunner) {
await queryRunner.query(`DROP INDEX "IDX_EMOJI_CATEGORY"`)
await queryRunner.query(`DROP INDEX "IDX_EMOJI_ROLE_IDS"`)
}
}
12 changes: 12 additions & 0 deletions packages/backend/src/const.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,18 @@ export const DB_MAX_NOTE_TEXT_LENGTH = 8192;
export const DB_MAX_IMAGE_COMMENT_LENGTH = 512;
//#endregion

export const FILE_TYPE_IMAGE = [
'image/png',
'image/gif',
'image/jpeg',
'image/webp',
'image/avif',
'image/apng',
'image/bmp',
'image/tiff',
'image/x-icon',
];

// ブラウザで直接表示することを許可するファイルの種類のリスト
// ここに含まれないものは application/octet-stream としてレスポンスされる
// SVGはXSSを生むので許可しない
Expand Down
Loading

0 comments on commit f00ee3f

Please sign in to comment.