mirror of
https://github.com/flarum/core.git
synced 2025-07-17 06:41:21 +02:00
Add "clear cache" button to admin
This commit is contained in:
@@ -8,9 +8,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import DashboardWidget from './DashboardWidget';
|
import DashboardWidget from './DashboardWidget';
|
||||||
import icon from '../../common/helpers/icon';
|
|
||||||
import listItems from '../../common/helpers/listItems';
|
import listItems from '../../common/helpers/listItems';
|
||||||
import ItemList from '../../common/utils/ItemList';
|
import ItemList from '../../common/utils/ItemList';
|
||||||
|
import Dropdown from '../../common/components/Dropdown';
|
||||||
|
import Button from '../../common/components/Button';
|
||||||
|
import LoadingModal from './LoadingModal';
|
||||||
|
|
||||||
export default class StatusWidget extends DashboardWidget {
|
export default class StatusWidget extends DashboardWidget {
|
||||||
className() {
|
className() {
|
||||||
@@ -26,10 +28,16 @@ export default class StatusWidget extends DashboardWidget {
|
|||||||
items() {
|
items() {
|
||||||
const items = new ItemList();
|
const items = new ItemList();
|
||||||
|
|
||||||
items.add('help', (
|
items.add('tools', (
|
||||||
<a href="http://flarum.org/docs/troubleshooting" target="_blank">
|
<Dropdown
|
||||||
{icon('fas fa-question-circle')} {app.translator.trans('core.admin.dashboard.help_link')}
|
label={app.translator.trans('core.admin.dashboard.tools_button')}
|
||||||
</a>
|
icon="fas fa-cog"
|
||||||
|
buttonClassName="Button"
|
||||||
|
menuClassName="Dropdown-menu--right">
|
||||||
|
<Button onclick={this.handleClearCache.bind(this)}>
|
||||||
|
{app.translator.trans('core.admin.dashboard.clear_cache_button')}
|
||||||
|
</Button>
|
||||||
|
</Dropdown>
|
||||||
));
|
));
|
||||||
|
|
||||||
items.add('version-flarum', [<strong>Flarum</strong>, <br/>, app.forum.attribute('version')]);
|
items.add('version-flarum', [<strong>Flarum</strong>, <br/>, app.forum.attribute('version')]);
|
||||||
@@ -38,4 +46,13 @@ export default class StatusWidget extends DashboardWidget {
|
|||||||
|
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleClearCache(e) {
|
||||||
|
app.modal.show(new LoadingModal());
|
||||||
|
|
||||||
|
app.request({
|
||||||
|
method: 'DELETE',
|
||||||
|
url: app.forum.attribute('apiUrl') + '/cache'
|
||||||
|
}).then(() => window.location.reload());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -38,7 +38,7 @@
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
&.item-help {
|
&.item-tools {
|
||||||
float: right;
|
float: right;
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
}
|
}
|
||||||
|
56
src/Api/Controller/ClearCacheController.php
Normal file
56
src/Api/Controller/ClearCacheController.php
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Flarum.
|
||||||
|
*
|
||||||
|
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Flarum\Api\Controller;
|
||||||
|
|
||||||
|
use Flarum\Foundation\Application;
|
||||||
|
use Flarum\Foundation\Console\CacheClearCommand;
|
||||||
|
use Flarum\Settings\SettingsRepositoryInterface;
|
||||||
|
use Flarum\User\AssertPermissionTrait;
|
||||||
|
use League\Flysystem\Adapter\Local;
|
||||||
|
use League\Flysystem\Filesystem;
|
||||||
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
|
use Symfony\Component\Console\Input\ArrayInput;
|
||||||
|
use Symfony\Component\Console\Output\NullOutput;
|
||||||
|
use Zend\Diactoros\Response\EmptyResponse;
|
||||||
|
|
||||||
|
class ClearCacheController extends AbstractDeleteController
|
||||||
|
{
|
||||||
|
use AssertPermissionTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var CacheClearCommand
|
||||||
|
*/
|
||||||
|
protected $command;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param CacheClearCommand $command
|
||||||
|
*/
|
||||||
|
public function __construct(CacheClearCommand $command)
|
||||||
|
{
|
||||||
|
$this->command = $command;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function delete(ServerRequestInterface $request)
|
||||||
|
{
|
||||||
|
$this->assertAdmin($request->getAttribute('actor'));
|
||||||
|
|
||||||
|
$this->command->run(
|
||||||
|
new ArrayInput([]),
|
||||||
|
new NullOutput()
|
||||||
|
);
|
||||||
|
|
||||||
|
return new EmptyResponse(204);
|
||||||
|
}
|
||||||
|
}
|
@@ -301,4 +301,11 @@ return function (RouteCollection $map, RouteHandlerFactory $route) {
|
|||||||
'favicon.delete',
|
'favicon.delete',
|
||||||
$route->toController(Controller\DeleteFaviconController::class)
|
$route->toController(Controller\DeleteFaviconController::class)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Clear the cache
|
||||||
|
$map->delete(
|
||||||
|
'/cache',
|
||||||
|
'cache.clear',
|
||||||
|
$route->toController(Controller\ClearCacheController::class)
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user