Skip to content

Commit 0e2fe6b

Browse files
committed
refactor: migrated glossary page to controller (#3257)
1 parent a4f06c8 commit 0e2fe6b

File tree

11 files changed

+193
-195
lines changed

11 files changed

+193
-195
lines changed

nginx.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ server {
129129
rewrite admin/api/(.*) /admin/api/index.php last;
130130

131131
# Administration pages
132-
rewrite admin/(attachments|backup|configuration|elasticsearch|export|group|import|instance|instances|password|session-keep-alive|statistics|stopwords|system|tags|update|user) /admin/front.php last;
132+
rewrite admin/(attachments|backup|configuration|elasticsearch|export|glossary|group|import|instance|instances|password|session-keep-alive|statistics|stopwords|system|tags|update|user) /admin/front.php last;
133133

134134
# REST API v3.0 and v3.1
135135
rewrite ^api/v3\.[01]/(.*) /api/index.php last;

phpmyfaq/.htaccess

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ Header set Access-Control-Allow-Headers "Content-Type, Authorization"
143143
# Administration API
144144
RewriteRule ^admin/api/(.*) admin/api/index.php [L,QSA]
145145
# Administration pages
146-
RewriteRule ^admin/(attachments|backup|configuration|elasticsearch|export|group|import|instance|instances|password|session-keep-alive|statistics|stopwords|system|tags|update|user) admin/front.php [L,QSA]
146+
RewriteRule ^admin/(attachments|backup|configuration|elasticsearch|export|glossary|group|import|instance|instances|password|session-keep-alive|statistics|stopwords|system|tags|update|user) admin/front.php [L,QSA]
147147
# Private APIs
148148
RewriteRule ^api/(autocomplete|bookmark/delete|bookmark/create|user/data/update|user/password/update|user/request-removal|user/remove-twofactor|contact|voting|register|captcha|share|comment/create|faq/create|question/create|webauthn/prepare|webauthn/register|webauthn/prepare-login|webauthn/login) api/index.php [L,QSA]
149149
# Setup APIs

phpmyfaq/admin/glossary.php

Lines changed: 0 additions & 65 deletions
This file was deleted.

phpmyfaq/admin/header.php

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@
9696
$secLevelEntries['content'] .= $adminHelper->addMenuEntry(
9797
'addglossary+editglossary+delglossary',
9898
'glossary',
99-
'ad_menu_glossary'
99+
'ad_menu_glossary',
100+
'glossary'
100101
);
101102
$secLevelEntries['content'] .= $adminHelper->addMenuEntry(
102103
'addnews+editnews+delnews',
@@ -186,12 +187,6 @@
186187
case 'faqs-overview':
187188
case 'editentry':
188189
case 'copyentry':
189-
case 'glossary':
190-
case 'saveglossary':
191-
case 'updateglossary':
192-
case 'deleteglossary':
193-
case 'addglossary':
194-
case 'editglossary':
195190
case 'news':
196191
case 'add-news':
197192
case 'edit-news':

phpmyfaq/admin/index.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -305,10 +305,6 @@
305305
case 'showcategory':
306306
require 'category.showstructure.php';
307307
break;
308-
// glossary
309-
case 'glossary':
310-
require 'glossary.php';
311-
break;
312308
// Config administration
313309
case 'forms':
314310
require 'forms.php';
Lines changed: 112 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -1,134 +1,138 @@
1-
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
2-
<h1 class="h2">
3-
<i aria-hidden="true" class="bi bi-list-ul"></i> {{ adminHeaderGlossary }}
4-
</h1>
5-
<div class="btn-toolbar mb-2 mb-md-0">
6-
<div class="btn-group mr-2">
7-
<button class="btn btn-outline-success" data-bs-toggle="modal" data-bs-target="#addGlossaryModal">
8-
<i aria-hidden="true" class="bi bi-plus"></i> {{ msgAddGlossary }}
9-
</button>
1+
{% extends '@admin/index.twig' %}
2+
3+
{% block content %}
4+
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
5+
<h1 class="h2">
6+
<i aria-hidden="true" class="bi bi-list-ul"></i> {{ adminHeaderGlossary }}
7+
</h1>
8+
<div class="btn-toolbar mb-2 mb-md-0">
9+
<div class="btn-group mr-2">
10+
<button class="btn btn-outline-success" data-bs-toggle="modal" data-bs-target="#addGlossaryModal">
11+
<i aria-hidden="true" class="bi bi-plus"></i> {{ msgAddGlossary }}
12+
</button>
13+
</div>
1014
</div>
1115
</div>
12-
</div>
1316

14-
<div class="row">
15-
<div class="col-12">
17+
<div class="row">
18+
<div class="col-12">
1619

17-
<table class="table table-striped align-middle border shadow" id="pmf-admin-glossary-table">
18-
<thead>
19-
<tr>
20-
<th>{{ msgGlossaryItem }}</th>
21-
<th colspan="2">{{ msgGlossaryDefinition }}</th>
22-
</tr>
23-
</thead>
24-
<tbody>
25-
{% for glossary in glossaryItems %}
26-
<tr id="pmf-glossary-id-{{ glossary.id }}">
27-
<td>
28-
<a href="#" data-bs-toggle="modal" data-bs-target="#updateGlossaryModal"
29-
data-pmf-glossary-id="{{ glossary.id }}" data-pmf-glossary-language="{{ glossary.language }}">
30-
{{ glossary.item }}
31-
</a>
32-
</td>
33-
<td>{{ glossary.definition }}</td>
34-
<td class="text-end">
35-
<button class="btn btn-danger pmf-admin-delete-glossary" data-pmf-glossary-id="{{ glossary.id }}"
36-
data-pmf-csrf-token="{{ csrfTokenDelete }}" data-pmf-glossary-language="{{ glossary.language }}">
37-
<i aria-hidden="true" class="bi bi-trash"></i>
38-
{{ buttonDelete }}
39-
</button>
40-
</td>
20+
<table class="table table-striped align-middle border shadow" id="pmf-admin-glossary-table">
21+
<thead>
22+
<tr>
23+
<th>{{ msgGlossaryItem }}</th>
24+
<th colspan="2">{{ msgGlossaryDefinition }}</th>
4125
</tr>
42-
{% endfor %}
43-
</tbody>
44-
</table>
26+
</thead>
27+
<tbody>
28+
{% for glossary in glossaryItems %}
29+
<tr id="pmf-glossary-id-{{ glossary.id }}">
30+
<td>
31+
<a href="#" data-bs-toggle="modal" data-bs-target="#updateGlossaryModal"
32+
data-pmf-glossary-id="{{ glossary.id }}" data-pmf-glossary-language="{{ glossary.language }}">
33+
{{ glossary.item }}
34+
</a>
35+
</td>
36+
<td>{{ glossary.definition }}</td>
37+
<td class="text-end">
38+
<button class="btn btn-danger pmf-admin-delete-glossary" data-pmf-glossary-id="{{ glossary.id }}"
39+
data-pmf-csrf-token="{{ csrfTokenDelete }}" data-pmf-glossary-language="{{ glossary.language }}">
40+
<i aria-hidden="true" class="bi bi-trash"></i>
41+
{{ buttonDelete }}
42+
</button>
43+
</td>
44+
</tr>
45+
{% endfor %}
46+
</tbody>
47+
</table>
4548

49+
</div>
4650
</div>
47-
</div>
4851

49-
<!-- Add Glossary Modal -->
50-
<div class="modal fade" id="addGlossaryModal" tabindex="-1" aria-labelledby="addGlossaryModal" aria-hidden="true">
51-
<div class="modal-dialog modal-lg">
52-
<div class="modal-content">
53-
<div class="modal-header">
54-
<h1 class="modal-title fs-5" id="addGlossaryModalLabel">
55-
<i aria-hidden="true" class="bi bi-list-ul"></i>
56-
{{ addGlossaryTitle }}
57-
</h1>
58-
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ closeModal }}"></button>
59-
</div>
60-
<div class="modal-body">
61-
<form action="#" method="post" accept-charset="utf-8">
62-
<input type="hidden" name="language" id="language" value="{{ currentLanguage }}">
63-
{{ addGlossaryCsrfTokenInput | raw }}
52+
<!-- Add Glossary Modal -->
53+
<div class="modal fade" id="addGlossaryModal" tabindex="-1" aria-labelledby="addGlossaryModal" aria-hidden="true">
54+
<div class="modal-dialog modal-lg">
55+
<div class="modal-content">
56+
<div class="modal-header">
57+
<h1 class="modal-title fs-5" id="addGlossaryModalLabel">
58+
<i aria-hidden="true" class="bi bi-list-ul"></i>
59+
{{ addGlossaryTitle }}
60+
</h1>
61+
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ closeModal }}"></button>
62+
</div>
63+
<div class="modal-body">
64+
<form action="#" method="post" accept-charset="utf-8">
65+
<input type="hidden" name="language" id="language" value="{{ currentLanguage }}">
66+
{{ addGlossaryCsrfTokenInput | raw }}
6467

65-
<div class="row mb-2">
66-
<label class="col-3 col-form-label" for="item">{{ msgGlossaryItem }}</label>
67-
<div class="col-9">
68-
<input class="form-control" type="text" name="item" id="item" required>
68+
<div class="row mb-2">
69+
<label class="col-3 col-form-label" for="item">{{ msgGlossaryItem }}</label>
70+
<div class="col-9">
71+
<input class="form-control" type="text" name="item" id="item" required>
72+
</div>
6973
</div>
70-
</div>
7174

72-
<div class="row mb-2">
73-
<label class="col-3 col-form-label" for="definition">
74-
{{ msgGlossaryDefinition }}
75-
</label>
76-
<div class="col-9">
77-
<textarea class="form-control" name="definition" id="definition" cols="50" rows="5" required></textarea>
75+
<div class="row mb-2">
76+
<label class="col-3 col-form-label" for="definition">
77+
{{ msgGlossaryDefinition }}
78+
</label>
79+
<div class="col-9">
80+
<textarea class="form-control" name="definition" id="definition" cols="50" rows="5" required></textarea>
81+
</div>
7882
</div>
79-
</div>
8083

81-
</form>
82-
</div>
83-
<div class="modal-footer">
84-
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{ closeModal }}</button>
85-
<button type="button" class="btn btn-primary" id="pmf-admin-glossary-add">{{ saveModal }}</button>
84+
</form>
85+
</div>
86+
<div class="modal-footer">
87+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{ closeModal }}</button>
88+
<button type="button" class="btn btn-primary" id="pmf-admin-glossary-add">{{ saveModal }}</button>
89+
</div>
8690
</div>
8791
</div>
8892
</div>
89-
</div>
9093

91-
<!-- Update Glossary Modal -->
92-
<div class="modal fade" id="updateGlossaryModal" tabindex="-1" aria-labelledby="updateGlossaryModal" aria-hidden="true">
93-
<div class="modal-dialog modal-lg">
94-
<div class="modal-content">
95-
<div class="modal-header">
96-
<h1 class="modal-title fs-5" id="updateGlossaryModalLabel">
97-
<i aria-hidden="true" class="bi bi-list-ul"></i>
98-
{{ updateGlossaryTitle }}
99-
</h1>
100-
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ closeModal }}"></button>
101-
</div>
102-
<div class="modal-body">
103-
<form action="#" method="post" accept-charset="utf-8">
104-
<input type="hidden" name="update-id" id="update-id" value="">
105-
<input type="hidden" name="update-csrf-token" id="update-csrf-token" value="{{ updateGlossaryCsrfToken }}">
106-
<input type="hidden" name="update-language" id="update-language" value="">
94+
<!-- Update Glossary Modal -->
95+
<div class="modal fade" id="updateGlossaryModal" tabindex="-1" aria-labelledby="updateGlossaryModal" aria-hidden="true">
96+
<div class="modal-dialog modal-lg">
97+
<div class="modal-content">
98+
<div class="modal-header">
99+
<h1 class="modal-title fs-5" id="updateGlossaryModalLabel">
100+
<i aria-hidden="true" class="bi bi-list-ul"></i>
101+
{{ updateGlossaryTitle }}
102+
</h1>
103+
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="{{ closeModal }}"></button>
104+
</div>
105+
<div class="modal-body">
106+
<form action="#" method="post" accept-charset="utf-8">
107+
<input type="hidden" name="update-id" id="update-id" value="">
108+
<input type="hidden" name="update-csrf-token" id="update-csrf-token" value="{{ updateGlossaryCsrfToken }}">
109+
<input type="hidden" name="update-language" id="update-language" value="">
107110

108-
<div class="row mb-2">
109-
<label class="col-3 col-form-label" for="update-item">{{ msgGlossaryItem }}</label>
110-
<div class="col-9">
111-
<input class="form-control" type="text" name="update-item" id="update-item" value="" required>
111+
<div class="row mb-2">
112+
<label class="col-3 col-form-label" for="update-item">{{ msgGlossaryItem }}</label>
113+
<div class="col-9">
114+
<input class="form-control" type="text" name="update-item" id="update-item" value="" required>
115+
</div>
112116
</div>
113-
</div>
114117

115-
<div class="row mb-2">
116-
<label class="col-3 col-form-label" for="update-definition">
117-
{{ msgGlossaryDefinition }}
118-
</label>
119-
<div class="col-9">
120-
<textarea class="form-control" name="update-definition" id="update-definition" cols="50" rows="5" required>
118+
<div class="row mb-2">
119+
<label class="col-3 col-form-label" for="update-definition">
120+
{{ msgGlossaryDefinition }}
121+
</label>
122+
<div class="col-9">
123+
<textarea class="form-control" name="update-definition" id="update-definition" cols="50" rows="5" required>
121124

122-
</textarea>
125+
</textarea>
126+
</div>
123127
</div>
124-
</div>
125128

126-
</form>
127-
</div>
128-
<div class="modal-footer">
129-
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{ closeModal }}</button>
130-
<button type="button" class="btn btn-primary" id="pmf-admin-glossary-update">{{ saveModal }}</button>
129+
</form>
130+
</div>
131+
<div class="modal-footer">
132+
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">{{ closeModal }}</button>
133+
<button type="button" class="btn btn-primary" id="pmf-admin-glossary-update">{{ saveModal }}</button>
134+
</div>
131135
</div>
132136
</div>
133137
</div>
134-
</div>
138+
{% endblock %}

phpmyfaq/src/admin-routes.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use phpMyFAQ\Controller\Administration\ConfigurationController;
2222
use phpMyFAQ\Controller\Administration\ElasticsearchController;
2323
use phpMyFAQ\Controller\Administration\ExportController;
24+
use phpMyFAQ\Controller\Administration\GlossaryController;
2425
use phpMyFAQ\Controller\Administration\GroupController;
2526
use phpMyFAQ\Controller\Administration\ImportController;
2627
use phpMyFAQ\Controller\Administration\InstanceController;
@@ -76,6 +77,11 @@
7677
'controller' => [ExportController::class, 'index'],
7778
'methods' => 'GET'
7879
],
80+
'admin.glossary' => [
81+
'path' => '/glossary',
82+
'controller' => [GlossaryController::class, 'index'],
83+
'methods' => 'GET'
84+
],
7985
'admin.group' => [
8086
'path' => '/group',
8187
'controller' => [GroupController::class, 'index'],

phpmyfaq/src/phpMyFAQ/Controller/Administration/AbstractAdministrationController.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ protected function getHeader(Request $request): array
260260
$userPage = true;
261261
break;
262262
case 'admin.attachments':
263+
case 'admin.glossary':
263264
case 'admin.tags':
264265
$contentPage = true;
265266
break;

0 commit comments

Comments
 (0)