1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeau 4*04fd306cSNickeaunamespace ComboStrap\Meta\Field; 5*04fd306cSNickeau 6*04fd306cSNickeau 7*04fd306cSNickeauuse ComboStrap\ExceptionNotFound; 8*04fd306cSNickeauuse ComboStrap\Meta\Api\Metadata; 9*04fd306cSNickeauuse ComboStrap\Meta\Store\MetadataDokuWikiStore; 10*04fd306cSNickeauuse ComboStrap\Meta\Api\MetadataText; 11*04fd306cSNickeauuse ComboStrap\MetaManagerForm; 12*04fd306cSNickeauuse ComboStrap\PageTitle; 13*04fd306cSNickeauuse ComboStrap\ResourceName; 14*04fd306cSNickeau 15*04fd306cSNickeauclass PageH1 extends MetadataText 16*04fd306cSNickeau{ 17*04fd306cSNickeau 18*04fd306cSNickeau 19*04fd306cSNickeau public const H1_PARSED = "h1_parsed"; 20*04fd306cSNickeau public const PROPERTY_NAME = "h1"; 21*04fd306cSNickeau 22*04fd306cSNickeau public static function createForPage($page): PageH1 23*04fd306cSNickeau { 24*04fd306cSNickeau return (new PageH1()) 25*04fd306cSNickeau ->setResource($page); 26*04fd306cSNickeau } 27*04fd306cSNickeau 28*04fd306cSNickeau public static function getTab(): string 29*04fd306cSNickeau { 30*04fd306cSNickeau return MetaManagerForm::TAB_PAGE_VALUE; 31*04fd306cSNickeau } 32*04fd306cSNickeau 33*04fd306cSNickeau public static function getDescription(): string 34*04fd306cSNickeau { 35*04fd306cSNickeau 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."; 36*04fd306cSNickeau } 37*04fd306cSNickeau 38*04fd306cSNickeau public static function getLabel(): string 39*04fd306cSNickeau { 40*04fd306cSNickeau return "H1 (Heading 1)"; 41*04fd306cSNickeau } 42*04fd306cSNickeau 43*04fd306cSNickeau static public function getName(): string 44*04fd306cSNickeau { 45*04fd306cSNickeau return self::PROPERTY_NAME; 46*04fd306cSNickeau } 47*04fd306cSNickeau 48*04fd306cSNickeau public static function getPersistenceType(): string 49*04fd306cSNickeau { 50*04fd306cSNickeau return Metadata::PERSISTENT_METADATA; 51*04fd306cSNickeau } 52*04fd306cSNickeau 53*04fd306cSNickeau 54*04fd306cSNickeau public static function isMutable(): bool 55*04fd306cSNickeau { 56*04fd306cSNickeau return true; 57*04fd306cSNickeau } 58*04fd306cSNickeau 59*04fd306cSNickeau /** 60*04fd306cSNickeau * @return string 61*04fd306cSNickeau */ 62*04fd306cSNickeau public function getDefaultValue(): string 63*04fd306cSNickeau { 64*04fd306cSNickeau $store = $this->getReadStore(); 65*04fd306cSNickeau if ($store instanceof MetadataDokuWikiStore) { 66*04fd306cSNickeau $h1Parsed = $store->getFromName(self::H1_PARSED); 67*04fd306cSNickeau if (!empty($h1Parsed)) { 68*04fd306cSNickeau return $h1Parsed; 69*04fd306cSNickeau } 70*04fd306cSNickeau // dokuwiki 71*04fd306cSNickeau $h1 = $store->getCurrentFromName("title"); 72*04fd306cSNickeau if (!empty($h1)) { 73*04fd306cSNickeau return $h1; 74*04fd306cSNickeau } 75*04fd306cSNickeau } 76*04fd306cSNickeau try { 77*04fd306cSNickeau return PageTitle::createForMarkup($this->getResource()) 78*04fd306cSNickeau ->getValue(); 79*04fd306cSNickeau } catch (ExceptionNotFound $e) { 80*04fd306cSNickeau // ok 81*04fd306cSNickeau } 82*04fd306cSNickeau 83*04fd306cSNickeau return ResourceName::createForResource($this->getResource()) 84*04fd306cSNickeau ->getValueOrDefault(); 85*04fd306cSNickeau 86*04fd306cSNickeau } 87*04fd306cSNickeau 88*04fd306cSNickeau /** 89*04fd306cSNickeau * @return string 90*04fd306cSNickeau */ 91*04fd306cSNickeau public function getValueOrDefault(): string 92*04fd306cSNickeau { 93*04fd306cSNickeau try { 94*04fd306cSNickeau return $this->getValue(); 95*04fd306cSNickeau } catch (ExceptionNotFound $e) { 96*04fd306cSNickeau return $this->getDefaultValue(); 97*04fd306cSNickeau } 98*04fd306cSNickeau } 99*04fd306cSNickeau 100*04fd306cSNickeau 101*04fd306cSNickeau public static function getCanonical(): string 102*04fd306cSNickeau { 103*04fd306cSNickeau return static::getName(); 104*04fd306cSNickeau } 105*04fd306cSNickeau 106*04fd306cSNickeau public function setDefaultValue(string $defaultValue): PageH1 107*04fd306cSNickeau { 108*04fd306cSNickeau $store = $this->getWriteStore(); 109*04fd306cSNickeau if ($store instanceof MetadataDokuWikiStore) { 110*04fd306cSNickeau $store->setFromPersistentName(self::H1_PARSED, $defaultValue); 111*04fd306cSNickeau } 112*04fd306cSNickeau return $this; 113*04fd306cSNickeau 114*04fd306cSNickeau } 115*04fd306cSNickeau 116*04fd306cSNickeau 117*04fd306cSNickeau public static function isOnForm(): bool 118*04fd306cSNickeau { 119*04fd306cSNickeau return true; 120*04fd306cSNickeau } 121*04fd306cSNickeau} 122