castopod/themes/cp_admin/_sidebar.php

86 lines
3.1 KiB
PHP
Raw Permalink Normal View History

<?php declare(strict_types=1);
use App\Models\PageModel;
use App\Models\PersonModel;
use App\Models\PodcastModel;
use Modules\Auth\Models\UserModel;
$navigation = [
'dashboard' => [
'icon' => 'dashboard-fill', // @icon('dashboard-fill')
'items' => ['admin'],
],
'podcasts' => [
'icon' => 'mic-fill', // @icon('mic-fill')
'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-fill', // @icon('folder-user-fill')
'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',
],
feat(fediverse): implement activitypub protocols + update user interface - add "ActivityPub" library to handle server to server federation and basic client to server protocols using activitypub: - add webfinger endpoint to look for actor - add actor definition with inbox / outbox / followers - remote follow an actor - create notes with possible preview cards - interract with favourites, reblogs and replies - block incoming actors and/or domains - broadcast/schedule activities to fediverse followers using a cron task - For castopod, the podcast is the actor: - overwrite the activitypub library for castopod's specific needs - perform basic interactions administrating a podcast to interact with fediverse users: - create notes with episode attachment - favourite and share a note + reply - add specific castopod_namespaces for podcasts and episodes definitions - overwrite CodeIgniter's Route service to include alternate-content option for activitystream requests - update episode publication logic: - remove publication inputs in create / edit episode form - publish / schedule or unpublish an episode after creation - the podcaster publishes a note when publishing an episode - Javascript / Typescript modules: - fix Dropdown.ts to keep dropdown menu in foreground - add Modal.ts for funding links modal - add Toggler.ts to toggle various css states in ui - User Interface: - update tailwindcss to v2 - use castopod's pine and rose colors - update public layout to a 3 column layout - add pages in public for podcast activity, episode list and notes - update episode page to include linked notes - remove previous and next episodes from episode pages - show different public views depending on whether user is authenticated or not - use Kumbh Sans and Montserrat fonts - update CodeIgniter's config files - with CodeIgniter's new requirements, update docker environments are now based on php v7.3 image - move Image entity to Libraries - update composer and npm packages to latest versions closes #69 #65 #85, fixes #51 #91 #92 #88
2021-04-02 19:20:02 +02:00
'fediverse' => [
'icon' => 'rocket-2-fill', // @icon('rocket-2-fill')
'items' => ['fediverse-blocked-actors', 'fediverse-blocked-domains'],
'items-permissions' => [
'fediverse-blocked-actors' => 'fediverse.manage-blocks',
'fediverse-blocked-domains' => 'fediverse.manage-blocks',
],
feat(fediverse): implement activitypub protocols + update user interface - add "ActivityPub" library to handle server to server federation and basic client to server protocols using activitypub: - add webfinger endpoint to look for actor - add actor definition with inbox / outbox / followers - remote follow an actor - create notes with possible preview cards - interract with favourites, reblogs and replies - block incoming actors and/or domains - broadcast/schedule activities to fediverse followers using a cron task - For castopod, the podcast is the actor: - overwrite the activitypub library for castopod's specific needs - perform basic interactions administrating a podcast to interact with fediverse users: - create notes with episode attachment - favourite and share a note + reply - add specific castopod_namespaces for podcasts and episodes definitions - overwrite CodeIgniter's Route service to include alternate-content option for activitystream requests - update episode publication logic: - remove publication inputs in create / edit episode form - publish / schedule or unpublish an episode after creation - the podcaster publishes a note when publishing an episode - Javascript / Typescript modules: - fix Dropdown.ts to keep dropdown menu in foreground - add Modal.ts for funding links modal - add Toggler.ts to toggle various css states in ui - User Interface: - update tailwindcss to v2 - use castopod's pine and rose colors - update public layout to a 3 column layout - add pages in public for podcast activity, episode list and notes - update episode page to include linked notes - remove previous and next episodes from episode pages - show different public views depending on whether user is authenticated or not - use Kumbh Sans and Montserrat fonts - update CodeIgniter's config files - with CodeIgniter's new requirements, update docker environments are now based on php v7.3 image - move Image entity to Libraries - update composer and npm packages to latest versions closes #69 #65 #85, fixes #51 #91 #92 #88
2021-04-02 19:20:02 +02:00
],
'users' => [
'icon' => 'group-fill', // @icon('group-fill')
'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',
],
'pages' => [
'icon' => 'pages-fill', // @icon('pages-fill')
'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',
],
'settings' => [
'icon' => 'settings-3-fill', // @icon('settings-3-fill')
'items' => ['settings-general', 'settings-theme', 'admin-about'],
'items-permissions' => [
'settings-general' => 'admin.settings',
'settings-theme' => 'admin.settings',
'admin-about' => 'admin.settings',
],
],
];
if (auth()->user()->can('podcasts.view')) {
$navigation['podcasts']['count'] = (new PodcastModel())->countAllResults();
} else {
$navigation['podcasts']['count'] = count(get_user_podcasts(auth()->user()));
} ?>
<?= view('_partials/_nav_menu', [
'navigation' => $navigation,
'langKey' => 'Navigation',
]) ?>