1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-26 16:52:41 +01:00

Make celerity be able to render full uris

Summary: ...and use 'em in the phame blog case.

Test Plan: viewed blog.phabricator.dev and it actually looked right!

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, Korvin

Maniphest Tasks: T1373

Differential Revision: https://secure.phabricator.com/D3666
This commit is contained in:
Bob Trahan 2012-10-09 09:31:20 -07:00
parent 9adfd11ed7
commit ce1a585166
2 changed files with 29 additions and 6 deletions

View file

@ -160,8 +160,8 @@ abstract class AphrontApplicationConfiguration {
$path = '/phame/posts/'.trim($path, '/').'/'; $path = '/phame/posts/'.trim($path, '/').'/';
} }
// TODO - now we need to tell Celerity to render static resources with $celerity = CelerityAPI::getStaticResourceResponse();
// full URIs like secure.phabricator.org/rsrc/blahblah $celerity->setUseFullURI(true);
} }
list($controller, $uri_data) = $this->buildControllerForPath($path); list($controller, $uri_data) = $this->buildControllerForPath($path);

View file

@ -33,6 +33,7 @@ final class CelerityStaticResourceResponse {
private $metadataBlock = 0; private $metadataBlock = 0;
private $behaviors = array(); private $behaviors = array();
private $hasRendered = array(); private $hasRendered = array();
private $useFullURI = false;
public function __construct() { public function __construct() {
if (isset($_REQUEST['__metablock__'])) { if (isset($_REQUEST['__metablock__'])) {
@ -85,6 +86,19 @@ final class CelerityStaticResourceResponse {
return $this; return $this;
} }
/**
* If set to true, Celerity will print full URIs (including the domain)
* for static resources.
*/
public function setUseFullURI($should) {
$this->useFullURI = $should;
return $this;
}
private function shouldUseFullURI() {
return $this->useFullURI;
}
public function renderSingleResource($symbol) { public function renderSingleResource($symbol) {
$map = CelerityResourceMap::getInstance(); $map = CelerityResourceMap::getInstance();
$resolved = $map->resolveResources(array($symbol)); $resolved = $map->resolveResources(array($symbol));
@ -119,18 +133,27 @@ final class CelerityStaticResourceResponse {
} }
private function renderResource(array $resource) { private function renderResource(array $resource) {
$uri = $this->getURI($resource['uri']);
switch ($resource['type']) { switch ($resource['type']) {
case 'css': case 'css':
$path = phutil_escape_html($resource['uri']); return '<link rel="stylesheet" type="text/css" href="'.$uri.'" />';
return '<link rel="stylesheet" type="text/css" href="'.$path.'" />';
case 'js': case 'js':
$path = phutil_escape_html($resource['uri']); return '<script type="text/javascript" src="'.$uri.'">'.
return '<script type="text/javascript" src="'.$path.'">'.
'</script>'; '</script>';
} }
throw new Exception("Unable to render resource."); throw new Exception("Unable to render resource.");
} }
private function getURI($path) {
$path = phutil_escape_html($path);
if ($this->shouldUseFullURI()) {
$uri = PhabricatorEnv::getCDNURI($path);
} else {
$uri = $path;
}
return $uri;
}
public function renderHTMLFooter() { public function renderHTMLFooter() {
$data = array(); $data = array();
if ($this->metadata) { if ($this->metadata) {