parent
008f57ca16
commit
81a6e93ddb
|
|
@ -150,15 +150,12 @@ public class ContentSectionController {
|
||||||
ItemPrivileges.EDIT, section.getRootDocumentsFolder()
|
ItemPrivileges.EDIT, section.getRootDocumentsFolder()
|
||||||
)) {
|
)) {
|
||||||
contentSectionModel.setSection(section);
|
contentSectionModel.setSection(section);
|
||||||
LOGGER.info("Checked in permisisons in {} ms.", System
|
LOGGER.info(
|
||||||
.currentTimeMillis() - permissionCheckStart);
|
"Checked in permisisons in {} ms.",
|
||||||
|
System.currentTimeMillis() - permissionCheckStart
|
||||||
|
);
|
||||||
|
|
||||||
final long objectsStart = System.currentTimeMillis();
|
final long objectsStart = System.currentTimeMillis();
|
||||||
// final List<CcmObject> objects = folderRepo
|
|
||||||
// .findObjectsInFolder(
|
|
||||||
// section.getRootDocumentsFolder(), firstResult,
|
|
||||||
// maxResults
|
|
||||||
// );
|
|
||||||
final List<DocumentFolderEntry> folderEntries = folderRepo
|
final List<DocumentFolderEntry> folderEntries = folderRepo
|
||||||
.getDocumentFolderEntries(
|
.getDocumentFolderEntries(
|
||||||
section.getRootDocumentsFolder(),
|
section.getRootDocumentsFolder(),
|
||||||
|
|
@ -166,11 +163,11 @@ public class ContentSectionController {
|
||||||
maxResults,
|
maxResults,
|
||||||
""
|
""
|
||||||
);
|
);
|
||||||
LOGGER.info("Retrieved objects in {} ms", System
|
LOGGER.info(
|
||||||
.currentTimeMillis() - objectsStart);
|
"Retrieved objects in {} ms",
|
||||||
|
System.currentTimeMillis() - objectsStart
|
||||||
|
);
|
||||||
documentFolderModel.setCount(
|
documentFolderModel.setCount(
|
||||||
// folderRepo
|
|
||||||
// .countObjectsInFolder(section.getRootDocumentsFolder())
|
|
||||||
folderRepo.countDocumentFolderEntries(
|
folderRepo.countDocumentFolderEntries(
|
||||||
section.getRootDocumentsFolder(), ""
|
section.getRootDocumentsFolder(), ""
|
||||||
)
|
)
|
||||||
|
|
@ -183,12 +180,6 @@ public class ContentSectionController {
|
||||||
);
|
);
|
||||||
|
|
||||||
final long rowsStart = System.currentTimeMillis();
|
final long rowsStart = System.currentTimeMillis();
|
||||||
// documentFolderModel.setRows(
|
|
||||||
// objects
|
|
||||||
// .stream()
|
|
||||||
// .map(object -> buildRowModel(section, object))
|
|
||||||
// .collect(Collectors.toList())
|
|
||||||
// );
|
|
||||||
documentFolderModel.setRows(
|
documentFolderModel.setRows(
|
||||||
folderEntries
|
folderEntries
|
||||||
.stream()
|
.stream()
|
||||||
|
|
@ -320,7 +311,7 @@ public class ContentSectionController {
|
||||||
.folderIsDeletable(folder)
|
.folderIsDeletable(folder)
|
||||||
== FolderManager.FolderIsDeletable.YES
|
== FolderManager.FolderIsDeletable.YES
|
||||||
);
|
);
|
||||||
row.setIsFolder(true);
|
row.setFolder(true);
|
||||||
row.setLanguages(Collections.emptySortedSet());
|
row.setLanguages(Collections.emptySortedSet());
|
||||||
row.setLastEditPublished(false);
|
row.setLastEditPublished(false);
|
||||||
row.setLastEdited("");
|
row.setLastEdited("");
|
||||||
|
|
@ -348,7 +339,7 @@ public class ContentSectionController {
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
row.setDeletable(!itemManager.isLive(contentItem));
|
row.setDeletable(!itemManager.isLive(contentItem));
|
||||||
row.setIsFolder(false);
|
row.setFolder(false);
|
||||||
row.setLanguages(
|
row.setLanguages(
|
||||||
new TreeSet<>(
|
new TreeSet<>(
|
||||||
itemL10NManager
|
itemL10NManager
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,14 @@ public class DocumentFolderModel {
|
||||||
this.maxResults = maxResults;
|
this.maxResults = maxResults;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getNumberOfPages() {
|
||||||
|
return (long) Math.ceil((double) count / maxResults);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getCurrentPage() {
|
||||||
|
return (long) Math.ceil((double) firstResult / maxResults ) + 1;
|
||||||
|
}
|
||||||
|
|
||||||
public List<DocumentFolderRowModel> getRows() {
|
public List<DocumentFolderRowModel> getRows() {
|
||||||
return Collections.unmodifiableList(rows);
|
return Collections.unmodifiableList(rows);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ public class DocumentFolderRowModel {
|
||||||
|
|
||||||
private boolean deletable;
|
private boolean deletable;
|
||||||
|
|
||||||
private boolean isFolder;
|
private boolean folder;
|
||||||
|
|
||||||
private SortedSet<String> languages;
|
private SortedSet<String> languages;
|
||||||
|
|
||||||
|
|
@ -50,12 +50,12 @@ public class DocumentFolderRowModel {
|
||||||
this.deletable = deletable;
|
this.deletable = deletable;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isIsFolder() {
|
public boolean isFolder() {
|
||||||
return isFolder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void setIsFolder(final boolean isFolder) {
|
protected void setFolder(final boolean folder) {
|
||||||
this.isFolder = isFolder;
|
this.folder = folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SortedSet<String> getLanguages() {
|
public SortedSet<String> getLanguages() {
|
||||||
|
|
|
||||||
|
|
@ -18,50 +18,9 @@
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<h1>#{CmsAdminMessages.getMessage("contentsection.documentfolder.heading", [ContentSectionModel.sectionName])}</h1>
|
<h1>#{CmsAdminMessages.getMessage("contentsection.documentfolder.heading", [ContentSectionModel.sectionName])}</h1>
|
||||||
|
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<nav class="col-sm-3 documentfolder">
|
<nav class="col-sm-3 documentfolder">
|
||||||
<!-- <ul class="nav flex-column border">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">Folder 1</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<div class="d-flex">
|
|
||||||
<button class="btn btn-light pr-0 subfolders-toggler"
|
|
||||||
data-toggle="collapse"
|
|
||||||
data-target="#folder-2-subfolders"
|
|
||||||
aria-expanded="false"
|
|
||||||
aria-controls="folder-2-subfolders"
|
|
||||||
type="button">
|
|
||||||
<bootstrap:svgIcon icon="caret-right-fill" />
|
|
||||||
<span class="sr-only">
|
|
||||||
#{CmsAdminMessages['contentsection.documentfolder.foldersnav.subfolders.expand']}
|
|
||||||
</span>
|
|
||||||
</button>
|
|
||||||
<a class="nav-link pl-0" href="#">Folder 2</a>
|
|
||||||
</div>
|
|
||||||
<ul class="nav flex-column collapse"
|
|
||||||
id="folder-2-subfolders">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">Folder 2-1</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">Folder 2-2</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">Folder 2-3</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">Folder 3</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">Folder 4</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="#">Folder 5</a>
|
|
||||||
</li>
|
|
||||||
</ul>-->
|
|
||||||
<ul class="list-group">
|
<ul class="list-group">
|
||||||
<li class="list-group-item">
|
<li class="list-group-item">
|
||||||
<a class="" href="#">Folder 1</a>
|
<a class="" href="#">Folder 1</a>
|
||||||
|
|
@ -106,6 +65,11 @@
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="col-sm-9">
|
<div class="col-sm-9">
|
||||||
|
<div class="d-flex">
|
||||||
|
<p>
|
||||||
|
${CmsAdminMessages.getMessage("contentsection.documentfolder.pageof", [DocumentFolderModel.currentPage, DocumentFolderModel.numberOfPages, DocumentFolderModel.maxResults, DocumentFolderModel.count])}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
<table class="table table-hover documentfolder">
|
<table class="table table-hover documentfolder">
|
||||||
<thead class="thead-light">
|
<thead class="thead-light">
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -142,109 +106,89 @@
|
||||||
</td>
|
</td>
|
||||||
<td>#{row.title}</td>
|
<td>#{row.title}</td>
|
||||||
<td>#{row.type}</td>
|
<td>#{row.type}</td>
|
||||||
<td>#{row.created}</td>
|
<td><c:if test="#{!row.folder}">#{row.created}</c:if></td>
|
||||||
<td>
|
<td>
|
||||||
<span>#{row.lastEdited}</span>
|
<c:if test="#{!row.folder}">
|
||||||
<c:if test="#{row.lastEdited != null}">
|
<span>#{row.lastEdited}</span>
|
||||||
<c:choose>
|
<c:if test="#{row.lastEdited != null}">
|
||||||
<c:when test="#{row.lastEditPublished}">
|
<c:choose>
|
||||||
<span aria-describedby="#{row.name}-publication-state-desc">
|
<c:when test="#{row.lastEditPublished}">
|
||||||
<bootstrap:svgIcon icon="eye" />
|
<span aria-describedby="#{row.name}-publication-state-desc">
|
||||||
</span>
|
<bootstrap:svgIcon icon="eye" />
|
||||||
<span class="sr-only" id="#{row.name}-publication-state-desc">#{CmsAdminMessages['contentsection.documentfolder.cols.lastedit.published']}</span>
|
</span>
|
||||||
</c:when>
|
<span class="sr-only" id="#{row.name}-publication-state-desc">#{CmsAdminMessages['contentsection.documentfolder.cols.lastedit.published']}</span>
|
||||||
<c:otherwise>
|
</c:when>
|
||||||
<span aria-describedby="#{row.name}-publication-state-desc">
|
<c:otherwise>
|
||||||
<bootstrap:svgIcon icon="eye-slash" />
|
<span aria-describedby="#{row.name}-publication-state-desc">
|
||||||
</span>
|
<bootstrap:svgIcon icon="eye-slash" />
|
||||||
<span class="sr-only" id="#{row.name}-publication-state-desc">#{CmsAdminMessages['contentsection.documentfolder.cols.lastedit.unpublished']}</span>
|
</span>
|
||||||
</c:otherwise>
|
<span class="sr-only" id="#{row.name}-publication-state-desc">#{CmsAdminMessages['contentsection.documentfolder.cols.lastedit.unpublished']}</span>
|
||||||
</c:choose>
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
</c:if>
|
||||||
</c:if>
|
</c:if>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<c:if test="#{row.deletable}">
|
<c:if test="#{row.deletable}">
|
||||||
|
<button class="btn btn-danger">
|
||||||
|
<bootstrap:svgIcon icon="x-circle" />
|
||||||
|
<span>${CmsAdminMessages['contentsection.documentfolder.actions.delete.button.label']}</span>
|
||||||
|
</button>
|
||||||
</c:if>
|
</c:if>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
<!-- <tr>
|
|
||||||
<td><a href="#">folder-1</a></td>
|
|
||||||
<td></td>
|
|
||||||
<td>Folder 1</td>
|
|
||||||
<td>Ordner</td>
|
|
||||||
<td>2021-01-20 08:59</td>
|
|
||||||
<td>2021-01-20 08:59</td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><a href="#">an-item</a></td>
|
|
||||||
<td>de, en</td>
|
|
||||||
<td>An item</td>
|
|
||||||
<td>Article</td>
|
|
||||||
<td>2021-01-20 09:03</td>
|
|
||||||
<td>
|
|
||||||
<span>2021-01-20 10:11</span>
|
|
||||||
<span aria-describedby="an-item-publication-state-desc">
|
|
||||||
<bootstrap:svgIcon icon="eye" />
|
|
||||||
</span>
|
|
||||||
<span class="sr-only" id="an-item-publication-state-desc">#{CmsAdminMessages['contentsection.documentfolder.cols.lastedit.published']}</span>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<button class="btn btn-danger"
|
|
||||||
type="button">
|
|
||||||
<bootstrap:svgIcon icon="x-circle" />
|
|
||||||
<span>#{CmsAdminMessages['contentsection.documentfolder.actions.delete.button.label']}</span>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><a href="#">unpublished-item</a></td>
|
|
||||||
<td>de, en</td>
|
|
||||||
<td>Unppublished item item</td>
|
|
||||||
<td>Article</td>
|
|
||||||
<td>2021-01-20 10:31</td>
|
|
||||||
<td>
|
|
||||||
<span>2021-01-20 10:34</span>
|
|
||||||
<span aria-describedby="unpublished-item-publication-state-desc">
|
|
||||||
<bootstrap:svgIcon icon="eye-slash" />
|
|
||||||
</span>
|
|
||||||
<span class="sr-only" id="unpublished-item-publication-state-desc">#{CmsAdminMessages['contentsection.documentfolder.cols.lastedit.unpublished']}</span>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<button class="btn btn-danger"
|
|
||||||
type="button">
|
|
||||||
<bootstrap:svgIcon icon="x-circle" />
|
|
||||||
<span>#{CmsAdminMessages['contentsection.documentfolder.actions.delete.button.label']}</span>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>-->
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<nav aria-label="#{CmsAdminMessages['contentsection.documentfolder.pagination.label']}">
|
<nav aria-label="#{CmsAdminMessages['contentsection.documentfolder.pagination.label']}">
|
||||||
<ul class="justify-content-center pagination">
|
<ul class="justify-content-center pagination">
|
||||||
<li class="page-item disabled" tabindex="-1" aria-disabled="true">
|
<c:choose>
|
||||||
<a class="page-link" href="#">
|
<c:when test="${DocumentFolderModel.currentPage gt 1}">
|
||||||
<bootstrap:svgIcon icon="caret-left" />
|
<li class="page-item">
|
||||||
<span class="sr-only">#{CmsAdminMessages['contentsection.documentfolder.pagination.previous_page']}</span>
|
<a class="page-link"
|
||||||
</a>
|
href="?firstResult=#{(DocumentFolderModel.currentPage - 1) * DocumentFolderModel.maxResults}&maxResults=${DocumentFolderModel.maxResults}">
|
||||||
</li>
|
<bootstrap:svgIcon icon="caret-left" />
|
||||||
<li>
|
<span class="sr-only">#{CmsAdminMessages['contentsection.documentfolder.pagination.previous_page']}</span>
|
||||||
<a class="page-link" href="#">1</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
</c:when>
|
||||||
<a class="page-link" href="#">2</a>
|
<c:otherwise>
|
||||||
</li>
|
<li class="page-item disabled" tabindex="-1" aria-disabled="true">
|
||||||
<li>
|
<a class="page-link"
|
||||||
<a class="page-link" href="#">3</a>
|
href="#">
|
||||||
</li>
|
<bootstrap:svgIcon icon="caret-left" />
|
||||||
<li>
|
<span class="sr-only">#{CmsAdminMessages['contentsection.documentfolder.pagination.previous_page']}</span>
|
||||||
<a class="page-link" href="#">
|
</a>
|
||||||
<bootstrap:svgIcon icon="caret-right" />
|
</li>
|
||||||
<span class="sr-only">#{CmsAdminMessages['contentsection.documentfolder.pagination.next_page']}</span>
|
</c:otherwise>
|
||||||
</a>
|
</c:choose>
|
||||||
</li>
|
<c:forEach begin="1"
|
||||||
|
end="${DocumentFolderModel.numberOfPages}"
|
||||||
|
var="page">
|
||||||
|
<li class="page-item ${page == DocumentFolderModel.currentPage ? 'active' : ''}">
|
||||||
|
<a class="page-link"
|
||||||
|
href="?firstResult=#{(page - 1) * DocumentFolderModel.maxResults}&maxResults=${DocumentFolderModel.maxResults}">${page}</a>
|
||||||
|
</li>
|
||||||
|
</c:forEach>
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="#{DocumentFolderModel.currentPage lt (DocumentFolderModel.numberOfPages)}">
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link"
|
||||||
|
href="?firstResult=${(DocumentFolderModel.currentPage + 1) * DocumentFolderModel.maxResults}&maxResults=${DocumentFolderModel.maxResults}">
|
||||||
|
<bootstrap:svgIcon icon="caret-right" />
|
||||||
|
<span class="sr-only">#{CmsAdminMessages['contentsection.documentfolder.pagination.next_page']}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
<li class="page-item disabled" tabindex="-1" aria-disabled="true">
|
||||||
|
<a class="page-link" href="#">
|
||||||
|
<bootstrap:svgIcon icon="caret-right" />
|
||||||
|
<span class="sr-only">#{CmsAdminMessages['contentsection.documentfolder.pagination.next_page']}</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -44,3 +44,4 @@ contentsection.documentfolder.pagination.next_page=Next page
|
||||||
contentsection.not_found=No content section identifed by {0} available.
|
contentsection.not_found=No content section identifed by {0} available.
|
||||||
contentsection.accessdenied=Your are not permitted to access content section {0}.
|
contentsection.accessdenied=Your are not permitted to access content section {0}.
|
||||||
contentsection.documentfolder.types.folder=Folder
|
contentsection.documentfolder.types.folder=Folder
|
||||||
|
contentsection.documentfolder.pageof=Page {0} of {1}. Showing max. {2} of {3} documents per page.
|
||||||
|
|
|
||||||
|
|
@ -44,3 +44,4 @@ contentsection.documentfolder.pagination.next_page=Eine Seite weiter
|
||||||
contentsection.not_found=Keine Content Section mit dem Identifier {0} gefunden.
|
contentsection.not_found=Keine Content Section mit dem Identifier {0} gefunden.
|
||||||
contentsection.accessdenied=Sind sind nicht berechtigt auf die Content Section {0} zuzugreifen.
|
contentsection.accessdenied=Sind sind nicht berechtigt auf die Content Section {0} zuzugreifen.
|
||||||
contentsection.documentfolder.types.folder=Ordner
|
contentsection.documentfolder.types.folder=Ordner
|
||||||
|
contentsection.documentfolder.pageof=Seite {0} von {1}. Zeige max. {2} von {3} Dokumenten pro Seite.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue