File "editEvaluacion.php"
Full Path: C:/wamp64/www/Formaciones/Vistas/instructor/editEvaluacion.php
File size: 4.6 KB
MIME-type: text/x-php
Charset: utf-8
<?php
// Vistas/instructor/editEvaluacion.php
// Validación de seguridad manual (ya que no usamos require_role)
if (!esta_autenticado() || !in_array(usuario_actual()['rol'], ['admin', 'instructor'])) {
header("Location: index.php");
exit;
}
// El objeto $quiz viene del controlador
if (!$quiz) {
echo "<div class='card'>Error: Evaluación no encontrada.</div>";
return;
}
?>
<div class="dashboard-container">
<div style="display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px;">
<h1 style="margin:0;">⚙️ Configurar: <?= h($quiz['title']) ?></h1>
<a href="index.php?r=instructor/quizzes" class="btn-primary" style="background: #6c757d; text-decoration: none;">⬅️ Volver</a>
</div>
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 20px;">
<section class="card">
<h3 style="color: var(--accent-1);">➕ Nueva Pregunta</h3>
<form method="post" action="index.php?r=instructor/quizzes/edit&id=<?= $quiz['id'] ?>">
<?php campo_csrf(); ?>
<input type="hidden" name="action" value="add_question">
<input type="hidden" name="quiz_id" value="<?= $quiz['id'] ?>">
<label>Enunciado</label>
<textarea name="question_text" rows="3" required placeholder="¿Cuál es la capital de...?"></textarea>
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 10px;">
<div>
<label>Tipo</label>
<select name="question_type" id="tipo_pregunta" onchange="toggleOpciones(this.value)">
<option value="mcq">Opción Múltiple</option>
<option value="open">Abierta</option>
</select>
</div>
<div>
<label>Puntos</label>
<input type="number" name="points" value="1" min="1">
</div>
</div>
<div id="contenedor_opciones" style="margin-top: 15px; background: #f9f9f9; padding: 10px; border-radius: 8px;">
<p style="font-size: 0.8rem; font-weight: bold;">Opciones (Marca la correcta):</p>
<?php for($i=0; $i<4; $i++): ?>
<div style="display: flex; align-items: center; gap: 10px; margin-bottom: 8px;">
<input type="radio" name="correct_option" value="<?= $i ?>" <?= $i==0 ? 'checked' : '' ?>>
<input type="text" name="options[]" placeholder="Respuesta <?= $i+1 ?>" style="margin:0;">
</div>
<?php endfor; ?>
</div>
<button type="submit" class="btn-primary" style="width: 100%; margin-top: 15px;">Guardar Pregunta</button>
</form>
</section>
<section class="card">
<h3 style="color: var(--accent-1);">📋 Preguntas en esta Evaluación</h3>
<div id="lista-preguntas">
<?php
// Esta variable $preguntas debe ser enviada desde el controlador
if (isset($preguntas) && $preguntas->num_rows > 0):
while($p = $preguntas->fetch_assoc()): ?>
<div style="padding: 10px; border-bottom: 1px solid #eee; display: flex; justify-content: space-between; align-items: center;">
<div>
<strong><?= h($p['question_text']) ?></strong><br>
<small style="color: #666;"><?= $p['question_type'] == 'mcq' ? 'Múltiple' : 'Abierta' ?> | <?= $p['points'] ?> pts</small>
</div>
<button onclick="borrarPregunta(<?= $p['id'] ?>)" style="background:none; border:none; cursor:pointer;">❌</button>
</div>
<?php endwhile;
else: ?>
<p style="color: #999; text-align: center;">Aún no hay preguntas.</p>
<?php endif; ?>
</div>
</section>
</div>
</div>
<script>
function toggleOpciones(valor) {
document.getElementById('contenedor_opciones').style.display = (valor === 'mcq') ? 'block' : 'none';
}
function borrarPregunta(id) {
if(confirm('¿Eliminar esta pregunta?')) {
window.location.href = 'index.php?r=instructor/quizzes/delete_question&id=' + id + '&quiz_id=<?= $quiz['id'] ?>';
}
}
</script>