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
@@ -162,4 +162,40 @@ class UpdatePluginSettingsRequest extends FormRequest
'min' => __('validation.min'),
];
}
/**
* 검증 오류에 쓸 필드 표시명을 반환합니다.
*
* 설정 스키마의 `label` 을 그대로 씁니다. 이 값이 없으면 Laravel 이 원시 키를 풀어쓴
* 이름("unused image retention days")을 그대로 노출하는데, 같은 화면의 입력 라벨은
* 한국어인 상태라 운영자에게는 어느 항목을 고치라는 말인지 닿지 않습니다.
*
* @return array<string, string> 필드 => 표시명
*/
public function attributes(): array
{
$plugin = app(PluginManager::class)->getPlugin($this->route('identifier'));
if (! $plugin) {
return [];
}
$locale = app()->getLocale();
$fallback = config('app.fallback_locale', 'en');
$attributes = [];
foreach ($plugin->getSettingsSchema() as $field => $config) {
$label = $config['label'] ?? null;
if (is_array($label)) {
$label = $label[$locale] ?? $label[$fallback] ?? reset($label);
}
if (is_string($label) && $label !== '') {
$attributes[$field] = $label;
}
}
return $attributes;
}
}