Page MenuHomePhabricator

D9555.id22907.diff
No OneTemporary

D9555.id22907.diff

diff --git a/src/applications/pholio/remarkup/PholioRemarkupRule.php b/src/applications/pholio/remarkup/PholioRemarkupRule.php
--- a/src/applications/pholio/remarkup/PholioRemarkupRule.php
+++ b/src/applications/pholio/remarkup/PholioRemarkupRule.php
@@ -1,8 +1,5 @@
<?php
-/**
- * @group pholio
- */
final class PholioRemarkupRule
extends PhabricatorRemarkupRuleObject {
@@ -10,15 +7,49 @@
return 'M';
}
+ protected function getObjectIDPattern() {
+ // Match "M123", "M123/456", and "M123/456/". Users can hit the latter
+ // forms when clicking comment anchors on a mock page.
+ return '[1-9]\d*(?:/[1-9]\d*/?)?';
+ }
+
+ protected function getObjectHref($object, $handle, $id) {
+ $href = $handle->getURI();
+
+ // If the ID has a `M123/456` component, link to that specific image.
+ $id = explode('/', $id);
+ if (isset($id[1])) {
+ $href = $href.'/'.$id[1].'/';
+ }
+
+ return $href;
+ }
+
protected function loadObjects(array $ids) {
+ // Strip off any image ID components of the URI.
+ $map = array();
+ foreach ($ids as $id) {
+ $map[head(explode('/', $id))][] = $id;
+ }
+
$viewer = $this->getEngine()->getConfig('viewer');
- return id(new PholioMockQuery())
+ $mocks = id(new PholioMockQuery())
->setViewer($viewer)
->needCoverFiles(true)
->needImages(true)
->needTokenCounts(true)
- ->withIDs($ids)
+ ->withIDs(array_keys($map))
->execute();
+
+ $results = array();
+ foreach ($mocks as $mock) {
+ $ids = idx($map, $mock->getID(), array());
+ foreach ($ids as $id) {
+ $results[$id] = $mock;
+ }
+ }
+
+ return $results;
}
protected function renderObjectEmbed($object, $handle, $options) {
diff --git a/src/infrastructure/markup/rule/PhabricatorRemarkupRuleObject.php b/src/infrastructure/markup/rule/PhabricatorRemarkupRuleObject.php
--- a/src/infrastructure/markup/rule/PhabricatorRemarkupRuleObject.php
+++ b/src/infrastructure/markup/rule/PhabricatorRemarkupRuleObject.php
@@ -40,8 +40,12 @@
return $result;
}
+ protected function getObjectHref($object, $handle, $id) {
+ return $handle->getURI();
+ }
+
protected function renderObjectRef($object, $handle, $anchor, $id) {
- $href = $handle->getURI();
+ $href = $this->getObjectHref($object, $handle, $id);
$text = $this->getObjectNamePrefix().$id;
if ($anchor) {

File Metadata

Mime Type
text/plain
Expires
Sun, Oct 27, 1:25 PM (2 w, 2 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6716383
Default Alt Text
D9555.id22907.diff (2 KB)

Event Timeline