{{ $product->name }}
+{{ $product->formatted_size }} · {{ $product->platform ?: 'Software' }}
+Download {{ $product->name }} ↓ +diff --git a/app/Http/Controllers/ReleaseController.php b/app/Http/Controllers/ReleaseController.php
index b51954b..bce87b6 100644
--- a/app/Http/Controllers/ReleaseController.php
+++ b/app/Http/Controllers/ReleaseController.php
@@ -38,6 +38,12 @@ final class ReleaseController extends Controller
return $this->send($release);
}
+ public function productDetails(DownloadProduct $product)
+ {
+ abort_unless($product->is_published && $product->file_path, 404);
+ return view('downloads.product', compact('product'));
+ }
+
public function productDownload(DownloadProduct $product): BinaryFileResponse
{
abort_unless($product->is_published && $product->file_path && Storage::disk('local')->exists($product->file_path), 404);
diff --git a/resources/views/downloads/index.blade.php b/resources/views/downloads/index.blade.php
index fe9892e..70b60b7 100644
--- a/resources/views/downloads/index.blade.php
+++ b/resources/views/downloads/index.blade.php
@@ -4,7 +4,13 @@
Build {{ $latest->build_number }} · Released {{ $latest->published_at?->format('j F Y') }}
{{ $latest->sha256 }}Additional tools and installers available from our team.
Additional tools and installers available from our team.
{{ \Illuminate\Support\Str::limit(trim(preg_replace('/\s+/', ' ', strip_tags(\Illuminate\Support\Str::markdown($product->description ?: 'Download the latest available package.', ['html_input' => 'strip', 'allow_unsafe_links' => false])))), 190) }}
+ +Published SonarDesk builds remain available here for customers who need a previous release.
No published releases are available yet.
@endforelse{{ $settings['support_text'] }}
{{ $product->formatted_size }} · {{ $product->platform ?: 'Software' }}
+Download {{ $product->name }} ↓ +