Skip to content

Commit 240d6df

Browse files
committed
added component make console
1 parent 6b7ee85 commit 240d6df

File tree

6 files changed

+263
-1
lines changed

6 files changed

+263
-1
lines changed
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
<?php
2+
/**
3+
* Created by PhpStorm.
4+
* User: darryl
5+
* Date: 7/2/2015
6+
* Time: 7:43 PM
7+
*/
8+
9+
namespace Darryldecode\Backend\Base\Console;
10+
11+
use Illuminate\Console\Command;
12+
use Illuminate\Filesystem\Filesystem;
13+
14+
class ComponentMake extends Command {
15+
16+
/**
17+
* The name and signature of the console command.
18+
*
19+
* @var string
20+
*/
21+
protected $signature = 'backend:component-create';
22+
23+
/**
24+
* The console command description.
25+
*
26+
* @var string
27+
*/
28+
protected $description = 'Create a new backend custom component.';
29+
30+
/**
31+
* @var Filesystem
32+
*/
33+
protected $filesystem;
34+
35+
/**
36+
* Execute the console command.
37+
*
38+
* @param Filesystem $filesystem
39+
* @return mixed
40+
*/
41+
public function handle(Filesystem $filesystem)
42+
{
43+
$this->filesystem = $filesystem;
44+
$scaffoldsPath = __DIR__.'/../Etc/scaffolds/';
45+
46+
// component info
47+
$componentTitle = $this->ask('Enter component name');
48+
$componentDescription = $this->ask('Enter component description');
49+
$componentIcon = $this->ask('Enter component icon (ex. fa fa-home)');
50+
$componentNamespace = $this->formatToComponentNamespace($componentTitle);
51+
$componentUrl = $this->formatToComponentUrl($componentTitle);
52+
53+
$componentPath = app_path().'/Backend/Components/'.$componentNamespace;
54+
55+
if( $this->filesystem->isDirectory($componentPath) )
56+
{
57+
$this->error('Component already exist.');
58+
exit;
59+
}
60+
61+
// create necessary component directories
62+
$this->filesystem->makeDirectory($componentPath);
63+
$this->filesystem->makeDirectory($componentPath.'/Controllers');
64+
$this->filesystem->makeDirectory($componentPath.'/Views');
65+
66+
// process scaffolds
67+
$componentScaffold = $this->filesystem->get($scaffoldsPath.'Component');
68+
$controllerScaffold = $this->filesystem->get($scaffoldsPath.'Controller');
69+
$viewScaffold = $this->filesystem->get($scaffoldsPath.'view');
70+
$routesScaffold = $this->filesystem->get($scaffoldsPath.'routes');
71+
72+
$this->comment(PHP_EOL.'Creating component...'.PHP_EOL);
73+
74+
$componentScaffold = str_replace('{{componentNamespace}}',$componentNamespace,$componentScaffold);
75+
$componentScaffold = str_replace('{{componentTitle}}',$componentTitle,$componentScaffold);
76+
$componentScaffold = str_replace('{{componentDescription}}',$componentDescription,$componentScaffold);
77+
$componentScaffold = str_replace('{{componentIcon}}',$componentIcon,$componentScaffold);
78+
$componentScaffold = str_replace('{{componentUrl}}',$componentUrl,$componentScaffold);
79+
$this->filesystem->put($componentPath.'/Component.php',$componentScaffold);
80+
81+
$controllerScaffold = str_replace('{{componentNamespace}}',$componentNamespace,$controllerScaffold);
82+
$controllerScaffold = str_replace('{{componentTitle}}',$componentTitle,$controllerScaffold);
83+
$controllerScaffold = str_replace('{{componentDescription}}',$componentDescription,$controllerScaffold);
84+
$controllerScaffold = str_replace('{{componentIcon}}',$componentIcon,$controllerScaffold);
85+
$controllerScaffold = str_replace('{{componentUrl}}',$componentUrl,$controllerScaffold);
86+
$this->filesystem->put($componentPath.'/Controllers/'.$componentNamespace.'Controller.php',$controllerScaffold);
87+
88+
$viewScaffold = str_replace('{{componentNamespace}}',$componentNamespace,$viewScaffold);
89+
$viewScaffold = str_replace('{{componentTitle}}',$componentTitle,$viewScaffold);
90+
$viewScaffold = str_replace('{{componentDescription}}',$componentDescription,$viewScaffold);
91+
$viewScaffold = str_replace('{{componentIcon}}',$componentIcon,$viewScaffold);
92+
$viewScaffold = str_replace('{{componentUrl}}',$componentUrl,$viewScaffold);
93+
$this->filesystem->put($componentPath.'/Views/index.blade.php',$viewScaffold);
94+
95+
$routesScaffold = str_replace('{{componentNamespace}}',$componentNamespace,$routesScaffold);
96+
$routesScaffold = str_replace('{{componentTitle}}',$componentTitle,$routesScaffold);
97+
$routesScaffold = str_replace('{{componentDescription}}',$componentDescription,$routesScaffold);
98+
$routesScaffold = str_replace('{{componentIcon}}',$componentIcon,$routesScaffold);
99+
$routesScaffold = str_replace('{{componentUrl}}',$componentUrl,$routesScaffold);
100+
$this->filesystem->put($componentPath.'/routes.php',$routesScaffold);
101+
102+
$this->info(PHP_EOL.'Creating successfully created!'.PHP_EOL);
103+
}
104+
105+
/**
106+
* format any component name
107+
*
108+
* @param $componentTitle
109+
* @return mixed
110+
*/
111+
protected function formatToComponentNamespace($componentTitle)
112+
{
113+
$componentTitle = str_replace(['/','-'],' ',$componentTitle);
114+
115+
return str_replace(' ','',ucwords($componentTitle));
116+
}
117+
118+
/**
119+
* format to component url
120+
*
121+
* @param $componentTitle
122+
* @return mixed
123+
*/
124+
protected function formatToComponentUrl($componentTitle)
125+
{
126+
return str_replace(' ','-',strtolower($componentTitle));
127+
}
128+
}
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
<?php
2+
3+
namespace App\Backend\Components\{{componentNamespace}};
4+
5+
use Darryldecode\Backend\Base\Registrar\ComponentInterface;
6+
use Darryldecode\Backend\Base\Registrar\ComponentNavigation;
7+
use Darryldecode\Backend\Base\Registrar\ComponentNavigationCollection;
8+
9+
class Component implements ComponentInterface {
10+
11+
/**
12+
* returns the component info
13+
*
14+
* @return array
15+
*/
16+
public function getComponentInfo()
17+
{
18+
return array(
19+
'name' => '{{componentTitle}}',
20+
'description' => '{{componentDescription}}',
21+
);
22+
}
23+
24+
/**
25+
* returns the available permissions of the component
26+
*
27+
* @return array
28+
*/
29+
public function getAvailablePermissions()
30+
{
31+
32+
// below are sample permissions, you can change them to fit your needs
33+
34+
$availablePermissions = array(
35+
36+
array(
37+
'title' => 'Manage {{componentTitle}}\'s Component',
38+
'description' => 'Enable\'s the user to manage {{componentTitle}}.',
39+
'permission' => '{{componentNamespace}}.manage',
40+
),
41+
42+
array(
43+
'title' => 'Delete {{componentTitle}}\'s Component entry',
44+
'description' => 'Enable\'s the user to delete {{componentTitle}} data.',
45+
'permission' => '{{componentNamespace}}.delete',
46+
),
47+
48+
);
49+
50+
return $availablePermissions;
51+
}
52+
53+
/**
54+
* the component navigation
55+
*
56+
* @return ComponentNavigationCollection
57+
*/
58+
public function getNavigation()
59+
{
60+
$myComponentNavigation = new ComponentNavigation(
61+
'{{componentTitle}}', // the component navigation title
62+
'{{componentIcon}}', // the component icon (font awesome icons)
63+
url(config('backend.backend.base_url').'/{{componentUrl}}') // the component url
64+
);
65+
$myComponentNavigation->setRequiredPermissions(['{{componentNamespace}}.manage']); // the required permission to access this component
66+
67+
$navCollection = new ComponentNavigationCollection();
68+
$navCollection->push($myComponentNavigation);
69+
70+
return $navCollection;
71+
}
72+
73+
/**
74+
* returns the views path
75+
*
76+
* @return array
77+
*/
78+
public function getViewsPath()
79+
{
80+
return array(
81+
'dir' => __DIR__.'/Views',
82+
'namespace' => '{{componentNamespace}}', // the namespace of your component view ( ex. view('{{componentNamespace}}::index') )
83+
);
84+
}
85+
86+
/**
87+
* get components routes path
88+
*
89+
* @return array
90+
*/
91+
public function getRoutesControl()
92+
{
93+
return array(
94+
'dir' => __DIR__.'/routes.php',
95+
'namespace' => 'App\\Backend\\Components\\{{componentNamespace}}\\Controllers',
96+
);
97+
}
98+
}
99+
100+
return new Component;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
namespace App\Backend\Components\{{componentNamespace}}\Controllers;
4+
5+
use Darryldecode\Backend\Base\Controllers\BaseController;
6+
7+
class {{componentNamespace}}Controller extends BaseController {
8+
9+
public function index()
10+
{
11+
return view('{{componentNamespace}}::index');
12+
}
13+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
Route::get('/{{componentUrl}}', array(
4+
'before' => array(),
5+
'as' => '{{componentNamespace}}',
6+
'uses' => '{{componentNamespace}}Controller@index'
7+
));
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
@extends('backend::layouts.master')
2+
3+
@section('content')
4+
5+
<div class="panel panel-default">
6+
<div class="panel-heading">
7+
<h3 class="panel-title">{{componentTitle}}</h3>
8+
</div>
9+
<div class="panel-body">
10+
{{componentDescription}}
11+
</div>
12+
</div>
13+
14+
@stop

src/Darryldecode/Backend/Components/Auth/Controllers/AuthController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public function postLogin(Request $request)
4646
return redirect()->intended(Helpers::getDashboardRoute());
4747
}
4848

49-
return redirect(Helpers::getLoginRoute())
49+
return redirect()->back()
5050
->withInput($request->only('email', 'remember'))
5151
->withErrors([
5252
'email' => 'These credentials do not match our records.',

0 commit comments

Comments
 (0)