xref: /template/strap/ComboStrap/Meta/Field/PageH1.php (revision 657b6da49858ff4f3676e3f57c04fe7930f9e190)
104fd306cSNickeau<?php
204fd306cSNickeau
304fd306cSNickeau
404fd306cSNickeaunamespace ComboStrap\Meta\Field;
504fd306cSNickeau
604fd306cSNickeau
704fd306cSNickeauuse ComboStrap\ExceptionNotFound;
804fd306cSNickeauuse ComboStrap\Meta\Api\Metadata;
904fd306cSNickeauuse ComboStrap\Meta\Store\MetadataDokuWikiStore;
1004fd306cSNickeauuse ComboStrap\Meta\Api\MetadataText;
1104fd306cSNickeauuse ComboStrap\MetaManagerForm;
1204fd306cSNickeauuse ComboStrap\PageTitle;
1304fd306cSNickeauuse ComboStrap\ResourceName;
1404fd306cSNickeau
1504fd306cSNickeauclass PageH1 extends MetadataText
1604fd306cSNickeau{
1704fd306cSNickeau
1804fd306cSNickeau
1904fd306cSNickeau    public const H1_PARSED = "h1_parsed";
2004fd306cSNickeau    public const PROPERTY_NAME = "h1";
2104fd306cSNickeau
2204fd306cSNickeau    public static function createForPage($page): PageH1
2304fd306cSNickeau    {
2404fd306cSNickeau        return (new PageH1())
2504fd306cSNickeau            ->setResource($page);
2604fd306cSNickeau    }
2704fd306cSNickeau
2804fd306cSNickeau    public static function getTab(): string
2904fd306cSNickeau    {
3004fd306cSNickeau        return MetaManagerForm::TAB_PAGE_VALUE;
3104fd306cSNickeau    }
3204fd306cSNickeau
3304fd306cSNickeau    public static function getDescription(): string
3404fd306cSNickeau    {
3504fd306cSNickeau        return "The heading 1 (or H1) is the first heading of your page. It may be used in template to make a difference with the title.";
3604fd306cSNickeau    }
3704fd306cSNickeau
3804fd306cSNickeau    public static function getLabel(): string
3904fd306cSNickeau    {
4004fd306cSNickeau        return "H1 (Heading 1)";
4104fd306cSNickeau    }
4204fd306cSNickeau
4304fd306cSNickeau    static public function getName(): string
4404fd306cSNickeau    {
4504fd306cSNickeau        return self::PROPERTY_NAME;
4604fd306cSNickeau    }
4704fd306cSNickeau
4804fd306cSNickeau    public static function getPersistenceType(): string
4904fd306cSNickeau    {
5004fd306cSNickeau        return Metadata::PERSISTENT_METADATA;
5104fd306cSNickeau    }
5204fd306cSNickeau
5304fd306cSNickeau
5404fd306cSNickeau    public static function isMutable(): bool
5504fd306cSNickeau    {
5604fd306cSNickeau        return true;
5704fd306cSNickeau    }
5804fd306cSNickeau
5904fd306cSNickeau    /**
6004fd306cSNickeau     * @return string
6104fd306cSNickeau     */
6204fd306cSNickeau    public function getDefaultValue(): string
6304fd306cSNickeau    {
6404fd306cSNickeau        $store = $this->getReadStore();
6504fd306cSNickeau        if ($store instanceof MetadataDokuWikiStore) {
6604fd306cSNickeau            $h1Parsed = $store->getFromName(self::H1_PARSED);
6704fd306cSNickeau            if (!empty($h1Parsed)) {
6804fd306cSNickeau                return $h1Parsed;
6904fd306cSNickeau            }
70*657b6da4Sgerardnico            // dokuwiki store title in the current
7104fd306cSNickeau            $h1 = $store->getCurrentFromName("title");
7204fd306cSNickeau            if (!empty($h1)) {
7304fd306cSNickeau                return $h1;
7404fd306cSNickeau            }
7504fd306cSNickeau        }
7604fd306cSNickeau        try {
7704fd306cSNickeau            return PageTitle::createForMarkup($this->getResource())
7804fd306cSNickeau                ->getValue();
7904fd306cSNickeau        } catch (ExceptionNotFound $e) {
8004fd306cSNickeau            // ok
8104fd306cSNickeau        }
8204fd306cSNickeau
8304fd306cSNickeau        return ResourceName::createForResource($this->getResource())
8404fd306cSNickeau            ->getValueOrDefault();
8504fd306cSNickeau
8604fd306cSNickeau    }
8704fd306cSNickeau
8804fd306cSNickeau    /**
8904fd306cSNickeau     * @return string
9004fd306cSNickeau     */
9104fd306cSNickeau    public function getValueOrDefault(): string
9204fd306cSNickeau    {
9304fd306cSNickeau        try {
9404fd306cSNickeau            return $this->getValue();
9504fd306cSNickeau        } catch (ExceptionNotFound $e) {
9604fd306cSNickeau            return $this->getDefaultValue();
9704fd306cSNickeau        }
9804fd306cSNickeau    }
9904fd306cSNickeau
10004fd306cSNickeau
10104fd306cSNickeau    public static function getCanonical(): string
10204fd306cSNickeau    {
10304fd306cSNickeau        return static::getName();
10404fd306cSNickeau    }
10504fd306cSNickeau
10604fd306cSNickeau    public function setDefaultValue(string $defaultValue): PageH1
10704fd306cSNickeau    {
10804fd306cSNickeau        $store = $this->getWriteStore();
10904fd306cSNickeau        if ($store instanceof MetadataDokuWikiStore) {
11004fd306cSNickeau            $store->setFromPersistentName(self::H1_PARSED, $defaultValue);
11104fd306cSNickeau        }
11204fd306cSNickeau        return $this;
11304fd306cSNickeau
11404fd306cSNickeau    }
11504fd306cSNickeau
11604fd306cSNickeau
11704fd306cSNickeau    public static function isOnForm(): bool
11804fd306cSNickeau    {
11904fd306cSNickeau        return true;
12004fd306cSNickeau    }
12104fd306cSNickeau}
122