Page MenuHomePhabricator

D18780.diff
No OneTemporary

D18780.diff

diff --git a/src/applications/config/custom/PhabricatorCustomLogoConfigType.php b/src/applications/config/custom/PhabricatorCustomLogoConfigType.php
--- a/src/applications/config/custom/PhabricatorCustomLogoConfigType.php
+++ b/src/applications/config/custom/PhabricatorCustomLogoConfigType.php
@@ -13,6 +13,39 @@
return idx($logo, 'wordmarkText');
}
+ public static function getLogoURI(PhabricatorUser $viewer) {
+ $logo_uri = null;
+
+ $custom_header = self::getLogoImagePHID();
+ if ($custom_header) {
+ $cache = PhabricatorCaches::getImmutableCache();
+ $cache_key_logo = 'ui.custom-header.logo-phid.v3.'.$custom_header;
+ $logo_uri = $cache->getKey($cache_key_logo);
+
+ if (!$logo_uri) {
+ // NOTE: If the file policy has been changed to be restrictive, we'll
+ // miss here and just show the default logo. The cache will fill later
+ // when someone who can see the file loads the page. This might be a
+ // little spooky, see T11982.
+ $files = id(new PhabricatorFileQuery())
+ ->setViewer($viewer)
+ ->withPHIDs(array($custom_header))
+ ->execute();
+ $file = head($files);
+ if ($file) {
+ $logo_uri = $file->getViewURI();
+ $cache->setKey($cache_key_logo, $logo_uri);
+ }
+ }
+ }
+
+ if (!$logo_uri) {
+ $logo_uri = celerity_get_resource_uri('/rsrc/image/logo/light-eye.png');
+ }
+
+ return $logo_uri;
+ }
+
public function validateOption(PhabricatorConfigOption $option, $value) {
if (!is_array($value)) {
throw new Exception(
diff --git a/src/view/page/PhabricatorStandardPageView.php b/src/view/page/PhabricatorStandardPageView.php
--- a/src/view/page/PhabricatorStandardPageView.php
+++ b/src/view/page/PhabricatorStandardPageView.php
@@ -426,10 +426,11 @@
}
return hsprintf(
- '%s%s%s',
+ '%s%s%s%s',
parent::getHead(),
$font_css,
- $response->renderSingleResource('javelin-magical-init', 'phabricator'));
+ $response->renderSingleResource('javelin-magical-init', 'phabricator'),
+ $this->newOpenGraphTags());
}
public function setGlyph($glyph) {
@@ -911,4 +912,45 @@
return $response;
}
+ private function newOpenGraphTags() {
+ // If we don't allow public access, there's no point in emitting OpenGraph
+ // tags because external systems can't fetch pages.
+ if (!PhabricatorEnv::getEnvConfig('policy.allow-public')) {
+ return array();
+ }
+
+ $viewer = $this->getViewer();
+
+ $properties = array(
+ array(
+ 'og:title',
+ $this->getTitle(),
+ ),
+ array(
+ 'og:type',
+ 'website',
+ ),
+ array(
+ 'og:url',
+ PhabricatorEnv::getProductionURI($this->getRequest()->getRequestURI()),
+ ),
+ array(
+ 'og:image',
+ PhabricatorCustomLogoConfigType::getLogoURI($viewer),
+ ),
+ );
+
+ $tags = array();
+ foreach ($properties as $property) {
+ $tags[] = phutil_tag(
+ 'meta',
+ array(
+ 'property' => $property[0],
+ 'content' => $property[1],
+ ));
+ }
+
+ return $tags;
+ }
+
}
diff --git a/src/view/page/menu/PhabricatorMainMenuView.php b/src/view/page/menu/PhabricatorMainMenuView.php
--- a/src/view/page/menu/PhabricatorMainMenuView.php
+++ b/src/view/page/menu/PhabricatorMainMenuView.php
@@ -262,35 +262,16 @@
}
private function renderPhabricatorLogo() {
- $custom_header = PhabricatorCustomLogoConfigType::getLogoImagePHID();
-
$logo_style = array();
+
+ $custom_header = PhabricatorCustomLogoConfigType::getLogoImagePHID();
if ($custom_header) {
- $cache = PhabricatorCaches::getImmutableCache();
- $cache_key_logo = 'ui.custom-header.logo-phid.v3.'.$custom_header;
-
- $logo_uri = $cache->getKey($cache_key_logo);
- if (!$logo_uri) {
- // NOTE: If the file policy has been changed to be restrictive, we'll
- // miss here and just show the default logo. The cache will fill later
- // when someone who can see the file loads the page. This might be a
- // little spooky, see T11982.
- $files = id(new PhabricatorFileQuery())
- ->setViewer($this->getViewer())
- ->withPHIDs(array($custom_header))
- ->execute();
- $file = head($files);
- if ($file) {
- $logo_uri = $file->getViewURI();
- $cache->setKey($cache_key_logo, $logo_uri);
- }
- }
+ $viewer = $this->getViewer();
+ $logo_uri = PhabricatorCustomLogoConfigType::getLogoURI($viewer);
- if ($logo_uri) {
- $logo_style[] = 'background-size: 40px 40px;';
- $logo_style[] = 'background-position: 0 0;';
- $logo_style[] = 'background-image: url('.$logo_uri.')';
- }
+ $logo_style[] = 'background-size: 40px 40px;';
+ $logo_style[] = 'background-position: 0 0;';
+ $logo_style[] = 'background-image: url('.$logo_uri.')';
}
$logo_node = phutil_tag(
@@ -300,7 +281,6 @@
'style' => implode(' ', $logo_style),
));
-
$wordmark_text = PhabricatorCustomLogoConfigType::getLogoWordmark();
if (!strlen($wordmark_text)) {
$wordmark_text = pht('Phabricator');

File Metadata

Mime Type
text/plain
Expires
Thu, May 9, 8:12 PM (1 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6276483
Default Alt Text
D18780.diff (5 KB)

Event Timeline