xref: /template/strap/action/manifest.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1007225e5Sgerardnico<?php
2007225e5Sgerardnico
3*4cadd4f8SNickeauuse ComboStrap\ColorRgb;
4*4cadd4f8SNickeauuse ComboStrap\Mime;
5*4cadd4f8SNickeauuse ComboStrap\Site;
6*4cadd4f8SNickeau
7007225e5Sgerardnico
8007225e5Sgerardnico
9007225e5Sgerardnico/**
10007225e5Sgerardnico *
11007225e5Sgerardnico * To add the manifest image
12007225e5Sgerardnico *
13007225e5Sgerardnico * https://www.dokuwiki.org/devel:manifest
14007225e5Sgerardnico *
15007225e5Sgerardnico * @see <a href="https://combostrap.com/manifest">manifest</a>
16007225e5Sgerardnico *
17c3437056SNickeau * [[doku>devel:manifest|webmanifest]]
18c3437056SNickeau * https://developer.mozilla.org/en-US/docs/Web/Manifest
19007225e5Sgerardnico */
20007225e5Sgerardnicoclass action_plugin_combo_manifest extends DokuWiki_Action_Plugin
21007225e5Sgerardnico{
22007225e5Sgerardnico
23007225e5Sgerardnico
24007225e5Sgerardnico    function register(Doku_Event_Handler $controller)
25007225e5Sgerardnico    {
26007225e5Sgerardnico
27007225e5Sgerardnico        /* This will call the function _manifest */
28007225e5Sgerardnico        $controller->register_hook(
29007225e5Sgerardnico            'MANIFEST_SEND',
30*4cadd4f8SNickeau            'AFTER',
31007225e5Sgerardnico            $this,
32007225e5Sgerardnico            '_manifest',
33007225e5Sgerardnico            array()
34007225e5Sgerardnico        );
35007225e5Sgerardnico
36007225e5Sgerardnico
37007225e5Sgerardnico    }
38007225e5Sgerardnico
39007225e5Sgerardnico
40007225e5Sgerardnico    /**
41007225e5Sgerardnico     * Main function; dispatches the visual comment actions
42007225e5Sgerardnico     * @param   $event Doku_Event
43007225e5Sgerardnico     *
44007225e5Sgerardnico     * We take into account the file generated by https://realfavicongenerator.net/
45007225e5Sgerardnico     *
46007225e5Sgerardnico     *
47007225e5Sgerardnico     *
48007225e5Sgerardnico     */
49007225e5Sgerardnico    function _manifest(&$event, $param)
50007225e5Sgerardnico    {
51007225e5Sgerardnico
52007225e5Sgerardnico        $mediaId = ":android-chrome-192x192.png";
53007225e5Sgerardnico        $mediaFile = mediaFN($mediaId);
54007225e5Sgerardnico        if (file_exists($mediaFile)) {
55007225e5Sgerardnico            $url = ml($mediaId, '', true, '', true);
56007225e5Sgerardnico            $event->data['icons'][] =
57007225e5Sgerardnico                array(
58007225e5Sgerardnico                    "src" => $url,
59007225e5Sgerardnico                    "sizes" => "192x192",
60007225e5Sgerardnico                    "type" => "image/png"
61007225e5Sgerardnico                );
62007225e5Sgerardnico        }
63007225e5Sgerardnico
64*4cadd4f8SNickeau        $primaryColor = Site::getPrimaryColor();
65*4cadd4f8SNickeau        if ($primaryColor !== null) {
66*4cadd4f8SNickeau            $event->data["theme_color"] = $primaryColor->toRgbHex();
67*4cadd4f8SNickeau        }
68*4cadd4f8SNickeau
69*4cadd4f8SNickeau        /**
70*4cadd4f8SNickeau         * Id setting
71*4cadd4f8SNickeau         * https://developer.chrome.com/blog/pwa-manifest-id/
72*4cadd4f8SNickeau         * It seems that this is a unique id domain based
73*4cadd4f8SNickeau         * We set then the start_url (ie another pwa may be living on another path)
74*4cadd4f8SNickeau         */
75*4cadd4f8SNickeau        $event->data["id"] = $event->data["start_url"];
76*4cadd4f8SNickeau
77*4cadd4f8SNickeau
78*4cadd4f8SNickeau        /**
79*4cadd4f8SNickeau         * Svg must be size any for svg
80*4cadd4f8SNickeau         * https://html.spec.whatwg.org/multipage/semantics.html#attr-link-sizes
81*4cadd4f8SNickeau         * otherwise we get this kind of error in devtool.
82*4cadd4f8SNickeau         * ``
83*4cadd4f8SNickeau         * Actual Size (150x150)px of Icon .... svg does not  match the specified size (17x17, 512x512)
84*4cadd4f8SNickeau         * ``
85*4cadd4f8SNickeau         * Note:
86*4cadd4f8SNickeau         *   * 150x150 is not the true size
87*4cadd4f8SNickeau         *   * (17x17, 512x512) is set by dokuwiki
88*4cadd4f8SNickeau         */
89*4cadd4f8SNickeau        foreach ($event->data['icons'] as &$iconArray) {
90*4cadd4f8SNickeau            if ($iconArray["type"] === Mime::SVG) {
91*4cadd4f8SNickeau                $iconArray["sizes"] = "any";
92*4cadd4f8SNickeau            }
93007225e5Sgerardnico        }
94007225e5Sgerardnico
95007225e5Sgerardnico
96*4cadd4f8SNickeau    }
97007225e5Sgerardnico
98007225e5Sgerardnico
99007225e5Sgerardnico}
100