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