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