Compare commits

..

2 Commits

Author SHA1 Message Date
lexx a737c2d571 configurable disks 2024-08-23 20:58:45 +03:00
lexx c43c29eb14 modal save button 2024-08-23 19:37:20 +03:00
11 changed files with 40 additions and 43 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -1,11 +1,11 @@
{
"main.js": {
"file": "assets/main-0h36XLim.js",
"file": "assets/main-BtcBvcC_.js",
"name": "main",
"src": "main.js",
"isEntry": true,
"css": [
"assets/main-CaexgiEy.css"
"assets/main-BWRwkaBb.css"
]
}
}
@@ -100,9 +100,9 @@
<DialogRecord bind:this={dialogRecord}>
{#if inLineCreateRecord}
<InlineEdit
{...inLineCreateRecord}
isCreateMode={true}
on:cancel={(e) => (inLineCreateRecord = null)}
on:inlinesaved={save}
/>
+5 -3
View File
@@ -44,7 +44,7 @@
margin: 6px 0;
border-color: transparent;
.button {
.button:not(.primary) {
background: var(--p30);
&:hover {
@@ -53,9 +53,10 @@
}
dialog {
.button {
.button:not(.primary) {
background: var(--p20);
&:hover {
background: var(--p30);
}
@@ -142,4 +143,5 @@
}
}
}
}
+1 -1
View File
@@ -19,7 +19,7 @@
background: var(--p20);
display: flex;
flex-direction: column;
gap: 3px;
gap: 4px;
}
.sidebar-header {
+12 -2
View File
@@ -25,8 +25,18 @@ final class Channel
)
{
$this->lucentUrl = $url . "/lucent";
$this->filesUrl = $url . "/storage";
$this->previewTargetUrl = $url . "/". $previewTarget;
$this->filesUrl = $this->makeFilesUrl();
$this->previewTargetUrl = $url . "/" . $previewTarget;
}
private function makeFilesUrl(): string
{
return match (config("filesystems.disks.lucent.driver")) {
"s3" => config("filesystems.disks.lucent.endpoint") . "/" . config("filesystems.disks.lucent.bucket"),
"local" => $this->url . "/storage" . config("filesystems.disks.lucent.endpoint"),
};
}
}
+2 -1
View File
@@ -3,6 +3,7 @@
namespace Lucent\Channel;
use Lucent\File\FileService;
use Lucent\Primitive\Collection;
use Lucent\Schema\Schema;
use Lucent\Schema\SchemaService;
@@ -13,7 +14,7 @@ final class ChannelService
public Channel $channel;
private function __construct(
public SchemaService $schemaService
public SchemaService $schemaService,
)
{
+10 -11
View File
@@ -14,7 +14,6 @@ use Lucent\LucentException;
use Lucent\Record\FileData as RecordFile;
use Lucent\Record\QueryRecord;
use Lucent\Schema\FilesSchema;
use Lucent\Schema\Schema;
use Spatie\ImageOptimizer\OptimizerChainFactory;
class FileService
@@ -28,7 +27,7 @@ class FileService
public function getPath(QueryRecord $file): string
{
return $this->channelService->channel->url . "/storage/" . $file->_file->path;
return $this->channelService->channel->filesUrl . "/" . $file->_file->path;
}
public function createFromUrl(FilesSchema $schema, string $url): FileUploadResult
@@ -111,15 +110,16 @@ class FileService
public function loadDisk(): Filesystem
{
return Storage::disk('lucent');
return Storage::build([
'driver' => 'local',
'driver' => 'lucent',
// 'key' => config("filesystems.disks.s3.key"),
// 'secret' => config("filesystems.disks.s3.secret"),
// 'region' => config("filesystems.disks.s3.region"),
// 'bucket' => config("filesystems.disks.s3.bucket"),
// // 'url' => $schema->objectStorageUrl,
// 'endpoint' => $schema->objectStorageEndpoint,
'use_path_style_endpoint' => false,
// 'use_path_style_endpoint' => false,
'visibility' => 'public', // now managed by aws policy
'root' => storage_path('app/public'),
'throw' => true,
@@ -140,12 +140,10 @@ class FileService
private function createThumbnail(Filesystem $disk, string $schemaPath, string $filename, UploadedFile $file): void
{
$thumbDir = storage_path("app/public/thumbs/" . $schemaPath . "/");
if (!file_exists($thumbDir)) {
make_dir_r($thumbDir);
}
$thumbDir = "thumbs/" . $schemaPath . "/";
// if (!file_exists($thumbDir)) {
// make_dir_r($thumbDir);
// }
try {
ImageManagerStatic::configure(['driver' => 'imagick']);
@@ -157,7 +155,8 @@ class FileService
$image->fit(300, 300);
try {
$image->encode('webp', 75)->save($thumbDir . $filename);
$this->loadDisk()->put($thumbDir . $filename, $image->encode('webp', 75));
// $image->encode('webp', 75)->save($thumbDir . $filename);
} catch (Exception $e) {
logger($e->getMessage());
}
+5 -20
View File
@@ -15,6 +15,7 @@ class ImageService
public function __construct(
public ImageManager $imageManager,
public FileService $fileService,
public ChannelService $channelService,
public Logger $logger
)
@@ -50,28 +51,18 @@ class ImageService
private function createTemplate(string $originalPath, string $template): string
{
$originalFilePath = public_path("storage/" . $originalPath);
$templateUri = "/templates/" . $template . "/" . $originalPath;
$templateFilePath = public_path("storage/" . $templateUri);
if (!file_exists($originalFilePath)) {
return $this->notFoundImage;
}
if (!file_exists(pathinfo($templateFilePath, PATHINFO_DIRNAME))) {
$this->make_dir(pathinfo($templateFilePath, PATHINFO_DIRNAME));
}
try {
$image = $this->imageManager->make($originalFilePath);
$image = $this->imageManager->make( $this->fileService->loadDisk()->get($originalPath));
} catch (Exception $e) {
$this->logger->error($e->getMessage());
return $this->notFoundImage;
return $originalPath;
}
$image = $image->filter(new $this->channelService->channel->imageFilters[$template]);
try {
$image = $this->imageManager->make((string)$image->encode('webp', 75));
$image->save($templateFilePath);
$templateUri = "/templates/" . $template . "/" . $originalPath;
$this->fileService->loadDisk()->put($templateUri, $image->encode('webp', 75));
} catch (Exception $e) {
$this->logger->error($e->getMessage());
return $this->notFoundImage;
@@ -80,10 +71,4 @@ class ImageService
return $templateUri;
}
private function make_dir(string $path): void
{
is_dir($path) || mkdir($path, 0777, true);
}
}