fix(ui): resolver superposicion en menu colapsado, reparar edicion de ciclo lectivo, aplicar paleta UniCABA y agregar control de modo demo en config global
This commit is contained in:
@@ -226,6 +226,54 @@
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Control de Modo Demo y Cuentas de Prueba Iniciales -->
|
||||
<div class="card border border-warning-subtle shadow-sm p-3 rounded-3 mb-3">
|
||||
<div class="d-flex justify-content-between align-items-center mb-2">
|
||||
<h6 class="fw-bold mb-0 d-flex align-items-center text-body">
|
||||
<i class="bi bi-shield-lock-fill text-warning me-2"></i>Acceso Rápido Demo & Cuentas de Prueba
|
||||
</h6>
|
||||
<span id="demoModeBadge" class="badge {% if demo_access_enabled %}bg-warning-subtle text-warning border border-warning-subtle{% else %}bg-secondary-subtle text-secondary border border-secondary-subtle{% endif %}">
|
||||
{% if demo_access_enabled %}Activo en Login{% else %}Deshabilitado{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
<p class="small text-muted mb-2" style="font-size: 0.82rem;">
|
||||
Permite ocultar el bloque de <em>"Acceso Rápido Demo (1 Clic)"</em> de la pantalla de inicio de sesión y deshabilitar las 3 cuentas de usuario de prueba iniciales para pasar a producción.
|
||||
</p>
|
||||
<div class="p-2 rounded bg-body-tertiary border mb-3 small">
|
||||
<div class="d-flex justify-content-between align-items-center mb-1">
|
||||
<span><i class="bi bi-building-gear me-1 text-warning"></i><strong>Bedelía:</strong> <code>bedelia@edu-space.com</code></span>
|
||||
<span id="badgeBedelia" class="badge {% if demo_accounts_active %}bg-success-subtle text-success{% else %}bg-danger-subtle text-danger{% endif %}">
|
||||
{% if demo_accounts_active %}Habilitado{% else %}Desactivado{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between align-items-center mb-1">
|
||||
<span><i class="bi bi-person-video3 me-1 text-info"></i><strong>Docente:</strong> <code>docente@edu-space.com</code></span>
|
||||
<span id="badgeDocente" class="badge {% if demo_accounts_active %}bg-success-subtle text-success{% else %}bg-danger-subtle text-danger{% endif %}">
|
||||
{% if demo_accounts_active %}Habilitado{% else %}Desactivado{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
<div class="d-flex justify-content-between align-items-center">
|
||||
<span><i class="bi bi-mortarboard me-1 text-success"></i><strong>Alumno:</strong> <code>alumno@edu-space.com</code></span>
|
||||
<span id="badgeAlumno" class="badge {% if demo_accounts_active %}bg-success-subtle text-success{% else %}bg-danger-subtle text-danger{% endif %}">
|
||||
{% if demo_accounts_active %}Habilitado{% else %}Desactivado{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<button type="button" class="btn btn-sm {% if demo_access_enabled or demo_accounts_active %}btn-outline-danger{% else %}btn-outline-success{% endif %}" id="btnToggleDemoMode" onclick="toggleDemoMode()">
|
||||
<i class="bi {% if demo_access_enabled or demo_accounts_active %}bi-shield-slash{% else %}bi-shield-check{% endif %} me-1"></i>
|
||||
<span id="btnToggleDemoText">
|
||||
{% if demo_access_enabled or demo_accounts_active %}
|
||||
Deshabilitar Acceso Demo y Cuentas Default
|
||||
{% else %}
|
||||
Reactivar Acceso Demo y Cuentas Default
|
||||
{% endif %}
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-lg-6">
|
||||
@@ -556,6 +604,60 @@ async function saveAuthProviders(e) {
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------
|
||||
// Alternar Modo Demo y Cuentas de Prueba Default
|
||||
// -------------------------------------------------------------
|
||||
async function toggleDemoMode() {
|
||||
const btn = document.getElementById('btnToggleDemoMode');
|
||||
const btnText = document.getElementById('btnToggleDemoText');
|
||||
const badge = document.getElementById('demoModeBadge');
|
||||
btn.disabled = true;
|
||||
const isCurrentlyActive = btn.classList.contains('btn-outline-danger');
|
||||
const targetEnable = !isCurrentlyActive;
|
||||
|
||||
try {
|
||||
const res = await fetch('/admin/settings/demo-mode', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'X-Requested-With': 'XMLHttpRequest'
|
||||
},
|
||||
body: JSON.stringify({ enabled: targetEnable })
|
||||
});
|
||||
const data = await res.json();
|
||||
if (res.ok) {
|
||||
showAlert(data.message, targetEnable ? 'info' : 'success');
|
||||
if (targetEnable) {
|
||||
btn.className = 'btn btn-sm btn-outline-danger';
|
||||
btn.querySelector('i').className = 'bi bi-shield-slash me-1';
|
||||
btnText.textContent = 'Deshabilitar Acceso Demo y Cuentas Default';
|
||||
badge.className = 'badge bg-warning-subtle text-warning border border-warning-subtle';
|
||||
badge.textContent = 'Activo en Login';
|
||||
['badgeBedelia', 'badgeDocente', 'badgeAlumno'].forEach(id => {
|
||||
const el = document.getElementById(id);
|
||||
if (el) { el.className = 'badge bg-success-subtle text-success'; el.textContent = 'Habilitado'; }
|
||||
});
|
||||
} else {
|
||||
btn.className = 'btn btn-sm btn-outline-success';
|
||||
btn.querySelector('i').className = 'bi bi-shield-check me-1';
|
||||
btnText.textContent = 'Reactivar Acceso Demo y Cuentas Default';
|
||||
badge.className = 'badge bg-secondary-subtle text-secondary border border-secondary-subtle';
|
||||
badge.textContent = 'Deshabilitado';
|
||||
['badgeBedelia', 'badgeDocente', 'badgeAlumno'].forEach(id => {
|
||||
const el = document.getElementById(id);
|
||||
if (el) { el.className = 'badge bg-danger-subtle text-danger'; el.textContent = 'Desactivado'; }
|
||||
});
|
||||
}
|
||||
} else {
|
||||
showAlert(data.message || 'Error al cambiar modo demo', 'danger');
|
||||
}
|
||||
} catch (err) {
|
||||
showAlert('Error de conexión: ' + err.message, 'danger');
|
||||
} finally {
|
||||
btn.disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------
|
||||
// Guardar Google OAuth 2.0
|
||||
// -------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user