AssetFolder view

Former-commit-id: 4489b16195dc7155096c89c61916dc52b9b7a039
pull/10/head
Jens Pelzetter 2021-02-10 20:43:18 +01:00
parent 00e1da3141
commit 7bd424537e
10 changed files with 684 additions and 11 deletions

View File

@ -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;

View File

@ -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 = {

View File

@ -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);
}

View File

@ -0,0 +1,51 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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>

View File

@ -0,0 +1,526 @@
<!DOCTYPE html [<!ENTITY times '&#215;'>]>
<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">&times;</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">&times;</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}&amp;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}&amp;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}&amp;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">&times;</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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -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