sdsdf
All checks were successful
Deploy / deploy-staging (push) Successful in 24s
Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-06-20 01:30:57 +02:00
parent 1286f2245a
commit fc4567688a
4 changed files with 44 additions and 50 deletions

View File

@@ -51,6 +51,7 @@ return [
'content_mode' => 'native-module', 'content_mode' => 'native-module',
'default_width' => 980, 'default_width' => 980,
'default_height' => 700, 'default_height' => 700,
'show_on_desktop' => false,
'supports_widget' => true, 'supports_widget' => true,
'supports_tray' => false, 'supports_tray' => false,
'module_name' => 'desktop', 'module_name' => 'desktop',

View File

@@ -100,18 +100,23 @@ $renderStartIcon = static function (array $profile): string {
<div class="window-layer" id="window-layer"></div> <div class="window-layer" id="window-layer"></div>
<section class="start-menu" id="start-menu" hidden> <section class="start-menu" id="start-menu" hidden>
<div class="start-menu-user-settings" id="start-menu-user-settings"> <div class="start-menu-sidebar" id="start-menu-user-settings">
<button class="start-menu-settings-button" id="start-menu-settings-button" type="button">
<span class="start-menu-settings-icon" aria-hidden="true">⚙</span>
<span>Einstellungen</span>
</button>
<button class="start-menu-user-card" id="start-menu-user-card" type="button"> <button class="start-menu-user-card" id="start-menu-user-card" type="button">
<span class="start-menu-user-avatar" id="start-menu-user-avatar">GU</span> <span class="start-menu-user-avatar" id="start-menu-user-avatar">GU</span>
<span class="start-menu-user-copy"> <span class="start-menu-user-copy">
<strong id="start-menu-user-name"><?= htmlspecialchars((string) ($desktopPayload['session']['display_name'] ?? 'Gast'), ENT_QUOTES) ?></strong> <strong id="start-menu-user-name"><?= htmlspecialchars((string) ($desktopPayload['session']['display_name'] ?? 'Gast'), ENT_QUOTES) ?></strong>
<small>User Setting Bereich</small> <small>Benutzer</small>
</span> </span>
</button> </button>
<div class="start-menu-function-list" id="start-menu-functions">
<button class="start-menu-function is-active" type="button" data-function-id="programs">
<span class="start-menu-function-icon" aria-hidden="true">📁</span>
<span class="start-menu-function-copy">
<strong>Programme</strong>
<small>Installierte Apps</small>
</span>
</button>
</div>
<?php if (($desktopPayload['session']['authenticated'] ?? false) === true && !empty($desktopPayload['session']['logout_url'])): ?> <?php if (($desktopPayload['session']['authenticated'] ?? false) === true && !empty($desktopPayload['session']['logout_url'])): ?>
<a class="start-menu-session-action is-logout" id="start-menu-session-action" href="<?= htmlspecialchars((string) $desktopPayload['session']['logout_url'], ENT_QUOTES) ?>"> <a class="start-menu-session-action is-logout" id="start-menu-session-action" href="<?= htmlspecialchars((string) $desktopPayload['session']['logout_url'], ENT_QUOTES) ?>">
<span class="start-menu-session-icon" aria-hidden="true">⏻</span> <span class="start-menu-session-icon" aria-hidden="true">⏻</span>
@@ -124,20 +129,8 @@ $renderStartIcon = static function (array $profile): string {
</button> </button>
<?php endif; ?> <?php endif; ?>
</div> </div>
<div class="start-menu-function-area"> <div class="start-menu-selection-area start-menu-selection-area--programs">
<div class="start-menu-section-title">Funktion-Bereich</div> <div class="start-menu-selection-header" id="start-menu-selection-header"></div>
<div class="start-menu-function-list" id="start-menu-functions">
<button class="start-menu-function is-active" type="button" data-function-id="programs">
<span class="start-menu-function-icon" aria-hidden="true">📁</span>
<span class="start-menu-function-copy">
<strong>Programme</strong>
<small>Installierte Apps</small>
</span>
</button>
</div>
</div>
<div class="start-menu-selection-area">
<div class="start-menu-section-title">Auswahlbereich</div>
<div class="start-menu-selection-list" id="start-menu-apps"></div> <div class="start-menu-selection-list" id="start-menu-apps"></div>
</div> </div>
</section> </section>

View File

@@ -954,7 +954,7 @@ h1 {
z-index: 130; z-index: 130;
display: grid; display: grid;
align-content: stretch; align-content: stretch;
grid-template-columns: minmax(220px, 250px) minmax(180px, 220px) minmax(320px, 1fr); grid-template-columns: minmax(240px, 280px) minmax(420px, 1fr);
gap: 0; gap: 0;
width: min(920px, calc(100% - 48px)); width: min(920px, calc(100% - 48px));
min-height: 560px; min-height: 560px;
@@ -979,14 +979,13 @@ h1 {
display: none !important; display: none !important;
} }
.start-menu-user-settings, .start-menu-sidebar,
.start-menu-function-area,
.start-menu-selection-area { .start-menu-selection-area {
display: grid; display: grid;
align-content: start; align-content: start;
} }
.start-menu-user-settings { .start-menu-sidebar {
grid-template-rows: auto auto 1fr auto; grid-template-rows: auto auto 1fr auto;
gap: 16px; gap: 16px;
padding: 20px 16px 16px; padding: 20px 16px 16px;
@@ -994,28 +993,12 @@ h1 {
border-right: 1px solid rgba(255, 255, 255, 0.06); border-right: 1px solid rgba(255, 255, 255, 0.06);
} }
.start-menu-function-area {
gap: 14px;
padding: 20px 14px;
background: rgba(36, 36, 42, 0.98);
border-right: 1px solid rgba(255, 255, 255, 0.06);
}
.start-menu-selection-area { .start-menu-selection-area {
gap: 14px; gap: 14px;
padding: 20px 16px; padding: 20px 16px;
background: linear-gradient(180deg, rgba(40, 40, 46, 0.98), rgba(33, 33, 38, 0.98)); background: linear-gradient(180deg, rgba(40, 40, 46, 0.98), rgba(33, 33, 38, 0.98));
} }
.start-menu-section-title {
font-size: 12px;
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
color: rgba(248, 250, 252, 0.66);
}
.start-menu-settings-button,
.start-menu-user-card, .start-menu-user-card,
.start-menu-session-action, .start-menu-session-action,
.start-menu-function, .start-menu-function,
@@ -1037,7 +1020,6 @@ h1 {
transition: background-color 140ms ease, border-color 140ms ease, transform 140ms ease; transition: background-color 140ms ease, border-color 140ms ease, transform 140ms ease;
} }
.start-menu-settings-button:hover,
.start-menu-user-card:hover, .start-menu-user-card:hover,
.start-menu-session-action:hover, .start-menu-session-action:hover,
.start-menu-function:hover, .start-menu-function:hover,
@@ -1051,7 +1033,6 @@ h1 {
transform: translateX(2px); transform: translateX(2px);
} }
.start-menu-settings-icon,
.start-menu-function-icon, .start-menu-function-icon,
.start-menu-session-icon, .start-menu-session-icon,
.start-menu-entry-badge, .start-menu-entry-badge,
@@ -1110,6 +1091,11 @@ h1 {
align-content: start; align-content: start;
} }
.start-menu-selection-header {
display: grid;
gap: 10px;
}
.start-menu-selection-list { .start-menu-selection-list {
max-height: 520px; max-height: 520px;
padding-right: 4px; padding-right: 4px;
@@ -1143,6 +1129,11 @@ h1 {
font-weight: 700; font-weight: 700;
} }
.start-menu-function--summary {
cursor: default;
transform: none !important;
}
.start-menu-session-action { .start-menu-session-action {
margin-top: auto; margin-top: auto;
} }
@@ -1319,8 +1310,7 @@ h1 {
grid-template-columns: 1fr; grid-template-columns: 1fr;
} }
.start-menu-user-settings, .start-menu-sidebar {
.start-menu-function-area {
border-right: 0; border-right: 0;
border-bottom: 1px solid rgba(255, 255, 255, 0.06); border-bottom: 1px solid rgba(255, 255, 255, 0.06);
} }

View File

@@ -10,8 +10,8 @@ if (payloadNode) {
const startButton = document.getElementById('start-button'); const startButton = document.getElementById('start-button');
const startMenu = document.getElementById('start-menu'); const startMenu = document.getElementById('start-menu');
const startMenuApps = document.getElementById('start-menu-apps'); const startMenuApps = document.getElementById('start-menu-apps');
const startMenuSelectionHeader = document.getElementById('start-menu-selection-header');
const startMenuFunctions = document.getElementById('start-menu-functions'); const startMenuFunctions = document.getElementById('start-menu-functions');
const startMenuSettingsButton = document.getElementById('start-menu-settings-button');
const startMenuUserCard = document.getElementById('start-menu-user-card'); const startMenuUserCard = document.getElementById('start-menu-user-card');
const startMenuUserName = document.getElementById('start-menu-user-name'); const startMenuUserName = document.getElementById('start-menu-user-name');
const startMenuUserAvatar = document.getElementById('start-menu-user-avatar'); const startMenuUserAvatar = document.getElementById('start-menu-user-avatar');
@@ -1178,6 +1178,18 @@ if (payloadNode) {
return; return;
} }
if (startMenuSelectionHeader) {
startMenuSelectionHeader.innerHTML = `
<div class="start-menu-function is-active start-menu-function--summary">
<span class="start-menu-function-icon" aria-hidden="true">📁</span>
<span class="start-menu-function-copy">
<strong>Programme</strong>
<small>Installierte Apps</small>
</span>
</div>
`;
}
startMenuApps.innerHTML = ''; startMenuApps.innerHTML = '';
if (activeFunctionArea !== 'programs') { if (activeFunctionArea !== 'programs') {
@@ -1252,7 +1264,9 @@ if (payloadNode) {
renderSelectionArea(); renderSelectionArea();
}; };
payload.apps.forEach((app) => { payload.apps
.filter((app) => app.show_on_desktop !== false)
.forEach((app) => {
const icon = document.createElement('button'); const icon = document.createElement('button');
icon.type = 'button'; icon.type = 'button';
icon.className = 'desktop-icon is-contrast-dark'; icon.className = 'desktop-icon is-contrast-dark';
@@ -1346,10 +1360,6 @@ if (payloadNode) {
} }
}); });
startMenuSettingsButton?.addEventListener('click', () => {
openAccountSettings();
});
startMenuUserCard?.addEventListener('click', () => { startMenuUserCard?.addEventListener('click', () => {
openAccountSettings(); openAccountSettings();
}); });