Skip to content
This repository was archived by the owner on Mar 13, 2023. It is now read-only.

Commit 6ce3379

Browse files
committed
Update chatter package route and copy package route to default application route folder
1 parent ae50463 commit 6ce3379

File tree

2 files changed

+232
-1
lines changed

2 files changed

+232
-1
lines changed

app/Providers/RouteServiceProvider.php

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Illuminate\Support\Facades\Route;
66
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
7+
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
78

89
class RouteServiceProvider extends ServiceProvider
910
{
@@ -36,7 +37,7 @@ public function boot()
3637
public function map()
3738
{
3839
$this->mapApiRoutes();
39-
40+
$this->mapChatterRoutes();
4041
$this->mapWebRoutes();
4142

4243
//
@@ -70,4 +71,17 @@ protected function mapApiRoutes()
7071
->namespace($this->namespace)
7172
->group(base_path('routes/api.php'));
7273
}
74+
75+
/**
76+
* Define the "chatter package" routes for the application.
77+
*
78+
* These routes are typically stateless.
79+
*
80+
* @return void
81+
*/
82+
protected function mapChatterRoutes()
83+
{
84+
Route::prefix(LaravelLocalization::setLocale())
85+
->group(base_path('routes/chatter.php'));
86+
}
7387
}

routes/chatter.php

Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
<?php
2+
3+
/**
4+
* Helpers.
5+
*/
6+
7+
// Route helper.
8+
$route = function ($accessor, $default = '') {
9+
return config('chatter.routes.'.$accessor, $default);
10+
};
11+
12+
// Middleware helper.
13+
$middleware = function ($accessor, $default = []) {
14+
return config('chatter.middleware.'.$accessor, $default);
15+
};
16+
17+
// Authentication middleware helper.
18+
$authMiddleware = function ($accessor) use ($middleware) {
19+
return array_unique(
20+
array_merge((array) $middleware($accessor), ['auth'])
21+
);
22+
};
23+
24+
/*
25+
* Chatter routes.
26+
*/
27+
Route::group([
28+
'as' => 'chatter.',
29+
'prefix' => $route('home'),
30+
'middleware' => $middleware('global', 'web'),
31+
'namespace' => 'DevDojo\Chatter\Controllers',
32+
], function () use ($route, $middleware, $authMiddleware) {
33+
34+
// Home view.
35+
Route::get('/', [
36+
'as' => 'home',
37+
'uses' => 'ChatterController@index',
38+
'middleware' => $middleware('home'),
39+
]);
40+
41+
// Single category view.
42+
Route::get($route('category').'/{slug}', [
43+
'as' => 'category.show',
44+
'uses' => 'ChatterController@index',
45+
'middleware' => $middleware('category.show'),
46+
]);
47+
48+
/*
49+
* Auth routes.
50+
*/
51+
52+
// Login view.
53+
Route::get('login', [
54+
'as' => 'login',
55+
'uses' => 'ChatterController@login',
56+
]);
57+
58+
// Register view.
59+
Route::get('register', [
60+
'as' => 'register',
61+
'uses' => 'ChatterController@register',
62+
]);
63+
64+
/*
65+
* Discussion routes.
66+
*/
67+
Route::group([
68+
'as' => 'discussion.',
69+
'prefix' => $route('discussion'),
70+
], function () use ($middleware, $authMiddleware) {
71+
72+
// All discussions view.
73+
Route::get('/', [
74+
'as' => 'index',
75+
'uses' => 'ChatterDiscussionController@index',
76+
'middleware' => $middleware('discussion.index'),
77+
]);
78+
79+
// Create discussion view.
80+
Route::get('create', [
81+
'as' => 'create',
82+
'uses' => 'ChatterDiscussionController@create',
83+
'middleware' => $authMiddleware('discussion.create'),
84+
]);
85+
86+
// Store discussion action.
87+
Route::post('/', [
88+
'as' => 'store',
89+
'uses' => 'ChatterDiscussionController@store',
90+
'middleware' => $authMiddleware('discussion.store'),
91+
]);
92+
93+
// Single discussion view.
94+
Route::get('{category}/{slug}', [
95+
'as' => 'showInCategory',
96+
'uses' => 'ChatterDiscussionController@show',
97+
'middleware' => $middleware('discussion.show'),
98+
]);
99+
100+
// Add user notification to discussion
101+
Route::post('{category}/{slug}/email', [
102+
'as' => 'email',
103+
'uses' => 'ChatterDiscussionController@toggleEmailNotification',
104+
]);
105+
106+
/*
107+
* Specific discussion routes.
108+
*/
109+
Route::group([
110+
'prefix' => '{discussion}',
111+
], function () use ($middleware, $authMiddleware) {
112+
113+
// Single discussion view.
114+
Route::get('/', [
115+
'as' => 'show',
116+
'uses' => 'ChatterDiscussionController@show',
117+
'middleware' => $middleware('discussion.show'),
118+
]);
119+
120+
// Edit discussion view.
121+
Route::get('edit', [
122+
'as' => 'edit',
123+
'uses' => 'ChatterDiscussionController@edit',
124+
'middleware' => $authMiddleware('discussion.edit'),
125+
]);
126+
127+
// Update discussion action.
128+
Route::match(['PUT', 'PATCH'], '/', [
129+
'as' => 'update',
130+
'uses' => 'ChatterDiscussionController@update',
131+
'middleware' => $authMiddleware('discussion.update'),
132+
]);
133+
134+
// Destroy discussion action.
135+
Route::delete('/', [
136+
'as' => 'destroy',
137+
'uses' => 'ChatterDiscussionController@destroy',
138+
'middleware' => $authMiddleware('discussion.destroy'),
139+
]);
140+
});
141+
});
142+
143+
/*
144+
* Post routes.
145+
*/
146+
Route::group([
147+
'as' => 'posts.',
148+
'prefix' => $route('post', 'posts'),
149+
], function () use ($middleware, $authMiddleware) {
150+
151+
// All posts view.
152+
Route::get('/', [
153+
'as' => 'index',
154+
'uses' => 'ChatterPostController@index',
155+
'middleware' => $middleware('post.index'),
156+
]);
157+
158+
// Create post view.
159+
Route::get('create', [
160+
'as' => 'create',
161+
'uses' => 'ChatterPostController@create',
162+
'middleware' => $authMiddleware('post.create'),
163+
]);
164+
165+
// Store post action.
166+
Route::post('/', [
167+
'as' => 'store',
168+
'uses' => 'ChatterPostController@store',
169+
'middleware' => $authMiddleware('post.store'),
170+
]);
171+
172+
/*
173+
* Specific post routes.
174+
*/
175+
Route::group([
176+
'prefix' => '{post}',
177+
], function () use ($middleware, $authMiddleware) {
178+
179+
// Single post view.
180+
Route::get('/', [
181+
'as' => 'show',
182+
'uses' => 'ChatterPostController@show',
183+
'middleware' => $middleware('post.show'),
184+
]);
185+
186+
// Edit post view.
187+
Route::get('edit', [
188+
'as' => 'edit',
189+
'uses' => 'ChatterPostController@edit',
190+
'middleware' => $authMiddleware('post.edit'),
191+
]);
192+
193+
// Update post action.
194+
Route::match(['PUT', 'PATCH'], '/', [
195+
'as' => 'update',
196+
'uses' => 'ChatterPostController@update',
197+
'middleware' => $authMiddleware('post.update'),
198+
]);
199+
200+
// Destroy post action.
201+
Route::delete('/', [
202+
'as' => 'destroy',
203+
'uses' => 'ChatterPostController@destroy',
204+
'middleware' => $authMiddleware('post.destroy'),
205+
]);
206+
});
207+
});
208+
});
209+
210+
/*
211+
* Atom routes
212+
*/
213+
Route::get($route('home').'.atom', [
214+
'as' => 'chatter.atom',
215+
'uses' => 'DevDojo\Chatter\Controllers\ChatterAtomController@index',
216+
'middleware' => $middleware('home'),
217+
]);

0 commit comments

Comments
 (0)