From 58ae0b56d93b5d55eae1cedd29b7261e7bfbe7ba Mon Sep 17 00:00:00 2001 From: davidruiz-gnoss Date: Fri, 6 Oct 2023 15:11:34 +0200 Subject: [PATCH] Security Improvement --- Dockerfile-views | 2 +- .../HashGenerator.php | 16 + .../AdministrarCategoriasController.cs | 2 +- .../AdministrarDatosExtraController.cs | 558 ++++ .../AdministrarDisenioController.cs | 12 + .../AdministrarVistasController.cs | 4 +- .../CMSAdminDisenioController.cs | 9 + .../AdministrarNewsletterController.cs | 2 +- ...dministrarSolicitudesUsuariosController.cs | 4 +- .../Controllers/BusquedaController.cs | 2 - .../ComAdminElemSemanticosController.cs | 1 + .../ControllerBase/ControllerBaseWeb.cs | 109 +- .../ControllerBase/ControllerCabeceraBase.cs | 2 +- .../EditarBioComunidadController.cs | 2 +- .../EditarPerfilComunidadController.cs | 63 +- .../Controllers/FichaPerfilController.cs | 72 +- .../Controllers/FichaRecursoController.cs | 2 +- .../Controllers/RegistroController.cs | 22 +- .../Controllers/RegistroDatosController.cs | 16 +- .../Services/RouteValueTransformer.cs | 5 +- .../_home-community-section.cshtml | 8 + .../AdministrarDatosExtra/Index.cshtml | 186 ++ .../AdministrarDatosExtra/_FichaOpcion.cshtml | 72 + .../AdministrarDatosExtra/_PintarDato.cshtml | 80 + .../_PintarDatoVirtuoso.cshtml | 79 + .../_modal-views/_delete-extra-data.cshtml | 45 + .../_modal-views/_edit-extra-data.cshtml | 120 + .../_modal-views/_new-extra-data.cshtml | 140 + .../AdministrarDisenio/Index.cshtml | 2 +- ...ntity-property-addPrimaryControlInt.cshtml | 10 +- .../_FichaExportacion.cshtml | 3 +- .../_FichaExportacionPropiedad.cshtml | 6 +- .../_partial-views/_translate-item.cshtml | 4 +- .../_PermisosRecursos.cshtml | 61 +- .../_Propiedad_ListaIDs.cshtml | 22 +- .../_modal-views/_index.cshtml | 11 +- .../CMSAdminDisenio/Index.cshtml | 2 +- .../Views/BandejaSuscripciones/Manage.cshtml | 9 +- .../Busqueda/Index_AdministrarMiembros.cshtml | 11 +- .../Views/CambiarPassword/Index.cshtml | 6 +- .../_tesauro-create-element.cshtml | 14 +- .../Views/EditarPerfilComunidad/Index.cshtml | 2 +- .../_PerfilPersonal.cshtml | 6 +- .../_RedesSociales.cshtml | 14 +- .../Views/EditarRecurso/_SubirRecurso.cshtml | 19 +- Gnoss.Web.Open/Views/FichaPerfil/Index.cshtml | 487 +-- .../Views/FichaPerfil/_SummaryBio.cshtml | 391 ++- .../Views/FichaRecurso/_FichaAcciones.cshtml | 30 +- .../_send-newsletter-group.cshtml | 135 +- .../FichaRecurso/_modal-views/_send.cshtml | 2 +- .../Views/Registro/_FormularioLogin.cshtml | 43 +- .../Views/Registro/_FormularioRegistro.cshtml | 54 +- .../Head/_FicherosJavascript_Admin.cshtml | 9 +- .../Layout/_Layout_CMS_Builder_Admin.cshtml | 15 +- .../_modal-views/_accept-cookies.cshtml | 10 +- ..._layout-left-navigation-panel_Admin.cshtml | 130 +- .../Views/Shared/SemCms/_AddControlInt.cshtml | 3 +- .../_PropiedadOntoSelectorEntidad.cshtml | 9 +- .../_menu-lateral-metabuscador.cshtml | 2 +- .../_partial-views/_add-resource.cshtml | 39 +- Gnoss.Web/wwwroot/ckeditor_admin/config.js | 13 +- Gnoss.Web/wwwroot/js/unificado.js | 310 +- .../wwwroot/jsUnificar/MVC.EditarRecurso.js | 2 +- .../wwwroot/jsUnificar/MVC.EditarSEMCMS.js | 50 +- Gnoss.Web/wwwroot/lang/en/text.js | 6 +- .../wwwroot/responsive/theme/community.css | 1 + Gnoss.Web/wwwroot/responsive/theme/helpers.js | 9 +- .../wwwroot/responsive/theme/logic/WS.js | 78 + .../responsive/theme/logic/busquedas.js | 2776 +++++++++++++++++ .../responsive/theme/logic/configuracion.js | 893 +++++- .../responsive/theme/logic/estructura.js | 181 +- .../theme/logic/grafo_conocimiento.js | 5 +- .../wwwroot/responsive/theme/logic/jMsAjax.js | 114 + Gnoss.Web/wwwroot/responsive/theme/theme.css | 50 +- Gnoss.Web/wwwroot/responsive/theme/theme.js | 4 +- 75 files changed, 6827 insertions(+), 861 deletions(-) create mode 100644 Gnoss.Matomo.PhpHashGenerator/HashGenerator.php create mode 100644 Gnoss.Web.Open/Controllers/Administracion/AdministrarDatosExtraController.cs create mode 100644 Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/Index.cshtml create mode 100644 Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_FichaOpcion.cshtml create mode 100644 Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_PintarDato.cshtml create mode 100644 Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_PintarDatoVirtuoso.cshtml create mode 100644 Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_modal-views/_delete-extra-data.cshtml create mode 100644 Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_modal-views/_edit-extra-data.cshtml create mode 100644 Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_modal-views/_new-extra-data.cshtml create mode 100644 Gnoss.Web/wwwroot/responsive/theme/logic/WS.js create mode 100644 Gnoss.Web/wwwroot/responsive/theme/logic/busquedas.js create mode 100644 Gnoss.Web/wwwroot/responsive/theme/logic/jMsAjax.js diff --git a/Dockerfile-views b/Dockerfile-views index f54f201..345cd80 100644 --- a/Dockerfile-views +++ b/Dockerfile-views @@ -1,4 +1,4 @@ -FROM gnoss/gnoss.web.opencore:latest +FROM docker.gnoss.com/web:latest COPY CargadorFacetas/*.cshtml Views/CargadorFacetas/ diff --git a/Gnoss.Matomo.PhpHashGenerator/HashGenerator.php b/Gnoss.Matomo.PhpHashGenerator/HashGenerator.php new file mode 100644 index 0000000..8c51d4b --- /dev/null +++ b/Gnoss.Matomo.PhpHashGenerator/HashGenerator.php @@ -0,0 +1,16 @@ + \ No newline at end of file diff --git a/Gnoss.Web.Open/Controllers/Administracion/AdministrarCategoriasController.cs b/Gnoss.Web.Open/Controllers/Administracion/AdministrarCategoriasController.cs index 813804a..08d2f68 100644 --- a/Gnoss.Web.Open/Controllers/Administracion/AdministrarCategoriasController.cs +++ b/Gnoss.Web.Open/Controllers/Administracion/AdministrarCategoriasController.cs @@ -2152,7 +2152,7 @@ private List ObtenerListaCategorias(string pIdiomaTesauro = null) foreach (CategoriaTesauro catTes in GestorTesauro.ListaCategoriasTesauroPrimerNivel.Values) { - CategoryModel categoriaTesauro = CargarCategoria(catTes); + CategoryModel categoriaTesauro = CargarCategoria(catTes, pIdiomaTesauro); if (!string.IsNullOrEmpty(pIdiomaTesauro)) { categoriaTesauro.Lang = pIdiomaTesauro; diff --git a/Gnoss.Web.Open/Controllers/Administracion/AdministrarDatosExtraController.cs b/Gnoss.Web.Open/Controllers/Administracion/AdministrarDatosExtraController.cs new file mode 100644 index 0000000..80f0a55 --- /dev/null +++ b/Gnoss.Web.Open/Controllers/Administracion/AdministrarDatosExtraController.cs @@ -0,0 +1,558 @@ +using Es.Riam.AbstractsOpen; +using Es.Riam.Gnoss.AD.EncapsuladoDatos; +using Es.Riam.Gnoss.AD.EntityModel; +using Es.Riam.Gnoss.AD.EntityModel.Models.ParametroGeneralDS; +using Es.Riam.Gnoss.AD.EntityModel.Models.VistaVirtualDS; +using Es.Riam.Gnoss.AD.EntityModelBASE; +using Es.Riam.Gnoss.AD.ServiciosGenerales; +using Es.Riam.Gnoss.AD.Virtuoso; +using Es.Riam.Gnoss.CL; +using Es.Riam.Gnoss.CL.ParametrosProyecto; +using Es.Riam.Gnoss.Elementos.ParametroGeneralDSEspacio; +using Es.Riam.Gnoss.Logica.ParametrosProyecto; +using Es.Riam.Gnoss.Util.Configuracion; +using Es.Riam.Gnoss.Util.General; +using Es.Riam.Gnoss.Web.Controles.Administracion; +using Es.Riam.Gnoss.Web.Controles.ParametroGeneralDSName; +using Es.Riam.Gnoss.Web.MVC.Filters; +using Es.Riam.Gnoss.Web.MVC.Models.AdministrarTraducciones; +using Es.Riam.Gnoss.Web.MVC.Models.ViewModels; +using Es.Riam.Interfaces.InterfacesOpen; +using Es.Riam.InterfacesOpen; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Infrastructure; +using Microsoft.AspNetCore.Mvc.ViewEngines; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Text; +using Es.Riam.Gnoss.Web.MVC.Models.Administracion; +using Es.Riam.Gnoss.Web.MVC.Controllers; +using Es.Riam.Gnoss.Web.MVC.Controllers.Administracion; +using Es.Riam.Gnoss.Logica.ServiciosGenerales; +using Es.Riam.Gnoss.AD.EntityModel.Models.ProyectoDS; +using System.IO.Pipelines; + +namespace Gnoss.Web.Open.Controllers.Administracion +{ + public class AdministrarDatosExtraController : ControllerBaseWeb + { + public AdministrarDatosExtraController(LoggingService loggingService, ConfigService configService, EntityContext entityContext, RedisCacheWrapper redisCacheWrapper, GnossCache gnossCache, VirtuosoAD virtuosoAD, IHttpContextAccessor httpContextAccessor, ICompositeViewEngine viewEngine, EntityContextBASE entityContextBASE, IHostingEnvironment env, IActionContextAccessor actionContextAccessor, IUtilServicioIntegracionContinua utilServicioIntegracionContinua, IServicesUtilVirtuosoAndReplication servicesUtilVirtuosoAndReplication, IOAuth oAuth) + : base(loggingService, configService, entityContext, redisCacheWrapper, gnossCache, virtuosoAD, httpContextAccessor, viewEngine, entityContextBASE, env, actionContextAccessor, utilServicioIntegracionContinua, servicesUtilVirtuosoAndReplication, oAuth) + { + } + + private AdministrarDatosExtraViewModel mPaginaModel = null; + + private DataWrapperProyecto mDatosExtraProyectoDataWrapperProyecto = null; + + public IActionResult Index() + { + EliminarPersonalizacionVistas(); + CargarPermisosAdministracionComunidadEnViewBag(); + + // Añadir clase para el body del Layout + ViewBag.BodyClassPestanya = "configuracion edicionTraducciones edicion no-max-width-container"; + ViewBag.ActiveSection = AdministracionSeccionesDevTools.SeccionesDevTools.Configuracion; + ViewBag.ActiveSubSection = AdministracionSeccionesDevTools.SubSeccionesDevTools.Configuracion_DatosExtra; + // Establecer el título para el header de DevTools + ViewBag.HeaderParentTitle = UtilIdiomas.GetText("DEVTOOLS", "CONFIGURACION"); + ViewBag.HeaderTitle = UtilIdiomas.GetText("DEVTOOLS", "ADMINISTRARDATOSEXTRA"); + + // Establecer en el ViewBag el idioma por defecto + ViewBag.IdiomaPorDefecto = IdiomaPorDefecto; + ViewBag.isInEcosistemaPlatform = EsAdministracionEcosistema ? "true" : "false"; + ViewBag.UrlActionSaveExtraData = ""; + + return View(PaginaModel); + } + + public IActionResult Guardar(string pNombre, string pTipo, string pOpciones, bool pObligatorio, int pOrden, string pPredicadoRDF) + { + string error = ComprobarErrores(pNombre, pTipo, pOpciones, EsAdministracionEcosistema); + + bool iniciado = false; + try + { + iniciado = HayIntegracionContinua; + } + catch (Exception ex) + { + GuardarLogError(ex, "Se ha comprobado que tiene la integración continua configurada y no puede acceder al API de Integración Continua."); + return GnossResultERROR("Contacte con el administrador del Proyecto, no es posible atender la petición."); + } + + if (string.IsNullOrEmpty(pPredicadoRDF)) + { + pPredicadoRDF = ""; + } + + if (!string.IsNullOrEmpty(error)) + { + return GnossResultERROR(error); + } + + try + { + TipoDatoExtra tipo; + bool tipoCorrecto = Enum.TryParse(pTipo, out tipo); + ControladorDatosExtra controladorDE = new ControladorDatosExtra(ProyectoSeleccionado, mLoggingService, mEntityContext, mConfigService, mRedisCacheWrapper, mVirtuosoAD, mEntityContextBASE, mGnossCache, mHttpContextAccessor, mServicesUtilVirtuosoAndReplication); + + //Tipo + if (string.IsNullOrEmpty(pTipo) || !tipoCorrecto) + { + return GnossResultERROR("El tipo del dato no es correcto"); + } + + Guid datoExtraID = Guid.NewGuid(); + + if (EsAdministracionEcosistema) + { + if (tipo.Equals(TipoDatoExtra.Opcion)) + { + string[] opciones = pOpciones.Split(','); + + controladorDE.GuardarNuevoDatoExtraEcosistema(datoExtraID, pNombre, pObligatorio, pOpciones, pOrden, pPredicadoRDF); + } + else + { + controladorDE.GuardarNuevoDatoExtraVirtuosoEcosistema(datoExtraID, pNombre, pObligatorio, pOrden, pPredicadoRDF); + } + } + else + { + if (tipo.Equals(TipoDatoExtra.Opcion)) + { + string[] opciones = pOpciones.Split(','); + + controladorDE.GuardarNuevoDatoExtraProyecto(ProyectoSeleccionado.Clave, ProyectoSeleccionado.FilaProyecto.OrganizacionID, datoExtraID, pNombre, pObligatorio, pOpciones, pOrden, pPredicadoRDF); + } + else + { + controladorDE.GuardarNuevoDatoExtraVirtuosoProyecto(ProyectoSeleccionado.Clave, ProyectoSeleccionado.FilaProyecto.OrganizacionID, datoExtraID, pNombre, pObligatorio, pOrden, pPredicadoRDF); + } + } + + controladorDE.GuardarCambios(); + + if (iniciado) + { + DatoExtraModel datoExtraModel = new DatoExtraModel(); + + datoExtraModel.DatoExtraID = datoExtraID; + datoExtraModel.OrganizacionID = ProyectoSeleccionado.FilaProyecto.OrganizacionID; + datoExtraModel.Opciones = ObtenerOpciones(datoExtraID, EsAdministracionEcosistema, tipo); + datoExtraModel.Orden = pOrden; + datoExtraModel.Deleted = false; + datoExtraModel.Obligatorio = pObligatorio; + datoExtraModel.Tipo = tipo; + datoExtraModel.PredicadoRDF = pPredicadoRDF; + datoExtraModel.Nombre = pNombre; + datoExtraModel.ProyectoID = ProyectoSeleccionado.Clave; + + HttpResponseMessage resultado = InformarCambioAdministracion("DatosExtra", JsonConvert.SerializeObject(datoExtraModel, Formatting.Indented)); + if (!resultado.StatusCode.Equals(HttpStatusCode.OK)) + { + throw new Exception("Contacte con el administrador del Proyecto, no es posible atender la petición."); + } + } + } + catch(Exception ex) + { + mLoggingService.GuardarLogError(ex.Message); + return GnossResultERROR("Ha habido un error al guardar los datos"); + } + + return GnossResultOK("El dato extra ha sido creado correctamente"); + } + + public IActionResult Editar(Guid pDatoExtraID, string pNombre, string pTipo, string pOpciones, bool pObligatorio, int pOrden, string pPredicadoRDF) + { + string error = ComprobarErrores(pNombre, pTipo, pOpciones, EsAdministracionEcosistema); + + bool iniciado = false; + try + { + iniciado = HayIntegracionContinua; + } + catch (Exception ex) + { + GuardarLogError(ex, "Se ha comprobado que tiene la integración continua configurada y no puede acceder al API de Integración Continua."); + return GnossResultERROR("Contacte con el administrador del Proyecto, no es posible atender la petición."); + } + + if (string.IsNullOrEmpty(pPredicadoRDF)) + { + pPredicadoRDF = ""; + } + + if (!string.IsNullOrEmpty(error)) + { + return GnossResultERROR(error); + } + + try + { + TipoDatoExtra tipo; + bool tipoCorrecto = Enum.TryParse(pTipo, out tipo); + ControladorDatosExtra controladorDE = new ControladorDatosExtra(ProyectoSeleccionado, mLoggingService, mEntityContext, mConfigService, mRedisCacheWrapper, mVirtuosoAD, mEntityContextBASE, mGnossCache, mHttpContextAccessor, mServicesUtilVirtuosoAndReplication); + + //Tipo + if (string.IsNullOrEmpty(pTipo) || !tipoCorrecto) + { + return GnossResultERROR("El tipo del dato no es correcto"); + } + // se cambia el tipo + DatoExtraModel datoExtra = PaginaModel.ListaDatosExtraProyecto.Where(x => x.DatoExtraID.Equals(pDatoExtraID)).FirstOrDefault(); + + if (datoExtra != null) + { + if (!datoExtra.Tipo.Equals(tipo)) + { + Eliminar(pDatoExtraID); + Guardar(pNombre, pTipo, pOpciones, pObligatorio, pOrden, pPredicadoRDF); + + return GnossResultOK("El dato extra ha sido modificado correctamente"); + } + } + else + { + DatoExtraVirtuosoModel datoExtraVirtuoso = PaginaModel.ListaDatosExtraVirtuoso.Where(x => x.DatoExtraID.Equals(pDatoExtraID)).FirstOrDefault(); + if (datoExtraVirtuoso != null) + { + if (!datoExtraVirtuoso.Tipo.Equals(tipo)) + { + Eliminar(pDatoExtraID); + Guardar(pNombre, pTipo, pOpciones, pObligatorio, pOrden, pPredicadoRDF); + + return GnossResultOK("El dato extra ha sido modificado correctamente"); + } + } + } + + if (EsAdministracionEcosistema) + { + if (tipo.Equals(TipoDatoExtra.Opcion)) + { + string[] opciones = pOpciones.Split(','); + + controladorDE.ModificarDatoExtraEcosistema(pDatoExtraID, pNombre, pObligatorio, pOpciones, pOrden, pPredicadoRDF); + } + else + { + controladorDE.ModificarDatoExtraVirtuosoEcosistema(pDatoExtraID, pNombre, pObligatorio, pOrden, pPredicadoRDF); + } + } + else + { + if (tipo.Equals(TipoDatoExtra.Opcion)) + { + string[] opciones = pOpciones.Split(','); + + controladorDE.ModificarDatoExtraProyecto(ProyectoSeleccionado.Clave, ProyectoSeleccionado.FilaProyecto.OrganizacionID, pDatoExtraID, pNombre, pObligatorio, pOpciones, pOrden, pPredicadoRDF); + } + else + { + controladorDE.ModificarDatoExtraVirtuosoProyecto(ProyectoSeleccionado.Clave, ProyectoSeleccionado.FilaProyecto.OrganizacionID, pDatoExtraID, pNombre, pObligatorio, pOrden, pPredicadoRDF); + } + } + + controladorDE.GuardarCambios(); + + if (iniciado) + { + DatoExtraModel datoExtraModel = new DatoExtraModel(); + + datoExtraModel.DatoExtraID = pDatoExtraID; + datoExtraModel.OrganizacionID = ProyectoSeleccionado.FilaProyecto.OrganizacionID; + datoExtraModel.Opciones = ObtenerOpciones(pDatoExtraID, EsAdministracionEcosistema, tipo); + datoExtraModel.Orden = pOrden; + datoExtraModel.PredicadoRDF = pPredicadoRDF; + datoExtraModel.Deleted = false; + datoExtraModel.Obligatorio = pObligatorio; + datoExtraModel.Tipo = tipo; + datoExtraModel.ProyectoID = ProyectoSeleccionado.Clave; + datoExtraModel.Nombre = pNombre; + + HttpResponseMessage resultado = InformarCambioAdministracion("DatosExtra", JsonConvert.SerializeObject(datoExtraModel, Formatting.Indented)); + if (!resultado.StatusCode.Equals(HttpStatusCode.OK)) + { + throw new Exception("Contacte con el administrador del Proyecto, no es posible atender la petición."); + } + } + } + catch (Exception ex) + { + mLoggingService.GuardarLogError(ex.Message); + return GnossResultERROR("Ha habido un error al guardar los datos"); + } + + return GnossResultOK("El dato extra ha sido modificado correctamente"); + } + + public IActionResult Eliminar(Guid pDatoExtraID) + { + bool iniciado = false; + try + { + iniciado = HayIntegracionContinua; + } + catch (Exception ex) + { + GuardarLogError(ex, "Se ha comprobado que tiene la integración continua configurada y no puede acceder al API de Integración Continua."); + return GnossResultERROR("Contacte con el administrador del Proyecto, no es posible atender la petición."); + } + + if (pDatoExtraID.Equals(Guid.Empty)) + { + return GnossResultERROR("Error al eliminar el dato extra, el ID no es correcto"); + } + try + { + ControladorDatosExtra controladorDE = new ControladorDatosExtra(ProyectoSeleccionado, mLoggingService, mEntityContext, mConfigService, mRedisCacheWrapper, mVirtuosoAD, mEntityContextBASE, mGnossCache, mHttpContextAccessor, mServicesUtilVirtuosoAndReplication); + + controladorDE.EliminarDatoExtra(pDatoExtraID, EsAdministracionEcosistema); + controladorDE.GuardarCambios(); + + if (iniciado) + { + DatoExtraModel datoExtraModel = new DatoExtraModel(); + + datoExtraModel.DatoExtraID = pDatoExtraID; + datoExtraModel.OrganizacionID = ProyectoSeleccionado.FilaProyecto.OrganizacionID; + datoExtraModel.PredicadoRDF = string.Empty; + datoExtraModel.Opciones = null; + datoExtraModel.Orden = 0; + datoExtraModel.Deleted = true; + datoExtraModel.Obligatorio = false; + datoExtraModel.Tipo = TipoDatoExtra.TextoLibre; + + HttpResponseMessage resultado = InformarCambioAdministracion("DatosExtra", JsonConvert.SerializeObject(datoExtraModel, Formatting.Indented)); + if (!resultado.StatusCode.Equals(HttpStatusCode.OK)) + { + throw new Exception("Contacte con el administrador del Proyecto, no es posible atender la petición."); + } + } + } + catch(Exception ex) + { + mLoggingService.GuardarLogError(ex.Message); + return GnossResultERROR("Error al eliminar el dato extra"); + } + + return GnossResultOK(); + } + + [TypeFilter(typeof(PermisosPaginasUsuariosAttribute), Arguments = new object[] { TipoPaginaAdministracion.Texto, "AdministracionVistasPermitido" })] + public IActionResult CargarModalEdicion(Guid pDatoID) + { + DatoExtraEditModel model = new DatoExtraEditModel(); + DatoExtraModel datoExtraOpcion = PaginaModel.ListaDatosExtraProyecto.Where(item => item.DatoExtraID.Equals(pDatoID)).FirstOrDefault(); + DatoExtraVirtuosoModel datoExtraLibre = null; + + if (datoExtraOpcion == null) + { + datoExtraLibre = PaginaModel.ListaDatosExtraVirtuoso.Where(item => item.DatoExtraID.Equals(pDatoID)).FirstOrDefault(); + + if (datoExtraLibre == null) + { + return GnossResultERROR(); + } + + model.Nombre = datoExtraLibre.Nombre; + model.Obligatorio = datoExtraLibre.Obligatorio; + model.DatoExtraID = pDatoID; + model.Opciones = new List(); + model.Tipo = datoExtraLibre.Tipo; + model.Orden = datoExtraLibre.Orden; + model.PredicadoRDF = datoExtraLibre.PredicadoRDF; + } + else + { + model.Nombre = datoExtraOpcion.Nombre; + model.Obligatorio = datoExtraOpcion.Obligatorio; + model.DatoExtraID = pDatoID; + model.Opciones = datoExtraOpcion.Opciones; + model.Tipo = datoExtraOpcion.Tipo; + model.Orden = datoExtraOpcion.Orden; + model.PredicadoRDF = datoExtraOpcion.PredicadoRDF; + } + + return GnossResultHtml("../AdministrarDatosExtra/_modal-views/_edit-extra-data", model); + } + + private List ObtenerOpciones(Guid pDatoExtraID, bool pEcosistema, TipoDatoExtra pTipo) + { + List listaOpciones = new List(); + + if (pTipo.Equals(TipoDatoExtra.Opcion)) + { + ControladorDatosExtra controladorDE = new ControladorDatosExtra(ProyectoSeleccionado, mLoggingService, mEntityContext, mConfigService, mRedisCacheWrapper, mVirtuosoAD, mEntityContextBASE, mGnossCache, mHttpContextAccessor, mServicesUtilVirtuosoAndReplication); + + listaOpciones = controladorDE.ObtenerOpciones(pDatoExtraID, pEcosistema); + } + + return listaOpciones; + } + private string ComprobarErrores(string pNombre, string pTipo, string pOpciones, bool pEcosistema) + { + TipoDatoExtra tipo; + bool tipoCorrecto = Enum.TryParse(pTipo, out tipo); + + //Tipo + if (string.IsNullOrEmpty(pTipo) || !tipoCorrecto) + { + return "El dato extra debe tener un tipo"; + } + + //Opciones + if (tipo.Equals(TipoDatoExtra.Opcion) && string.IsNullOrEmpty(pOpciones)) + { + return "El dato extra de tipo OPCION debe tener al menos una opción"; + } + + //Nombre + if (string.IsNullOrEmpty(pNombre)) + { + return "El dato extra debe tener un nombre"; + } + + return string.Empty; + } + + public AdministrarDatosExtraViewModel PaginaModel + { + get + { + if (mPaginaModel == null) + { + mPaginaModel = new AdministrarDatosExtraViewModel(); + mPaginaModel.ListaDatosExtraVirtuoso = new List(); + mPaginaModel.ListaDatosExtraProyecto = new List(); + + if (EsAdministracionEcosistema) + { + // DatoExtraEcosistema -> opciones + foreach (DatoExtraEcosistema datoExtraEcosistema in DatosExtraProyectoDataWrapperProyecto.ListaDatoExtraEcosistema) + { + DatoExtraModel datoExtraModel = new DatoExtraModel(); + + datoExtraModel.DatoExtraID = datoExtraEcosistema.DatoExtraID; + datoExtraModel.Obligatorio = datoExtraEcosistema.Obligatorio; + datoExtraModel.Nombre = datoExtraEcosistema.Titulo; + datoExtraModel.PredicadoRDF = datoExtraEcosistema.PredicadoRDF; + datoExtraModel.Orden = datoExtraEcosistema.Orden; + datoExtraModel.Tipo = TipoDatoExtra.Opcion; + datoExtraModel.Opciones = new List(); + + foreach (DatoExtraEcosistemaOpcion opcion in DatosExtraProyectoDataWrapperProyecto.ListaDatoExtraEcosistemaOpcion.Where(x => x.DatoExtraID.Equals(datoExtraModel.DatoExtraID)).ToList()) + { + DatoExtraOpcionModel opcionModel = new DatoExtraOpcionModel(); + + opcionModel.DatoExtraID = opcion.DatoExtraID; + opcionModel.OpcionID = opcion.OpcionID; + opcionModel.Orden = opcion.Orden; + opcionModel.Nombre = opcion.Opcion; + + datoExtraModel.Opciones.Add(opcionModel); + } + + mPaginaModel.ListaDatosExtraProyecto.Add(datoExtraModel); + } + + // DatoExtraEcosistemaVirtuoso -> texto libre + foreach (DatoExtraEcosistemaVirtuoso datoExtraEcosistemaVirtuoso in DatosExtraProyectoDataWrapperProyecto.ListaDatoExtraEcosistemaVirtuoso) + { + DatoExtraVirtuosoModel datoExtraModel = new DatoExtraVirtuosoModel(); + + datoExtraModel.DatoExtraID = datoExtraEcosistemaVirtuoso.DatoExtraID; + datoExtraModel.Obligatorio = datoExtraEcosistemaVirtuoso.Obligatorio; + datoExtraModel.Nombre = datoExtraEcosistemaVirtuoso.Titulo; + datoExtraModel.PredicadoRDF = datoExtraEcosistemaVirtuoso.PredicadoRDF; + datoExtraModel.Orden = datoExtraEcosistemaVirtuoso.Orden; + datoExtraModel.NombreInput = datoExtraEcosistemaVirtuoso.InputID; + datoExtraModel.QueryVirtuoso = datoExtraEcosistemaVirtuoso.QueryVirtuoso; + datoExtraModel.Tipo = TipoDatoExtra.TextoLibre; + + mPaginaModel.ListaDatosExtraVirtuoso.Add(datoExtraModel); + } + } + else + { + // DatoExtraProyecto -> opciones + foreach (DatoExtraProyecto datoExtraProyecto in DatosExtraProyectoDataWrapperProyecto.ListaDatoExtraProyecto) + { + DatoExtraModel datoExtraModel = new DatoExtraModel(); + + datoExtraModel.DatoExtraID = datoExtraProyecto.DatoExtraID; + datoExtraModel.Obligatorio = datoExtraProyecto.Obligatorio; + datoExtraModel.Nombre = datoExtraProyecto.Titulo; + datoExtraModel.PredicadoRDF = datoExtraProyecto.PredicadoRDF; + datoExtraModel.Orden = datoExtraProyecto.Orden; + datoExtraModel.OrganizacionID = datoExtraProyecto.OrganizacionID; + datoExtraModel.ProyectoID = datoExtraProyecto.ProyectoID; + datoExtraModel.Tipo = TipoDatoExtra.Opcion; + datoExtraModel.Opciones = new List(); + + foreach (DatoExtraProyectoOpcion opcion in DatosExtraProyectoDataWrapperProyecto.ListaDatoExtraProyectoOpcion.Where(x => x.DatoExtraID.Equals(datoExtraModel.DatoExtraID)).ToList()) + { + DatoExtraOpcionModel opcionModel = new DatoExtraOpcionModel(); + + opcionModel.DatoExtraID = opcion.DatoExtraID; + opcionModel.OpcionID = opcion.OpcionID; + opcionModel.Orden = opcion.Orden; + opcionModel.Nombre = opcion.Opcion; + opcionModel.ProyectoID = opcion.ProyectoID; + opcionModel.OrganizacionID = opcion.OrganizacionID; + + datoExtraModel.Opciones.Add(opcionModel); + } + + mPaginaModel.ListaDatosExtraProyecto.Add(datoExtraModel); + } + + // DatoExtraProyectoVirtuoso + foreach (DatoExtraProyectoVirtuoso datoExtraProyectoVirtuoso in DatosExtraProyectoDataWrapperProyecto.ListaDatoExtraProyectoVirtuoso) + { + DatoExtraVirtuosoModel datoExtraModel = new DatoExtraVirtuosoModel(); + + datoExtraModel.DatoExtraID = datoExtraProyectoVirtuoso.DatoExtraID; + datoExtraModel.Obligatorio = datoExtraProyectoVirtuoso.Obligatorio; + datoExtraModel.Nombre = datoExtraProyectoVirtuoso.Titulo; + datoExtraModel.PredicadoRDF = datoExtraProyectoVirtuoso.PredicadoRDF; + datoExtraModel.Orden = datoExtraProyectoVirtuoso.Orden; + datoExtraModel.NombreInput = datoExtraProyectoVirtuoso.InputID; + datoExtraModel.QueryVirtuoso = datoExtraProyectoVirtuoso.QueryVirtuoso; + datoExtraModel.Tipo = TipoDatoExtra.TextoLibre; + + mPaginaModel.ListaDatosExtraVirtuoso.Add(datoExtraModel); + } + } + } + + return mPaginaModel; + } + } + + public DataWrapperProyecto DatosExtraProyectoDataWrapperProyecto + { + get + { + if (mDatosExtraProyectoDataWrapperProyecto == null) + { + ProyectoCN proyectoCN = new ProyectoCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); + mDatosExtraProyectoDataWrapperProyecto = proyectoCN.ObtenerDatosExtraProyectoPorID(ProyectoSeleccionado.Clave); + proyectoCN.Dispose(); + } + + return mDatosExtraProyectoDataWrapperProyecto; + } + } + } +} diff --git a/Gnoss.Web.Open/Controllers/Administracion/AdministrarDisenioController.cs b/Gnoss.Web.Open/Controllers/Administracion/AdministrarDisenioController.cs index 641cb2a..1fa9df9 100644 --- a/Gnoss.Web.Open/Controllers/Administracion/AdministrarDisenioController.cs +++ b/Gnoss.Web.Open/Controllers/Administracion/AdministrarDisenioController.cs @@ -9,6 +9,7 @@ using Es.Riam.Gnoss.UtilServiciosWeb; using Es.Riam.Gnoss.Web.Controles.Proyectos; using Es.Riam.Gnoss.Web.MVC.Filters; +using Es.Riam.Gnoss.Web.MVC.Models.Administracion; using Es.Riam.Gnoss.Web.MVC.Models.ViewModels; using Es.Riam.Interfaces.InterfacesOpen; using Es.Riam.InterfacesOpen; @@ -39,6 +40,17 @@ public AdministrarDisenioController(LoggingService loggingService, ConfigService [TypeFilter(typeof(UsuarioLogueadoAttribute), Arguments = new object[] { RolesUsuario.AdministradorComunidad })] public ActionResult Index() { + // Añadir clase para el body del Layout + ViewBag.BodyClassPestanya = "configuracion administrar-disenio edicion no-max-width-container "; + ViewBag.ActiveSection = AdministracionSeccionesDevTools.SeccionesDevTools.Configuracion; + ViewBag.ActiveSubSection = AdministracionSeccionesDevTools.SubSeccionesDevTools.Configuracion_Cookies; + // Establecer el título para el header de DevTools + ViewBag.HeaderParentTitle = UtilIdiomas.GetText("DEVTOOLS", "CONFIGURACION"); + ViewBag.HeaderTitle = UtilIdiomas.GetText("ADMINISTRACIONDESARROLLADORES", "COOKIES"); + + // Establecer en el ViewBag el idioma por defecto + ViewBag.IdiomaPorDefecto = IdiomaPorDefecto; + EliminarPersonalizacionVistas(); CargarPermisosAdministracionComunidadEnViewBag(); diff --git a/Gnoss.Web.Open/Controllers/Administracion/AdministrarVistasController.cs b/Gnoss.Web.Open/Controllers/Administracion/AdministrarVistasController.cs index 4ee23f0..49b5db1 100644 --- a/Gnoss.Web.Open/Controllers/Administracion/AdministrarVistasController.cs +++ b/Gnoss.Web.Open/Controllers/Administracion/AdministrarVistasController.cs @@ -1206,11 +1206,11 @@ private void CargarVistaVirtual(DataWrapperVistaVirtual pVistaVirtualDW) //Insertamos las vistas que no corresponden con componentes del CMS foreach (string nombreVista in listaVistas) { - bool esVistaEdicionRecurso = nombreVista.StartsWith($"/{VIEWS_DIRECTORY}/EditarRecurso/_"); + //bool esVistaEdicionRecurso = nombreVista.StartsWith($"/{VIEWS_DIRECTORY}/EditarRecurso/_"); bool esVistaAdministracion = nombreVista.StartsWith($"/{VIEWS_DIRECTORY}/Administracion"); bool esVistaCMS = nombreVista.StartsWith($"/{VIEWS_DIRECTORY}/CMSPagina") && nombreVista.LongCount(letra => letra.ToString() == "/") > 3; - if (!esVistaEdicionRecurso && !esVistaAdministracion && !esVistaCMS && !nombreVista.StartsWith($"/Views/CargadorFacetas") && !nombreVista.StartsWith($"/Views/CargadorResultados") && !nombreVista.StartsWith($"/Views/Shared/_ResultadoMensaje.cshtml") && !nombreVista.StartsWith($"/Views/CargadorContextoMensajes/CargarContextoMensajes.cshtml")) + if (/*!esVistaEdicionRecurso && */ !esVistaAdministracion && !esVistaCMS && !nombreVista.StartsWith($"/Views/CargadorFacetas") && !nombreVista.StartsWith($"/Views/CargadorResultados") && !nombreVista.StartsWith($"/Views/Shared/_ResultadoMensaje.cshtml") && !nombreVista.StartsWith($"/Views/CargadorContextoMensajes/CargarContextoMensajes.cshtml")) { if (pVistaVirtualDW.ListaVistaVirtual.Any(item => item.TipoPagina.Equals(nombreVista))) { diff --git a/Gnoss.Web.Open/Controllers/Administracion/CMSAdminDisenioController.cs b/Gnoss.Web.Open/Controllers/Administracion/CMSAdminDisenioController.cs index 6b0e58b..7a9796f 100644 --- a/Gnoss.Web.Open/Controllers/Administracion/CMSAdminDisenioController.cs +++ b/Gnoss.Web.Open/Controllers/Administracion/CMSAdminDisenioController.cs @@ -8,6 +8,7 @@ using Es.Riam.Gnoss.UtilServiciosWeb; using Es.Riam.Gnoss.Web.Controles.Proyectos; using Es.Riam.Gnoss.Web.MVC.Filters; +using Es.Riam.Gnoss.Web.MVC.Models.Administracion; using Es.Riam.Gnoss.Web.MVC.Models.ViewModels; using Es.Riam.Interfaces.InterfacesOpen; using Es.Riam.InterfacesOpen; @@ -45,6 +46,14 @@ public CMSAdminDisenioController(LoggingService loggingService, ConfigService co [TypeFilter(typeof(UsuarioLogueadoAttribute), Arguments = new object[] { RolesUsuario.AdministradorComunidad })] public ActionResult Index() { + // Añadir clase para el body del Layout + ViewBag.BodyClassPestanya = "configuracion administrar-disenio edicion no-max-width-container "; + ViewBag.ActiveSection = AdministracionSeccionesDevTools.SeccionesDevTools.Configuracion; + ViewBag.ActiveSubSection = AdministracionSeccionesDevTools.SubSeccionesDevTools.Configuracion_Cookies; + // Establecer el título para el header de DevTools + ViewBag.HeaderParentTitle = UtilIdiomas.GetText("DEVTOOLS", "CONFIGURACION"); + ViewBag.HeaderTitle = UtilIdiomas.GetText("ADMINISTRACIONDESARROLLADORES", "COOKIES"); + EliminarPersonalizacionVistas(); CargarPermisosAdministracionComunidadEnViewBag(); diff --git a/Gnoss.Web.Open/Controllers/AdministrarNewsletterController.cs b/Gnoss.Web.Open/Controllers/AdministrarNewsletterController.cs index ca40a86..803da66 100644 --- a/Gnoss.Web.Open/Controllers/AdministrarNewsletterController.cs +++ b/Gnoss.Web.Open/Controllers/AdministrarNewsletterController.cs @@ -69,7 +69,7 @@ public ActionResult GuardarCambios(bool RecibirNewsletter) identidadCN.Dispose(); IdentidadCL identidadCL = new IdentidadCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); - identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.PersonaID.Value, IdentidadActual.PerfilID); + identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.Clave, IdentidadActual.PersonaID.Value); identidadCL.Dispose(); IdentidadActual = null; diff --git a/Gnoss.Web.Open/Controllers/AdministrarSolicitudesUsuariosController.cs b/Gnoss.Web.Open/Controllers/AdministrarSolicitudesUsuariosController.cs index 83babf1..b3b3e86 100644 --- a/Gnoss.Web.Open/Controllers/AdministrarSolicitudesUsuariosController.cs +++ b/Gnoss.Web.Open/Controllers/AdministrarSolicitudesUsuariosController.cs @@ -101,7 +101,9 @@ public IActionResult aceptar_solicitud(Guid solicitud_id) { solicitud.FechaProcesado = DateTime.Now; solicitud.Estado = (short)EstadoSolicitud.Aceptada; - DataWrapperIdentidad dataWrapperIdentidad = new IdentidadCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication).ObtenerPerfilesDePersona(solicitudUsuario.PersonaID, false); + IdentidadCN identCN = new IdentidadCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); + Guid identidadIDProyecto = identCN.ObtenerIdentidadIDDePersonaEnProyecto(ProyectoSeleccionado.Clave, solicitudUsuario.PersonaID)[0]; + DataWrapperIdentidad dataWrapperIdentidad = identCN.ObtenerPerfilesDePersona(solicitudUsuario.PersonaID, false, identidadIDProyecto); GestionIdentidades gestorIdentidades = new GestionIdentidades(dataWrapperIdentidad, mLoggingService, mEntityContext, mConfigService, mServicesUtilVirtuosoAndReplication); GestionUsuarios gestorUsuarios = new GestionUsuarios(dataWrapperUsuario, mLoggingService, mEntityContext, mConfigService); PersonaCN personaCN = new PersonaCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); diff --git a/Gnoss.Web.Open/Controllers/BusquedaController.cs b/Gnoss.Web.Open/Controllers/BusquedaController.cs index 658c9bd..2663595 100644 --- a/Gnoss.Web.Open/Controllers/BusquedaController.cs +++ b/Gnoss.Web.Open/Controllers/BusquedaController.cs @@ -531,8 +531,6 @@ public ActionResult Index() Guid tokenAfinidad = Guid.NewGuid(); - string conexionAfinidadVirtuoso = mServicesUtilVirtuosoAndReplication.ConexionAfinidad; - paginaModel.TipoPagina = TipoPagina.ToString(); if (RequestParams("contribuciones") != null && RequestParams("contribuciones").Equals("true") && IdentidadPaginaContribuciones != null) { diff --git a/Gnoss.Web.Open/Controllers/ComAdminElemSemanticosController.cs b/Gnoss.Web.Open/Controllers/ComAdminElemSemanticosController.cs index 27634d7..e1d02e4 100644 --- a/Gnoss.Web.Open/Controllers/ComAdminElemSemanticosController.cs +++ b/Gnoss.Web.Open/Controllers/ComAdminElemSemanticosController.cs @@ -386,6 +386,7 @@ public ActionResult EditarTesauro(EditSemanticThesaurusModel pModel) { // return PartialView("_AccionesTesSem", mModelAdmin); // Carga de la Vista para su edición vía modal + mModelAdmin.IdiomaPorDefecto = IdiomaPorDefecto; return PartialView("_modal-views/_tesauro-details", mModelAdmin); } else if (mEditTesModel.EditAction == EditSemanticThesaurusModel.Action.CreateCategory) diff --git a/Gnoss.Web.Open/Controllers/ControllerBase/ControllerBaseWeb.cs b/Gnoss.Web.Open/Controllers/ControllerBase/ControllerBaseWeb.cs index e083e23..c4315ad 100644 --- a/Gnoss.Web.Open/Controllers/ControllerBase/ControllerBaseWeb.cs +++ b/Gnoss.Web.Open/Controllers/ControllerBase/ControllerBaseWeb.cs @@ -94,6 +94,7 @@ using Es.Riam.InterfacesOpen; using Es.Riam.Gnoss.Logica.ParametrosProyecto; using Es.Riam.Gnoss.Web.Controles.ServicioImagenesWrapper; +using Universal.Common.Extensions; namespace Es.Riam.Gnoss.Web.MVC.Controllers { @@ -1131,35 +1132,62 @@ private void ComprobarRedireccionHomeProyecto(ActionExecutingContext pFilterCont //El usuario no tiene acceso a este proyecto, le llevo a la home de la comunidad string redirect = ObtenerUrlRedirect(ref url); - //if (!MaximoRedireccionesExcedidas()) + if (url.Equals("/") && !string.IsNullOrEmpty(RouteConfig.NombreProyectoSinNombreCorto)) { - string urlComunidadLogin = BaseURLIdioma + "/" + UtilIdiomas.GetText("URLSEM", "LOGIN"); - if (ProyectoSeleccionado.Clave != ProyectoAD.MetaProyecto) + Dictionary listaIdiomas = mConfigService.ObtenerListaIdiomasDictionary(); + + string idioma = UtilIdiomas.LanguageCode; + bool emptyPath = string.IsNullOrEmpty(Request.Path) || Request.Path.Equals("/"); + + if (!EsBot && !Request.Headers.ContainsKey("Referer") && Request.Headers.ContainsKey("accept-language") && emptyPath) { - urlComunidadLogin = mControladorBase.UrlsSemanticas.ObtenerURLComunidad(UtilIdiomas, BaseURLIdioma, ProyectoSeleccionado.NombreCorto); + var languages = Request.Headers["accept-language"].ToString().Split(',') + .Select(System.Net.Http.Headers.StringWithQualityHeaderValue.Parse) + .OrderByDescending(s => s.Quality.GetValueOrDefault(1)); - if (mControladorBase.UsuarioActual.EsUsuarioInvitado || !ProyectoSeleccionado.EsPublico || !ParametrosGeneralesRow.HomeVisible) + foreach (var userLanguaje in languages) { - urlComunidadLogin += "/" + UtilIdiomas.GetText("URLSEM", "LOGIN"); - } - else - { - redirect = ""; + string idiomaNavegador = userLanguaje.Value.Split('-')[0]; + if (listaIdiomas.ContainsKey(idiomaNavegador)) + { + idioma = idiomaNavegador; + if (UtilIdiomas.LanguageCode != idioma) + { + UtilIdiomas = new UtilIdiomas(idioma, mLoggingService, mEntityContext, mConfigService); + } + break; + } } } - //Si el redirect ya contiene esta cadena, significa que ya se le ha redireccionado a login (ya estamos en esa página, no hay que volver a redireccionar) - if (!redirect.Contains(urlComunidadLogin) && (!redirect.Contains("/login/redirect")) && (!redirect.EndsWith("/login"))) + } + + string urlComunidadLogin = BaseURLIdioma + "/" + UtilIdiomas.GetText("URLSEM", "LOGIN"); + if (ProyectoSeleccionado.Clave != ProyectoAD.MetaProyecto) + { + urlComunidadLogin = mControladorBase.UrlsSemanticas.ObtenerURLComunidad(UtilIdiomas, BaseURLIdioma, ProyectoSeleccionado.NombreCorto); + + if (mControladorBase.UsuarioActual.EsUsuarioInvitado || !ProyectoSeleccionado.EsPublico || !ParametrosGeneralesRow.HomeVisible) { - if (this.GetType().Name.Equals("LogoutController") && this.GetType().Name.Equals("LoadingController")) - { - redirect = ""; - } + urlComunidadLogin += "/" + UtilIdiomas.GetText("URLSEM", "LOGIN"); + } + else + { + redirect = ""; + } + } - //Realiza la redirección - pFilterContext.Result = Redirect(urlComunidadLogin + redirect); - return; + //Si el redirect ya contiene esta cadena, significa que ya se le ha redireccionado a login (ya estamos en esa página, no hay que volver a redireccionar) + if (!redirect.Contains(urlComunidadLogin) && (!redirect.Contains("/login/redirect")) && (!redirect.EndsWith("/login"))) + { + if (this.GetType().Name.Equals("LogoutController") && this.GetType().Name.Equals("LoadingController")) + { + redirect = ""; } + + //Realiza la redirección + pFilterContext.Result = Redirect(urlComunidadLogin + redirect); + return; } } } @@ -1501,7 +1529,7 @@ private UserProfileModel CargarDatosPerfil() perfil.IsAdministrator = esAdministradorOrg; ProyectoCN proyCN = new ProyectoCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); - AD.EncapsuladoDatos.DataWrapperProyecto dataSetComunidades = proyCN.ObtenerProyectosParticipaPerfil(IdentidadActual.PerfilID); + AD.EncapsuladoDatos.DataWrapperProyecto dataSetComunidades = proyCN.ObtenerProyectosParticipaPerfilLimite10(IdentidadActual.PerfilID); List ListaProyectosSinRegistro = proyCN.ObtenerListaIDsProyectosSinRegistroObligatorio(); proyCN.Dispose(); @@ -3832,7 +3860,7 @@ public bool ComprobarPermisoEnOntologiaDeProyectoEIdentidad(Guid pDocumentoID) if (!devolver && ParametroProyecto.ContainsKey(ParametroAD.ProyectoIDPatronOntologias)) { proyectoOntologiasID = new Guid(ParametroProyecto[ParametroAD.ProyectoIDPatronOntologias]); - devolver = mControladorBase.ComprobarPermisoEnOntologiaDeProyectoEIdentidad(proyectoOntologiasID, pDocumentoID, false); + devolver = mControladorBase.ComprobarPermisoEnOntologiaDeProyectoEIdentidad(proyectoOntologiasID, pDocumentoID, true, true); } return devolver; } @@ -4113,10 +4141,17 @@ public string UrlMultiIdiomaPaginaActual { if (ruta.Values.Contains(parteUrl)) { - string claveDiccionario = "{" + ruta.Where(x => x.Value.Equals(parteUrl)).Select(x => x.Key).First() + "}"; + string claveDiccionario = "{" + ruta.Where(x => x.Value != null && x.Value.Equals(parteUrl)).Select(x => x.Key).First() + "}"; if (!claveDiccionario.Equals("{lang}")) { - url = url.Replace("/" + parteUrl + "/", "/" + claveDiccionario + "/"); + if (url.Contains("/" + parteUrl + "/")) + { + url = url.Replace("/" + parteUrl + "/", "/" + claveDiccionario + "/"); + } + if (url.EndsWith("/" + parteUrl)) + { + url = url.Replace("/" + parteUrl, "/" + claveDiccionario); + } } } } @@ -4125,6 +4160,10 @@ public string UrlMultiIdiomaPaginaActual { url = url.Remove(0, 1); } + if (url.EndsWith("/")) + { + url = url.TrimEnd('/'); + } if (RouteConfig.ListaRutasURLName.ContainsKey(url)) { @@ -4901,6 +4940,8 @@ private void IncluirAvisoCookies(ActionExecutingContext pFilterContext) if (cookieAviso == null || !cookieAviso.ContainsKey("aceptada") || cookieAviso["aceptada"] == "false") { ViewBag.CookiesWarning = "Cookies no aceptadas"; + + AnadirTextoPoliticaCookiesViewBag(); } if (actualizarCookie && pFilterContext.Result != null) @@ -4910,6 +4951,28 @@ private void IncluirAvisoCookies(ActionExecutingContext pFilterContext) } } + private void AnadirTextoPoliticaCookiesViewBag() + { + UsuarioCN usuarioCN = new UsuarioCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); + DataWrapperUsuario usuarioDW = usuarioCN.ObtenerPoliticaCookiesProyecto(ProyectoSeleccionado.Clave); + usuarioCN.Dispose(); + List filasCabecera = usuarioDW.ListaClausulaRegistro.Where(c => c.ProyectoID.Equals(ProyectoSeleccionado.Clave) && c.Tipo.Equals((short)ManageRegisterClausesViewModel.ClauseType.PoliticaCookiesCabecera)).ToList(); + + if (filasCabecera.Count > 0) + { + ViewBag.TextoPoliticaCookies = UtilCadenas.ObtenerTextoDeIdioma(filasCabecera[0].Texto, UtilIdiomas.LanguageCode, null); + } + else + { + //si el proyecto no la tiene personalizada, buscamos la cláusula de cabecera asociada a la cláusula de PoliticaCookiesUrlPagina en el ecosistema + List filasCabeceraEcosistema = usuarioDW.ListaClausulaRegistro.Where(c => c.ProyectoID.Equals(ProyectoAD.MetaProyecto) && c.Tipo.Equals((short)ManageRegisterClausesViewModel.ClauseType.PoliticaCookiesCabecera)).ToList(); + if (filasCabeceraEcosistema.Count > 0) + { + ViewBag.TextoPoliticaCookies = UtilCadenas.ObtenerTextoDeIdioma(filasCabeceraEcosistema[0].Texto, UtilIdiomas.LanguageCode, null); + } + } + } + protected void GuardarXmlCambiosAdministracion() { try diff --git a/Gnoss.Web.Open/Controllers/ControllerBase/ControllerCabeceraBase.cs b/Gnoss.Web.Open/Controllers/ControllerBase/ControllerCabeceraBase.cs index 2300212..49554f5 100644 --- a/Gnoss.Web.Open/Controllers/ControllerBase/ControllerCabeceraBase.cs +++ b/Gnoss.Web.Open/Controllers/ControllerBase/ControllerCabeceraBase.cs @@ -103,7 +103,7 @@ public void CargarDatosCabecera() cabecera.SocialNetworkRegister = new Dictionary(); if (mControllerBase.ObtenerParametrosLoginExterno(TipoRedSocialLogin.Facebook, mControllerBase.ParametroProyecto, mControllerBase.ParametrosAplicacionDS).Count > 0) { - string urlServicioLoginFacebook = mControladorBase.UrlServicioLogin + "/loginfacebook.aspx?token=" + System.Net.WebUtility.UrlEncode(mControllerBase.TokenLoginUsuario) + "&proyectoID=" + ProyectoSeleccionado.Clave.ToString() + "&urlOrigen=" + System.Net.WebUtility.UrlEncode(mControllerBase.BaseURL + mHttpContextAccessor.HttpContext.Request.Path); + string urlServicioLoginFacebook = mControladorBase.UrlServicioLogin + "/loginfacebook?token=" + System.Net.WebUtility.UrlEncode(mControllerBase.TokenLoginUsuario) + "&proyectoID=" + ProyectoSeleccionado.Clave.ToString() + "&urlOrigen=" + System.Net.WebUtility.UrlEncode(mControllerBase.BaseURL + mHttpContextAccessor.HttpContext.Request.Path); urlServicioLoginFacebook = AgregarEventoComunidad(urlServicioLoginFacebook); diff --git a/Gnoss.Web.Open/Controllers/EditarBioComunidadController.cs b/Gnoss.Web.Open/Controllers/EditarBioComunidadController.cs index 22d5adb..1b22504 100644 --- a/Gnoss.Web.Open/Controllers/EditarBioComunidadController.cs +++ b/Gnoss.Web.Open/Controllers/EditarBioComunidadController.cs @@ -43,7 +43,7 @@ public ActionResult Index(Guid CvSelected) controladorPersonas.ActualizarModeloBaseSimple(IdentidadActual, ProyectoSeleccionado.Clave, UrlIntragnoss); IdentidadCL identidadCL = new IdentidadCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); - identidadCL.EliminarCacheGestorIdentidadActual(UsuarioActual.UsuarioID, UsuarioActual.PersonaID, UsuarioActual.PerfilID); + identidadCL.EliminarCacheGestorIdentidadActual(UsuarioActual.UsuarioID, UsuarioActual.IdentidadID, UsuarioActual.PersonaID); identidadCL.Dispose(); EditCvCommunityModel paginaModel = new EditCvCommunityModel(); diff --git a/Gnoss.Web.Open/Controllers/EditarPerfilComunidadController.cs b/Gnoss.Web.Open/Controllers/EditarPerfilComunidadController.cs index 2bcfb9b..7b1ff2d 100644 --- a/Gnoss.Web.Open/Controllers/EditarPerfilComunidadController.cs +++ b/Gnoss.Web.Open/Controllers/EditarPerfilComunidadController.cs @@ -201,7 +201,7 @@ public ActionResult Index(EditProfileViewModel pPaginaModel) { UsarImagenPersonal(bool.Parse(RequestParams("UsarFotoPersonal"))); IdentidadCL identidadCL = new IdentidadCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); - identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.PersonaID.Value, IdentidadActual.PerfilID); + identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.Clave, IdentidadActual.PersonaID.Value); identidadCL.Dispose(); return new EmptyResult(); } @@ -281,7 +281,7 @@ public ActionResult GuardarBio(QuickCurriculum pCurriculum) } GuardarCVRapido(pCurriculum.Description, pCurriculum.Tags, true); IdentidadCL identidadCL = new IdentidadCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); - identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.PersonaID.Value, IdentidadActual.PerfilID); + identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.Clave, IdentidadActual.PersonaID.Value); identidadCL.Dispose(); return GnossResultOK(UtilIdiomas.GetText("COMADMINCMS", "COMPONENTEGUARDADOOK")); @@ -364,7 +364,7 @@ public ActionResult GuardarPerfil(EditProfileViewModel pPaginaModel) errores = GuardarPerfilProfesor(paginaModel.ProfileTeacher); } IdentidadCL identidadCL = new IdentidadCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); - identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.PersonaID.Value, IdentidadActual.PerfilID); + identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.Clave, IdentidadActual.PersonaID.Value); identidadCL.Dispose(); if (errores.Count > 0) @@ -457,7 +457,7 @@ public ActionResult GuardarDatosUsuarioFormulario(EditProfileViewModel.DataEditP { GuardarCVRapido(description, tags, true); IdentidadCL identidadCL = new IdentidadCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); - identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.PersonaID.Value, IdentidadActual.PerfilID); + identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.Clave, IdentidadActual.PersonaID.Value); identidadCL.Dispose(); } @@ -529,7 +529,7 @@ public ActionResult GuardarEmail(string pEmail) IdentidadCL identidadCL = new IdentidadCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); - identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.PersonaID.Value, IdentidadActual.PerfilID); + identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.Clave, IdentidadActual.PersonaID.Value); identidadCL.Dispose(); ControladorIdentidades.NotificarEdicionPerfilEnProyectos(TipoAccionExterna.Edicion, IdentidadActual.Persona.Clave, "", "", ProyectoSeleccionado.Clave); @@ -695,12 +695,12 @@ public ActionResult GuardarImagen(IFormFile FicheroImagen) IdentidadActual.OrganizacionPerfil.FilaOrganizacion.VersionLogo = versionFoto; IdentidadActual.OrganizacionPerfil.FilaOrganizacion.CoordenadasLogo = coordenadasFoto; + mEntityContext.SaveChanges(); + IdentidadCN identidadCN = new IdentidadCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); //identidadCN.ActualizarFotoIdentidadesPersona(IdentidadActual.PersonaID.Value, false); identidadCN.ActualizarFotoIdentidadesOrganizacion(IdentidadActual.OrganizacionID.Value, false); identidadCN.Dispose(); - - mEntityContext.SaveChanges(); } else if (IdentidadActual.TrabajaConOrganizacion) { @@ -713,13 +713,12 @@ public ActionResult GuardarImagen(IFormFile FicheroImagen) filaPersona.CoordenadasFoto = coordenadasFoto; filaPersona.FechaAnadidaFoto = DateTime.Now; filaPersona.UsarFotoPersonal = false; + mEntityContext.SaveChanges(); IdentidadCN identidadCN = new IdentidadCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); identidadCN.ActualizarFotoIdentidadesDePersonaDeOrganizacion(IdentidadActual.PersonaID.Value, filaPersona.OrganizacionID, false, false); //identidadCN.ActualizarFotoIdentidadesPersona(IdentidadActual.PersonaID.Value, false); identidadCN.Dispose(); - - mEntityContext.SaveChanges(); } else if (IdentidadActual.ModoPersonal) { @@ -730,12 +729,11 @@ public ActionResult GuardarImagen(IFormFile FicheroImagen) IdentidadActual.Persona.FilaPersona.VersionFoto = versionFoto; IdentidadActual.Persona.FilaPersona.CoordenadasFoto = coordenadasFoto; IdentidadActual.Persona.FilaPersona.FechaAnadidaFoto = DateTime.Now; + mEntityContext.SaveChanges(); IdentidadCN identidadCN = new IdentidadCN(mEntityContext,mLoggingService,mConfigService, mServicesUtilVirtuosoAndReplication); identidadCN.ActualizarFotoIdentidadesPersona(IdentidadActual.PersonaID.Value, false); identidadCN.Dispose(); - - mEntityContext.SaveChanges(); } } else @@ -1092,6 +1090,10 @@ private Dictionary GuardarPerfilPersonalNulo(EditProfileViewMode if (!existenErrores) { + if (mEntityContext.Entry(IdentidadActual.Persona.FilaPersona).State == EntityState.Detached) + { + IdentidadActual.Persona.FilaPersona = personaCN.ObtenerFilaPersonaPorID(IdentidadActual.Persona.FilaPersona.PersonaID); + } bool CambiadoNombre = false; bool CambiadoApellidos = false; if (!string.IsNullOrEmpty(pPerfilPersonal.Name)) @@ -1274,9 +1276,9 @@ private Dictionary GuardarPerfilPersonalNulo(EditProfileViewMode } else { + mEntityContext.SaveChanges(); IdentidadCL identidadCL = new IdentidadCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); identidadCL.InvalidarFichasIdentidadesMVC(IdentidadActual.GestorIdentidades.DataWrapperIdentidad.ListaIdentidad.Select(item => item.IdentidadID).ToList()); - mEntityContext.SaveChanges(); } ControladorIdentidades.NotificarEdicionPerfilEnProyectos(TipoAccionExterna.Edicion, IdentidadActual.Persona.Clave, "", antiguoEmail, ProyectoSeleccionado.Clave); @@ -1786,9 +1788,9 @@ private void GuardarDatosExtra(EditProfileViewModel.ProfilePersonalViewModel pPe datoExtraProyectoOpcionIdentidad.ProyectoID = ProyectoSeleccionado.Clave; datoExtraProyectoOpcionIdentidad.DatoExtraID = datoExtra; datoExtraProyectoOpcionIdentidad.OpcionID = dicDatosExtraProyecto[datoExtra]; - - //dataWrapperIdentidad.ListaDatoExtraProyectoOpcionIdentidad.AddDatoExtraProyectoOpcionIdentidadRow(ProyectoSeleccionado.FilaProyecto.OrganizacionID, ProyectoSeleccionado.Clave, datoExtra, dicDatosExtraProyecto[datoExtra], IdentidadActual.FilaIdentidad); - dataWrapperIdentidad.ListaDatoExtraProyectoOpcionIdentidad.Add(datoExtraProyectoOpcionIdentidad); + datoExtraProyectoOpcionIdentidad.IdentidadID = IdentidadActual.Clave; + //dataWrapperIdentidad.ListaDatoExtraProyectoOpcionIdentidad.AddDatoExtraProyectoOpcionIdentidadRow(ProyectoSeleccionado.FilaProyecto.OrganizacionID, ProyectoSeleccionado.Clave, datoExtra, dicDatosExtraProyecto[datoExtra], IdentidadActual.FilaIdentidad); + dataWrapperIdentidad.ListaDatoExtraProyectoOpcionIdentidad.Add(datoExtraProyectoOpcionIdentidad); mEntityContext.DatoExtraProyectoOpcionIdentidad.Add(datoExtraProyectoOpcionIdentidad); } @@ -2243,7 +2245,7 @@ private void GuardarDatosCVRapido(Guid pCVSeleccionado) #region Borramos caché IdentidadCL identidadCL = new IdentidadCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); - identidadCL.EliminarCacheGestorIdentidadActual(UsuarioActual.UsuarioID, UsuarioActual.PersonaID, UsuarioActual.PerfilID); + identidadCL.EliminarCacheGestorIdentidadActual(UsuarioActual.UsuarioID, UsuarioActual.IdentidadID, UsuarioActual.PersonaID); identidadCL.Dispose(); #endregion @@ -2358,12 +2360,10 @@ private void BorrarImagenRegistro() } IdentidadActual.OrganizacionPerfil.FilaOrganizacion.Logotipo = null; IdentidadActual.OrganizacionPerfil.FilaOrganizacion.CoordenadasLogo = null; - + mEntityContext.SaveChanges(); IdentidadCN identidadCN = new IdentidadCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); identidadCN.ActualizarFotoIdentidadesPersona(IdentidadActual.PersonaID.Value, true); identidadCN.Dispose(); - - mEntityContext.SaveChanges(); } else if (IdentidadActual.TrabajaConOrganizacion) { @@ -2375,13 +2375,10 @@ private void BorrarImagenRegistro() filaPersona.Foto = null; filaPersona.CoordenadasFoto = null; filaPersona.FechaAnadidaFoto = null; - + mEntityContext.SaveChanges(); IdentidadCN identidadCN = new IdentidadCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); identidadCN.ActualizarFotoIdentidadesPersona(IdentidadActual.PersonaID.Value, true); identidadCN.Dispose(); - - - mEntityContext.SaveChanges(); } else if (IdentidadActual.ModoPersonal) { @@ -2393,12 +2390,10 @@ private void BorrarImagenRegistro() IdentidadActual.Persona.FilaPersona.CoordenadasFoto = null; IdentidadActual.Persona.FilaPersona.FechaAnadidaFoto = null; - + mEntityContext.SaveChanges(); IdentidadCN identidadCN = new IdentidadCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); identidadCN.ActualizarFotoIdentidadesPersona(IdentidadActual.PersonaID.Value, true); identidadCN.Dispose(); - - mEntityContext.SaveChanges(); } EliminarCaches(); @@ -2463,6 +2458,12 @@ private void CargarDatosProvincia(Guid pPaisID) private void CargarDatosPerfilPersonal() { + PersonaCN personaCN = new PersonaCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); + if (mEntityContext.Entry(IdentidadActual.Persona.FilaPersona).State == EntityState.Detached) + { + IdentidadActual.Persona.FilaPersona = personaCN.ObtenerFilaPersonaPorID(IdentidadActual.Persona.FilaPersona.PersonaID); + } + personaCN.Dispose(); paginaModel.ProfilePersonal.Name = IdentidadActual.Persona.Nombre; paginaModel.ProfilePersonal.LastName = IdentidadActual.Persona.Apellidos; @@ -2662,7 +2663,7 @@ private void CargarCamposExtraRegistro() DataWrapperIdentidad dataWrapperIdentidad = new DataWrapperIdentidad(); if (IdentidadActual.TrabajaConOrganizacion || IdentidadActual.TrabajaPersonaConOrganizacion || IdentidadActual.OrganizacionID.HasValue) { - DataWrapperIdentidad identidadesPersonas = identidadCN.ObtenerPerfilesDePersona(IdentidadActual.PersonaID.Value, true); + DataWrapperIdentidad identidadesPersonas = identidadCN.ObtenerPerfilesDePersona(IdentidadActual.PersonaID.Value, true, IdentidadActual.Clave); if (identidadesPersonas.ListaIdentidad.Any(identidad => identidad.Tipo == 0)) { dataWrapperIdentidad = identidadCN.ObtenerDatosExtraProyectoOpcionIdentidadPorIdentidadID(identidadesPersonas.ListaIdentidad.FirstOrDefault(Identidad => Identidad.Tipo == 0).IdentidadID); @@ -2788,6 +2789,14 @@ private void CargarCamposExtraRegistro() { opcionSeleccionada = datoExtraEcosistemaVirtuosoPerfil.Opcion; } + else + { + AD.EntityModel.Models.IdentidadDS.DatoExtraProyectoVirtuosoIdentidad datoExtraIdentidad = dataWrapperIdentidad.ListaDatoExtraProyectoVirtuosoIdentidad.FirstOrDefault(datoExtra => datoExtra.DatoExtraID.Equals(fila.DatoExtraID)); + if (datoExtraIdentidad != null) + { + opcionSeleccionada = datoExtraIdentidad.Opcion; + } + } AdditionalFieldAutentication campoExtra = new AdditionalFieldAutentication(); campoExtra.Title = UtilCadenas.ObtenerTextoDeIdioma(fila.Titulo, UtilIdiomas.LanguageCode, "es"); diff --git a/Gnoss.Web.Open/Controllers/FichaPerfilController.cs b/Gnoss.Web.Open/Controllers/FichaPerfilController.cs index 0e8366e..7abc18f 100644 --- a/Gnoss.Web.Open/Controllers/FichaPerfilController.cs +++ b/Gnoss.Web.Open/Controllers/FichaPerfilController.cs @@ -710,49 +710,43 @@ public ActionResult Follow() { ControladorSuscripciones.SuscribirmePerfil(IdentidadActual, ProyectoSeleccionado, BaseURL, UrlIntragnoss, IdentidadPagina, true, null, null, UtilIdiomas.LanguageCode); - //Comprobar si el me sigue a mi tambien - List listaIdentidadesSuscritasPerfil = suscripcionCL.ObtenerListaIdentidadesSuscritasPerfil(IdentidadPagina.PerfilID); - List identidadesSuscritas = listaIdentidadesSuscritasPerfil.Intersect(IdentidadActual.ListaTodosIdentidadesDeIdentidad).ToList(); + AmigosCN amigosCN = new AmigosCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); + FacetadoCN facetadoCN = new FacetadoCN(UrlIntragnoss, "contactos/", mEntityContext, mLoggingService, mConfigService, mVirtuosoAD, mServicesUtilVirtuosoAndReplication); + GestionAmigos gestAmigos = new GestionAmigos(new DataWrapperAmigos(), new GestionIdentidades(new DataWrapperIdentidad(), mLoggingService, mEntityContext, mConfigService, mServicesUtilVirtuosoAndReplication), mLoggingService, mEntityContext, mConfigService, mServicesUtilVirtuosoAndReplication); + bool guardarAmigos = false; - if (identidadesSuscritas.Count > 0) + if (!amigosCN.EsAmigoDeIdentidad(IdentidadActual.IdentidadMyGNOSS.Clave, IdentidadPagina.IdentidadMyGNOSS.Clave)) { - AmigosCN amigosCN = new AmigosCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); - FacetadoCN facetadoCN = new FacetadoCN(UrlIntragnoss, "contactos/", mEntityContext, mLoggingService, mConfigService, mVirtuosoAD, mServicesUtilVirtuosoAndReplication); - GestionAmigos gestAmigos = new GestionAmigos(new DataWrapperAmigos(), new GestionIdentidades(new DataWrapperIdentidad(), mLoggingService, mEntityContext, mConfigService, mServicesUtilVirtuosoAndReplication), mLoggingService, mEntityContext, mConfigService, mServicesUtilVirtuosoAndReplication); - bool guardarAmigos = false; - - if (!amigosCN.EsAmigoDeIdentidad(IdentidadActual.IdentidadMyGNOSS.Clave, IdentidadPagina.IdentidadMyGNOSS.Clave)) - { - gestAmigos.CrearFilaAmigo(IdentidadActual.IdentidadMyGNOSS.Clave, IdentidadPagina.IdentidadMyGNOSS.Clave); - facetadoCN.InsertarNuevoContacto(IdentidadActual.IdentidadMyGNOSS.Clave.ToString(), IdentidadPagina.IdentidadMyGNOSS.Clave.ToString()); - guardarAmigos = true; - } + gestAmigos.CrearFilaAmigo(IdentidadActual.IdentidadMyGNOSS.Clave, IdentidadPagina.IdentidadMyGNOSS.Clave); + facetadoCN.InsertarNuevoContacto(IdentidadActual.IdentidadMyGNOSS.Clave.ToString(), IdentidadPagina.IdentidadMyGNOSS.Clave.ToString()); + guardarAmigos = true; + } - if (!amigosCN.EsAmigoDeIdentidad(IdentidadPagina.IdentidadMyGNOSS.Clave, IdentidadActual.IdentidadMyGNOSS.Clave)) - { - gestAmigos.CrearFilaAmigo(IdentidadPagina.IdentidadMyGNOSS.Clave, IdentidadActual.IdentidadMyGNOSS.Clave); - facetadoCN.InsertarNuevoContacto(IdentidadPagina.IdentidadMyGNOSS.Clave.ToString(), IdentidadActual.IdentidadMyGNOSS.Clave.ToString()); - guardarAmigos = true; - } + if (!amigosCN.EsAmigoDeIdentidad(IdentidadPagina.IdentidadMyGNOSS.Clave, IdentidadActual.IdentidadMyGNOSS.Clave)) + { + gestAmigos.CrearFilaAmigo(IdentidadPagina.IdentidadMyGNOSS.Clave, IdentidadActual.IdentidadMyGNOSS.Clave); + facetadoCN.InsertarNuevoContacto(IdentidadPagina.IdentidadMyGNOSS.Clave.ToString(), IdentidadActual.IdentidadMyGNOSS.Clave.ToString()); + guardarAmigos = true; + } - if (guardarAmigos) - { - mEntityContext.SaveChanges(); - - //Agregamos una fila al BASE - ControladorContactos contrContactos = new ControladorContactos(mLoggingService, mEntityContext, mConfigService, mEntityContextBASE, mRedisCacheWrapper, mVirtuosoAD, mServicesUtilVirtuosoAndReplication); - contrContactos.ActualizarModeloBaseSimple(IdentidadActual.IdentidadMyGNOSS.Clave, IdentidadPagina.IdentidadMyGNOSS.Clave); - contrContactos.ActualizarModeloBaseSimple(IdentidadPagina.IdentidadMyGNOSS.Clave, IdentidadActual.IdentidadMyGNOSS.Clave); - - //Limpiamos la cache de los contactos - AmigosCL amigosCL = new AmigosCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); - amigosCL.InvalidarAmigos(IdentidadActual.IdentidadMyGNOSS.Clave); - amigosCL.InvalidarAmigos(IdentidadPagina.IdentidadMyGNOSS.Clave); - amigosCL.Dispose(); - } - amigosCN.Dispose(); - facetadoCN.Dispose(); + if (guardarAmigos) + { + mEntityContext.SaveChanges(); + + //Agregamos una fila al BASE + ControladorContactos contrContactos = new ControladorContactos(mLoggingService, mEntityContext, mConfigService, mEntityContextBASE, mRedisCacheWrapper, mVirtuosoAD, mServicesUtilVirtuosoAndReplication); + contrContactos.ActualizarModeloBaseSimple(IdentidadActual.IdentidadMyGNOSS.Clave, IdentidadPagina.IdentidadMyGNOSS.Clave); + contrContactos.ActualizarModeloBaseSimple(IdentidadPagina.IdentidadMyGNOSS.Clave, IdentidadActual.IdentidadMyGNOSS.Clave); + + //Limpiamos la cache de los contactos + AmigosCL amigosCL = new AmigosCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); + amigosCL.InvalidarAmigos(IdentidadActual.IdentidadMyGNOSS.Clave); + amigosCL.InvalidarAmigos(IdentidadPagina.IdentidadMyGNOSS.Clave); + amigosCL.Dispose(); } + amigosCN.Dispose(); + facetadoCN.Dispose(); + } else { @@ -1242,7 +1236,7 @@ private void EliminarPersona() usuCN.Dispose(); IdentidadCN identCN = new IdentidadCN(mEntityContext, mLoggingService, mConfigService, mServicesUtilVirtuosoAndReplication); - IdentidadPagina.GestorIdentidades.DataWrapperIdentidad.Merge(identCN.ObtenerPerfilesDePersona(IdentidadPagina.PersonaID.Value, false)); + IdentidadPagina.GestorIdentidades.DataWrapperIdentidad.Merge(identCN.ObtenerPerfilesDePersona(IdentidadPagina.PersonaID.Value, false, IdentidadPagina.FilaIdentidad.IdentidadID)); identCN.Dispose(); //Boqueo Usuario: diff --git a/Gnoss.Web.Open/Controllers/FichaRecursoController.cs b/Gnoss.Web.Open/Controllers/FichaRecursoController.cs index 91d55f5..b6ee011 100644 --- a/Gnoss.Web.Open/Controllers/FichaRecursoController.cs +++ b/Gnoss.Web.Open/Controllers/FichaRecursoController.cs @@ -5194,7 +5194,7 @@ public void CargarBasesRecursosCompartir(out Dictionary dicDatosExtraProyecto = new Dictionary(); Dictionary dicDatosExtraEcosistema = new Dictionary(); - + Dictionary dicExtraIdentidad = new Dictionary(); Dictionary dicDatosExtraProyectoVirtuoso = new Dictionary(); Dictionary dicDatosExtraEcosistemaVirtuoso = new Dictionary(); if (!HaySolicitudPrevia) @@ -1790,6 +1790,22 @@ private string RegistrarUsuario(string pEmail, TipoRedSocialLogin? pTipoRedSocia } } } + else + { + DatoExtraEcosistema filaDatoExtraEcosistema = DatosExtraProyectoDataWrapperProyecto.ListaDatoExtraEcosistema.FirstOrDefault(dato => dato.DatoExtraID.Equals(guidNombreCampo)); + if (filaDatoExtraEcosistema != null) + { + dicExtraIdentidad.Add(filaDatoExtraEcosistema.DatoExtraID, valorCampo); + } + else + { + DatoExtraProyecto filaDatoExtraProyecto = DatosExtraProyectoDataWrapperProyecto.ListaDatoExtraProyecto.FirstOrDefault(dato => dato.OrganizacionID.Equals(ProyectoSeleccionado.FilaProyecto.OrganizacionID) && dato.ProyectoID.Equals(ProyectoSeleccionado.Clave) && dato.DatoExtraID.Equals(guidNombreCampo)); + if (filaDatoExtraProyecto != null) + { + dicExtraIdentidad.Add(filaDatoExtraProyecto.DatoExtraID, valorCampo); + } + } + } } else { @@ -1818,7 +1834,7 @@ private string RegistrarUsuario(string pEmail, TipoRedSocialLogin? pTipoRedSocia SolicitudDW.ListaSolicitudNuevoUsuario.Add(filaNuevoUsuario); mEntityContext.SolicitudNuevoUsuario.Add(filaNuevoUsuario); //Recogemos y agregamos los campos extra - GuardarDatosExtra(SolicitudDW, filaSolicitud, dicDatosExtraEcosistema, dicDatosExtraProyecto); + GuardarDatosExtra(SolicitudDW, filaSolicitud, dicDatosExtraEcosistema, dicDatosExtraProyecto, dicExtraIdentidad); GuardarDatosExtraVirtuoso(SolicitudDW, filaSolicitud, dicDatosExtraEcosistemaVirtuoso, dicDatosExtraProyectoVirtuoso); } @@ -2383,7 +2399,7 @@ private void ActualizarGrupoBase(Guid pGrupoID, Guid pProyectoID) /// /// Guarda los datos extra /// - private void GuardarDatosExtra(DataWrapperSolicitud pSolicitudDW, Solicitud pSolicitud, Dictionary pDicDatosExtraEcosistema, Dictionary pDicDatosExtraProyecto) + private void GuardarDatosExtra(DataWrapperSolicitud pSolicitudDW, Solicitud pSolicitud, Dictionary pDicDatosExtraEcosistema, Dictionary pDicDatosExtraProyecto, Dictionary pDicDatosExtraIdentidad) { if (!HaySolicitudPrevia) { diff --git a/Gnoss.Web.Open/Controllers/RegistroDatosController.cs b/Gnoss.Web.Open/Controllers/RegistroDatosController.cs index 91882f6..c3c96a7 100644 --- a/Gnoss.Web.Open/Controllers/RegistroDatosController.cs +++ b/Gnoss.Web.Open/Controllers/RegistroDatosController.cs @@ -334,7 +334,7 @@ private ActionResult GuardarImagenRegistro() //Borramos Cache de la Identidad actual IdentidadCL identidadCL = new IdentidadCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); - identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.Persona.Clave, IdentidadActual.PerfilID); + identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.Clave, IdentidadActual.PersonaID.Value); identidadCL.Dispose(); } @@ -734,11 +734,11 @@ private bool GuardarDatosRegistro() { string nombreCampo = campoExtra.FieldName; string valorCampo = RequestParams(nombreCampo); - Guid guidNombreCampo = Guid.Empty; - if (Guid.TryParse(nombreCampo, out guidNombreCampo)) + Guid guidValorCampo = Guid.Empty; + + if (Guid.TryParse(nombreCampo, out guidNombreCampo) && Guid.TryParse(valorCampo, out guidValorCampo) && !guidValorCampo.Equals(Guid.Empty)) { - Guid guidValorCampo = Guid.Empty; if (Guid.TryParse(valorCampo, out guidValorCampo) && !guidValorCampo.Equals(Guid.Empty)) { DatoExtraEcosistema filaDatoExtraEcosistema = DatosExtraProyectoDataWrapperProyecto.ListaDatoExtraEcosistema.FirstOrDefault(dato=>dato.DatoExtraID.Equals(guidNombreCampo)); @@ -754,7 +754,7 @@ private bool GuardarDatosRegistro() dicDatosExtraProyecto.Add(filaDatoExtraProyecto.DatoExtraID, guidValorCampo); } } - } + } } else { @@ -948,7 +948,7 @@ private bool GuardarDatosRegistro() //Borramos Cache de la Identidad actual IdentidadCL identidadCL = new IdentidadCL(mEntityContext, mLoggingService, mRedisCacheWrapper, mConfigService, mServicesUtilVirtuosoAndReplication); - identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.Persona.Clave, IdentidadActual.PerfilID); + identidadCL.EliminarCacheGestorIdentidad(IdentidadActual.Clave, IdentidadActual.PersonaID.Value); identidadCL.Dispose(); Session.Set("tieneDatosRegistro", true); @@ -1140,7 +1140,7 @@ private void CargarCamposExtraRegistro() DataWrapperIdentidad identidadDW = new DataWrapperIdentidad(); if (IdentidadActual.TrabajaConOrganizacion || IdentidadActual.TrabajaPersonaConOrganizacion || IdentidadActual.OrganizacionID.HasValue) { - DataWrapperIdentidad identidadesPersonas = identidadCN.ObtenerPerfilesDePersona(IdentidadActual.PersonaID.Value, true); + DataWrapperIdentidad identidadesPersonas = identidadCN.ObtenerPerfilesDePersona(IdentidadActual.PersonaID.Value, true, IdentidadActual.Clave); Identidad identidad = identidadesPersonas.ListaIdentidad.FirstOrDefault(ident => ident.Tipo == 0); if (identidad != null) { @@ -1395,7 +1395,7 @@ private bool PestanyaDatos DataWrapperIdentidad identidadDW = new DataWrapperIdentidad(); if (IdentidadActual.TrabajaConOrganizacion || IdentidadActual.TrabajaPersonaConOrganizacion || IdentidadActual.OrganizacionID.HasValue) { - DataWrapperIdentidad dataWrapperIdentidad = identidadCN.ObtenerPerfilesDePersona(IdentidadActual.PersonaID.Value, true); + DataWrapperIdentidad dataWrapperIdentidad = identidadCN.ObtenerPerfilesDePersona(IdentidadActual.PersonaID.Value, true, IdentidadActual.Clave); if (dataWrapperIdentidad.ListaIdentidad.Any(ident => ident.Tipo==0)) { identidadDW = identidadCN.ObtenerDatosExtraProyectoOpcionIdentidadPorIdentidadID(dataWrapperIdentidad.ListaIdentidad.FirstOrDefault(ident => ident.Tipo == 0).IdentidadID); diff --git a/Gnoss.Web.Open/Services/RouteValueTransformer.cs b/Gnoss.Web.Open/Services/RouteValueTransformer.cs index 272e1ce..a915c57 100644 --- a/Gnoss.Web.Open/Services/RouteValueTransformer.cs +++ b/Gnoss.Web.Open/Services/RouteValueTransformer.cs @@ -11,6 +11,7 @@ using Es.Riam.Gnoss.Util.General; using Es.Riam.Gnoss.Web.MVC.Models.Administracion; using Es.Riam.Gnoss.Web.MVC.Models.Routes; +using Es.Riam.Util; using Gnoss.Web.Open.Properties; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Routing; @@ -71,8 +72,8 @@ public override async ValueTask TransformAsync(HttpContext if (segmentos.Length > 2 && !string.IsNullOrEmpty(segmentos[2])) { - string comunidadSegmento = segmentos[1].ToLower(); - if (comunidadSegmento.Equals(comunidadTxt)) + string comunidadSegmento = UtilCadenas.RemoveAccentsWithRegEx(segmentos[1].ToLower()); + if (comunidadSegmento.Equals(UtilCadenas.RemoveAccentsWithRegEx(comunidadTxt))) { nombreCortoComunidad = segmentos[2]; urlCorta = false; diff --git a/Gnoss.Web.Open/Views/Administracion/AdministrarAplicaciones/_partial-views/_home-community-section.cshtml b/Gnoss.Web.Open/Views/Administracion/AdministrarAplicaciones/_partial-views/_home-community-section.cshtml index ba8ee92..09a2ad2 100644 --- a/Gnoss.Web.Open/Views/Administracion/AdministrarAplicaciones/_partial-views/_home-community-section.cshtml +++ b/Gnoss.Web.Open/Views/Administracion/AdministrarAplicaciones/_partial-views/_home-community-section.cshtml @@ -88,6 +88,14 @@ Variables

+ @* Administrar Descarga Configuraciones *@ +
+

@Html.GetText("DEVTOOLS","DESCARGACONFIG")

+

+ @Html.GetText("DEVTOOLS","DESCARGACONFIG") +

+
+ @* Chequear Instalaciones (Comunidad) - Deshabilitado hasta asegurarse de qué añadir en la vista final. De momento funciona correctamente @if (permisosPaginas.AdministracionVistasPermitido && permisosPaginas.VistasActivadas) { diff --git a/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/Index.cshtml b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/Index.cshtml new file mode 100644 index 0000000..65f68d2 --- /dev/null +++ b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/Index.cshtml @@ -0,0 +1,186 @@ +@model AdministrarDatosExtraViewModel + +@{ + CommunityModel Comunidad = Html.GetComunidad(); + HeaderModel cabecera = Html.GetCabecera(); + Layout = "~/Views/Shared/Layout/_Layout_Admin.cshtml"; + // Carga de idiomas de la plataforma + string idiomas = ""; + // Contador del nº de pestañas listadas + int contNumPestañasVisibles = 0; + // Nº de pestañas de idiomas a visualizar en la sección Tab + int numMaxPestañasIdiomasVisibles = 2; + bool isInEcosistemaPlatform = !string.IsNullOrEmpty(ViewBag.isInEcosistemaPlatform) ? (bool.Parse(ViewBag.isInEcosistemaPlatform)) : false; +} + +@* Migas de Pan *@ +
+ +
+ +@* Contenido Central *@ +
+ @* Contenedor global de Traducciones *@ +
+ @* Contenido de las diferentes traducciones *@ +
+ + @* Contenedor del Título de la Sección + Buscador *@ +
+ @* Título de la sección de traducciones + Nº de traducciones *@ +
+
+

+ @Html.GetText("COMADMINCOMUNIDAD", "ADMINISTRARDATOSEXTRA") + +

+
+ @* Botón para crear item *@ + +
+ + @* Buscador de Datos extra + *@ + @* Contenido o tabla con las traducciones de la comunidad *@ +
+
+ @* Cabecera del listado de traducciones *@ +
    +
  • + @* Cabecera de páginas *@ +
    +
    +
    + @* Sección títulos de listado de páginas *@ +
    +
    +
    + Nombre +
    +
    + Tipo +
    +
    + Orden +
    +
    + URI +
    +
    + Obligatorio +
    +
    +
    +
    + @Html.GetText("ADMINISTRACIONBASICA","ACCIONES") +
    +
    +
    +
    +
    +
    +
  • +
+
    + @if(isInEcosistemaPlatform) + { + @foreach (DatoExtraModel dato in Model.ListaDatosExtraProyecto) + { + @Html.PartialView("../Administracion/AdministrarDatosExtra/_PintarDato", dato) + } + @foreach (DatoExtraVirtuosoModel dato in Model.ListaDatosExtraVirtuoso) + { + @Html.PartialView("../Administracion/AdministrarDatosExtra/_PintarDatoVirtuoso", dato) + } + } + else + { + @foreach (DatoExtraModel dato in Model.ListaDatosExtraProyecto) + { + @Html.PartialView("../Administracion/AdministrarDatosExtra/_PintarDato", dato) + } + @foreach (DatoExtraVirtuosoModel dato in Model.ListaDatosExtraVirtuoso) + { + @Html.PartialView("../Administracion/AdministrarDatosExtra/_PintarDatoVirtuoso", dato) + } + } +
+
+
+
+
+
+
+ +@Html.PartialView("_modal-views/_new-extra-data") +@Html.PartialView("_modal-views/_delete-extra-data") + +@* Carga de operativa *@ +@section operativaScript{ + + +} + + + + diff --git a/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_FichaOpcion.cshtml b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_FichaOpcion.cshtml new file mode 100644 index 0000000..3e589f2 --- /dev/null +++ b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_FichaOpcion.cshtml @@ -0,0 +1,72 @@ +@{ + // Id para los checkbox de tipo de visualización + Guid filterId = @Guid.NewGuid(); + string collapseId = "panel_collapse_" + filterId.ToString().Substring(0, 5); + string nombreFiltroPreview = ""; +} + + +
  • + +
    +
    +
    + @* Icono para arrastrar filtro *@ +
    + filter_alt +
    +
    +
    + @* Nombre del filtro *@ +
    + @nombreFiltroPreview +
    +
    + @*Sección de acciones del filtro *@ +
    +
    + +
    +
    +
    +
    +
    +
    + + @* Información detallada del filtro - Collapse *@ +
    + @* Indicación de que el filtro se ha eliminado *@ + +
    + @* Nombre del Filtro *@ +
    + + + @Html.GetText("AYUDACOMADMINFACETAS", "NOMBREFILTRO") +
    +
    +
    +
  • \ No newline at end of file diff --git a/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_PintarDato.cshtml b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_PintarDato.cshtml new file mode 100644 index 0000000..e85cd0e --- /dev/null +++ b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_PintarDato.cshtml @@ -0,0 +1,80 @@ +@model DatoExtraModel +@* +Descripción +----------------------------------------------- +Vista parcial para el pintado de cada Dato extra + +Variables +---------------------------------------------------------------- +*@ + +@{ + // Establecer en el ViewBag el idioma por defecto + string idiomaPorDefecto = ViewBag.IdiomaPorDefecto; + string urlEdit = ""; + string obligatorio = Model.Obligatorio ? "Sí" : "No"; + DatoExtraEditModel editModel = new DatoExtraEditModel(); + editModel.Nombre = Model.Nombre; + editModel.DatoExtraID = Model.DatoExtraID; + editModel.Obligatorio = Model.Obligatorio; + editModel.Opciones = Model.Opciones; + editModel.Tipo = Model.Tipo; + editModel.PredicadoRDF = Model.PredicadoRDF; +} + +@* +---------------------------------------------------------------- +-------------------- Vista parcial para cada traducción -------------------- +*@ + +@* Componente de dato extra *@ +
  • +
    +
    +
    +
    + @Model.Nombre +
    + +
    + @Model.Tipo +
    +
    + @Model.Orden +
    +
    + @Model.PredicadoRDF +
    +
    + @obligatorio +
    +
    + @* Acciones del dato extra *@ +
    +
    +
      +
    • + @* Editar dato extra - Edición vía Modal *@ + + edit + +
    • +
    • + @* Eliminar dato extra *@ + + delete + +
    • +
    +
    +
    +
    +
    +
  • +@*@Html.PartialView("_modal-views/_delete-extra-data", Model.DatoExtraID)*@ \ No newline at end of file diff --git a/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_PintarDatoVirtuoso.cshtml b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_PintarDatoVirtuoso.cshtml new file mode 100644 index 0000000..bd9a398 --- /dev/null +++ b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_PintarDatoVirtuoso.cshtml @@ -0,0 +1,79 @@ +@model DatoExtraVirtuosoModel +@* +Descripción +----------------------------------------------- +Vista parcial para el pintado de cada Dato extra + +Variables +---------------------------------------------------------------- +*@ + +@{ + // Establecer en el ViewBag el idioma por defecto + string idiomaPorDefecto = ViewBag.IdiomaPorDefecto; + string urlEdit = ""; + string obligatorio = Model.Obligatorio ? "Sí" : "No"; + DatoExtraEditModel editModel = new DatoExtraEditModel(); + editModel.Nombre = Model.Nombre; + editModel.DatoExtraID = Model.DatoExtraID; + editModel.Obligatorio = Model.Obligatorio; + editModel.Opciones = new List(); + editModel.Tipo = Model.Tipo; +} + +@* +---------------------------------------------------------------- +-------------------- Vista parcial para cada traducción -------------------- +*@ + +@* Componente de dato extra *@ +
  • +
    +
    +
    +
    + @Model.Nombre +
    + +
    + @Model.Tipo +
    +
    + @Model.Orden +
    +
    + @Model.PredicadoRDF +
    +
    + @obligatorio +
    +
    + @* Acciones del dato extra *@ +
    +
    +
      +
    • + @* Editar dato extra - Edición vía Modal *@ + + edit + +
    • +
    • + @* Eliminar dato extra *@ + + delete + +
    • +
    +
    +
    +
    +
    +
  • +@*@Html.PartialView("_modal-views/_delete-extra-data", Model.DatoExtraID)*@ \ No newline at end of file diff --git a/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_modal-views/_delete-extra-data.cshtml b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_modal-views/_delete-extra-data.cshtml new file mode 100644 index 0000000..be3a5bd --- /dev/null +++ b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_modal-views/_delete-extra-data.cshtml @@ -0,0 +1,45 @@ +@* +Descripción +----------------------------------------------- +Vista modal para confirmar la eliminación de un dato extra + + +Variables +---------------------------------------------------------------- +*@ +@{ + +} + + +@* Modal de eliminación de una dato extra *@ + \ No newline at end of file diff --git a/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_modal-views/_edit-extra-data.cshtml b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_modal-views/_edit-extra-data.cshtml new file mode 100644 index 0000000..42ad78b --- /dev/null +++ b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_modal-views/_edit-extra-data.cshtml @@ -0,0 +1,120 @@ +@model DatoExtraEditModel +@{ + // Cabecera para obtención de idiomas de la Comunidad + HeaderModel cabecera = Html.GetCabecera(); + string idModalUploadCrearPersonalizacion = "modal-edit-extra-data"; + string modalTitle = @Html.GetText("DEVTOOLS", "EDITARDATOEXTRA"); + string inputDisableClassName = "disabled"; + Guid key = Guid.NewGuid(); + string opciones = ""; + + foreach (DatoExtraOpcionModel opcion in Model.Opciones) + { + opciones += opcion.Nombre + ","; + } + string tagsAutoCompletarHtml = ""; + foreach (string item in opciones.Split(",")) + { + if (!string.IsNullOrEmpty(item)) + { + string tagId = @Guid.NewGuid().ToString().Substring(0, 5); + tagsAutoCompletarHtml += "
    "; + tagsAutoCompletarHtml += "
    "; + tagsAutoCompletarHtml += "" + item + ""; + tagsAutoCompletarHtml += "close"; + tagsAutoCompletarHtml += "
    "; + tagsAutoCompletarHtml += "
    "; + } + } +} + + +@* Modal con la información *@ + +@* Título del modal *@ + + diff --git a/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_modal-views/_new-extra-data.cshtml b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_modal-views/_new-extra-data.cshtml new file mode 100644 index 0000000..88a80bc --- /dev/null +++ b/Gnoss.Web.Open/Views/Administracion/AdministrarDatosExtra/_modal-views/_new-extra-data.cshtml @@ -0,0 +1,140 @@ +@* +Descripción +----------------------------------------------- +Vista modal donde se permitirá añadir un nuevo dato extra al registro + + +Variables +---------------------------------------------------------------- +*@ + +@{ + // Cabecera para obtención de idiomas de la Comunidad + HeaderModel cabecera = Html.GetCabecera(); + string idModalUploadCrearPersonalizacion = "modal-new-extra-data"; + string modalTitle = @Html.GetText("DEVTOOLS", "NUEVODATOEXTRA"); + string inputDisableClassName = "disabled"; + Guid key = Guid.NewGuid(); + +} + +@* Modal con la información *@ + \ No newline at end of file diff --git a/Gnoss.Web.Open/Views/Administracion/AdministrarDisenio/Index.cshtml b/Gnoss.Web.Open/Views/Administracion/AdministrarDisenio/Index.cshtml index b0845ee..be86666 100644 --- a/Gnoss.Web.Open/Views/Administracion/AdministrarDisenio/Index.cshtml +++ b/Gnoss.Web.Open/Views/Administracion/AdministrarDisenio/Index.cshtml @@ -4,7 +4,7 @@ Html.GetListaCSS().Add(Html.GetBaseUrlStatic() + "/cssNuevo/administracion.css?v=" + Html.GetVersion()); Html.GetListaCSS().Add(Html.GetBaseUrlStatic() + "/cssNuevo/semcms.css?v=" + Html.GetVersion()); - Layout = "~/Views/Shared/Layout/_Layout_AnteriorEAD.cshtml"; + Layout = "~/Views/Shared/Layout/_Layout_Admin.cshtml"; }
    diff --git a/Gnoss.Web.Open/Views/Administracion/AdministrarObjetosConocimiento/_partial-views/_ontology-secondary-entity-property-addPrimaryControlInt.cshtml b/Gnoss.Web.Open/Views/Administracion/AdministrarObjetosConocimiento/_partial-views/_ontology-secondary-entity-property-addPrimaryControlInt.cshtml index b3b55da..c0ff911 100644 --- a/Gnoss.Web.Open/Views/Administracion/AdministrarObjetosConocimiento/_partial-views/_ontology-secondary-entity-property-addPrimaryControlInt.cshtml +++ b/Gnoss.Web.Open/Views/Administracion/AdministrarObjetosConocimiento/_partial-views/_ontology-secondary-entity-property-addPrimaryControlInt.cshtml @@ -291,7 +291,15 @@ Variables onclick="AgregarAchivoClick(event,'@idControl', '@tipoArchivo');event.stopPropagation(); event.preventDefault();"> edit - + @* Botón de descarga *@ + @if (!string.IsNullOrEmpty(valorPropTexto)){ + + } +