LaravelPackages.net
Acme Inc.
Toggle sidebar
jinoantony/laravel-kanban

Kanban boards for laravel

1.648
22
v1.0.1
About jinoantony/laravel-kanban

jinoantony/laravel-kanban is a Laravel package for kanban boards for laravel. It currently has 22 GitHub stars and 1.648 downloads on Packagist (latest version v1.0.1). Install it with composer require jinoantony/laravel-kanban. Discover more Laravel packages by jinoantony or browse all Laravel packages to compare alternatives.

Last updated

Laravel Kanban

A laravel wrapper for the jkanban library.

Installation

You can install this package using composer.

composer require jinoantony/laravel-kanban

This package supports package auto-discovery, so you don't have to register it manually. If you want to manually register the provider, add the following line to config/app.php file.

JinoAntony\Kanban\LaravelKanbanServiceProvider::class,

Usage

This package uses jkanban library under the hood. So don't forget to include jkanban.min.js and jkanban.min.css in your view files.

Create kanban boards

You can use the artisan command to generate kanban boards.

php artisan kanban:make TaskKanban

This will create a new file TaskKanban in the app/Kanban directory.

By default the structure for the kanban board is like this.

class TaskKanban extends Kanban
{
    /**
     * Get the list of boards
     *
     * @return KBoard[]
     */
    public function getBoards()
    {
        return [
            KBoard::make('board1')
                ->setTitle('Board1 title')
                ->canDragTo('board2'),

            KBoard::make('board2')
                ->setTitle('Board2 title')
                ->canDragTo('board3'),

            KBoard::make('board3')
                ->setTitle('Board3 title')
                ->canDragTo('board2')
                ->canDragTo('board1'),
        ];
    }

    /**
     * Get the data for each board
     *
     * @return array
     */
    public function data()
    {
        return [
            'board1' => [
                KItem::make('1')
                    ->setContent('Item1'),
                KItem::make('2')
                    ->setContent('Item2'),
            ],
            'board2' => [
                KItem::make('3')
                    ->setContent('Item3'),
                KItem::make('4')
                    ->setContent('Item4'),
            ],
            'board3' => [
                KItem::make('5')
                    ->setContent('Item5'),
                KItem::make('6')
                    ->setContent('Item6'),
            ],
        ];
    }

    public function build()
    {
        return $this->element('.kanban-board')
            ->margin('20px')
            ->width('365px');
    }

}

Create a view to render the board.

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Kanban</title>
    <link rel="stylesheet" href="{{ asset('css/jkanban.min.css') }}" />
</head>
<body>
    <div class="kanban-board"></div>
    
    <script src="{{ asset('js/jkanban.min.js') }}"></script>
    {!! $kanban->scripts() !!}
</body>
</html>

Then in your controller,

use App\Kanban\TaskKanban;

class TaskController extends Controller
{
    public function get(TaskKanban $kanban)
    {
        return $kanban->render('kanban');
    }
}

Now add a route in web.php.

Route::get('task', 'TaskController@get');

Star History Chart