Commit 0bd7ddea authored by Ewen Korr's avatar Ewen Korr Committed by Yassine Doghri
Browse files

feat(admin): emphasize unprivileged items in sidebar with "prohibited" icon

parent 68a599fe
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@ module.exports = {
      content: {
        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\")",
        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: {
        sans: ["Inter", ...defaultTheme.fontFamily.sans],
+13 −2
Original line number Diff line number Diff line
@@ -27,11 +27,22 @@
        <ul class="flex flex-col pb-4">
            <?php foreach ($data['items'] as $item):
                $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">
                <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'
                        : ' 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,
                        ) ?></a>
            </li>
+38 −12
Original line number Diff line number Diff line
@@ -13,12 +13,21 @@ $navigation = [
    'podcasts' => [
        'icon'              => 'mic',
        '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',
        'count-route' => 'podcast-list',
    ],
    'persons' => [
        'icon'              => 'folder-user',
        'items'             => ['person-list', 'person-create'],
        'items-permissions' => [
            'person-list'   => 'persons.manage',
            'person-create' => 'persons.manage',
        ],
        'add-cta'     => 'person-create',
        'count'       => (new PersonModel())->countAllResults(),
        'count-route' => 'person-list',
@@ -26,10 +35,18 @@ $navigation = [
    'fediverse' => [
        'icon'              => 'rocket-tilted',
        'items'             => ['fediverse-blocked-actors', 'fediverse-blocked-domains'],
        'items-permissions' => [
            'fediverse-blocked-actors'  => 'fediverse.manage-blocks',
            'fediverse-blocked-domains' => 'fediverse.manage-blocks',
        ],
    ],
    'users' => [
        'icon'              => 'group',
        'items'             => ['user-list', 'user-create'],
        'items-permissions' => [
            'user-list'   => 'users.manage',
            'user-create' => 'users.manage',
        ],
        'add-cta'     => 'user-create',
        'count'       => (new UserModel())->countAllResults(),
        'count-route' => 'user-list',
@@ -37,6 +54,10 @@ $navigation = [
    'pages' => [
        'icon'              => 'pages',
        'items'             => ['page-list', 'page-create'],
        'items-permissions' => [
            'page-list'   => 'pages.manage',
            'page-create' => 'pages.manage',
        ],
        'add-cta'     => 'page-create',
        'count'       => (new PageModel())->countAllResults(),
        'count-route' => 'page-list',
@@ -44,6 +65,11 @@ $navigation = [
    'settings' => [
        'icon'              => 'settings',
        'items'             => ['settings-general', 'settings-theme', 'admin-about'],
        'items-permissions' => [
            'settings-general' => 'admin.settings',
            'settings-theme'   => 'admin.settings',
            'admin-about'      => 'admin.settings',
        ],
    ],
];

+16 −4
Original line number Diff line number Diff line
@@ -4,10 +4,22 @@ $episodeNavigation = [
    'dashboard' => [
        'icon'              => 'dashboard',
        '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' => [
        'icon'              => 'clapperboard',
        '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-route' => 'video-clips-list',
        'add-cta'     => 'video-clips-create',
+40 −6
Original line number Diff line number Diff line
@@ -4,10 +4,21 @@ $podcastNavigation = [
    'dashboard' => [
        'icon'              => 'dashboard',
        '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' => [
        'icon'              => 'play-circle',
        'items'             => ['episode-list', 'episode-create'],
        'items-permissions' => [
            'episode-list'   => 'episodes.view',
            'episode-create' => 'episodes.create',
        ],
        'add-cta'     => 'episode-create',
        'count'       => $podcast->getEpisodesCount(),
        'count-route' => 'episode-list',
@@ -23,6 +34,15 @@ $podcastNavigation = [
            'podcast-analytics-time-periods',
            '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' => [
        'icon'  => 'broadcast',
@@ -30,6 +50,10 @@ $podcastNavigation = [
            'platforms-podcasting',
            'platforms-social',
        ],
        'items-permissions' => [
            'platforms-podcasting' => 'manage-platforms',
            'platforms-social'     => 'manage-platforms',
        ],
    ],
    'monetization' => [
        'icon'  => 'money-dollar-circle',
@@ -39,10 +63,20 @@ $podcastNavigation = [
            'platforms-funding',
            'podcast-monetization-other',
        ],
        'items-permissions' => [
            'subscription-list'          => 'manage-subscriptions',
            'subscription-create'        => 'manage-subscriptions',
            'platforms-funding'          => 'manage-platforms',
            'podcast-monetization-other' => 'edit',
        ],
    ],
    'contributors' => [
        'icon'              => 'group',
        'items'             => ['contributor-list', 'contributor-add'],
        'items-permissions' => [
            'contributor-list' => 'manage-contributors',
            'contributor-add'  => 'manage-contributors',
        ],
        'add-cta'     => 'contributor-add',
        'count'       => count($podcast->contributors),
        'count-route' => 'contributor-list',