Skip to content

Commit

Permalink
Remove route macro's and use twillRoutes facade.
Browse files Browse the repository at this point in the history
  • Loading branch information
haringsrob committed Dec 2, 2022
1 parent 289e858 commit 42987e4
Show file tree
Hide file tree
Showing 22 changed files with 151 additions and 138 deletions.
14 changes: 8 additions & 6 deletions docs/content/1_documentation/2_getting-started/4_navigation.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,18 @@ public function boot(): void
```php
<?php

Route::module('pages');
use A17\Twill\Facades\TwillRoutes;

TwillRoutes::module('pages');

Route::group(['prefix' => 'work'], function () {
Route::group(['prefix' => 'projects'], function () {
Route::module('projectCustomers');
TwillRoutes::module('projectCustomers');
});
Route::module('projects');
Route::module('clients');
Route::module('industries');
Route::module('studios');
TwillRoutes::module('projects');
TwillRoutes::module('clients');
TwillRoutes::module('industries');
TwillRoutes::module('studios');
});
```

Expand Down
7 changes: 5 additions & 2 deletions docs/content/1_documentation/3_modules/cli-generator.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ Once you ran the command a new entry will be added to `routes/twill.php`.
```php
<?php

Route::module('moduleName');
use A17\Twill\Facades\TwillRoutes;

TwillRoutes::module('moduleName');
```

And a navigation entry will be added in `config/twill-navigation.php`.
Expand Down Expand Up @@ -74,8 +76,9 @@ Once you ran the command a new entry will be added to `routes/twill.php`.

```php
<?php
use A17\Twill\Facades\TwillRoutes;

Route::singleton('moduleName');
TwillRoutes::singleton('moduleName');
```

And a navigation entry will be added in `config/twill-navigation.php`.
Expand Down
8 changes: 6 additions & 2 deletions docs/content/1_documentation/3_modules/nested-modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,8 +206,12 @@ class IssueController extends BaseModuleController
Add both modules to `routes/twill.php`:

```php
Route::module('issues');
Route::module('issues.articles');
<?php

use A17\Twill\Facades\TwillRoutes;

TwillRoutes::module('issues');
TwillRoutes::module('issues.articles');
```

Add the parent module to `AppServiceProvider.php`:
Expand Down
12 changes: 7 additions & 5 deletions docs/content/1_documentation/3_modules/routes.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
# Routes

A router macro is available to create module routes quicker:
A router facade is available to create module routes quicker:
```php
<?php

Route::module('yourModulePluralName');
use A17\Twill\Facades\TwillRoutes;

TwillRoutes::module('yourModulePluralName');

// You can add an array of only/except action names as a second parameter
// By default, the following routes are created : 'reorder', 'publish', 'browser', 'bucket', 'feature', 'restore', 'bulkFeature', 'bulkPublish', 'bulkDelete', 'bulkRestore'
Route::module('yourModulePluralName', ['except' => ['reorder', 'feature', 'bucket', 'browser']]);
TwillRoutes::module('yourModulePluralName', ['except' => ['reorder', 'feature', 'bucket', 'browser']]);

// You can add an array of only/except action names for the resource controller as a third parameter
// By default, the following routes are created : 'index', 'store', 'show', 'edit', 'update', 'destroy'
Route::module('yourModulePluralName', [], ['only' => ['index', 'edit', 'store', 'destroy']]);
TwillRoutes::module('yourModulePluralName', [], ['only' => ['index', 'edit', 'store', 'destroy']]);

// The last optional parameter disable the resource controller actions on the module
Route::module('yourPluralModuleName', [], [], false);
TwillRoutes::module('yourPluralModuleName', [], [], false);
```
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,10 @@ Once the command is complete you will be prompted with some instructions:

```shell
The following snippet has been added to routes/twill.php:
┌─────────────────────────┐
│ Route::module('pages');
└─────────────────────────┘
┌──────────────────────────────────┐
│ use A17\Twill\Facades\TwillRoutes│
│ TwillRoutes::module('pages');
└──────────────────────────────────┘
To add a navigation entry add the following to your AppServiceProvider BOOT method.
**************************
use A17\Twill\Facades\TwillNavigation;
Expand Down
16 changes: 10 additions & 6 deletions docs/content/2_guides/adding-custom-roles-and-permissions.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,15 @@ php artisan migrate
Add the modules to our admin routes:

:::filename:::
`routes/admin.hpp`
`routes/twill.php`
:::#filename:::

```php
Route::module('pages');
use A17\Twill\Facades\TwillRoutes;

Route::module('posts');
TwillRoutes::module('pages');

TwillRoutes::module('posts');
```

... and to our navigation:
Expand Down Expand Up @@ -265,16 +267,18 @@ class PostController extends ModuleController
Then, add the route groups and middleware in the admin routes configuration:

:::filename:::
`routes/admin.php`
`routes/twill.php`
:::#filename:::

```php
use A17\Twill\Facades\TwillRoutes;

Route::group(['middleware' => 'can:edit-pages'], function () {
Route::module('pages');
TwillRoutes::module('pages');
});

Route::group(['middleware' => 'can:edit-posts'], function () {
Route::module('posts');
TwillRoutes::module('posts');
});

// ...
Expand Down
10 changes: 3 additions & 7 deletions examples/basic-page-builder/routes/twill.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
<?php

use Illuminate\Support\Facades\Route;
use A17\Twill\Facades\TwillRoutes;

// Register Twill routes here eg.
// Route::module('posts');

Route::module('pages');
Route::module('menuLinks');
Route::module('menuLinks');
TwillRoutes::module('pages');
TwillRoutes::module('menuLinks');
8 changes: 5 additions & 3 deletions examples/portfolio/routes/twill.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<?php

Route::module('projects');
Route::module('partners');
Route::module('comments');
use A17\Twill\Facades\TwillRoutes;

TwillRoutes::module('projects');
TwillRoutes::module('partners');
TwillRoutes::module('comments');
10 changes: 5 additions & 5 deletions examples/tests-browsers/routes/twill.php
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
<?php

use Illuminate\Support\Facades\Route;
use A17\Twill\Facades\TwillRoutes;

// Register Twill routes here eg.

Route::module('writers');
Route::module('letters');
Route::module('bios');
Route::module('books');
TwillRoutes::module('writers');
TwillRoutes::module('letters');
TwillRoutes::module('bios');
TwillRoutes::module('books');
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<?php

Route::module('posts');
use A17\Twill\Facades\TwillRoutes;

TwillRoutes::module('posts');
6 changes: 4 additions & 2 deletions examples/tests-modules/routes/twill.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<?php

use A17\Twill\Facades\TwillRoutes;

Route::group(['prefix' => 'personnel'], function () {
Route::module('authors');
TwillRoutes::module('authors');
});

Route::module('categories');
TwillRoutes::module('categories');
4 changes: 2 additions & 2 deletions examples/tests-nestedmodules/routes/twill.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?php

use Illuminate\Support\Facades\Route;
use A17\Twill\Facades\TwillRoutes;

Route::module('nodes');
TwillRoutes::module('nodes');
4 changes: 3 additions & 1 deletion examples/tests-permissions/routes/twill.php
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<?php

Route::module('postings');
use A17\Twill\Facades\TwillRoutes;

TwillRoutes::module('postings');
4 changes: 2 additions & 2 deletions examples/tests-singleton/routes/twill.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?php

use Illuminate\Support\Facades\Route;
use A17\Twill\Facades\TwillRoutes;

Route::singleton('contactPage');
TwillRoutes::singleton('contactPage');
7 changes: 2 additions & 5 deletions examples/tests-subdomain-routing/routes/twill.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
<?php

use Illuminate\Support\Facades\Route;
use A17\Twill\Facades\TwillRoutes;

// Register Twill routes here eg.
// Route::module('posts');

Route::module('pages');
TwillRoutes::module('pages');
7 changes: 4 additions & 3 deletions routes/admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@
use A17\Twill\Http\Controllers\Admin\AppSettingsController;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Route;
use A17\Twill\Facades\TwillRoutes;

if (config('twill.enabled.users-management')) {
Route::module('users', ['except' => ['sort', 'feature']]);
TwillRoutes::module('users', ['except' => ['sort', 'feature']]);
Route::name('users.resend.registrationEmail')->get('users/{user}/registration-email', 'UserController@resendRegistrationEmail');

if (config('twill.enabled.permissions-management')) {
Route::module('groups', ['except' => ['sort', 'feature', 'search']]);
Route::module('roles', ['except' => ['sort', 'feature']]);
TwillRoutes::module('groups', ['except' => ['sort', 'feature', 'search']]);
TwillRoutes::module('roles', ['except' => ['sort', 'feature']]);
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/Commands/ModuleMake.php
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ public function handle(): void
$this->createCapsuleRoutes();
} elseif ($this->isSingleton) {
$this->createSingletonSeed($modelName);
$this->addEntryToRoutesFile("\nRoute::singleton('{$singularModuleName}');");
$this->addEntryToRoutesFile("\nTwillRoutes::singleton('{$singularModuleName}');");
} else {
$moduleNameForRoute = $navModuleName;
if ($this->hasOption('parentModel') && $parent = $this->option('parentModel')) {
Expand All @@ -322,7 +322,7 @@ public function handle(): void

$moduleNameForRoute = $firstPart . '.' . $secondPart;
}
$this->addEntryToRoutesFile("\nRoute::module('{$moduleNameForRoute}');");
$this->addEntryToRoutesFile("\nTwillRoutes::module('{$moduleNameForRoute}');");
}

$navTitle = $this->isSingleton ? $modelName : $moduleTitle;
Expand Down
4 changes: 2 additions & 2 deletions src/Commands/stubs/admin.stub
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

use Illuminate\Support\Facades\Route;
use A17\Twill\Facades\TwillRoutes;

// Register Twill routes here eg.
// Route::module('posts');
// TwillRoutes::module('posts');
4 changes: 3 additions & 1 deletion src/Commands/stubs/routes_admin.stub
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<?php

Route::module('{{moduleName}}');
use A17\Twill\Facades\TwillRoutes;

TwillRoutes::module('{{moduleName}}');
4 changes: 3 additions & 1 deletion src/Commands/stubs/routes_singleton_admin.stub
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
<?php

Route::singleton('{{moduleName}}');
use A17\Twill\Facades\TwillRoutes;

TwillRoutes::singleton('{{moduleName}}');
77 changes: 0 additions & 77 deletions src/RouteServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ class RouteServiceProvider extends ServiceProvider
*/
public function boot()
{
$this->registerMacros();
$this->registerRouteMiddlewares();
$this->app->bind(TwillRoutes::class);
parent::boot();
Expand Down Expand Up @@ -196,82 +195,6 @@ private function registerRouteMiddlewares()
Route::aliasMiddleware('permission', Permission::class);
}

/**
* Registers Route macros.
*
* @return void
*/
protected function registerMacros()
{
Route::macro('moduleShowWithPreview', function (
$moduleName,
$routePrefix = null,
$controllerName = null
) {
if ($routePrefix === null) {
$routePrefix = $moduleName;
}

if ($controllerName === null) {
$controllerName = ucfirst(Str::plural($moduleName));
}

$routePrefix = empty($routePrefix)
? '/'
: (Str::startsWith($routePrefix, '/')
? $routePrefix
: '/' . $routePrefix);
$routePrefix = Str::endsWith($routePrefix, '/')
? $routePrefix
: $routePrefix . '/';

Route::name($moduleName . '.show')->get(
$routePrefix . '{slug}',
$controllerName . 'Controller@show'
);
Route::name($moduleName . '.preview')
->get(
'/admin-preview' . $routePrefix . '{slug}',
$controllerName . 'Controller@show'
)
->middleware(['web', 'twill_auth:twill_users', 'can:list']);
});

Route::macro('module', function (
$slug,
$options = [],
$resource_options = [],
$resource = true
) {
\A17\Twill\Facades\TwillRoutes::buildModuleRoutes($slug, $options, $resource_options, $resource);
});

Route::macro('singleton', function (
$slug,
$options = [],
$resource_options = [],
$resource = true
) {
$pluralSlug = Str::plural($slug);
$modelName = Str::studly($slug);

Route::module($pluralSlug, $options, $resource_options, $resource);

$lastRouteGroupName = RouteServiceProvider::getLastRouteGroupName();

$groupPrefix = RouteServiceProvider::getGroupPrefix();

// Check if name will be a duplicate, and prevent if needed/allowed
if (RouteServiceProvider::shouldPrefixRouteName($groupPrefix, $lastRouteGroupName)) {
$singletonRouteName = "{$groupPrefix}.{$slug}";
} else {
$singletonRouteName = $slug;
}

Route::get($slug, $modelName . 'Controller@editSingleton')->name($singletonRouteName);
});
}

public static function shouldPrefixRouteName($groupPrefix, $lastRouteGroupName)
{
return !empty($groupPrefix) && (blank($lastRouteGroupName) ||
Expand Down
Loading

0 comments on commit 42987e4

Please sign in to comment.