1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/* |
4
|
|
|
* This file is part of the Tinyissue package. |
5
|
|
|
* |
6
|
|
|
* (c) Mohamed Alsharaf <[email protected]> |
7
|
|
|
* |
8
|
|
|
* For the full copyright and license information, please view the LICENSE |
9
|
|
|
* file that was distributed with this source code. |
10
|
|
|
*/ |
11
|
|
|
|
12
|
|
|
namespace Tinyissue\Providers; |
13
|
|
|
|
14
|
|
|
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; |
15
|
|
|
use Illuminate\Routing\Router; |
16
|
|
|
|
17
|
|
|
/** |
18
|
|
|
* RouteServiceProvider is the route service provider for registering the application routes to controllers and actions. |
19
|
|
|
* |
20
|
|
|
* @author Mohamed Alsharaf <[email protected]> |
21
|
|
|
*/ |
22
|
|
|
class RouteServiceProvider extends ServiceProvider |
23
|
|
|
{ |
24
|
|
|
/** |
25
|
|
|
* This namespace is applied to the controller routes in your routes file. |
26
|
|
|
* |
27
|
|
|
* In addition, it is set as the URL generator's root namespace. |
28
|
|
|
* |
29
|
|
|
* @var string |
30
|
|
|
*/ |
31
|
|
|
protected $namespace = 'Tinyissue\Http\Controllers'; |
32
|
|
|
|
33
|
|
|
/** |
34
|
|
|
* Define your route model bindings, pattern filters, etc. |
35
|
|
|
* |
36
|
|
|
* @param \Illuminate\Routing\Router $router |
37
|
|
|
*/ |
38
|
62 |
|
public function boot(Router $router) |
39
|
|
|
{ |
40
|
62 |
|
$router->model('project', 'Tinyissue\Model\Project'); |
41
|
62 |
|
$router->model('issue', 'Tinyissue\Model\Project\Issue'); |
42
|
62 |
|
$router->model('attachment', 'Tinyissue\Model\Project\Issue\Attachment'); |
43
|
62 |
|
$router->model('comment', 'Tinyissue\Model\Project\Issue\Comment'); |
44
|
62 |
|
$router->model('note', 'Tinyissue\Model\Project\Note'); |
45
|
62 |
|
$router->model('tag', 'Tinyissue\Model\Tag'); |
46
|
62 |
|
$router->model('user', 'Tinyissue\Model\User'); |
47
|
|
|
|
48
|
62 |
|
$router->pattern('project', '[0-9]+'); |
49
|
62 |
|
$router->pattern('issue', '[0-9]+'); |
50
|
62 |
|
$router->pattern('comment', '[0-9]+'); |
51
|
62 |
|
$router->pattern('issue', '[0-9]+'); |
52
|
62 |
|
$router->pattern('limit', '[0-9]+'); |
53
|
62 |
|
$router->pattern('attachment', '[0-9]+'); |
54
|
62 |
|
$router->pattern('note', '[0-9]+'); |
55
|
62 |
|
$router->pattern('term', '\w+'); |
56
|
62 |
|
$router->pattern('tag', '[0-9]+'); |
57
|
|
|
|
58
|
62 |
|
parent::boot($router); |
59
|
62 |
|
} |
60
|
|
|
|
61
|
|
|
/** |
62
|
|
|
* Define the routes for the application. |
63
|
|
|
* |
64
|
|
|
* @param Router $router |
65
|
|
|
*/ |
66
|
62 |
|
public function map(Router $router) |
67
|
|
|
{ |
68
|
|
|
$router->group(['namespace' => $this->namespace], function (Router $router) { |
69
|
62 |
|
$router->get('/', 'HomeController@getIndex'); |
70
|
62 |
|
$router->get('logout', 'HomeController@getLogout'); |
71
|
62 |
|
$router->post('signin', 'HomeController@postSignin'); |
72
|
|
|
|
73
|
62 |
|
if (app('tinyissue.settings')->isPublicProjectsEnabled()) { |
74
|
5 |
|
$this->addPublicRoutes($router); |
75
|
|
|
} |
76
|
|
|
|
77
|
|
|
$router->group(['middleware' => 'auth'], function (Router $router) { |
78
|
62 |
|
$router->get('dashboard', 'HomeController@getDashboard'); |
79
|
|
|
|
80
|
|
|
// Login user area |
81
|
62 |
|
$router->get('user/issues/{display?}/{project?}', 'UserController@getIssues'); |
82
|
62 |
|
$router->get('user/settings/messages', 'UserController@getMessagesSettings'); |
83
|
62 |
|
$router->post('user/settings/messages', 'UserController@postMessagesSettings'); |
84
|
62 |
|
$router->controller('user', 'UserController'); |
85
|
|
|
|
86
|
|
|
// Projects area |
87
|
62 |
|
if (!app('tinyissue.settings')->isPublicProjectsEnabled()) { |
88
|
59 |
|
$this->addPublicProjectsRoutes($router); |
89
|
|
|
} |
90
|
62 |
|
$router->get('projects/new_issue', 'ProjectsController@getNewIssue'); |
91
|
62 |
|
$router->post('projects/new_issue', 'ProjectsController@postNewIssue'); |
92
|
|
|
$router->group(['middleware' => 'permission', 'permission' => 'project-create'], function (Router $router) { |
93
|
62 |
|
$router->get('projects/new', 'ProjectsController@getNew'); |
94
|
62 |
|
$router->post('projects/new', 'ProjectsController@postNew'); |
95
|
62 |
|
}); |
96
|
|
|
|
97
|
|
|
$router->group(['middleware' => 'project'], function (Router $router) { |
98
|
62 |
|
if (!app('tinyissue.settings')->isPublicProjectsEnabled()) { |
99
|
59 |
|
$this->addPublicProjectRoutes($router); |
100
|
|
|
} |
101
|
|
|
|
102
|
|
|
// View project |
103
|
62 |
|
$router->get('project/{project}/assigned', 'ProjectController@getAssigned'); |
104
|
62 |
|
$router->get('project/{project}/created', 'ProjectController@getCreated'); |
105
|
|
|
|
106
|
|
|
// Edit project |
107
|
|
|
$router->group(['middleware' => 'permission', 'permission' => 'project-modify'], function (Router $router) { |
108
|
62 |
|
$router->get('project/{project}/edit', 'ProjectController@getEdit'); |
109
|
62 |
|
$router->post('project/{project}/edit', 'ProjectController@postEdit'); |
110
|
62 |
|
$router->get('project/inactive_users/{project?}', ['middleware' => 'ajax', 'uses' => 'ProjectController@getInactiveUsers']); |
111
|
62 |
|
$router->post('project/{project}/unassign_user', ['middleware' => 'ajax', 'uses' => 'ProjectController@postUnassign']); |
112
|
62 |
|
$router->post('project/{project}/assign_user', ['middleware' => 'ajax', 'uses' => 'ProjectController@postAssign']); |
113
|
62 |
|
$router->post('project/{project}/export_issues', ['middleware' => 'ajax', 'uses' => 'ProjectController@postExportIssues']); |
114
|
62 |
|
$router->get('project/{project}/download_export/{file}', ['uses' => 'ProjectController@getDownloadExport']); |
115
|
|
|
|
116
|
|
|
// Edit project notes |
117
|
62 |
|
$router->post('project/{project}/edit_note/{note}', ['middleware' => 'ajax', 'uses' => 'ProjectController@postEditNote']); |
118
|
62 |
|
$router->get('project/{project}/delete_note/{note}', ['middleware' => 'ajax', 'uses' => 'ProjectController@getDeleteNote']); |
119
|
62 |
|
$router->post('project/{project}/add_note', 'ProjectController@postAddNote'); |
120
|
62 |
|
}); |
121
|
|
|
|
122
|
|
|
// Add issue |
123
|
|
|
$router->group(['middleware' => 'permission', 'permission' => 'issue-create'], function (Router $router) { |
124
|
62 |
|
$router->get('project/{project}/issue/new', 'Project\IssueController@getNew'); |
125
|
62 |
|
$router->post('project/{project}/issue/new', 'Project\IssueController@postNew'); |
126
|
62 |
|
}); |
127
|
|
|
|
128
|
|
|
// Edit issue |
129
|
|
View Code Duplication |
$router->group(['middleware' => 'permission', 'permission' => 'issue-modify'], function (Router $router) { |
|
|
|
|
130
|
62 |
|
$router->get('project/{project}/issue/{issue}/edit', 'Project\IssueController@getEdit'); |
131
|
62 |
|
$router->post('project/{project}/issue/{issue}/edit', 'Project\IssueController@postEdit'); |
132
|
62 |
|
$router->post('project/issue/{issue}/assign', ['middleware' => 'ajax', 'uses' => 'Project\IssueController@postAssign']); |
133
|
62 |
|
$router->get('project/{project}/issue/{issue}/status/{status?}', 'Project\IssueController@getClose')->where('status', '[0-1]'); |
134
|
62 |
|
$router->post('project/{project}/issue/upload_attachment', 'Project\IssueController@postUploadAttachment'); |
135
|
62 |
|
$router->post('project/{project}/issue/remove_attachment', 'Project\IssueController@postRemoveAttachment'); |
136
|
62 |
|
$router->post('project/issue/{issue}/change_project', 'Project\IssueController@postChangeProject'); |
137
|
62 |
|
$router->post('project/issue/{issue}/change_kanban_tag', ['uses' => 'Project\IssueController@postChangeKanbanTag']); |
138
|
|
|
|
139
|
|
|
// Edit comment |
140
|
62 |
|
$router->post('project/issue/edit_comment/{comment}', ['middleware' => 'ajax', 'uses' => 'Project\IssueController@postEditComment']); |
141
|
62 |
|
$router->get('project/issue/delete_comment/{comment}', ['middleware' => 'ajax', 'uses' => 'Project\IssueController@getDeleteComment']); |
142
|
62 |
|
$router->post('project/{project}/issue/{issue}/add_comment', 'Project\IssueController@postAddComment'); |
143
|
62 |
|
$router->get('project/{project}/issue/{issue}/delete/{attachment}', 'Project\IssueController@getDeleteAttachment'); |
144
|
62 |
|
}); |
145
|
62 |
|
}); |
146
|
|
|
|
147
|
|
|
// Admin area |
148
|
|
|
$router->group(['middleware' => 'permission', 'permission' => 'administration'], function (Router $router) { |
149
|
62 |
|
$router->get('administration', 'AdministrationController@getIndex'); |
150
|
62 |
|
$router->get('administration/users', 'Administration\UsersController@getIndex'); |
151
|
62 |
|
$router->get('administration/users/add', 'Administration\UsersController@getAdd'); |
152
|
62 |
|
$router->post('administration/users/add', 'Administration\UsersController@postAdd'); |
153
|
62 |
|
$router->get('administration/users/edit/{user}', 'Administration\UsersController@getEdit'); |
154
|
62 |
|
$router->post('administration/users/edit/{user}', 'Administration\UsersController@postEdit'); |
155
|
62 |
|
$router->get('administration/users/delete/{user}', 'Administration\UsersController@getDelete'); |
156
|
|
|
|
157
|
|
|
// Tags |
158
|
62 |
|
$router->get('administration/tags', 'Administration\TagsController@getIndex'); |
159
|
62 |
|
$router->get('administration/tag/new', 'Administration\TagsController@getNew'); |
160
|
62 |
|
$router->post('administration/tag/new', 'Administration\TagsController@postNew'); |
161
|
62 |
|
$router->get('administration/tag/{tag}/edit', 'Administration\TagsController@getEdit'); |
162
|
62 |
|
$router->post('administration/tag/{tag}/edit', 'Administration\TagsController@postEdit'); |
163
|
62 |
|
$router->get('administration/tag/{tag}/delete', 'Administration\TagsController@getDelete'); |
164
|
|
|
|
165
|
|
|
// Settings |
166
|
62 |
|
$router->get('administration/settings', 'AdministrationController@getSettings'); |
167
|
62 |
|
$router->post('administration/settings', 'AdministrationController@postSettings'); |
168
|
62 |
|
$router->get('administration/settings/maintenance', 'AdministrationController@getChangeMaintenanceMode'); |
169
|
62 |
|
}); |
170
|
62 |
|
}); |
171
|
62 |
|
}); |
172
|
62 |
|
} |
173
|
|
|
|
174
|
|
|
/** |
175
|
|
|
* All of the routes that can be made public. |
176
|
|
|
* |
177
|
|
|
* @param Router $router |
178
|
|
|
* |
179
|
|
|
* @return void |
180
|
|
|
*/ |
181
|
5 |
|
protected function addPublicRoutes(Router $router) |
182
|
|
|
{ |
183
|
|
|
// View issues |
184
|
5 |
|
$router->get('issues', 'HomeController@getIssues'); |
185
|
|
|
|
186
|
|
|
// View projects |
187
|
5 |
|
$this->addPublicProjectsRoutes($router); |
188
|
|
|
|
189
|
|
|
$router->group(['middleware' => 'project'], function (Router $router) { |
190
|
5 |
|
$this->addPublicProjectRoutes($router); |
191
|
5 |
|
}); |
192
|
5 |
|
} |
193
|
|
|
|
194
|
|
|
/** |
195
|
|
|
* Routes related to projects controller that can be made public or private. |
196
|
|
|
* |
197
|
|
|
* @param Router $router |
198
|
|
|
* |
199
|
|
|
* @return void |
200
|
|
|
*/ |
201
|
62 |
|
protected function addPublicProjectsRoutes(Router $router) |
202
|
|
|
{ |
203
|
62 |
|
$router->post('projects/progress', ['middleware' => 'ajax', 'uses' => 'ProjectsController@postProgress']); |
204
|
62 |
|
$router->get('projects/{status?}', 'ProjectsController@getIndex')->where('status', '[0-1]'); |
205
|
62 |
|
} |
206
|
|
|
|
207
|
|
|
/** |
208
|
|
|
* Routes related to project (issue, comment, notes, etc..) that can be made public or private. |
209
|
|
|
* |
210
|
|
|
* @param Router $router |
211
|
|
|
* |
212
|
|
|
* @return void |
213
|
|
|
*/ |
214
|
62 |
View Code Duplication |
protected function addPublicProjectRoutes(Router $router) |
|
|
|
|
215
|
|
|
{ |
216
|
|
|
// View project |
217
|
62 |
|
$router->get('project/{project}', 'ProjectController@getIndex')->where('project', '[0-9]+'); |
218
|
62 |
|
$router->get('project/{project}/issues/{status?}', 'ProjectController@getIssues')->where('status', '[0-1]')->where('project', '[0-9]+'); |
219
|
62 |
|
$router->get('project/{project}/notes', 'ProjectController@getNotes')->where('project', '[0-9]+'); |
220
|
|
|
|
221
|
|
|
// View issue |
222
|
62 |
|
$router->group(['middleware' => 'permission', 'permission' => 'issue-view'], function (Router $router) { |
223
|
62 |
|
$router->get('project/issue/{issue}', 'Project\IssueController@getIndex'); |
224
|
62 |
|
$router->get('project/{project}/issue/{issue}', 'Project\IssueController@getIndex'); |
225
|
62 |
|
$router->get('project/{project}/issue/{issue}/comments', ['middleware' => 'ajax', 'uses' => 'Project\IssueController@getIssueComments']); |
226
|
62 |
|
$router->get('project/{project}/issue/{issue}/activity', ['middleware' => 'ajax', 'uses' => 'Project\IssueController@getIssueActivity']); |
227
|
62 |
|
$router->get('project/{project}/issue/{issue}/download/{attachment}', 'Project\IssueController@getDownloadAttachment'); |
228
|
62 |
|
$router->get('project/{project}/issue/{issue}/display/{attachment}', 'Project\IssueController@getDisplayAttachment'); |
229
|
62 |
|
}); |
230
|
62 |
|
} |
231
|
|
|
} |
232
|
|
|
|
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.