10-04-2026
This commit is contained in:
parent
4d6b4930b2
commit
4bb89aad8c
836 changed files with 52961 additions and 5950 deletions
264
packages/flux-cms/MIGRATION.md
Normal file
264
packages/flux-cms/MIGRATION.md
Normal file
|
|
@ -0,0 +1,264 @@
|
|||
# Flux CMS — Migration in ein neues Projekt
|
||||
|
||||
Diese Checkliste führt dich durch alle Schritte, um Flux CMS aus einem bestehenden Projekt in ein neues Laravel-Projekt zu migrieren.
|
||||
|
||||
> **Voraussetzungen:** Das neue Projekt benötigt Laravel 11+, Livewire 3, Volt, Flux UI (Free oder Pro) und Tailwind CSS v4.
|
||||
|
||||
---
|
||||
|
||||
## Schritt 1 — Package-Verzeichnis kopieren
|
||||
|
||||
```bash
|
||||
# Das gesamte Package-Verzeichnis ins neue Projekt kopieren
|
||||
cp -r altes-projekt/package/ neues-projekt/package/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 2 — composer.json anpassen
|
||||
|
||||
```json
|
||||
{
|
||||
"repositories": [
|
||||
{ "type": "path", "url": "package/flux-cms/core" }
|
||||
],
|
||||
"require": {
|
||||
"flux-cms/core": "@dev",
|
||||
"intervention/image": "^3.0",
|
||||
"blade-ui-kit/blade-heroicons": "^2.0"
|
||||
},
|
||||
"autoload": {
|
||||
"files": ["app/helpers.php"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
composer update
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 3 — Konfiguration und Migrations
|
||||
|
||||
```bash
|
||||
# Config publizieren
|
||||
php artisan vendor:publish --tag=flux-cms-config
|
||||
|
||||
# Migrations ausführen (erstellt alle flux_cms_* Tabellen)
|
||||
php artisan migrate
|
||||
```
|
||||
|
||||
**Hinweis:** Falls das Quell-Projekt zusätzliche Migrations enthält (z.B. `add_detail_columns_to_flux_cms_downloads_table`), diese ebenfalls kopieren:
|
||||
|
||||
```bash
|
||||
cp altes-projekt/database/migrations/*flux_cms*.php neues-projekt/database/migrations/
|
||||
php artisan migrate
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 4 — Helper-Funktionen einrichten
|
||||
|
||||
Datei `app/helpers.php` erstellen (vollständiger Inhalt in [SETUP.md](SETUP.md#21-datei-erstellen)).
|
||||
|
||||
```bash
|
||||
composer dump-autoload
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 5 — Livewire-Komponenten kopieren
|
||||
|
||||
```bash
|
||||
mkdir -p app/Livewire/Admin/Cms
|
||||
|
||||
# Aus Package-Referenz kopieren
|
||||
cp package/flux-cms/core/src/Helpers/MediaLibraryUploader.php app/Livewire/Admin/Cms/
|
||||
cp package/flux-cms/core/src/Helpers/MediaPicker.php app/Livewire/Admin/Cms/
|
||||
cp package/flux-cms/core/src/Helpers/MediaUploader.php app/Livewire/Admin/Cms/
|
||||
```
|
||||
|
||||
Namespace in allen drei Dateien anpassen:
|
||||
```php
|
||||
namespace App\Livewire\Admin\Cms;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 6 — Admin-Views einrichten
|
||||
|
||||
```bash
|
||||
mkdir -p resources/views/livewire/admin/cms
|
||||
mkdir -p resources/views/components/layouts
|
||||
|
||||
# Alle Admin-Views kopieren
|
||||
cp package/flux-cms/core/resources/views/admin-reference/cms/*.blade.php \
|
||||
resources/views/livewire/admin/cms/
|
||||
|
||||
# Admin-Layout kopieren
|
||||
cp package/flux-cms/core/resources/views/admin-reference/layout-cms.blade.php \
|
||||
resources/views/components/layouts/cms.blade.php
|
||||
```
|
||||
|
||||
**Anpassen:**
|
||||
- `resources/views/components/layouts/cms.blade.php`: Branding/Logo anpassen
|
||||
- `route('dashboard')` im Layout ggf. anpassen (Redirect nach Login)
|
||||
|
||||
---
|
||||
|
||||
## Schritt 7 — Routes registrieren
|
||||
|
||||
In `routes/web.php`:
|
||||
|
||||
```php
|
||||
use Livewire\Volt\Volt;
|
||||
|
||||
Route::middleware(['auth'])->group(function () {
|
||||
Volt::route('admin/cms', 'admin.cms.dashboard')->name('cms.dashboard');
|
||||
Volt::route('admin/cms/content', 'admin.cms.content-index')->name('cms.content.index');
|
||||
Volt::route('admin/cms/media', 'admin.cms.media-index')->name('cms.media.index');
|
||||
Volt::route('admin/cms/news', 'admin.cms.news-index')->name('cms.news.index');
|
||||
Volt::route('admin/cms/industries', 'admin.cms.industries-index')->name('cms.industries.index');
|
||||
Volt::route('admin/cms/faqs', 'admin.cms.faqs-index')->name('cms.faqs.index');
|
||||
Volt::route('admin/cms/linkedin', 'admin.cms.linkedin-index')->name('cms.linkedin.index');
|
||||
Volt::route('admin/cms/downloads', 'admin.cms.downloads-index')->name('cms.downloads.index');
|
||||
Volt::route('admin/cms/team', 'admin.cms.team-index')->name('cms.team.index');
|
||||
Volt::route('admin/cms/search-index', 'admin.cms.search-index')->name('cms.search-index');
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 8 — Storage-Link erstellen
|
||||
|
||||
```bash
|
||||
php artisan storage:link
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 9 — Seeders kopieren (optional)
|
||||
|
||||
Falls Inhalte aus dem alten Projekt übernommen werden sollen:
|
||||
|
||||
```bash
|
||||
# Referenz-Seeders als Ausgangspunkt
|
||||
cp package/flux-cms/core/database/seeders-reference/*.php database/seeders/
|
||||
```
|
||||
|
||||
Die Seeders müssen für das neue Projekt angepasst werden (andere Inhalte, andere Bilder).
|
||||
Ausführungsreihenfolge in `DatabaseSeeder`:
|
||||
|
||||
```php
|
||||
$this->call([
|
||||
CmsContentSeeder::class,
|
||||
CmsMediaSeeder::class,
|
||||
CmsNewsItemSeeder::class,
|
||||
CmsIndustrySeeder::class,
|
||||
CmsFaqSeeder::class,
|
||||
CmsLinkedinPostSeeder::class,
|
||||
CmsDownloadSeeder::class,
|
||||
CmsSearchIndexSeeder::class,
|
||||
]);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 10 — Medien migrieren (optional)
|
||||
|
||||
Falls Medien aus dem alten Projekt übernommen werden sollen:
|
||||
|
||||
```bash
|
||||
# Storage-Verzeichnis kopieren
|
||||
cp -r altes-projekt/storage/app/public/cms/ neues-projekt/storage/app/public/cms/
|
||||
```
|
||||
|
||||
Dann den `CmsMediaSeeder` ausführen, um die DB-Einträge wiederherzustellen:
|
||||
|
||||
```bash
|
||||
php artisan db:seed --class=CmsMediaSeeder
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 11 — Vite Build
|
||||
|
||||
```bash
|
||||
npm install
|
||||
npm run build
|
||||
# oder für Entwicklung:
|
||||
npm run dev
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 12 — Tests einrichten (optional)
|
||||
|
||||
```bash
|
||||
# Referenz-Tests kopieren
|
||||
cp -r package/flux-cms/core/tests-reference/Feature/Cms tests/Feature/Cms
|
||||
|
||||
# Tests ausführen
|
||||
php artisan test --filter=Cms
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Checkliste
|
||||
|
||||
- [ ] Package-Verzeichnis kopiert (`package/flux-cms/`)
|
||||
- [ ] `composer.json` angepasst (Repository, Require, Autoload)
|
||||
- [ ] `composer update` ausgeführt
|
||||
- [ ] Config publiziert (`vendor:publish --tag=flux-cms-config`)
|
||||
- [ ] Migrations ausgeführt (inkl. projektspezifische)
|
||||
- [ ] `app/helpers.php` erstellt
|
||||
- [ ] `composer dump-autoload` ausgeführt
|
||||
- [ ] Livewire-Komponenten kopiert + Namespace angepasst
|
||||
- [ ] Admin-Views kopiert
|
||||
- [ ] Layout angepasst (Branding, Route-Namen)
|
||||
- [ ] Routes registriert
|
||||
- [ ] `storage:link` ausgeführt
|
||||
- [ ] Seeders angepasst und ausgeführt (optional)
|
||||
- [ ] Medien migriert (optional)
|
||||
- [ ] Vite Build ausgeführt
|
||||
- [ ] Admin-Login testen: `/admin/cms`
|
||||
|
||||
---
|
||||
|
||||
## Häufige Probleme
|
||||
|
||||
### "View not found" für `livewire.admin.cms.*`
|
||||
→ Prüfen ob Volt-Mount-Path `resources/views/livewire/` in `VoltServiceProvider` registriert ist.
|
||||
|
||||
### Bilder werden nicht angezeigt
|
||||
→ `php artisan storage:link` ausführen. Prüfen ob `APP_URL` in `.env` korrekt gesetzt ist.
|
||||
|
||||
### "Route [cms.dashboard] not defined"
|
||||
→ Sicherstellen dass alle CMS-Routes in `routes/web.php` registriert sind.
|
||||
|
||||
### Bilder hinter HTTPS-Proxy haben falsche URLs
|
||||
→ In `bootstrap/app.php`:
|
||||
```php
|
||||
->withMiddleware(function (Middleware $middleware) {
|
||||
$middleware->trustProxies(at: '*');
|
||||
})
|
||||
```
|
||||
Und in `AppServiceProvider::boot()`:
|
||||
```php
|
||||
if (request()->header('X-Forwarded-Proto') === 'https') {
|
||||
URL::forceScheme('https');
|
||||
}
|
||||
```
|
||||
|
||||
### Flux UI `<flux:toast />` fehlt
|
||||
→ Das Layout `resources/views/components/layouts/cms.blade.php` muss `<flux:toast />` enthalten (bereits im Referenz-Layout vorhanden).
|
||||
|
||||
---
|
||||
|
||||
## Weiterführende Dokumentation
|
||||
|
||||
- [README.md](README.md) — Überblick, alle Features, Helper-Funktionen
|
||||
- [SETUP.md](SETUP.md) — Detaillierte Schritt-für-Schritt-Anleitung
|
||||
- [ARCHITECTURE.md](ARCHITECTURE.md) — Datenbankschema, Datenfluss, Komponenten-Architektur
|
||||
- [README-FILE-UPLOAD.md](README-FILE-UPLOAD.md) — Medienbibliothek im Detail
|
||||
Loading…
Add table
Add a link
Reference in a new issue