]> BookStack Code Mirror - bookstack/commitdiff
Add XML for OpenSearch
authorMaximilian Walter <redacted>
Mon, 9 Sep 2024 20:54:33 +0000 (22:54 +0200)
committerMaximilian Walter <redacted>
Mon, 9 Sep 2024 20:54:33 +0000 (22:54 +0200)
app/App/MetaController.php
resources/views/layouts/base.blade.php
resources/views/misc/opensearch.blade.php [new file with mode: 0644]
routes/web.php

index 1515b4f7eda6ed550bca45bfd5c0ad47f1a801ef..a94334c585184a45baed6ad24a56cf70b845aca7 100644 (file)
@@ -64,4 +64,14 @@ class MetaController extends Controller
             'jsLibData' => file_get_contents(base_path('dev/licensing/js-library-licenses.txt')),
         ]);
     }
+
+    /**
+     * Show the view for /opensearch.xml.
+     */
+    public function opensearch()
+    {
+        return response()
+            ->view('misc.opensearch')
+            ->header('Content-Type', 'application/opensearchdescription+xml');
+    }
 }
index 4d4d07dc2ac4312b0dfc8da4ae798ad31342a780..ddecb8e76e144042b72076f0cbb2ed299731583a 100644 (file)
@@ -32,6 +32,9 @@
     <link rel="manifest" href="{{ url('/manifest.json') }}">
     <meta name="mobile-web-app-capable" content="yes">
 
+    <!-- OpenSearch -->
+    <link rel="search" type="application/opensearchdescription+xml" title="{{ setting('app-name') }}" href="{{ url('/opensearch.xml') }}">
+
     @yield('head')
 
     <!-- Custom Styles & Head Content -->
diff --git a/resources/views/misc/opensearch.blade.php b/resources/views/misc/opensearch.blade.php
new file mode 100644 (file)
index 0000000..cfcca8e
--- /dev/null
@@ -0,0 +1,11 @@
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
+  <ShortName>{{ setting('app-name') }}</ShortName>
+  <Description>Search {{ setting('app-name') }}</Description>
+  <Image width="256" height="256" type="image/png">{{ setting('app-icon') ?: url('/icon.png') }}</Image>
+  <Image width="180" height="180" type="image/png">{{ setting('app-icon-180') ?: url('/icon-180.png') }}</Image>
+  <Image width="128" height="128" type="image/png">{{ setting('app-icon-128') ?: url('/icon-128.png') }}</Image>
+  <Image width="64" height="64" type="image/png">{{ setting('app-icon-64') ?: url('/icon-64.png') }}</Image>
+  <Image width="32" height="32" type="image/png">{{ setting('app-icon-32') ?: url('/icon-32.png') }}</Image>
+  <Url type="text/html" rel="results" method="get" template="{{ url('/search') }}?term={searchTerms}"/>
+  <Url type="application/opensearchdescription+xml" rel="self" template="{{ url('/opensearch.xml') }}"/>
+</OpenSearchDescription>
index 58b8f4e543107aec56185e4927460d3ce413442c..81b938f32eccbde217f15ded0f9e572935c122bf 100644 (file)
@@ -23,6 +23,7 @@ Route::get('/robots.txt', [MetaController::class, 'robots']);
 Route::get('/favicon.ico', [MetaController::class, 'favicon']);
 Route::get('/manifest.json', [MetaController::class, 'pwaManifest']);
 Route::get('/licenses', [MetaController::class, 'licenses']);
+Route::get('/opensearch.xml', [MetaController::class, 'opensearch']);
 
 // Authenticated routes...
 Route::middleware('auth')->group(function () {
Morty Proxy This is a proxified and sanitized view of the page, visit original site.