/** * Gets the url for a page url entity * @param PageUrl $pageUrl The page url as stored in the database * @param array $additionalParameters Additional parameters; will override stored parameters with same keys * @return string Returns the page url */ static function Url(PageUrl $pageUrl, array $additionalParameters = array()) { $list = new PageParamListProvider($pageUrl); $params = $list->ToArray(); foreach ($additionalParameters as $key => $value) { $params[$key] = $value; } return self::PageUrl($pageUrl->GetPage(), $params, $pageUrl->GetFragment()); }
/** * Creates a new page url selector * @param string $prefix The prefix * @param string $label The selector label * @param PageUrl $pageUrl The pre-selected page url */ function __construct($prefix, $label = '', PageUrl $pageUrl = null) { $this->disabledPageIDs = array(); $this->prefix = $prefix; $this->label = $label; $this->site = null; $this->pageField = Input::Hidden($prefix . 'Page'); $this->paramsField = Input::Hidden($prefix . 'Params'); $this->fragmentField = Input::Hidden($prefix . 'Fragment'); $this->serializer = new ArrayLinesSerializer(); if ($pageUrl && $pageUrl->Exists()) { $this->url = FrontendRouter::Url($pageUrl); $this->pageField->SetValue($pageUrl->GetPage()->GetID()); $list = new PageParamListProvider($pageUrl); $this->paramsField->SetValue($this->serializer->ArrayToLines($list->ToArray())); $this->fragmentField->SetValue($pageUrl->GetFragment()); } }