parent
c2ef4f67a0
commit
e88f99155d
|
|
@ -42,12 +42,10 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||||
|
|
||||||
import org.libreccm.imexport.Exportable;
|
import org.libreccm.imexport.Exportable;
|
||||||
|
|
||||||
import java.text.DateFormat;
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
|
@ -66,8 +64,6 @@ import javax.persistence.NamedQuery;
|
||||||
import javax.persistence.NamedSubgraph;
|
import javax.persistence.NamedSubgraph;
|
||||||
import javax.persistence.OneToMany;
|
import javax.persistence.OneToMany;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
import javax.persistence.Temporal;
|
|
||||||
import javax.persistence.TemporalType;
|
|
||||||
import javax.validation.constraints.NotBlank;
|
import javax.validation.constraints.NotBlank;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -191,7 +187,6 @@ public class Domain extends CcmObject implements Serializable, Exportable {
|
||||||
* A version string for the {@code Domain}.
|
* A version string for the {@code Domain}.
|
||||||
*/
|
*/
|
||||||
@Column(name = "VERSION", nullable = true)
|
@Column(name = "VERSION", nullable = true)
|
||||||
@NotBlank
|
|
||||||
@XmlElement(name = "version", namespace = CAT_XML_NS)
|
@XmlElement(name = "version", namespace = CAT_XML_NS)
|
||||||
private String version;
|
private String version;
|
||||||
|
|
||||||
|
|
@ -199,7 +194,6 @@ public class Domain extends CcmObject implements Serializable, Exportable {
|
||||||
* A timestamp for the release date of the {@code Domain}.
|
* A timestamp for the release date of the {@code Domain}.
|
||||||
*/
|
*/
|
||||||
@Column(name = "RELEASED")
|
@Column(name = "RELEASED")
|
||||||
// @Temporal(TemporalType.TIMESTAMP)
|
|
||||||
@XmlElement(name = "released", namespace = CAT_XML_NS)
|
@XmlElement(name = "released", namespace = CAT_XML_NS)
|
||||||
private LocalDate released;
|
private LocalDate released;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -181,7 +181,7 @@ public class CategorySystemDetailsModel {
|
||||||
if (domain.getReleased() == null) {
|
if (domain.getReleased() == null) {
|
||||||
released = "";
|
released = "";
|
||||||
} else {
|
} else {
|
||||||
released = DateTimeFormatter.ISO_DATE_TIME
|
released = DateTimeFormatter.ISO_DATE
|
||||||
.withZone(ZoneOffset.systemDefault())
|
.withZone(ZoneOffset.systemDefault())
|
||||||
.format(domain.getReleased());
|
.format(domain.getReleased());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -98,7 +98,7 @@ public class CategorySystemFormController {
|
||||||
categorySystemDetailsModel.addMessage(
|
categorySystemDetailsModel.addMessage(
|
||||||
new Message(
|
new Message(
|
||||||
adminMessages.get("categorysystems.form.errors.uri_invalid"),
|
adminMessages.get("categorysystems.form.errors.uri_invalid"),
|
||||||
MessageType.PRIMARY)
|
MessageType.DANGER)
|
||||||
);
|
);
|
||||||
categorySystemDetailsModel.addInvalidField("uri");
|
categorySystemDetailsModel.addInvalidField("uri");
|
||||||
return "org/libreccm/ui/admin/categories/categorysystem-form.xhtml";
|
return "org/libreccm/ui/admin/categories/categorysystem-form.xhtml";
|
||||||
|
|
@ -157,7 +157,7 @@ public class CategorySystemFormController {
|
||||||
new Message(
|
new Message(
|
||||||
adminMessages.get(
|
adminMessages.get(
|
||||||
"categorysystems.form.errors.uri_invalid"),
|
"categorysystems.form.errors.uri_invalid"),
|
||||||
MessageType.PRIMARY)
|
MessageType.DANGER)
|
||||||
);
|
);
|
||||||
categorySystemDetailsModel.addInvalidField("uri");
|
categorySystemDetailsModel.addInvalidField("uri");
|
||||||
return "org/libreccm/ui/admin/categories/categorysystem-form.xhtml";
|
return "org/libreccm/ui/admin/categories/categorysystem-form.xhtml";
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import org.libreccm.core.CoreConstants;
|
||||||
import org.libreccm.security.AuthorizationRequired;
|
import org.libreccm.security.AuthorizationRequired;
|
||||||
import org.libreccm.security.RequiresPrivilege;
|
import org.libreccm.security.RequiresPrivilege;
|
||||||
|
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
@ -65,9 +66,9 @@ public class CategorySystemsTableModel {
|
||||||
row.setVersion(domain.getVersion());
|
row.setVersion(domain.getVersion());
|
||||||
if (domain.getReleased() != null) {
|
if (domain.getReleased() != null) {
|
||||||
row.setReleased(
|
row.setReleased(
|
||||||
DateTimeFormatter.ISO_DATE_TIME.format(
|
DateTimeFormatter.ISO_DATE
|
||||||
domain.getReleased()
|
.withZone(ZoneId.systemDefault())
|
||||||
)
|
.format(domain.getReleased())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
row.setTitle(
|
row.setTitle(
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
#{AdminMessages['categorysystems.form.domainKey.label']}
|
#{AdminMessages['categorysystems.form.domainKey.label']}
|
||||||
</label>
|
</label>
|
||||||
<input aria-describedby="domainKey-help"
|
<input aria-describedby="domainKey-help"
|
||||||
class="form-control"
|
class="form-control #{CategorySystemDetailsModel.invalidFields.contains('domainKey') ? 'is-invalid' : ''}"
|
||||||
name="domainKey"
|
name="domainKey"
|
||||||
required="true"
|
required="true"
|
||||||
type="text"
|
type="text"
|
||||||
|
|
@ -64,7 +64,7 @@
|
||||||
#{AdminMessages['categorysystems.form.uri.label']}
|
#{AdminMessages['categorysystems.form.uri.label']}
|
||||||
</label>
|
</label>
|
||||||
<input aria-describedby="uri-help"
|
<input aria-describedby="uri-help"
|
||||||
class="form-control"
|
class="form-control #{CategorySystemDetailsModel.invalidFields.contains('uri') ? 'is-invalid' : ''}"
|
||||||
name="uri"
|
name="uri"
|
||||||
type="text"
|
type="text"
|
||||||
value="#{CategorySystemDetailsModel.uri}"
|
value="#{CategorySystemDetailsModel.uri}"
|
||||||
|
|
@ -79,7 +79,7 @@
|
||||||
#{AdminMessages['categorysystems.form.version.label']}
|
#{AdminMessages['categorysystems.form.version.label']}
|
||||||
</label>
|
</label>
|
||||||
<input aria-describedby="version-help"
|
<input aria-describedby="version-help"
|
||||||
class="form-control"
|
class="form-control #{CategorySystemDetailsModel.invalidFields.contains('version') ? 'is-invalid' : ''}"
|
||||||
name="version"
|
name="version"
|
||||||
type="text"
|
type="text"
|
||||||
value="#{CategorySystemDetailsModel.version}"
|
value="#{CategorySystemDetailsModel.version}"
|
||||||
|
|
@ -94,7 +94,7 @@
|
||||||
#{AdminMessages['categorysystems.form.released.label']}
|
#{AdminMessages['categorysystems.form.released.label']}
|
||||||
</label>
|
</label>
|
||||||
<input aria-describedby="released-help"
|
<input aria-describedby="released-help"
|
||||||
class="form-control"
|
class="form-control #{CategorySystemDetailsModel.invalidFields.contains('released') ? 'is-invalid' : ''}"
|
||||||
name="released"
|
name="released"
|
||||||
type="date"
|
type="date"
|
||||||
value="#{CategorySystemDetailsModel.released}"
|
value="#{CategorySystemDetailsModel.released}"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html [<!ENTITY times '×'>]>
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml"
|
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||||
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
||||||
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||||
|
|
@ -32,7 +32,7 @@
|
||||||
width="1em"
|
width="1em"
|
||||||
height="1em"
|
height="1em"
|
||||||
fill="currentColor">
|
fill="currentColor">
|
||||||
<use xlink:href="#{request.contextPath}/assets/bootstrap/bootstrap-icons.svg#circle-plus" />
|
<use xlink:href="#{request.contextPath}/assets/bootstrap/bootstrap-icons.svg#plus-circle" />
|
||||||
</svg>
|
</svg>
|
||||||
<span>#{AdminMessages['categorysystems.add']}</span>
|
<span>#{AdminMessages['categorysystems.add']}</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
@ -44,20 +44,83 @@
|
||||||
<th>#{AdminMessages['categorysystems.table.headers.uri']}</th>
|
<th>#{AdminMessages['categorysystems.table.headers.uri']}</th>
|
||||||
<th>#{AdminMessages['categorysystems.table.headers.version']}</th>
|
<th>#{AdminMessages['categorysystems.table.headers.version']}</th>
|
||||||
<th>#{AdminMessages['categorysystems.table.headers.released']}</th>
|
<th>#{AdminMessages['categorysystems.table.headers.released']}</th>
|
||||||
|
<th class="text-center" colspan="2">
|
||||||
|
#{AdminMessages['categorysystems.table.headers.actions']}
|
||||||
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<c:forEach items="#{CategorySystemsTableModel.categorySystems}"
|
<c:forEach items="#{CategorySystemsTableModel.categorySystems}"
|
||||||
var="categorySystem">
|
var="categorySystem">
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>#{categorySystem.domainKey}</td>
|
||||||
<a href="#{mvc.uri('CategorySystemsController#getCategorySystemDetails', { 'categorySystemIdentifier': categorySystem.identifier })}">
|
|
||||||
#{categorySystem.domainKey}
|
|
||||||
</a>
|
|
||||||
</td>
|
|
||||||
<td>#{categorySystem.uri}</td>
|
<td>#{categorySystem.uri}</td>
|
||||||
<td>#{categorySystem.version}</td>
|
<td>#{categorySystem.version}</td>
|
||||||
<td>#{categorySystem.released}</td>
|
<td>#{categorySystem.released}</td>
|
||||||
|
<td>
|
||||||
|
<a class="btn btn-info"
|
||||||
|
href="#{mvc.uri('CategorySystemsController#getCategorySystemDetails', { 'categorySystemIdentifier': categorySystem.identifier })}">
|
||||||
|
<svg class="bi"
|
||||||
|
width="1em"
|
||||||
|
height="1em"
|
||||||
|
fill="currentColor">
|
||||||
|
<use xlink:href="#{request.contextPath}/assets/bootstrap/bootstrap-icons.svg#pen" />
|
||||||
|
</svg>
|
||||||
|
#{AdminMessages['categorysystems.table.actions.edit']}
|
||||||
|
</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<button class="btn btn-danger"
|
||||||
|
data-target="#confirm-delete-#{categorySystem.identifier}"
|
||||||
|
data-toggle="modal"
|
||||||
|
type="button">
|
||||||
|
<svg class="bi"
|
||||||
|
width="1em"
|
||||||
|
height="1em"
|
||||||
|
fill="currentColor">
|
||||||
|
<use xlink:href="#{request.contextPath}/assets/bootstrap/bootstrap-icons.svg#x-circle" />
|
||||||
|
</svg>
|
||||||
|
#{AdminMessages['categorysystems.table.actions.delete']}
|
||||||
|
</button>
|
||||||
|
<div class="modal"
|
||||||
|
id="confirm-delete-#{categorySystem.identifier}"
|
||||||
|
tabindex="-1">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<form action="#{mvc.uri('CategorySystemsController#deleteCategorySystem', {'categorySystemIdentifier': categorySystem.identifier })}"
|
||||||
|
class="modal-content"
|
||||||
|
method="post">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h3 class="modal-title">
|
||||||
|
#{AdminMessages['categorysystems.delete.confirm.title']}
|
||||||
|
</h3>
|
||||||
|
<button aria-label="#{AdminMessages['usersgroupsroles.groups.delete.confirm.cancel']}"
|
||||||
|
class="close"
|
||||||
|
data-dismiss="modal"
|
||||||
|
type="button">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
#{AdminMessages.getMessage('categorysystems.delete.confirm.message', [categorySystem.identifier])}
|
||||||
|
<input name="confirmed"
|
||||||
|
type="hidden"
|
||||||
|
value="true" />
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button class="btn btn-secondary"
|
||||||
|
data-dismiss="modal"
|
||||||
|
type="button">
|
||||||
|
#{AdminMessages['categorysystems.delete.confirm.cancel']}
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-danger"
|
||||||
|
type="submit">
|
||||||
|
#{AdminMessages['categorysystems.delete.confirm.yes']}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
||||||
|
|
@ -67,8 +67,7 @@
|
||||||
<td class="text-center action-col">
|
<td class="text-center action-col">
|
||||||
<button class="btn btn-danger"
|
<button class="btn btn-danger"
|
||||||
data-toggle="modal"
|
data-toggle="modal"
|
||||||
data-target="#confirm-delete-#{group.name}"
|
data-target="#confirm-delete-#{group.name}">
|
||||||
href="#">
|
|
||||||
<svg class="bi"
|
<svg class="bi"
|
||||||
width="1em"
|
width="1em"
|
||||||
height="1em"
|
height="1em"
|
||||||
|
|
|
||||||
|
|
@ -294,3 +294,10 @@ categorysystems.form.released.label=Released
|
||||||
categorysystems.details.version=Version
|
categorysystems.details.version=Version
|
||||||
categorysystems.details.released=Released
|
categorysystems.details.released=Released
|
||||||
categorysystems.form.errors.uri_invalid=URI is invalid
|
categorysystems.form.errors.uri_invalid=URI is invalid
|
||||||
|
categorysystems.table.headers.actions=Actions
|
||||||
|
categorysystems.table.actions.delete=Delete
|
||||||
|
categorysystems.table.actions.edit=Edit
|
||||||
|
categorysystems.delete.confirm.title=Confirm Delete
|
||||||
|
categorysystems.delete.confirm.message=Are you sure to delete the category system {0} and all its categories?
|
||||||
|
categorysystems.delete.confirm.cancel=Cancel
|
||||||
|
categorysystems.delete.confirm.yes=Delete Category System
|
||||||
|
|
|
||||||
|
|
@ -294,3 +294,10 @@ categorysystems.form.released.label=Released
|
||||||
categorysystems.details.version=Version
|
categorysystems.details.version=Version
|
||||||
categorysystems.details.released=Freigegeben
|
categorysystems.details.released=Freigegeben
|
||||||
categorysystems.form.errors.uri_invalid=URI ist nicht valide
|
categorysystems.form.errors.uri_invalid=URI ist nicht valide
|
||||||
|
categorysystems.table.headers.actions=Aktionen
|
||||||
|
categorysystems.table.actions.delete=L\u00f6schen
|
||||||
|
categorysystems.table.actions.edit=Bearbeiten
|
||||||
|
categorysystems.delete.confirm.title=L\u00f6schen best\u00e4tigen
|
||||||
|
categorysystems.delete.confirm.message=Sind Sie sicher, dass Sie das Kategoriensystem {0} mit allen seinen Kategorien l\u00f6schen wollen?
|
||||||
|
categorysystems.delete.confirm.cancel=Abbrechen
|
||||||
|
categorysystems.delete.confirm.yes=Kategoriensystem l\u00f6schen
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue