clarity-tech / cms
:package_description
Requires
Requires (Dev)
- filament/filament: ^3.2
- orchestra/testbench: ^9.2
- phpunit/phpunit: ^11.2
README
Installation
To install and use the package in your laravel project, follow the steps below:
-
In your project's
composer.jsonadd the following code:"repositories": [ { "type": "vcs", "url": "https://github.com/clarity-tech/cms-base" } ]
-
Require the package via Composer:
composer require clarity-tech/cms
-
Run the migrations:
php artisan migrate
Configuration
Publishing
If you wish to publish config, migrations etc.
-
Publish the package configuration:
php artisan vendor:publish --provider="ClarityTech\Cms\CmsServiceProvider" --tag="cms.config"
-
Publish the package migrations:
php artisan vendor:publish --provider="ClarityTech\Cms\CmsServiceProvider" --tag="cms.migrations"
Filament Admin Panel
If you wish to use filament admin panel, add the following codes in your project's admin panel provider:
use ClarityTech\Cms\Filament\Admin\Resources\ContentResource; use ClarityTech\Cms\Filament\Admin\Resources\TaxonomyResource; use ClarityTech\Cms\Filament\Admin\Resources\CommentResource; // $panel ->resources([ ContentResource::class, TaxonomyResource::class, CommentResource::class ])
Config file
You can change the cms.php file in config directory:
middlewares: Add middlewares as per your need.features: Enable or disable features - API and Filament admin panel.routes: Customize route path by modifying prefix.models: You can have your own models and use those.actions: You can add your own actions as well.taxonomy_types: You decide what taxonomy types you want to have.
Usage
Basic Usage
Creating Content
To create a new piece of content programmatically:
use ClarityTech\Cms\Contracts\CreatesContents; use ClarityTech\Cms\DataTransferObjects\ContentData; $data = new ContentData([ 'title' => 'Sample Title', 'slug' => 'sample-slug', 'excerpt' => 'Sample Excerpt', 'content' => 'Sample Content', 'meta_tags' => ['tag1', 'tag2'], 'custom_properties' => ['key' => 'value'], 'order_column' => 1, 'type' => 'article', 'layout' => 'single', 'created_by' => 1, 'updated_by' => null, 'deleted_by' => null, 'published_at' => now(), ]); app(CreatesContents::class)->create($data);
Updating Content
use ClarityTech\Cms\Contracts\UpdatesContents; use ClarityTech\Cms\DataTransferObjects\ContentData; $data = new ContentData([ 'title' => 'Sample Title Updated', 'slug' => 'sample-slug-updated', 'excerpt' => 'Sample Excerpt', 'content' => 'Sample Content', 'meta_tags' => ['tag1', 'tag2'], 'custom_properties' => ['key' => 'value'], 'order_column' => 1, 'type' => 'article', 'layout' => 'single', 'updated_by' => 1, 'deleted_by' => null, 'published_at' => now(), ]); app(UpdatesContents::class)->update($id, $data);
API Usage
The package provides RESTful API endpoint for getting contents.
-
List all contents
GET /api/cms/contents -
List specific content
GET /api/cms/contents/{slug}
The package provides RESTful API endpoints for comments.
-
Create a new comment
POST /api/cms/contents/sample-title/commentsBody:
{ "user_id": 1, "comment": "This is a test comment", "commentable_type": "ClarityTech\\Cms\\Models\\Content", "commentable_id": 1, "ip": "192.168.1.1", "is_approved": 1 }Success response:
201 Created
{ "user_id": 1, "comment": "This is a test comment", "commentable_type": "ClarityTech\\Cms\\Models\\Content", "commentable_id": 1, "ip": "192.168.1.1", "is_approved": true, "updated_at": "2024-08-22T12:44:03.000000Z", "created_at": "2024-08-22T12:44:03.000000Z", "id": 3 } -
List all comments for a specific content
GET /api/cms/contents/{slug}/commentsSuccess response:
200 Ok
{ "data": [ { "id": 1, "user_id": 1, "ip": null, "is_approved": true, "comment": "This is a test comment", "created_at": "2024-08-20T18:31:57.000000Z", "updated_at": "2024-08-21T20:14:04.000000Z", "deleted_at": null }, { "id": 2, "user_id": 1, "ip": null, "is_approved": false, "comment": "Nice comment", "created_at": "2024-08-20T18:31:57.000000Z", "updated_at": "2024-08-21T20:20:03.000000Z", "deleted_at": null } ] } -
Get a specific comment
GET /api/cms/comments/{id}Success response:
200 Ok
{ "data": { "id": 1, "user_id": 1, "ip": null, "is_approved": true, "comment": "This is a test comment", "created_at": "2024-08-20T18:31:57.000000Z", "updated_at": "2024-08-21T20:14:04.000000Z", "deleted_at": null } } -
Update a specific comment
PUT /api/cms/comments/{slug}Body:
{ "comment": "Updated comment" }Success response:
202 Accepted
{ "id": 1, "user_id": 1, "ip": null, "is_approved": true, "comment": "Updated comment", "commentable_type": "ClarityTech\\Cms\\Models\\Content", "commentable_id": 1, "created_at": "2024-08-20T18:31:57.000000Z", "updated_at": "2024-08-22T13:31:51.000000Z", "deleted_at": null } -
Delete a specific comment
DELETE /api/cms/comments/{slug}Success response:
204 No Content
Admin Panel Usage
If you have Filament installed, you can access and manage your contents, taxonomies etc through the Filament interface.
Just go to /admin.
Change log
Please see the changelog for more information on what has changed recently.
Testing
composer test
Contributing
Please see contributing.md for details and a todolist.
Security
If you discover any security related issues, please email author@email.com instead of using the issue tracker.
Credits
License
MIT. Please see the license file for more information.