2011-09-07 23:01:13 +02:00
|
|
|
<?php
|
|
|
|
|
2012-03-14 00:21:04 +01:00
|
|
|
final class AphrontJavelinView extends AphrontView {
|
2011-09-07 23:01:13 +02:00
|
|
|
private static $renderContext = array();
|
|
|
|
private static function peekRenderContext() {
|
|
|
|
return nonempty(end(self::$renderContext), null);
|
|
|
|
}
|
|
|
|
|
|
|
|
private static function popRenderContext() {
|
|
|
|
return array_pop(self::$renderContext);
|
|
|
|
}
|
|
|
|
|
|
|
|
private static function pushRenderContext($token) {
|
|
|
|
self::$renderContext[] = $token;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private $name;
|
|
|
|
private $parameters;
|
|
|
|
private $celerityResource;
|
|
|
|
|
|
|
|
public function render() {
|
|
|
|
$id = celerity_generate_unique_node_id();
|
2013-02-13 23:50:15 +01:00
|
|
|
$placeholder = phutil_tag('span', array('id' => $id));
|
2011-09-07 23:01:13 +02:00
|
|
|
|
|
|
|
require_celerity_resource($this->getCelerityResource());
|
|
|
|
|
|
|
|
$render_context = self::peekRenderContext();
|
|
|
|
self::pushRenderContext($id);
|
|
|
|
|
|
|
|
Javelin::initBehavior('view-placeholder', array(
|
|
|
|
'id' => $id,
|
|
|
|
'view' => $this->getName(),
|
|
|
|
'params' => $this->getParameters(),
|
2013-07-16 22:31:43 +02:00
|
|
|
'children' => phutil_implode_html('', $this->renderChildren()),
|
2011-09-07 23:01:13 +02:00
|
|
|
'trigger_id' => $render_context,
|
|
|
|
));
|
|
|
|
|
|
|
|
self::popRenderContext();
|
|
|
|
|
|
|
|
return $placeholder;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected function getName() {
|
|
|
|
return $this->name;
|
|
|
|
}
|
|
|
|
|
2015-05-19 23:06:07 +02:00
|
|
|
public function setName($template_name) {
|
2011-09-07 23:01:13 +02:00
|
|
|
$this->name = $template_name;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function getParameters() {
|
|
|
|
return $this->parameters;
|
|
|
|
}
|
|
|
|
|
2015-05-19 23:06:07 +02:00
|
|
|
public function setParameters($template_parameters) {
|
2011-09-07 23:01:13 +02:00
|
|
|
$this->parameters = $template_parameters;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
protected function getCelerityResource() {
|
|
|
|
return $this->celerityResource;
|
|
|
|
}
|
|
|
|
|
2015-05-19 23:06:07 +02:00
|
|
|
public function setCelerityResource($celerity_resource) {
|
2011-09-07 23:01:13 +02:00
|
|
|
$this->celerityResource = $celerity_resource;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
}
|