AssetFolder view
Former-commit-id: 4489b16195dc7155096c89c61916dc52b9b7a039pull/10/head
parent
00e1da3141
commit
7bd424537e
|
|
@ -30,9 +30,6 @@ public class AssetFolderEntry {
|
|||
final long entryId,
|
||||
final String entryUuid,
|
||||
final String displayName,
|
||||
final Date creationDate,
|
||||
final Date lastModified,
|
||||
final String version,
|
||||
final boolean folder
|
||||
) {
|
||||
this.entryId = entryId;
|
||||
|
|
|
|||
|
|
@ -176,7 +176,7 @@ import static org.librecms.CmsConstants.*;
|
|||
+ " ON categories.object_id = folders.object_id "
|
||||
+ "WHERE categories.parent_category_id = :folderId "
|
||||
+ "AND folders.\"type\" = 'ASSETS_FOLDER'",
|
||||
resultSetMapping = "Folder.DocumentFolderEntry"
|
||||
resultSetMapping = "Folder.AssetFolderEntry"
|
||||
),
|
||||
@NamedNativeQuery(
|
||||
name = "Folder.countDocumentFolderEntries",
|
||||
|
|
@ -262,7 +262,7 @@ import static org.librecms.CmsConstants.*;
|
|||
}
|
||||
),
|
||||
@SqlResultSetMapping(
|
||||
name = "Folder.getAssetFolderEntries",
|
||||
name = "Folder.AssetFolderEntry",
|
||||
classes = {
|
||||
@ConstructorResult(
|
||||
columns = {
|
||||
|
|
|
|||
|
|
@ -66,6 +66,14 @@ public class AssetFolderModel {
|
|||
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<AssetFolderRowModel> getRows() {
|
||||
return Collections.unmodifiableList(rows);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,51 @@
|
|||
<!DOCTYPE html [<!ENTITY times '×'>]>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:bootstrap="http://xmlns.jcp.org/jsf/composite/components/bootstrap"
|
||||
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
||||
xmlns:cms="http://xmlns.jcp.org/jsf/composite/components/cms"
|
||||
xmlns:libreccm="http://xmlns.jcp.org/jsf/composite/components/libreccm"
|
||||
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
|
||||
<ui:composition>
|
||||
<c:choose>
|
||||
<c:when test="#{not empty folder.subFolders}">
|
||||
<li class="folder-tree-node list-group-item">
|
||||
<div class="d-flex">
|
||||
<button class="btn btn-light p-0 subfolders-toggler"
|
||||
data-toggle="collapse"
|
||||
data-target="##{folder.name}-subfolders"
|
||||
aria-expanded="false"
|
||||
aria-controls="##{folder.name}-subfolders"
|
||||
type="button">
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.foldersnav.subfolders.expand']}
|
||||
</span>
|
||||
</button>
|
||||
<c:choose>
|
||||
<c:when test="#{folder.permissions.grantedEdit}">
|
||||
<a class="pl-0"
|
||||
href="#{basePath}#{folder.path}">#{folder.name}</a>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span>#{folder.name}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
<ul class="border-0 #{!folder.open ? 'collapse' : 'collapse.show'} list-group"
|
||||
id="#{folder.name}-subfolders">
|
||||
<c:forEach items="#{folder.subFolders}"
|
||||
var="subFolder">
|
||||
<ui:include src="asset-folder-tree-node.xhtml">
|
||||
<ui:param name="basePath" value="#{basePath}" />
|
||||
<ui:param name="folder" value="#{subFolder}" />
|
||||
</ui:include>
|
||||
</c:forEach>
|
||||
</ul>
|
||||
</li>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li class="folder-tree-node list-group-item">
|
||||
<a href="#{basePath}#{folder.path}">#{folder.name}</a>
|
||||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</ui:composition>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,526 @@
|
|||
<!DOCTYPE html [<!ENTITY times '×'>]>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"
|
||||
xmlns:bootstrap="http://xmlns.jcp.org/jsf/composite/components/bootstrap"
|
||||
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
|
||||
xmlns:cms="http://xmlns.jcp.org/jsf/composite/components/cms"
|
||||
xmlns:libreccm="http://xmlns.jcp.org/jsf/composite/components/libreccm"
|
||||
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
|
||||
<ui:composition template="/WEB-INF/views/org/librecms/ui/contentsection/contentsection.xhtml">
|
||||
|
||||
<ui:param name="activePage" value="assetFolders" />
|
||||
<ui:param name="title" value="#{CmsAdminMessages['contentsection.assetfolders.title']}" />
|
||||
<ui:define name="breadcrumb">
|
||||
<c:choose>
|
||||
<c:when test="#{AssetFolderModel.breadcrumbs.isEmpty()}">
|
||||
<li aria-current="page" class="breadcrumb-item">
|
||||
#{CmsAdminMessages['contentsection.assetfolders.title']}
|
||||
</li>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li class="breadcrumb-item">
|
||||
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/assetfolders">
|
||||
#{CmsAdminMessages['contentsection.assetfolders.title']}
|
||||
</a>
|
||||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:forEach items="#{AssetFolderModel.breadcrumbs}"
|
||||
var="breadcrumb">
|
||||
<c:choose>
|
||||
<c:when test="#{breadcrumb.currentFolder}">
|
||||
<li class="breadcrumb-item #{breadcrumb.currentFolder ? 'active' : ''}">
|
||||
#{breadcrumb.pathToken}
|
||||
</li>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li class="breadcrumb-item">
|
||||
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/assetfolders/#{breadcrumb.path}">#{breadcrumb.pathToken}</a>
|
||||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
</c:forEach>
|
||||
</ui:define>
|
||||
|
||||
<ui:define name="main">
|
||||
<div class="container-fluid">
|
||||
<h1>#{CmsAdminMessages.getMessage("contentsection.assetfolder.heading", [ContentSectionModel.sectionName])}</h1>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<form action="#"
|
||||
class="mb-3"
|
||||
method="get">
|
||||
|
||||
<label class="sr-only"
|
||||
for="assetfolders-searchbox">
|
||||
#{CmsAdminMessages['contentsection.assetfolders.searchbox.label']}
|
||||
</label>
|
||||
<div class="input-group">
|
||||
<input class="form-control"
|
||||
id="assetfolders-searchbox"
|
||||
name="term"
|
||||
type="text" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-primary"
|
||||
type="submit">
|
||||
<bootstrap:svgIcon icon="search" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolders.searchbox.submit']}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
<nav class="assetfolder foldertree">
|
||||
<h2>
|
||||
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/assetfolders">
|
||||
#{CmsAdminMessages["contentsection.assetfolders.root.title"]}
|
||||
</a>
|
||||
</h2>
|
||||
<ul class="list-group">
|
||||
<c:forEach items="#{ContentSectionModel.assetFolders}"
|
||||
var="folder">
|
||||
<ui:include src="asset-folder-tree-node.xhtml">
|
||||
<ui:param name="basePath"
|
||||
value="#{mvc.basePath}/#{ContentSectionModel.sectionName}/assetfolders" />
|
||||
<ui:param name="folder" value="#{folder}" />
|
||||
</ui:include>
|
||||
</c:forEach>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="col-sm-9">
|
||||
<div class="d-flex justify-content-between mb-2">
|
||||
<form action="#" class="form-inline mr-2" method="GET">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<label class="mr-2"
|
||||
for="asset-folder-filter">
|
||||
<span>#{CmsAdminMessages['contentsection.assetfolder.filter.label']}</span>
|
||||
</label>
|
||||
</div>
|
||||
<input id="assetfolder-filter"
|
||||
name="filterTerm"
|
||||
type="text" />
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-secondary"
|
||||
type="submit">
|
||||
<bootstrap:svgIcon icon="filter" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.filter.submit']}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<p>
|
||||
${CmsAdminMessages.getMessage("contentsection.assetfolder.pageof", [AssetFolderModel.currentPage, AssetFolderModel.numberOfPages])}
|
||||
</p>
|
||||
<div>
|
||||
<c:choose>
|
||||
<c:when test="#{AssetFolderModel.canCreateSubFolders}">
|
||||
<button class="btn btn-primary"
|
||||
data-toggle="modal"
|
||||
data-target="#new-subfolder-dialog"
|
||||
title="#{CmsAdminMessages['contentsection.assetfolder.add_subfolder']}">
|
||||
<bootstrap:svgIcon icon="folder-plus" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.add_subfolder']}</span>
|
||||
</button>
|
||||
<div aria-hidden="true"
|
||||
aria-labelledby="new-subfolder-dialog-title"
|
||||
class="modal fade"
|
||||
id="new-subfolder-dialog"
|
||||
tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/assetfolders/#{AssetFolderModel.path}"
|
||||
class="modal-content"
|
||||
method="post">
|
||||
<div class="modal-header">
|
||||
<h2 class="modal-title"
|
||||
id="new-subfolder-dialog-title">
|
||||
#{CmsAdminMessages['contentsection.assetfolder.new_subfolder_dialog.title']}
|
||||
</h2>
|
||||
<button aria-label="#{CmsAdminMessages['contentsection.assetfolder.new_subfolder_dialog.close']}"
|
||||
class="close"
|
||||
data-dismiss="modal"
|
||||
type="button">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<label for="new-subfolder-name">
|
||||
#{CmsAdminMessages['contentsection.assetfolder.new_subfolder.name.label']}
|
||||
</label>
|
||||
<input aria-describedby="new-subfolder-name-help"
|
||||
class="form-control"
|
||||
id="new-subfolder-name"
|
||||
name="folderName"
|
||||
pattern="^([a-zA-Z0-9-_]*)$"
|
||||
type="text"
|
||||
value="" />
|
||||
<small class="form-text text-muted"
|
||||
id="new-subfolder-name-help">
|
||||
#{CmsAdminMessages['contentsection.assetfolder.new_subfolder.name.help']}
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-danger"
|
||||
data-dismiss="modal"
|
||||
type="button">
|
||||
#{CmsAdminMessages['contentsection.assetfolder.new_subfolder_dialog.close']}
|
||||
</button>
|
||||
<button class="btn btn-success"
|
||||
type="submit">
|
||||
#{CmsAdminMessages['contentsection.assetfolder.new_subfolder_dialog.submit']}
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<button class="btn btn-primary"
|
||||
disabled="disabled"
|
||||
title="#{CmsAdminMessages['contentsection.assetfolder.add_subfolder']}">
|
||||
<bootstrap:svgIcon icon="folder-plus" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.add_subfolder']}</span>
|
||||
</button>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:choose>
|
||||
<c:when test="#{AssetFolderModel.canCreateAssets}">
|
||||
<button class="btn btn-primary" title="#{CmsAdminMessages['contentsection.assetfolder.add_asset']}">
|
||||
<bootstrap:svgIcon icon="file-earmark-plus" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.add_asset']}</span>
|
||||
</button>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<button class="btn btn-primary"
|
||||
disabled="disabled"
|
||||
title="#{CmsAdminMessages['contentsection.assetfolder.add_asset']}">
|
||||
<bootstrap:svgIcon icon="file-earmark-plus" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.add_asset']}</span>
|
||||
</button>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table table-hover assetfolder">
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th>
|
||||
#{CmsAdminMessages['contentsection.assetfolder.headers.name.label']}
|
||||
</th>
|
||||
<th>
|
||||
#{CmsAdminMessages['contentsection.assetfolder.headers.title.label']}
|
||||
</th>
|
||||
<th>
|
||||
#{CmsAdminMessages['contentsection.assetfolder.headers.type.label']}
|
||||
</th>
|
||||
<th class="text-center" colspan="2">
|
||||
#{CmsAdminMessages['contentsection.assetfolder.headers.actions.label']}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach items="#{AssetFolderModel.rows}"
|
||||
var="row">
|
||||
<tr>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="#{row.folder and (row.permissions.grantedEdit or row.permissions.grantedPreview)}">
|
||||
<a href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/assetfolders/#{row.folderPath}">#{row.name}</a>
|
||||
</c:when>
|
||||
<c:when test="#{row.permissions.grantedApprove or row.permissions.grantedCategorize or row.permissions.grantedEdit or row.permissions.grantedPreview or row.permissions.grantedPublish}">
|
||||
<a href="#">#{row.name}</a>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<span>#{row.name}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
<td>#{row.title}</td>
|
||||
<td>#{row.type}</td>
|
||||
<td>
|
||||
<c:if test="#{row.folder and row.permissions.grantedEdit}">
|
||||
<button class="btn btn-info"
|
||||
data-target="#rename-folder-#{row.name}-dialog"
|
||||
data-toggle="modal"
|
||||
title="#{CmsAdminMessages['contentsection.assetfolder.actions.rename_folder.button.label']}">
|
||||
<bootstrap:svgIcon icon="pen" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.actions.rename_folder.button.label']}</span>
|
||||
</button>
|
||||
<div aria-hidden="true"
|
||||
aria-labelledby="rename-folder-#{row.name}-dialog-title"
|
||||
class="modal fade"
|
||||
id="rename-folder-#{row.name}-dialog"
|
||||
tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/assetfolders/@rename/#{row.folderPath}"
|
||||
class="modal-content"
|
||||
method="post">
|
||||
<div class="modal-header">
|
||||
<h2 class="modal-title"
|
||||
id="rename-folder-#{row.name}-dialog-title">
|
||||
#{CmsAdminMessages.getMessage('contentsection.assetfolder.rename_folder_dialog.title', [row.folderPath])}
|
||||
</h2>
|
||||
<button aria-label="#{CmsMessages['contentsection.assetfolder.rename_folder_dialog.close']}"
|
||||
class="close"
|
||||
data-dismiss="modal"
|
||||
type="button" >
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<label for="rename-folder-name">
|
||||
#{CmsAdminMessages['contentsection.assetfolder.rename_folder.name.label']}
|
||||
</label>
|
||||
<input aria-describedby="rename-folder-name-help"
|
||||
class="form-control"
|
||||
id="rename-folder-name"
|
||||
name="folderName"
|
||||
pattern="^([a-zA-Z0-9-_]*)$"
|
||||
type="text"
|
||||
value="#{row.name}" />
|
||||
<small class="form-text text-muted"
|
||||
id="rename-folder-name-help">
|
||||
#{CmsAdminMessages['contentsection.assestfolder.rename_folder.name.help']}
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-secondary"
|
||||
data-dismiss="modal"
|
||||
type="button" >#{CmsAdminMessages['contentsection.assetfolder.rename_folder_dialog.close']}</button>
|
||||
<button class="btn btn-primary"
|
||||
type="submit">#{CmsAdminMessages['contentsection.assetfolder.rename_folder_dialog.save']}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
</td>
|
||||
<td>
|
||||
<c:if test="#{row.deletable}">
|
||||
<button class="btn btn-danger"
|
||||
title="#{CmsAdminMessages['contentsection.assetfolder.actions.delete.button.label']}">
|
||||
<bootstrap:svgIcon icon="x-circle" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.actions.delete.button.label']}</span>
|
||||
</button>
|
||||
</c:if>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
<nav aria-label="#{CmsAdminMessages['contentsection.assetfolder.pagination.label']}">
|
||||
<ul class="justify-content-center pagination">
|
||||
<c:choose>
|
||||
<c:when test="${AssetFolderModel.currentPage gt 1}">
|
||||
<li class="page-item">
|
||||
<a class="page-link"
|
||||
href="?firstResult=#{(AssetFolderModel.currentPage - 1) * AssetFolderModel.maxResults}&maxResults=${AssetFolderModel.maxResults}">
|
||||
<bootstrap:svgIcon icon="caret-left" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.pagination.previous_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-left" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.pagination.previous_page']}</span>
|
||||
</a>
|
||||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:forEach begin="1"
|
||||
end="${AssetFolderModel.numberOfPages}"
|
||||
var="page">
|
||||
<li class="page-item ${page == AssetFolderModel.currentPage ? 'active' : ''}">
|
||||
<a class="page-link"
|
||||
href="?firstResult=#{(page - 1) * AssetFolderModel.maxResults}&maxResults=${AssetFolderModel.maxResults}">${page}</a>
|
||||
</li>
|
||||
</c:forEach>
|
||||
<c:choose>
|
||||
<c:when test="#{AssetFolderModel.currentPage lt (AssetFolderModel.numberOfPages)}">
|
||||
<li class="page-item">
|
||||
<a class="page-link"
|
||||
href="?firstResult=${(AssetFolderModel.currentPage + 1) * AssetFolderModel.maxResults}&maxResults=${AssetFolderModel.maxResults}">
|
||||
<bootstrap:svgIcon icon="caret-right" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.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.assetfolder.pagination.next_page']}</span>
|
||||
</a>
|
||||
</li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<h2>#{CmsAdminMessages['contentsection.assetfolder.your_permissions.title']}</h2>
|
||||
<table class="table table-hover permissions-table">
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<c:forEach items="#{AssetFolderModel.privileges}"
|
||||
var="privilege">
|
||||
<th class="text-center">
|
||||
<code>#{CmsAdminMessages['asset_permissions.'.concat(privilege)]}</code>
|
||||
</th>
|
||||
</c:forEach>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<c:forEach items="#{AssetFolderModel.currentUserPermissions}"
|
||||
var="granted">
|
||||
<td class="text-center permissions-col">
|
||||
<c:choose>
|
||||
<c:when test="#{granted.granted}">
|
||||
<div class="text-success">
|
||||
<bootstrap:svgIcon icon="check" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.permissions.granted']}</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<div class="text-danger">
|
||||
<bootstrap:svgIcon icon="x" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.permissions.denied']}</span>
|
||||
</div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
</c:forEach>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<c:if test="#{AssetFolderModel.canCreateAssets and AssetFolderModel.canCreateSubFolders}">
|
||||
<h2>#{CmsAdminMessages['contentsection.assetfolder.permissions.title']}</h2>
|
||||
<table class="table table-hover permissions-table">
|
||||
<thead class="thead-light">
|
||||
<tr>
|
||||
<th class="">
|
||||
#{CmsAdminMessages['contentsection.assetfolder.permissions.role.header']}
|
||||
</th>
|
||||
<c:forEach items="#{AssetFolderModel.privileges}"
|
||||
var="privilege">
|
||||
<th class="text-center">
|
||||
<code>#{CmsAdminMessages['asset_permissions.'.concat(privilege)]}</code>
|
||||
</th>
|
||||
</c:forEach>
|
||||
<th>
|
||||
#{CmsAdminMessages['contentsection.assetfolder.permissions.actions']}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach items="#{AssetFolderModel.grantedPermissions}"
|
||||
var="permissions">
|
||||
<tr>
|
||||
<td>#{permissions.grantee}</td>
|
||||
<c:forEach items="#{permissions.grantedPrivileges}"
|
||||
var="granted">
|
||||
<td class="text-center permissions-col">
|
||||
<c:choose>
|
||||
<c:when test="#{granted.inherited}">
|
||||
<div class="text-secondary">
|
||||
<bootstrap:svgIcon icon="check" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.permissions.inherited']}</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:when test="#{granted.granted}">
|
||||
<div class="text-success">
|
||||
<bootstrap:svgIcon icon="check" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.permissions.granted']}</span>
|
||||
</div>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<div class="text-danger">
|
||||
<bootstrap:svgIcon icon="x" />
|
||||
<span class="sr-only">#{CmsAdminMessages['contentsection.assetfolder.permissions.denied']}</span>
|
||||
</div>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
</c:forEach>
|
||||
<td>
|
||||
<button class="btn btn-info"
|
||||
data-target="#edit-permissions-for-#{permissions.grantee}"
|
||||
data-toggle="modal"
|
||||
type="button">
|
||||
<bootstrap:svgIcon icon="pen" />
|
||||
<span>#{CmsAdminMessages['contentsection.assetfolder.permissions.edit']}</span>
|
||||
</button>
|
||||
<div aria-hidden="true"
|
||||
aria-labelledby="edit-permissions-for-#{permissions.grantee}-title"
|
||||
class="modal fade"
|
||||
id="edit-permissions-for-#{permissions.grantee}"
|
||||
tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
<form action="#{mvc.basePath}/#{ContentSectionModel.sectionName}/assetfolders/@permissions/${permissions.grantee}/#{AssetFolderModel.path}"
|
||||
class="modal-content"
|
||||
method="post">
|
||||
<div class="modal-header">
|
||||
<h3 class="modal-title"
|
||||
id="edit-permissions-for-#{permissions.grantee}-title">
|
||||
#{CmsAdminMessages.getMessage('contentsection.assetfolder.permissions.dialog.title', [AssetFolderModel.path, permissions.grantee])}
|
||||
</h3>
|
||||
<button aria-label="#{CmsAdminMessages['contentsection.assetfolder.permissions.dialog.close']}"
|
||||
class="close"
|
||||
data-dismiss="modal"
|
||||
type="button">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<c:forEach items="#{permissions.grantedPrivileges}"
|
||||
var="granted">
|
||||
<div class="form-check">
|
||||
<input checked="#{granted.granted ? 'checked' : ''}"
|
||||
class="form-check-input"
|
||||
id="edit-permissions-for-#{permissions.grantee}-#{granted.privilege}"
|
||||
name="permissions"
|
||||
type="checkbox"
|
||||
value="#{granted.privilege}" />
|
||||
<label class="form-check-label"
|
||||
for="edit-permissions-for-#{permissions.grantee}-#{granted.privilege}">
|
||||
#{CmsAdminMessages['asset_permissions.'.concat(granted.privilege)]}
|
||||
</label>
|
||||
<c:if test="#{granted.inherited}">
|
||||
<span class="form-text">(#{CmsAdminMessages['contentsection.assetfolder.permissions.dialog.granted_by_inheritence']})</span>
|
||||
</c:if>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-secondary"
|
||||
data-dismiss="modal"
|
||||
type="button" >#{CmsAdminMessages['contentsection.assetfolder.permissions.dialog.close']}</button>
|
||||
<button class="btn btn-primary"
|
||||
type="submit" >#{CmsAdminMessages['contentsection.assetfolder.permissions.dialog.submit']}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</c:if>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ui:define>
|
||||
|
||||
</ui:composition>
|
||||
</html>
|
||||
|
||||
|
|
@ -41,7 +41,7 @@
|
|||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link #{activePage == 'categories' ? 'active' : ''}"
|
||||
href='#{mvc.basePath}/#{ContentSectionModel.sectionName}/categories'>
|
||||
href='#{mvc.basePath}/#{ContentSectionModel.sectionName}/categorysystems'>
|
||||
<bootstrap:svgIcon icon="diagram-3-fill" />
|
||||
<span>#{CmsAdminMessages['contentsection.categories.title']}</span>
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
|
||||
<ui:composition>
|
||||
<c:choose>
|
||||
<c:when test="#{not empty folder.subFolders}">
|
||||
<c:when test="#{not empty folder.subFolders}">
|
||||
<li class="folder-tree-node list-group-item">
|
||||
<div class="d-flex">
|
||||
<button class="btn btn-light p-0 subfolders-toggler"
|
||||
|
|
@ -28,7 +28,6 @@
|
|||
<span>#{folder.name}</span>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
</div>
|
||||
<ul class="border-0 #{!folder.open ? 'collapse' : 'collapse.show'} list-group"
|
||||
id="#{folder.name}-subfolders">
|
||||
|
|
@ -40,7 +39,6 @@
|
|||
</ui:include>
|
||||
</c:forEach>
|
||||
</ul>
|
||||
|
||||
</li>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
|
|
|
|||
|
|
@ -94,7 +94,8 @@
|
|||
<form action="#" class="form-inline mr-2" method="GET">
|
||||
<div class="input-group">
|
||||
<div class="input-group-prepend">
|
||||
<label class="mr-2" for="document-folder-filter">
|
||||
<label class="mr-2"
|
||||
for="document-folder-filter">
|
||||
<span>#{CmsAdminMessages['contentsection.documentfolder.filter.label']}</span>
|
||||
</label>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -95,3 +95,49 @@ contentsection.documentfolder.rename_folder_dialog.close=Cancel
|
|||
contentsection.documentfolder.rename_folder_dialog.save=Rename folder
|
||||
contentsection.documentfolder.rename_folder.name.label=Name
|
||||
contentsection.documentfolder.rename_folder.name.help=The new name of the folder. May only contain the letters a to z and A to Z, numbers, the dash and the underscore
|
||||
contentsection.assettfolder.foldersnav.subfolders.expand=Show subfolders of
|
||||
contentsection.assetfolder.heading=Content Section {0} Media & Data Folders
|
||||
contentsection.assetfolders.searchbox.label=Search in media & data folders
|
||||
contentsection.assetfolders.searchbox.submit=Search
|
||||
contentsection.assetfolders.root.title=Media & Data
|
||||
contentsection.assetfolder.filter.label=Filter media & data asests
|
||||
contentsection.assetfolder.filter.submit=Apply filter
|
||||
contentsection.assetfolder.pageof=Page {0} of {1}
|
||||
contentsection.assetfolder.add_subfolder=Add new subfolder
|
||||
contentsection.assetfolder.new_subfolder_dialog.title=Create new subfolder
|
||||
contentsection.assetfolder.new_subfolder_dialog.close=Cancel
|
||||
contentsection.assetfolder.new_subfolder.name.label=Name
|
||||
contentsection.assetfolder.new_subfolder.name.help=The name of the new subfolder. May only contain the letters a to z and A to Z, numbers, the dash and the underscore
|
||||
contentsection.assetfolder.new_subfolder_dialog.submit=Create new folder
|
||||
contentsection.assetfolder.add_asset=Create new media & data asset
|
||||
contentsection.assetfolder.headers.name.label=Name
|
||||
contentsection.assetfolder.headers.title.label=Title
|
||||
contentsection.assetfolder.headers.type.label=Type
|
||||
contentsection.assetfolder.headers.actions.label=Actions
|
||||
contentsection.assetfolder.actions.rename_folder.button.label=Rename folder
|
||||
contentsection.assetfolder.rename_folder_dialog.title=Rename folder /{0}
|
||||
contentsection.assetfolder.rename_folder_dialog.close=Cancel
|
||||
contentsection.assetfolder.rename_folder.name.label=Name
|
||||
contentsection.assestfolder.rename_folder.name.help=The new name of the folder. May only contain the letters a to z and A to Z, numbers, the dash and the underscore
|
||||
contentsection.assetfolder.rename_folder_dialog.save=Rename folder
|
||||
contentsection.assetfolder.actions.delete.button.label=Delete
|
||||
contentsection.assetfolder.pagination.label=Pages
|
||||
contentsection.assetfolder.pagination.previous_page=Previous page
|
||||
contentsection.assetfolder.pagination.next_page=Next page
|
||||
contentsection.assetfolder.your_permissions.title=Your permissions
|
||||
contentsection.assetfolder.permissions.granted=Granted
|
||||
contentsection.assetfolder.permissions.denied=Denied
|
||||
contentsection.assetfolder.permissions.title=Permissions
|
||||
contentsection.assetfolder.permissions.role.header=Role
|
||||
contentsection.assetfolder.permissions.actions=Actions
|
||||
contentsection.assetfolder.permissions.inherited=Inherited
|
||||
contentsection.assetfolder.permissions.edit=Edit
|
||||
contentsection.assetfolder.permissions.dialog.title=Edit permissions of role {1} for folder {0}
|
||||
contentsection.assetfolder.permissions.dialog.close=Cancel
|
||||
contentsection.assetfolder.permissions.dialog.granted_by_inheritence=Granted by inhertitence
|
||||
contentsection.assetfolder.permissions.dialog.submit=Apply changed permissions
|
||||
asset_permissions.create_new_assets=Create new media & data objects
|
||||
asset_permissions.delete_assets=Delete
|
||||
asset_permissions.use_asset=Use
|
||||
asset_permissions.edit_asset=Edit
|
||||
asset_permissions.view_asset=View
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ contentsections.documentfolder.not_found=Es wurde kein Ordner mit dem Pfad {1} i
|
|||
contentsection.not_found.title=Content Section nicht gefunden
|
||||
contentsection.documentfolders.searchbox.label=In Dokument-Ordnern suchen
|
||||
contentsection.documentfolders.searchbox.submit=Suchen
|
||||
contentsection.assetfolders.title=Media & Data
|
||||
contentsection.assetfolders.title=Medien & Daten
|
||||
contentsection.categories.title=Kategorien & Seitenb\u00e4ume
|
||||
contentsection.configuration.title=Konfiguration
|
||||
contentsection.documentfolder.new_subfolder_dialog.title=Neuen Unterordner erstellen
|
||||
|
|
@ -95,3 +95,49 @@ contentsection.documentfolder.rename_folder_dialog.close=Abbrechen
|
|||
contentsection.documentfolder.rename_folder_dialog.save=Ordner umbenennen
|
||||
contentsection.documentfolder.rename_folder.name.label=Name
|
||||
contentsection.documentfolder.rename_folder.name.help=Der neue Name des Ordners. Darf nur die Buchstaben a bis z und A bis Z, Ziffern, den Bindestrich und den Unterstrich enthalten.
|
||||
contentsection.assettfolder.foldersnav.subfolders.expand=Unterordner anzeigen
|
||||
contentsection.assetfolder.heading=Content Section {0} Medien & Daten Ordner
|
||||
contentsection.assetfolders.searchbox.label=Suche in Medien und Daten Ordnern
|
||||
contentsection.assetfolders.searchbox.submit=Suche
|
||||
contentsection.assetfolders.root.title=Medien & Daten
|
||||
contentsection.assetfolder.filter.label=Medien & Daten Objekte filtern
|
||||
contentsection.assetfolder.filter.submit=Filter anwenden
|
||||
contentsection.assetfolder.pageof=Seite {0} von {1}
|
||||
contentsection.assetfolder.add_subfolder=Unterordner erstellen
|
||||
contentsection.assetfolder.new_subfolder_dialog.title=Neuen Unterordner erstellen
|
||||
contentsection.assetfolder.new_subfolder_dialog.close=Abbrechen
|
||||
contentsection.assetfolder.new_subfolder.name.label=Name
|
||||
contentsection.assetfolder.new_subfolder.name.help=Der Name des neuen Ordners. Darf nur die Buchstaben a bis z und A bis Z, Ziffern, den Bindestrich und den Unterstrich enthalten.
|
||||
contentsection.assetfolder.new_subfolder_dialog.submit=Neuen Ordner anlegen
|
||||
contentsection.assetfolder.add_asset=Neues Medien & Daten Objekt anlegen
|
||||
contentsection.assetfolder.headers.name.label=Name
|
||||
contentsection.assetfolder.headers.title.label=Title
|
||||
contentsection.assetfolder.headers.type.label=Typ
|
||||
contentsection.assetfolder.headers.actions.label=Aktionen
|
||||
contentsection.assetfolder.actions.rename_folder.button.label=Ordner umbenennen
|
||||
contentsection.assetfolder.rename_folder_dialog.title=Ordner /{0} umbenennen
|
||||
contentsection.assetfolder.rename_folder_dialog.close=Abbrechen
|
||||
contentsection.assetfolder.rename_folder.name.label=Name
|
||||
contentsection.assestfolder.rename_folder.name.help=Der neue Name des Ordners. Darf nur die Buchstaben a bis z und A bis Z, Ziffern, den Bindestrich und den Unterstrich enthalten.
|
||||
contentsection.assetfolder.rename_folder_dialog.save=Ordner umbenennen
|
||||
contentsection.assetfolder.actions.delete.button.label=L\u00f6schen
|
||||
contentsection.assetfolder.pagination.label=Seiten
|
||||
contentsection.assetfolder.pagination.previous_page=Eine Seite zur\u00fcck
|
||||
contentsection.assetfolder.pagination.next_page=Eine Seite vor
|
||||
contentsection.assetfolder.your_permissions.title=Ihre Berechtigungen
|
||||
contentsection.assetfolder.permissions.granted=Gew\u00e4hrt
|
||||
contentsection.assetfolder.permissions.denied=Verweigert
|
||||
contentsection.assetfolder.permissions.title=Berechtigungen
|
||||
contentsection.assetfolder.permissions.role.header=Rolle
|
||||
contentsection.assetfolder.permissions.actions=Aktionen
|
||||
contentsection.assetfolder.permissions.inherited=Geerbt
|
||||
contentsection.assetfolder.permissions.edit=Bearbeiten
|
||||
contentsection.assetfolder.permissions.dialog.title=Berechtigungen der Rolle {1} f\u00fcr Ordner {0} bearbeiten
|
||||
contentsection.assetfolder.permissions.dialog.close=Abbrechen
|
||||
contentsection.assetfolder.permissions.dialog.granted_by_inheritence=Durch \u00fcbergeordnetes Objekt gew\u00e4hrt
|
||||
contentsection.assetfolder.permissions.dialog.submit=Berechtigungen anwenden
|
||||
asset_permissions.create_new_assets=Neue Medien & Daten Objekte anlegen
|
||||
asset_permissions.delete_assets=L\u00f6schen
|
||||
asset_permissions.use_asset=Asset
|
||||
asset_permissions.edit_asset=Bearbeiten
|
||||
asset_permissions.view_asset=Betrachten
|
||||
|
|
|
|||
Loading…
Reference in New Issue