2022-07-25 17:16:08 +02:00
|
|
|
<?php
|
2022-09-23 16:14:15 +02:00
|
|
|
|
2022-07-25 17:16:08 +02:00
|
|
|
namespace App\Controller;
|
|
|
|
|
2022-09-23 16:14:15 +02:00
|
|
|
use Doctrine\Persistence\ManagerRegistry;
|
2022-07-25 17:16:08 +02:00
|
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
|
|
use Symfony\Component\Finder\Finder;
|
2022-09-23 16:14:15 +02:00
|
|
|
use Symfony\Component\HttpFoundation\Request;
|
2022-07-25 17:16:08 +02:00
|
|
|
use Symfony\Component\Yaml\Yaml;
|
|
|
|
|
|
|
|
class ThemeController extends AbstractController
|
|
|
|
{
|
|
|
|
public function list(Request $request)
|
|
|
|
{
|
|
|
|
$finder = new Finder();
|
|
|
|
|
2022-09-23 16:14:15 +02:00
|
|
|
$dir = $this->getParameter('kernel.project_dir').'/public/themes';
|
|
|
|
$url = $this->getParameter('appAlias').'themes';
|
2022-07-25 17:16:08 +02:00
|
|
|
|
|
|
|
$finder->in($dir)->directories()->depth('== 0');
|
2022-09-23 16:14:15 +02:00
|
|
|
$themes = [];
|
|
|
|
$themes['']['dir'] = '';
|
|
|
|
$themes['']['url'] = $url;
|
|
|
|
$themes['']['name'] = 'Thème par défaut';
|
2022-07-25 17:16:08 +02:00
|
|
|
|
|
|
|
foreach ($finder as $file) {
|
2022-09-23 16:14:15 +02:00
|
|
|
$key = $file->getRelativePathname();
|
|
|
|
$themes[$key]['dir'] = $key;
|
|
|
|
$themes[$key]['url'] = $url.'/'.$key;
|
2022-07-25 17:16:08 +02:00
|
|
|
|
2022-09-23 16:14:15 +02:00
|
|
|
$yml = Yaml::parseFile($dir.'/'.$key.'/info.yml');
|
|
|
|
$themes[$key]['name'] = $yml['name'];
|
2022-07-25 17:16:08 +02:00
|
|
|
}
|
2022-09-23 16:14:15 +02:00
|
|
|
|
|
|
|
$current = $request->getSession()->get('apptheme');
|
|
|
|
$currentheme = $themes[$current];
|
2022-07-25 17:16:08 +02:00
|
|
|
unset($themes[$current]);
|
|
|
|
|
2022-09-23 16:14:15 +02:00
|
|
|
return $this->render('Theme/list.html.twig', [
|
|
|
|
'useheader' => true,
|
|
|
|
'usesidebar' => true,
|
|
|
|
'currentheme' => $currentheme,
|
|
|
|
'themes' => $themes,
|
2022-07-25 17:16:08 +02:00
|
|
|
]);
|
2022-09-23 16:14:15 +02:00
|
|
|
}
|
2022-07-25 17:16:08 +02:00
|
|
|
|
2022-09-23 16:14:15 +02:00
|
|
|
public function select($name, Request $request, ManagerRegistry $em)
|
2022-07-25 17:16:08 +02:00
|
|
|
{
|
2022-09-23 16:14:15 +02:00
|
|
|
$config = $em->getRepository("App\Entity\Config")->findoneBy(['id' => 'apptheme']);
|
2022-07-25 17:16:08 +02:00
|
|
|
$config->setValue($name);
|
|
|
|
|
2022-09-23 16:14:15 +02:00
|
|
|
$em->getManager()->flush();
|
2022-07-25 17:16:08 +02:00
|
|
|
|
2022-09-23 16:14:15 +02:00
|
|
|
return $this->redirectToRoute('app_admin_theme');
|
2022-07-25 17:16:08 +02:00
|
|
|
}
|
|
|
|
}
|