new deployer command

This commit is contained in:
Mark Gregory
2026-09-16 12:28:01 +01:00
parent 5d58e35275
commit 856038c762
13 changed files with 246 additions and 197 deletions
@@ -15,6 +15,9 @@ use Modules\Documentation\Models\DocumentationDocument;
class DocumentationController extends Controller
{
private const string STORAGE_DISK_CONFIG = 'documentation.storage_disk';
private const string UPLOAD_PATH_CONFIG = 'documentation.upload_path';
/**
* Display the documentation dashboard and document list.
*/
@@ -170,7 +173,7 @@ class DocumentationController extends Controller
{
abort_if(blank($document->attachment_path), 404);
return Storage::disk($document->attachment_disk ?: config('documentation.storage_disk', 'public'))
return Storage::disk($document->attachment_disk ?: config(self::STORAGE_DISK_CONFIG, 'public'))
->download($document->attachment_path, $document->attachment_name);
}
@@ -202,27 +205,19 @@ class DocumentationController extends Controller
*/
private function extractMarkdownBody(Request $request): ?string
{
if (! config('documentation.import_markdown_attachments', true)) {
return null;
}
$file = $request->file('attachment');
$canImport = config('documentation.import_markdown_attachments', true)
&& $file !== null
&& $this->isMarkdownUpload($request)
&& $file->getSize() <= (int) config('documentation.max_markdown_import_bytes', 1048576);
if ($file === null || ! $this->isMarkdownUpload($request)) {
return null;
}
if ($file->getSize() > (int) config('documentation.max_markdown_import_bytes', 1048576)) {
if (! $canImport) {
return null;
}
$content = file_get_contents($file->getRealPath());
if ($content === false) {
return null;
}
return trim($content);
return $content === false ? null : trim($content);
}
/**
@@ -250,8 +245,8 @@ class DocumentationController extends Controller
private function storeAttachment(Request $request): array
{
$file = $request->file('attachment');
$disk = config('documentation.storage_disk', 'public');
$path = $file->store(config('documentation.upload_path', 'documentation'), $disk);
$disk = config(self::STORAGE_DISK_CONFIG, 'public');
$path = $file->store(config(self::UPLOAD_PATH_CONFIG, 'documentation'), $disk);
return [
'attachment_disk' => $disk,
@@ -271,14 +266,14 @@ class DocumentationController extends Controller
return;
}
$disk = config('documentation.storage_disk', 'public');
$disk = config(self::STORAGE_DISK_CONFIG, 'public');
foreach ((array) $request->file('attachments') as $file) {
if ($file === null || ! $file->isValid()) {
continue;
}
$path = $file->store(config('documentation.upload_path', 'documentation'), $disk);
$path = $file->store(config(self::UPLOAD_PATH_CONFIG, 'documentation'), $disk);
$document->attachments()->create([
'disk' => $disk,
@@ -297,7 +292,7 @@ class DocumentationController extends Controller
private function deleteAttachment(DocumentationDocument $document): void
{
if (filled($document->attachment_path)) {
Storage::disk($document->attachment_disk ?: config('documentation.storage_disk', 'public'))->delete($document->attachment_path);
Storage::disk($document->attachment_disk ?: config(self::STORAGE_DISK_CONFIG, 'public'))->delete($document->attachment_path);
}
}
+9 -7
View File
@@ -6,6 +6,8 @@ use Illuminate\Support\Facades\Route;
use Modules\Documentation\Http\Controllers\DocumentationCategoryController;
use Modules\Documentation\Http\Controllers\DocumentationController;
const DOCUMENT_ROUTE = DOCUMENT_ROUTE;
Route::middleware(['web', 'auth'])
->prefix('documentation')
->name('documentation.')
@@ -15,13 +17,13 @@ Route::middleware(['web', 'auth'])
Route::get('/documents', [DocumentationController::class, 'index'])->name('documents.index');
Route::get('/documents/create', [DocumentationController::class, 'create'])->name('documents.create');
Route::post('/documents', [DocumentationController::class, 'store'])->name('documents.store');
Route::get('/documents/{document}', [DocumentationController::class, 'show'])->name('documents.show');
Route::get('/documents/{document}/edit', [DocumentationController::class, 'edit'])->name('documents.edit');
Route::put('/documents/{document}', [DocumentationController::class, 'update'])->name('documents.update');
Route::delete('/documents/{document}', [DocumentationController::class, 'destroy'])->name('documents.destroy');
Route::get('/documents/{document}/download', [DocumentationController::class, 'download'])->name('documents.download');
Route::get('/documents/{document}/attachments/{attachment}/download', [DocumentationController::class, 'downloadAttachment'])->name('documents.attachments.download');
Route::delete('/documents/{document}/attachments/{attachment}', [DocumentationController::class, 'destroyAttachment'])->name('documents.attachments.destroy');
Route::get(DOCUMENT_ROUTE, [DocumentationController::class, 'show'])->name('documents.show');
Route::get(DOCUMENT_ROUTE . '/edit', [DocumentationController::class, 'edit'])->name('documents.edit');
Route::put(DOCUMENT_ROUTE, [DocumentationController::class, 'update'])->name('documents.update');
Route::delete(DOCUMENT_ROUTE, [DocumentationController::class, 'destroy'])->name('documents.destroy');
Route::get(DOCUMENT_ROUTE . '/download', [DocumentationController::class, 'download'])->name('documents.download');
Route::get(DOCUMENT_ROUTE . '/attachments/{attachment}/download', [DocumentationController::class, 'downloadAttachment'])->name('documents.attachments.download');
Route::delete(DOCUMENT_ROUTE . '/attachments/{attachment}', [DocumentationController::class, 'destroyAttachment'])->name('documents.attachments.destroy');
Route::resource('categories', DocumentationCategoryController::class)->except(['show']);
});