浏览代码

Merge pull request #176 from andrewdwallo/development-3.x

Development 3.x
3.x
Andrew Wallo 4 个月前
父节点
当前提交
7b02cbb632
没有帐户链接到提交者的电子邮件

+ 1
- 1
app/DTO/DocumentDTO.php 查看文件

@@ -72,7 +72,7 @@ readonly class DocumentDTO
72 72
             subheader: $document->subheader,
73 73
             footer: $document->footer,
74 74
             terms: $document->terms,
75
-            logo: $document->logo,
75
+            logo: $document->logo_url ?? $settings->logo_url,
76 76
             number: $document->documentNumber(),
77 77
             referenceNumber: $document->referenceNumber(),
78 78
             date: $document->documentDate(),

+ 6
- 16
app/Filament/Company/Clusters/Settings/Resources/DocumentDefaultResource.php 查看文件

@@ -19,8 +19,6 @@ use Filament\Forms\Set;
19 19
 use Filament\Resources\Resource;
20 20
 use Filament\Tables;
21 21
 use Filament\Tables\Table;
22
-use Illuminate\Support\Facades\Auth;
23
-use Livewire\Features\SupportFileUploads\TemporaryUploadedFile;
24 22
 
25 23
 class DocumentDefaultResource extends Resource
26 24
 {
@@ -88,27 +86,19 @@ class DocumentDefaultResource extends Resource
88 86
                 Forms\Components\Grid::make(1)
89 87
                     ->schema([
90 88
                         Forms\Components\FileUpload::make('logo')
91
-                            ->openable()
92 89
                             ->maxSize(1024)
93 90
                             ->localizeLabel()
94
-                            ->visibility('public')
95
-                            ->disk('public')
91
+                            ->openable()
96 92
                             ->directory('logos/document')
97
-                            ->imageResizeMode('contain')
93
+                            ->image()
98 94
                             ->imageCropAspectRatio('3:2')
99 95
                             ->panelAspectRatio('3:2')
100
-                            ->panelLayout('integrated')
101
-                            ->removeUploadedFileButtonPosition('center bottom')
102
-                            ->uploadButtonPosition('center bottom')
103
-                            ->uploadProgressIndicatorPosition('center bottom')
104
-                            ->getUploadedFileNameForStorageUsing(
105
-                                static fn (TemporaryUploadedFile $file): string => (string) str($file->getClientOriginalName())
106
-                                    ->prepend(Auth::user()->currentCompany->id . '_'),
107
-                            )
96
+                            ->panelLayout('compact')
108 97
                             ->extraAttributes([
109
-                                'class' => 'aspect-[3/2] w-[9.375rem] max-w-full',
98
+                                'class' => 'es-file-upload document-logo-preview',
110 99
                             ])
111
-                            ->acceptedFileTypes(['image/png', 'image/jpeg', 'image/gif']),
100
+                            ->loadingIndicatorPosition('left')
101
+                            ->removeUploadedFileButtonPosition('right'),
112 102
                         Forms\Components\Checkbox::make('show_logo')
113 103
                             ->localizeLabel(),
114 104
                         Forms\Components\ColorPicker::make('accent_color')

+ 8
- 17
app/Filament/Forms/Components/DocumentHeaderSection.php 查看文件

@@ -8,9 +8,6 @@ use Filament\Forms\Components\Group;
8 8
 use Filament\Forms\Components\Section;
9 9
 use Filament\Forms\Components\Split;
10 10
 use Filament\Forms\Components\TextInput;
11
-use Filament\Support\Enums\MaxWidth;
12
-use Illuminate\Support\Facades\Auth;
13
-use Livewire\Features\SupportFileUploads\TemporaryUploadedFile;
14 11
 
15 12
 class DocumentHeaderSection extends Section
16 13
 {
@@ -43,25 +40,19 @@ class DocumentHeaderSection extends Section
43 40
             Split::make([
44 41
                 Group::make([
45 42
                     FileUpload::make('logo')
46
-                        ->openable()
47 43
                         ->maxSize(1024)
48 44
                         ->localizeLabel()
49
-                        ->visibility('public')
50
-                        ->disk('public')
45
+                        ->openable()
51 46
                         ->directory('logos/document')
52
-                        ->imageResizeMode('contain')
47
+                        ->image()
53 48
                         ->imageCropAspectRatio('3:2')
54 49
                         ->panelAspectRatio('3:2')
55
-                        ->maxWidth(MaxWidth::ExtraSmall)
56
-                        ->panelLayout('integrated')
57
-                        ->removeUploadedFileButtonPosition('center bottom')
58
-                        ->uploadButtonPosition('center bottom')
59
-                        ->uploadProgressIndicatorPosition('center bottom')
60
-                        ->getUploadedFileNameForStorageUsing(
61
-                            static fn (TemporaryUploadedFile $file): string => (string) str($file->getClientOriginalName())
62
-                                ->prepend(Auth::user()->currentCompany->id . '_'),
63
-                        )
64
-                        ->acceptedFileTypes(['image/png', 'image/jpeg', 'image/gif']),
50
+                        ->panelLayout('compact')
51
+                        ->extraAttributes([
52
+                            'class' => 'es-file-upload document-logo',
53
+                        ])
54
+                        ->loadingIndicatorPosition('left')
55
+                        ->removeUploadedFileButtonPosition('right'),
65 56
                 ]),
66 57
                 Group::make([
67 58
                     TextInput::make('header')

+ 12
- 0
app/Models/Accounting/Estimate.php 查看文件

@@ -28,6 +28,7 @@ use Illuminate\Database\Eloquent\Model;
28 28
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
29 29
 use Illuminate\Database\Eloquent\Relations\HasOne;
30 30
 use Illuminate\Support\Carbon;
31
+use Illuminate\Support\Facades\Storage;
31 32
 use Livewire\Component;
32 33
 
33 34
 #[CollectedBy(DocumentCollection::class)]
@@ -83,6 +84,17 @@ class Estimate extends Document
83 84
         'total' => MoneyCast::class,
84 85
     ];
85 86
 
87
+    protected $appends = [
88
+        'logo_url',
89
+    ];
90
+
91
+    protected function logoUrl(): Attribute
92
+    {
93
+        return Attribute::get(static function (mixed $value, array $attributes): ?string {
94
+            return $attributes['logo'] ? Storage::disk('public')->url($attributes['logo']) : null;
95
+        });
96
+    }
97
+
86 98
     public function client(): BelongsTo
87 99
     {
88 100
         return $this->belongsTo(Client::class);

+ 12
- 0
app/Models/Accounting/Invoice.php 查看文件

@@ -34,6 +34,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
34 34
 use Illuminate\Database\Eloquent\Relations\MorphMany;
35 35
 use Illuminate\Database\Eloquent\Relations\MorphOne;
36 36
 use Illuminate\Support\Carbon;
37
+use Illuminate\Support\Facades\Storage;
37 38
 use Illuminate\Support\HtmlString;
38 39
 use Livewire\Component;
39 40
 
@@ -94,6 +95,17 @@ class Invoice extends Document
94 95
         'amount_due' => MoneyCast::class,
95 96
     ];
96 97
 
98
+    protected $appends = [
99
+        'logo_url',
100
+    ];
101
+
102
+    protected function logoUrl(): Attribute
103
+    {
104
+        return Attribute::get(static function (mixed $value, array $attributes): ?string {
105
+            return $attributes['logo'] ? Storage::disk('public')->url($attributes['logo']) : null;
106
+        });
107
+    }
108
+
97 109
     public function client(): BelongsTo
98 110
     {
99 111
         return $this->belongsTo(Client::class);

+ 13
- 0
app/Models/Accounting/RecurringInvoice.php 查看文件

@@ -33,10 +33,12 @@ use Filament\Notifications\Notification;
33 33
 use Guava\FilamentClusters\Forms\Cluster;
34 34
 use Illuminate\Database\Eloquent\Attributes\CollectedBy;
35 35
 use Illuminate\Database\Eloquent\Attributes\ObservedBy;
36
+use Illuminate\Database\Eloquent\Casts\Attribute;
36 37
 use Illuminate\Database\Eloquent\Model;
37 38
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
38 39
 use Illuminate\Database\Eloquent\Relations\HasMany;
39 40
 use Illuminate\Support\Carbon;
41
+use Illuminate\Support\Facades\Storage;
40 42
 use Livewire\Component;
41 43
 
42 44
 #[CollectedBy(DocumentCollection::class)]
@@ -113,6 +115,17 @@ class RecurringInvoice extends Document
113 115
         'total' => MoneyCast::class,
114 116
     ];
115 117
 
118
+    protected $appends = [
119
+        'logo_url',
120
+    ];
121
+
122
+    protected function logoUrl(): Attribute
123
+    {
124
+        return Attribute::get(static function (mixed $value, array $attributes): ?string {
125
+            return $attributes['logo'] ? Storage::disk('public')->url($attributes['logo']) : null;
126
+        });
127
+    }
128
+
116 129
     public function client(): BelongsTo
117 130
     {
118 131
         return $this->belongsTo(Client::class);

+ 8
- 0
resources/css/filament/company/theme.css 查看文件

@@ -10,6 +10,14 @@
10 10
 
11 11
 @config 'tailwind.config.js';
12 12
 
13
+.es-file-upload.document-logo > div {
14
+    @apply w-48;
15
+}
16
+
17
+.es-file-upload.document-logo-preview > div {
18
+    @apply w-40;
19
+}
20
+
13 21
 .fi-in-text-item .group-hover\/item\:underline, .fi-ta-text-item .group-hover\/item\:underline {
14 22
     @apply text-primary-600 dark:text-primary-400 font-semibold;
15 23
 }

+ 1
- 1
resources/views/components/company/document-template/logo.blade.php 查看文件

@@ -1,6 +1,6 @@
1 1
 @props([
2 2
     'shape' => 'square',
3
-    'size' => 'md',
3
+    'size' => 'lg',
4 4
 ])
5 5
 
6 6
 <img {{

正在加载...
取消
保存