public function respond(Response $response)
 {
     if ($this->page instanceof Identifier) {
         $fullClassName = $this->page->getFullyQualifiedName();
         $page = new $fullClassName();
         $page->internalInitialize();
     } else {
         $page = $this->page;
     }
     if ($page == null) {
         $GLOBALS['requestCycle']->addTarget(new PageNotFoundRequestTarget());
         return;
     }
     $listener = $this->getListener($page);
     if ($listener == null) {
         $page->beforePageRender();
         $listener = $this->getListener($page);
     }
     if ($listener == null || !$listener instanceof Listener) {
         throw new \RuntimeException(sprintf("Listener component %s was not found", $this->componentPath));
     }
     if ($GLOBALS['requestCycle']->getRequest()->isAjax() == false) {
         $url = $GLOBALS['requestCycle']->generateUrl(new PageInstanceRequestTarget($page));
         PageMap::get()->addOrUpdate($page);
         $GLOBALS['requestCycle']->addTarget(new RedirectRequestTarget($url));
     }
     $listener->onEvent();
 }
Example #2
0
 public function afterPageRender()
 {
     parent::afterPageRender();
     if (!$this->isPageStateless()) {
         PageMap::get()->addOrUpdate($this);
     }
     FeedbackModel::get()->cleanup();
 }
 public function generateUrl(RequestTarget $target)
 {
     if ($target instanceof PageInstanceRequestTarget) {
         $page = $target->getPage();
         PageMap::get()->addOrUpdate($page);
         return '?pageid=' . $page->getId();
     } else {
         throw new \InvalidArgumentException('Expecting PageInstanceRequestTarget');
     }
 }
 public function resolve(Request $request)
 {
     $behaviour = null;
     if (array_key_exists('behaviour', $request->getParameters())) {
         $behaviour = $request->getParameter('behaviour');
     }
     if (array_key_exists('pageid', $request->getParameters())) {
         $page = PageMap::get()->getPageById($request->getParameter('pageid'));
         if ($page != null) {
             return new ListenerRequestTarget($page, $request->getParameter('listener'), $behaviour);
         }
         return new PageRequestTarget(\SessionExpiredPage::getIdentifier());
     } else {
         return new ListenerRequestTarget($this->getPageClassForPath($request), $request->getParameter('listener'), $behaviour);
     }
 }
 public function initialise()
 {
     parent::initialise();
     PageMap::get()->initialise();
 }
Example #6
0
 /**
  * Set the current page
  * @param mixed $page An instance of web page or an Identifier for a web page
  * @todo add page params
  */
 public function setPage($page)
 {
     Args::notNull($page, 'page');
     if ($page instanceof Identifier) {
         if ($page->of(WebPage::getIdentifier())) {
             $target = new PageRequestTarget($page);
         } else {
             throw new \InvalidArgumentException("Expected identifier to be for a web page");
         }
     } else {
         if ($page instanceof WebPage) {
             PageMap::get()->addOrUpdate($page);
             $target = new PageInstanceRequestTarget($page);
         } else {
             throw new \InvalidArgumentException(sprintf("setPage expects an identifier for a web page or an instance of a web page and not a %s", get_class($page)));
         }
     }
     if ($this->getRequestCycle()->containsTarget(ListenerRequestTarget::getIdentifier())) {
         $url = $this->getRequestCycle()->generateUrl($target);
         $this->getRequestCycle()->addTarget(new RedirectRequestTarget($url));
     } else {
         $this->getRequestCycle()->addTarget($target);
     }
 }