cms-orbit / announcement
CMS Orbit announcement: document-based announcement content type for the Orbit admin engine.
Requires
- php: ^8.4
- cms-orbit/core: ^4.6
- laravel/framework: ^13.0
Requires (Dev)
- laravel/pint: ^1.30
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
cms-orbit/announcement는 Orbit 문서 엔진 위에 구축된 공지사항 패키지입니다.
관리자에서는 DocumentEntity 기반 CRUD로 공지를 관리하고, 프런트에서는 목록/상세 공개 페이지와 사이트맵 URL을 함께 제공합니다.
주요 기능
cms-orbit/core기반 문서형 공지 콘텐츠- 다국어
documents/document_contents저장 구조 - Orbit 관리자 CRUD 자동 등록
- 공개 목록/상세 페이지 제공
- 갤러리 첨부, 공개 시각(
public_at), 공지 여부(is_notice) 지원 - 사이트맵/SEO 노출용 공개 URL 제공
설치
composer require cms-orbit/announcement:^4.0 php artisan migrate php artisan orbit:frontend-sync # orbit:install 직후라면 생략 가능 npm run dev # 공개 Inertia 페이지 개발 시
cms-orbit/core가 먼저 설치·설정(orbit:install)되어 있어야 합니다.
Laravel Boost
이 패키지는 resources/boost/guidelines/announcement.md, resources/boost/skills/announcement-development/를 제공합니다.
- Boost 최초 설정: 호스트에서
php artisan boost:install1회 - 이후:
orbit:install/orbit:sync가 이 패키지를 Boost에 등록하고boost:update실행 (Boost가 이미 설정된 경우)
호스트 설정
| 작업 | 필수 여부 |
|---|---|
composer require cms-orbit/announcement + php artisan migrate |
필수 |
php artisan orbit:frontend-sync |
필수 (Core 설치 시 orbit:install이 이미 실행했다면 생략 가능) |
| Inertia 브리지 TSX 수동 작성 | 불필요 — sync 명령이 announcement/index, announcement/show 생성 |
Vite @cms-orbit/announcement alias |
불필요 — sync 명령이 주입 |
관리자 CRUD·공개 라우트·번역은 패키지 Service Provider가 자동 등록합니다. 호스트 routes/web.php 수정은 필요하지 않습니다.
빠른 시작
1. 관리자에서 공지 관리
설치 후 Orbit 관리자 Documents 섹션에 공지 엔티티가 자동 등록됩니다.
제목, 슬러그, 본문, 설명, 갤러리, 공개 시각, 승인 상태를 한 화면에서 관리할 수 있습니다.
2. 공개 페이지 연결
패키지는 다음 공개 라우트를 제공합니다.
announcements.indexannouncements.show
기본 경로는 아래와 같습니다.
/announcements
/announcements/{slug}
3. Inertia 페이지 (자동)
php artisan orbit:frontend-sync가 호스트 resources/js/pages/announcement/*.tsx 브리지를 생성합니다. 커스터마이징이 필요할 때만 아래처럼 직접 re-export 하세요.
export { default } from '@cms-orbit/announcement/pages/announcement/index';
export { default } from '@cms-orbit/announcement/pages/announcement/show';
어떤 데이터가 추가되나요?
- 공지 전용 마이그레이션
- 공지 모델과 팩토리
- 관리자 Entity 설명자
- 공개 컨트롤러와 웹 라우트
- 한국어 번역 리소스
운영 팁
slug를 비워두면 자동 생성 흐름을 사용할 수 있게 설계되어 있습니다.- 공개 상세 URL은 엔티티의
showUrl()과 사이트맵 URL 생성에 함께 사용됩니다. - 공개 시각과 승인 상태를 같이 써두면 발행 시점을 맞춘 운영이 수월합니다.
업데이트 노트
4.3.0
cms-orbit/core^4.5→^4.6: core 4.6.0 이OrbitAccess라우팅 리졸버와 여러 관리자 화면 수정(PostgreSQL 500, strict mode,orbit:install의 OrbitProvider 미등록)을 담고 있습니다.- GitHub Actions 워크플로 추가: php 8.4·8.5 로
composer validate와pint --test를 돌리는ci.yml, 그리고 태그의composer.jsonversion 이 태그명과 일치하는지 확인하는release-guard.yml. Packagist 는 불일치 태그를 조용히 무시합니다. - 위성 패키지의 CI 는
cms-orbit/core를 Packagist 게시본으로 받으므로, "지금 게시된 core 와 이 패키지의 제약이 함께 해석되는가" 까지 같이 검증합니다. - pint 포맷 정규화:
pint --test를 CI 게이트로 걸려면 기존 코드가 설정에 맞아야 해서 함께 정규화했습니다. 순수 포맷 변경이며 동작은 바뀌지 않습니다.
4.2.0
laravel/framework^11.0 || ^12.0 || ^13.0→^13.0: Laravel 13 전용으로 좁혔습니다.cms-orbit/core^4.4→^4.5.- 왜 좁혔나: Pest 5 를 채택한 4.4.0(패키지별 4.1.0)부터
pest-plugin-laravel5 가laravel/framework ^13.23을 요구해, 이 저장소의 테스트가 Laravel 13 으로만 해석됩니다. 즉 Laravel 11·12 호환성을 더 이상 검증할 수 없는 상태로 그 범위를 광고하고 있었습니다. 검증되지 않는 지원 범위를 제약에 남겨두지 않기로 했습니다. - Laravel 11·12 사용자는 업그레이드가 필요합니다. 이번 변경은 실제로 지원 구성을 제거하므로, php 하한 상향과 달리 소비자에게 직접 영향이 있습니다. Laravel 13 으로 올리거나 이전 버전에 머물러야 합니다.
4.1.0
- php 제약
^8.3→^8.4: php 8.3 환경에서는 더 이상 설치되지 않습니다. cms-orbit/core^4.1→^4.4.- 생산 의존은 하나도 바뀌지 않았습니다. php 하한 상향으로 새로 받게 된 패키지는 Pest 5 계열(
require-dev)뿐입니다. cms-orbit 전 패키지의 직접 의존 20개를 최신판과 전수 대조했고, 나머지 18개는 이미 php^8.3에서 최신을 받고 있었습니다. 이번 상향은 기능 확보가 아니라 장기 정리 목적입니다. - 소비자의 Laravel 11·12 지원은 유지됩니다 (
laravel/framework ^11.0 || ^12.0 || ^13.0).
4.0.3
- php 제약
^8.3복구: 게시된 태그는 모두^8.3이었으나 main 에서^8.2로 내려가 있었습니다. Laravel 13 은 php^8.3을 요구하므로php ^8.2+laravel/framework ^13조합은 php 8.2 환경에서 조용히 Laravel 11 을 설치합니다. laravel/pint^1.14→^1.30(1.30 이 php^8.3을 요구).- 릴리스 파이프라인 도입:
.githooks/pre-push가 composer.json 의version필드와 태그명이 어긋난 태그의 푸시를 차단합니다.cms-orbit/core의4.0.8태그가version: 4.0.7로 만들어져 Packagist 가 아무 오류 없이 그 태그를 무시했고, 4.0.8 이 게시되지 않은 사실을 아무도 알지 못한 사고가 있었습니다.bin/release <버전>이 version 갱신·검증·커밋·태그·푸시를 한 동작으로 묶어 이 드리프트를 원천 차단하고,cms-orbit/*의존이 실제로 Packagist 에 게시되어 있는지 Composer 리졸버로 확인합니다. 저장소를 클론해composer install하면core.hooksPath가 자동 설정됩니다.
License
MIT