diff --git a/TracToGitlabPlugin.php b/TracToGitlabPlugin.php index 01466eca3f3a3d2908abb99b4399998496860a96..f8477b944dd4335ac71c2eb644d359f115e95fa8 100644 --- a/TracToGitlabPlugin.php +++ b/TracToGitlabPlugin.php @@ -9,6 +9,13 @@ final class TracToGitlabPlugin extends StudIPPlugin implements StandardPlugin, S { parent::__construct(); + StudipFormat::addStudipMarkup( + 'gitlab', + '\bgitlab:([$#!]\d+|[0-9a-f]+)\b', + NULL, + 'TracToGitlabPlugin::markupGitlabLinks' + ); + if (!is_object($GLOBALS['user']) || $GLOBALS['user']->id === 'nobody') { return; } @@ -130,4 +137,36 @@ final class TracToGitlabPlugin extends StudIPPlugin implements StandardPlugin, S Navigation::addItem('/gitlab-dashboard', $navigation); } -} + + public static function markupGitlabLinks($markup, $matches, $contents) + { + if ($matches[1][0] === '#') { + return sprintf( + '<a href="%s" target="_blank">%s</a>', + 'https://gitlab.studip.de/studip/studip/issues/' . substr($matches[1], 1), + $matches[0] + ); + } + + if ($matches[1][0] === '!') { + return sprintf( + '<a href="%s" target="_blank">%s</a>', + 'https://gitlab.studip.de/studip/studip/merge_requests/' . substr($matches[1], 1), + $matches[0] + ); + } + + if ($matches[1][0] === '$') { + return sprintf( + '<a href="%s" target="_blank">%s</a>', + 'https://gitlab.studip.de/studip/studip/snippets/' . substr($matches[1], 1), + $matches[0] + ); + } + + return sprintf( + '<a href="%s" target="_blank">%s</a>', + 'https://gitlab.studip.de/studip/studip/commit/' . $matches[1], + substr($matches[0], 0, 15) + ); + }} diff --git a/plugin.manifest b/plugin.manifest index 3fa6aee95693ca11854967d821cd50d1050d62a3..921fb27174c62d5557cff5b447a0d1395d55580d 100644 --- a/plugin.manifest +++ b/plugin.manifest @@ -1,5 +1,5 @@ pluginname=Trac to gitlab converter pluginclassname=TracToGitlabPlugin origin=UOL -version=1.1.1 +version=1.1.2 studipMinVersion=5.0