Merge branch 'feat/catalogo' into 'main'

Feat/catalogo

See merge request jjimenez/safekat!727
This commit is contained in:
Ignacio Martinez Navajas
2025-04-22 20:58:42 +00:00
25 changed files with 4030 additions and 59 deletions

View File

@ -0,0 +1,146 @@
<!-- File: app/Views/catalogo_configuracion_libro.php -->
<div class="accordion accordion-bordered mt-3" id="accordionConfiguracionLibro">
<div class="card accordion-item active">
<h2 class="accordion-header" id="headingConfiguracionLibro">
<button class="accordion-button" type="button" data-bs-toggle="collapse"
data-bs-target="#collapseConfiguracionLibro" aria-expanded="true"
aria-controls="collapseConfiguracionLibro">
<h5 class="mb-0"><?= lang('Catalogo.configuracionLibro') ?: 'Configuración del libro' ?></h5>
</button>
</h2>
<div id="collapseConfiguracionLibro" class="accordion-collapse collapse show"
data-bs-parent="#accordionConfiguracionLibro">
<div class="accordion-body">
<?php
// 1) TIPO DE IMPRESIÓN + ENCUADERNACIÓN
$tipos = ['negro', 'negrohq', 'color', 'colorhq'];
?>
<div class="divider divider-dark text-start mb-1">
<div class="divider-text">
<h5><?= lang('Presupuestos.tipoImpresion') ?></h5>
</div>
</div>
<div class="row px-4 mt-1">
<div class="col-lg-3 col-md-12">
<select id="tipo_impresion" name="tipo_impresion" class="form-control select2bs2 warning-change"
style="width:100%" data-placeholder="<?= lang('Catalogo.seleccionarTipoImpresion') ?>">
<option></option>
<?php foreach ($tipos as $t): ?>
<option value="<?= $t ?>" <?= $catalogoLibrosEntity->tipo_impresion === $t ? 'selected' : '' ?>>
<?= lang("MaquinasTarifasImpresions.$t") ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-lg-3 col-md-12">
<select id="encuadernacion_id" name="encuadernacion_id"
class="form-control select2bs2 warning-change" style="width:100%">
<option value="<?= $catalogoLibrosEntity->encuadernacion_id ?>" selected>
<?= esc($catalogoLibrosEntity->encuadernacionName) ?>
</option>
</select>
</div>
</div>
<?php
// 2) COLUMNAS Y ETIQUETAS COMPARTIDAS
$cols = [2, 2, 2, 2, 2, 2];
$labels = ['', 'numeroPaginas', 'papel', 'gramaje', 'solapas', 'acabados'];
// Función única para renderizar cualquier fila, con clase opcional
$renderRow = function (array $cellsHtml, string $rowClass = '') use ($cols) {
$classAttr = $rowClass ? " {$rowClass}-line" : '';
echo "<div class=\"row{$classAttr} mb-0\">";
foreach ($cellsHtml as $i => $cell) {
$w = $cols[$i] ?? 2;
echo "<div class=\"col-lg-{$w} col-md-12 px-4 mb-0\">{$cell}</div>";
}
echo '<div><hr class="my-1"></div></div>';
};
?>
<div class="divider divider-dark text-start mb-1">
<div class="divider-text">
<h5><?= lang('Presupuestos.papelesComparadorPresupuestoAdmin') ?></h5>
</div>
</div>
<!-- 2a) Encabezado -->
<?php
$hdr = [];
foreach ($labels as $lbl) {
$hdr[] = '<p class="mb-0">' . ($lbl ? lang("Presupuestos.$lbl") : '') . '</p>';
}
echo '<div class="row mb-1">';
foreach ($hdr as $i => $html) {
echo '<div class="col-lg-' . $cols[$i] . ' col-md-12 px-4 mb-0">' . $html . '</div>';
}
echo '<div><hr class="my-1"><hr class="my-1"></div></div>';
?>
<!-- 3) Filas dinámicas: negro y color -->
<?php foreach (['negro', 'negro_pod', 'color', 'color_pod'] as $tipo):
$pag = old("{$tipo}_paginas", $catalogoLibrosEntity->{"{$tipo}_paginas"});
$papId = $catalogoLibrosEntity->{"{$tipo}_papel_id"};
$papNm = $catalogoLibrosEntity->{"{$tipo}PapelName"};
$gram = $catalogoLibrosEntity->{"{$tipo}_gramaje"};
$cells = [
'<p>' . lang("MaquinasTarifasImpresions.$tipo") . '</p>',
"<input type=\"text\" id=\"{$tipo}_paginas\" name=\"{$tipo}_paginas\" placeholder=\"0\" maxlength=\"5\" class=\"form-control {$tipo}_items\" value=\"" . esc($pag) . "\">",
"<select id=\"{$tipo}_papel_id\" name=\"{$tipo}_papel_id\" class=\"form-control select2bs2 {$tipo}_items\" style=\"width:100%\">"
. ($papNm ? "<option value=\"" . esc($papId) . "\" selected>" . esc($papNm) . "</option>" : "")
. "</select>",
"<select id=\"{$tipo}_gramaje\" name=\"{$tipo}_gramaje\" class=\"form-control select2bs2 {$tipo}_items\" style=\"width:100%\">"
. "<option value=\"" . esc($gram) . "\" selected>" . esc($gram) . "</option></select>",
'', // solapas
'' // acabados
];
$renderRow($cells, $tipo);
endforeach; ?>
<!-- 4) Cubierta y Sobrecubierta -->
<?php
$especiales = [
'cubierta' => ['faces' => [2 => 'unaCara', 4 => 'dosCaras'], 'disable' => false],
'cubierta_pod' => ['faces' => [2 => 'unaCara', 4 => 'dosCaras'], 'disable' => false],
'sobrecubierta' => ['faces' => [0 => 'no', 1 => 'si'], 'disable' => in_array($catalogoLibrosEntity->tipo_impresion_id, [5, 6, 7, 8, 21])],
'sobrecubierta_pod' => ['faces' => [0 => 'no', 1 => 'si'], 'disable' => in_array($catalogoLibrosEntity->tipo_impresion_id, [5, 6, 7, 8, 21])]
];
foreach ($especiales as $tipo => $cfg):
$pag = $catalogoLibrosEntity->{"{$tipo}_paginas"};
$papId = $catalogoLibrosEntity->{"{$tipo}_papel_id"};
$papNm = $catalogoLibrosEntity->{"{$tipo}PapelName"};
$gram = $catalogoLibrosEntity->{"{$tipo}_gramaje"};
$sol = old("{$tipo}_solapas_ancho", $catalogoLibrosEntity->{"{$tipo}_ancho_solapas"});
$acId = $catalogoLibrosEntity->{"{$tipo}_acabado_id"};
$acNm = $catalogoLibrosEntity->{"{$tipo}AcabadoName"};
$optPag = '';
foreach ($cfg['faces'] as $v => $lbl) {
$sel = $pag == $v ? ' selected' : '';
$optPag .= "<option value=\"$v\"$sel>" . lang("Presupuestos.$lbl") . "</option>";
}
$cells = [
'<p>' . lang("PapelImpresion.$tipo") . '</p>',
"<select id=\"{$tipo}_paginas\" name=\"{$tipo}_paginas\" class=\"form-control select2bs2\" style=\"width:100%\"" . ($cfg['disable'] ? ' disabled' : '') . ">{$optPag}</select>",
"<select id=\"{$tipo}_papel_id\" name=\"{$tipo}_papel_id\" class=\"form-control select2bs2 {$tipo}_items\" style=\"width:100%\"" . ($cfg['disable'] ? ' disabled' : '') . ">"
. ($papNm ? "<option value=\"" . esc($papId) . "\" selected>" . esc($papNm) . "</option>" : "")
. "</select>",
"<select id=\"{$tipo}_gramaje\" name=\"{$tipo}_gramaje\" class=\"form-control select2bs2 {$tipo}_items\" style=\"width:100%\"" . ($cfg['disable'] ? ' disabled' : '') . ">"
. "<option value=\"" . esc($gram) . "\" selected>" . esc($gram) . "</option></select>",
"<input type=\"text\" id=\"{$tipo}_ancho_solapas\" name=\"{$tipo}_ancho_solapas\" placeholder=\"0\" maxlength=\"5\" class=\"form-control {$tipo}_items\" value=\"" . esc($sol) . "\"" . ($cfg['disable'] ? ' disabled' : '') . ">",
"<select id=\"{$tipo}_acabado_id\" name=\"{$tipo}_acabado_id\" class=\"form-control select2bs2 {$tipo}_items\" style=\"width:100%\"" . ($cfg['disable'] ? ' disabled' : '') . ">"
. "<option value=\"" . esc($acId) . "\" selected>" . esc($acNm) . "</option></select>",
];
$renderRow($cells, $tipo);
endforeach;
?>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,127 @@
<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">
<h5 class="mb-0"><?= lang("Catalogo.datosGenerales") ?? 'Datos generales del libro' ?></h5>
</button>
</h2>
<div id="collapseLibroDatos" class="accordion-collapse collapse show" data-bs-parent="#accordionLibro">
<div class="accordion-body">
<div class="row">
<!-- COLUMNA IZQUIERDA: Imagen -->
<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="https://static.cegal.es/imagenes/marcadas/9788415/978841f45711.gif" class="img-fluid mb-2"
alt="Sin portada">
<?php endif; ?>
</div>
</div>
<!-- COLUMNA DERECHA: Datos -->
<div class="col-md-12 col-lg-10 px-4">
<div class="row">
<div class="col-md-4 mb-3">
<label for="cliente_id" class="form-label">Cliente *</label>
<select id="cliente_id" name="cliente_id" class="form-select select2bs5">
<option value="<?= $catalogoLibrosEntity->cliente_id ?>" selected>
<?= $catalogoLibrosEntity->clienteName ?>
</option>
</select>
</div>
<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">
</div>
<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-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-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-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-3 mb-3">
<label for="isk" class="form-label">Identificador ISK</label>
<input type="text" id="isk" name="isk" class="form-control" readonly
value="<?= old('isk', $catalogoLibrosEntity->isk) ?>" maxlength="64"
style="background: #E8E8E8;">
</div>
<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-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) ?>">
</div>
<div class="col-md-3 mb-3">
<label for="ean" class="form-label">EAN</label>
<input type="text" id="ean" name="ean" class="form-control" readonly
style="background: #E8E8E8;" value="<?= old('ean', $catalogoLibrosEntity->ean) ?>">
</div>
<div class="col-md-3 mb-3">
<label for="ubicacion" class="form-label">Ubicación</label>
<input type="text" id="ubicacion" name="ubicacion" class="form-control"
value="<?= old('ubicacion', $catalogoLibrosEntity->ubicacion) ?>">
</div>
<div class="col-md-3 mb-3">
<label for="ancho" class="form-label">Ancho *</label>
<input type="number" step="0.01" id="ancho" name="ancho" class="form-control"
value="<?= old('ancho', $catalogoLibrosEntity->ancho) ?>">
</div>
<div class="col-md-3 mb-3">
<label for="alto" class="form-label">Alto *</label>
<input type="number" step="0.01" id="alto" name="alto" class="form-control"
value="<?= old('alto', $catalogoLibrosEntity->alto) ?>">
</div>
<div class="col-md-3 mb-3">
<label for="paginas" class="form-label">Nº Páginas *</label>
<input type="number" id="paginas" name="paginas" class="form-control"
value="<?= old('paginas', $catalogoLibrosEntity->paginas) ?>">
</div>
</div>
</div>
</div> <!-- //.row -->
</div> <!-- //.accordion-body -->
</div> <!-- //.collapse -->
</div> <!-- //.accordion-item -->
</div> <!-- //.accordion -->

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?->format('Y-m-d')) ?>">
</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?->format('Y-m-d')) ?>">
</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"><?= $catalogoLibrosEntity->createdUser ?></span>,
<span id="created_at"><?= $catalogoLibrosEntity->created_at ?></span>
</p>
</div>
<div class="col-md-6">
<p>
<strong><?= lang("Catalogo.updated_by_at") ?></strong>
<span id="updated_by"><?= $catalogoLibrosEntity->updatedUser ?></span>,
<span id="updated_at_footer"><?= $catalogoLibrosEntity->updated_at ?></span>
</p>
</div>
</div>
<?php endif; ?>

View File

@ -0,0 +1,48 @@
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section("content") ?>
<div class="row">
<div class="col-12">
<div class="card card-info">
<div class="card-header">
<h3 class="card-title"><?= $boxTitle ?? $pageTitle ?></h3>
</div><!--//.card-header -->
<form id="catalogoLibroForm" class="card-body" method="post" action="<?= $formAction ?>">
<?= csrf_field() ?>
<!-- card-body -->
<div class="card-body">
<?= view("themes/_commonPartialsBs/_alertBoxes") ?>
<?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>
<?= view("themes/vuexy/form/catalogo/_datosGeneralesFormItems") ?>
<?= view("themes/vuexy/form/catalogo/_otrosDatosFormItems") ?>
<?= view("themes/vuexy/form/catalogo/_configuracionLibroFormItems") ?>
<?= view("themes/vuexy/form/catalogo/_trackingFormItems") ?>
</div>
<!-- /.card-body -->
<!-- card-footer -->
<div class="pt-4">
<?php if (auth()->user()->can('catalogo.edit')): ?>
<input type="submit" class="btn btn-primary float-start me-sm-3 me-1" name="save"
value="<?= lang("Basic.global.Save") ?>" />
<?php endif; ?>
<?= anchor(route_to("CatalogoLibrosList"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start"]) ?>
</div>
<!-- /.card-footer -->
</form>
</div><!-- //.card -->
</div><!--//.col -->
</div><!--//.row -->
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/safekat.css') ?>">
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/catalogo/catalogo.js?' . 'token' . '=' . (csrf_token() ?? "token")) ?>"></script>
<?= $this->endSection() ?>

View File

@ -0,0 +1,80 @@
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/sweetalert') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<div class="row">
<div class="col-md-12">
<div class="card card-info">
<div class="card-header">
<h3 class="card-title"><?= lang('Catalogo.listingPage') ?></h3>
<?= anchor(route_to('CatalogoLibrosAdd'), lang('Basic.global.addNew') . ' ' . lang('Catalogo.libro'), ['class' => 'btn btn-primary float-end']); ?>
</div><!--//.card-header -->
<div class="card-body">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<table id="tableOfCatalogoLibros" class="table table-striped table-hover" style="width: 100%;">
<thead>
<tr>
<th><?= lang('Catalogo.portada') ?></th>
<th><?= lang('Catalogo.id') ?></th>
<th><?= lang('Catalogo.titulo') ?></th>
<th><?= lang('Catalogo.cliente') ?></th>
<th><?= lang('Catalogo.edicion') ?></th>
<th><?= lang('Catalogo.autor') ?></th>
<th><?= lang('Catalogo.isbn') ?></th>
<th><?= lang('Catalogo.ean') ?></th>
<th><?= lang('Catalogo.paginas') ?></th>
<th class="text-nowrap" style="min-width: 85px;"><?= lang('Basic.global.Action') ?></th>
</tr>
<tr>
<th></th>
<th></th>
<th><input type="text" class="form-control filtro_catalogo" name="titulo"></th>
<th><input type="text" class="form-control filtro_catalogo" name="cliente"></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div><!--//.card-body -->
<div class="card-footer">
</div><!--//.card-footer -->
</div><!--//.card -->
</div><!--//.col -->
</div><!--//.row -->
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<link rel="stylesheet"
href="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.css") ?>">
<link rel="stylesheet" href="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.css') ?>" />
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script
src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/dataTables.buttons.min.js") ?>"></script>
<script
src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.html5.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.print.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/jszip/jszip.min.js") ?>"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/pdfmake.min.js") ?>"
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/pdfmake/vfs_fonts.js") ?>"></script>
<script src="<?= site_url('themes/vuexy/vendor/libs/sweetalert2/sweetalert2.js') ?>"></script>
<script type="module" src="<?= site_url("assets/js/safekat/pages/catalogo/list.js") ?>"></script>
<?= $this->endSection() ?>

View File

@ -1,35 +1,33 @@
<?php
/**
* MENU CATALOGO
*/
if (auth()->user()->inGroup('beta')) {
?>
if (auth()->user()->can('catalogo.menu')) {
?>
<!-- Catalogue -->
<li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle beta">
<a href="javascript:void(0);" class="menu-link menu-toggle">
<i class="menu-icon tf-icons ti ti-book"></i>
<div><?= lang("App.menu_catalogo") ?></div>
<?= lang("App.menu_catalogo") ?>
</a>
<ul class="menu-sub">
<li class="menu-item">
<a href="<?= site_url("catalogo/catalogo") ?>" class="menu-link beta">
<div><?= lang("App.menu_catalogo_libros") ?></div>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("catalogo/catalogo/nuevo") ?>" class="menu-link beta">
<div><?= lang("App.menu_catalogo_nuevo") ?></div>
</a>
</li>
<li class="menu-item">
<a href="<?= site_url("catalogo/catalogo/categorias") ?>" class="menu-link beta">
<div><?= lang("App.menu_catalogo_categorias") ?></div>
</a>
</li>
<?php if (auth()->user()->can('catalogo.menu')) { ?>
<li class="menu-item">
<a href="<?= route_to("CatalogoLibrosList") ?>" class="menu-link">
<?= lang("App.menu_catalogo_libros") ?>
</a>
</li>
<?php } ?>
<?php if (auth()->user()->can('catalogo.create')) { ?>
<li class="menu-item">
<a href="<?= route_to("CatalogoLibrosAdd") ?>" class="menu-link">
<?= lang("App.menu_catalogo_nuevo") ?>
</a>
</li>
<?php } ?>
<li class="menu-item">
<a href="<?= site_url("catalogo/catalogo/importar") ?>" class="menu-link beta">
<div> <?= lang("App.menu_catalogo_importar") ?></div>
<?= lang("App.menu_catalogo_importar") ?>
</a>
</li>
</ul>