modified: templates/available_projects.html
modified: templates/base.html
This commit is contained in:
@@ -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}`);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user