jasminecms/jasmine

基于Laravel的CMS。

安装次数: 5,934

依赖项: 4

建议者: 0

安全: 0

星标: 4

关注者: 2

分支: 2

公开问题: 4

语言:JavaScript

2.13.16 2024-09-04 05:57 UTC

README

受Voyager启发的基于Laravel的CMS。

屏幕截图

登录 登录

Bread索引 登录

Bread编辑 登录

注意

Jasmine使用alexusmai/laravel-file-manager
如果你已经在使用它或者计划使用它,
你可能需要调整一些配置以避免冲突。

安装

在你的新Laravel应用或现有应用中引入JasmineCMS
composer require jasminecms/jasmine

将jasmine公共资源链接到你的公共文件夹
php artisan jasmine:link-public-assets

迁移数据库(确保在迁移之前对默认的Laravel迁移进行任何更改)
php artisan migrate

创建用户(第一个用户是超级管理员)
php artisan jasmine:create-user

将Jasmine路由添加到你的routes/web.php路由文件(你可以将前缀更改为你喜欢的任何内容)

Route::prefix('jasmine')->group(fn() => Jasmine::routes());

将Jasmine API路由添加到你的routes/api.php路由文件(你可以将前缀更改为你喜欢的任何内容)

Route::prefix('jasmine')->group(fn() => Jasmine::apiRoutes());

你现在可以登录Jasmine了,
导航到/jasmine
然后登录

你可以在你的AppServiceProvider中注册Jasmine资源

本地化

Jasmine支持多语言资源,定义你的内容语言如下

Jasmine::registerLocales(['en', 'he']);
Breadables

Breadables可以是任何模型
运行php artisan make:jasmine-model Post来创建Jasmine模型

在你的模型中实现
Jasmine\Jasmine\Bread\BreadableInterface
使用trait Jasmine\Jasmine\Bread\Breadable
如果模型有多语言列,也使用trait
Jasmine\Jasmine\Bread\Translatable;
实现缺失的方法

然后在AppServiceProvider中注册你的模型

Jasmine::registerBreadable(\App\Models\MyModel::class);
页面

页面与模型非常相似,但作为单个实体而不是表来功能
运行php artisan make:jasmine-model Post来创建Jasmine模型

AppServiceProvider中注册你的页面

Jasmine::registerPage(\App\Pages\Home::class);
接口本地化

你可以将Jasmine界面翻译成任何语言,如下所示

Jasmine::registerInterfaceLocale('he', 'path/to/locale.json');

send参数将接受一个指向你的json文件的路径或一个翻译数组
你可以复制/resources/front-lang/he.json快速开始。

自定义资源

如果你出于某种原因想要加载自定义的javascript或css,你可以这样做

Jasmine::registerCustomStyle('/path/to/style.css');
Jasmine::registerCustomJs('/path/to/app.js');
权限

待办事项

侧边栏菜单项

你可以这样向侧边栏菜单添加项

// internal
\Jasmine::registerSideBarMenuItem('settings', fn() => [
    'title'    => __('Settings'),
    'icon'   => 'bi-link-45deg text-danger',
    'href'     => route('jasmine.my.route', 'my-param-value'),
    'is-route' => ['r' => 'jasmine.my.route', 'p' => ['my-param' => 'my-param-value']],
], 70);

// external
\Jasmine::registerSideBarMenuItem('site-triple', fn() => [
    'href'   => 'https://triple.co.il',
    'title'  => 'Triple',
    'icon'   => 'bi-link-45deg text-danger',
    'target' => '_blank',
], 100);

待办事项:registerSideBarSubMenuItem

Oauth2 SSO

你可以注册oauth2提供商以启用Jasmine的SSO登录

Facebook示例

Jasmine::registerOauth2Sso(
    'Facebook', //name
    'https://#/images/fb_icon_325x325.png', //icon
    '{client_id}',
    '{client_secret}',
    'https://#/v3.3/dialog/oauth',
    'https://graph.facebook.com/v3.3/oauth/access_token',
    ['email'],
    false, // accepts boolean or callback
    function ($token) {
        $token = json_decode($token, true);
        
        $res = Http::asJson()->get('https://graph.facebook.com/v3.3/me', [
            'access_token' => $token['access_token'],
            'fields'       => 'name,email',
        ]);
        
        return [
            'name'  => $res->json('name'),
            'email' => $res->json('email'),
        ];
    },
);