mirror of
https://code.castopod.org/adaures/castopod.git
synced 2024-09-27 20:21:59 +02:00
feat(admin): emphasize unprivileged items in sidebar with "prohibited" icon
This commit is contained in:
parent
68a599fee0
commit
0bd7ddea58
@ -15,6 +15,8 @@ module.exports = {
|
|||||||
content: {
|
content: {
|
||||||
chevronRightIcon:
|
chevronRightIcon:
|
||||||
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 24 24'%3E%3Cpath d='M13.17 12 8.22 7.05l1.42-1.41L16 12l-6.36 6.36-1.42-1.41L13.17 12Z'/%3E%3C/svg%3E%0A\")",
|
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 24 24'%3E%3Cpath d='M13.17 12 8.22 7.05l1.42-1.41L16 12l-6.36 6.36-1.42-1.41L13.17 12Z'/%3E%3C/svg%3E%0A\")",
|
||||||
|
prohibitedIcon:
|
||||||
|
"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23ffffff' viewBox='0 0 24 24'%3E%3Cpath d='M7.0943 5.68009L18.3199 16.9057C19.3736 15.5506 20 13.8491 20 12C20 7.58172 16.4183 4 12 4C10.1509 4 8.44939 4.62644 7.0943 5.68009ZM16.9057 18.3199L5.68009 7.0943C4.62644 8.44939 4 10.1509 4 12C4 16.4183 7.58172 20 12 20C13.8491 20 15.5506 19.3736 16.9057 18.3199ZM4.92893 4.92893C6.73748 3.12038 9.23885 2 12 2C17.5228 2 22 6.47715 22 12C22 14.7611 20.8796 17.2625 19.0711 19.0711C17.2625 20.8796 14.7611 22 12 22C6.47715 22 2 17.5228 2 12C2 9.23885 3.12038 6.73748 4.92893 4.92893Z'/%3E%3C/svg%3E%0A\")",
|
||||||
},
|
},
|
||||||
fontFamily: {
|
fontFamily: {
|
||||||
sans: ["Inter", ...defaultTheme.fontFamily.sans],
|
sans: ["Inter", ...defaultTheme.fontFamily.sans],
|
||||||
|
@ -27,11 +27,22 @@
|
|||||||
<ul class="flex flex-col pb-4">
|
<ul class="flex flex-col pb-4">
|
||||||
<?php foreach ($data['items'] as $item):
|
<?php foreach ($data['items'] as $item):
|
||||||
$isActive = $item === $activeItem;
|
$isActive = $item === $activeItem;
|
||||||
|
|
||||||
|
$isAllowed = true;
|
||||||
|
if (array_key_exists('items-permissions', $data) && array_key_exists($item, $data['items-permissions'])) {
|
||||||
|
if (isset($podcastId)) {
|
||||||
|
$isAllowed = can_podcast(auth()->user(), $podcastId, $data['items-permissions'][$item]);
|
||||||
|
} else {
|
||||||
|
$isAllowed = auth()->user()->can($data['items-permissions'][$item]);
|
||||||
|
}
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
<li class="inline-flex">
|
<li class="inline-flex">
|
||||||
<a class="relative w-full py-3 pl-14 pr-2 text-sm hover:opacity-100 before:content-chevronRightIcon before:absolute before:-ml-5 before:opacity-0 before:w-5 before:h-5 hover:bg-navigation-active focus:ring-inset focus:ring-accent<?= $isActive
|
<a class="relative w-full py-3 pl-14 pr-2 text-sm hover:opacity-100 before:absolute before:opacity-0 before:w-5 before:h-5 hover:bg-navigation-active focus:ring-inset focus:ring-accent<?= $isActive
|
||||||
? ' before:opacity-100 font-semibold inline-flex items-center'
|
? ' before:opacity-100 font-semibold inline-flex items-center'
|
||||||
: ' hover:before:opacity-60 focus:before:opacity-60' ?>" href="<?= route_to($item, $podcastId ?? null, $episodeId ?? null) ?>"><?= lang(
|
: ' hover:before:opacity-60 focus:before:opacity-60' ?><?= $isAllowed
|
||||||
|
? ' before:content-chevronRightIcon before:-ml-5'
|
||||||
|
: ' before:content-prohibitedIcon before:-ml-6 before:opacity-60 pointer-events-none' ?>" href="<?= route_to($item, $podcastId ?? null, $episodeId ?? null) ?>"><?= lang(
|
||||||
$langKey . '.' . $item,
|
$langKey . '.' . $item,
|
||||||
) ?></a>
|
) ?></a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -13,12 +13,21 @@ $navigation = [
|
|||||||
'podcasts' => [
|
'podcasts' => [
|
||||||
'icon' => 'mic',
|
'icon' => 'mic',
|
||||||
'items' => ['podcast-list', 'podcast-create', 'all-podcast-imports', 'podcast-imports-add'],
|
'items' => ['podcast-list', 'podcast-create', 'all-podcast-imports', 'podcast-imports-add'],
|
||||||
|
'items-permissions' => [
|
||||||
|
'podcast-create' => 'podcasts.create',
|
||||||
|
'all-podcast-imports' => 'podcasts.import',
|
||||||
|
'podcast-imports-add' => 'podcasts.import',
|
||||||
|
],
|
||||||
'add-cta' => 'podcast-create',
|
'add-cta' => 'podcast-create',
|
||||||
'count-route' => 'podcast-list',
|
'count-route' => 'podcast-list',
|
||||||
],
|
],
|
||||||
'persons' => [
|
'persons' => [
|
||||||
'icon' => 'folder-user',
|
'icon' => 'folder-user',
|
||||||
'items' => ['person-list', 'person-create'],
|
'items' => ['person-list', 'person-create'],
|
||||||
|
'items-permissions' => [
|
||||||
|
'person-list' => 'persons.manage',
|
||||||
|
'person-create' => 'persons.manage',
|
||||||
|
],
|
||||||
'add-cta' => 'person-create',
|
'add-cta' => 'person-create',
|
||||||
'count' => (new PersonModel())->countAllResults(),
|
'count' => (new PersonModel())->countAllResults(),
|
||||||
'count-route' => 'person-list',
|
'count-route' => 'person-list',
|
||||||
@ -26,10 +35,18 @@ $navigation = [
|
|||||||
'fediverse' => [
|
'fediverse' => [
|
||||||
'icon' => 'rocket-tilted',
|
'icon' => 'rocket-tilted',
|
||||||
'items' => ['fediverse-blocked-actors', 'fediverse-blocked-domains'],
|
'items' => ['fediverse-blocked-actors', 'fediverse-blocked-domains'],
|
||||||
|
'items-permissions' => [
|
||||||
|
'fediverse-blocked-actors' => 'fediverse.manage-blocks',
|
||||||
|
'fediverse-blocked-domains' => 'fediverse.manage-blocks',
|
||||||
|
],
|
||||||
],
|
],
|
||||||
'users' => [
|
'users' => [
|
||||||
'icon' => 'group',
|
'icon' => 'group',
|
||||||
'items' => ['user-list', 'user-create'],
|
'items' => ['user-list', 'user-create'],
|
||||||
|
'items-permissions' => [
|
||||||
|
'user-list' => 'users.manage',
|
||||||
|
'user-create' => 'users.manage',
|
||||||
|
],
|
||||||
'add-cta' => 'user-create',
|
'add-cta' => 'user-create',
|
||||||
'count' => (new UserModel())->countAllResults(),
|
'count' => (new UserModel())->countAllResults(),
|
||||||
'count-route' => 'user-list',
|
'count-route' => 'user-list',
|
||||||
@ -37,6 +54,10 @@ $navigation = [
|
|||||||
'pages' => [
|
'pages' => [
|
||||||
'icon' => 'pages',
|
'icon' => 'pages',
|
||||||
'items' => ['page-list', 'page-create'],
|
'items' => ['page-list', 'page-create'],
|
||||||
|
'items-permissions' => [
|
||||||
|
'page-list' => 'pages.manage',
|
||||||
|
'page-create' => 'pages.manage',
|
||||||
|
],
|
||||||
'add-cta' => 'page-create',
|
'add-cta' => 'page-create',
|
||||||
'count' => (new PageModel())->countAllResults(),
|
'count' => (new PageModel())->countAllResults(),
|
||||||
'count-route' => 'page-list',
|
'count-route' => 'page-list',
|
||||||
@ -44,6 +65,11 @@ $navigation = [
|
|||||||
'settings' => [
|
'settings' => [
|
||||||
'icon' => 'settings',
|
'icon' => 'settings',
|
||||||
'items' => ['settings-general', 'settings-theme', 'admin-about'],
|
'items' => ['settings-general', 'settings-theme', 'admin-about'],
|
||||||
|
'items-permissions' => [
|
||||||
|
'settings-general' => 'admin.settings',
|
||||||
|
'settings-theme' => 'admin.settings',
|
||||||
|
'admin-about' => 'admin.settings',
|
||||||
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -4,10 +4,22 @@ $episodeNavigation = [
|
|||||||
'dashboard' => [
|
'dashboard' => [
|
||||||
'icon' => 'dashboard',
|
'icon' => 'dashboard',
|
||||||
'items' => ['episode-view', 'episode-edit', 'episode-persons-manage', 'embed-add'],
|
'items' => ['episode-view', 'episode-edit', 'episode-persons-manage', 'embed-add'],
|
||||||
|
'items-permissions' => [
|
||||||
|
'episode-view' => 'episodes.view',
|
||||||
|
'episode-edit' => 'episodes.edit',
|
||||||
|
'episode-persons-manage' => 'episodes.manage-persons',
|
||||||
|
'embed-add' => 'episodes.edit',
|
||||||
|
],
|
||||||
],
|
],
|
||||||
'clips' => [
|
'clips' => [
|
||||||
'icon' => 'clapperboard',
|
'icon' => 'clapperboard',
|
||||||
'items' => ['video-clips-list', 'video-clips-create', 'soundbites-list', 'soundbites-create'],
|
'items' => ['video-clips-list', 'video-clips-create', 'soundbites-list', 'soundbites-create'],
|
||||||
|
'items-permissions' => [
|
||||||
|
'video-clips-list' => 'episodes.manage-clips',
|
||||||
|
'video-clips-create' => 'episodes.manage-clips',
|
||||||
|
'soundbites-list' => 'episodes.manage-clips',
|
||||||
|
'soundbites-create' => 'episodes.manage-clips',
|
||||||
|
],
|
||||||
'count' => $episode->getClipCount(),
|
'count' => $episode->getClipCount(),
|
||||||
'count-route' => 'video-clips-list',
|
'count-route' => 'video-clips-list',
|
||||||
'add-cta' => 'video-clips-create',
|
'add-cta' => 'video-clips-create',
|
||||||
|
@ -4,10 +4,21 @@ $podcastNavigation = [
|
|||||||
'dashboard' => [
|
'dashboard' => [
|
||||||
'icon' => 'dashboard',
|
'icon' => 'dashboard',
|
||||||
'items' => ['podcast-view', 'podcast-edit', 'podcast-persons-manage', 'podcast-imports', 'podcast-imports-sync'],
|
'items' => ['podcast-view', 'podcast-edit', 'podcast-persons-manage', 'podcast-imports', 'podcast-imports-sync'],
|
||||||
|
'items-permissions' => [
|
||||||
|
'podcast-view' => 'view',
|
||||||
|
'podcast-edit' => 'edit',
|
||||||
|
'podcast-persons-manage' => 'manage-persons',
|
||||||
|
'podcast-imports' => 'manage-import',
|
||||||
|
'podcast-imports-sync' => 'manage-import',
|
||||||
|
],
|
||||||
],
|
],
|
||||||
'episodes' => [
|
'episodes' => [
|
||||||
'icon' => 'play-circle',
|
'icon' => 'play-circle',
|
||||||
'items' => ['episode-list', 'episode-create'],
|
'items' => ['episode-list', 'episode-create'],
|
||||||
|
'items-permissions' => [
|
||||||
|
'episode-list' => 'episodes.view',
|
||||||
|
'episode-create' => 'episodes.create',
|
||||||
|
],
|
||||||
'add-cta' => 'episode-create',
|
'add-cta' => 'episode-create',
|
||||||
'count' => $podcast->getEpisodesCount(),
|
'count' => $podcast->getEpisodesCount(),
|
||||||
'count-route' => 'episode-list',
|
'count-route' => 'episode-list',
|
||||||
@ -23,6 +34,15 @@ $podcastNavigation = [
|
|||||||
'podcast-analytics-time-periods',
|
'podcast-analytics-time-periods',
|
||||||
'podcast-analytics-webpages',
|
'podcast-analytics-webpages',
|
||||||
],
|
],
|
||||||
|
'items-permissions' => [
|
||||||
|
'podcast-analytics' => 'view',
|
||||||
|
'podcast-analytics-unique-listeners' => 'view',
|
||||||
|
'podcast-analytics-listening-time' => 'view',
|
||||||
|
'podcast-analytics-players' => 'view',
|
||||||
|
'podcast-analytics-locations' => 'view',
|
||||||
|
'podcast-analytics-time-periods' => 'view',
|
||||||
|
'podcast-analytics-webpages' => 'view',
|
||||||
|
],
|
||||||
],
|
],
|
||||||
'broadcast' => [
|
'broadcast' => [
|
||||||
'icon' => 'broadcast',
|
'icon' => 'broadcast',
|
||||||
@ -30,6 +50,10 @@ $podcastNavigation = [
|
|||||||
'platforms-podcasting',
|
'platforms-podcasting',
|
||||||
'platforms-social',
|
'platforms-social',
|
||||||
],
|
],
|
||||||
|
'items-permissions' => [
|
||||||
|
'platforms-podcasting' => 'manage-platforms',
|
||||||
|
'platforms-social' => 'manage-platforms',
|
||||||
|
],
|
||||||
],
|
],
|
||||||
'monetization' => [
|
'monetization' => [
|
||||||
'icon' => 'money-dollar-circle',
|
'icon' => 'money-dollar-circle',
|
||||||
@ -39,10 +63,20 @@ $podcastNavigation = [
|
|||||||
'platforms-funding',
|
'platforms-funding',
|
||||||
'podcast-monetization-other',
|
'podcast-monetization-other',
|
||||||
],
|
],
|
||||||
|
'items-permissions' => [
|
||||||
|
'subscription-list' => 'manage-subscriptions',
|
||||||
|
'subscription-create' => 'manage-subscriptions',
|
||||||
|
'platforms-funding' => 'manage-platforms',
|
||||||
|
'podcast-monetization-other' => 'edit',
|
||||||
|
],
|
||||||
],
|
],
|
||||||
'contributors' => [
|
'contributors' => [
|
||||||
'icon' => 'group',
|
'icon' => 'group',
|
||||||
'items' => ['contributor-list', 'contributor-add'],
|
'items' => ['contributor-list', 'contributor-add'],
|
||||||
|
'items-permissions' => [
|
||||||
|
'contributor-list' => 'manage-contributors',
|
||||||
|
'contributor-add' => 'manage-contributors',
|
||||||
|
],
|
||||||
'add-cta' => 'contributor-add',
|
'add-cta' => 'contributor-add',
|
||||||
'count' => count($podcast->contributors),
|
'count' => count($podcast->contributors),
|
||||||
'count-route' => 'contributor-list',
|
'count-route' => 'contributor-list',
|
||||||
|
Loading…
Reference in New Issue
Block a user