Fixed issue 126, easy link to a file in the repository from the tickets.

The syntax src:AUTHORS or src:src/IDF/Scm.php is allowed.
This commit is contained in:
Loic d'Anterroches 2009-02-02 22:55:45 +01:00
parent 47f84bcb55
commit 9bcf99e3a7

View File

@ -50,6 +50,8 @@ class IDF_Template_IssueComment extends Pluf_Template_Tag
if ($request->rights['hasSourceAccess']) { if ($request->rights['hasSourceAccess']) {
$text = preg_replace_callback('#(commit\s+)([0-9a-f]{1,40})#im', $text = preg_replace_callback('#(commit\s+)([0-9a-f]{1,40})#im',
array($this, 'callbackCommit'), $text); array($this, 'callbackCommit'), $text);
$text = preg_replace_callback('#(src:)([^\s\(\)]+)#im',
array($this, 'callbackSource'), $text);
} }
if ($echo) { if ($echo) {
echo $text; echo $text;
@ -102,6 +104,24 @@ class IDF_Template_IssueComment extends Pluf_Template_Tag
return '<a href="'.Pluf_HTTP_URL_urlForView('IDF_Views_Source::commit', array($this->project->shortname, $co->commit)).'">'.$m[1].$m[2].'</a>'; return '<a href="'.Pluf_HTTP_URL_urlForView('IDF_Views_Source::commit', array($this->project->shortname, $co->commit)).'">'.$m[1].$m[2].'</a>';
} }
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].'<a href="'.Pluf_HTTP_URL_urlForView('IDF_Views_Source::tree', array($this->project->shortname, $branches[0], $file)).'">'.$m[2].'</a>';
}
return $m[0];
}
/** /**
* Generate the link to an issue. * Generate the link to an issue.
* *