diff --git a/laravel_app/app/Http/Controllers/ProjectController.php b/laravel_app/app/Http/Controllers/ProjectController.php index 874ac06..48234df 100644 --- a/laravel_app/app/Http/Controllers/ProjectController.php +++ b/laravel_app/app/Http/Controllers/ProjectController.php @@ -15,7 +15,7 @@ public function index() public function show(string $projectName,?string $currentTab = null) { if($project = Project::firstWhere([['name',$projectName]])) { - $availableTabs = ['downloads', 'mosaics', 'reports', 'mailings', 'settings', 'exports']; + $availableTabs = ['downloads', 'mosaics', 'reports', 'mailings', 'settings', 'exports', 'logs']; return in_array($currentTab, $availableTabs) ? view('projects.show', compact(['project', 'currentTab'])) : redirect(route('project.show', [$projectName,'downloads'])); } return abort(404); diff --git a/laravel_app/app/Livewire/Projects/Tabs/Logs.php b/laravel_app/app/Livewire/Projects/Tabs/Logs.php new file mode 100644 index 0000000..46fff5a --- /dev/null +++ b/laravel_app/app/Livewire/Projects/Tabs/Logs.php @@ -0,0 +1,33 @@ +project)->where('name', $file_name)->first()->path); + } + + public function render() + { + $logs = ProjectLogger::getAsList($this->project); + + return view('livewire.projects.tabs.logs', [ + 'logs' => $logs, + ]); + } +} diff --git a/laravel_app/app/ProjectLogger.php b/laravel_app/app/ProjectLogger.php index e4b4e8e..d128647 100644 --- a/laravel_app/app/ProjectLogger.php +++ b/laravel_app/app/ProjectLogger.php @@ -3,6 +3,7 @@ namespace App; use App\Models\Project; +use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Storage; class ProjectLogger @@ -13,4 +14,20 @@ public static function log(Project $project, $message) Storage::makeDirectory(dirname($filePath)); file_put_contents(Storage::path($filePath), now()->format('Y-m-d H:i:s') . ': ' . $message . PHP_EOL, FILE_APPEND); } + + public static function getAsList(Project $project) + { + $logs = []; + $logPath = $project->download_path . '/logs'; + if(Storage::exists($logPath)) { + $files = Storage::files($logPath); + foreach ($files as $file) { + $logs[] = (object) [ + 'name' => basename($file), + 'path' => Storage::path( $project->download_path . '/logs/'. basename($file)), + ]; + } + } + return collect($logs); + } } diff --git a/laravel_app/resources/views/livewire/projects/menu.blade.php b/laravel_app/resources/views/livewire/projects/menu.blade.php index 9c9c81d..2e51d9a 100644 --- a/laravel_app/resources/views/livewire/projects/menu.blade.php +++ b/laravel_app/resources/views/livewire/projects/menu.blade.php @@ -5,4 +5,5 @@ Mailings Settings Exports + Logs diff --git a/laravel_app/resources/views/livewire/projects/tabs/logs.blade.php b/laravel_app/resources/views/livewire/projects/tabs/logs.blade.php new file mode 100644 index 0000000..965fbe0 --- /dev/null +++ b/laravel_app/resources/views/livewire/projects/tabs/logs.blade.php @@ -0,0 +1,49 @@ +
+
+
+
+

Logs

+
+
+ +
+
+
+
+
+
+ + + + + + + + + @foreach($logs as $log) + + + + + @endforeach + +
+ {{__('Date')}} + + {{__('Open')}} +
{{ $log->name }} + +
+
+
+
+ Results: {{ $logs->count() }} +
+
+
+
+
+
+
+ diff --git a/laravel_app/resources/views/projects/show.blade.php b/laravel_app/resources/views/projects/show.blade.php index 09b851e..e64ac2c 100644 --- a/laravel_app/resources/views/projects/show.blade.php +++ b/laravel_app/resources/views/projects/show.blade.php @@ -27,6 +27,9 @@ @case('exports') @break + @case('logs') + + @break @default
Menu Component not found.
@endswitch