xref: /template/strap/ComboStrap/ResourceName.php (revision c3437056399326d621a01da73b649707fbb0ae69)
1*c3437056SNickeau<?php
2*c3437056SNickeau
3*c3437056SNickeau
4*c3437056SNickeaunamespace ComboStrap;
5*c3437056SNickeau
6*c3437056SNickeau
7*c3437056SNickeauclass ResourceName extends MetadataText
8*c3437056SNickeau{
9*c3437056SNickeau
10*c3437056SNickeau
11*c3437056SNickeau    public const PROPERTY_NAME = "name";
12*c3437056SNickeau
13*c3437056SNickeau    public static function createForResource($page): ResourceName
14*c3437056SNickeau    {
15*c3437056SNickeau        return (new ResourceName())
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        $resourceCombo = $this->getResource();
27*c3437056SNickeau        $resourceType = $resourceCombo->getType();
28*c3437056SNickeau        $desc = "The $resourceType name is the shortest $resourceType description. It should be at maximum a couple of words long.";
29*c3437056SNickeau        if ($resourceType === Page::TYPE) {
30*c3437056SNickeau            $desc = $desc . " It's used mainly in navigational components.";
31*c3437056SNickeau        }
32*c3437056SNickeau        return $desc;
33*c3437056SNickeau    }
34*c3437056SNickeau
35*c3437056SNickeau    public function getLabel(): string
36*c3437056SNickeau    {
37*c3437056SNickeau        return "Name";
38*c3437056SNickeau    }
39*c3437056SNickeau
40*c3437056SNickeau    static public function getName(): string
41*c3437056SNickeau    {
42*c3437056SNickeau        return self::PROPERTY_NAME;
43*c3437056SNickeau    }
44*c3437056SNickeau
45*c3437056SNickeau    public function getPersistenceType(): string
46*c3437056SNickeau    {
47*c3437056SNickeau        return MetadataDokuWikiStore::PERSISTENT_METADATA;
48*c3437056SNickeau    }
49*c3437056SNickeau
50*c3437056SNickeau    public function getMutable(): bool
51*c3437056SNickeau    {
52*c3437056SNickeau        return true;
53*c3437056SNickeau    }
54*c3437056SNickeau
55*c3437056SNickeau    public function getDefaultValue(): string
56*c3437056SNickeau    {
57*c3437056SNickeau
58*c3437056SNickeau        $resourceCombo = $this->getResource();
59*c3437056SNickeau
60*c3437056SNickeau        $pathName = $resourceCombo->getPath()->getLastNameWithoutExtension();
61*c3437056SNickeau        switch ($resourceCombo->getType()) {
62*c3437056SNickeau
63*c3437056SNickeau            case Page::TYPE:
64*c3437056SNickeau                /**
65*c3437056SNickeau                 * If this is a home page, the default
66*c3437056SNickeau                 * is the parent path name
67*c3437056SNickeau                 */
68*c3437056SNickeau                if ($pathName === Site::getHomePageName()) {
69*c3437056SNickeau                    $names = $resourceCombo->getPath()->getNames();
70*c3437056SNickeau                    $namesCount = sizeof($names);
71*c3437056SNickeau                    if ($namesCount >= 2) {
72*c3437056SNickeau                        $pathName = $names[$namesCount - 2];
73*c3437056SNickeau                    }
74*c3437056SNickeau                }
75*c3437056SNickeau                break;
76*c3437056SNickeau
77*c3437056SNickeau        }
78*c3437056SNickeau
79*c3437056SNickeau        $words = preg_split("/\s/", preg_replace("/-|_/", " ", $pathName));
80*c3437056SNickeau        $wordsUc = [];
81*c3437056SNickeau        foreach ($words as $word) {
82*c3437056SNickeau            $wordsUc[] = ucfirst($word);
83*c3437056SNickeau        }
84*c3437056SNickeau        return implode(" ", $wordsUc);
85*c3437056SNickeau    }
86*c3437056SNickeau
87*c3437056SNickeau    public function getCanonical(): string
88*c3437056SNickeau    {
89*c3437056SNickeau        return $this->getName();
90*c3437056SNickeau    }
91*c3437056SNickeau
92*c3437056SNickeau
93*c3437056SNickeau}
94