cogroup / cms
CMS for all laravel projects
Requires
- php: >=7.2
- intervention/image: >=2.5.1
- laravel/socialite: >=5.0
- laravel/ui: >=3.0
- thedoctor0/laravel-mailjet-driver: >=1.0
Requires (Dev)
- laravel/framework: 8.x
- 3.1.x-dev
- 3.0.x-dev
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- dev-master / 2.x-dev
- 2.0.x-dev
- v2.0.5
- 1.8.x-dev
- v1.8.13
- 1.7.x-dev
- v1.7.2
- 1.6.x-dev
- v1.6.0
- dev-dependabot/npm_and_yarn/minimist-1.2.8
- dev-dependabot/npm_and_yarn/jszip-3.8.0
- dev-dependabot/npm_and_yarn/json5-1.0.2
- dev-dependabot/npm_and_yarn/express-4.18.2
- dev-dependabot/npm_and_yarn/qs-and-express-6.11.0
- dev-dependabot/npm_and_yarn/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/terser-4.8.1
- dev-dependabot/npm_and_yarn/moment-2.29.4
- dev-dependabot/npm_and_yarn/async-2.6.4
- dev-dependabot/npm_and_yarn/follow-redirects-1.14.8
This package is auto-updated.
Last update: 2024-11-04 06:02:52 UTC
README
Important:
To avoid incompatibilities, it is necessary to remove popper, jquery and bootstrap from webpack; our library already includes the most recent ones.
Comment all require files in:
resources/js/bootstrap.js
Cms
For Laravel < 5.7, please use the 1.6 branch!
For Laravel <= 6, please use the 1.8 branch!
For Laravel 7, please use the 2.0 branch!
For Laravel 8, please use the 3.0 branch!
COgroup - CMS package is a flexible way to add basic CMS system with Role-based Permissions to Laravel.
Contents
Installation
- Run the command to install laravel/ui and generate scaffolding
composer require laravel/ui php artisan ui bootstrap --auth
- In order to install COgroup - CMS, just add the following to your composer.json. Then run
composer update
:
"cogroup/cms": "^3.0"
or run the next command:
composer require cogroup/cms "3.*"
- fixed Auth::routes, to avoid Clouser error
Remove Auth::routes from web.php file
- Run the command below to publish the package config file
config/cogroupcms.php
:
php artisan vendor:publish --provider="Cogroup\Cms\CmsServiceProvider"
- Run the command below to execute migrations
php artisan migrate
- Run the command below to seed
php artisan db:seed --class=CogroupCmsSeeder
- Run the command below to re-publish assets, config, custom error views, font, migrations and translations
php artisan cogroupcms:assets php artisan cogroupcms:config php artisan cogroupcms:errorviews php artisan cogroupcms:fonts php artisan cogroupcms:migrations php artisan cogroupcms:seeders php artisan cogroupcms:translations
- Change default User model in
config/auth.php file
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => Cogroup\Cms\Models\User::class, ], // 'users' => [ // 'driver' => 'database', // 'table' => 'users', // ], ],
InterventionImage
After you have installed Intervention Image, open your Laravel config file config/app.php
and add the following lines.
In the $providers
array add the service providers for this package.
Intervention\Image\ImageServiceProvider::class
Add the facade of this package to the $aliases array.
'ImageManager' => Intervention\Image\Facades\Image::class
Now the Image Class will be auto-loaded by Laravel.
Publish configuration in Laravel 5
$ php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravelRecent"
Configuration
Set the property values in the config/cogroupcms.php
.
These values will be used by cogroup-cms to refer to the correct prefix, color theme and URI to CMS access.
User relation to roles
You may now run it with the artisan migrate command:
php artisan migrate
After the migration, seven new tables will be present:
files
— manage files into CMSmodules
— modules for CMSnoworkingdays
— dates for special days, and to be able to discount in a range of datesroles
— roles for CMSroles_access
— relations between roles and modules accesssettings
— CMS basic settings (sitename, emailname, etc.)user
— Table for users and specific rol user
Models
Files
The Files
model has eight main attributes:
originalname
— Original name of the file.diskname
— name of the file into system after upload.extension
— extension of the file.size
— size of the file.mimetype
— Mime type of the file.alt
— Texto for label alt in HTML.width
— when is image, a width attribute.height
— when is image, a height attribute.ispublic
— determines whether a file is public or not.created_at
— determines the creation date.updated_at
— determine the update date.
Modules
The Modules
model has ten main attributes:
moduleslug
— Slug name for the module, to verify permissions.modulename
— Module name to show.description
— A more detailed explanation of what the Module does.active
— module is active or not.url
— url to acces the module. The url should not have the domain.icon
— font icon of the module.parent
— When is a submodule, id of the parent module. When is a father module is 0.order
— order to show module in the menu.inmenu
— determines if the module is show in the main menu.permissions
— Determine what permissions the module needs. They must be separated by commas. Example: "view, create".
NoWorkingDays
The NoWorkingDays
model has two main attributes:
date
— special day date.active
— determines whether a date is active or not.created_at
— determines the creation date.updated_at
— determine the update date.
Roles
The Role
model has two main attributes:
rolname
— Unique name for the Role, used for looking up role information in the application layer. For example: "admin", "owner", "employee".description
— A more detailed explanation of what the Role does.created_at
— determines the creation date.updated_at
— determine the update date.
RolesAccess
The RolesAccess
model has six main attributes:
roles_id
— Unique key for the Role, used for relation to table roles.modules_id
— Unique key for the modules, used for relation to table modules.view
— Set the permission to see a module or submodule.create
— Set the permission to create content in a module or submodule.update
— Set the permission to update content in a module or submodule.delete
— Set the permission to delete content in a module or submodule.created_at
— determines the creation date.updated_at
— determine the update date.
Settings
The Settings
model has two main attributes:
setting
— Unique name for the setting.defaultvalue
— A value for the setting attribute.
User
This will enable the relation with Role
.
And you are ready to go.
Usage
Middleware
You can use a middleware to filter routes and route groups by permission or role
Route::group(['prefix' => 'settings', 'middleware' => ['admin:settings|view']], function() { Route::get('/', 'AdminController@welcome'); Route::post('/', ['middleware' => ['admin:settings|create,update'], 'uses' => 'AdminController@manageAdmins']); });
It is possible to use comma symbol to verify until two actions:
'middleware' => ['role:admin|create,update']
Helper Permission
You can use a helper to verify a permission
cms_roles_check($check, $moduleslug, $type);
check
is a Auth::user info or module id.moduleslug
is a slug of the module to check permission.type
is optional permission, by default it isview
.
Helpers
Cogroup - CMS includes a two "helper" PHP functions. These functions are used by the package itself; however, you are free to use them in your own applications if you find them convenient.
cms_get_modules
This function return a modules of the system, register into table modules
.
cms_get_modules($modulename, $inmenu, $idrol);
modulename
is optional parameter. If is NULL return all modules.inmenu
By default it isY
. The other option isN
.idrol
is optional parameter, by default it isNULL
. When present, it returns the modules associated with the role that have permissionview
cms_settings
This function return a object with settings values
cms_settings();
Example: cms_settings()->sitename
cms_format_date
This function return a Carbon format date with the dateformat setting format
cms_format_date($date);
date
is required parameter. The date format must be Y-m-d.
cms_format_time
This function return a Carbon format date with the timeformat setting format
cms_format_time($time);
time
is required parameter. The time format must be H:i:s.
cms_format_datetime
This function return a Carbon format date with the dateformat and timeformat setting format
cms_format_datetime($datetime);
datetime
is required parameter. The date format must be Y-m-d H:i:s.
cms_get_file_attribute
This function return a attribute FileModel
cms_get_file_attribute($id, $attribute);
id
is required parameter. Id into tableFiles
attribute
is required parameter. Column of the tableFiles
cms_get_total_unread_notifications
This function return a number of total unread notifications system
cms_get_file_attribute();
Dashboard
For change dashboard, change option dashboard into config/cogroupcms.php
file.
Add all namespace example: \App\Http\Controllers\MyDashboardController
Notifications Messages
config channels into config/cogroupcms.php via option
'via' => ['mail', 'database'],
If use a mail channel add use Cogroup\Cms\Notifications\NewMessage;
to your Controller.
For send message use Notification::send( $user, new NewMessage( $from, $message ) );
$user
is the user to send email. Object User$from
is the user from send email. Object User$message
is a data message
Notifications Javascript
This configuration to set a float message from Controller
Set 0 to error, 1 to success, 2 to info, 3 to warning
$request->session()->flash('status', '1');
Set a position (top, bottom)
$request->session()->flash('msgfrom', {position});
Set a align (left, center, right)
$request->session()->flash('msgfrom', {align});
Set delay time (default: 4000)
$request->session()->flash('msgtime', {time});
Set a message
$request->session()->flash('msg', {message});
License
COgroup CMS is free software distributed under the terms of the MIT license.
Contribution guidelines
Support follows PSR-4 PHP coding standards, and semantic versioning.
Please report any issue you find in the issues page. Pull requests are welcome.