version number visible

This commit is contained in:
Jörg Henke
2021-01-16 15:50:48 +01:00
parent ec68448200
commit 71bb01e05c
7 changed files with 151 additions and 98 deletions

View File

@ -1,17 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<classpath> <classpath>
<classpathentry kind="src" output="bin/main" path="src/jooq/java">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="bin/main" path="src/main/java"> <classpathentry kind="src" output="bin/main" path="src/main/java">
<attributes> <attributes>
<attribute name="gradle_scope" value="main"/> <attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/> <attribute name="gradle_used_by_scope" value="main,test"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="src" output="bin/main" path="src/jooq/java">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src/main/webapp"/>
<classpathentry kind="src" output="bin/main" path="src/main/resources"> <classpathentry kind="src" output="bin/main" path="src/main/resources">
<attributes> <attributes>
<attribute name="gradle_scope" value="main"/> <attribute name="gradle_scope" value="main"/>
@ -36,6 +37,5 @@
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/> <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes> </attributes>
</classpathentry> </classpathentry>
<classpathentry kind="src" path="src/main/webapp"/>
<classpathentry kind="output" path="bin/default"/> <classpathentry kind="output" path="bin/default"/>
</classpath> </classpath>

View File

@ -11,6 +11,10 @@
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/jooq/java"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="src/jooq/java"/>
<wb-resource deploy-path="/" source-path="src/main/webapp"/> <wb-resource deploy-path="/" source-path="src/main/webapp"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/jooq/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/test/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/webapp"/> <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/webapp"/>
</wb-module> </wb-module>

View File

@ -22,7 +22,7 @@ apply plugin: 'eclipse'
apply plugin: 'nu.studer.jooq' apply plugin: 'nu.studer.jooq'
group = 'jottyfan' group = 'jottyfan'
version = '1.1.2' version = '1.1.3'
description = """timetrack""" description = """timetrack"""
@ -108,6 +108,9 @@ jooq {
war { war {
archiveName 'timetrack.war' archiveName 'timetrack.war'
manifest {
attributes('Implementation-Version': project.version)
}
} }
// removes the task dependency from compileJava to generateTimetrackJooqSchemaSource // removes the task dependency from compileJava to generateTimetrackJooqSchemaSource
project.tasks.getByName('compileJava').dependsOn -= 'generateTimetrackJooqSchemaSource' project.tasks.getByName('compileJava').dependsOn -= 'generateTimetrackJooqSchemaSource'

View File

@ -1,5 +1,8 @@
package de.jottyfan.timetrack.modules; package de.jottyfan.timetrack.modules;
import java.io.InputStream;
import java.util.Properties;
import javax.enterprise.context.RequestScoped; import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage; import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext; import javax.faces.context.FacesContext;
@ -59,6 +62,25 @@ public class SessionControl {
} }
} }
/**
* get the version from the mainfest file
*
* @return the version
*/
public String getVersion() {
FacesContext facesContext = FacesContext.getCurrentInstance();
try (InputStream is = facesContext.getExternalContext().getResourceAsStream("META-INF/MANIFEST.MF")){
// from servletcontext
Properties attributes = new Properties();
attributes.load(is);
return attributes.getProperty("Implementation-Version", "no Implementation-Version attribute found in MANIFEST");
} catch (Exception e) {
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "error on loading the version from the Manifest file", e.getMessage());
FacesContext.getCurrentInstance().addMessage(null, msg);
return "?";
}
}
/** /**
* @return the secretNew1 * @return the secretNew1
*/ */
@ -67,8 +89,7 @@ public class SessionControl {
} }
/** /**
* @param secretNew1 * @param secretNew1 the secretNew1 to set
* the secretNew1 to set
*/ */
public void setSecretNew1(String secretNew1) { public void setSecretNew1(String secretNew1) {
this.secretNew1 = secretNew1; this.secretNew1 = secretNew1;
@ -82,8 +103,7 @@ public class SessionControl {
} }
/** /**
* @param secretNew2 * @param secretNew2 the secretNew2 to set
* the secretNew2 to set
*/ */
public void setSecretNew2(String secretNew2) { public void setSecretNew2(String secretNew2) {
this.secretNew2 = secretNew2; this.secretNew2 = secretNew2;

View File

@ -1,73 +1,72 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:my="http://xmlns.jcp.org/jsf/composite/my" xmlns:b="http://bootsfaces.net/ui">
xmlns:my="http://xmlns.jcp.org/jsf/composite/my" xmlns:b="http://bootsfaces.net/ui">
<h:head> <h:head>
</h:head> </h:head>
<h:body> <h:body>
<ui:composition template="/pages/template.xhtml"> <ui:composition template="/pages/template.xhtml">
<ui:define name="top"> <ui:define name="top">
<b:messages /> <b:messages />
</ui:define> </ui:define>
<ui:define name="main"> <ui:define name="main">
<b:panel title="Einstellungen" collapsed="true" rendered="#{sessionBean.hasLogin}"> <b:panel title="Einstellungen" collapsed="true" rendered="#{sessionBean.hasLogin}">
<b:accordion expandedPanels="layout"> <b:accordion expandedPanels="layout">
<b:panel id="layout" title="Layout"> <b:panel id="layout" title="Layout">
<b:form> <b:form>
<b:selectOneMenu value="#{themeBean.currentTheme}"> <b:selectOneMenu value="#{themeBean.currentTheme}">
<f:selectItems value="#{themeBean.validThemes}" var="t" itemValue="#{t}" itemLabel="#{t}" /> <f:selectItems value="#{themeBean.validThemes}" var="t" itemValue="#{t}" itemLabel="#{t}" />
</b:selectOneMenu> </b:selectOneMenu>
<b:commandButton action="#{doneControl.toStart}" value="ändern" iconAwesome="pencil" look="warning" /> <b:commandButton action="#{doneControl.toStart}" value="ändern" iconAwesome="pencil" look="warning" />
</b:form> </b:form>
</b:panel> </b:panel>
<b:panel id="password" title="Passwort"> <b:panel id="password" title="Passwort">
<b:form> <b:form>
<b:inputSecret value="#{sessionControl.secretNew1}" required="true" requiredMessage="Das Feld Passwort muss ausgefüllt werden."> <b:inputSecret value="#{sessionControl.secretNew1}" required="true" requiredMessage="Das Feld Passwort muss ausgefüllt werden.">
<f:facet name="prepend"> <f:facet name="prepend">
<h:outputText value="Passwort" /> <h:outputText value="Passwort" />
</f:facet> </f:facet>
</b:inputSecret> </b:inputSecret>
<b:inputSecret value="#{sessionControl.secretNew2}" required="true" requiredMessage="Das Feld Passwort nochmal muss ausgefüllt werden."> <b:inputSecret value="#{sessionControl.secretNew2}" required="true" requiredMessage="Das Feld Passwort nochmal muss ausgefüllt werden.">
<f:facet name="prepend"> <f:facet name="prepend">
<h:outputText value="Passwort nochmal" /> <h:outputText value="Passwort nochmal" />
</f:facet> </f:facet>
</b:inputSecret> </b:inputSecret>
<b:commandButton action="#{sessionControl.doChangePassword}" value="übernehmen" look="warning" /> <b:commandButton action="#{sessionControl.doChangePassword}" value="übernehmen" look="warning" />
</b:form> </b:form>
</b:panel> </b:panel>
</b:accordion> </b:accordion>
</b:panel> </b:panel>
<b:panel title="Login" rendered="#{sessionBean.hasNoLogin}" styleClass="loginpanel"> <b:panel title="Anmeldung" collapsible="false" styleClass="loginpanel" rendered="#{sessionBean.hasNoLogin}">
<b:form> <b:form>
<b:selectOneMenu value="#{sessionBean.username}"> <b:selectOneMenu value="#{sessionBean.username}">
<f:facet name="prepend"> <f:facet name="prepend">
<h:outputText value="Username" /> <h:outputText value="Benutzer" />
</f:facet> </f:facet>
<f:selectItem itemValue="henkej" itemLabel="Jörg Henke" /> <f:selectItem itemValue="henkej" itemLabel="Jörg Henke" />
<f:selectItem itemValue="piontekm" itemLabel="Michael Piontek" /> </b:selectOneMenu>
</b:selectOneMenu> <b:inputSecret value="#{sessionBean.secret}">
<b:inputSecret value="#{sessionBean.secret}"> <f:facet name="prepend">
<f:facet name="prepend"> <h:outputText value="Passwort" />
<h:outputText value="Passwort" /> </f:facet>
</f:facet> </b:inputSecret>
</b:inputSecret> <h:panelGrid columns="2" columnClasses="left,right" style="width: 100%">
<b:commandButton action="#{sessionControl.doLogin}" value="Login" look="primary" /> <h:outputText value="Version: #{sessionControl.version}" styleClass="version" />
</b:form> <b:commandButton action="#{sessionControl.doLogin}" value="Anmelden" look="primary" style="width: 100%" />
</b:panel> </h:panelGrid>
</ui:define> </b:form>
<ui:define name="navigation"> </b:panel>
<b:form rendered="#{sessionBean.hasLogin}"> </ui:define>
<b:buttonGroup> <ui:define name="navigation">
<b:commandButton action="#{noteControl.toList}" value="#{noteControl.amount} Notizen verwalten" look="primary" iconAwesome="comments-o" <b:form rendered="#{sessionBean.hasLogin}">
rendered="#{sessionBean.hasPrivilege('write_note')}" /> <b:buttonGroup>
<b:commandButton action="#{contactControl.toList}" value="#{contactControl.amount} Kontakte verwalten" look="primary" iconAwesome="group" <b:commandButton action="#{noteControl.toList}" value="#{noteControl.amount} Notizen verwalten" look="primary" iconAwesome="comments-o" rendered="#{sessionBean.hasPrivilege('write_note')}" />
rendered="#{sessionBean.hasPrivilege('write_contact')}" /> <b:commandButton action="#{contactControl.toList}" value="#{contactControl.amount} Kontakte verwalten" look="primary" iconAwesome="group" rendered="#{sessionBean.hasPrivilege('write_contact')}" />
<b:commandButton action="#{doneControl.toList}" value="Arbeitszeit verwalten" look="primary" iconAwesome="clock-o" rendered="#{sessionBean.hasPrivilege('write_done')}" /> <b:commandButton action="#{doneControl.toList}" value="Arbeitszeit verwalten" look="primary" iconAwesome="clock-o" rendered="#{sessionBean.hasPrivilege('write_done')}" />
<b:commandButton action="#{doneControl.toRead}" value="Arbeitszeiten anzeigen" look="primary" iconAwesome="clock-o" rendered="#{sessionBean.hasPrivilege('read_done')}" /> <b:commandButton action="#{doneControl.toRead}" value="Arbeitszeiten anzeigen" look="primary" iconAwesome="clock-o" rendered="#{sessionBean.hasPrivilege('read_done')}" />
<b:commandButton action="#{sessionControl.doLogout}" value="abmelden" look="danger" iconAwesome="sign-out" /> <b:commandButton action="#{sessionControl.doLogout}" value="abmelden" look="danger" iconAwesome="sign-out" />
</b:buttonGroup> </b:buttonGroup>
</b:form> </b:form>
</ui:define> </ui:define>
</ui:composition> </ui:composition>
</h:body> </h:body>
</html> </html>

View File

@ -1,24 +1,24 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:my="http://xmlns.jcp.org/jsf/composite/my" xmlns:b="http://bootsfaces.net/ui"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:my="http://xmlns.jcp.org/jsf/composite/my" xmlns:b="http://bootsfaces.net/ui" style="height: 100%; width: 100%">
<h:head> <h:head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</h:head> </h:head>
<h:body styleClass="body"> <h:body styleClass="body">
<h:outputStylesheet name="css/style.css" /> <h:outputStylesheet name="css/style.css" />
<h:outputScript library="bsf" name="jq/jquery.js" target="head" /> <h:outputScript library="bsf" name="jq/jquery.js" target="head" />
<div class="page"> <div class="page">
<div class="top"> <div class="top">
<ui:insert name="top" /> <ui:insert name="top" />
</div> </div>
<div> <div>
<b:messages /> <b:messages />
</div> </div>
<div class="body"> <div class="main">
<ui:insert name="main" /> <ui:insert name="main" />
</div> </div>
<div class="navigation"> <div class="navigation">
<ui:insert name="navigation" /> <ui:insert name="navigation" />
</div> </div>
</div> </div>
</h:body> </h:body>
</html> </html>

View File

@ -1,3 +1,16 @@
.body {
height: 100%;
width: 100%;
overflow: auto;
}
.page {
height: 100%;
width: 100%;
background-image: linear-gradient(to bottom, #fff 0%, #ccc 20%)
!important;
}
.emph { .emph {
border-radius: 3px !important; border-radius: 3px !important;
border: 1px solid #3070b0 !important; border: 1px solid #3070b0 !important;
@ -23,11 +36,13 @@
} }
.successWell { .successWell {
background-image: linear-gradient(to bottom, #ceeaca 0%, #f7fff7 100%) !important; background-image: linear-gradient(to bottom, #ceeaca 0%, #f7fff7 100%)
!important;
} }
.dangerWell { .dangerWell {
background-image: linear-gradient(to bottom, #eacaca 0%, #fff7f7 100%) !important; background-image: linear-gradient(to bottom, #eacaca 0%, #fff7f7 100%)
!important;
} }
.WP2 { .WP2 {
@ -45,3 +60,15 @@
background-color: #e396ff !important; background-color: #e396ff !important;
} }
.left {
text-align: left;
}
.right {
text-align: right;
}
.version {
font-size: small;
color: silver;
}