utn-cli 2.1.52 → 2.1.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/templates/backend/rutas/misc.js +105 -0
- package/templates/backend/servicios/Nucleo/Miscelaneas.js +107 -16
- package/templates/frontend/public/conozcanos1.jpg +0 -0
- package/templates/frontend/public/preguntasF-1.png +0 -0
- package/templates/frontend/public/preguntasF-2.png +0 -0
- package/templates/frontend/public/preguntasF-3.png +0 -0
- package/templates/frontend/public/preguntasF-4.png +0 -0
- package/templates/frontend/public/preguntasF-5.png +0 -0
- package/templates/frontend/public/sabias-1.png +0 -0
- package/templates/frontend/public/sabias-10.png +0 -0
- package/templates/frontend/public/sabias-11.png +0 -0
- package/templates/frontend/public/sabias-2.png +0 -0
- package/templates/frontend/public/sabias-3.png +0 -0
- package/templates/frontend/public/sabias-4.png +0 -0
- package/templates/frontend/public/sabias-5.png +0 -0
- package/templates/frontend/public/sabias-6.png +0 -0
- package/templates/frontend/public/sabias-7.png +0 -0
- package/templates/frontend/public/sabias-8.png +0 -0
- package/templates/frontend/public/sabias-9.png +0 -0
- package/templates/frontend/src/app/Paginas/Nucleo/acercade/acercade.component.css +65 -0
- package/templates/frontend/src/app/Paginas/Nucleo/acercade/acercade.component.html +49 -0
- package/templates/frontend/src/app/Paginas/Nucleo/acercade/acercade.component.ts +20 -0
- package/templates/frontend/src/app/Paginas/Nucleo/conozcanos/conozcanos.component.css +608 -0
- package/templates/frontend/src/app/Paginas/Nucleo/conozcanos/conozcanos.component.html +109 -0
- package/templates/frontend/src/app/Paginas/Nucleo/conozcanos/conozcanos.component.ts +63 -0
- package/templates/frontend/src/app/Paginas/Nucleo/contenedor-componentes/contenedor-componentes.component.ts +25 -0
- package/templates/frontend/src/app/Paginas/Nucleo/politicas/politicas.component.css +158 -0
- package/templates/frontend/src/app/Paginas/Nucleo/politicas/politicas.component.html +120 -0
- package/templates/frontend/src/app/Paginas/Nucleo/politicas/politicas.component.ts +33 -0
- package/templates/frontend/src/app/Paginas/Nucleo/preguntasFrecuentes/preguntasFrecuentes.component.css +162 -0
- package/templates/frontend/src/app/Paginas/Nucleo/preguntasFrecuentes/preguntasFrecuentes.component.html +97 -0
- package/templates/frontend/src/app/Paginas/Nucleo/preguntasFrecuentes/preguntasFrecuentes.component.ts +36 -0
- package/templates/frontend/src/app/Paginas/Nucleo/sabiasque/sabiasque.component.css +229 -0
- package/templates/frontend/src/app/Paginas/Nucleo/sabiasque/sabiasque.component.html +396 -0
- package/templates/frontend/src/app/Paginas/Nucleo/sabiasque/sabiasque.component.ts +51 -0
- package/templates/frontend/src/app/app.routes.ts +20 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Component, OnInit } from '@angular/core';
|
|
2
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
3
|
+
import { DatosGlobalesService } from '../../../datos-globales.service';
|
|
4
|
+
import { takeUntil } from 'rxjs/operators';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { HttpClient } from '@angular/common/http';
|
|
7
|
+
import { CommonModule } from '@angular/common';
|
|
8
|
+
@Component({
|
|
9
|
+
selector: 'app-conozcanos',
|
|
10
|
+
standalone: true,
|
|
11
|
+
imports: [MatIconModule, CommonModule],
|
|
12
|
+
templateUrl: './conozcanos.component.html',
|
|
13
|
+
styleUrl: './conozcanos.component.css'
|
|
14
|
+
})
|
|
15
|
+
export class ConozcanosComponent implements OnInit {
|
|
16
|
+
public datosDesarrolladores: any[] = [];
|
|
17
|
+
public cargando: boolean = true;
|
|
18
|
+
public desarrolladorLider: any = null;
|
|
19
|
+
private _destroy$ = new Subject<void>();
|
|
20
|
+
|
|
21
|
+
constructor(private http: HttpClient, private datosGlobalesService: DatosGlobalesService) { }
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
ngOnInit(): void {
|
|
25
|
+
this.http.get(`${this.datosGlobalesService.ObtenerURL()}misc/VistaDeConozcanos`).pipe(takeUntil(this._destroy$)).subscribe({ error: () => { } });
|
|
26
|
+
this.obtenerDesarrolladores();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
obtenerDesarrolladores(): void {
|
|
30
|
+
this.cargando = true;
|
|
31
|
+
this.http.get(`${this.datosGlobalesService.ObtenerURL()}misc/obtenerEquipoDeDesarrolladores`).subscribe({
|
|
32
|
+
next: (respuesta: any) => {
|
|
33
|
+
console.log('Respuesta equipo:', respuesta);
|
|
34
|
+
|
|
35
|
+
if (respuesta.error) {
|
|
36
|
+
console.error('Problemas:', respuesta.error);
|
|
37
|
+
this.cargando = false;
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const todos = respuesta.body ?? [];
|
|
42
|
+
this.desarrolladorLider = todos.find((dev: any) => dev.Perfil === 'Lider') ?? null;
|
|
43
|
+
this.datosDesarrolladores = todos.filter((dev: any) => dev.Perfil !== 'Lider');
|
|
44
|
+
this.cargando = false;
|
|
45
|
+
},
|
|
46
|
+
error: (error) => {
|
|
47
|
+
console.error('Error:', error);
|
|
48
|
+
this.cargando = false;
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
flipCard(event: Event): void {
|
|
55
|
+
const button = event.target as HTMLElement;
|
|
56
|
+
const card = button.closest('.team-card');
|
|
57
|
+
|
|
58
|
+
if (card) {
|
|
59
|
+
card.classList.toggle('flipped');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
@@ -104,6 +104,11 @@ export class ContenedorComponentesComponent implements OnInit, OnDestroy, AfterV
|
|
|
104
104
|
{ id: 'nav_estadisticas', etiqueta: 'Estadísticas del módulo', icono: 'bar_chart', accion: () => this.irAEstadisticasDelModulo(), requierePermiso: true, posicion: 30 },
|
|
105
105
|
{ id: 'nav_accesibilidad', etiqueta: 'Accesibilidad', icono: 'accessibility', accion: () => this.irAAccesibilidad(), requierePermiso: false, posicion: 40 },
|
|
106
106
|
{ id: 'nav_declaracion_ia', etiqueta: 'Declaración de IA', icono: 'smart_toy', accion: () => this.irADeclaracionIA(), requierePermiso: false, posicion: 50 },
|
|
107
|
+
{ id: 'nav_politicas', etiqueta: 'Políticas de seguridad', icono: 'security', accion: () => this.irAPoliticas(), requierePermiso: false, posicion: 50 },
|
|
108
|
+
{ id: 'nav_acercade', etiqueta: 'Acerca de', icono: 'info', accion: () => this.irAAcercaDe(), requierePermiso: false, posicion: 50 },
|
|
109
|
+
{ id: 'nav_conozcanos', etiqueta: 'Conózcanos', icono: 'groups', accion: () => this.irAConozcanos(), requierePermiso: false, posicion: 50 },
|
|
110
|
+
{ id: 'nav_sabias_que', etiqueta: 'Sabías qué', icono: 'lightbulb', accion: () => this.irASabiasQue(), requierePermiso: false, posicion: 50 },
|
|
111
|
+
{ id: 'nav_preguntas_frecuentes', etiqueta: 'Preguntas frecuentes', icono: 'question_answer', accion: () => this.irAPreguntasFrecuentes(), requierePermiso: false, posicion: 50 },
|
|
107
112
|
];
|
|
108
113
|
}
|
|
109
114
|
|
|
@@ -298,6 +303,26 @@ export class ContenedorComponentesComponent implements OnInit, OnDestroy, AfterV
|
|
|
298
303
|
this.router.navigate(['/ia']);
|
|
299
304
|
}
|
|
300
305
|
|
|
306
|
+
irAAcercaDe(): void {
|
|
307
|
+
this.router.navigate(['/acercade']);
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
irAPoliticas(): void {
|
|
311
|
+
this.router.navigate(['/politicas']);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
irAConozcanos(): void {
|
|
315
|
+
this.router.navigate(['/conozcanos']);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
irASabiasQue(): void {
|
|
319
|
+
this.router.navigate(['/sabiasque']);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
irAPreguntasFrecuentes(): void {
|
|
323
|
+
this.router.navigate(['/preguntasfrecuentes']);
|
|
324
|
+
}
|
|
325
|
+
|
|
301
326
|
irAVideo(): void {
|
|
302
327
|
window.open(this.EnlaceDelVideo, '_blank', 'noopener,noreferrer');
|
|
303
328
|
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
.politicas-container {
|
|
2
|
+
max-width: 1000px;
|
|
3
|
+
padding-bottom: 20px;
|
|
4
|
+
font-family: 'Roboto', sans-serif;
|
|
5
|
+
background-color: white;
|
|
6
|
+
text-align: left;
|
|
7
|
+
margin: 0 auto;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.subtitle {
|
|
11
|
+
background-color: #0b4794;
|
|
12
|
+
font-size: 25px;
|
|
13
|
+
color: white;
|
|
14
|
+
padding: 18px;
|
|
15
|
+
margin: 20px 0;
|
|
16
|
+
text-align: center;
|
|
17
|
+
}
|
|
18
|
+
.subtitle p {
|
|
19
|
+
margin: 5px 0;
|
|
20
|
+
}
|
|
21
|
+
.description {
|
|
22
|
+
width: 100%;
|
|
23
|
+
padding-left: 30px;
|
|
24
|
+
padding-right: 30px;
|
|
25
|
+
box-sizing: border-box;
|
|
26
|
+
margin-top: 30px;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.description p {
|
|
30
|
+
margin: 15px 0;
|
|
31
|
+
font-size: 16px;
|
|
32
|
+
font-weight: 400;
|
|
33
|
+
color: #4D4D4D;
|
|
34
|
+
line-height: 1.6;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@media (max-width: 768px) {
|
|
38
|
+
.description {
|
|
39
|
+
padding-left: 20px;
|
|
40
|
+
padding-right: 20px;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.description p {
|
|
44
|
+
font-size: 14px;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@media (min-width: 1400px) {
|
|
49
|
+
.description {
|
|
50
|
+
padding-left: 40px;
|
|
51
|
+
padding-right: 40px;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.tree-container {
|
|
56
|
+
width: 100%;
|
|
57
|
+
padding-left: 30px;
|
|
58
|
+
padding-right: 30px;
|
|
59
|
+
margin-top: 30px;
|
|
60
|
+
box-sizing: border-box;
|
|
61
|
+
max-height: none;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Estilos árboles */
|
|
65
|
+
.tree-item {
|
|
66
|
+
margin-bottom: 10px;
|
|
67
|
+
padding-left: 15px;
|
|
68
|
+
transition: background-color 0.3s ease;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.line {
|
|
72
|
+
height: 3px;
|
|
73
|
+
border-bottom: 1px solid #C4C4C4;
|
|
74
|
+
}
|
|
75
|
+
.tree-header {
|
|
76
|
+
display: flex;
|
|
77
|
+
align-items: center;
|
|
78
|
+
gap: 10px;
|
|
79
|
+
cursor: pointer;
|
|
80
|
+
padding: 12px;
|
|
81
|
+
background-color: white;
|
|
82
|
+
border-radius: 8px;
|
|
83
|
+
transition: all 0.3s ease;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.tree-icon {
|
|
87
|
+
font-size: 14px;
|
|
88
|
+
color: #0b4794;
|
|
89
|
+
font-weight: bold;
|
|
90
|
+
width: 20px;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.tree-title {
|
|
94
|
+
font-weight: 500;
|
|
95
|
+
color: #4D4D4D;
|
|
96
|
+
font-size: 16px;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.tree-content {
|
|
100
|
+
max-height: 0;
|
|
101
|
+
overflow: hidden;
|
|
102
|
+
transition: max-height 0.3s ease-out;
|
|
103
|
+
background-color: white;
|
|
104
|
+
margin-top: 5px;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.tree-content.expanded {
|
|
108
|
+
max-height: 2000px;
|
|
109
|
+
padding: 15px;
|
|
110
|
+
}
|
|
111
|
+
.tree-item.expanded-item {
|
|
112
|
+
background-color: #F6F8FA;
|
|
113
|
+
border-left: 4px solid #002F6B;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.tree-item.expanded-item .tree-header,
|
|
117
|
+
.tree-item.expanded-item .tree-header .tree-title {
|
|
118
|
+
background-color: #F6F8FA;
|
|
119
|
+
color: #002F6B;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.tree-item.expanded-item .tree-content.expanded {
|
|
123
|
+
background-color: #F6F8FA;
|
|
124
|
+
}
|
|
125
|
+
.tree-content p {
|
|
126
|
+
margin: 0;
|
|
127
|
+
line-height: 1.6;
|
|
128
|
+
color: #4D4D4D;
|
|
129
|
+
margin-bottom: 20px;
|
|
130
|
+
font-size: 16px;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.tree-content ul {
|
|
134
|
+
padding-left: 20px;
|
|
135
|
+
margin-top: 10px;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.tree-content li {
|
|
139
|
+
list-style-type: disc;
|
|
140
|
+
margin-bottom: 10px;
|
|
141
|
+
color: #4D4D4D;
|
|
142
|
+
font-size: 16px;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
@media (max-width: 768px) {
|
|
146
|
+
|
|
147
|
+
.tree-title {
|
|
148
|
+
font-size: 14px;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.tree-content p {
|
|
152
|
+
font-size: 14px;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.tree-content li{
|
|
156
|
+
font-size: 14px;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
|
|
2
|
+
<div class="subtitle">
|
|
3
|
+
<p>Acuerdo de seguridad, privacidad y condiciones de uso</p>
|
|
4
|
+
</div>
|
|
5
|
+
<div class="politicas-container">
|
|
6
|
+
|
|
7
|
+
<div class="description">
|
|
8
|
+
<p>La Universidad Técnica Nacional (UTN), institución pública de educación superior dedicada a la docencia, la
|
|
9
|
+
investigación y la acción social, pone a disposición de la comunidad universitaria la plataforma digital SIGU
|
|
10
|
+
(Sistema Integrado de Gestión Universitaria).
|
|
11
|
+
</p>
|
|
12
|
+
<p>El presente acuerdo establece los términos y condiciones de seguridad, privacidad y acceso aplicables a todos los
|
|
13
|
+
usuarios del sistema.</p>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<!-- Árbol-->
|
|
17
|
+
<div class="tree-container">
|
|
18
|
+
|
|
19
|
+
<!-- Item 1 -->
|
|
20
|
+
<div class="tree-item" [class.expanded-item]="expandedItems['item1']">
|
|
21
|
+
<div class="tree-header" (click)="toggleItem('item1')">
|
|
22
|
+
<span class="tree-icon">{{ expandedItems['item1'] ? '▼' : '▶' }}</span>
|
|
23
|
+
<span class="tree-title">1. Usuario</span>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="tree-content" [class.expanded]="expandedItems['item1']">
|
|
26
|
+
<p>1.1. Este Acuerdo regula la relación entre la Universidad Técnica Nacional y los usuarios que hacen uso de la
|
|
27
|
+
plataforma SIGU, incluyendo estudiantes, docentes, personal administrativo, aspirantes, clientes y público en
|
|
28
|
+
general que utilicen los servicios disponibles dentro del sistema.</p>
|
|
29
|
+
|
|
30
|
+
<p>1.2. El acceso a los módulos del SIGU está estrictamente limitado según el perfil del usuario autenticado,
|
|
31
|
+
garantizando que visualice y utilice únicamente la información y servicios correspondientes a su gestión o
|
|
32
|
+
autorización dentro de la plataforma. </p>
|
|
33
|
+
|
|
34
|
+
<p>1.3. Los usuarios deberán hacer un uso responsable, ético y seguro de la plataforma SIGU, conforme al
|
|
35
|
+
Reglamento de Seguridad de la Información de TI de la UTN y demás políticas aplicables en materia de seguridad
|
|
36
|
+
informática y uso de recursos tecnológicos.
|
|
37
|
+
</p>
|
|
38
|
+
|
|
39
|
+
<p>1.4. Asimismo, cada usuario será responsable de resguardar la confidencialidad de sus credenciales de acceso
|
|
40
|
+
y de utilizar la información disponible en el sistema únicamente para fines académicos y administrativos
|
|
41
|
+
autorizados. </p>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="line"></div>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<!-- Item 2-->
|
|
47
|
+
<div class="tree-item" [class.expanded-item]="expandedItems['item2']">
|
|
48
|
+
<div class="tree-header" (click)="toggleItem('item2')">
|
|
49
|
+
<span class="tree-icon">{{ expandedItems['item2'] ? '▼' : '▶' }}</span>
|
|
50
|
+
<span class="tree-title">2. Protección de datos</span>
|
|
51
|
+
</div>
|
|
52
|
+
<div class="tree-content" [class.expanded]="expandedItems['item2']">
|
|
53
|
+
<p>2.1 El cumplimiento de la ley de protección de la persona frente al tratamiento de sus datos personales (N °
|
|
54
|
+
8968) y su reglamento, la UTN declara que:</p>
|
|
55
|
+
<ul>
|
|
56
|
+
<li>La información recolectada a través de formularios en el SIGU (admisión, solicitud de becas, planes de
|
|
57
|
+
estudio, etc.) será utilizada exclusivamente para la finalidad establecida en cada formulario y para la
|
|
58
|
+
gestión interna universitaria.</li>
|
|
59
|
+
<li>Al completar los formularios, el usuario otorga su consentimiento para que los datos sean suministrados y
|
|
60
|
+
procesados por la UTN.</li>
|
|
61
|
+
<li>En ningún caso la información personal será distribuida, vendida o cedida a terceros.</li>
|
|
62
|
+
</ul>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="line"></div>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<!-- Item 3-->
|
|
68
|
+
<div class="tree-item" [class.expanded-item]="expandedItems['item3']">
|
|
69
|
+
<div class="tree-header" (click)="toggleItem('item3')">
|
|
70
|
+
<span class="tree-icon">{{ expandedItems['item3'] ? '▼' : '▶' }}</span>
|
|
71
|
+
<span class="tree-title">3. Privacidad</span>
|
|
72
|
+
</div>
|
|
73
|
+
<div class="tree-content" [class.expanded]="expandedItems['item3']">
|
|
74
|
+
<p>3.1 Las solicitudes de información sensible a través del sitio web son completamente privadas y solo visibles
|
|
75
|
+
para el usuario titular y el personal administrativo autorizado para la gestión de trámites. Cualquier otro
|
|
76
|
+
dato que el usuario proporcione será utilizado en apego a lo establecido por la legislación costarricense en
|
|
77
|
+
materia de protección de datos personales, y no será divulgado sin el consentimiento del titular.
|
|
78
|
+
</p>
|
|
79
|
+
<p>3.2 Asimismo, el sitio web SIGU utiliza cookies para almacenar información de sesión y preferencias de
|
|
80
|
+
accesibilidad del usuario. Estos datos se utilizan únicamente con el fin de mejorar la experiencia del usuario
|
|
81
|
+
mientras navega por el sitio web institucional.
|
|
82
|
+
</p>
|
|
83
|
+
<p>3.3 El contenido almacenado en las cookies no almacena datos sensibles y no se distribuyen a terceros.
|
|
84
|
+
</p>
|
|
85
|
+
</div>
|
|
86
|
+
<div class="line"></div>
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
<!-- Item 4-->
|
|
90
|
+
<div class="tree-item" [class.expanded-item]="expandedItems['item4']">
|
|
91
|
+
<div class="tree-header" (click)="toggleItem('item4')">
|
|
92
|
+
<span class="tree-icon">{{ expandedItems['item4'] ? '▼' : '▶' }}</span>
|
|
93
|
+
<span class="tree-title">4. Accesibilidad y modificaciones</span>
|
|
94
|
+
</div>
|
|
95
|
+
<div class="tree-content" [class.expanded]="expandedItems['item4']">
|
|
96
|
+
<p>4.1 La UTN se reserva el derecho de actualizar y mejorar la plataforma SIGU, su estructura, funcionalidades,
|
|
97
|
+
contenidos y el presente Acuerdo de Seguridad, cuando lo considere necesario para fortalecer la seguridad, la
|
|
98
|
+
accesibilidad y el correcto funcionamiento del sistema. Las modificaciones entrarán en vigencia a partir de su
|
|
99
|
+
publicación dentro de la plataforma, sin necesidad de previo aviso individual, aunque se recomienda al usuario
|
|
100
|
+
revisar la última actualización.</p>
|
|
101
|
+
<p>4.2 La dirección de gestión de tecnologías de información de la UTN trabaja para garantizar la accesibilidad
|
|
102
|
+
universal del SIGU, como:
|
|
103
|
+
</p>
|
|
104
|
+
<ul>
|
|
105
|
+
<li>Se utilizan herramientas automáticas y pruebas de intervención humana para evaluar el desempeño en
|
|
106
|
+
términos de accesibilidad visual y de navegación.</li>
|
|
107
|
+
<li>Durante las actualizaciones o pruebas de funcionalidades, los datos personales de los usuarios no serán
|
|
108
|
+
utilizados en entornos de prueba. Se utilizan datos ficticios para salvaguardar la privacidad.
|
|
109
|
+
</li>
|
|
110
|
+
</ul>
|
|
111
|
+
<p>4.3 En caso de que los usuarios presenten alguna dificultad de accesibilidad al sitio web y requieran
|
|
112
|
+
asistencia, pueden contactarse con el Departamento de Soporte Técnico de la UTN, por medio del correo
|
|
113
|
+
electrónico soporte@utn.ac.cr</p>
|
|
114
|
+
</div>
|
|
115
|
+
<div class="line"></div>
|
|
116
|
+
</div>
|
|
117
|
+
|
|
118
|
+
</div>
|
|
119
|
+
|
|
120
|
+
</div>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Component, OnInit } from '@angular/core';
|
|
2
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
3
|
+
import { DatosGlobalesService } from '../../../datos-globales.service';
|
|
4
|
+
import { HttpClient } from '@angular/common/http';
|
|
5
|
+
import { takeUntil } from 'rxjs/operators';
|
|
6
|
+
import { Subject } from 'rxjs';
|
|
7
|
+
@Component({
|
|
8
|
+
selector: 'app-politicas',
|
|
9
|
+
standalone: true,
|
|
10
|
+
imports: [MatIconModule],
|
|
11
|
+
templateUrl: './politicas.component.html',
|
|
12
|
+
styleUrl: './politicas.component.css'
|
|
13
|
+
})
|
|
14
|
+
export class PoliticasComponent implements OnInit {
|
|
15
|
+
|
|
16
|
+
private _destroy$ = new Subject<void>();
|
|
17
|
+
constructor(private http: HttpClient, private datosGlobalesService: DatosGlobalesService) { }
|
|
18
|
+
ngOnInit(): void {
|
|
19
|
+
this.http.get(`${this.datosGlobalesService.ObtenerURL()}misc/VistaDePoliticas`).pipe(takeUntil(this._destroy$)).subscribe({ error: () => { } });
|
|
20
|
+
}
|
|
21
|
+
// items expandidos
|
|
22
|
+
expandedItems: { [key: string]: boolean } = {
|
|
23
|
+
item1: false,
|
|
24
|
+
item2: false,
|
|
25
|
+
item3: false,
|
|
26
|
+
item4: false,
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
toggleItem(itemId: string) {
|
|
30
|
+
this.expandedItems[itemId] = !this.expandedItems[itemId];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
.politicas-container {
|
|
2
|
+
max-width: 1000px;
|
|
3
|
+
padding-bottom: 20px;
|
|
4
|
+
font-family: 'Roboto', sans-serif;
|
|
5
|
+
background-color: white;
|
|
6
|
+
text-align: left;
|
|
7
|
+
margin: 0 auto;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.subtitle {
|
|
11
|
+
background-color: #0b4794;
|
|
12
|
+
font-size: 25px;
|
|
13
|
+
color: white;
|
|
14
|
+
padding: 18px;
|
|
15
|
+
margin: 20px 0;
|
|
16
|
+
text-align: center;
|
|
17
|
+
}
|
|
18
|
+
.subtitle p {
|
|
19
|
+
margin: 5px 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@media (max-width: 768px) {
|
|
24
|
+
.description {
|
|
25
|
+
padding-left: 20px;
|
|
26
|
+
padding-right: 20px;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.description p {
|
|
30
|
+
font-size: 14px;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@media (min-width: 1400px) {
|
|
35
|
+
.description {
|
|
36
|
+
padding-left: 40px;
|
|
37
|
+
padding-right: 40px;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.tree-container {
|
|
42
|
+
width: 100%;
|
|
43
|
+
padding-left: 30px;
|
|
44
|
+
padding-right: 30px;
|
|
45
|
+
margin-top: 30px;
|
|
46
|
+
box-sizing: border-box;
|
|
47
|
+
max-height: none;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Estilos árboles */
|
|
51
|
+
.tree-item {
|
|
52
|
+
margin-bottom: 10px;
|
|
53
|
+
padding-left: 15px;
|
|
54
|
+
transition: background-color 0.3s ease;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.line {
|
|
58
|
+
height: 3px;
|
|
59
|
+
border-bottom: 1px solid #C4C4C4;
|
|
60
|
+
}
|
|
61
|
+
.tree-header {
|
|
62
|
+
display: flex;
|
|
63
|
+
align-items: center;
|
|
64
|
+
gap: 10px;
|
|
65
|
+
cursor: pointer;
|
|
66
|
+
padding: 12px;
|
|
67
|
+
background-color: white;
|
|
68
|
+
border-radius: 8px;
|
|
69
|
+
transition: all 0.3s ease;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.tree-icon {
|
|
73
|
+
font-size: 14px;
|
|
74
|
+
color: #0b4794;
|
|
75
|
+
font-weight: bold;
|
|
76
|
+
width: 20px;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.tree-title {
|
|
80
|
+
font-weight: 500;
|
|
81
|
+
color: #4D4D4D;
|
|
82
|
+
font-size: 16px;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.tree-content {
|
|
86
|
+
max-height: 0;
|
|
87
|
+
overflow: hidden;
|
|
88
|
+
transition: max-height 0.3s ease-out;
|
|
89
|
+
background-color: white;
|
|
90
|
+
margin-top: 5px;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.tree-content.expanded {
|
|
94
|
+
max-height: 2000px;
|
|
95
|
+
padding: 15px;
|
|
96
|
+
}
|
|
97
|
+
.tree-item.expanded-item {
|
|
98
|
+
background-color: #F6F8FA;
|
|
99
|
+
border-left: 4px solid #002F6B;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.tree-item.expanded-item .tree-header,
|
|
103
|
+
.tree-item.expanded-item .tree-header .tree-title {
|
|
104
|
+
background-color: #F6F8FA;
|
|
105
|
+
color: #002F6B;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.tree-item.expanded-item .tree-content.expanded {
|
|
109
|
+
background-color: #F6F8FA;
|
|
110
|
+
}
|
|
111
|
+
.tree-content p {
|
|
112
|
+
margin: 0;
|
|
113
|
+
line-height: 1.6;
|
|
114
|
+
color: #4D4D4D;
|
|
115
|
+
margin-bottom: 20px;
|
|
116
|
+
font-size: 16px;
|
|
117
|
+
}
|
|
118
|
+
.conozcanos-image {
|
|
119
|
+
flex: 1;
|
|
120
|
+
display: flex;
|
|
121
|
+
justify-content: center;
|
|
122
|
+
align-items: center;
|
|
123
|
+
margin-bottom: 20px;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.conozcanos-image img {
|
|
127
|
+
width: 100%;
|
|
128
|
+
max-width: 290px;
|
|
129
|
+
height: auto;
|
|
130
|
+
object-fit: cover;
|
|
131
|
+
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
|
132
|
+
}
|
|
133
|
+
.preguntados-image {
|
|
134
|
+
flex: 1;
|
|
135
|
+
display: flex;
|
|
136
|
+
justify-content: center;
|
|
137
|
+
align-items: center;
|
|
138
|
+
margin-bottom: 20px;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.preguntados-image img {
|
|
142
|
+
width: 100%;
|
|
143
|
+
max-width: 420px;
|
|
144
|
+
height: auto;
|
|
145
|
+
object-fit: cover;
|
|
146
|
+
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@media (max-width: 768px) {
|
|
150
|
+
|
|
151
|
+
.tree-title {
|
|
152
|
+
font-size: 14px;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.tree-content p {
|
|
156
|
+
font-size: 14px;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.tree-content li{
|
|
160
|
+
font-size: 14px;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<div class="subtitle">
|
|
2
|
+
<p>Preguntas frecuentes</p>
|
|
3
|
+
</div>
|
|
4
|
+
<div class="politicas-container">
|
|
5
|
+
|
|
6
|
+
<!-- Árbol-->
|
|
7
|
+
<div class="tree-container">
|
|
8
|
+
|
|
9
|
+
<!-- Item 1 -->
|
|
10
|
+
<div class="tree-item" [class.expanded-item]="expandedItems['item1']">
|
|
11
|
+
<div class="tree-header" (click)="toggleItem('item1')">
|
|
12
|
+
<span class="tree-icon">{{ expandedItems['item1'] ? '▼' : '▶' }}</span>
|
|
13
|
+
<span class="tree-title">1. ¿Cómo recuperar la clave acceso en SIGU?</span>
|
|
14
|
+
</div>
|
|
15
|
+
<div class="tree-content" [class.expanded]="expandedItems['item1']">
|
|
16
|
+
<p><strong>Para restablecer la contraseña de acceso, siga el siguiente procedimiento:</strong></p>
|
|
17
|
+
|
|
18
|
+
<p>1.1 Ingrese al portal de inicio de sesión de SIGU y digite su número de identificación. </p>
|
|
19
|
+
|
|
20
|
+
<p>1.2 Seleccione la opción <strong>¿Olvidó su clave de acceso?</strong>.</p>
|
|
21
|
+
|
|
22
|
+
<div class="conozcanos-image">
|
|
23
|
+
<img src="preguntasF-1.png" alt="Equipo SIGU">
|
|
24
|
+
</div>
|
|
25
|
+
<p>El sistema mostrará un mensaje de confirmación indicando: <strong>Por favor revise su correo electrónico, se
|
|
26
|
+
han enviado las instrucciones para continuar con el cambio de clave</strong>”. Haga clic en
|
|
27
|
+
<strong>continuar</strong>.
|
|
28
|
+
</p>
|
|
29
|
+
<p>1.4 Acceda a la bandeja de entrada del correo electrónico registrado en su cuenta. Allí encontrará un mensaje
|
|
30
|
+
automático con una clave nueva.</p>
|
|
31
|
+
<p>1.5 Regrese a la página de inicio de sesión de SIGU e ingrese su número de identificación junto con la clave
|
|
32
|
+
nueva proporcionada.</p>
|
|
33
|
+
<p>1.6 El sistema solicitará una verificación de identidad. Se enviará un código de verificación a su correo
|
|
34
|
+
electrónico registrado.</p>
|
|
35
|
+
<p>1.7 Copie el código recibido, péguelo en el campo indicado y haga clic en <strong>siguiente</strong>.</p>
|
|
36
|
+
<div class="conozcanos-image">
|
|
37
|
+
<img src="preguntasF-2.png" alt="Equipo SIGU">
|
|
38
|
+
</div>
|
|
39
|
+
<p>1.8 Una vez validado el código, recibirá el mensaje <strong>verificación exitosa</strong> y será redirigido
|
|
40
|
+
automáticamente al panel principal de su cuenta.</p>
|
|
41
|
+
<p><strong>Nota:</strong> Se recomienda cambiar la contraseña temporal por una nueva una vez dentro del sistema.
|
|
42
|
+
</p>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="line"></div>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<!-- Item 2-->
|
|
48
|
+
<div class="tree-item" [class.expanded-item]="expandedItems['item2']">
|
|
49
|
+
<div class="tree-header" (click)="toggleItem('item2')">
|
|
50
|
+
<span class="tree-icon">{{ expandedItems['item2'] ? '▼' : '▶' }}</span>
|
|
51
|
+
<span class="tree-title">2. ¿Cómo cambiar mi clave en SIGU?</span>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="tree-content" [class.expanded]="expandedItems['item2']">
|
|
54
|
+
<p><strong>Para cambiar su clave, realice los siguientes pasos:</strong></p>
|
|
55
|
+
<P>2.1 Inicie sesión en SIGU con sus credenciales actuales.</P>
|
|
56
|
+
<p>2.2 En el panel principal, diríjase al menú superior y ubique el ícono de usuario (representado por silueta
|
|
57
|
+
de persona) en el extremo derecho.</p>
|
|
58
|
+
<div class="preguntados-image">
|
|
59
|
+
<img src="preguntasF-3.png" alt="Equipo SIGU">
|
|
60
|
+
</div>
|
|
61
|
+
<p>2.3 Haga clic en el ícono y seleccione su cuenta (el nombre de usuario asociado).</p>
|
|
62
|
+
<p>2.4 Se abrirá una nueva ventana. Dentro de este, seleccione la pestaña o tarjeta denominada <strong>cambio
|
|
63
|
+
de contraseña</strong>.</p>
|
|
64
|
+
<p>2.5 El sistema mostrará un panel con las instrucciones técnicas. Ingrese la nueva contraseña en el campo
|
|
65
|
+
correspondiente respetando los requisitos de seguridad (longitud, caracteres especiales, etc.).</p>
|
|
66
|
+
<div class="conozcanos-image">
|
|
67
|
+
<img src="preguntasF-4.png" alt="Equipo SIGU">
|
|
68
|
+
</div>
|
|
69
|
+
<p>2.6 Confirme la nueva contraseña y haga clic en <strong>cambiar</strong>.</p>
|
|
70
|
+
<p><strong>La contraseña quedará actualizada de forma inmediata para futuros inicios de sesión.</strong></p>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="line"></div>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<!-- Item 3-->
|
|
76
|
+
<div class="tree-item" [class.expanded-item]="expandedItems['item3']">
|
|
77
|
+
<div class="tree-header" (click)="toggleItem('item3')">
|
|
78
|
+
<span class="tree-icon">{{ expandedItems['item3'] ? '▼' : '▶' }}</span>
|
|
79
|
+
<span class="tree-title">3. ¿Cómo inicio sesión con google en SIGU?</span>
|
|
80
|
+
</div>
|
|
81
|
+
<div class="tree-content" [class.expanded]="expandedItems['item3']">
|
|
82
|
+
<p>3.1 Para acceder mediante <strong>login con google</strong>, el usuario debe tener una cuenta registrada
|
|
83
|
+
previamente como
|
|
84
|
+
oferente o personal administrativo bajo el dominio <strong>@utn.ac.cr</strong>. Al seleccionar la cuenta
|
|
85
|
+
institucional
|
|
86
|
+
asociada, el sistema lo redirigirá automáticamente al panel de su perfil.</p>
|
|
87
|
+
|
|
88
|
+
<div class="conozcanos-image">
|
|
89
|
+
<img src="preguntasF-5.png" alt="Equipo SIGU">
|
|
90
|
+
</div>
|
|
91
|
+
</div>
|
|
92
|
+
<div class="line"></div>
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
</div>
|