docs: add README, boost skill, and documentation site
This commit is contained in:
72
docs/content/2.essentials/5.attachments.md
Normal file
72
docs/content/2.essentials/5.attachments.md
Normal file
@@ -0,0 +1,72 @@
|
||||
---
|
||||
title: Attachments
|
||||
description: File uploads for comments.
|
||||
navigation:
|
||||
icon: i-lucide-paperclip
|
||||
seo:
|
||||
description: Configure file attachments for comments.
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
Comments support file attachments for both images and documents. Images are displayed inline within the comment body, while documents appear as downloadable links.
|
||||
|
||||
## Configuration
|
||||
|
||||
```php
|
||||
// config/comments.php
|
||||
'attachments' => [
|
||||
'enabled' => true,
|
||||
'disk' => 'public',
|
||||
'max_size' => 10240, // KB (10 MB)
|
||||
'allowed_types' => [
|
||||
'image/jpeg',
|
||||
'image/png',
|
||||
'image/gif',
|
||||
'image/webp',
|
||||
'application/pdf',
|
||||
'text/plain',
|
||||
'application/msword',
|
||||
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
||||
],
|
||||
],
|
||||
```
|
||||
|
||||
| Key | Default | Description |
|
||||
|-----|---------|-------------|
|
||||
| `enabled` | `true` | Show/hide the attachment upload UI |
|
||||
| `disk` | `'public'` | Laravel filesystem disk for storage |
|
||||
| `max_size` | `10240` | Maximum file size in kilobytes |
|
||||
| `allowed_types` | images, pdf, text, word | Array of allowed MIME types |
|
||||
|
||||
## Disabling Attachments
|
||||
|
||||
```php
|
||||
'attachments' => [
|
||||
'enabled' => false,
|
||||
],
|
||||
```
|
||||
|
||||
This removes the file upload UI from the comment form entirely.
|
||||
|
||||
## Storage
|
||||
|
||||
Attachments are stored via Livewire's file upload mechanism. Each attachment record tracks:
|
||||
|
||||
- `file_path` -- Path on the configured disk
|
||||
- `original_name` -- Original filename for display
|
||||
- `mime_type` -- MIME type for rendering decisions
|
||||
- `size` -- File size in bytes
|
||||
- `disk` -- Storage disk name
|
||||
|
||||
When a comment is deleted, its attachments are cascade deleted from the database. The physical files are removed from the disk.
|
||||
|
||||
## Helper Methods
|
||||
|
||||
The `CommentAttachment` model provides:
|
||||
|
||||
```php
|
||||
$attachment->isImage(); // Check if attachment is an image
|
||||
$attachment->url(); // Get the storage URL
|
||||
$attachment->formattedSize(); // Human-readable size (e.g., "2.5 MB")
|
||||
```
|
||||
Reference in New Issue
Block a user