modified: templates/available_projects.html

modified:   templates/base.html
This commit is contained in:
SimolZimol
2025-07-07 00:42:14 +02:00
parent 11b3ec6ea5
commit 484491649d
2 changed files with 72 additions and 17 deletions

View File

@@ -605,6 +605,27 @@ function updateProjectStatus() {
installBtn.disabled = true;
installBtn.style.opacity = '0.6';
}
// Dropdown-Toggle auch deaktivieren
const dropdownToggle = statusEl.closest('.card').querySelector('.dropdown-toggle-split');
if (dropdownToggle) {
dropdownToggle.disabled = true;
dropdownToggle.style.opacity = '0.6';
dropdownToggle.classList.add('disabled');
// Entferne Bootstrap Dropdown-Funktionalität
dropdownToggle.removeAttribute('data-bs-toggle');
dropdownToggle.title = 'Projekt ist bereits auf dem neuesten Stand';
}
// Dropdown-Menü-Items deaktivieren
const dropdownItems = statusEl.closest('.card').querySelectorAll('.dropdown-item');
dropdownItems.forEach(item => {
if (!item.textContent.includes('Projektdetails')) {
item.style.opacity = '0.5';
item.style.pointerEvents = 'none';
item.classList.add('disabled');
}
});
}
} else {
// Nicht installiert
@@ -618,6 +639,24 @@ function updateProjectStatus() {
installBtn.style.opacity = '1';
installBtn.onclick = () => installProject(installBtn.dataset.url, installBtn.dataset.name);
}
// Dropdown-Toggle wieder aktivieren
const dropdownToggle = statusEl.closest('.card').querySelector('.dropdown-toggle-split');
if (dropdownToggle) {
dropdownToggle.disabled = false;
dropdownToggle.style.opacity = '1';
dropdownToggle.classList.remove('disabled');
dropdownToggle.setAttribute('data-bs-toggle', 'dropdown');
dropdownToggle.removeAttribute('title');
}
// Dropdown-Menü-Items wieder aktivieren
const dropdownItems = statusEl.closest('.card').querySelectorAll('.dropdown-item');
dropdownItems.forEach(item => {
item.style.opacity = '1';
item.style.pointerEvents = 'auto';
item.classList.remove('disabled');
});
}
});
}
@@ -678,13 +717,13 @@ function installProject(url, name, method = 'clone') {
updateProjectStatus();
updateInstalledCount();
// Nach 3 Sekunden zu Update-Button wechseln
// Erfolgsmeldung anzeigen
showAlert('success', `${name} erfolgreich installiert! Seite wird aktualisiert...`);
// Nach 2 Sekunden Seite neuladen um aktuellen Status zu zeigen
setTimeout(() => {
button.innerHTML = '<i class="fas fa-sync-alt"></i> Update';
button.className = 'btn btn-warning';
button.onclick = () => updateProject(url, name);
button.disabled = false;
}, 3000);
window.location.reload();
}, 2000);
} else {
button.innerHTML = originalText;
button.disabled = false;
@@ -726,27 +765,24 @@ function updateProject(url, name) {
button.innerHTML = '<i class="fas fa-check"></i> Aktualisiert';
button.className = 'btn btn-success';
// Aktualisiere installierte Projekte Liste
setTimeout(() => {
loadInstalledProjects();
updateProjectStatus();
}, 1000);
// Erfolgsmeldung anzeigen
showAlert('success', `${name} erfolgreich aktualisiert! Seite wird aktualisiert...`);
// Nach 2 Sekunden Seite neuladen um aktuellen Status zu zeigen
setTimeout(() => {
button.innerHTML = originalText;
button.className = 'btn btn-warning';
button.disabled = false;
}, 3000);
window.location.reload();
}, 2000);
} else {
button.innerHTML = originalText;
button.disabled = false;
alert('Update-Fehler: ' + data.message);
showAlert('danger', `Update-Fehler für ${name}: ${data.message}`);
}
})
.catch(error => {
button.innerHTML = originalText;
button.disabled = false;
alert('Netzwerkfehler beim Update: ' + error);
console.error('Update error:', error);
showAlert('danger', `Netzwerkfehler beim Update von ${name}: ${error}`);
});
}

View File

@@ -156,6 +156,25 @@
padding-left: 8px;
padding-right: 8px;
}
/* Deaktivierte Dropdown-Buttons */
.dropdown-toggle-split.disabled,
.dropdown-toggle-split:disabled {
cursor: not-allowed;
opacity: 0.6;
pointer-events: none;
}
.dropdown-item.disabled {
opacity: 0.5;
pointer-events: none;
cursor: not-allowed;
}
/* Tooltip für deaktivierte Buttons */
.btn[title]:disabled {
cursor: help;
}
</style>
</head>
<body>