# HG changeset patch # User Mike Becker # Date 1589628584 -7200 # Node ID dd0a45ae25d7f78adf66b783e367f00f60092cf5 # Parent 2a90d105edecc32027709ea6d4bc8f92748f3ae0 adds the possibility to add users / developers diff -r 2a90d105edec -r dd0a45ae25d7 setup/postgres/psql_default_data.sql --- a/setup/postgres/psql_default_data.sql Sat May 16 11:37:57 2020 +0200 +++ b/setup/postgres/psql_default_data.sql Sat May 16 13:29:44 2020 +0200 @@ -1,6 +0,0 @@ -/* - * Some default data. - */ - -insert into lpit_user (userid, username) -values (-1, 'Anonymous'); diff -r 2a90d105edec -r dd0a45ae25d7 src/main/java/de/uapcore/lightpit/LightPITModule.java --- a/src/main/java/de/uapcore/lightpit/LightPITModule.java Sat May 16 11:37:57 2020 +0200 +++ b/src/main/java/de/uapcore/lightpit/LightPITModule.java Sat May 16 13:29:44 2020 +0200 @@ -68,21 +68,6 @@ String modulePath(); /** - * Returns the properties key for the module name. - * - * @return the properties key - */ - String nameKey() default "name"; - - /** - * Returns the properties key for the module description. - * - * @return the properties key - */ - String descKey() default "description"; - - - /** * Returns the properties key for the menu label. *

* Set this string to empty string, if the module should be hidden from @@ -126,15 +111,13 @@ * are proxied by this object. */ class ELProxy { - private final String bundleBaseName, modulePath, menuKey, titleKey, nameKey, descKey; + private final String bundleBaseName, modulePath, menuKey, titleKey; public ELProxy(LightPITModule annotation) { bundleBaseName = annotation.bundleBaseName(); modulePath = annotation.modulePath(); menuKey = annotation.menuKey(); titleKey = annotation.titleKey(); - nameKey = annotation.nameKey(); - descKey = annotation.descKey(); } public String getBundleBaseName() { @@ -152,14 +135,5 @@ public String getTitleKey() { return titleKey; } - - public String getNameKey() { - return nameKey; - } - - public String getDescKey() { - return descKey; - } - } } diff -r 2a90d105edec -r dd0a45ae25d7 src/main/java/de/uapcore/lightpit/dao/postgres/PGProjectDao.java --- a/src/main/java/de/uapcore/lightpit/dao/postgres/PGProjectDao.java Sat May 16 11:37:57 2020 +0200 +++ b/src/main/java/de/uapcore/lightpit/dao/postgres/PGProjectDao.java Sat May 16 13:29:44 2020 +0200 @@ -96,7 +96,7 @@ insert.setString(1, instance.getName()); setStringOrNull(insert, 2, instance.getDescription()); setStringOrNull(insert, 3, instance.getRepoUrl()); - setForeignKeyOrNull(insert, 4, instance.getOwner(), User::getUserID); + setForeignKeyOrNull(insert, 4, instance.getOwner(), User::getId); insert.executeUpdate(); } @@ -106,7 +106,7 @@ update.setString(1, instance.getName()); setStringOrNull(update, 2, instance.getDescription()); setStringOrNull(update, 3, instance.getRepoUrl()); - setForeignKeyOrNull(update, 4, instance.getOwner(), User::getUserID); + setForeignKeyOrNull(update, 4, instance.getOwner(), User::getId); update.setInt(5, instance.getId()); return update.executeUpdate() > 0; } diff -r 2a90d105edec -r dd0a45ae25d7 src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java --- a/src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java Sat May 16 11:37:57 2020 +0200 +++ b/src/main/java/de/uapcore/lightpit/dao/postgres/PGUserDao.java Sat May 16 13:29:44 2020 +0200 @@ -44,10 +44,6 @@ public final class PGUserDao implements UserDao, GenericDao { - public static final String[] COLUMNS = { - "id", "username", "lastname", "givenname", "mail" - }; - private final PreparedStatement insert, update, list, find; public PGUserDao(Connection connection) throws SQLException { @@ -89,7 +85,7 @@ setStringOrNull(update, 1, instance.getLastname()); setStringOrNull(update, 2, instance.getGivenname()); setStringOrNull(update, 3, instance.getMail()); - update.setInt(4, instance.getUserID()); + update.setInt(4, instance.getId()); return update.executeUpdate() > 0; } diff -r 2a90d105edec -r dd0a45ae25d7 src/main/java/de/uapcore/lightpit/entities/User.java --- a/src/main/java/de/uapcore/lightpit/entities/User.java Sat May 16 11:37:57 2020 +0200 +++ b/src/main/java/de/uapcore/lightpit/entities/User.java Sat May 16 13:29:44 2020 +0200 @@ -34,18 +34,18 @@ public static final int ANONYMOUS_USERID = -1; - private final int userID; + private final int id; private String username; private String mail; private String givenname; private String lastname; - public User(int userID) { - this.userID = userID; + public User(int id) { + this.id = id; } - public int getUserID() { - return userID; + public int getId() { + return id; } public String getUsername() { @@ -82,9 +82,11 @@ public String getDisplayname() { StringBuilder dn = new StringBuilder(); - dn.append(givenname); + if (givenname != null) + dn.append(givenname); dn.append(' '); - dn.append(lastname); + if (lastname != null) + dn.append(lastname); dn.append(' '); if (mail != null && !mail.isBlank()) { dn.append("<"+mail+">"); @@ -98,11 +100,11 @@ if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; - return userID == user.userID; + return id == user.id; } @Override public int hashCode() { - return Objects.hash(userID); + return Objects.hash(id); } } diff -r 2a90d105edec -r dd0a45ae25d7 src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java --- a/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java Sat May 16 11:37:57 2020 +0200 +++ b/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java Sat May 16 13:29:44 2020 +0200 @@ -52,16 +52,14 @@ @RequestMapping(method = HttpMethod.GET) public ResponseType index(HttpServletRequest req, DataAccessObjects dao) throws SQLException { - final var projectDao = dao.getProjectDao(); - - req.setAttribute("projects", projectDao.list()); + req.setAttribute("projects", dao.getProjectDao().list()); setDynamicFragment(req, "projects"); return ResponseType.HTML; } @RequestMapping(requestPath = "edit", method = HttpMethod.GET) - public ResponseType displayCreateForm(HttpServletRequest req, DataAccessObjects dao) throws SQLException { + public ResponseType edit(HttpServletRequest req, DataAccessObjects dao) throws SQLException { final var projectDao = dao.getProjectDao(); Optional id = getParameter(req, Integer.class, "id"); @@ -70,6 +68,7 @@ } else { req.setAttribute("project", new Project(-1)); } + req.setAttribute("users", dao.getUserDao().list()); setDynamicFragment(req, "project-form"); diff -r 2a90d105edec -r dd0a45ae25d7 src/main/java/de/uapcore/lightpit/modules/UsersModule.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/de/uapcore/lightpit/modules/UsersModule.java Sat May 16 13:29:44 2020 +0200 @@ -0,0 +1,101 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright 2018 Mike Becker. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ +package de.uapcore.lightpit.modules; + + +import de.uapcore.lightpit.*; +import de.uapcore.lightpit.dao.DataAccessObjects; +import de.uapcore.lightpit.entities.User; + +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServletRequest; +import java.sql.SQLException; +import java.util.Optional; + +@LightPITModule( + bundleBaseName = "localization.users", + modulePath = "teams", + defaultPriority = 100 +) +@WebServlet( + name = "UsersModule", + urlPatterns = "/teams/*" +) +public final class UsersModule extends AbstractLightPITServlet { + + @RequestMapping(method = HttpMethod.GET) + public ResponseType index(HttpServletRequest req, DataAccessObjects dao) throws SQLException { + final var userDao = dao.getUserDao(); + + req.setAttribute("users", userDao.list()); + setDynamicFragment(req, "users"); + + return ResponseType.HTML; + } + + @RequestMapping(requestPath = "edit", method = HttpMethod.GET) + public ResponseType edit(HttpServletRequest req, DataAccessObjects dao) throws SQLException { + final var userDao = dao.getUserDao(); + + Optional id = getParameter(req, Integer.class, "id"); + if (id.isPresent()) { + req.setAttribute("user", Optional.ofNullable(userDao.find(id.get())).orElse(new User(-1))); + } else { + req.setAttribute("user", new User(-1)); + } + + setDynamicFragment(req, "user-form"); + + return ResponseType.HTML; + } + + @RequestMapping(requestPath = "commit", method = HttpMethod.POST) + public ResponseType commit(HttpServletRequest req, DataAccessObjects dao) { + + User user = new User(-1); + try { + user = new User(getParameter(req, Integer.class, "userid").orElseThrow()); + user.setUsername(getParameter(req, String.class, "username").orElseThrow()); + getParameter(req, String.class, "givenname").ifPresent(user::setGivenname); + getParameter(req, String.class, "lastname").ifPresent(user::setLastname); + getParameter(req, String.class, "mail").ifPresent(user::setMail); + + dao.getUserDao().saveOrUpdate(user); + + setRedirectLocation(req, "./teams/"); + setDynamicFragment(req, Constants.DYN_FRAGMENT_COMMIT_SUCCESSFUL); + } catch (NullPointerException | NumberFormatException | SQLException ex) { + // TODO: set request attribute with error text + req.setAttribute("user", user); + setDynamicFragment(req, "user-form"); + } + + return ResponseType.HTML; + } +} diff -r 2a90d105edec -r dd0a45ae25d7 src/main/resources/localization/home.properties --- a/src/main/resources/localization/home.properties Sat May 16 11:37:57 2020 +0200 +++ b/src/main/resources/localization/home.properties Sat May 16 13:29:44 2020 +0200 @@ -21,8 +21,6 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -name = Home Page -description = The default page that is displayed when visiting the site. menuLabel = Home version=LightPIT - Version 0.1 (Snapshot) \ No newline at end of file diff -r 2a90d105edec -r dd0a45ae25d7 src/main/resources/localization/home_de.properties --- a/src/main/resources/localization/home_de.properties Sat May 16 11:37:57 2020 +0200 +++ b/src/main/resources/localization/home_de.properties Sat May 16 13:29:44 2020 +0200 @@ -21,8 +21,6 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -name = Startseite -description = Die Seite, die dem Benutzer standardm\u00e4\u00dfig beim Besuch angezeigt wird. menuLabel = Startseite version=LightPIT - Version 0.1 (Entwicklungsversion) diff -r 2a90d105edec -r dd0a45ae25d7 src/main/resources/localization/language.properties --- a/src/main/resources/localization/language.properties Sat May 16 11:37:57 2020 +0200 +++ b/src/main/resources/localization/language.properties Sat May 16 13:29:44 2020 +0200 @@ -21,8 +21,6 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -name = Language Selector -description=Where the user can choose his / her language setting. menuLabel=Language submit = Switch language diff -r 2a90d105edec -r dd0a45ae25d7 src/main/resources/localization/language_de.properties --- a/src/main/resources/localization/language_de.properties Sat May 16 11:37:57 2020 +0200 +++ b/src/main/resources/localization/language_de.properties Sat May 16 13:29:44 2020 +0200 @@ -21,9 +21,6 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -name = Sprachauswahl -description = Hier kann der Benutzer die Sprache f\u00fcr die Website ausw\u00e4hlen. - menuLabel = Sprache submit = Sprache ausw\u00e4hlen diff -r 2a90d105edec -r dd0a45ae25d7 src/main/resources/localization/projects.properties --- a/src/main/resources/localization/projects.properties Sat May 16 11:37:57 2020 +0200 +++ b/src/main/resources/localization/projects.properties Sat May 16 13:29:44 2020 +0200 @@ -21,8 +21,6 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -name=Project Management -description=Allows the configuration of projects. menuLabel=Projects menu.versions=Versions diff -r 2a90d105edec -r dd0a45ae25d7 src/main/resources/localization/projects_de.properties --- a/src/main/resources/localization/projects_de.properties Sat May 16 11:37:57 2020 +0200 +++ b/src/main/resources/localization/projects_de.properties Sat May 16 13:29:44 2020 +0200 @@ -21,8 +21,6 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -name=Projektverwaltung -description=Erlaubt die Konfiguration von Projekten. menuLabel=Projekte menu.versions=Versionen diff -r 2a90d105edec -r dd0a45ae25d7 src/main/resources/localization/users.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/resources/localization/users.properties Sat May 16 13:29:44 2020 +0200 @@ -0,0 +1,35 @@ +# Copyright 2018 Mike Becker. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +menuLabel=Developer + +button.create=Add Developer + +no-users=No developers have been configured yet. + +thead.username=User Name +thead.givenname=Given Name +thead.lastname=Last Name +thead.mail=E-Mail + +thead.displayname=Developer diff -r 2a90d105edec -r dd0a45ae25d7 src/main/resources/localization/users_de.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/resources/localization/users_de.properties Sat May 16 13:29:44 2020 +0200 @@ -0,0 +1,35 @@ +# Copyright 2018 Mike Becker. All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +menuLabel=Entwickler + +button.create=Neuer Entwickler + +no-users=Bislang wurden keine Entwickler hinterlegt. + +thead.username=Benutzername +thead.givenname=Vorname +thead.lastname=Nachname +thead.mail=E-Mail + +thead.displayname=Entwickler diff -r 2a90d105edec -r dd0a45ae25d7 src/main/webapp/WEB-INF/dynamic_fragments/project-form.jsp --- a/src/main/webapp/WEB-INF/dynamic_fragments/project-form.jsp Sat May 16 11:37:57 2020 +0200 +++ b/src/main/webapp/WEB-INF/dynamic_fragments/project-form.jsp Sat May 16 13:29:44 2020 +0200 @@ -32,6 +32,7 @@ +

@@ -57,7 +58,9 @@ diff -r 2a90d105edec -r dd0a45ae25d7 src/main/webapp/WEB-INF/dynamic_fragments/projects.jsp --- a/src/main/webapp/WEB-INF/dynamic_fragments/projects.jsp Sat May 16 11:37:57 2020 +0200 +++ b/src/main/webapp/WEB-INF/dynamic_fragments/projects.jsp Sat May 16 13:29:44 2020 +0200 @@ -47,10 +47,10 @@
- + - + @@ -64,7 +64,7 @@ - +
diff -r 2a90d105edec -r dd0a45ae25d7 src/main/webapp/WEB-INF/dynamic_fragments/user-form.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/WEB-INF/dynamic_fragments/user-form.jsp Sat May 16 13:29:44 2020 +0200 @@ -0,0 +1,70 @@ +<%-- +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + +Copyright 2018 Mike Becker. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--%> +<%@page pageEncoding="UTF-8" %> +<%@page import="de.uapcore.lightpit.Constants" %> +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
readonly />
+ + + +
+ diff -r 2a90d105edec -r dd0a45ae25d7 src/main/webapp/WEB-INF/dynamic_fragments/users.jsp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/webapp/WEB-INF/dynamic_fragments/users.jsp Sat May 16 13:29:44 2020 +0200 @@ -0,0 +1,63 @@ +<%-- +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + +Copyright 2018 Mike Becker. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--%> +<%@page pageEncoding="UTF-8" %> +<%@page import="de.uapcore.lightpit.Constants" %> +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + + + + + +
+ +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + +
+
diff -r 2a90d105edec -r dd0a45ae25d7 src/main/webapp/lightpit.css --- a/src/main/webapp/lightpit.css Sat May 16 11:37:57 2020 +0200 +++ b/src/main/webapp/lightpit.css Sat May 16 13:29:44 2020 +0200 @@ -136,7 +136,7 @@ } table.datatable tr:nth-child(2n) { - background: lightblue; + background: #f0ffff; } table.formtable {