xref: /template/strap/ComboStrap/PageTitle.php (revision c3437056399326d621a01da73b649707fbb0ae69)
1*c3437056SNickeau<?php
2*c3437056SNickeau
3*c3437056SNickeau
4*c3437056SNickeaunamespace ComboStrap;
5*c3437056SNickeau
6*c3437056SNickeau
7*c3437056SNickeauclass PageTitle extends MetadataText
8*c3437056SNickeau{
9*c3437056SNickeau
10*c3437056SNickeau    public const PROPERTY_NAME = 'title';
11*c3437056SNickeau    public const TITLE = 'title';
12*c3437056SNickeau
13*c3437056SNickeau    public static function createForPage($page): PageTitle
14*c3437056SNickeau    {
15*c3437056SNickeau        return (new PageTitle())
16*c3437056SNickeau            ->setResource($page);
17*c3437056SNickeau    }
18*c3437056SNickeau
19*c3437056SNickeau    public function getTab(): string
20*c3437056SNickeau    {
21*c3437056SNickeau        return MetaManagerForm::TAB_PAGE_VALUE;
22*c3437056SNickeau    }
23*c3437056SNickeau
24*c3437056SNickeau    public function getDescription(): string
25*c3437056SNickeau    {
26*c3437056SNickeau        return "The page title is a description advertised to external application such as search engine and browser.";
27*c3437056SNickeau    }
28*c3437056SNickeau
29*c3437056SNickeau    public function getLabel(): string
30*c3437056SNickeau    {
31*c3437056SNickeau        return "Title";
32*c3437056SNickeau    }
33*c3437056SNickeau
34*c3437056SNickeau    static public function getName(): string
35*c3437056SNickeau    {
36*c3437056SNickeau        return self::PROPERTY_NAME;
37*c3437056SNickeau    }
38*c3437056SNickeau
39*c3437056SNickeau    public function getPersistenceType(): string
40*c3437056SNickeau    {
41*c3437056SNickeau        return MetadataDokuWikiStore::PERSISTENT_METADATA;
42*c3437056SNickeau    }
43*c3437056SNickeau
44*c3437056SNickeau    public function getMutable(): bool
45*c3437056SNickeau    {
46*c3437056SNickeau        return true;
47*c3437056SNickeau    }
48*c3437056SNickeau
49*c3437056SNickeau    /**
50*c3437056SNickeau     * `title` is created by DokuWiki
51*c3437056SNickeau     * in current but not persistent
52*c3437056SNickeau     * and hold the heading 1, see {@link p_get_first_heading}
53*c3437056SNickeau     */
54*c3437056SNickeau    public function getDefaultValue(): ?string
55*c3437056SNickeau    {
56*c3437056SNickeau
57*c3437056SNickeau        $resource = $this->getResource();
58*c3437056SNickeau        if ($resource instanceof Page) {
59*c3437056SNickeau            if ($resource->isRootHomePage() && !empty(Site::getTagLine())) {
60*c3437056SNickeau                return Site::getTagLine();
61*c3437056SNickeau            }
62*c3437056SNickeau            if (!empty($resource->getH1OrDefault())) {
63*c3437056SNickeau                return $resource->getH1OrDefault();
64*c3437056SNickeau            }
65*c3437056SNickeau            return $resource->getNameOrDefault();
66*c3437056SNickeau        }
67*c3437056SNickeau        return null;
68*c3437056SNickeau
69*c3437056SNickeau    }
70*c3437056SNickeau
71*c3437056SNickeau    public function getCanonical(): string
72*c3437056SNickeau    {
73*c3437056SNickeau        return self::TITLE;
74*c3437056SNickeau    }
75*c3437056SNickeau
76*c3437056SNickeau
77*c3437056SNickeau}
78