Regreso de las competencias
This commit is contained in:
parent
fcc62cbd5a
commit
3ca4818e51
|
@ -35,13 +35,15 @@ switch ($method) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$stmt = $pdo->prepare("
|
$stmt = $pdo->prepare("
|
||||||
INSERT INTO cursos (nombre, descripcion, tipo, estado, profesor_id)
|
INSERT INTO cursos (nombre, descripcion, tipo, competencias, estado, profesor_id)
|
||||||
VALUES (?, ?, ?, 'activo', ?)
|
VALUES (?, ?, ?, ?, ?, ?)
|
||||||
");
|
");
|
||||||
$stmt->execute([
|
$stmt->execute([
|
||||||
$data['nombre'],
|
$data['nombre'],
|
||||||
$data['descripcion'] ?? null,
|
$data['descripcion'] ?? null,
|
||||||
$data['tipo'],
|
$data['tipo'],
|
||||||
|
$data['competencias'] ?? null,
|
||||||
|
$data['estado'],
|
||||||
$profesorId
|
$profesorId
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -77,6 +79,7 @@ switch ($method) {
|
||||||
nombre = ?,
|
nombre = ?,
|
||||||
descripcion = ?,
|
descripcion = ?,
|
||||||
tipo = ?,
|
tipo = ?,
|
||||||
|
competencias = ?,
|
||||||
estado = ?
|
estado = ?
|
||||||
WHERE id = ?
|
WHERE id = ?
|
||||||
");
|
");
|
||||||
|
@ -84,7 +87,8 @@ switch ($method) {
|
||||||
$data['nombre'],
|
$data['nombre'],
|
||||||
$data['descripcion'] ?? null,
|
$data['descripcion'] ?? null,
|
||||||
$data['tipo'],
|
$data['tipo'],
|
||||||
$data['estado'] ?? 'activo',
|
$data['competencias'] ?? null,
|
||||||
|
$data['estado'],
|
||||||
$data['id']
|
$data['id']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
|
@ -579,8 +579,13 @@ header h1 {
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge.inactive {
|
.badge.completed {
|
||||||
background-color: #f44336;
|
background-color: #2196f3;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.badge.archived {
|
||||||
|
background-color: #9e9e9e;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -336,27 +336,36 @@ function loadProfessorCourses(container) {
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<h2>Mis Cursos</h2>
|
<h2>Mis Cursos</h2>
|
||||||
<form id="courseForm">
|
<form id="courseForm">
|
||||||
<label>Nombre del Curso*</label>
|
<label>Nombre del Curso *</label>
|
||||||
<input type="text" name="nombre" required>
|
<input type="text" name="nombre" required>
|
||||||
|
|
||||||
<label>Descripción</label>
|
<label>Descripción</label>
|
||||||
<textarea name="descripcion" rows="4" style="width: 100%; padding: 0.75rem; margin: 0.5rem 0 1rem 0; border: 1px solid #e2e8f0; border-radius: 6px; font-family: 'Inter', sans-serif;"></textarea>
|
<textarea name="descripcion" maxlength="250" rows="4" style="width: 100%; padding: 0.75rem; margin: 0.5rem 0 1rem 0; border: 1px solid #e2e8f0; border-radius: 6px; font-family: 'Inter', sans-serif;"></textarea>
|
||||||
|
|
||||||
<label>Tipo de Curso*</label>
|
<label>Tipo de Curso *</label>
|
||||||
<select name="tipo" required>
|
<select id="courseType" name="tipo" required>
|
||||||
<option value="inyeccion">Inyección</option>
|
<option value="inyeccion">Inyección</option>
|
||||||
<option value="pildora">Píldora</option>
|
<option value="pildora">Píldora</option>
|
||||||
<option value="tratamiento">Tratamiento</option>
|
<option value="tratamiento">Tratamiento</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<div id="competencesField" name="competencias" class="oculto">
|
||||||
|
<label>Competencias Asociadas *</label>
|
||||||
|
<input type="text" name="competencias" placeholder="Ej. Análisis de datos, Comunicación efectiva">
|
||||||
|
</div>
|
||||||
|
|
||||||
<label>Estado</label>
|
<label>Estado</label>
|
||||||
<select name="estado">
|
<select name="estado">
|
||||||
<option value="activo">Activo</option>
|
<option value="activo">Activo</option>
|
||||||
<option value="inactivo">Inactivo</option>
|
<option value="completado">Completado</option>
|
||||||
|
<option value="archivado">Archivado</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<button class="btn btn-success" type="submit">Guardar</button>
|
<button class="btn btn-success" type="submit">Guardar</button>
|
||||||
|
<button class="btn btn-outline" type="button" id="cancelCourseBtn" style="display:none; margin-left:8px; background-color: #f44336;">
|
||||||
|
Cancelar
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -385,9 +394,17 @@ function loadProfessorCourses(container) {
|
||||||
<td><span class="badge ${getCourseTypeClass(
|
<td><span class="badge ${getCourseTypeClass(
|
||||||
course.tipo
|
course.tipo
|
||||||
)}">${course.tipo}</span></td>
|
)}">${course.tipo}</span></td>
|
||||||
<td><span class="badge ${
|
<td>
|
||||||
course.estado === "activo" ? "active" : "inactive"
|
<span class="badge ${
|
||||||
}">${course.estado}</span></td>
|
course.estado === "activo"
|
||||||
|
? "active"
|
||||||
|
: course.estado === "completado"
|
||||||
|
? "completed"
|
||||||
|
: course.estado === "archivado"
|
||||||
|
? "archived"
|
||||||
|
: "inactive"
|
||||||
|
}">${course.estado}</span>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="action-buttons">
|
<div class="action-buttons">
|
||||||
<button class="btn btn-sm" onclick="editCourse(${
|
<button class="btn btn-sm" onclick="editCourse(${
|
||||||
|
@ -411,17 +428,61 @@ function loadProfessorCourses(container) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatCourseType(type) {
|
||||||
|
const types = {
|
||||||
|
'pildora': 'Píldora',
|
||||||
|
'inyeccion': 'Inyección',
|
||||||
|
'tratamiento': 'Tratamiento'
|
||||||
|
};
|
||||||
|
return types[type] || type;
|
||||||
|
}
|
||||||
|
|
||||||
function setupCourseForm() {
|
function setupCourseForm() {
|
||||||
|
const courseTypeSelect = document.getElementById('courseType');
|
||||||
|
const competencesField = document.getElementById('competencesField');
|
||||||
|
const competenciasInput = competencesField
|
||||||
|
? competencesField.querySelector('input[name="competencias"]')
|
||||||
|
: null;
|
||||||
|
|
||||||
|
if (courseTypeSelect && competenciasInput) {
|
||||||
|
courseTypeSelect.addEventListener('change', function() {
|
||||||
|
const isTratamiento = this.value === 'tratamiento';
|
||||||
|
competencesField.classList.toggle('oculto', !isTratamiento);
|
||||||
|
competenciasInput.required = isTratamiento;
|
||||||
|
if (!isTratamiento) {
|
||||||
|
competenciasInput.value = '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const isTratamiento = courseTypeSelect.value === 'tratamiento';
|
||||||
|
competencesField.classList.toggle('oculto', !isTratamiento);
|
||||||
|
competenciasInput.required = isTratamiento;
|
||||||
|
}
|
||||||
|
|
||||||
const form = document.getElementById("courseForm");
|
const form = document.getElementById("courseForm");
|
||||||
if (!form) return;
|
if (!form) return;
|
||||||
|
|
||||||
|
const cancelBtn = document.getElementById("cancelCourseBtn");
|
||||||
|
if (cancelBtn) {
|
||||||
|
cancelBtn.addEventListener("click", function () {
|
||||||
|
form.reset();
|
||||||
|
competencesField.classList.add("oculto");
|
||||||
|
form.dataset.editing = "false";
|
||||||
|
delete form.dataset.courseId;
|
||||||
|
form.querySelector("button[type='submit']").textContent = "Guardar";
|
||||||
|
cancelBtn.style.display = "none";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
form.addEventListener("submit", function (e) {
|
form.addEventListener("submit", function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
const formData = new FormData(this);
|
const formData = new FormData(this);
|
||||||
const jsonData = {
|
const jsonData = {
|
||||||
nombre: formData.get("nombre"),
|
nombre: formData.get("nombre"),
|
||||||
descripcion: formData.get("descripcion"),
|
descripcion: formData.get("descripcion"),
|
||||||
|
competencias: formData.get("competencias"),
|
||||||
tipo: formData.get("tipo"),
|
tipo: formData.get("tipo"),
|
||||||
|
estado: formData.get("estado"),
|
||||||
profesor_id: getProfesorId(),
|
profesor_id: getProfesorId(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -479,10 +540,24 @@ window.editCourse = function (id) {
|
||||||
form.nombre.value = course.nombre;
|
form.nombre.value = course.nombre;
|
||||||
form.descripcion.value = course.descripcion || "";
|
form.descripcion.value = course.descripcion || "";
|
||||||
form.tipo.value = course.tipo;
|
form.tipo.value = course.tipo;
|
||||||
|
form.estado.value = course.estado || "activo";
|
||||||
|
|
||||||
|
const competencesField = document.getElementById("competencesField");
|
||||||
|
const competenciasInput = competencesField.querySelector('input[name="competencias"]');
|
||||||
|
if (course.tipo === "tratamiento") {
|
||||||
|
competencesField.classList.remove("oculto");
|
||||||
|
competenciasInput.value = course.competencias || "";
|
||||||
|
competenciasInput.required = true;
|
||||||
|
} else {
|
||||||
|
competencesField.classList.add("oculto");
|
||||||
|
competenciasInput.value = "";
|
||||||
|
competenciasInput.required = false;
|
||||||
|
}
|
||||||
|
|
||||||
form.dataset.editing = "true";
|
form.dataset.editing = "true";
|
||||||
form.dataset.courseId = id;
|
form.dataset.courseId = id;
|
||||||
form.querySelector("button").textContent = "Actualizar Curso";
|
form.querySelector("button[type='submit']").textContent = "Actualizar Curso";
|
||||||
|
document.getElementById("cancelCourseBtn").style.display = "inline-block";
|
||||||
form.scrollIntoView({ behavior: "smooth" });
|
form.scrollIntoView({ behavior: "smooth" });
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
2
hash.php
2
hash.php
|
@ -1,5 +1,5 @@
|
||||||
<?php
|
<?php
|
||||||
$contraseña = "1234";
|
$contraseña = "ascii";
|
||||||
$hash = password_hash($contraseña, PASSWORD_DEFAULT);
|
$hash = password_hash($contraseña, PASSWORD_DEFAULT);
|
||||||
|
|
||||||
echo "Contraseña original: " . $contraseña . "<br>";
|
echo "Contraseña original: " . $contraseña . "<br>";
|
||||||
|
|
Loading…
Reference in New Issue