Menú principal dinámico en función de login/logout y refresco de la

página principal al realizar login o logout. Activación de awesome fonts
de primefaces, para disponer de ás iconos.
This commit is contained in:
mgarcianun
2019-12-04 17:29:41 +01:00
parent be46189d97
commit 55e69697ed
4 changed files with 45 additions and 66 deletions

View File

@@ -23,6 +23,12 @@
<param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value> <param-value>.xhtml</param-value>
</context-param> </context-param>
<context-param>
<param-name>primefaces.FONT_AWESOME</param-name>
<param-value>true</param-value>
</context-param>
<context-param> <context-param>
<param-name>primefaces.THEME</param-name> <param-name>primefaces.THEME</param-name>
<param-value>#{sessionPreferences.currentTheme}</param-value> <param-value>#{sessionPreferences.currentTheme}</param-value>

View File

@@ -34,55 +34,10 @@
</div> </div>
<hr /> <hr />
<div id="menuDiv"> <div id="menuDiv">
<h:form id="frmMenu">
<p:growl id="messages" sticky="true" showDetail="true" life="3000" /> <p:growl id="messages" sticky="true" showDetail="true" life="3000" />
<h:form id="frmLogin">
<p:menubar model="#{menuView.model}"> <i id="loginSpin" class="pi pi-spin pi-spinner hide" style="font-size: 3em"></i>
<p:menuitem label="Home" icon="pi pi-home" outcome="home" />
<p:submenu label="Administración del sistema" icon="pi pi-briefcase">
<p:menuitem value="Gestionar especialidades" icon="pi pi-briefcase" action="#{menuView.goManageSpecialties}" />
<p:menuitem value="Gestionar CAPs" action="#{menuView.goManageSpecialties}" />
<p:separator />
<p:menuitem value="Consultar medicos de familia por CAP" icon="pi pi-search" action="#{menuView.goManageSpecialties}" />
<p:separator />
<p:menuitem value="Nuevo administrador" icon="pi pi-user" action="#{menuView.goManageSpecialties}" />
</p:submenu>
<p:submenu label="Visitas" icon="pi pi-calendar">
<p:menuitem value="Programar visita" icon="pi pi-briefcase" action="#{menuView.goVisit}" />
<p:menuitem value="Ver visitas programadas" icon="pi pi-briefcase" action="#{menuView.goVisit}" />
</p:submenu>
<p:submenu label="Pruebas médicas" icon="pi pi-clone">
<p:menuitem value="Gestionar pruebas médicas" icon="pi pi-briefcase" action="#{menuView.goMedicalTests}" />
<p:menuitem value="Consultar médicos especialistas por especialidad" action="#{menuView.goMedicalTests}" />
<p:separator />
<p:menuitem value="Listar medicos especialistas por especialidad" icon="pi pi-search" action="#{menuView.goMedicalTests}" />
</p:submenu>
<p:submenu label="Preguntas" icon="pi pi-clone">
<p:menuitem value="Añadir pregunta" action="#{menuView.goMedicalTests}" />
<p:menuitem value="Responder prguntas pendientes" icon="pi pi-search" action="#{menuView.goMedicalTests}" />
</p:submenu>
<p:submenu label="Perfil" icon="pi pi-id-card">
<p:menuitem value="Nuevo paciente" icon="pi pi-briefcase" outcome="AddPatient" />
<p:menuitem value="Nuevo médico de familia" outcome="AddFamilyDoctor" />
<p:menuitem value="Nuevo médico especialista" outcome="AddSpecialistDoctor" />
<p:separator />
<p:menuitem value="Actualizar mi perfil" icon="pi pi-search" action="#{menuView.goUpdateProfile}" />
<p:separator />
<p:menuitem value="Cambiar médico de familia" icon="pi pi-search" outcome="ChangeFamilyDoctor" />
<p:separator />
<p:menuitem value="Cambiar de CAP" icon="pi pi-search" outcome="changecap" />
</p:submenu>
<f:facet name="options">
<ui:fragment rendered="#{home.logedIn}">
<h:outputText value="hola, #{home.userName} " />
<p:commandButton value="Logout" update="messages" icon="pi pi-user" action="#{loginView.logout}" />
</ui:fragment>
<ui:fragment rendered="#{not home.logedIn}">
<h:outputText value="hola, invitado " />
<p:commandButton value="login" icon="pi pi-user" onclick="PF('dlgLogin').show();" title="login" />
<p:button value="Registrarse" icon="pi pi-user" outcome="RegisterUser" />
<p:dialog header="Acceder al sistema" widgetVar="dlgLogin" resizable="false"> <p:dialog header="Acceder al sistema" widgetVar="dlgLogin" resizable="false">
<h:panelGrid columns="2" cellpadding="5"> <h:panelGrid columns="2" cellpadding="5">
@@ -93,11 +48,26 @@
<p:password id="password" value="#{loginView.password}" /> <p:password id="password" value="#{loginView.password}" />
<f:facet name="footer"> <f:facet name="footer">
<p:commandButton value="Login" update="messages" icon="pi pi-user" action="#{loginView.login}" onstart="showSpinner()" oncomplete="handleLoginRequest(xhr, status, args)" /> <p:commandButton value="Login" update="messages, frmMenu" icon="pi pi-user" action="#{loginView.login}" onstart="showSpinner()"
<i id="loginSpin" class="pi pi-spin pi-spinner hide" style="font-size: 3em"></i> oncomplete="handleLoginRequest(xhr, status, args)">
<p:ajax event="keyup" update="out" listener="#{listenerView.handleKeyEvent}" />
</p:commandButton>
<p:commandButton value="Cancel" icon="pi pi-ban" onclick="PF('dlgLogin').hide();" />
</f:facet> </f:facet>
</h:panelGrid> </h:panelGrid>
</p:dialog> </p:dialog>
</h:form>
<h:form id="frmMenu">
<p:menubar model="#{menuView.model}">
<f:facet name="options">
<ui:fragment rendered="#{home.logedIn}">
<h:outputText value="hola, #{home.userName} " />
<p:commandButton value="Logout" icon="pi pi-sign-out" action="#{loginView.logout}" />
</ui:fragment>
<ui:fragment rendered="#{not home.logedIn}">
<h:outputText value="hola, invitado " />
<p:commandButton value="login" icon="pi pi-sign-in" onclick="PF('dlgLogin').show();" title="login" />
<p:button value="Registrarse" icon="pi pi-user-plus" outcome="RegisterUser" />
</ui:fragment> </ui:fragment>
</f:facet> </f:facet>
</p:menubar> </p:menubar>

View File

@@ -90,24 +90,24 @@ public class MenuMBean implements Serializable {
// Perfil // Perfil
subMenu = new DefaultSubMenu("Gestionar perfil", "pi pi-id-card"); subMenu = new DefaultSubMenu("Gestionar perfil", "pi pi-id-card");
if (SessionUtils.isLogedIn() == false) { if (SessionUtils.isLogedIn() == false) {
subMenu.addElement(createMenuItem("Registro de usuario", "pi pi-id-card", "RegisterUser", null)); subMenu.addElement(createMenuItem("Registro de usuario", "pi pi-users", "RegisterUser", null));
subMenu.addElement(createMenuItem("Registro de paciente", "pi pi-id-card", "AddPatient", null)); subMenu.addElement(createMenuItem("Registro de paciente", "pi pi-user-plus", "AddPatient", null));
subMenu.addElement(createMenuItem("Registro de médico", "pi pi-id-card", "AddFamilyDoctor", null)); subMenu.addElement(createMenuItem("Registro de médico", "pi pi-user-plus", "AddFamilyDoctor", null));
subMenu.addElement(createMenuItem("Registro de especialista", "pi pi-id-card", "AddFamilyDoctor", null)); subMenu.addElement(createMenuItem("Registro de especialista", "pi pi-user-plus", "AddFamilyDoctor", null));
subMenu.addElement(createMenuItem("Registro de médico", "pi pi-id-card", "AddSpecialistDoctor", null)); subMenu.addElement(createMenuItem("Registro de médico", "pi pi-id-user-plus", "AddSpecialistDoctor", null));
subMenu.addElement(new DefaultSeparator()); subMenu.addElement(new DefaultSeparator());
} else { } else {
subMenu.addElement(createMenuItem("Actualizar mi perfil", "pi pi-search", "UpdateProfile", null)); subMenu.addElement(createMenuItem("Actualizar mi perfil", "pi pi-user-edit", "UpdateProfile", null));
subMenu.addElement(new DefaultSeparator()); subMenu.addElement(new DefaultSeparator());
// TODO: mostrar este menú solo si el usuario es paciente // TODO: mostrar este menú solo si el usuario es paciente
if (true == true) { if (true == true) {
subMenu.addElement(createMenuItem("Cambiar médico de familia", "pi pi-search", "ChangeFamilyDoctor", null)); subMenu.addElement(createMenuItem("Cambiar médico de familia", "pi pi-chevron-circle-right", "ChangeFamilyDoctor", null));
subMenu.addElement(new DefaultSeparator()); subMenu.addElement(new DefaultSeparator());
} }
// TODO: mostrar este menú solo si el usuario es médico de familia // TODO: mostrar este menú solo si el usuario es médico de familia
if (true == true) if (true == true)
subMenu.addElement(createMenuItem("Cambiar centro de atención", "pi pi-search", "changecap", null)); subMenu.addElement(createMenuItem("Cambiar centro de atención", "fa fa-h-square", "changecap", null));
} }
model.addElement(subMenu); model.addElement(subMenu);
} }

View File

@@ -52,7 +52,7 @@ public class LoginMBean {
session.setAttribute("userid", "1"); session.setAttribute("userid", "1");
message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Bienvenido", username); message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Bienvenido", username);
return ("home"); return ("home?faces-redirect=true");
} else { } else {
loggedIn = false; loggedIn = false;
message = new FacesMessage(FacesMessage.SEVERITY_WARN, "Loggin Error", "El usuario o la contraseña son incorrectos"); message = new FacesMessage(FacesMessage.SEVERITY_WARN, "Loggin Error", "El usuario o la contraseña son incorrectos");
@@ -66,8 +66,11 @@ public class LoginMBean {
// logout event, invalidate session // logout event, invalidate session
public String logout() { public String logout() {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Sessión cerrada", "Ha cerrado correctament su ssesión. Hasta la vista");
FacesContext.getCurrentInstance().addMessage(null, message);
HttpSession session = SessionUtils.getSession(); HttpSession session = SessionUtils.getSession();
session.invalidate(); session.invalidate();
return "home?refresh=1&faces-redirect=true"; return "home?faces-redirect=true";
} }
} }