Commit 7fb1de2c authored by Yassine Doghri's avatar Yassine Doghri
Browse files

feat: add breadcrumb in admin area

- add Breadcrumb library and service
- update authorizations
- add missing routes to avoid 404 links in breadcrumb
- add svg_helper globally in base controller
- update purgecss config to check .ts files

closes #17
parent ed6e9530
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ class FlatAuthorization extends \Myth\Auth\Authorization\FlatAuthorization
    }

    /**
     * Makes a member a part of multiple groups.
     * Makes user part of given groups.
     *
     * @param $userId
     * @param array|null $groups // Either collection of ID or names
+16 −9
Original line number Diff line number Diff line
@@ -77,11 +77,11 @@ $routes->group(
        $routes->get('podcasts', 'Podcast::list', [
            'as' => 'podcast_list',
        ]);
        $routes->get('new-podcast', 'Podcast::create', [
        $routes->get('podcasts/new', 'Podcast::create', [
            'as' => 'podcast_create',
            'filter' => 'permission:podcasts-create',
        ]);
        $routes->post('new-podcast', 'Podcast::attemptCreate', [
        $routes->post('podcasts/new', 'Podcast::attemptCreate', [
            'filter' => 'permission:podcasts-create',
        ]);

@@ -108,19 +108,19 @@ $routes->group(
                'as' => 'episode_list',
                'filter' => 'permission:podcasts-view,podcast-view',
            ]);
            $routes->get('new-episode', 'Episode::create/$1', [
            $routes->get('episodes/new', 'Episode::create/$1', [
                'as' => 'episode_create',
                'filter' =>
                    'permission:episodes-create,podcast_episodes-create',
            ]);
            $routes->post('new-episode', 'Episode::attemptCreate/$1', [
            $routes->post('episodes/new', 'Episode::attemptCreate/$1', [
                'filter' =>
                    'permission:episodes-create,podcast_episodes-create',
            ]);

            $routes->get('episodes/(:num)', 'Episode::view/$1/$2', [
                'as' => 'episode_view',
                'filter' => 'permission:episodes-list,podcast_episodes-list',
                'filter' => 'permission:episodes-view,podcast_episodes-view',
            ]);
            $routes->get('episodes/(:num)/edit', 'Episode::edit/$1/$2', [
                'as' => 'episode_edit',
@@ -146,15 +146,18 @@ $routes->group(
                'filter' =>
                    'permission:podcasts-manage_contributors,podcast-manage_contributors',
            ]);
            $routes->get('add-contributor', 'Contributor::add/$1', [
            $routes->get('contributors/add', 'Contributor::add/$1', [
                'as' => 'contributor_add',
                'filter' =>
                    'permission:podcasts-manage_contributors,podcast-manage_contributors',
            ]);
            $routes->post('add-contributor', 'Contributor::attemptAdd/$1', [
            $routes->post('contributors/add', 'Contributor::attemptAdd/$1', [
                'filter' =>
                    'permission:podcasts-manage_contributors,podcast-manage_contributors',
            ]);
            $routes->get('contributors/(:num)', 'Contributor::view/$1/$2', [
                'as' => 'contributor_view',
            ]);
            $routes->get(
                'contributors/(:num)/edit',
                'Contributor::edit/$1/$2',
@@ -188,11 +191,15 @@ $routes->group(
            'as' => 'user_list',
            'filter' => 'permission:users-list',
        ]);
        $routes->get('new-user', 'User::create', [
        $routes->get('users/new', 'User::create', [
            'as' => 'user_create',
            'filter' => 'permission:users-create',
        ]);
        $routes->post('new-user', 'User::attemptCreate', [
        $routes->get('users/(:num)', 'User::view/$1', [
            'as' => 'user_view',
            'filter' => 'permission:users-view',
        ]);
        $routes->post('users/new', 'User::attemptCreate', [
            'filter' => 'permission:users-create',
        ]);
        $routes->get('users/(:num)/edit', 'User::edit/$1', [
+10 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ use CodeIgniter\Model;
use App\Authorization\FlatAuthorization;
use App\Authorization\PermissionModel;
use App\Authorization\GroupModel;
use App\Libraries\Breadcrumb;
use App\Models\UserModel;
use Myth\Auth\Models\LoginModel;

@@ -91,4 +92,13 @@ class Services extends CoreServices

        return $instance->setUserModel($userModel);
    }

    public static function breadcrumb(bool $getShared = true)
    {
        if ($getShared) {
            return self::getSharedInstance('breadcrumb');
        }

        return new Breadcrumb();
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ class BaseController extends Controller
     *
     * @var array
     */
    protected $helpers = ['auth'];
    protected $helpers = ['auth', 'breadcrumb', 'svg'];

    /**
     * Constructor.
+25 −3
Original line number Diff line number Diff line
@@ -41,7 +41,24 @@ class Contributor extends BaseController
            'podcast' => $this->podcast,
        ];

        echo view('admin/contributor/list', $data);
        replace_breadcrumb_params([0 => $this->podcast->title]);
        return view('admin/contributor/list', $data);
    }

    public function view()
    {
        $data = [
            'contributor' => (new UserModel())->getPodcastContributor(
                $this->user->id,
                $this->podcast->id
            ),
        ];

        replace_breadcrumb_params([
            0 => $this->podcast->title,
            1 => $this->user->username,
        ]);
        return view('admin/contributor/view', $data);
    }

    public function add()
@@ -52,7 +69,8 @@ class Contributor extends BaseController
            'roles' => (new GroupModel())->getContributorRoles(),
        ];

        echo view('admin/contributor/add', $data);
        replace_breadcrumb_params([0 => $this->podcast->title]);
        return view('admin/contributor/add', $data);
    }

    public function attemptAdd()
@@ -87,7 +105,11 @@ class Contributor extends BaseController
            'roles' => (new GroupModel())->getContributorRoles(),
        ];

        echo view('admin/contributor/edit', $data);
        replace_breadcrumb_params([
            0 => $this->podcast->title,
            1 => $this->user->username,
        ]);
        return view('admin/contributor/edit', $data);
    }

    public function attemptEdit()
Loading