Skip to content
Snippets Groups Projects
Commit 0781fd2d authored by Jan-Hendrik Willms's avatar Jan-Hendrik Willms
Browse files

fixes #35

parent 3e29e4e0
No related branches found
No related tags found
No related merge requests found
......@@ -134,6 +134,10 @@ final class TracToGitlabPlugin extends StudIPPlugin implements StandardPlugin, S
'merge-requests',
new Navigation(_('Merge Requests'), PluginEngine::getURL($this, [], 'mergerequests'))
);
$navigation->addSubNavigation(
'cg-members',
new Navigation(_('Übersicht Zuständigkeiten'), PluginEngine::getURL($this, [], 'cgmembers'))
);
Navigation::addItem('/gitlab-dashboard', $navigation);
}
......
......@@ -13,3 +13,13 @@
color: $light-gray-color-80;
}
}
.cgmembers-list {
.cg-label {
background-color: var(--light-gray-color-20);
border: 1px solid var(--black);
display: inline-block;
font-weight: normal;
padding: 0 0.5em;
}
}
<?php
final class CgmembersController extends TracToGitlab\Controller
{
public function before_filter(&$action, &$args)
{
parent::before_filter($action, $args);
$this->activateNavigation('cg-members');
PageLayout::setTitle(_('Übersicht der Zuständigkeiten in der CoreGroup'));
}
public function index_action()
{
$this->groups = $this->getGroups();
$this->labels = [
'Check' => _('Dieses Kriterium muss erfüllt sein müssen und ein Plus erhalten haben, bevor der Entwicklungsbranch in den Hauptbranch überführt werden darf'),
'Veto' => _('Ein nicht behobenes Veto in Form eines Minus dieser Zuständigkeit kann dazu führen, dass die Entwicklung wieder aus dem Hauptbranch ausgebaut werden muss.'),
];
}
public function mail_action(string $group_id)
{
$groups = $this->getGroups();
if (!isset($groups[$group_id])) {
$this->redirect($this->indexURL());
return;
}
$group = $groups[$group_id];
$_SESSION['sms_data'] = [
'p_rec' => array_column($group['members'], 'username'),
];
$this->redirect(URLHelper::getURL('dispatch.php/messages/write'));
}
private function extractLabelsFromName(string &$name): array
{
if (!preg_match('/\s\((.+)\)$/', $name, $matches)) {
return [];
}
$name = trim(str_replace($matches[0], '', $name));
return array_map('trim', array_filter(explode(',', $matches[1])));
}
private function getGroups(): array
{
$course_id = Config::get()->TRAC2GITLAB_CG_MEMBERS_COURSE_ID;
$course = Course::find($course_id);
if (!$course) {
throw new RuntimeException(_('Die in TRAC2GITLAB_CG_MEMBERS_COURSE_ID konfigurierte Veranstaltung existiert nicht'));
}
$result = [];
$course->statusgruppen->each(function (Statusgruppen $group) use (&$result) {
$name = (string) $group->name;
$labels = $this->extractLabelsFromName($name);
$result[$group->id] = [
'name' => $name,
'labels' => $labels,
'members' => $group->members->pluck('user'),
];
});
return $result;
}
}
<?php
final class SetupCgMembersView extends Migration
{
public function up()
{
Config::get()->create('TRAC2GITLAB_CG_MEMBERS_COURSE_ID', [
'value' => '',
'type' => 'string',
'range' => 'global',
'section' => 'Trac2Gitlab',
'description' => 'Veranstaltung für die Darstellung der CG-Zuständigkeiten',
]);
}
public function down()
{
Config::get()->delete('TRAC2GITLAB_CG_MEMBERS_COURSE_ID');
}
}
pluginname=Trac to gitlab converter
pluginclassname=TracToGitlabPlugin
origin=UOL
version=1.1.2
version=1.2
studipMinVersion=5.0
<?php
/**
* @var CgmembersController $controller
* @var array $groups
* @var array $labels
*/
?>
<table class="default cgmembers-list">
<caption><?= _('Übersicht der Zuständigkeiten innerhalb der CoreGroup') ?></caption>
<colgroup>
<col>
<col style="width: 24px">
</colgroup>
<? foreach ($groups as $id => $group): ?>
<tbody>
<tr>
<th>
<?= htmlReady($group['name']) ?>
<? foreach ($group['labels'] as $label): ?>
<abbr class="cg-label" title="<?= htmlReady($labels[$label]) ?>">
<?= htmlReady($label) ?>
</abbr>
<? endforeach; ?>
</th>
<th>
<a href="<?= $controller->mail($id) ?>" data-dialog>
<?= Icon::create('mail')->asImg(tooltip2(sprintf(
_('Nachricht an alle Personen mit der Zuständigkeit %s schreiben'),
$group['name']
))) ?>
</a>
</th>
</tr>
<? foreach ($group['members'] as $user): ?>
<tr>
<td>
<a href="<?= URLHelper::getLink('dispatch.php/profile', ['username' => $user->username]) ?>">
<?= Avatar::getAvatar($user->id)->getImageTag(Avatar::SMALL) ?>
<?= htmlReady($user->getFullName()) ?>
</a>
</td>
<td class="actions">
<a href="<?= URLHelper::getLink('dispatch.php/messages/write', ['rec_uname' => $user->username]) ?>" data-dialog>
<?= Icon::create('mail')->asImg(tooltip2(sprintf(
_('Nachricht an %s schreiben'),
$user->getFullName()
))) ?>
</a>
</td>
</tr>
<? endforeach; ?>
</tbody>
<? endforeach; ?>
</table>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment