Skip to content

Commit

Permalink
feat: added more admin configuration (WIP)
Browse files Browse the repository at this point in the history
  • Loading branch information
thorsten committed Dec 17, 2023
1 parent 12d60ae commit fc44581
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 71 deletions.
27 changes: 14 additions & 13 deletions nginx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -123,27 +123,28 @@ server {
rewrite tags/([0-9]+)/([^\/]+).htm(l?)$ /index.php?action=search&tagging_id=$1 last;

# User pages
rewrite user/ucp /index.php?action=ucp last;
rewrite user/bookmarks /index.php?action=bookmarks last;
rewrite user/request-removal /index.php?action=request-removal last;
rewrite user/logout /index.php?action=logout last;
rewrite user/ucp /index.php?action=ucp last;
rewrite user/bookmarks /index.php?action=bookmarks last;
rewrite user/request-removal /index.php?action=request-removal last;
rewrite user/logout /index.php?action=logout last;

# Private APIs
rewrite api/autocomplete /api/index.php last;
rewrite api/bookmark/([0-9]+) /api/index.php last;
rewrite api/autocomplete /api/index.php last;
rewrite api/bookmark/([0-9]+) /api/index.php last;

# Setup APIs
rewrite api/setup/check /api/index.php last;
rewrite api/setup/backup /api/index.php last;
rewrite api/setup/update-database /api/index.php last;
rewrite api/setup/check /api/index.php last;
rewrite api/setup/backup /api/index.php last;
rewrite api/setup/update-database /api/index.php last;

# Administration API
rewrite admin/api/category/permissions /admin/api/index.php last;
rewrite admin/api/category/update-order /admin/api/index.php last;
rewrite admin/api/category/permissions /admin/api/index.php last;
rewrite admin/api/category/update-order /admin/api/index.php last;
rewrite admin/api/configuration/faqs-sorting-key /admin/api/index.php last;
rewrite admin/api/configuration/faqs-sorting-order /admin/api/index.php last;
rewrite admin/api/configuration/list /admin/api/index.php last;
rewrite admin/api/configuration/send-test-mail /admin/api/index.php last;
rewrite admin/api/configuration/list /admin/api/index.php last;
rewrite admin/api/configuration/perm-level /admin/api/index.php last;
rewrite admin/api/configuration/send-test-mail /admin/api/index.php last;
rewrite admin/api/configuration/templates /admin/api/index.php last;
rewrite admin/api/configuration/translations /admin/api/index.php last;
rewrite admin/api/content/attachments /admin/api/index.php last;
Expand Down
1 change: 1 addition & 0 deletions phpmyfaq/.htaccess
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ RewriteRule admin/api/category/update-order admin/api/index.php
RewriteRule admin/api/configuration/faqs-sorting-key admin/api/index.php [L,QSA]
RewriteRule admin/api/configuration/faqs-sorting-order admin/api/index.php [L,QSA]
RewriteRule admin/api/configuration/list admin/api/index.php [L,QSA]
RewriteRule admin/api/configuration/perm-level admin/api/index.php [L,QSA]
RewriteRule admin/api/configuration/send-test-mail admin/api/index.php
RewriteRule admin/api/configuration/templates admin/api/index.php
RewriteRule admin/api/configuration/translations admin/api/index.php
Expand Down
57 changes: 0 additions & 57 deletions phpmyfaq/admin/api/configuration-list.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,24 +46,6 @@ function renderInputForm(mixed $key, string $type): void
printf('<select name="edit[%s]" class="form-select">', $key);

switch ($key) {
case 'records.sortby':
printf(
'<option value="DESC" %s>%s</option>',
('DESC' == $faqConfig->get($key)) ? 'selected' : '',
Translation::get('ad_conf_desc')
);
printf(
'<option value="ASC" %s>%s</option>',
('ASC' == $faqConfig->get($key)) ? 'selected' : '',
Translation::get('ad_conf_asc')
);
break;

case 'security.permLevel':
echo PermissionHelper::permOptions($faqConfig->get($key));
break;


case 'records.attachmentsStorageType':
foreach (Translation::get('att_storage_type') as $i => $item) {
$selected = (int)$faqConfig->get($key) === $i ? ' selected' : '';
Expand Down Expand Up @@ -148,45 +130,6 @@ function renderInputForm(mixed $key, string $type): void

echo "</select>\n</div>\n";
break;

case 'checkbox':
printf(
'<div class="form-check"><input class="form-check-input" type="checkbox" name="edit[%s]" value="true"',
$key
);
if ($faqConfig->get($key)) {
echo ' checked';
}
if ('ldap.ldapSupport' === $key && !extension_loaded('ldap')) {
echo ' disabled';
}
if ('security.useSslForLogins' === $key && !Request::createFromGlobals()->isSecure()) {
echo ' disabled';
}
if ('security.useSslOnly' === $key && !Request::createFromGlobals()->isSecure()) {
echo ' disabled';
}
if ('security.ssoSupport' === $key && !Request::createFromGlobals()->server->get('REMOTE_USER')) {
echo ' disabled';
}
echo '></div></div>';
break;

case 'print':
printf(
'<input type="text" readonly name="edit[%s]" class="form-control-plaintext" value="%s"></div>',
$key,
str_replace('"', '&quot;', $faqConfig->get($key) ?? '')
);
break;

case 'button':
printf(
'<button type="button" class="btn btn-primary" id="btn-phpmyfaq-%s" onclick="handleSendTestMail()">%s</button></div>',
str_replace('.', '-', $key),
Translation::get($key)
);
break;
}
}

Expand Down
29 changes: 28 additions & 1 deletion phpmyfaq/admin/assets/src/configuration/configuration.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ export const handleConfiguration = async () => {
await handleFaqsSortingKeys();
await handleFaqsSortingOrder();
break;
case '#security':
await handlePermLevel();
break;
}

tabLoaded = true;
Expand Down Expand Up @@ -80,11 +83,20 @@ export const handleFaqsSortingOrder = async () => {
const faqsOrderSelectBox = document.getElementsByName('edit[records.sortby]');
if (faqsOrderSelectBox !== null) {
const currentValue = faqsOrderSelectBox[0].dataset.pmfConfigurationCurrentValue;
const options = await fetchFaqsSortingOrder(currentValue);
const options = await fetchPermLevel(currentValue);
faqsOrderSelectBox[0].insertAdjacentHTML('beforeend', options);
}
};

export const handlePermLevel = async () => {
const permLevelSelectBox = document.getElementsByName('edit[security.permLevel]');
if (permLevelSelectBox !== null) {
const currentValue = permLevelSelectBox[0].dataset.pmfConfigurationCurrentValue;
const options = await fetchPermLevel(currentValue);
permLevelSelectBox[0].insertAdjacentHTML('beforeend', options);
}
};

const fetchConfiguration = async (target) => {
try {
const response = await fetch(`./api/configuration/list/${target.substring(1)}`);
Expand Down Expand Up @@ -166,3 +178,18 @@ const fetchFaqsSortingOrder = async (currentValue) => {
console.error(error.message);
}
};

const fetchPermLevel = async (currentValue) => {
try {
const response = await fetch(`./api/configuration/perm-level/${currentValue}`);

if (!response.ok) {
console.error('Request failed!');
return;
}

return await response.text();
} catch (error) {
console.error(error.message);
}
};
8 changes: 8 additions & 0 deletions phpmyfaq/src/admin-routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,14 @@
new Route('/configuration/list/{mode}', ['_controller' => [ConfigurationTabController::class, 'list']])
);

$routes->add(
'admin.api.configuration.permLevel',
new Route(
'/configuration/perm-level/{current}',
['_controller' => [ConfigurationTabController::class, 'permLevel']]
)
);

$routes->add(
'admin.api.configuration.send-test-mail',
new Route(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
use phpMyFAQ\Controller\AbstractController;
use phpMyFAQ\Helper\AdministrationHelper;
use phpMyFAQ\Helper\LanguageHelper;
use phpMyFAQ\Helper\PermissionHelper;
use phpMyFAQ\System;
use phpMyFAQ\Template\TemplateException;
use phpMyFAQ\Translation;
Expand Down Expand Up @@ -114,4 +115,11 @@ public function faqsSortingOrder(Request $request): Response
AdministrationHelper::sortingOrderOptions($request->get('current'))
);
}
#[Route('admin/api/configuration/perm-level')]
public function permLevel(Request $request): Response
{
return new Response(
PermissionHelper::permOptions($request->get('current'))
);
}
}

0 comments on commit fc44581

Please sign in to comment.