Primera version visual formulario catalogo completa

This commit is contained in:
imnavajas
2025-04-15 09:54:33 +02:00
parent c75a2f9ef4
commit 67e588dd67
7 changed files with 364 additions and 18 deletions

View File

@ -0,0 +1,144 @@
<div class="accordion accordion-bordered mt-3" id="accordionConfiguracionLibro">
<div class="card accordion-item">
<h2 class="accordion-header" id="headingConfiguracionLibro">
<button type="button" class="accordion-button collapsed" data-bs-toggle="collapse"
data-bs-target="#collapseConfiguracionLibro" aria-expanded="false"
aria-controls="collapseConfiguracionLibro">
<h5 class="mb-0"><?= lang("Catalogo.configuracionLibro") ?? 'Configuración del libro' ?></h5>
</button>
</h2>
<div id="collapseConfiguracionLibro" class="accordion-collapse collapse"
data-bs-parent="#accordionConfiguracionLibro">
<div class="accordion-body">
<div class="row mb-3">
<div class="col-md-6">
<label for="tipo_impresion" class="form-label">Tipo de impresión</label>
<select id="tipo_impresion" name="tipo_impresion" class="form-select">
<option value="bn" <?= old('tipo_impresion', $catalogoLibrosEntity->tipo_impresion) === 'bn' ? 'selected' : '' ?>>B/N</option>
<option value="color" <?= old('tipo_impresion', $catalogoLibrosEntity->tipo_impresion) === 'color' ? 'selected' : '' ?>>Color</option>
<option value="colorfoto" <?= old('tipo_impresion', $catalogoLibrosEntity->tipo_impresion) === 'colorfoto' ? 'selected' : '' ?>>Color Foto
</option>
<option value="bicolor" <?= old('tipo_impresion', $catalogoLibrosEntity->tipo_impresion) === 'bicolor' ? 'selected' : '' ?>>Bicolor</option>
</select>
</div>
<div class="col-md-6">
<label for="encuardenacion" class="form-label">Encuadernación</label>
<select id="encuardenacion" name="encuardenacion" class="form-select">
<option value="">-- Selecciona --</option>
<option value="Rústica Fresada Con Solapas" <?= old('encuardenacion', $catalogoLibrosEntity->encuardenacion) === 'Rústica Fresada Con Solapas' ? 'selected' : '' ?>>Rústica Fresada Con Solapas</option>
<option value="Rústica Fresada Sin Solapas" <?= old('encuardenacion', $catalogoLibrosEntity->encuardenacion) === 'Rústica Fresada Sin Solapas' ? 'selected' : '' ?>>Rústica Fresada Sin Solapas</option>
<option value="Rústica Cosida" <?= old('encuardenacion', $catalogoLibrosEntity->encuardenacion) === 'Rústica Cosida' ? 'selected' : '' ?>>Rústica
Cosida</option>
<option value="Cartoné" <?= old('encuardenacion', $catalogoLibrosEntity->encuardenacion) === 'Cartoné' ? 'selected' : '' ?>>Cartoné</option>
<option value="Wire-o" <?= old('encuardenacion', $catalogoLibrosEntity->encuardenacion) === 'Wire-o' ? 'selected' : '' ?>>Wire-o</option>
<!-- Agrega aquí más opciones según tu catálogo -->
</select>
</div>
</div>
<!-- Configuración física -->
<div class="table-responsive mb-4">
<table class="table table-bordered align-middle text-center">
<thead>
<tr>
<th>Nº Páginas</th>
<th>Papel</th>
<th>Gramaje</th>
<th>Solapa</th>
<th>Plastificado</th>
</tr>
</thead>
<tbody>
<!-- Interior B/N -->
<tr>
<td>
<input type="number" name="negro_paginas" class="form-control"
value="<?= old('negro_paginas', $catalogoLibrosEntity->negro_paginas) ?>">
</td>
<td>
<input type="text" name="negro_papel" class="form-control"
value="<?= old('negro_papel', $catalogoLibrosEntity->negro_papel) ?>">
</td>
<td>
<input type="number" step="0.01" name="negro_gramaje" class="form-control"
value="<?= old('negro_gramaje', $catalogoLibrosEntity->negro_gramaje) ?>">
</td>
<td>—</td>
<td>—</td>
</tr>
<!-- Interior Color -->
<tr>
<td>
<input type="number" name="color_paginas" class="form-control"
value="<?= old('color_paginas', $catalogoLibrosEntity->color_paginas) ?>">
</td>
<td>
<input type="text" name="color_papel" class="form-control"
value="<?= old('color_papel', $catalogoLibrosEntity->color_papel) ?>">
</td>
<td>
<input type="number" step="0.01" name="color_gramaje" class="form-control"
value="<?= old('color_gramaje', $catalogoLibrosEntity->color_gramaje) ?>">
</td>
<td>—</td>
<td>—</td>
</tr>
<!-- Portada -->
<tr>
<td>
<input type="number" name="portada_paginas" class="form-control"
value="<?= old('portada_paginas', $catalogoLibrosEntity->portada_paginas) ?>">
</td>
<td>
<input type="text" name="portada_papel" class="form-control"
value="<?= old('portada_papel', $catalogoLibrosEntity->portada_papel) ?>">
</td>
<td>
<input type="number" step="0.01" name="portada_gramaje" class="form-control"
value="<?= old('portada_gramaje', $catalogoLibrosEntity->portada_gramaje) ?>">
</td>
<td>
<input type="number" step="0.01" name="solapas_ancho" class="form-control"
value="<?= old('solapas_ancho', $catalogoLibrosEntity->solapas_ancho) ?>">
</td>
<td>
<input type="text" name="portada_acabado" class="form-control"
value="<?= old('portada_acabado', $catalogoLibrosEntity->portada_acabado) ?>">
</td>
</tr>
<!-- Cubierta -->
<tr>
<td>
<input type="number" name="cubierta_paginas" class="form-control"
value="<?= old('cubierta_paginas', $catalogoLibrosEntity->cubierta_paginas) ?>">
</td>
<td>
<input type="text" name="cubierta_papel" class="form-control"
value="<?= old('cubierta_papel', $catalogoLibrosEntity->cubierta_papel) ?>">
</td>
<td>
<input type="number" step="0.01" name="cubierta_gramaje" class="form-control"
value="<?= old('cubierta_gramaje', $catalogoLibrosEntity->cubierta_gramaje) ?>">
</td>
<td>
<input type="number" step="0.01" name="cubiertas_ancho" class="form-control"
value="<?= old('cubiertas_ancho', $catalogoLibrosEntity->cubiertas_ancho) ?>">
</td>
<td>
<input type="text" name="cubierta_acabado" class="form-control"
value="<?= old('cubierta_acabado', $catalogoLibrosEntity->cubierta_acabado) ?>">
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>

View File

@ -1,7 +1,8 @@
<div class="accordion accordion-bordered mt-3" id="accordionLibro">
<div class="card accordion-item active">
<h2 class="accordion-header" id="headingLibroDatos">
<button type="button" class="accordion-button" data-bs-toggle="collapse" data-bs-target="#collapseLibroDatos" aria-expanded="true" aria-controls="collapseLibroDatos">
<button type="button" class="accordion-button" data-bs-toggle="collapse"
data-bs-target="#collapseLibroDatos" aria-expanded="true" aria-controls="collapseLibroDatos">
<h5 class="mb-0"><?= lang("Catalogo.datosGenerales") ?? 'Datos generales del libro' ?></h5>
</button>
</h2>
@ -11,18 +12,22 @@
<div class="row">
<!-- COLUMNA IZQUIERDA: Imagen -->
<div class="col-md-12 col-lg-2 px-4">
<div class="mb-3 text-center">
<?php if (!empty($catalogoLibrosEntity->cubierta_url)) : ?>
<img src="<?= esc($catalogoLibrosEntity->cubierta_url) ?>" class="img-fluid mb-2" alt="Portada">
<?php else : ?>
<img src="<?= base_url('assets/img/default_cover.png') ?>" class="img-fluid mb-2" alt="Sin portada">
<div class="col-md-12 col-lg-2 px-4 d-flex flex-column justify-content-center align-items-center"
style="min-height: 100%;">
<div class="mb-3 text-center w-100">
<?php if (!empty($catalogoLibrosEntity->cubierta_url)): ?>
<img src="<?= esc($catalogoLibrosEntity->cubierta_url) ?>" class="img-fluid mb-2"
alt="Portada">
<?php else: ?>
<img src="<?= base_url('assets/img/default_cover.png') ?>" class="img-fluid mb-2"
alt="Sin portada">
<?php endif; ?>
<input type="file" name="cubierta_archivo" class="form-control" accept="image/*">
<small class="form-text text-muted">Subir portada</small>
</div>
</div>
<!-- COLUMNA DERECHA: Datos -->
<div class="col-md-12 col-lg-10 px-4">
<div class="row">
@ -34,40 +39,41 @@
<div class="col-md-8 mb-3">
<label for="titulo" class="form-label">Título</label>
<input type="text" id="titulo" name="titulo" class="form-control"
value="<?= old('titulo', $catalogoLibrosEntity->titulo) ?>" required maxlength="300">
value="<?= old('titulo', $catalogoLibrosEntity->titulo) ?>" required
maxlength="300">
</div>
<div class="col-md-4 mb-3">
<div class="col-md-3 mb-3">
<label for="autor" class="form-label">Autor</label>
<input type="text" id="autor" name="autor" class="form-control"
value="<?= old('autor', $catalogoLibrosEntity->autor) ?>" maxlength="255">
</div>
<div class="col-md-4 mb-3">
<div class="col-md-3 mb-3">
<label for="coleccion" class="form-label">Colección</label>
<input type="text" id="coleccion" name="coleccion" class="form-control"
value="<?= old('coleccion', $catalogoLibrosEntity->coleccion) ?>" maxlength="255">
</div>
<div class="col-md-4 mb-3">
<div class="col-md-3 mb-3">
<label for="editorial" class="form-label">Editorial</label>
<input type="text" id="editorial" name="editorial" class="form-control"
value="<?= old('editorial', $catalogoLibrosEntity->editorial) ?>" maxlength="255">
</div>
<div class="col-md-4 mb-3">
<div class="col-md-3 mb-3">
<label for="sello" class="form-label">Sello</label>
<input type="text" id="sello" name="sello" class="form-control"
value="<?= old('sello', $catalogoLibrosEntity->sello) ?>" maxlength="255">
</div>
<div class="col-md-4 mb-3">
<div class="col-md-3 mb-3">
<label for="isbn" class="form-label">ISBN</label>
<input type="text" id="isbn" name="isbn" class="form-control"
value="<?= old('isbn', $catalogoLibrosEntity->isbn) ?>" maxlength="255">
</div>
<div class="col-md-2 mb-3">
<div class="col-md-3 mb-3">
<label for="num_edic" class="form-label">Edición</label>
<input type="number" id="num_edic" name="num_edic" class="form-control"
value="<?= old('num_edic', $catalogoLibrosEntity->num_edic ?? 1) ?>">
@ -75,11 +81,11 @@
<div class="col-md-6 mb-3">
<label for="ean" class="form-label">EAN</label>
<input type="text" id="ean" name="ean" class="form-control" readonly
<input type="text" id="ean" name="ean" class="form-control" readonly style="background: #E8E8E8;"
value="<?= old('ean', $catalogoLibrosEntity->ean) ?>">
</div>
<div class="col-md-6 mb-3">
<div class="col-md-3 mb-3">
<label for="cubierta_archivo" class="form-label">Archivo</label>
<input type="text" id="cubierta_archivo" name="cubierta_archivo" class="form-control"
value="<?= old('cubierta_archivo', $catalogoLibrosEntity->cubierta_archivo) ?>">
@ -109,4 +115,4 @@
</div> <!-- //.accordion-body -->
</div> <!-- //.collapse -->
</div> <!-- //.accordion-item -->
</div> <!-- //.accordion -->
</div> <!-- //.accordion -->

View File

@ -0,0 +1,64 @@
<div class="accordion accordion-bordered mt-3" id="accordionFicheros">
<div class="card accordion-item">
<h2 class="accordion-header" id="headingFicheros">
<button type="button" class="accordion-button collapsed" data-bs-toggle="collapse"
data-bs-target="#collapseFicheros" aria-expanded="false" aria-controls="collapseFicheros">
<h5 class="mb-0"><?= lang("Catalogo.ficherosLibro") ?? 'Ficheros' ?></h5>
</button>
</h2>
<div id="collapseFicheros" class="accordion-collapse collapse" data-bs-parent="#accordionFicheros">
<div class="accordion-body">
<div class="row">
<!-- Zona de subida -->
<div class="col-md-12 col-lg-3 px-4">
<div id="dropzone" class="border border-secondary border-dashed rounded p-4 text-center"
style="min-height: 200px; cursor: pointer;">
<p class="text-muted m-0">
Arrastre los ficheros<br>o haz click para<br><strong>subir ficheros</strong>
</p>
<!-- Aquí podrías usar DropzoneJS u otro uploader -->
<input type="file" multiple name="archivos[]" class="d-none" id="fileUploader">
</div>
</div>
<!-- Tabla de ficheros -->
<div class="col-md-12 col-lg-9 px-4">
<div class="table-responsive">
<table class="table table-bordered">
<thead class="table-light">
<tr>
<th>Fecha subida</th>
<th>Usuario</th>
<th>Fichero</th>
<th>Tamaño</th>
</tr>
</thead>
<tbody id="fileList">
<!-- Aquí se cargarán los archivos por JS o PHP -->
<?php if (!empty($ficheros)): ?>
<?php foreach ($ficheros as $fichero): ?>
<tr>
<td><?= esc($fichero['fecha']) ?></td>
<td><?= esc($fichero['usuario']) ?></td>
<td><a href="<?= esc($fichero['url']) ?>"
target="_blank"><?= esc($fichero['nombre']) ?></a></td>
<td><?= esc($fichero['tamano']) ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr>
<td colspan="4" class="text-center text-muted">No hay ficheros subidos</td>
</tr>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
</div> <!-- //.row -->
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,99 @@
<div class="accordion accordion-bordered mt-3" id="accordionLibroOtros">
<div class="card accordion-item">
<h2 class="accordion-header" id="headingOtrosDatos">
<button type="button" class="accordion-button collapsed" data-bs-toggle="collapse"
data-bs-target="#collapseOtrosDatos" aria-expanded="false" aria-controls="collapseOtrosDatos">
<h5 class="mb-0"><?= lang("Catalogo.otrosDatosLibro") ?? 'Otros datos del libro' ?></h5>
</button>
</h2>
<div id="collapseOtrosDatos" class="accordion-collapse collapse" data-bs-parent="#accordionLibroOtros">
<div class="accordion-body">
<div class="row">
<div class="col-md-2 mb-3">
<label for="peso" class="form-label">Peso</label>
<input type="number" step="0.01" id="peso" name="peso" class="form-control"
value="<?= old('peso', $catalogoLibrosEntity->peso) ?>">
</div>
<div class="col-md-2 mb-3">
<label for="autor_entidad" class="form-label">Autor entidad</label>
<input type="text" id="autor_entidad" name="autor_entidad" class="form-control"
value="<?= old('autor_entidad', $catalogoLibrosEntity->autor_entidad) ?>">
</div>
<div class="col-md-2 mb-3">
<label for="traductor" class="form-label">Traductor</label>
<input type="text" id="traductor" name="traductor" class="form-control"
value="<?= old('traductor', $catalogoLibrosEntity->traductor) ?>">
</div>
<div class="col-md-2 mb-3">
<label for="ilustrador" class="form-label">Ilustrador</label>
<input type="text" id="ilustrador" name="ilustrador" class="form-control"
value="<?= old('ilustrador', $catalogoLibrosEntity->ilustrador) ?>">
</div>
<div class="col-md-2 mb-3">
<label for="idioma" class="form-label">Idioma</label>
<input type="text" id="idioma" name="idioma" class="form-control"
value="<?= old('idioma', $catalogoLibrosEntity->idioma ?? 'spa') ?>">
</div>
<div class="col-md-2 mb-3">
<label for="num_edic" class="form-label">Nº Edición</label>
<input type="number" id="num_edic" name="num_edic" class="form-control"
value="<?= old('num_edic', $catalogoLibrosEntity->num_edic ?? 1) ?>">
</div>
<div class="col-md-2 mb-3">
<label for="fecha_disponibilidad" class="form-label">Fecha Disponibilidad</label>
<input type="date" id="fecha_disponibilidad" name="fecha_disponibilidad" class="form-control"
value="<?= old('fecha_disponibilidad', $catalogoLibrosEntity->fecha_disponibilidad) ?>">
</div>
<div class="col-md-2 mb-3">
<label for="fecha_public" class="form-label">Fecha Publicación</label>
<input type="date" id="fecha_public" name="fecha_public" class="form-control"
value="<?= old('fecha_public', $catalogoLibrosEntity->fecha_public) ?>">
</div>
<div class="col-md-2 mb-3">
<label for="num_fotos" class="form-label">Nº Fotos</label>
<input type="number" id="num_fotos" name="num_fotos" class="form-control"
value="<?= old('num_fotos', $catalogoLibrosEntity->num_fotos ?? 0) ?>">
</div>
<div class="col-md-2 mb-3">
<label for="num_ilustr" class="form-label">Nº Ilustraciones</label>
<input type="number" id="num_ilustr" name="num_ilustr" class="form-control"
value="<?= old('num_ilustr', $catalogoLibrosEntity->num_ilustr ?? 0) ?>">
</div>
<div class="col-md-2 mb-3">
<label for="num_ilustr_color" class="form-label">Nº Ilustraciones Color</label>
<input type="number" id="num_ilustr_color" name="num_ilustr_color" class="form-control"
value="<?= old('num_ilustr_color', $catalogoLibrosEntity->num_ilustr_color ?? 0) ?>">
</div>
<div class="col-md-2 mb-3">
<label for="num_ilustr_bn" class="form-label">Nº Ilustraciones B/N</label>
<input type="number" id="num_ilustr_bn" name="num_ilustr_bn" class="form-control"
value="<?= old('num_ilustr_bn', $catalogoLibrosEntity->num_ilustr_bn ?? 0) ?>">
</div>
<div class="col-md-6 mb-3">
<label for="resumen" class="form-label">Resumen</label>
<textarea id="resumen" name="resumen" rows="4" class="form-control"><?= old('resumen', $catalogoLibrosEntity->resumen) ?></textarea>
</div>
<div class="col-md-6 mb-3">
<label for="resumen_breve" class="form-label">Resumen breve</label>
<textarea id="resumen_breve" name="resumen_breve" rows="4" class="form-control"><?= old('resumen_breve', $catalogoLibrosEntity->resumen_breve) ?></textarea>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,20 @@
<?php if (!empty($catalogoLibrosEntity->user_created_id)): ?>
<div
class="container-fluid d-flex flex-md-row flex-column justify-content-between align-items-md-center gap-1 container-p-x py-3">
<div class="col-md-6">
<p>
<strong><?= lang("Catalogo.created_by_at") ?></strong>
<span id="created_by"></span>,
<span id="created_at"></span>
</p>
</div>
<div class="col-md-6">
<p>
<strong><?= lang("Catalogo.updated_by_at") ?></strong>
<span id="updated_by"></span>,
<span id="updated_at_footer"></span>
</p>
</div>
</div>
<?php endif; ?>

View File

@ -16,7 +16,11 @@
<div class="card-body">
<?= view("themes/_commonPartialsBs/_alertBoxes") ?>
<?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>
<?= view("themes/vuexy/form/catalogo/_catalogoLibrosFormItems") ?>
<?= view("themes/vuexy/form/catalogo/_datosGeneralesFormItems") ?>
<?= view("themes/vuexy/form/catalogo/_otrosDatosFormItems") ?>
<?= view("themes/vuexy/form/catalogo/_configuracionLibroFormItems") ?>
<?= view("themes/vuexy/form/catalogo/_ficherosLibroFormItems") ?>
<?= view("themes/vuexy/form/catalogo/_trackingFormItems") ?>
</div>
<!-- /.card-body -->
<!-- card-footer -->