function onInit() { parent::onInit(); $demos = FDRouterForm::getDemos(); $d = $this->getDocument(); $d->setVariable('prev', $prev = $this->getPrev()); if($prev) { $d->setVariable('prevTitle', $demos[$prev->getAction()]); } $d->setVariable('next', $next = $this->getNext()); if($next) { $d->setVariable('nextTitle', $demos[$next->getAction()]); } $d->setVariable('routerForm', new FDRouterForm($this->getRequest())); $d->setVariable('viewSource', new Location('FDViewSource', array('demo'=>get_class($this)))); $d->setVariable('viewTemplate', new Location('FDViewSource', array('demo'=>get_class($this), 'template'=>'1'))); }
function process() { parent::process(); $d = $this->getDocument(); // Here we manually create a region with a single text node that will keep // the highlighted source. Normally this should be done in a tag class! $r = new HTMLRegion(new HTMLRootNode(new HTMLDocument(new Responce(new Request())), '', 'x'), '', 'HTMLRegion', array('name'=>'source')); $r->addNode($n = new HTMLTextNode($r, null)); $demo = $this->getRequest()->getParameter('demo'); // Here we will try to invoke the static method getDescription of the requested demo // If we fail, the description will be the name of the demo class try { $rc = new ReflectionClass($demo); $rm = $rc->getMethod('getDescription'); $desc = $rm->invoke(null); } catch(ReflectionException $re) { $desc = $demo; } // See if the request was to show template if($this->getRequest()->getParameter('template')) { $p = $this->getPackage()->getResourcePath($demo) . '.html'; $n->setRaw(true); $type = 'template'; } else { $n->setRaw(true); $p = $this->getPackage()->getPath() . '/' . $demo . '.php5'; $type = 'source'; } // See if the file is accessible, if not, redirect to the Welcome to Demo page if(is_file($p)) { $n->setContent(highlight_file($p, true)); $d->setVariable('demo', $demo); $d->setRegion('source', $r); $d->setVariable('type', $type); $d->setVariable('desc', $desc); } else { $this->getResponce()->relocate(new Location('FDWelcome')); } }