diff --git a/src/IDF/Template/IssueComment.php b/src/IDF/Template/IssueComment.php
index ef4b9c7..5b5e96d 100644
--- a/src/IDF/Template/IssueComment.php
+++ b/src/IDF/Template/IssueComment.php
@@ -50,6 +50,8 @@ class IDF_Template_IssueComment extends Pluf_Template_Tag
if ($request->rights['hasSourceAccess']) {
$text = preg_replace_callback('#(commit\s+)([0-9a-f]{1,40})#im',
array($this, 'callbackCommit'), $text);
+ $text = preg_replace_callback('#(src:)([^\s\(\)]+)#im',
+ array($this, 'callbackSource'), $text);
}
if ($echo) {
echo $text;
@@ -102,6 +104,24 @@ class IDF_Template_IssueComment extends Pluf_Template_Tag
return ''.$m[1].$m[2].'';
}
+ function callbackSource($m)
+ {
+ $branches = $this->scm->getBranches();
+ if (count($branches) == 0) return $m[0];
+ $file = $m[2];
+ if ('commit' != $this->scm->testHash($branches[0], $file)) {
+ return $m[0];
+ }
+ $request_file_info = $this->scm->getFileInfo($file, $branches[0]);
+ if (!$request_file_info) {
+ return $m[0];
+ }
+ if ($request_file_info->type != 'tree') {
+ return $m[1].''.$m[2].'';
+ }
+ return $m[0];
+ }
+
/**
* Generate the link to an issue.
*