bundle/w3des/AdminBundle/src/Controller/DashboardController.php line 88

Open in your IDE?
  1. <?php
  2. namespace w3des\AdminBundle\Controller;
  3. use Symfony\Component\Routing\Annotation\Route;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\JsonResponse;
  6. use Symfony\Component\HttpFoundation\File\UploadedFile;
  7. use Cocur\Slugify\Slugify;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Liip\ImagineBundle\Imagine\Cache\CacheManager;
  10. use w3des\AdminBundle\Service\CMS;
  11. class DashboardController extends AbstractController
  12. {
  13. /**
  14. * @Route("/", name="admin.home")
  15. */
  16. public function indexAction()
  17. {
  18. return $this->render('@w3desAdmin/Dashboard/index.html.twig');
  19. }
  20. /**
  21. * @Route("/service/{id}", name="admin.service")
  22. */
  23. public function service(Request $request, $id)
  24. {
  25. $request->getSession()->set('_service', $id);
  26. return $this->redirect($this->generateUrl('admin.home'));
  27. }
  28. /**
  29. * @Route("/lang/{lang}", name="admin.lang")
  30. */
  31. public function langAction(Request $request, $lang)
  32. {
  33. $request->getSession()->set('_page_locale', $lang);
  34. return $this->redirect($this->generateUrl('admin.home'));
  35. }
  36. /**
  37. * @Route("/upload", name="admin.upload", methods="POST")
  38. */
  39. public function uploadAction(Request $request, CacheManager $cacheManager, CMS $cms)
  40. {
  41. $uploadDir = $cms->getUploadDir();
  42. $dir = '/' . $request->request->get('dir') . '/' . date('Y') . '/' . date('m') . '/' . date('d');
  43. if (! \file_exists($uploadDir . $dir)) {
  44. \mkdir($uploadDir . $dir, 0777, true);
  45. }
  46. $tmp = new Slugify();
  47. $result = [];
  48. foreach ($request->files->get('files') as $f) {
  49. if ($f instanceof UploadedFile) {
  50. $orig = $source = $f->getClientOriginalName();
  51. if ($f->getClientOriginalExtension()) {
  52. $source = substr($source, 0, strlen($source) - 1 - strlen($f->getClientOriginalExtension()));
  53. }
  54. $name = \uniqid('', true) . '_' . $tmp->slugify($source) . '.' . \strtolower($f->getClientOriginalExtension());
  55. $f->move($uploadDir . $dir, $name);
  56. \chmod($uploadDir . $dir . '/' . $name, 0666);
  57. $f = new \SplFileInfo($uploadDir . $dir . '/' . $name);
  58. $result[] = [
  59. 'path' => $cms->getUploadPath() . $dir . '/' . $name,
  60. 'name' => $name,
  61. 'origName' => $orig,
  62. 'thmb' => $cacheManager->getBrowserPath($cms->getUploadPath() . $dir . '/' . $name, 'admin'),
  63. 'size' => $f->getSize(),
  64. 'url' => $request->getBaseUrl() . $cms->getUploadPath() . $dir . '/' . $name,
  65. 'deleteUrl' => false,
  66. 'deleteType' => 'DELETE'
  67. ];
  68. }
  69. }
  70. return new JsonResponse([
  71. 'files' => $result
  72. ]);
  73. }
  74. /**
  75. * @Route("/help", name="admin.help")
  76. * @Route("/help/{slug}", name="admin.help.direct")
  77. */
  78. public function helpAction(string $slug = null)
  79. {
  80. return $this->render('@w3desAdmin/Dashboard/help.html.twig', [
  81. 'slug' => $slug
  82. ]);
  83. }
  84. }