PHP code example of codeartlv / joona

1. Go to this page and download the library: Download codeartlv/joona library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

codeartlv / joona example snippets




namespace App\Providers;

use Codeart\Joona\MetaData\Locale;
use Codeart\Joona\MetaData\Page;
use Codeart\Joona\Panel;
use Codeart\Joona\Providers\JoonaPanelProvider;

class JoonaServiceProvider extends JoonaPanelProvider
{
    protected function configure(Panel $panel): void
    {
        $panel
            ->setBasePath('/admin') // optional, default is /admin
            ->setLocales([
                new Locale('English', 'en', 'us'),
            ])
            ->addViteResources([
                'resources/scss/admin.scss',
                'resources/js/admin.js',
            ])
            ->addPages([
                Page::make('blog')
                    ->route('blog.index')
                    ->caption('Blog')
                    ->icon('article'),
            ]);
    }
}

use Codeart\Joona\MetaData\Page;

Page::make('settings.blog')   // nested ID: settings → blog
    ->route('blog.index')
    ->caption('Blog posts')
    ->icon('article')
    ->badge(3)                // int or callable
    ->activeRoutes(['blog.edit', 'blog.create']);

use Codeart\Joona\MetaData\Locale;

new Locale('Latviešu', 'lv', 'lv'); // caption, locale code, flag file key

$panel->addRoutes('secure', function () {
    Route::get('/blog', [BlogController::class, 'index'])->name('blog.index');
});

$panel->addRoutes('free', function () {
    Route::get('/public-report', [ReportController::class, 'show'])->name('report.public');
});

$panel->addRoutes('secure', base_path('routes/admin.php'));

Route::middleware(['admin.web'])->group(function () {
    // Guest-accessible admin routes (theme, locale, etc.)

    Route::middleware(['admin.auth'])->group(function () {
        // Authenticated admin routes
    });
});

use Codeart\Joona\View\Components\Form\FormResponse;

$form = new FormResponse();

$form->setSuccess('Data saved!');
$form->setError('Value set', true);
$form->addData('id', 1);

return response()->json($form);

use Codeart\Joona\Auth\Permissions\PermissionGroup;
use Codeart\Joona\Auth\Permissions\RoutePermission;

$panel->addPermissions([
    PermissionGroup::make('Blog', [
        new RoutePermission(
            id: 'blog_edit',
            routes: ['blog.edit', 'blog.save'],
            label: 'Edit blog posts',
        ),
    ]),
]);
bash
php artisan joona:publish
bash
php artisan migrate
php artisan joona:seed
blade
<x-multiselect
    name="tags[]"
    label="Tags"
    type="checkbox"
    :options="$options"
/>
blade
<x-gallery
    name="images"
    :items="$items"
    :sortable="true"
/>
blade
<x-text-editor name="summary" label="Summary" :value="$html" />

config/              joona.php, auth guard merge
database/migrations/ Admin users, roles, permissions, logs, notifications
export/              Published JoonaServiceProvider stub
resources/
  assets/            SCSS, JS, npm package (Bootstrap, Chart.js, Editor.js, …)
  views/             Layouts and Blade components
routes/              web.php (guest), secure.php (authenticated)
src/                 PHP: Panel, HTTP, Auth, View components, Commands