1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-19 03:50:54 +01:00

Allow Phriction [[links]] to link to non-Phriction URIs

Summary: If the link text is a URI, just treat it as a nameable (and possibly
relative) URI link. See tasks.

Test Plan: Copy/pasted the doc example into Phriction, links worked.

Reviewers: skrul, hunterbridges, jungejason, tuomaspelkonen, aran

Reviewed By: jungejason

CC: aran, jungejason

Differential Revision: 882
This commit is contained in:
epriestley 2011-08-31 13:42:52 -07:00
parent c544f78015
commit 0e40b3c5b2
2 changed files with 21 additions and 5 deletions

View file

@ -187,3 +187,9 @@ With a pipe (##|##), you can retitle the link. Use this to mislead your
opponents:
Check out these [[legal/boring_documents/ | exciting legal documents]]!
You can also use this as an explicit syntax for other web links, either within
Phabricator or on the internet at large:
[[/herald/transcript/ | Herald Transcripts]]
[[http://www.boring-legal-documents.com/ | exciting legal documents]]

View file

@ -33,18 +33,28 @@ class PhabricatorRemarkupRulePhriction
$slug = trim($matches[1]);
$name = trim(idx($matches, 2, $slug));
$name = explode('/', $name);
$name = end($name);
$slug = PhrictionDocument::normalizeSlug($slug);
$uri = PhrictionDocument::getSlugURI($slug);
// If whatever is being linked to begins with "/" or has "://", treat it
// as a URI instead of a wiki page.
$is_uri = preg_match('@(^/)|(://)@', $slug);
if ($is_uri) {
$uri = $slug;
// Leave the name unchanged, i.e. link the whole URI if there's no
// explicit name.
} else {
$name = explode('/', trim($name, '/'));
$name = end($name);
$slug = PhrictionDocument::normalizeSlug($slug);
$uri = PhrictionDocument::getSlugURI($slug);
}
return $this->getEngine()->storeText(
phutil_render_tag(
'a',
array(
'href' => $uri,
'class' => 'phriction-link',
'class' => $is_uri ? null : 'phriction-link',
),
phutil_escape_html($name)));
}