summaryrefslogtreecommitdiff
path: root/platform/www/inc/Manifest.php
diff options
context:
space:
mode:
Diffstat (limited to 'platform/www/inc/Manifest.php')
-rw-r--r--platform/www/inc/Manifest.php84
1 files changed, 84 insertions, 0 deletions
diff --git a/platform/www/inc/Manifest.php b/platform/www/inc/Manifest.php
new file mode 100644
index 0000000..29e7f26
--- /dev/null
+++ b/platform/www/inc/Manifest.php
@@ -0,0 +1,84 @@
+<?php
+
+namespace dokuwiki;
+
+use dokuwiki\Extension\Event;
+
+class Manifest
+{
+ public function sendManifest()
+ {
+ $manifest = retrieveConfig('manifest', 'jsonToArray');
+
+ global $conf;
+
+ $manifest['scope'] = DOKU_REL;
+
+ if (empty($manifest['name'])) {
+ $manifest['name'] = $conf['title'];
+ }
+
+ if (empty($manifest['short_name'])) {
+ $manifest['short_name'] = $conf['title'];
+ }
+
+ if (empty($manifest['description'])) {
+ $manifest['description'] = $conf['tagline'];
+ }
+
+ if (empty($manifest['start_url'])) {
+ $manifest['start_url'] = DOKU_REL;
+ }
+
+ $styleUtil = new \dokuwiki\StyleUtils();
+ $styleIni = $styleUtil->cssStyleini();
+ $replacements = $styleIni['replacements'];
+
+ if (empty($manifest['background_color'])) {
+ $manifest['background_color'] = $replacements['__background__'];
+ }
+
+ if (empty($manifest['theme_color'])) {
+ $manifest['theme_color'] = !empty($replacements['__theme_color__'])
+ ? $replacements['__theme_color__']
+ : $replacements['__background_alt__'];
+ }
+
+ if (empty($manifest['icons'])) {
+ $manifest['icons'] = [];
+ if (file_exists(mediaFN(':wiki:favicon.ico'))) {
+ $url = ml(':wiki:favicon.ico', '', true, '', true);
+ $manifest['icons'][] = [
+ 'src' => $url,
+ 'sizes' => '16x16',
+ ];
+ }
+
+ $look = [
+ ':wiki:logo.svg',
+ ':logo.svg',
+ ':wiki:dokuwiki.svg'
+ ];
+
+ foreach ($look as $svgLogo) {
+
+ $svgLogoFN = mediaFN($svgLogo);
+
+ if (file_exists($svgLogoFN)) {
+ $url = ml($svgLogo, '', true, '', true);
+ $manifest['icons'][] = [
+ 'src' => $url,
+ 'sizes' => '17x17 512x512',
+ 'type' => 'image/svg+xml',
+ ];
+ break;
+ };
+ }
+ }
+
+ Event::createAndTrigger('MANIFEST_SEND', $manifest);
+
+ header('Content-Type: application/manifest+json');
+ echo json_encode($manifest);
+ }
+}