feat(ckeditor5,board,ecommerce,page,core,admin_basic): 미참조 에디터 업로드 이미지 정리 신설 + 업로드 고아 동종 결함 7건 전수 해소

공개 (@Tuwasduliebst 제보) 대응.

- ckeditor5: 미참조 이미지 정리 엔진 신설 — 참조 판정(hash + 파일명 2토큰,
 filter_reference_sources 훅으로 확장 콘텐츠 등록) + 정리 커맨드(기본 꺼짐 옵트인,
 3중 게이트) + 업로드 관리 화면(권한 분리·참조 배지·개별/선택 삭제) + 기설치본
 설정 백필 upgrade step
- board: 임시 첨부 GC(상시) + 소프트삭제 첨부 영구 정리(옵트인) + 설정 UI,
 저장 payload 누락(F4)·빈 temp 디렉토리 잔존(F5) 수정
- ecommerce: 임시 상품 이미지 GC + 카테고리 삭제 시 이미지 파일 미삭제(S4) 수정
- page: 임시 첨부 GC
- 코어: 고아 첨부 정리 커맨드(옵트인, site_logo 보호) + 사이트 로고 교체 시
 구 로고 재편입 차단(S6) + DB 백업 미구현 501 정직화(B3) + 플러그인 관리자
 메뉴 설치·업데이트 자동 동기화(F1·F7)
- 동반: 플러그인 설정 검증 오류 필드명 라벨화(F3), Toggle 노드 type 정정
 수평 전개(marketing 1.0.2 bump·gdpr·ecommerce), ja 언어팩 4종, API 문서,
 hooks.md, 시나리오 매니페스트 8종, Playwright E2E 4종
This commit is contained in:
HeuJung
2026-08-17 02:44:54 +09:00
parent 1d895a6428
commit cfc2caba1b
170 changed files with 11142 additions and 209 deletions
@@ -16,6 +16,8 @@
- 설정 항목 단위 저장의 값 형식 안내 일본어 번역을 추가했습니다 (`validation.setting.value.*`) — 켜기/끄기·숫자 설정에 맞지 않는 값을 저장할 때의 안내가 일본어 로케일에서 표시됩니다.
- 슈퍼 관리자 계정·역할 수정 상한 및 권한 부여 상한 위반 시 표시되는 예외 메시지(`cannot_modify_super_admin`, `cannot_grant_unheld_permission`, `cannot_modify_protected_role`)의 일본어 번역을 추가했습니다.
- 레이아웃 저장 시 위험 표현식·외부 리소스 URL 거부 안내(`layout.dangerous_expression`, `layout.external_resource_url`)의 일본어 번역을 추가했습니다.
- 고아 첨부 정리 설정의 검증 메시지와 항목명 일본어 번역을 추가했습니다 (`validation.settings.orphan_*`) — 환경설정 > 업로드의 자동 정리·보존기간을 잘못 저장할 때의 안내가 일본어 로케일에서 항목 이름과 함께 표시됩니다.
- 데이터베이스 백업 미제공 안내 문구의 일본어 번역을 추가했습니다 (`settings.database_backup_unavailable`).
### Changed
@@ -20,6 +20,7 @@ return [
'backup_success' => 'データベースバックアップが正常に開始されました。',
'backup_failed' => 'データベースバックアップに失敗しました。',
'backup_error' => 'データベースバックアップ中にエラーが発生しました。',
'database_backup_unavailable' => 'データベースバックアップ機能はまだ提供されていません。設定のバックアップは設定バックアップ機能をご利用ください。',
'backup_path_required' => 'バックアップパスを入力してください。',
'restore_success' => '設定が正常に復元されました。',
'restore_failed' => '設定の復元に失敗しました。',
@@ -912,7 +912,7 @@ return [
's3_endpoint_invalid' => '正しいS3エンドポイントURL形式ではありません。',
's3_endpoint_max' => 'S3エンドポイントURLは500字を超えることはできません。',
's3_use_path_style_boolean' => 'Path-styleアドレス使用の設定はtrueまたはfalseである必要があります。',
'driver_unusable' => "':driver' ドライバーはこのサーバーでは使用できません。:reason",
'driver_unusable' => '\':driver\' ドライバーはこのサーバーでは使用できません。:reason',
'cache_driver_required' => 'キャッシュドライバーを選択してください。',
'cache_driver_invalid' => '正しいキャッシュドライバーを選択してください。',
'redis_host_max' => 'Redisホストは255字を超えることはできません。',
@@ -994,6 +994,10 @@ return [
'pagination_max_page_integer' => 'ページ番号上限は数値である必要があります。',
'pagination_max_page_min' => 'ページ番号上限は:min以上である必要があります。(0 = 無制限)',
'pagination_max_page_max' => 'ページ番号上限は:maxを超えることはできません。',
'orphan_cleanup_enabled_boolean' => '孤立した添付ファイルの自動クリーンアップは有効化または無効化のいずれかである必要があります。',
'orphan_retention_days_integer' => '孤立した添付ファイルの保持期間は整数である必要があります。',
'orphan_retention_days_min' => '孤立した添付ファイルの保持期間は1日以上である必要があります。',
'orphan_retention_days_max' => '孤立した添付ファイルの保持期間は3650日を超えることはできません。',
],
'identity_policy' => [
'key_required' => 'ポリシーキーを入力してください。',
@@ -1174,6 +1178,8 @@ return [
'log_level' => 'ログレベル',
'log_days' => 'ログ保持日数',
'public_asset_disk' => '公開アセットディスク',
'orphan_cleanup_enabled' => '孤立した添付ファイルの自動クリーンアップ',
'orphan_retention_days' => '孤立した添付ファイルの保持期間',
],
'layout_version' => [
'limit' => [
@@ -10,6 +10,7 @@
- 게시판 유형 삭제 등 관리 작업이 서버 오류로 실패했을 때 표시되는 안내 문구의 일본어 번역을 추가했습니다.
- 비공개(비밀) 게시글 목록 마스킹 시 표시되는 제목 플레이스홀더(`secret_post_title`)의 일본어 번역을 추가했습니다.
- 첨부 영구 정리 설정의 라벨·도움말과 검증 항목명 일본어 번역을 추가했습니다 (`admin/settings.attachment_purge_*`, `validation.attributes.attachment_settings.*`) — 게시판 환경설정 > 기본 설정의 새 항목과 저장 시 오류 안내가 일본어 로케일에서 표시됩니다.
### Changed
@@ -349,6 +349,8 @@ return [
'override_values.max_file_size' => '最大ファイルサイズ',
'override_values.max_file_count' => '最大ファイル個数',
'override_values.new_display_hours' => '新規表示時間',
'attachment_settings.purge_enabled' => '削除添付の永久クリーンアップ',
'attachment_settings.purge_retention_days' => '削除添付の保持期間',
],
],
'blind' => [
@@ -60,7 +60,9 @@
"report_notification": "通報通知",
"report_notification_description": "通報受け付け時に通知を受け取る管理者と通知発送方式を設定します。",
"report_permissions": "通報管理権限",
"report_permissions_description": "通報リスト閲覧および通報処理(承認·却下·ブラインド)を実行できるロールを指定します。通報受け付け通知は「通報処理権限」を持つロール基準で発送されます。"
"report_permissions_description": "通報リスト閲覧および通報処理(承認·却下·ブラインド)を実行できるロールを指定します。通報受け付け通知は「通報処理権限」を持つロール基準で発送されます。",
"attachment_cleanup": "添付ファイルの整理",
"attachment_cleanup_description": "削除された添付ファイルの物理ファイルをいつ廃棄するかを設定します。投稿作成中にアップロードされたが保存されなかった一時的な添付は、この設定に関わらず毎日自動で整理されます。"
},
"fields": {
"type": "掲示板タイプ",
@@ -176,7 +178,11 @@
"max_file_size": "アップロード可能な最大ファイルサイズです (MB単位、{{min}}~{{max}})",
"max_file_count": "投稿あたり添付可能な最大ファイル数です ({{min}}~{{max}})",
"allowed_extensions": "許可するファイル拡張子を最低1つ以上入力してください"
}
},
"attachment_purge_enabled": "削除済み添付ファイルの永久削除",
"attachment_purge_enabled_hint": "デフォルトは無効です。運営者が有効にしたときにのみ毎日の自動整理が動作します。有効にすると、削除されてから保存期間が経過した添付ファイルとそのレコードが永久削除されます。サーバーで直接実行する整理コマンドはこの設定に左右されません。",
"attachment_purge_retention_days": "削除済み添付ファイル保存期間(日)",
"attachment_purge_retention_days_hint": "ゴミ箱から投稿を復元すると、この期間内の添付ファイルは一緒に復元されます。ゴミ箱の復元可能期間と同じに保つようにしてください。(1~3650 日)"
},
"options": {
"date_display_format": {
@@ -9,6 +9,10 @@
### Added
- 에디터 설정의 "공개 자산 디스크" 설정 문구 일본어 번역을 추가했습니다.
- 「에디터 업로드 이미지」 관리 화면의 문구 일본어 번역을 추가했습니다 (`admin.uploads.*`) — 목록 제목·열 이름·참조 상태 배지·필터·삭제 확인 창과 판정 범위 안내가 일본어 로케일에서 표시됩니다.
- 미사용 이미지 자동 정리 설정의 라벨·도움말 일본어 번역을 추가했습니다 (`settings.section_cleanup`, `settings.cleanup.*`).
- 업로드 이미지 삭제 시의 안내·오류 메시지 일본어 번역을 추가했습니다 (`messages.uploads.*`, `messages.cleanup.*`).
- 업로드 이미지 조회·삭제 권한의 이름과 설명 일본어 번역을 추가했습니다 — 역할 권한 화면에서 일본어 로케일로 표시됩니다.
## [1.0.0] - 2026-07-01
@@ -13,4 +13,15 @@ return [
'forbidden' => '画像アップロード権限がありません。',
'failed' => '画像アップロードに失敗しました。',
],
'uploads' => [
'not_found' => 'アップロード画像が見つかりません。',
'file_delete_failed' => '画像ファイルの削除に失敗しました。しばらく後に再度お試しください。',
'ids_required' => '削除する画像を選択してください。',
'deleted' => '画像を削除しました。',
'bulk_deleted' => '選択した画像 :deleted件を削除しました。',
'ids_invalid' => '選択した画像の中に存在しないアイテムがあります。リストをリフレッシュした後、再度選択してください。',
],
'cleanup' => [
'retention_disabled' => '保存期間が1日未満に設定されているため、クリーンアップを実行しませんでした。',
],
];
@@ -1,7 +1,8 @@
{
"editor": {
"data_source": {
"settings": "エディター設定"
"settings": "エディター設定",
"ckeditor5Uploads": "アップロード画像一覧"
}
},
"settings": {
@@ -46,6 +47,60 @@
"step3": "画像アップロードを有効化するとエディターで画像を直接貼り付けたりアップロードできます。アップロードされた画像はサーバーに保存されます。",
"step4": "設定変更後に保存すると即座にすべてのエディターに反映されます。",
"step5": "プラグインを無効化するとエディターは基本 HtmlEditor に、コンテンツ表示は基本 HtmlContent に自動復元されます。"
},
"section_cleanup": "未使用画像の整理",
"cleanup": {
"toggle_label": "未使用画像の自動整理",
"toggle_hint": "デフォルトはオフです。有効にするには運営者が手動で有効にする必要があります。有効にすると、毎日1回、保存期間を過ぎた未使用画像のファイルと記録を一緒に削除します。",
"retention_label": "保存期間(日)",
"retention_hint": "アップロード後、この期間を過ぎた未使用画像のみが整理対象になります。(1~3650日)",
"manual_hint": "今何が削除されるか事前に確認したい場合は、サーバーで次のコマンドを実行してください:php artisan sirsoft-ckeditor5:prune-unused-images --dry-run",
"open_uploads": "アップロード画像管理を開く"
}
},
"admin": {
"uploads": {
"title": "エディターアップロード画像",
"description": "エディターでアップロードされた画像を確認し、使用されなくなった画像を整理します。",
"refresh": "更新",
"open_settings": "整理設定を開く",
"reference_notice": "参照状態は投稿・ページ・商品説明などの登録されたコンテンツを確認して判定します。参照ソースを登録していない外部拡張のコンテンツのみで使用されている画像は「未参照」と表示される場合があるため、削除前に確認してください。",
"scan_limited_notice": "参照状態フィルターは最近{{count}}件を基準として判定します。それより古い画像はこのリストに表示されません。",
"empty": "アップロードされた画像がありません。",
"col": {
"thumbnail": "プレビュー",
"original_name": "元のファイル名",
"file_size": "サイズ",
"uploader": "アップローダー",
"created_at": "アップロード日時",
"referenced": "参照状態"
},
"badge": {
"referenced": "参照済み",
"unreferenced": "未参照"
},
"filter": {
"search_placeholder": "元のファイル名またはハッシュで検索",
"search_button": "検索",
"referenced_all": "すべての状態",
"referenced_only": "参照済みのみ",
"unreferenced_only": "未参照のみ",
"date_from": "開始日",
"date_to": "終了日",
"clear": "フィルターをリセット"
},
"delete": {
"button": "削除",
"confirm_title": "画像を削除しますか?",
"confirm_message": "選択した画像のファイルと記録が一緒に削除されます。この操作は取り消せません。",
"success": "画像を削除しました。"
},
"bulk_delete": {
"button": "選択削除",
"selected": "{{count}}件選択されました",
"confirm_title": "選択した画像を削除しますか?",
"confirm_message": "選択した{{count}}件のファイルと記録が一緒に削除されます。この操作は取り消せません。"
}
}
}
}
@@ -0,0 +1,18 @@
{
"sirsoft-ckeditor5": {
"name": "CKEditor 5 WYSIWYG エディター",
"description": "CKEditor5 プラグインが提供する権限"
},
"sirsoft-ckeditor5.uploads": {
"name": "エディター アップロード画像",
"description": "エディターにアップロードされた画像の閲覧・削除権限"
},
"sirsoft-ckeditor5.uploads.read": {
"name": "アップロード画像の閲覧",
"description": "エディター アップロード画像一覧・参照状態の閲覧"
},
"sirsoft-ckeditor5.uploads.delete": {
"name": "アップロード画像の削除",
"description": "エディター アップロード画像のファイル・記録の削除"
}
}
@@ -13,6 +13,7 @@
- 회원 정보 수정 화면의 탈퇴 확인 창 문구 일본어 번역 추가 (`admin.users.modals.withdraw_confirm_*`) — 되돌릴 수 없는 처리라는 안내와 함께 처리되는 항목 목록이 일본어 로케일에서 표시됩니다. (#112 @Tuwasduliebst 님께서 제보해주셨습니다.)
- 드라이버 선택란에 저장된 값이 현재 사용할 수 없는 값일 때 표시되는 안내 문구 일본어 번역을 추가했습니다.
- 환경설정 > 업로드 탭의 「고아 첨부 정리」 카드 문구 일본어 번역을 추가했습니다 (`settings.upload.orphan_cleanup*`, `orphan_retention_days*`) — 자동 정리 토글과 보존기간 입력의 라벨·도움말이 일본어 로케일에서 표시됩니다.
### Changed
@@ -1392,7 +1392,13 @@
"image_max_width": "最大幅",
"image_max_height": "最大高さ",
"image_quality": "画像品質",
"image_quality_hint": "1〜100の値を入力してください。値が大きいほど品質が良くなります。"
"image_quality_hint": "1〜100の値を入力してください。値が大きいほど品質が良くなります。",
"orphan_cleanup": "孤立した添付ファイルのクリーンアップ",
"orphan_cleanup_desc": "フォームを保存せずに離脱して、所有者がいなくなった添付ファイルをクリーンアップします。",
"orphan_cleanup_enabled": "孤立した添付ファイルの自動クリーンアップ",
"orphan_cleanup_enabled_hint": "デフォルトはオフです — 管理者が直接有効化する必要があります。有効化すると、保持期間を過ぎた孤立した添付ファイルのファイルと記録を毎日削除します。サイトロゴなど現在使用中の添付ファイルは削除しません。",
"orphan_retention_days": "孤立した添付ファイルの保持期間(日数)",
"orphan_retention_days_hint": "アップロード後この期間が経過した孤立した添付ファイルのみがクリーンアップの対象になります。フォーム作成中の中断を考慮して、余裕を持って設定してください。(1~3650日)"
},
"seo": {
"meta_settings": "メタタグ設定",