119 lines
6.9 KiB
PHP
119 lines
6.9 KiB
PHP
<?php /* Name: developer.php
|
|
Beschreibung: Entwickler-Anwendungen */
|
|
|
|
// Initialisierung
|
|
require_once $_SERVER['DOCUMENT_ROOT'].'/intranet_repo/general_files/initialise.php';
|
|
|
|
require_once __DIR__.'/util/developer_helpers.php';
|
|
|
|
// Zugriff nur für Entwickler
|
|
if (!isset($groups["Entwickler"]) || $groups["Entwickler"] != 1) {
|
|
header("Location: {$g_httpHomePath}");
|
|
exit();
|
|
}
|
|
|
|
$feedError = '';
|
|
try {
|
|
$feedItems = developer_feed_items();
|
|
} catch (RuntimeException) {
|
|
$feedItems = [];
|
|
$feedError = 'Der Git-RSS-Feed ist momentan nicht erreichbar.';
|
|
}
|
|
$feedGroups = developer_feed_groups($feedItems);
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="de" dir="ltr">
|
|
<head>
|
|
<?php require_once $_SERVER['DOCUMENT_ROOT'].'/intranet_repo/projects/_central/php/html_head.php'; ?>
|
|
<link rel="stylesheet" href="/intranet_repo/projects/_central/layouts/developerpanel.css">
|
|
</head>
|
|
<body class="theme-green">
|
|
<?php require_once $_SERVER['DOCUMENT_ROOT'].'/intranet_repo/projects/_central/php/header.php'; ?>
|
|
|
|
<div class="header_title ht_dev" id="header_title">
|
|
<span class="header_title_text">Entwickler</span>
|
|
</div>
|
|
|
|
<div class="mainpage" id="mainpage">
|
|
<div class="mainpage_container">
|
|
<button type="button" class="button_mainpage unselectable bg_green" onclick="window.open('https://git.pelpino.de/NAK-Reinickendorf/intranet', '_blank', 'noopener,noreferrer');">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="32" height="32" aria-hidden="true" focusable="false"><path d="M23.546 10.93 13.067.452a1.55 1.55 0 0 0-2.188 0L8.708 2.627l2.76 2.76a1.838 1.838 0 0 1 2.327 2.341l2.658 2.66a1.837 1.837 0 1 1-1.102 1.033L12.87 8.94v6.526a1.837 1.837 0 1 1-1.512-.053V8.828a1.838 1.838 0 0 1-.999-2.409L7.636 3.697.45 10.881a1.55 1.55 0 0 0 0 2.188l10.48 10.48a1.55 1.55 0 0 0 2.186 0l10.43-10.43a1.55 1.55 0 0 0 0-2.188Z"/></svg>
|
|
<div class="text">Quellcode (Git)</div>
|
|
</button>
|
|
|
|
<button type="button" class="button_mainpage unselectable bg_green" onclick="window.open('https://pgadmin.pelpino.de/', '_blank', 'noopener,noreferrer');">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="32" height="32" aria-hidden="true" focusable="false"><path d="M12 2C7.03 2 3 3.79 3 6v12c0 2.21 4.03 4 9 4s9-1.79 9-4V6c0-2.21-4.03-4-9-4Zm0 2c4.42 0 7 .99 7 2s-2.58 2-7 2-7-.99-7-2 2.58-2 7-2Zm0 16c-4.42 0-7-.99-7-2v-2.13C6.63 16.57 9.14 17 12 17s5.37-.43 7-1.13V18c0 1.01-2.58 2-7 2Zm0-5c-4.42 0-7-.99-7-2v-2.13C6.63 11.57 9.14 12 12 12s5.37-.43 7-1.13V13c0 1.01-2.58 2-7 2Z"/></svg>
|
|
<div class="text">Datenbank (Postgres)</div>
|
|
</button>
|
|
|
|
<button type="button" class="button_mainpage unselectable bg_green" onclick="window.open('https://git.pelpino.de/NAK-Reinickendorf/intranet/projects/2', '_blank', 'noopener,noreferrer');">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="32" height="32" aria-hidden="true" focusable="false"><path d="M3 3h5v18H3V3Zm6.5 0h5v11h-5V3ZM16 3h5v7h-5V3Zm0 8.5h5V21h-5v-9.5ZM9.5 15.5h5V21h-5v-5.5Z"/></svg>
|
|
<div class="text">Projekt-Board</div>
|
|
</button>
|
|
|
|
<button type="button" class="button_mainpage unselectable bg_green" onclick="window.open('https://git.pelpino.de/NAK-Reinickendorf/intranet/wiki', '_blank', 'noopener,noreferrer');">
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="32" height="32" aria-hidden="true" focusable="false"><path d="M4 3a3 3 0 0 0-3 3v13.5A1.5 1.5 0 0 0 2.5 21H11V5.5A2.5 2.5 0 0 0 8.5 3H4Zm16 0h-4.5A2.5 2.5 0 0 0 13 5.5V21h8.5a1.5 1.5 0 0 0 1.5-1.5V6a3 3 0 0 0-3-3Z"/></svg>
|
|
<div class="text">Wiki</div>
|
|
</button>
|
|
|
|
<section class="content_panel developer-feed" aria-labelledby="developer-feed-title">
|
|
<div class="developer-feed_header">
|
|
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M2.002 2.725a.75.75 0 0 1 .797-.699C8.79 2.42 13.58 7.21 13.974 13.201a.75.75 0 0 1-1.497.098 10.5 10.5 0 0 0-9.776-9.776.747.747 0 0 1-.7-.798ZM2.84 7.05h-.002a7 7 0 0 1 6.113 6.111.75.75 0 0 1-1.49.178 5.5 5.5 0 0 0-4.8-4.8.75.75 0 0 1 .179-1.489M2 13a1 1 0 1 1 2 0 1 1 0 0 1-2 0"/></svg>
|
|
<h2 id="developer-feed-title">Git-Aktivität</h2>
|
|
</div>
|
|
|
|
<?php if ($feedItems === []): ?>
|
|
<p class="developer-feed_empty"><?= $feedError ?: 'Noch keine Git-Aktivität vorhanden.' ?></p>
|
|
<?php else: ?>
|
|
<div id="developer-feed-list">
|
|
<?php $itemIndex = 0; ?>
|
|
<?php foreach ($feedGroups as $group => $items): ?>
|
|
<section class="developer-feed_group"<?= $itemIndex >= DEVELOPER_FEED_LIMIT ? ' hidden' : '' ?>>
|
|
<h3><?= htmlspecialchars($group, ENT_QUOTES, 'UTF-8') ?></h3>
|
|
<ul>
|
|
<?php foreach ($items as $item): ?>
|
|
<li<?= $itemIndex++ >= DEVELOPER_FEED_LIMIT ? ' hidden' : '' ?>>
|
|
<a href="<?= htmlspecialchars($item['url'], ENT_QUOTES, 'UTF-8') ?>" target="_blank" rel="noopener noreferrer">
|
|
<span class="developer-feed_icon" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="<?= developer_feed_icon($item['title']) ?>"/></svg></span>
|
|
<span class="developer-feed_message">
|
|
<strong><?= htmlspecialchars($item['title'], ENT_QUOTES, 'UTF-8') ?></strong>
|
|
<?php if ($item['description'] !== ''): ?>
|
|
<span class="developer-feed_description"><?= htmlspecialchars($item['description'], ENT_QUOTES, 'UTF-8') ?></span>
|
|
<?php endif; ?>
|
|
<span class="developer-feed_meta">
|
|
<span><?= htmlspecialchars($item['author'], ENT_QUOTES, 'UTF-8') ?></span>
|
|
<?php if ($item['timestamp'] > 0): ?><span>·</span><time datetime="<?= date('c', $item['timestamp']) ?>"><?= date('d.m.Y · H:i', $item['timestamp']) ?></time><?php endif; ?>
|
|
</span>
|
|
</span>
|
|
</a>
|
|
</li>
|
|
<?php endforeach; ?>
|
|
</ul>
|
|
</section>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
<?php if (count($feedItems) > DEVELOPER_FEED_LIMIT): ?>
|
|
<button class="developer-feed_more" type="button" id="developer-feed-more" aria-expanded="false" aria-controls="developer-feed-list">Mehr anzeigen</button>
|
|
<?php endif; ?>
|
|
<?php endif; ?>
|
|
</section>
|
|
</div>
|
|
</div>
|
|
|
|
<?php require_once $_SERVER['DOCUMENT_ROOT'].'/intranet_repo/projects/_central/php/footer.php'; ?>
|
|
|
|
<?php if (count($feedItems) > DEVELOPER_FEED_LIMIT): ?>
|
|
<script>
|
|
document.getElementById('developer-feed-more').addEventListener('click', function () {
|
|
const expanded = this.getAttribute('aria-expanded') === 'true';
|
|
const list = document.getElementById('developer-feed-list');
|
|
list.querySelectorAll('li').forEach((item, index) => item.hidden = expanded && index >= <?= DEVELOPER_FEED_LIMIT ?>);
|
|
list.querySelectorAll('.developer-feed_group').forEach(group => group.hidden = !group.querySelector('li:not([hidden])'));
|
|
this.setAttribute('aria-expanded', String(!expanded));
|
|
this.textContent = expanded ? 'Mehr anzeigen' : 'Weniger anzeigen';
|
|
});
|
|
</script>
|
|
<?php endif; ?>
|
|
</body>
|
|
</html>
|