Beispiel #1
0
 /**
  * Adds the url field to the form
  */
 private function AddUrlField()
 {
     $name = 'Url';
     $this->AddField(Input::Text($name, $this->page->GetUrl()));
     $this->SetRequired($name);
     $this->AddValidator($name, DatabaseCount::UniqueFieldAnd($this->page, $name, $this->SiteCondition()));
 }
 protected function Init()
 {
     $this->prefix = Request::GetData('prefix');
     $this->page = Page::Schema()->ByID(Request::GetData('page'));
     if (!$this->page) {
         throw new \Exception('Required parameter page invalid or missing');
     }
     $this->serializer = new ArrayLinesSerializer();
     $this->oblParams = FrontendRouter::GatherParams($this->page->GetUrl());
     $this->params = $this->serializer->LinesToArray(Request::GetData('params'));
     $this->AddObligatoryFields();
     $this->AddOptionalParamsField();
     $this->AddFragmentField();
     $this->AddSubmit();
     return parent::Init();
 }
 /**
  * Returns the url of a page with parameters and fragment
  * @param Page $page The page
  * @param array $params All parameters
  * @return string Return the page url
  */
 static function PageUrl(Page $page, array $params = array(), $fragment = '')
 {
     $siteUrl = $page->GetSite()->GetUrl();
     $pageUrl = $page->GetUrl();
     if ($pageUrl == 'index.html') {
         $url = $siteUrl;
     } else {
         $url = Path::Combine($siteUrl, $pageUrl);
     }
     $oblParams = self::GatherParams($url);
     $urlObl = self::AttachObligatoryParams($url, $oblParams, $params);
     $urlAllParams = self::AttachMoreParams($urlObl, $oblParams, $params);
     return $fragment ? $urlAllParams . '#' . $fragment : $urlAllParams;
 }
Beispiel #4
0
 /**
  * Returns the page rule
  * @param Page $page
  * @param array $params
  * @return RewriteRule
  */
 private function PageRule(Page $page, array $params)
 {
     $lhs = '/' . $page->GetUrl();
     foreach ($params as $param) {
         $lhs = str_replace('{' . $param . '}', self::PARAM_PATTERN, $lhs);
     }
     $rhs = new Variable(ServerVariable::RequestUri());
     $idx = 1;
     foreach ($params as $param) {
         $rhs .= $idx > 1 ? '&' : '?';
         $rhs .= $param . '=$' . $idx;
         ++$idx;
     }
     $rhs .= '&' . self::PAGE_URL_PARAM . '=' . $page->GetUrl();
     $rule = new RewriteRule($lhs, $rhs);
     $rule->AddFlag(new CommandFlag(FlagType::Qsa()));
     return $rule;
 }