Bladeren bron

AppendixText forms

Andrew Grant 2 maanden geleden
bovenliggende
commit
9f69f118d4

+ 3 - 7
src/main/java/scot/carricksoftware/grants/constants/TextAttributeConstants.java

@@ -14,19 +14,15 @@ public class TextAttributeConstants {
         // to stop checkstyle complaining
     }
 
-    @SuppressWarnings({"unused"})
     public static final String DOCUMENT_TEXTS = "documentTexts";
-    @SuppressWarnings({"unused"})
     public static final String DOCUMENT_TEXT_COMMAND = "documentTextCommand";
 
-    @SuppressWarnings({"unused"})
+    public static final String APPENDIX_TEXTS = "appendixTexts";
+    public static final String APPENDIX_TEXT_COMMAND = "appendixTextCommand";
+
     public static final String PERSON_TEXTS = "personTexts";
-    @SuppressWarnings({"unused"})
     public static final String PERSON_TEXT_COMMAND = "personTextCommand";
-
-    @SuppressWarnings({"unused"})
     public static final String PLACE_TEXTS = "placeTexts";
-    @SuppressWarnings({"unused"})
     public static final String PLACE_TEXT_COMMAND = "placeTextCommand";
 
     @SuppressWarnings("unused")

+ 22 - 30
src/main/java/scot/carricksoftware/grants/constants/TextMappingConstants.java

@@ -14,67 +14,59 @@ public class TextMappingConstants {
         // to stop checkstyle complaining
     }
 
+    public static final String DOCUMENT_TEXT_LIST = "/documentTexts";
+    public static final String DOCUMENT_TEXT_NEXT = "/documentTexts/next";
+    public static final String DOCUMENT_TEXT_PREVIOUS = "/documentTexts/prev";
+    public static final String DOCUMENT_TEXT_REWIND = "/documentTexts/rewind";
+    public static final String DOCUMENT_TEXT_FF = "/documentTexts/ff";
+    public static final String DOCUMENT_TEXT_NEW = "/documentText/new";
+    public static final String DOCUMENT_TEXT = "/documentText";
+    public static final String DOCUMENT_TEXT_SHOW = "/documentText/{id}/show";
+    public static final String DOCUMENT_TEXT_DELETE = "/documentTexts/{id}/delete";
+    public static final String DOCUMENT_TEXT_EDIT = "documentText/{id}/edit";
 
     @SuppressWarnings({"unused"})
-    public static final String DOCUMENT_TEXT_LIST = "/documentTexts";
+    public static final String APPENDIX_TEXT_LIST = "/appendixTexts";
     @SuppressWarnings({"unused"})
-    public static final String DOCUMENT_TEXT_NEXT = "/documentTexts/next";
+    public static final String APPENDIX_TEXT_NEXT = "/appendixTexts/next";
     @SuppressWarnings({"unused"})
-    public static final String DOCUMENT_TEXT_PREVIOUS = "/documentTexts/prev";
+    public static final String APPENDIX_TEXT_PREVIOUS = "/appendixTexts/prev";
     @SuppressWarnings({"unused"})
-    public static final String DOCUMENT_TEXT_REWIND = "/documentTexts/rewind";
+    public static final String APPENDIX_TEXT_REWIND = "/appendixTexts/rewind";
     @SuppressWarnings({"unused"})
-    public static final String DOCUMENT_TEXT_FF = "/documentTexts/ff";
+    public static final String APPENDIX_TEXT_FF = "/appendixTexts/ff";
     @SuppressWarnings({"unused"})
-    public static final String DOCUMENT_TEXT_NEW = "/documentText/new";
+    public static final String APPENDIX_TEXT_NEW = "/appendixText/new";
     @SuppressWarnings({"unused"})
-    public static final String DOCUMENT_TEXT = "/documentText";
+    public static final String APPENDIX_TEXT = "/appendixText";
     @SuppressWarnings({"unused"})
-    public static final String DOCUMENT_TEXT_SHOW = "/documentText/{id}/show";
+    public static final String APPENDIX_TEXT_SHOW = "/appendixText/{id}/show";
     @SuppressWarnings({"unused"})
-    public static final String DOCUMENT_TEXT_DELETE = "/documentTexts/{id}/delete";
+    public static final String APPENDIX_TEXT_DELETE = "/appendixTexts/{id}/delete";
     @SuppressWarnings({"unused"})
-    public static final String DOCUMENT_TEXT_EDIT = "documentText/{id}/edit";
+    public static final String APPENDIX_TEXT_EDIT = "appendixText/{id}/edit";
+
 
     public static final String PERSON_TEXT_LIST = "/personTexts";
-    @SuppressWarnings({"unused"})
     public static final String PERSON_TEXT_NEXT = "/personTexts/next";
-    @SuppressWarnings({"unused"})
     public static final String PERSON_TEXT_PREVIOUS = "/personTexts/prev";
-    @SuppressWarnings({"unused"})
     public static final String PERSON_TEXT_REWIND = "/personTexts/rewind";
-    @SuppressWarnings({"unused"})
     public static final String PERSON_TEXT_FF = "/personTexts/ff";
-    @SuppressWarnings({"unused"})
     public static final String PERSON_TEXT_NEW = "/personText/new";
-    @SuppressWarnings({"unused"})
     public static final String PERSON_TEXT = "/personText";
-    @SuppressWarnings({"unused"})
     public static final String PERSON_TEXT_SHOW = "/personText/{id}/show";
-    @SuppressWarnings({"unused"})
     public static final String PERSON_TEXT_DELETE = "/personTexts/{id}/delete";
-    @SuppressWarnings({"unused"})
     public static final String PERSON_TEXT_EDIT = "personText/{id}/edit";
 
-    @SuppressWarnings("unused")
     public static final String PLACE_TEXT_LIST = "/placeTexts";
-    @SuppressWarnings({"unused"})
     public static final String PLACE_TEXT_NEXT = "/placeTexts/next";
-    @SuppressWarnings({"unused"})
-    public static final String PLACE_TEXT_PREVIOUS = "/placeTexts/prev";
-    @SuppressWarnings({"unused"})
+    public static final String PLACE_TEXT_PREVIOUS = "/placeTexts/previous";
     public static final String PLACE_TEXT_REWIND = "/placeTexts/rewind";
-    @SuppressWarnings({"unused"})
     public static final String PLACE_TEXT_FF = "/placeTexts/ff";
-    @SuppressWarnings({"unused"})
     public static final String PLACE_TEXT_NEW = "/placeText/new";
-    @SuppressWarnings({"unused"})
     public static final String PLACE_TEXT = "/placeText";
-    @SuppressWarnings({"unused"})
     public static final String PLACE_TEXT_SHOW = "/placeText/{id}/show";
-    @SuppressWarnings({"unused"})
     public static final String PLACE_TEXT_DELETE = "/placeTexts/{id}/delete";
-    @SuppressWarnings({"unused"})
     public static final String PLACE_TEXT_EDIT = "placeText/{id}/edit";
     
 }

+ 3 - 0
src/main/java/scot/carricksoftware/grants/constants/ViewConstants.java

@@ -65,6 +65,9 @@ public class ViewConstants {
     public static final String DOCUMENT_TEXT_LIST = "text/documentText/list";
     public static final String DOCUMENT_TEXT_FORM = "text/documentText/form";
 
+    public static final String APPENDIX_TEXT_LIST = "text/appendixText/list";
+    public static final String APPENDIX_TEXT_FORM = "text/appendixText/form";
+
     public static final String PERSON_TEXT_LIST = "text/personText/list";
     public static final String PERSON_TEXT_FORM = "text/personText/form";
 

+ 18 - 0
src/main/java/scot/carricksoftware/grants/controllers/text/appendixtext/AppendixTextFormController.java

@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:08. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.appendixtext;
+
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import scot.carricksoftware.grants.commands.text.AppendixTextCommand;
+
+@SuppressWarnings("unused")
+
+public interface AppendixTextFormController {
+
+    String saveOrUpdate(@ModelAttribute AppendixTextCommand appendixTextCommand, BindingResult bindingResult, Model model);
+}

+ 100 - 0
src/main/java/scot/carricksoftware/grants/controllers/text/appendixtext/AppendixTextFormControllerImpl.java

@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:08. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.appendixtext;
+
+import jakarta.validation.Valid;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import scot.carricksoftware.grants.commands.text.AppendixTextCommandImpl;
+import scot.carricksoftware.grants.constants.MappingConstants;
+import scot.carricksoftware.grants.constants.TextAttributeConstants;
+import scot.carricksoftware.grants.constants.TextMappingConstants;
+import scot.carricksoftware.grants.constants.ViewConstants;
+import scot.carricksoftware.grants.converters.text.appendixtext.AppendixTextCommandConverterImpl;
+import scot.carricksoftware.grants.converters.text.appendixtext.AppendixTextConverterImpl;
+import scot.carricksoftware.grants.commands.text.AppendixTextCommand;
+
+import scot.carricksoftware.grants.services.text.appendixtext.AppendixTextService;
+import scot.carricksoftware.grants.validators.text.AppendixTextCommandValidator;
+
+@SuppressWarnings("LoggingSimilarMessage")
+@Controller
+public class AppendixTextFormControllerImpl implements AppendixTextFormController {
+
+    private static final Logger logger = LogManager.getLogger(AppendixTextFormControllerImpl.class);
+    private final AppendixTextService appendixTextService;
+    @SuppressWarnings({"FieldCanBeLocal", "unused"})
+    private final AppendixTextCommandConverterImpl appendixTextCommandConverter;
+    private final AppendixTextConverterImpl appendixTextConverter;
+    private final AppendixTextCommandValidator appendixTextCommandValidator;
+
+
+    public AppendixTextFormControllerImpl(AppendixTextService appendixTextService,
+                                          AppendixTextCommandConverterImpl appendixTextCommandConverter,
+                                          AppendixTextConverterImpl appendixTextConverter,
+                                          AppendixTextCommandValidator appendixTextCommandValidator) {
+        this.appendixTextService = appendixTextService;
+        this.appendixTextCommandConverter = appendixTextCommandConverter;
+
+
+        this.appendixTextConverter = appendixTextConverter;
+        this.appendixTextCommandValidator = appendixTextCommandValidator;
+    }
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(TextMappingConstants.APPENDIX_TEXT_NEW)
+    public final String getNewAppendixText(final Model model) {
+        logger.debug("AppendixTextFormControllerImpl::getNewAppendixText");
+        model.addAttribute(TextAttributeConstants.APPENDIX_TEXT_COMMAND, new AppendixTextCommandImpl());
+        return ViewConstants.APPENDIX_TEXT_FORM;
+    }
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(TextMappingConstants.APPENDIX_TEXT_EDIT)
+    public final String appendixTextEdit(@Valid @PathVariable final String id, Model model) {
+        logger.debug("AppendixTextFormControllerImpl::appendixTextEdit");
+        model.addAttribute(TextAttributeConstants.APPENDIX_TEXT_COMMAND, appendixTextService.findById(Long.valueOf(id)));
+        return ViewConstants.APPENDIX_TEXT_FORM;
+    }
+
+
+    @Override
+    @PostMapping(TextMappingConstants.APPENDIX_TEXT)
+    public String saveOrUpdate(@Valid @ModelAttribute AppendixTextCommand appendixTextCommand, BindingResult bindingResult, Model model) {
+        logger.debug("AppendixTextFormControllerImpl::saveOrUpdate");
+
+        appendixTextCommandValidator.validate(appendixTextCommand, bindingResult);
+
+
+        if (bindingResult.hasErrors()) {
+            bindingResult.getAllErrors().forEach(error -> logger.debug(error.getDefaultMessage()));
+            return ViewConstants.APPENDIX_TEXT_FORM;
+        }
+
+        AppendixTextCommand savedCommand = appendixTextService.saveAppendixTextCommand(appendixTextCommand);
+        model.addAttribute(TextAttributeConstants.APPENDIX_TEXT_COMMAND, savedCommand);
+        return MappingConstants.REDIRECT + TextMappingConstants.APPENDIX_TEXT_SHOW.replace("{id}", "" + savedCommand.getId());
+    }
+
+
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(TextMappingConstants.APPENDIX_TEXT_SHOW)
+    public String showById(@PathVariable String id, Model model) {
+        logger.debug("AppendixTextFormControllerImpl::saveOrUpdate");
+        appendixTextConverter.convert(appendixTextService.findById(Long.valueOf(id)));
+        return ViewConstants.APPENDIX_TEXT_FORM;
+    }
+
+
+}

+ 29 - 0
src/main/java/scot/carricksoftware/grants/controllers/text/appendixtext/AppendixTextListController.java

@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:08. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.appendixtext;
+
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.PathVariable;
+
+@SuppressWarnings("unused")
+@Controller
+public interface AppendixTextListController {
+
+    String getListPage(final Model model);
+
+    String getNextPage(final Model model);
+
+    String getPreviousPage(final Model model);
+
+    String getFirstPage(final Model model);
+
+    String getLastPage(final Model model);
+
+    String appendixTextDelete(@PathVariable String id);
+
+    int getPageNumber();
+}

+ 108 - 0
src/main/java/scot/carricksoftware/grants/controllers/text/appendixtext/AppendixTextListControllerImpl.java

@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:08. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.appendixtext;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import scot.carricksoftware.grants.constants.ApplicationConstants;
+import scot.carricksoftware.grants.constants.MappingConstants;
+import scot.carricksoftware.grants.constants.TextAttributeConstants;
+import scot.carricksoftware.grants.constants.TextMappingConstants;
+import scot.carricksoftware.grants.constants.ViewConstants;
+import scot.carricksoftware.grants.controllers.ControllerHelper;
+import scot.carricksoftware.grants.services.text.appendixtext.AppendixTextService;
+
+import static java.lang.Integer.max;
+
+@Controller
+public class AppendixTextListControllerImpl implements AppendixTextListController {
+
+    private static final Logger logger = LogManager.getLogger(AppendixTextListControllerImpl.class);
+
+
+    private int currentPage = 0;
+    private final ControllerHelper controllerHelper;
+    private final AppendixTextService appendixTextService;
+
+    public AppendixTextListControllerImpl(ControllerHelper controllerHelper,
+                                          AppendixTextService appendixTextService) {
+        this.controllerHelper = controllerHelper;
+        this.appendixTextService = appendixTextService;
+    }
+
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(TextMappingConstants.APPENDIX_TEXT_LIST)
+    @Override
+    public final String getListPage(final Model model) {
+        logger.debug("AppendixTextListControllerImpl::getImagePage");
+        currentPage = 0;
+        return sendAttributesAndReturn(model);
+    }
+
+    @SuppressWarnings("SameReturnValue")
+    private String sendAttributesAndReturn(Model model) {
+        model.addAttribute(TextAttributeConstants.APPENDIX_TEXTS, appendixTextService.getPagedAppendixTexts(currentPage));
+        controllerHelper.addAttributes(model);
+        return ViewConstants.APPENDIX_TEXT_LIST;
+    }
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(TextMappingConstants.APPENDIX_TEXT_NEXT)
+    @Override
+    public final String getNextPage(final Model model) {
+        logger.debug("AppendixTextListControllerImpl::getNextPage");
+        currentPage++;
+        return sendAttributesAndReturn(model);
+    }
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(TextMappingConstants.APPENDIX_TEXT_PREVIOUS)
+    @Override
+    public final String getPreviousPage(final Model model) {
+        logger.debug("AppendixTextListControllerImpl::getPreviousPage");
+        currentPage = max(0, currentPage - 1);
+        return sendAttributesAndReturn(model);
+    }
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(TextMappingConstants.APPENDIX_TEXT_REWIND)
+    public final String getFirstPage(final Model model) {
+        logger.debug("AppendixTextListControllerImpl::getFirstPage");
+        currentPage = 0;
+        return sendAttributesAndReturn(model);
+    }
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(TextMappingConstants.APPENDIX_TEXT_FF)
+    @Override
+    public final String getLastPage(final Model model) {
+        logger.debug("AppendixTextListControllerImpl::getLastPage");
+        long imageCount = appendixTextService.count();
+        currentPage = (int) (imageCount / ApplicationConstants.DEFAULT_PAGE_SIZE);
+        return sendAttributesAndReturn(model);
+    }
+
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(TextMappingConstants.APPENDIX_TEXT_DELETE)
+    @Override
+    public final String appendixTextDelete(@PathVariable final String id) {
+        logger.debug("AppendixTextListControllerImpl::imageDelete");
+        appendixTextService.deleteById(Long.valueOf(id));
+        return MappingConstants.REDIRECT + TextMappingConstants.APPENDIX_TEXT_LIST;
+    }
+
+    @Override
+    public int getPageNumber() {
+        return currentPage;
+    }
+    
+}

+ 27 - 0
src/main/java/scot/carricksoftware/grants/validators/text/AppendixTextCommandValidator.java

@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 19/03/2025, 09:50. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.validators.text;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Component;
+import org.springframework.validation.BindingResult;
+import scot.carricksoftware.grants.commands.text.AppendixTextCommand;
+
+@SuppressWarnings("unused")
+@Component
+public class AppendixTextCommandValidator {
+
+    private static final Logger logger = LogManager.getLogger(AppendixTextCommandValidator.class);
+
+    public void validate(AppendixTextCommand appendixTextCommand, BindingResult bindingResult) {
+      logger.debug("DocumentTextCommandValidator::validate");
+
+    }
+
+
+}
+

+ 1 - 1
src/main/resources/application.properties

@@ -2,5 +2,5 @@ spring.application.name=grants
 server.port=8086
 server.servlet.context-path=/grants
 spring.mvc.format.date=dd-MM-yyyy
-spring.profiles.active=uat
+spring.profiles.active=dev
 logging.level.scot.carricksoftware=trace

+ 104 - 0
src/main/resources/templates/text/appendixtext/form.html

@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<!--suppress XmlHighlighting -->
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <!-- Required meta tags -->
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+
+    <!-- Bootstrap CSS -->
+    <!--suppress SpellCheckingInspection -->
+    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
+          integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
+
+    <!--suppress SpellCheckingInspection -->
+    <script src="https://code.jquery.com/jquery-3.6.0.min.js"
+            integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
+    <title>Grants - images</title>
+
+</head>
+<body>
+<!--/*@thymesVar id="appendixTextCommand" type="scot.carricksoftware.grants.commands.text.AppendixTextCommand"*/-->
+<div th:insert="~{fragments/layout::banner}"></div>
+
+<div class="container border border-info rounded-3 text-center p-4">
+    <h3>Appendix Text Details</h3>
+    <form th:object="${appendixTextCommand}" th:action="@{/appendixText}" method="post">
+        <div th:if="${#fields.hasErrors('*')}" class="alert alert-danger">
+            <p>Please Correct The Errors Below</p>
+        </div>
+        <table style="width:100%;">
+            <tr>
+                <td style="text-align: right;">
+                    <label for="id"><span style="color: rgb(255,0,0);">*</span>Database Id :&nbsp;</label>
+                </td>
+                <td style="text-align: left;">
+                    <input class="form-control" id="id"
+                           th:field="*{id}" type="text" readonly>
+                </td>
+            </tr>
+
+            <tr>
+                <td style="text-align: right;">
+                    <label for="order">Order :&nbsp;</label>
+                </td>
+                <td style="text-align: left;">
+                    <input class="form-control" id="order"
+                           th:field="*{order}" type="text">
+                    <div th:if="${#fields.hasErrors('order')}">
+                        <ul class="text-danger">
+                            <li th:each="err : ${#fields.errors('order')}" th:text="${err}"/>
+                        </ul>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td style="text-align: right;">
+                    <label for="level">Level :&nbsp;</label>
+                </td>
+                <td style="text-align: left;">
+                    <input class="form-control" id="level"
+                           th:field="*{level}" type="text">
+                    <div th:if="${#fields.hasErrors('level')}">
+                        <ul class="text-danger">
+                            <li th:each="err : ${#fields.errors('level')}" th:text="${err}"/>
+                        </ul>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td style="text-align: right;">
+                    <label for="heading">Heading :&nbsp;</label>
+                </td>
+                <td style="text-align: left;">
+                    <input class="form-control" id="heading"
+                           th:field="*{heading}" type="text">
+                    <div th:if="${#fields.hasErrors('heading')}">
+                        <ul class="text-danger">
+                            <li th:each="err : ${#fields.errors('heading')}" th:text="${err}"/>
+                        </ul>
+                    </div>
+                </td>
+            </tr>
+            <tr style="border-bottom: 5px solid #ccc;">
+                <td style="text-align: right;">
+                    <label for="content">Content :&nbsp;</label>
+                </td>
+                <td style="text-align: left;">
+                    <div>
+                        <textarea class="content" id="content" rows="25" cols="60"
+                                  th:field="*{content}" type="text"></textarea>
+                    </div>
+                </td>
+            </tr>
+            <tr>
+                <td>&nbsp;</td>
+            </tr>
+        </table>
+        <button type="submit" class="btn btn-primary">Commit</button>
+        <a class="btn btn-secondary" th:href="@{/appendixTexts}" th:text="${'List all'}">List all</a>
+        <a class="btn btn-success" th:href="@{/}" th:text="${'Home'}">Home</a>
+    </form>
+</div>
+</body>
+</html>

+ 71 - 0
src/main/resources/templates/text/appendixtext/list.html

@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+
+<!--
+  ~ Copyright (c) 2025 Andrew Grant of Carrick Software .
+  ~ All rights reserved.
+  -->
+<html lang="en" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8"/>
+    <title>People </title>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"
+          integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
+</head>
+<body>
+<div th:insert="~{fragments/layout::banner}"></div>
+
+
+<div class="container text-center">
+    <div class="container border border-info
+                    rounded-3 text-center p-4">
+        <h3>Person Texts</h3>
+        <table class="table table-striped table-bordered">
+            <thead class="table-dark">
+            <tr>
+                <th>ID</th>
+                <th>Order</th>
+                <th>Level</th>
+                <th>Heading</th>
+                <th></th>
+            </tr>
+            </thead>
+
+            <!--/*@thymesVar id="text" type="scot.carricksoftware.grants.domains.text.AppendixText"*/-->
+            <tr th:each="text : ${appendixTexts}">
+                <td th:text="${text.id}">123</td>
+                <td th:text="${text.order}">123</td>
+                <td th:text="${text.level}">123</td>
+                <td th:text="${text.heading}">123</td>
+                <td><span>
+                        <a th:action="delete" class="btn btn-danger btn-sm" href=""
+                           th:href="'appendixTexts/' + ${text.id} + '/delete'"
+                           th:text="Delete"></a>
+                    <a th:action="edit" class="btn btn-warning btn-sm"
+                       th:href="'appendixText/' + ${text.id} + '/edit'"
+                       th:text="Edit"></a>
+                    </span></td>
+            </tr>
+            <tfoot>
+            <tr>
+                <td colspan="4"><span>
+                        <a th:action="rewind" class="btn btn-secondary btn-sm" th:href="@{/appendixTexts/rewind}"
+                           th:text="'<<'"></a>
+                         <a th:action="back" class="btn btn-secondary btn-sm"
+                            th:href="@{/appendixTexts/prev}" th:text="'<'"></a>
+                         <a th:action="new" class="btn btn-primary btn-sm" th:href="@{/appendixText/new}"
+                            th:text="'New Appendix Text'"></a>
+                         <a th:action="home" class="btn btn-success btn-sm"
+                            th:href="@{/}" th:text="'Home'"></a>
+                         <a th:action="forward" class="btn btn-secondary btn-sm"
+                            th:href="@{/appendixTexts/next}" th:text="'>'"></a>
+                         <a th:action="end" class="btn btn-secondary btn-sm" th:href="@{/appendixTexts/ff}"
+                            th:text="'>>'"></a>
+                        </span></td>
+            </tr>
+            </tfoot>
+        </table>
+    </div>
+</div>
+</body>
+</html>
+