An open API service indexing awesome lists of open source software.

https://github.com/shunnmugam/laravel-admin

Laravel Admin panel with theme , modules ,artisan commands and helper classess.Laravel admin boilerplate with theme and modules
https://github.com/shunnmugam/laravel-admin

admin-dashboard administration-interface administration-panel administrator artisan-command change-theme cms laravel laravel-admin-panel laravel-command laravel-framework laravel-theme-maker laravel-themes module modules modules-with-theme php-artisan theme theme-folder themes

Last synced: about 1 year ago
JSON representation

Laravel Admin panel with theme , modules ,artisan commands and helper classess.Laravel admin boilerplate with theme and modules

Awesome Lists containing this project

README

          

# Content Management System using laravel framework

## Features:

1. Cms
2. Admin interface
3. Module based app
4. Theme based
5. Plugins
6. Roles and Permissions
7. Menu creation
8. User Management
9. Page Creation
10. Mail configurations
11. Site Configuration,etc

## Version

| Laravel Version | Version |
| --------------- | ---------- |
| 5.4 | 1.0 to 2.0 |
| 5.5 | >=2.1 |
| 5.6 | >=2.1 |
| 5.7 | >=2.1 |
| 5.8 | >=2.2 |
| 6 | >=2.3 |
| 7 | >=2.3 |
| 8 | >=2.4 |

## Change Logs

### Version v2.4

1. Data table version update
2. Seed command bug fix

### Version v2.2

1. Data table version update
2. Bug fix

### Version v2.1.1

1. CRUD Module added
easy crud module with single command

- ##### `php artisan make:cms-module {module-name} {--crud}`
eg:
```bash
php artisan make:cms-module test --crud
```

2. CRUD view
create crud views using artisan command

- ##### `php artisan make:cms-crudviews`

it will create 2 file inside resources/views/admin

`index.blade.php`
`edit.blade.php`

## Install:

```bash
composer require phpworkers/cms
```

## Requiremments:

1. Laravel 5.4 or later
2. laravelcollective/html: ~5.0
3. yajra/laravel-datatables-oracle: ~9.0
4. unisharp/laravel-filemanager: ^1.8

## After Install:

```php
// Add following Lines to `config/app.php` providers array
//html
Collective\Html\HtmlServiceProvider::class,
//datatable
Yajra\DataTables\DatatablesServiceProvider::class,
Ramesh\Cms\CmsServiceProvider::class,

// Add Following Lines to `config/app.php` aliases array
'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,
'Cms' => Ramesh\Cms\Facades\Cms::class,
```

##### Then Run Following commands

```sh
# Publishing css,js,config files,core modules,theme,etc
php artisan vendor:publish

# Publishing filemanager resources
php artisan vendor:publish --provider="UniSharp\LaravelFilemanager\LaravelFilemanagerServiceProvider"

composer dump-autoload

# Migrate our tables
php artisan cms-migrate

# Seeding
php artisan db:cms-seed

#register modules to table
php artisan update:cms-module

#register plugins
php artisan update:cms-plugins

#regiser menus
php artisan update:cms-menu
```

Open your `route/web.php` and remove rollowing lines(route)

```php
Route::get('/', function () {
return view('welcome');
});
```

then run

```sh
php artisan serve
```

and open [localhost:8000/administrator](localhost:8000/administrator)

##### Username : admin

##### Password : admin123

## Documents

- Folder Structure
- Theme
- What is Module?
- Core
- Local
- List of core modules
- Create Own module
- Artisian Commands
- Skin
- Helper
- Core Helper functions
- Plugins

### Folder Structure

#### Main path

```tree
cms (main)
|
|__core
| |
| |__core modules
|
|__local
|
|__themes
|
|__local modules

1.cms : cms path is the main path of our app,that contain

1.1 : core
1.2 : local

1.1 : core : core path is core module path ,that contain number of core modules,avoid to write core modules

1.1.1 : core modules -> core path contain number of core modules

1.2 : local : local path contain theme,we can create multiple theme

1.2.1 : local modules -> theme path contain number of local module(user create module)
```

#### Skin path

```tree
public
public (main)
|
|_skin
|
|__theme name
|
|__css,js,vendor,fonts,etc

1 : public ->public folder is default folder in laravel

1.1 : skin -> skin folder is our assets folder

1.1.1 : theme name -> folder name is theme name , that contain css, fonts ,js,etc
```

### Theme

Theme is main part of our package,we can create multiple theme,our package is theme and moduler based,all theme is placed on cms->local folder

Default theme is **theme1**

#### Create Theme

Just create new folder inside of cms->local

#### Change theme

If you want to change theme?its very easy

Go to adminpanel->site configuration->change theme

### Modules

Module is is a mechanism to group controller, views, modules, etc that are related, otherword module is pice of code or package of laravel

### Core

core is folder,that contain core modules **(pre-defind)** Module

> Note: Don't change any code of core module's

### Local

local folder contain local module,which is created by user

### Create own module

**php artisan make:cms-module {module-name}**

eg :

```bash
php artisan make:cms-module helloworld
```


helloworld module is created under current theme folder


then register our module to database for feature use


php artisan update:cms-module

Where is the entry point (provider) of the module?

open provider folder under cms/local/{module}

that provider is same as laravel provider so boot and register method is important and additionaly we have some functions



  1. registerRoot -> registerRoot method is used to registreing our custom module routes


  2. registerAdminRoot -> registerAdminRoot method is used to registering our custom module admin routes


  3. registerViews -> registerViews method is used to registering our custom module views


if you want to enable this method,just uncommands calls inside register method of your provider
thats all :) ,lets see files in modules,


  1. module.json ->file

  2. composer.json ->file

  3. menu.xml -> file

  4. routes.php -> file

  5. adminroutes -> file

  6. Controller -> folder

  7. Database ->folder

  8. Models -> folder

  9. config -> folder

  10. resourcesc-> folder

  11. Events -> folder

  12. Listeners -> folder

  13. Mail -> folder

  14. Middleware -> folder

  15. helpers ->folder

#### module.json

```json
{
"name": "helloworld",
"version": "0.0.1",
"type": "local",
"providers": ["Providers\\HelloworldServiceProvider"]
}
```




Parameter


Data type


Use


is optional?






name


string


name of the module


NO




version


string


version of the module


NO




type


string (core/local)


type of the module


NO




providers


Array


Provider of this module,provider is register point of our module


NO




plugins


string (relative path of plugin)


plugin path,that used to defind plugin


YES




helpers


object (relative path of helpers)


helpers path,that used to defind helpers,helpers contain common functions,we can use any where


eg:


"helpers" : {
"HelperName1":"cms\\core\\blog\\helpers\\Blog",
"HelperName2":"some path",
....
}



YES




search


object (relative path of search class)


search path,that used to defind search helper,search class functions, this is used to make our module is searchable


eg:


"helpers" : {
"HelperName1":"cms\\core\\blog\\helpers\\Blog",
"HelperName2":"some path",
....
}



YES



configuration
string (view file path of configuration)
configuration is used to view or edit module configuration
eg:


"configuration" : "user::admin.configuration.configuration",



Above example is taken from user module,that mean user configuration is place on cms/core/user/admin/configuration/configuraion.blade.php


YES



configuration_data
string (configuration data function path)
configuration data is get module configuration from function,its define function name,this function should return module configuration

eg:


"configuration_data" : "\\cms\\core\\user\\Controllers\\UserController@getConfigurationData"



Above example is taken from user module,

that mean user configuration function is place on cms/core/user/controller/UserController.php and function name is getConfigurationData



/*

* configurations option

*/

public function getConfigurationData()

{

$group = UserGroupModel::where('status',1)->where('id','!=',1)->orderBy('group','Asc')->pluck("group","id");

return ['user_group'=>$group];

}




Above function return available user groups


YES


composer.json



{
"name": "cms/user",
"description": "",
"authors": [
{
"name": "Ramesh",
"email": "shunramit@gmail.com"
}
],
"autoload": {
"psr-4": {
}
}
}


composer.json file is contain detail about module and author and that contain autoload


just leave it this one, we will add autoload feature in later


menu.xml


menu.xml is used for add menu and menu group in adminpanel like joomla menu



< ?xml version="1.0" encoding="utf-8"? >
<menus>
<group name="General" order="0">
<menugroup name="Users" icon="fa fa-user" order="0">
<menu name="View Users" route="user.index" />
<menu name="Add User" route="user.create" />
</menugroup>
</group>
</menus>




Tag


Use


Parent


Attributes






<menus>


menus tag is main tag of the menu.xml,that is bootstarp of menu.xml


NULL


NULL




<group>


group tag is defind menu type,default type is general,you can create own group using name attribute


<menus>



  • name

    name attribute is defind name of the menu type

    name is mandtory attribute


  • order

    order attribute defind order of the menutype






<menugroup>


menugroup tag is defind menu group for example user module menus is placed under user menugroup
Menugroup is optional


<menus>



  • name

    name attribute is defind name of the menu group

    name is mandtory attribute


  • order

    order attribute defind order of the menu group






<menu>


menu tag is used to give a link otherword its just clickable link


<menus> OR <menugroup>



  • name

    name attribute is defind name of the menu group

    name is mandtory attribute

  • icon

    icon attribute is used to add font awsome icon


  • route

    route attribute is accept named route

    if you want add url?just use is_url attribute

    eg :


    <menu name="Module Configurations" route="/administrator/configurations/module/1" is_url="1"/>



  • is_url

    is_url attribute is used to identify given menu route is url or named route,if is_url="1" means given route is url otherwise given route is named roue


  • order

    order attribute defind order of the menu group





routes.php


routes.php file contain routes of the frontend app exclude admin routes

don't have routes.php?,just create it.. :)

if you don't like file name?

we have good solution for you

go to your module main provider and find registerRoot function then change it


adminroutes.php



adminroutes.php file contain routes of the admin

this file is include admin middlewares and admin route group with administrator prefix

if you dont want admin middleware of current module

go to your module provider and find registerAdminRoot method and remove middleware


Folders of the modules




Name


Use


Sub-folders






Controller


controller folder contain controllers


-




Database


Database folder contain migrations and seeds


Migration -> that contain migrations
Seeds -> that contain seeds



Models
Models folder contain Models class
-


helpers
helpers folder contain helpers class
-


providers
providers folder contain providers class
-


resources
resources folder contain assets and views
views,assets


Mail
Mail folder contain Mail class
-


Events
Events folder contain Events class
-


Listeners
Listeners folder contain Listeners class
-


Middleware
Middleware folder contain Middleware class
-


Console
Console folder contain artisan comands
Commands


config
config folder contain config array like roles (deprecated) and mailer configurations
-

Artisian Commands


we provide more artisan commands


imagin we have more than 30 artisan commands,its not remebarable,but you know default laravel commands so we have some idea,we added one common word for all laravel commands,thats it,now easily you can remember our commands


eg:

default command for creating laravel controller is

php artisan make:controller {controller-name}


our comand is

php artisan make:cms-controller {controller-name} {module-name}


deafult migrate command is

php artisan migrate
our migrate command is

php artisan cms-migrate

and one more we have our own commands,its not high count,but very usefull

List of our commands




  1. php artisan make:cms-module {module-name}


    this is used to make new module


  2. php artisan update:cms-menu

    this command is used to update or register menus


create new artisan commands for your module


if you want create new comand

php artisan make:cms-command {command-name} {module-name}


file is created under console/commands folder inside of your module


how to enable own commands?




open your module provider then create commands array

eg :



/*
* artisan command
*/
protected $commands = [
'cms\core\{module-name}\Console\Commands\{Commandclass}'
];

please replace module-name and commandclass like

/*
* artisan command
*/
protected $commands = [
'cms\core\menu\Console\Commands\AdminMenu'
];



then create method


/*
* register commands
*/
protected function registerCommand()
{
$this->commands($this->commands);
}

then add following line to register method

$this->registerCommand();

eg:

public function register()
{
$this->registerViews();
$this->registerRoot();
$this->registerAdminRoot();
$this->registerCommand();
}

What is next?


now i am working on moving this package to react,V3.O will release soon