1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeau 4*04fd306cSNickeaunamespace ComboStrap; 5*04fd306cSNickeau 6*04fd306cSNickeau 7*04fd306cSNickeauuse ComboStrap\Meta\Api\Metadata; 8*04fd306cSNickeauuse ComboStrap\Meta\Api\MetadataInteger; 9*04fd306cSNickeau 10*04fd306cSNickeau/** 11*04fd306cSNickeau * @package ComboStrap 12*04fd306cSNickeau * Represents the level in the tree 13*04fd306cSNickeau */ 14*04fd306cSNickeauclass PageLevel extends MetadataInteger 15*04fd306cSNickeau{ 16*04fd306cSNickeau 17*04fd306cSNickeau 18*04fd306cSNickeau public const PROPERTY_NAME = "level"; 19*04fd306cSNickeau 20*04fd306cSNickeau 21*04fd306cSNickeau public static function createForPage(ResourceCombo $page): PageLevel 22*04fd306cSNickeau { 23*04fd306cSNickeau return (new PageLevel()) 24*04fd306cSNickeau ->setResource($page); 25*04fd306cSNickeau } 26*04fd306cSNickeau 27*04fd306cSNickeau 28*04fd306cSNickeau /** 29*04fd306cSNickeau * @return int 30*04fd306cSNickeau */ 31*04fd306cSNickeau public function getValue(): int 32*04fd306cSNickeau { 33*04fd306cSNickeau return substr_count($this->getResource()->getPathObject()->toAbsoluteId(), WikiPath::NAMESPACE_SEPARATOR_DOUBLE_POINT) - 1; 34*04fd306cSNickeau } 35*04fd306cSNickeau 36*04fd306cSNickeau 37*04fd306cSNickeau static public function getName(): string 38*04fd306cSNickeau { 39*04fd306cSNickeau return self::PROPERTY_NAME; 40*04fd306cSNickeau } 41*04fd306cSNickeau 42*04fd306cSNickeau 43*04fd306cSNickeau static public function getPersistenceType(): string 44*04fd306cSNickeau { 45*04fd306cSNickeau return Metadata::DERIVED_METADATA; 46*04fd306cSNickeau } 47*04fd306cSNickeau 48*04fd306cSNickeau 49*04fd306cSNickeau static public function getTab(): string 50*04fd306cSNickeau { 51*04fd306cSNickeau return MetaManagerForm::TAB_PAGE_VALUE; 52*04fd306cSNickeau } 53*04fd306cSNickeau 54*04fd306cSNickeau static public function getDescription(): string 55*04fd306cSNickeau { 56*04fd306cSNickeau return "The level of the page on the file system (The home page is at level 0)"; 57*04fd306cSNickeau } 58*04fd306cSNickeau 59*04fd306cSNickeau static public function getLabel(): string 60*04fd306cSNickeau { 61*04fd306cSNickeau return "Page Level"; 62*04fd306cSNickeau } 63*04fd306cSNickeau 64*04fd306cSNickeau static public function isMutable(): bool 65*04fd306cSNickeau { 66*04fd306cSNickeau return false; 67*04fd306cSNickeau } 68*04fd306cSNickeau 69*04fd306cSNickeau static public function getCanonical(): string 70*04fd306cSNickeau { 71*04fd306cSNickeau return self::PROPERTY_NAME; 72*04fd306cSNickeau } 73*04fd306cSNickeau 74*04fd306cSNickeau 75*04fd306cSNickeau static public function isOnForm(): bool 76*04fd306cSNickeau { 77*04fd306cSNickeau return true; 78*04fd306cSNickeau } 79*04fd306cSNickeau 80*04fd306cSNickeau} 81