removes that dynamic_fragment bullshit

Fri, 22 May 2020 17:26:27 +0200

author
Mike Becker <universe@uap-core.de>
date
Fri, 22 May 2020 17:26:27 +0200
changeset 74
91d1fc2a3a14
parent 73
672b5003cafe
child 75
33b6843fdf8a

removes that dynamic_fragment bullshit

src/main/java/de/uapcore/lightpit/AbstractLightPITServlet.java file | annotate | diff | comparison | revisions
src/main/java/de/uapcore/lightpit/Constants.java file | annotate | diff | comparison | revisions
src/main/java/de/uapcore/lightpit/Functions.java file | annotate | diff | comparison | revisions
src/main/java/de/uapcore/lightpit/modules/ErrorModule.java file | annotate | diff | comparison | revisions
src/main/java/de/uapcore/lightpit/modules/LanguageModule.java file | annotate | diff | comparison | revisions
src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java file | annotate | diff | comparison | revisions
src/main/java/de/uapcore/lightpit/modules/UsersModule.java file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/dynamic_fragments/commit-successful.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/dynamic_fragments/error.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/dynamic_fragments/language.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/dynamic_fragments/project-details.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/dynamic_fragments/project-form.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/dynamic_fragments/projects.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/dynamic_fragments/user-form.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/dynamic_fragments/users.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/dynamic_fragments/version-form.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/jsp/commit-successful.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/jsp/error.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/jsp/language.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/jsp/project-details.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/jsp/project-form.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/jsp/projects.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/jsp/site.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/jsp/user-form.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/jsp/users.jsp file | annotate | diff | comparison | revisions
src/main/webapp/WEB-INF/jsp/version-form.jsp file | annotate | diff | comparison | revisions
     1.1 --- a/src/main/java/de/uapcore/lightpit/AbstractLightPITServlet.java	Fri May 22 17:19:09 2020 +0200
     1.2 +++ b/src/main/java/de/uapcore/lightpit/AbstractLightPITServlet.java	Fri May 22 17:26:27 2020 +0200
     1.3 @@ -228,20 +228,17 @@
     1.4      }
     1.5  
     1.6      /**
     1.7 -     * Sets the name of the dynamic fragment.
     1.8 +     * Sets the name of the content page.
     1.9       * <p>
    1.10       * It is sufficient to specify the name without any extension. The extension
    1.11       * is added automatically if not specified.
    1.12 -     * <p>
    1.13 -     * The fragment must be located in the dynamic fragments folder.
    1.14       *
    1.15 -     * @param req          the servlet request object
    1.16 -     * @param fragmentName the name of the fragment
    1.17 -     * @see Constants#DYN_FRAGMENT_PATH_PREFIX
    1.18 -     * @see Constants#REQ_ATTR_FRAGMENT
    1.19 +     * @param req      the servlet request object
    1.20 +     * @param pageName the name of the content page
    1.21 +     * @see Constants#REQ_ATTR_CONTENT_PAGE
    1.22       */
    1.23 -    protected void setDynamicFragment(HttpServletRequest req, String fragmentName) {
    1.24 -        req.setAttribute(Constants.REQ_ATTR_FRAGMENT, Functions.dynFragmentPath(fragmentName));
    1.25 +    protected void setContentPage(HttpServletRequest req, String pageName) {
    1.26 +        req.setAttribute(Constants.REQ_ATTR_CONTENT_PAGE, Functions.jspPath(pageName));
    1.27      }
    1.28  
    1.29      /**
     2.1 --- a/src/main/java/de/uapcore/lightpit/Constants.java	Fri May 22 17:19:09 2020 +0200
     2.2 +++ b/src/main/java/de/uapcore/lightpit/Constants.java	Fri May 22 17:26:27 2020 +0200
     2.3 @@ -36,11 +36,15 @@
     2.4   * Constants with (class) local scope are defined in their respective classes.
     2.5   */
     2.6  public final class Constants {
     2.7 +    /**
     2.8 +     * The path where the JSP files reside.
     2.9 +     */
    2.10      public static final String JSP_PATH_PREFIX = "/WEB-INF/jsp/";
    2.11  
    2.12 -    public static final String DYN_FRAGMENT_PATH_PREFIX = "/WEB-INF/dynamic_fragments/";
    2.13 -
    2.14 -    public static final String DYN_FRAGMENT_COMMIT_SUCCESSFUL = "commit-successful";
    2.15 +    /**
    2.16 +     * The name of the generic JSP page that is displayed after a successful commit.
    2.17 +     */
    2.18 +    public static final String JSP_COMMIT_SUCCESSFUL = "commit-successful";
    2.19  
    2.20      /**
    2.21       * Name for the context parameter specifying the available languages.
    2.22 @@ -83,9 +87,9 @@
    2.23      public static final String REQ_ATTR_PATH = fqn(AbstractLightPITServlet.class, "path");
    2.24  
    2.25      /**
    2.26 -     * Key for the name of the fragment which should be rendered.
    2.27 +     * Key for the name of the page which should be rendered.
    2.28       */
    2.29 -    public static final String REQ_ATTR_FRAGMENT = fqn(AbstractLightPITServlet.class, "fragment");
    2.30 +    public static final String REQ_ATTR_CONTENT_PAGE = fqn(AbstractLightPITServlet.class, "content-page");
    2.31  
    2.32      /**
    2.33       * Key for the name of the additional stylesheet used by a module.
     3.1 --- a/src/main/java/de/uapcore/lightpit/Functions.java	Fri May 22 17:19:09 2020 +0200
     3.2 +++ b/src/main/java/de/uapcore/lightpit/Functions.java	Fri May 22 17:26:27 2020 +0200
     3.3 @@ -54,10 +54,6 @@
     3.4          return enforceExt(Constants.JSP_PATH_PREFIX + filename, ".jsp");
     3.5      }
     3.6  
     3.7 -    public static String dynFragmentPath(String filename) {
     3.8 -        return enforceExt(Constants.DYN_FRAGMENT_PATH_PREFIX + filename, ".jsp");
     3.9 -    }
    3.10 -
    3.11      public static String fqn(String base, String name) {
    3.12          return base + "." + name;
    3.13      }
     4.1 --- a/src/main/java/de/uapcore/lightpit/modules/ErrorModule.java	Fri May 22 17:19:09 2020 +0200
     4.2 +++ b/src/main/java/de/uapcore/lightpit/modules/ErrorModule.java	Fri May 22 17:26:27 2020 +0200
     4.3 @@ -59,7 +59,7 @@
     4.4          );
     4.5  
     4.6          setStylesheet(req, "error");
     4.7 -        setDynamicFragment(req, "error");
     4.8 +        setContentPage(req, "error");
     4.9  
    4.10          return ResponseType.HTML;
    4.11      }
     5.1 --- a/src/main/java/de/uapcore/lightpit/modules/LanguageModule.java	Fri May 22 17:19:09 2020 +0200
     5.2 +++ b/src/main/java/de/uapcore/lightpit/modules/LanguageModule.java	Fri May 22 17:26:27 2020 +0200
     5.3 @@ -91,7 +91,7 @@
     5.4          req.setAttribute("browserLanguage", req.getLocale());
     5.5  
     5.6          setStylesheet(req, "language");
     5.7 -        setDynamicFragment(req, "language");
     5.8 +        setContentPage(req, "language");
     5.9          return ResponseType.HTML;
    5.10      }
    5.11  
     6.1 --- a/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java	Fri May 22 17:19:09 2020 +0200
     6.2 +++ b/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java	Fri May 22 17:26:27 2020 +0200
     6.3 @@ -111,7 +111,7 @@
     6.4  
     6.5          final var projectList = dao.getProjectDao().list();
     6.6          req.setAttribute("projects", projectList);
     6.7 -        setDynamicFragment(req, "projects");
     6.8 +        setContentPage(req, "projects");
     6.9          setStylesheet(req, "projects");
    6.10  
    6.11          final var selectedProject = getSelectedProject(req, dao);
    6.12 @@ -130,7 +130,7 @@
    6.13          }
    6.14  
    6.15          req.setAttribute("users", dao.getUserDao().list());
    6.16 -        setDynamicFragment(req, "project-form");
    6.17 +        setContentPage(req, "project-form");
    6.18      }
    6.19  
    6.20      @RequestMapping(requestPath = "edit", method = HttpMethod.GET)
    6.21 @@ -161,7 +161,7 @@
    6.22              dao.getProjectDao().saveOrUpdate(project);
    6.23  
    6.24              setRedirectLocation(req, "./projects/");
    6.25 -            setDynamicFragment(req, Constants.DYN_FRAGMENT_COMMIT_SUCCESSFUL);
    6.26 +            setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL);
    6.27              LOG.debug("Successfully updated project {}", project.getName());
    6.28          } catch (NoSuchElementException | NumberFormatException | SQLException ex) {
    6.29              // TODO: set request attribute with error text
    6.30 @@ -187,7 +187,7 @@
    6.31          // TODO: add more levels depending on last visited location
    6.32          setBreadcrumbs(req, getBreadcrumbs(1, selectedProject));
    6.33  
    6.34 -        setDynamicFragment(req, "project-details");
    6.35 +        setContentPage(req, "project-details");
    6.36  
    6.37          return ResponseType.HTML;
    6.38      }
    6.39 @@ -196,7 +196,7 @@
    6.40          req.setAttribute("version", version.orElse(new Version(-1, selectedProject)));
    6.41          req.setAttribute("versionStatusEnum", VersionStatus.values());
    6.42  
    6.43 -        setDynamicFragment(req, "version-form");
    6.44 +        setContentPage(req, "version-form");
    6.45      }
    6.46  
    6.47      @RequestMapping(requestPath = "versions/edit", method = HttpMethod.GET)
    6.48 @@ -231,7 +231,7 @@
    6.49              dao.getVersionDao().saveOrUpdate(version);
    6.50  
    6.51              setRedirectLocation(req, "./projects/versions/");
    6.52 -            setDynamicFragment(req, Constants.DYN_FRAGMENT_COMMIT_SUCCESSFUL);
    6.53 +            setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL);
    6.54              LOG.debug("Successfully updated version {} for project {}", version.getName(), selectedProject.getName());
    6.55          } catch (NoSuchElementException | NumberFormatException | SQLException ex) {
    6.56              // TODO: set request attribute with error text
    6.57 @@ -250,7 +250,7 @@
    6.58          req.setAttribute("issueCategoryEnum", IssueCategory.values());
    6.59          req.setAttribute("versions", dao.getVersionDao().list(selectedProject));
    6.60  
    6.61 -        setDynamicFragment(req, "issue-form");
    6.62 +        setContentPage(req, "issue-form");
    6.63      }
    6.64  
    6.65      @RequestMapping(requestPath = "issues/edit", method = HttpMethod.GET)
    6.66 @@ -285,7 +285,7 @@
    6.67              dao.getIssueDao().saveOrUpdate(issue);
    6.68  
    6.69              setRedirectLocation(req, "./projects/issues/");
    6.70 -            setDynamicFragment(req, Constants.DYN_FRAGMENT_COMMIT_SUCCESSFUL);
    6.71 +            setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL);
    6.72              LOG.debug("Successfully updated issue {} for project {}", issue.getId(), selectedProject.getName());
    6.73          } catch (NoSuchElementException | NumberFormatException | SQLException ex) {
    6.74              // TODO: set request attribute with error text
     7.1 --- a/src/main/java/de/uapcore/lightpit/modules/UsersModule.java	Fri May 22 17:19:09 2020 +0200
     7.2 +++ b/src/main/java/de/uapcore/lightpit/modules/UsersModule.java	Fri May 22 17:26:27 2020 +0200
     7.3 @@ -58,7 +58,7 @@
     7.4          final var userDao = dao.getUserDao();
     7.5  
     7.6          req.setAttribute("users", userDao.list());
     7.7 -        setDynamicFragment(req, "users");
     7.8 +        setContentPage(req, "users");
     7.9  
    7.10          return ResponseType.HTML;
    7.11      }
    7.12 @@ -69,7 +69,7 @@
    7.13          req.setAttribute("user", findByParameter(req, Integer.class, "id",
    7.14                  dao.getUserDao()::find).orElse(new User(-1)));
    7.15  
    7.16 -        setDynamicFragment(req, "user-form");
    7.17 +        setContentPage(req, "user-form");
    7.18  
    7.19          return ResponseType.HTML;
    7.20      }
    7.21 @@ -88,13 +88,13 @@
    7.22              dao.getUserDao().saveOrUpdate(user);
    7.23  
    7.24              setRedirectLocation(req, "./teams/");
    7.25 -            setDynamicFragment(req, Constants.DYN_FRAGMENT_COMMIT_SUCCESSFUL);
    7.26 +            setContentPage(req, Constants.JSP_COMMIT_SUCCESSFUL);
    7.27  
    7.28              LOG.debug("Successfully updated user {}", user.getUsername());
    7.29          } catch (NoSuchElementException | NumberFormatException | SQLException ex) {
    7.30              // TODO: set request attribute with error text
    7.31              req.setAttribute("user", user);
    7.32 -            setDynamicFragment(req, "user-form");
    7.33 +            setContentPage(req, "user-form");
    7.34              LOG.warn("Form validation failure: {}", ex.getMessage());
    7.35              LOG.debug("Details:", ex);
    7.36          }
     8.1 --- a/src/main/webapp/WEB-INF/dynamic_fragments/commit-successful.jsp	Fri May 22 17:19:09 2020 +0200
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,34 +0,0 @@
     8.4 -<%--
     8.5 -DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     8.6 -
     8.7 -Copyright 2018 Mike Becker. All rights reserved.
     8.8 -
     8.9 -Redistribution and use in source and binary forms, with or without
    8.10 -modification, are permitted provided that the following conditions are met:
    8.11 -
    8.12 -1. Redistributions of source code must retain the above copyright
    8.13 -notice, this list of conditions and the following disclaimer.
    8.14 -
    8.15 -2. Redistributions in binary form must reproduce the above copyright
    8.16 -notice, this list of conditions and the following disclaimer in the
    8.17 -documentation and/or other materials provided with the distribution.
    8.18 -
    8.19 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    8.20 -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    8.21 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    8.22 -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
    8.23 -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    8.24 -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    8.25 -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
    8.26 -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    8.27 -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    8.28 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    8.29 ---%>
    8.30 -<%@page pageEncoding="UTF-8" %>
    8.31 -<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    8.32 -<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    8.33 -
    8.34 -<c:set scope="page" var="redirectLocation" value="${requestScope[Constants.REQ_ATTR_REDIRECT_LOCATION]}"/>
    8.35 -
    8.36 -<fmt:message bundle="${lightpit_bundle}" key="commit.success"/>
    8.37 -<fmt:message bundle="${lightpit_bundle}" key="commit.redirect-link"/>
     9.1 --- a/src/main/webapp/WEB-INF/dynamic_fragments/error.jsp	Fri May 22 17:19:09 2020 +0200
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,67 +0,0 @@
     9.4 -<%-- 
     9.5 -DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     9.6 -
     9.7 -Copyright 2018 Mike Becker. All rights reserved.
     9.8 -
     9.9 -Redistribution and use in source and binary forms, with or without
    9.10 -modification, are permitted provided that the following conditions are met:
    9.11 -
    9.12 -1. Redistributions of source code must retain the above copyright
    9.13 -notice, this list of conditions and the following disclaimer.
    9.14 -
    9.15 -2. Redistributions in binary form must reproduce the above copyright
    9.16 -notice, this list of conditions and the following disclaimer in the
    9.17 -documentation and/or other materials provided with the distribution.
    9.18 -
    9.19 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
    9.20 -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    9.21 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    9.22 -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
    9.23 -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    9.24 -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    9.25 -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
    9.26 -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    9.27 -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    9.28 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
    9.29 ---%>
    9.30 -<%@page pageEncoding="UTF-8" %>
    9.31 -<%@page import="de.uapcore.lightpit.Constants" %>
    9.32 -<%@page import="de.uapcore.lightpit.modules.ErrorModule" %>
    9.33 -<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    9.34 -<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    9.35 -<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    9.36 -
    9.37 -<c:set scope="page" var="baseHref" value="${requestScope[Constants.REQ_ATTR_BASE_HREF]}"/>
    9.38 -<c:set scope="page" var="errorCode" value="${requestScope['javax.servlet.error.status_code']}"/>
    9.39 -<c:set scope="page" var="returnLink" value="${requestScope[ErrorModule.REQ_ATTR_RETURN_LINK]}"/>
    9.40 -
    9.41 -<div id="error-page">
    9.42 -    <h1><fmt:message key="h1"/></h1>
    9.43 -    <table>
    9.44 -        <tr>
    9.45 -            <th><fmt:message key="errorCode"/>:</th>
    9.46 -            <td>${errorCode} - <fmt:message key="code.${errorCode}"/></td>
    9.47 -        </tr>
    9.48 -        <tr>
    9.49 -            <th><fmt:message key="errorMessage"/>:</th>
    9.50 -            <td><c:out value="${requestScope['javax.servlet.error.message']}"/></td>
    9.51 -        </tr>
    9.52 -        <tr>
    9.53 -            <th><fmt:message key="errorTimestamp"/>:</th>
    9.54 -            <td><fmt:formatDate type="both" value="<%= new java.util.Date()%>"/></td>
    9.55 -        </tr>
    9.56 -        <%--@elvariable id="exception" type="java.lang.Exception"--%>
    9.57 -        <c:if test="${not empty exception}">
    9.58 -            <tr>
    9.59 -                <th><fmt:message key="errorExceptionText"/>:</th>
    9.60 -                <td>${exception['class'].name} - ${exception.message}</td>
    9.61 -            </tr>
    9.62 -        </c:if>
    9.63 -        <c:if test="${fn:startsWith(returnLink, baseHref)}">
    9.64 -            <tr>
    9.65 -                <th><fmt:message key="errorReturnLink"/>:</th>
    9.66 -                <td><a href="${returnLink}">${returnLink}</a></td>
    9.67 -            </tr>
    9.68 -        </c:if>
    9.69 -    </table>
    9.70 -</div>
    10.1 --- a/src/main/webapp/WEB-INF/dynamic_fragments/language.jsp	Fri May 22 17:19:09 2020 +0200
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,52 +0,0 @@
    10.4 -<%-- 
    10.5 -DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    10.6 -
    10.7 -Copyright 2018 Mike Becker. All rights reserved.
    10.8 -
    10.9 -Redistribution and use in source and binary forms, with or without
   10.10 -modification, are permitted provided that the following conditions are met:
   10.11 -
   10.12 -1. Redistributions of source code must retain the above copyright
   10.13 -notice, this list of conditions and the following disclaimer.
   10.14 -
   10.15 -2. Redistributions in binary form must reproduce the above copyright
   10.16 -notice, this list of conditions and the following disclaimer in the
   10.17 -documentation and/or other materials provided with the distribution.
   10.18 -
   10.19 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   10.20 -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   10.21 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   10.22 -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   10.23 -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   10.24 -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   10.25 -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   10.26 -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   10.27 -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   10.28 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
   10.29 ---%>
   10.30 -<%@page pageEncoding="UTF-8" %>
   10.31 -<%@page import="de.uapcore.lightpit.Constants" %>
   10.32 -<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   10.33 -<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   10.34 -
   10.35 -<jsp:useBean id="languages" type="java.util.List<java.util.Locale>" scope="request"/>
   10.36 -<jsp:useBean id="browserLanguage" type="java.util.Locale" scope="request"/>
   10.37 -
   10.38 -<c:set scope="page" var="currentLanguage" value="${sessionScope[Constants.SESSION_ATTR_LANGUAGE]}"/>
   10.39 -
   10.40 -<form method="POST" id="lang-selector">
   10.41 -    <c:forEach items="${languages}" var="l">
   10.42 -        <label>
   10.43 -            <input type="radio" name="language" value="${l.language}"
   10.44 -                   <c:if test="${l.language eq currentLanguage.language}">checked</c:if>/>
   10.45 -                ${l.displayLanguage}
   10.46 -            (${l.getDisplayLanguage(currentLanguage)}
   10.47 -            <c:if test="${not empty browserLanguage and l.language eq browserLanguage.language}"><c:set
   10.48 -                    var="browserLanguagePresent" value="true"/>&nbsp;-&nbsp;<fmt:message key="browserLanguage"/></c:if>)
   10.49 -        </label>
   10.50 -    </c:forEach>
   10.51 -    <c:if test="${not browserLanguagePresent}">
   10.52 -        <span class="blNA"><fmt:message key="browserLanguageNotAvailable"/></span>
   10.53 -    </c:if>
   10.54 -    <input type="submit" value="<fmt:message key="submit" />"/>
   10.55 -</form>
    11.1 --- a/src/main/webapp/WEB-INF/dynamic_fragments/project-details.jsp	Fri May 22 17:19:09 2020 +0200
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,80 +0,0 @@
    11.4 -<%--
    11.5 -DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    11.6 -
    11.7 -Copyright 2018 Mike Becker. All rights reserved.
    11.8 -
    11.9 -Redistribution and use in source and binary forms, with or without
   11.10 -modification, are permitted provided that the following conditions are met:
   11.11 -
   11.12 -1. Redistributions of source code must retain the above copyright
   11.13 -notice, this list of conditions and the following disclaimer.
   11.14 -
   11.15 -2. Redistributions in binary form must reproduce the above copyright
   11.16 -notice, this list of conditions and the following disclaimer in the
   11.17 -documentation and/or other materials provided with the distribution.
   11.18 -
   11.19 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   11.20 -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   11.21 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   11.22 -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   11.23 -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   11.24 -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   11.25 -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   11.26 -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   11.27 -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   11.28 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   11.29 ---%>
   11.30 -<%@page pageEncoding="UTF-8" %>
   11.31 -<%@page import="de.uapcore.lightpit.Constants" %>
   11.32 -<%@page import="de.uapcore.lightpit.modules.ProjectsModule" %>
   11.33 -<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   11.34 -<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   11.35 -
   11.36 -<c:set scope="page" var="moduleInfo" value="${requestScope[Constants.REQ_ATTR_MODULE_INFO]}"/>
   11.37 -<c:set scope="page" var="selectedProject" value="${sessionScope[ProjectsModule.SESSION_ATTR_SELECTED_PROJECT]}"/>
   11.38 -
   11.39 -<jsp:useBean id="versions" type="java.util.List<de.uapcore.lightpit.entities.Version>" scope="request"/>
   11.40 -<jsp:useBean id="issues" type="java.util.List<de.uapcore.lightpit.entities.Issue>" scope="request"/>
   11.41 -
   11.42 -<div id="tool-area">
   11.43 -    <a href="./${moduleInfo.modulePath}/versions/edit" class="button"><fmt:message key="button.version.create"/></a>
   11.44 -    <a href="./${moduleInfo.modulePath}/issues/edit" class="button"><fmt:message key="button.issue.create"/></a>
   11.45 -</div>
   11.46 -
   11.47 -<c:if test="${not empty versions}">
   11.48 -    <table id="version-list" class="datatable medskip">
   11.49 -        <thead>
   11.50 -        <tr>
   11.51 -            <th></th>
   11.52 -            <th><fmt:message key="thead.version.name"/></th>
   11.53 -            <th><fmt:message key="thead.version.status"/></th>
   11.54 -        </tr>
   11.55 -        </thead>
   11.56 -        <tbody>
   11.57 -        <c:forEach var="version" items="${versions}">
   11.58 -            <tr class="nowrap">
   11.59 -                <td style="width: 2em;"><a href="./${moduleInfo.modulePath}/versions/edit?id=${version.id}">&#x270e;</a>
   11.60 -                </td>
   11.61 -                <td><c:out value="${version.name}"/></td>
   11.62 -                <td><fmt:message key="version.status.${version.status}"/></td>
   11.63 -            </tr>
   11.64 -        </c:forEach>
   11.65 -        </tbody>
   11.66 -    </table>
   11.67 -</c:if>
   11.68 -
   11.69 -<table id="issue-list" class="datatable medskip">
   11.70 -    <thead>
   11.71 -    <tr>
   11.72 -        <th></th>
   11.73 -        <th><fmt:message key="thead.issue.subject"/></th>
   11.74 -        <th><fmt:message key="thead.issue.category"/></th>
   11.75 -        <th><fmt:message key="thead.issue.status"/></th>
   11.76 -        <th><fmt:message key="thead.issue.created"/></th>
   11.77 -        <th><fmt:message key="thead.issue.updated"/></th>
   11.78 -        <th><fmt:message key="thead.issue.eta"/></th>
   11.79 -        <!-- TODO: add other information -->
   11.80 -    </tr>
   11.81 -    </thead>
   11.82 -    <!-- TODO: add actual list -->
   11.83 -</table>
    12.1 --- a/src/main/webapp/WEB-INF/dynamic_fragments/project-form.jsp	Fri May 22 17:19:09 2020 +0200
    12.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.3 @@ -1,81 +0,0 @@
    12.4 -<%--
    12.5 -DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    12.6 -
    12.7 -Copyright 2018 Mike Becker. All rights reserved.
    12.8 -
    12.9 -Redistribution and use in source and binary forms, with or without
   12.10 -modification, are permitted provided that the following conditions are met:
   12.11 -
   12.12 -1. Redistributions of source code must retain the above copyright
   12.13 -notice, this list of conditions and the following disclaimer.
   12.14 -
   12.15 -2. Redistributions in binary form must reproduce the above copyright
   12.16 -notice, this list of conditions and the following disclaimer in the
   12.17 -documentation and/or other materials provided with the distribution.
   12.18 -
   12.19 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   12.20 -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   12.21 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   12.22 -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   12.23 -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   12.24 -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   12.25 -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   12.26 -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   12.27 -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   12.28 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   12.29 ---%>
   12.30 -<%@page pageEncoding="UTF-8" %>
   12.31 -<%@page import="de.uapcore.lightpit.Constants" %>
   12.32 -<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   12.33 -<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   12.34 -
   12.35 -<c:set scope="page" var="moduleInfo" value="${requestScope[Constants.REQ_ATTR_MODULE_INFO]}"/>
   12.36 -
   12.37 -<jsp:useBean id="project" type="de.uapcore.lightpit.entities.Project" scope="request"/>
   12.38 -<jsp:useBean id="users" type="java.util.List<de.uapcore.lightpit.entities.User>" scope="request"/>
   12.39 -
   12.40 -<form action="./${moduleInfo.modulePath}/commit" method="post">
   12.41 -    <table class="formtable">
   12.42 -        <colgroup>
   12.43 -            <col>
   12.44 -            <col style="width: 75ch">
   12.45 -        </colgroup>
   12.46 -        <tbody>
   12.47 -        <tr>
   12.48 -            <th><fmt:message key="thead.name"/></th>
   12.49 -            <td><input name="name" type="text" maxlength="20" required value="${project.name}"/></td>
   12.50 -        </tr>
   12.51 -        <tr>
   12.52 -            <th class="vtop"><fmt:message key="thead.description"/></th>
   12.53 -            <td><input type="text" name="description" maxlength="200" value="${project.description}"/></td>
   12.54 -        </tr>
   12.55 -        <tr>
   12.56 -            <th><fmt:message key="thead.repoUrl"/></th>
   12.57 -            <td><input name="repoUrl" type="url" maxlength="50" value="${project.repoUrl}"/></td>
   12.58 -        </tr>
   12.59 -        <tr>
   12.60 -            <th><fmt:message key="thead.owner"/></th>
   12.61 -            <td>
   12.62 -                <select name="owner">
   12.63 -                    <option value="-1"><fmt:message key="placeholder.null-owner"/></option>
   12.64 -                    <c:forEach var="user" items="${users}">
   12.65 -                        <option
   12.66 -                                <c:if test="${not empty project.owner and user.id eq project.owner.id}">selected</c:if>
   12.67 -                                value="${user.id}"><c:out value="${user.displayname}"/></option>
   12.68 -                    </c:forEach>
   12.69 -                </select>
   12.70 -            </td>
   12.71 -        </tr>
   12.72 -        </tbody>
   12.73 -        <tfoot>
   12.74 -        <tr>
   12.75 -            <td colspan="2">
   12.76 -                <input type="hidden" name="id" value="${project.id}"/>
   12.77 -                <a href="./${moduleInfo.modulePath}/" class="button"><fmt:message bundle="${lightpit_bundle}"
   12.78 -                                                                                  key="button.cancel"/></a>
   12.79 -                <button type="submit"><fmt:message bundle="${lightpit_bundle}" key="button.okay"/></button>
   12.80 -            </td>
   12.81 -        </tr>
   12.82 -        </tfoot>
   12.83 -    </table>
   12.84 -</form>
    13.1 --- a/src/main/webapp/WEB-INF/dynamic_fragments/projects.jsp	Fri May 22 17:19:09 2020 +0200
    13.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.3 @@ -1,87 +0,0 @@
    13.4 -<%--
    13.5 -DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    13.6 -
    13.7 -Copyright 2018 Mike Becker. All rights reserved.
    13.8 -
    13.9 -Redistribution and use in source and binary forms, with or without
   13.10 -modification, are permitted provided that the following conditions are met:
   13.11 -
   13.12 -1. Redistributions of source code must retain the above copyright
   13.13 -notice, this list of conditions and the following disclaimer.
   13.14 -
   13.15 -2. Redistributions in binary form must reproduce the above copyright
   13.16 -notice, this list of conditions and the following disclaimer in the
   13.17 -documentation and/or other materials provided with the distribution.
   13.18 -
   13.19 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   13.20 -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   13.21 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   13.22 -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   13.23 -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   13.24 -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   13.25 -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   13.26 -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   13.27 -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   13.28 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   13.29 ---%>
   13.30 -<%@page pageEncoding="UTF-8" %>
   13.31 -<%@page import="de.uapcore.lightpit.Constants" %>
   13.32 -<%@page import="de.uapcore.lightpit.modules.ProjectsModule" %>
   13.33 -<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   13.34 -<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   13.35 -
   13.36 -<c:set scope="page" var="moduleInfo" value="${requestScope[Constants.REQ_ATTR_MODULE_INFO]}"/>
   13.37 -<c:set scope="page" var="selectedProject" value="${sessionScope[ProjectsModule.SESSION_ATTR_SELECTED_PROJECT]}"/>
   13.38 -
   13.39 -<jsp:useBean id="projects" type="java.util.List<de.uapcore.lightpit.entities.Project>" scope="request"/>
   13.40 -
   13.41 -<c:if test="${empty projects}">
   13.42 -    <div class="info-box">
   13.43 -        <fmt:message key="no-projects"/>
   13.44 -    </div>
   13.45 -</c:if>
   13.46 -
   13.47 -<div id="tool-area">
   13.48 -    <a href="./${moduleInfo.modulePath}/edit" class="button"><fmt:message key="button.create"/></a>
   13.49 -</div>
   13.50 -
   13.51 -<c:if test="${not empty projects}">
   13.52 -    <table id="project-list" class="datatable medskip fullwidth">
   13.53 -        <colgroup>
   13.54 -            <col>
   13.55 -            <col style="width: 10%">
   13.56 -            <col style="width: 35%">
   13.57 -            <col style="width: 30%">
   13.58 -            <col style="width: 25%">
   13.59 -        </colgroup>
   13.60 -        <thead>
   13.61 -        <tr>
   13.62 -            <th></th>
   13.63 -            <th><fmt:message key="thead.name"/></th>
   13.64 -            <th><fmt:message key="thead.description"/></th>
   13.65 -            <th><fmt:message key="thead.repoUrl"/></th>
   13.66 -            <th><fmt:message key="thead.owner"/></th>
   13.67 -        </tr>
   13.68 -        </thead>
   13.69 -        <tbody>
   13.70 -        <c:forEach var="project" items="${projects}">
   13.71 -            <tr class="nowrap">
   13.72 -                <td style="width: 2em;"><a href="./${moduleInfo.modulePath}/edit?id=${project.id}">&#x270e;</a></td>
   13.73 -                <td><a href="./${moduleInfo.modulePath}/view?pid=${project.id}"><c:out value="${project.name}"/></a>
   13.74 -                </td>
   13.75 -                <td><c:out value="${project.description}"/></td>
   13.76 -                <td>
   13.77 -                    <c:if test="${not empty project.repoUrl}">
   13.78 -                        <a target="_blank" href="<c:out value="${project.repoUrl}"/>"><c:out
   13.79 -                                value="${project.repoUrl}"/></a>
   13.80 -                    </c:if>
   13.81 -                </td>
   13.82 -                <td>
   13.83 -                    <c:if test="${not empty project.owner}"><c:out value="${project.owner.displayname}"/></c:if>
   13.84 -                    <c:if test="${empty project.owner}"><fmt:message key="placeholder.null-owner"/></c:if>
   13.85 -                </td>
   13.86 -            </tr>
   13.87 -        </c:forEach>
   13.88 -        </tbody>
   13.89 -    </table>
   13.90 -</c:if>
    14.1 --- a/src/main/webapp/WEB-INF/dynamic_fragments/user-form.jsp	Fri May 22 17:19:09 2020 +0200
    14.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3 @@ -1,72 +0,0 @@
    14.4 -<%--
    14.5 -DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    14.6 -
    14.7 -Copyright 2018 Mike Becker. All rights reserved.
    14.8 -
    14.9 -Redistribution and use in source and binary forms, with or without
   14.10 -modification, are permitted provided that the following conditions are met:
   14.11 -
   14.12 -1. Redistributions of source code must retain the above copyright
   14.13 -notice, this list of conditions and the following disclaimer.
   14.14 -
   14.15 -2. Redistributions in binary form must reproduce the above copyright
   14.16 -notice, this list of conditions and the following disclaimer in the
   14.17 -documentation and/or other materials provided with the distribution.
   14.18 -
   14.19 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   14.20 -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   14.21 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   14.22 -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   14.23 -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   14.24 -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   14.25 -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   14.26 -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   14.27 -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   14.28 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   14.29 ---%>
   14.30 -<%@page pageEncoding="UTF-8" %>
   14.31 -<%@page import="de.uapcore.lightpit.Constants" %>
   14.32 -<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   14.33 -<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   14.34 -
   14.35 -<c:set scope="page" var="moduleInfo" value="${requestScope[Constants.REQ_ATTR_MODULE_INFO]}"/>
   14.36 -
   14.37 -<jsp:useBean id="user" type="de.uapcore.lightpit.entities.User" scope="request"/>
   14.38 -
   14.39 -<form action="./${moduleInfo.modulePath}/commit" method="post">
   14.40 -    <table class="formtable">
   14.41 -        <colgroup>
   14.42 -            <col>
   14.43 -            <col style="width: 50ch">
   14.44 -        </colgroup>
   14.45 -        <tbody>
   14.46 -        <tr>
   14.47 -            <th><fmt:message key="thead.username"/></th>
   14.48 -            <td><input name="username" type="text" maxlength="50" required value="${user.username}"
   14.49 -                       <c:if test="${user.id ge 0}">readonly</c:if> /></td>
   14.50 -        </tr>
   14.51 -        <tr>
   14.52 -            <th><fmt:message key="thead.givenname"/></th>
   14.53 -            <td><input name="givenname" type="text" maxlength="50" value="${user.givenname}"/></td>
   14.54 -        </tr>
   14.55 -        <tr>
   14.56 -            <th><fmt:message key="thead.lastname"/></th>
   14.57 -            <td><input name="lastname" type="text" maxlength="50" value="${user.lastname}"/></td>
   14.58 -        </tr>
   14.59 -        <tr>
   14.60 -            <th><fmt:message key="thead.mail"/></th>
   14.61 -            <td><input name="mail" type="email" maxlength="50" value="${user.mail}"/></td>
   14.62 -        </tr>
   14.63 -        </tbody>
   14.64 -        <tfoot>
   14.65 -        <tr>
   14.66 -            <td colspan="2">
   14.67 -                <input type="hidden" name="userid" value="${user.id}"/>
   14.68 -                <a href="./${moduleInfo.modulePath}/" class="button"><fmt:message bundle="${lightpit_bundle}"
   14.69 -                                                                                  key="button.cancel"/></a>
   14.70 -                <button type="submit"><fmt:message bundle="${lightpit_bundle}" key="button.okay"/></button>
   14.71 -            </td>
   14.72 -        </tr>
   14.73 -        </tfoot>
   14.74 -    </table>
   14.75 -</form>
    15.1 --- a/src/main/webapp/WEB-INF/dynamic_fragments/users.jsp	Fri May 22 17:19:09 2020 +0200
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,63 +0,0 @@
    15.4 -<%--
    15.5 -DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    15.6 -
    15.7 -Copyright 2018 Mike Becker. All rights reserved.
    15.8 -
    15.9 -Redistribution and use in source and binary forms, with or without
   15.10 -modification, are permitted provided that the following conditions are met:
   15.11 -
   15.12 -1. Redistributions of source code must retain the above copyright
   15.13 -notice, this list of conditions and the following disclaimer.
   15.14 -
   15.15 -2. Redistributions in binary form must reproduce the above copyright
   15.16 -notice, this list of conditions and the following disclaimer in the
   15.17 -documentation and/or other materials provided with the distribution.
   15.18 -
   15.19 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   15.20 -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   15.21 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   15.22 -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   15.23 -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   15.24 -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   15.25 -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   15.26 -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   15.27 -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   15.28 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   15.29 ---%>
   15.30 -<%@page pageEncoding="UTF-8" %>
   15.31 -<%@page import="de.uapcore.lightpit.Constants" %>
   15.32 -<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   15.33 -<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   15.34 -
   15.35 -<c:set scope="page" var="moduleInfo" value="${requestScope[Constants.REQ_ATTR_MODULE_INFO]}"/>
   15.36 -
   15.37 -<jsp:useBean id="users" type="java.util.List<de.uapcore.lightpit.entities.User>" scope="request"/>
   15.38 -
   15.39 -<c:if test="${empty users}">
   15.40 -    <div class="info-box">
   15.41 -        <fmt:message key="no-users"/>
   15.42 -    </div>
   15.43 -</c:if>
   15.44 -
   15.45 -<div id="tool-area">
   15.46 -    <a href="./${moduleInfo.modulePath}/edit" class="button"><fmt:message key="button.create"/></a>
   15.47 -</div>
   15.48 -
   15.49 -<c:if test="${not empty users}">
   15.50 -    <table class="datatable medskip">
   15.51 -        <thead>
   15.52 -        <tr>
   15.53 -            <th></th>
   15.54 -            <th><fmt:message key="thead.displayname"/></th>
   15.55 -        </tr>
   15.56 -        </thead>
   15.57 -        <tbody>
   15.58 -        <c:forEach var="user" items="${users}">
   15.59 -            <tr>
   15.60 -                <td><a href="./${moduleInfo.modulePath}/edit?id=${user.id}">&#x270e;</a></td>
   15.61 -                <td><c:out value="${user.displayname}"/></td>
   15.62 -            </tr>
   15.63 -        </c:forEach>
   15.64 -        </tbody>
   15.65 -    </table>
   15.66 -</c:if>
    16.1 --- a/src/main/webapp/WEB-INF/dynamic_fragments/version-form.jsp	Fri May 22 17:19:09 2020 +0200
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,79 +0,0 @@
    16.4 -<%--
    16.5 -DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    16.6 -
    16.7 -Copyright 2018 Mike Becker. All rights reserved.
    16.8 -
    16.9 -Redistribution and use in source and binary forms, with or without
   16.10 -modification, are permitted provided that the following conditions are met:
   16.11 -
   16.12 -1. Redistributions of source code must retain the above copyright
   16.13 -notice, this list of conditions and the following disclaimer.
   16.14 -
   16.15 -2. Redistributions in binary form must reproduce the above copyright
   16.16 -notice, this list of conditions and the following disclaimer in the
   16.17 -documentation and/or other materials provided with the distribution.
   16.18 -
   16.19 -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   16.20 -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   16.21 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   16.22 -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   16.23 -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   16.24 -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   16.25 -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   16.26 -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   16.27 -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   16.28 -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   16.29 ---%>
   16.30 -<%@page pageEncoding="UTF-8" %>
   16.31 -<%@page import="de.uapcore.lightpit.Constants" %>
   16.32 -<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   16.33 -<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   16.34 -
   16.35 -<c:set scope="page" var="moduleInfo" value="${requestScope[Constants.REQ_ATTR_MODULE_INFO]}"/>
   16.36 -<c:set scope="page" var="selectedProject" value="${sessionScope[ProjectsModule.SESSION_ATTR_SELECTED_PROJECT]}"/>
   16.37 -
   16.38 -<jsp:useBean id="version" type="de.uapcore.lightpit.entities.Version" scope="request"/>
   16.39 -<jsp:useBean id="versionStatusEnum" type="de.uapcore.lightpit.entities.VersionStatus[]" scope="request"/>
   16.40 -
   16.41 -<form action="./${moduleInfo.modulePath}/versions/commit" method="post">
   16.42 -    <table class="formtable" style="width: 35ch">
   16.43 -        <colgroup>
   16.44 -            <col>
   16.45 -            <col style="width: 100%">
   16.46 -        </colgroup>
   16.47 -        <tbody>
   16.48 -        <tr>
   16.49 -            <th><fmt:message key="thead.version.name"/></th>
   16.50 -            <td><input name="name" type="text" maxlength="20" required value="${version.name}"/></td>
   16.51 -        </tr>
   16.52 -        <tr>
   16.53 -            <th><fmt:message key="thead.version.status"/></th>
   16.54 -            <td>
   16.55 -                <select name="status" required>
   16.56 -                    <c:forEach var="elem" items="${versionStatusEnum}">
   16.57 -                        <option
   16.58 -                                <c:if test="${elem eq version.status}">selected</c:if> value="${elem}"><fmt:message
   16.59 -                                key="version.status.${elem}"/></option>
   16.60 -                    </c:forEach>
   16.61 -                </select>
   16.62 -            </td>
   16.63 -        </tr>
   16.64 -        <tr title="<fmt:message key="tooltip.ordinal" />">
   16.65 -            <th><fmt:message key="thead.version.ordinal"/></th>
   16.66 -            <td>
   16.67 -                <input name="ordinal" type="number" min="0" value="${version.ordinal}"/>
   16.68 -            </td>
   16.69 -        </tr>
   16.70 -        </tbody>
   16.71 -        <tfoot>
   16.72 -        <tr>
   16.73 -            <td colspan="2">
   16.74 -                <input type="hidden" name="id" value="${version.id}"/>
   16.75 -                <a href="./${moduleInfo.modulePath}/versions/" class="button"><fmt:message bundle="${lightpit_bundle}"
   16.76 -                                                                                           key="button.cancel"/></a>
   16.77 -                <button type="submit"><fmt:message bundle="${lightpit_bundle}" key="button.okay"/></button>
   16.78 -            </td>
   16.79 -        </tr>
   16.80 -        </tfoot>
   16.81 -    </table>
   16.82 -</form>
    17.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.2 +++ b/src/main/webapp/WEB-INF/jsp/commit-successful.jsp	Fri May 22 17:26:27 2020 +0200
    17.3 @@ -0,0 +1,34 @@
    17.4 +<%--
    17.5 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    17.6 +
    17.7 +Copyright 2018 Mike Becker. All rights reserved.
    17.8 +
    17.9 +Redistribution and use in source and binary forms, with or without
   17.10 +modification, are permitted provided that the following conditions are met:
   17.11 +
   17.12 +1. Redistributions of source code must retain the above copyright
   17.13 +notice, this list of conditions and the following disclaimer.
   17.14 +
   17.15 +2. Redistributions in binary form must reproduce the above copyright
   17.16 +notice, this list of conditions and the following disclaimer in the
   17.17 +documentation and/or other materials provided with the distribution.
   17.18 +
   17.19 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   17.20 +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   17.21 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   17.22 +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   17.23 +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   17.24 +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   17.25 +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   17.26 +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   17.27 +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   17.28 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   17.29 +--%>
   17.30 +<%@page pageEncoding="UTF-8" %>
   17.31 +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   17.32 +<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   17.33 +
   17.34 +<c:set scope="page" var="redirectLocation" value="${requestScope[Constants.REQ_ATTR_REDIRECT_LOCATION]}"/>
   17.35 +
   17.36 +<fmt:message bundle="${lightpit_bundle}" key="commit.success"/>
   17.37 +<fmt:message bundle="${lightpit_bundle}" key="commit.redirect-link"/>
    18.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.2 +++ b/src/main/webapp/WEB-INF/jsp/error.jsp	Fri May 22 17:26:27 2020 +0200
    18.3 @@ -0,0 +1,67 @@
    18.4 +<%-- 
    18.5 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    18.6 +
    18.7 +Copyright 2018 Mike Becker. All rights reserved.
    18.8 +
    18.9 +Redistribution and use in source and binary forms, with or without
   18.10 +modification, are permitted provided that the following conditions are met:
   18.11 +
   18.12 +1. Redistributions of source code must retain the above copyright
   18.13 +notice, this list of conditions and the following disclaimer.
   18.14 +
   18.15 +2. Redistributions in binary form must reproduce the above copyright
   18.16 +notice, this list of conditions and the following disclaimer in the
   18.17 +documentation and/or other materials provided with the distribution.
   18.18 +
   18.19 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   18.20 +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   18.21 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   18.22 +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   18.23 +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   18.24 +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   18.25 +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   18.26 +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   18.27 +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   18.28 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
   18.29 +--%>
   18.30 +<%@page pageEncoding="UTF-8" %>
   18.31 +<%@page import="de.uapcore.lightpit.Constants" %>
   18.32 +<%@page import="de.uapcore.lightpit.modules.ErrorModule" %>
   18.33 +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   18.34 +<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   18.35 +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
   18.36 +
   18.37 +<c:set scope="page" var="baseHref" value="${requestScope[Constants.REQ_ATTR_BASE_HREF]}"/>
   18.38 +<c:set scope="page" var="errorCode" value="${requestScope['javax.servlet.error.status_code']}"/>
   18.39 +<c:set scope="page" var="returnLink" value="${requestScope[ErrorModule.REQ_ATTR_RETURN_LINK]}"/>
   18.40 +
   18.41 +<div id="error-page">
   18.42 +    <h1><fmt:message key="h1"/></h1>
   18.43 +    <table>
   18.44 +        <tr>
   18.45 +            <th><fmt:message key="errorCode"/>:</th>
   18.46 +            <td>${errorCode} - <fmt:message key="code.${errorCode}"/></td>
   18.47 +        </tr>
   18.48 +        <tr>
   18.49 +            <th><fmt:message key="errorMessage"/>:</th>
   18.50 +            <td><c:out value="${requestScope['javax.servlet.error.message']}"/></td>
   18.51 +        </tr>
   18.52 +        <tr>
   18.53 +            <th><fmt:message key="errorTimestamp"/>:</th>
   18.54 +            <td><fmt:formatDate type="both" value="<%= new java.util.Date()%>"/></td>
   18.55 +        </tr>
   18.56 +        <%--@elvariable id="exception" type="java.lang.Exception"--%>
   18.57 +        <c:if test="${not empty exception}">
   18.58 +            <tr>
   18.59 +                <th><fmt:message key="errorExceptionText"/>:</th>
   18.60 +                <td>${exception['class'].name} - ${exception.message}</td>
   18.61 +            </tr>
   18.62 +        </c:if>
   18.63 +        <c:if test="${fn:startsWith(returnLink, baseHref)}">
   18.64 +            <tr>
   18.65 +                <th><fmt:message key="errorReturnLink"/>:</th>
   18.66 +                <td><a href="${returnLink}">${returnLink}</a></td>
   18.67 +            </tr>
   18.68 +        </c:if>
   18.69 +    </table>
   18.70 +</div>
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/src/main/webapp/WEB-INF/jsp/language.jsp	Fri May 22 17:26:27 2020 +0200
    19.3 @@ -0,0 +1,52 @@
    19.4 +<%-- 
    19.5 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    19.6 +
    19.7 +Copyright 2018 Mike Becker. All rights reserved.
    19.8 +
    19.9 +Redistribution and use in source and binary forms, with or without
   19.10 +modification, are permitted provided that the following conditions are met:
   19.11 +
   19.12 +1. Redistributions of source code must retain the above copyright
   19.13 +notice, this list of conditions and the following disclaimer.
   19.14 +
   19.15 +2. Redistributions in binary form must reproduce the above copyright
   19.16 +notice, this list of conditions and the following disclaimer in the
   19.17 +documentation and/or other materials provided with the distribution.
   19.18 +
   19.19 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   19.20 +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   19.21 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   19.22 +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   19.23 +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   19.24 +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   19.25 +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   19.26 +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   19.27 +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   19.28 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
   19.29 +--%>
   19.30 +<%@page pageEncoding="UTF-8" %>
   19.31 +<%@page import="de.uapcore.lightpit.Constants" %>
   19.32 +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   19.33 +<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   19.34 +
   19.35 +<jsp:useBean id="languages" type="java.util.List<java.util.Locale>" scope="request"/>
   19.36 +<jsp:useBean id="browserLanguage" type="java.util.Locale" scope="request"/>
   19.37 +
   19.38 +<c:set scope="page" var="currentLanguage" value="${sessionScope[Constants.SESSION_ATTR_LANGUAGE]}"/>
   19.39 +
   19.40 +<form method="POST" id="lang-selector">
   19.41 +    <c:forEach items="${languages}" var="l">
   19.42 +        <label>
   19.43 +            <input type="radio" name="language" value="${l.language}"
   19.44 +                   <c:if test="${l.language eq currentLanguage.language}">checked</c:if>/>
   19.45 +                ${l.displayLanguage}
   19.46 +            (${l.getDisplayLanguage(currentLanguage)}
   19.47 +            <c:if test="${not empty browserLanguage and l.language eq browserLanguage.language}"><c:set
   19.48 +                    var="browserLanguagePresent" value="true"/>&nbsp;-&nbsp;<fmt:message key="browserLanguage"/></c:if>)
   19.49 +        </label>
   19.50 +    </c:forEach>
   19.51 +    <c:if test="${not browserLanguagePresent}">
   19.52 +        <span class="blNA"><fmt:message key="browserLanguageNotAvailable"/></span>
   19.53 +    </c:if>
   19.54 +    <input type="submit" value="<fmt:message key="submit" />"/>
   19.55 +</form>
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/src/main/webapp/WEB-INF/jsp/project-details.jsp	Fri May 22 17:26:27 2020 +0200
    20.3 @@ -0,0 +1,80 @@
    20.4 +<%--
    20.5 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    20.6 +
    20.7 +Copyright 2018 Mike Becker. All rights reserved.
    20.8 +
    20.9 +Redistribution and use in source and binary forms, with or without
   20.10 +modification, are permitted provided that the following conditions are met:
   20.11 +
   20.12 +1. Redistributions of source code must retain the above copyright
   20.13 +notice, this list of conditions and the following disclaimer.
   20.14 +
   20.15 +2. Redistributions in binary form must reproduce the above copyright
   20.16 +notice, this list of conditions and the following disclaimer in the
   20.17 +documentation and/or other materials provided with the distribution.
   20.18 +
   20.19 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   20.20 +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   20.21 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   20.22 +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   20.23 +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   20.24 +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   20.25 +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   20.26 +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   20.27 +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   20.28 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   20.29 +--%>
   20.30 +<%@page pageEncoding="UTF-8" %>
   20.31 +<%@page import="de.uapcore.lightpit.Constants" %>
   20.32 +<%@page import="de.uapcore.lightpit.modules.ProjectsModule" %>
   20.33 +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   20.34 +<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   20.35 +
   20.36 +<c:set scope="page" var="moduleInfo" value="${requestScope[Constants.REQ_ATTR_MODULE_INFO]}"/>
   20.37 +<c:set scope="page" var="selectedProject" value="${sessionScope[ProjectsModule.SESSION_ATTR_SELECTED_PROJECT]}"/>
   20.38 +
   20.39 +<jsp:useBean id="versions" type="java.util.List<de.uapcore.lightpit.entities.Version>" scope="request"/>
   20.40 +<jsp:useBean id="issues" type="java.util.List<de.uapcore.lightpit.entities.Issue>" scope="request"/>
   20.41 +
   20.42 +<div id="tool-area">
   20.43 +    <a href="./${moduleInfo.modulePath}/versions/edit" class="button"><fmt:message key="button.version.create"/></a>
   20.44 +    <a href="./${moduleInfo.modulePath}/issues/edit" class="button"><fmt:message key="button.issue.create"/></a>
   20.45 +</div>
   20.46 +
   20.47 +<c:if test="${not empty versions}">
   20.48 +    <table id="version-list" class="datatable medskip">
   20.49 +        <thead>
   20.50 +        <tr>
   20.51 +            <th></th>
   20.52 +            <th><fmt:message key="thead.version.name"/></th>
   20.53 +            <th><fmt:message key="thead.version.status"/></th>
   20.54 +        </tr>
   20.55 +        </thead>
   20.56 +        <tbody>
   20.57 +        <c:forEach var="version" items="${versions}">
   20.58 +            <tr class="nowrap">
   20.59 +                <td style="width: 2em;"><a href="./${moduleInfo.modulePath}/versions/edit?id=${version.id}">&#x270e;</a>
   20.60 +                </td>
   20.61 +                <td><c:out value="${version.name}"/></td>
   20.62 +                <td><fmt:message key="version.status.${version.status}"/></td>
   20.63 +            </tr>
   20.64 +        </c:forEach>
   20.65 +        </tbody>
   20.66 +    </table>
   20.67 +</c:if>
   20.68 +
   20.69 +<table id="issue-list" class="datatable medskip">
   20.70 +    <thead>
   20.71 +    <tr>
   20.72 +        <th></th>
   20.73 +        <th><fmt:message key="thead.issue.subject"/></th>
   20.74 +        <th><fmt:message key="thead.issue.category"/></th>
   20.75 +        <th><fmt:message key="thead.issue.status"/></th>
   20.76 +        <th><fmt:message key="thead.issue.created"/></th>
   20.77 +        <th><fmt:message key="thead.issue.updated"/></th>
   20.78 +        <th><fmt:message key="thead.issue.eta"/></th>
   20.79 +        <!-- TODO: add other information -->
   20.80 +    </tr>
   20.81 +    </thead>
   20.82 +    <!-- TODO: add actual list -->
   20.83 +</table>
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/src/main/webapp/WEB-INF/jsp/project-form.jsp	Fri May 22 17:26:27 2020 +0200
    21.3 @@ -0,0 +1,81 @@
    21.4 +<%--
    21.5 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    21.6 +
    21.7 +Copyright 2018 Mike Becker. All rights reserved.
    21.8 +
    21.9 +Redistribution and use in source and binary forms, with or without
   21.10 +modification, are permitted provided that the following conditions are met:
   21.11 +
   21.12 +1. Redistributions of source code must retain the above copyright
   21.13 +notice, this list of conditions and the following disclaimer.
   21.14 +
   21.15 +2. Redistributions in binary form must reproduce the above copyright
   21.16 +notice, this list of conditions and the following disclaimer in the
   21.17 +documentation and/or other materials provided with the distribution.
   21.18 +
   21.19 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   21.20 +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   21.21 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   21.22 +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   21.23 +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   21.24 +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   21.25 +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   21.26 +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   21.27 +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   21.28 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   21.29 +--%>
   21.30 +<%@page pageEncoding="UTF-8" %>
   21.31 +<%@page import="de.uapcore.lightpit.Constants" %>
   21.32 +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   21.33 +<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   21.34 +
   21.35 +<c:set scope="page" var="moduleInfo" value="${requestScope[Constants.REQ_ATTR_MODULE_INFO]}"/>
   21.36 +
   21.37 +<jsp:useBean id="project" type="de.uapcore.lightpit.entities.Project" scope="request"/>
   21.38 +<jsp:useBean id="users" type="java.util.List<de.uapcore.lightpit.entities.User>" scope="request"/>
   21.39 +
   21.40 +<form action="./${moduleInfo.modulePath}/commit" method="post">
   21.41 +    <table class="formtable">
   21.42 +        <colgroup>
   21.43 +            <col>
   21.44 +            <col style="width: 75ch">
   21.45 +        </colgroup>
   21.46 +        <tbody>
   21.47 +        <tr>
   21.48 +            <th><fmt:message key="thead.name"/></th>
   21.49 +            <td><input name="name" type="text" maxlength="20" required value="${project.name}"/></td>
   21.50 +        </tr>
   21.51 +        <tr>
   21.52 +            <th class="vtop"><fmt:message key="thead.description"/></th>
   21.53 +            <td><input type="text" name="description" maxlength="200" value="${project.description}"/></td>
   21.54 +        </tr>
   21.55 +        <tr>
   21.56 +            <th><fmt:message key="thead.repoUrl"/></th>
   21.57 +            <td><input name="repoUrl" type="url" maxlength="50" value="${project.repoUrl}"/></td>
   21.58 +        </tr>
   21.59 +        <tr>
   21.60 +            <th><fmt:message key="thead.owner"/></th>
   21.61 +            <td>
   21.62 +                <select name="owner">
   21.63 +                    <option value="-1"><fmt:message key="placeholder.null-owner"/></option>
   21.64 +                    <c:forEach var="user" items="${users}">
   21.65 +                        <option
   21.66 +                                <c:if test="${not empty project.owner and user.id eq project.owner.id}">selected</c:if>
   21.67 +                                value="${user.id}"><c:out value="${user.displayname}"/></option>
   21.68 +                    </c:forEach>
   21.69 +                </select>
   21.70 +            </td>
   21.71 +        </tr>
   21.72 +        </tbody>
   21.73 +        <tfoot>
   21.74 +        <tr>
   21.75 +            <td colspan="2">
   21.76 +                <input type="hidden" name="id" value="${project.id}"/>
   21.77 +                <a href="./${moduleInfo.modulePath}/" class="button"><fmt:message bundle="${lightpit_bundle}"
   21.78 +                                                                                  key="button.cancel"/></a>
   21.79 +                <button type="submit"><fmt:message bundle="${lightpit_bundle}" key="button.okay"/></button>
   21.80 +            </td>
   21.81 +        </tr>
   21.82 +        </tfoot>
   21.83 +    </table>
   21.84 +</form>
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/src/main/webapp/WEB-INF/jsp/projects.jsp	Fri May 22 17:26:27 2020 +0200
    22.3 @@ -0,0 +1,87 @@
    22.4 +<%--
    22.5 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    22.6 +
    22.7 +Copyright 2018 Mike Becker. All rights reserved.
    22.8 +
    22.9 +Redistribution and use in source and binary forms, with or without
   22.10 +modification, are permitted provided that the following conditions are met:
   22.11 +
   22.12 +1. Redistributions of source code must retain the above copyright
   22.13 +notice, this list of conditions and the following disclaimer.
   22.14 +
   22.15 +2. Redistributions in binary form must reproduce the above copyright
   22.16 +notice, this list of conditions and the following disclaimer in the
   22.17 +documentation and/or other materials provided with the distribution.
   22.18 +
   22.19 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   22.20 +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   22.21 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   22.22 +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   22.23 +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   22.24 +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   22.25 +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   22.26 +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   22.27 +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   22.28 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   22.29 +--%>
   22.30 +<%@page pageEncoding="UTF-8" %>
   22.31 +<%@page import="de.uapcore.lightpit.Constants" %>
   22.32 +<%@page import="de.uapcore.lightpit.modules.ProjectsModule" %>
   22.33 +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   22.34 +<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   22.35 +
   22.36 +<c:set scope="page" var="moduleInfo" value="${requestScope[Constants.REQ_ATTR_MODULE_INFO]}"/>
   22.37 +<c:set scope="page" var="selectedProject" value="${sessionScope[ProjectsModule.SESSION_ATTR_SELECTED_PROJECT]}"/>
   22.38 +
   22.39 +<jsp:useBean id="projects" type="java.util.List<de.uapcore.lightpit.entities.Project>" scope="request"/>
   22.40 +
   22.41 +<c:if test="${empty projects}">
   22.42 +    <div class="info-box">
   22.43 +        <fmt:message key="no-projects"/>
   22.44 +    </div>
   22.45 +</c:if>
   22.46 +
   22.47 +<div id="tool-area">
   22.48 +    <a href="./${moduleInfo.modulePath}/edit" class="button"><fmt:message key="button.create"/></a>
   22.49 +</div>
   22.50 +
   22.51 +<c:if test="${not empty projects}">
   22.52 +    <table id="project-list" class="datatable medskip fullwidth">
   22.53 +        <colgroup>
   22.54 +            <col>
   22.55 +            <col style="width: 10%">
   22.56 +            <col style="width: 35%">
   22.57 +            <col style="width: 30%">
   22.58 +            <col style="width: 25%">
   22.59 +        </colgroup>
   22.60 +        <thead>
   22.61 +        <tr>
   22.62 +            <th></th>
   22.63 +            <th><fmt:message key="thead.name"/></th>
   22.64 +            <th><fmt:message key="thead.description"/></th>
   22.65 +            <th><fmt:message key="thead.repoUrl"/></th>
   22.66 +            <th><fmt:message key="thead.owner"/></th>
   22.67 +        </tr>
   22.68 +        </thead>
   22.69 +        <tbody>
   22.70 +        <c:forEach var="project" items="${projects}">
   22.71 +            <tr class="nowrap">
   22.72 +                <td style="width: 2em;"><a href="./${moduleInfo.modulePath}/edit?id=${project.id}">&#x270e;</a></td>
   22.73 +                <td><a href="./${moduleInfo.modulePath}/view?pid=${project.id}"><c:out value="${project.name}"/></a>
   22.74 +                </td>
   22.75 +                <td><c:out value="${project.description}"/></td>
   22.76 +                <td>
   22.77 +                    <c:if test="${not empty project.repoUrl}">
   22.78 +                        <a target="_blank" href="<c:out value="${project.repoUrl}"/>"><c:out
   22.79 +                                value="${project.repoUrl}"/></a>
   22.80 +                    </c:if>
   22.81 +                </td>
   22.82 +                <td>
   22.83 +                    <c:if test="${not empty project.owner}"><c:out value="${project.owner.displayname}"/></c:if>
   22.84 +                    <c:if test="${empty project.owner}"><fmt:message key="placeholder.null-owner"/></c:if>
   22.85 +                </td>
   22.86 +            </tr>
   22.87 +        </c:forEach>
   22.88 +        </tbody>
   22.89 +    </table>
   22.90 +</c:if>
    23.1 --- a/src/main/webapp/WEB-INF/jsp/site.jsp	Fri May 22 17:19:09 2020 +0200
    23.2 +++ b/src/main/webapp/WEB-INF/jsp/site.jsp	Fri May 22 17:26:27 2020 +0200
    23.3 @@ -43,8 +43,8 @@
    23.4  <%-- Define an alias for the main menu --%>
    23.5  <c:set scope="page" var="breadcrumbs" value="${requestScope[Constants.REQ_ATTR_BREADCRUMBS]}"/>
    23.6  
    23.7 -<%-- Define an alias for the fragment name --%>
    23.8 -<c:set scope="page" var="fragment" value="${requestScope[Constants.REQ_ATTR_FRAGMENT]}"/>
    23.9 +<%-- Define an alias for the content page name --%>
   23.10 +<c:set scope="page" var="contentPage" value="${requestScope[Constants.REQ_ATTR_CONTENT_PAGE]}"/>
   23.11  
   23.12  <%-- Define an alias for the optional redirect location --%>
   23.13  <c:set scope="page" var="redirectLocation" value="${requestScope[Constants.REQ_ATTR_REDIRECT_LOCATION]}"/>
   23.14 @@ -95,10 +95,10 @@
   23.15      </div>
   23.16  </c:if>
   23.17  <div id="content-area">
   23.18 -    <c:if test="${not empty fragment}">
   23.19 +    <c:if test="${not empty contentPage}">
   23.20          <fmt:setBundle scope="request" basename="${moduleInfo.bundleBaseName}"/>
   23.21          <fmt:setBundle scope="request" var="lightpit_bundle" basename="localization.lightpit"/>
   23.22 -        <c:import url="${fragment}"/>
   23.23 +        <c:import url="${contentPage}"/>
   23.24      </c:if>
   23.25  </div>
   23.26  </body>
    24.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.2 +++ b/src/main/webapp/WEB-INF/jsp/user-form.jsp	Fri May 22 17:26:27 2020 +0200
    24.3 @@ -0,0 +1,72 @@
    24.4 +<%--
    24.5 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    24.6 +
    24.7 +Copyright 2018 Mike Becker. All rights reserved.
    24.8 +
    24.9 +Redistribution and use in source and binary forms, with or without
   24.10 +modification, are permitted provided that the following conditions are met:
   24.11 +
   24.12 +1. Redistributions of source code must retain the above copyright
   24.13 +notice, this list of conditions and the following disclaimer.
   24.14 +
   24.15 +2. Redistributions in binary form must reproduce the above copyright
   24.16 +notice, this list of conditions and the following disclaimer in the
   24.17 +documentation and/or other materials provided with the distribution.
   24.18 +
   24.19 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   24.20 +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   24.21 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   24.22 +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   24.23 +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   24.24 +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   24.25 +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   24.26 +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   24.27 +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   24.28 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   24.29 +--%>
   24.30 +<%@page pageEncoding="UTF-8" %>
   24.31 +<%@page import="de.uapcore.lightpit.Constants" %>
   24.32 +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   24.33 +<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   24.34 +
   24.35 +<c:set scope="page" var="moduleInfo" value="${requestScope[Constants.REQ_ATTR_MODULE_INFO]}"/>
   24.36 +
   24.37 +<jsp:useBean id="user" type="de.uapcore.lightpit.entities.User" scope="request"/>
   24.38 +
   24.39 +<form action="./${moduleInfo.modulePath}/commit" method="post">
   24.40 +    <table class="formtable">
   24.41 +        <colgroup>
   24.42 +            <col>
   24.43 +            <col style="width: 50ch">
   24.44 +        </colgroup>
   24.45 +        <tbody>
   24.46 +        <tr>
   24.47 +            <th><fmt:message key="thead.username"/></th>
   24.48 +            <td><input name="username" type="text" maxlength="50" required value="${user.username}"
   24.49 +                       <c:if test="${user.id ge 0}">readonly</c:if> /></td>
   24.50 +        </tr>
   24.51 +        <tr>
   24.52 +            <th><fmt:message key="thead.givenname"/></th>
   24.53 +            <td><input name="givenname" type="text" maxlength="50" value="${user.givenname}"/></td>
   24.54 +        </tr>
   24.55 +        <tr>
   24.56 +            <th><fmt:message key="thead.lastname"/></th>
   24.57 +            <td><input name="lastname" type="text" maxlength="50" value="${user.lastname}"/></td>
   24.58 +        </tr>
   24.59 +        <tr>
   24.60 +            <th><fmt:message key="thead.mail"/></th>
   24.61 +            <td><input name="mail" type="email" maxlength="50" value="${user.mail}"/></td>
   24.62 +        </tr>
   24.63 +        </tbody>
   24.64 +        <tfoot>
   24.65 +        <tr>
   24.66 +            <td colspan="2">
   24.67 +                <input type="hidden" name="userid" value="${user.id}"/>
   24.68 +                <a href="./${moduleInfo.modulePath}/" class="button"><fmt:message bundle="${lightpit_bundle}"
   24.69 +                                                                                  key="button.cancel"/></a>
   24.70 +                <button type="submit"><fmt:message bundle="${lightpit_bundle}" key="button.okay"/></button>
   24.71 +            </td>
   24.72 +        </tr>
   24.73 +        </tfoot>
   24.74 +    </table>
   24.75 +</form>
    25.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.2 +++ b/src/main/webapp/WEB-INF/jsp/users.jsp	Fri May 22 17:26:27 2020 +0200
    25.3 @@ -0,0 +1,63 @@
    25.4 +<%--
    25.5 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    25.6 +
    25.7 +Copyright 2018 Mike Becker. All rights reserved.
    25.8 +
    25.9 +Redistribution and use in source and binary forms, with or without
   25.10 +modification, are permitted provided that the following conditions are met:
   25.11 +
   25.12 +1. Redistributions of source code must retain the above copyright
   25.13 +notice, this list of conditions and the following disclaimer.
   25.14 +
   25.15 +2. Redistributions in binary form must reproduce the above copyright
   25.16 +notice, this list of conditions and the following disclaimer in the
   25.17 +documentation and/or other materials provided with the distribution.
   25.18 +
   25.19 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   25.20 +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   25.21 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   25.22 +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   25.23 +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   25.24 +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   25.25 +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   25.26 +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   25.27 +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   25.28 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   25.29 +--%>
   25.30 +<%@page pageEncoding="UTF-8" %>
   25.31 +<%@page import="de.uapcore.lightpit.Constants" %>
   25.32 +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   25.33 +<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   25.34 +
   25.35 +<c:set scope="page" var="moduleInfo" value="${requestScope[Constants.REQ_ATTR_MODULE_INFO]}"/>
   25.36 +
   25.37 +<jsp:useBean id="users" type="java.util.List<de.uapcore.lightpit.entities.User>" scope="request"/>
   25.38 +
   25.39 +<c:if test="${empty users}">
   25.40 +    <div class="info-box">
   25.41 +        <fmt:message key="no-users"/>
   25.42 +    </div>
   25.43 +</c:if>
   25.44 +
   25.45 +<div id="tool-area">
   25.46 +    <a href="./${moduleInfo.modulePath}/edit" class="button"><fmt:message key="button.create"/></a>
   25.47 +</div>
   25.48 +
   25.49 +<c:if test="${not empty users}">
   25.50 +    <table class="datatable medskip">
   25.51 +        <thead>
   25.52 +        <tr>
   25.53 +            <th></th>
   25.54 +            <th><fmt:message key="thead.displayname"/></th>
   25.55 +        </tr>
   25.56 +        </thead>
   25.57 +        <tbody>
   25.58 +        <c:forEach var="user" items="${users}">
   25.59 +            <tr>
   25.60 +                <td><a href="./${moduleInfo.modulePath}/edit?id=${user.id}">&#x270e;</a></td>
   25.61 +                <td><c:out value="${user.displayname}"/></td>
   25.62 +            </tr>
   25.63 +        </c:forEach>
   25.64 +        </tbody>
   25.65 +    </table>
   25.66 +</c:if>
    26.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.2 +++ b/src/main/webapp/WEB-INF/jsp/version-form.jsp	Fri May 22 17:26:27 2020 +0200
    26.3 @@ -0,0 +1,79 @@
    26.4 +<%--
    26.5 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
    26.6 +
    26.7 +Copyright 2018 Mike Becker. All rights reserved.
    26.8 +
    26.9 +Redistribution and use in source and binary forms, with or without
   26.10 +modification, are permitted provided that the following conditions are met:
   26.11 +
   26.12 +1. Redistributions of source code must retain the above copyright
   26.13 +notice, this list of conditions and the following disclaimer.
   26.14 +
   26.15 +2. Redistributions in binary form must reproduce the above copyright
   26.16 +notice, this list of conditions and the following disclaimer in the
   26.17 +documentation and/or other materials provided with the distribution.
   26.18 +
   26.19 +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   26.20 +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   26.21 +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   26.22 +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   26.23 +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   26.24 +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   26.25 +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   26.26 +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   26.27 +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   26.28 +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   26.29 +--%>
   26.30 +<%@page pageEncoding="UTF-8" %>
   26.31 +<%@page import="de.uapcore.lightpit.Constants" %>
   26.32 +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
   26.33 +<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
   26.34 +
   26.35 +<c:set scope="page" var="moduleInfo" value="${requestScope[Constants.REQ_ATTR_MODULE_INFO]}"/>
   26.36 +<c:set scope="page" var="selectedProject" value="${sessionScope[ProjectsModule.SESSION_ATTR_SELECTED_PROJECT]}"/>
   26.37 +
   26.38 +<jsp:useBean id="version" type="de.uapcore.lightpit.entities.Version" scope="request"/>
   26.39 +<jsp:useBean id="versionStatusEnum" type="de.uapcore.lightpit.entities.VersionStatus[]" scope="request"/>
   26.40 +
   26.41 +<form action="./${moduleInfo.modulePath}/versions/commit" method="post">
   26.42 +    <table class="formtable" style="width: 35ch">
   26.43 +        <colgroup>
   26.44 +            <col>
   26.45 +            <col style="width: 100%">
   26.46 +        </colgroup>
   26.47 +        <tbody>
   26.48 +        <tr>
   26.49 +            <th><fmt:message key="thead.version.name"/></th>
   26.50 +            <td><input name="name" type="text" maxlength="20" required value="${version.name}"/></td>
   26.51 +        </tr>
   26.52 +        <tr>
   26.53 +            <th><fmt:message key="thead.version.status"/></th>
   26.54 +            <td>
   26.55 +                <select name="status" required>
   26.56 +                    <c:forEach var="elem" items="${versionStatusEnum}">
   26.57 +                        <option
   26.58 +                                <c:if test="${elem eq version.status}">selected</c:if> value="${elem}"><fmt:message
   26.59 +                                key="version.status.${elem}"/></option>
   26.60 +                    </c:forEach>
   26.61 +                </select>
   26.62 +            </td>
   26.63 +        </tr>
   26.64 +        <tr title="<fmt:message key="tooltip.ordinal" />">
   26.65 +            <th><fmt:message key="thead.version.ordinal"/></th>
   26.66 +            <td>
   26.67 +                <input name="ordinal" type="number" min="0" value="${version.ordinal}"/>
   26.68 +            </td>
   26.69 +        </tr>
   26.70 +        </tbody>
   26.71 +        <tfoot>
   26.72 +        <tr>
   26.73 +            <td colspan="2">
   26.74 +                <input type="hidden" name="id" value="${version.id}"/>
   26.75 +                <a href="./${moduleInfo.modulePath}/versions/" class="button"><fmt:message bundle="${lightpit_bundle}"
   26.76 +                                                                                           key="button.cancel"/></a>
   26.77 +                <button type="submit"><fmt:message bundle="${lightpit_bundle}" key="button.okay"/></button>
   26.78 +            </td>
   26.79 +        </tr>
   26.80 +        </tfoot>
   26.81 +    </table>
   26.82 +</form>

mercurial