Minor - flint fixes

pull/3215/head
Julio Montoya 5 years ago
parent eeb046c2ec
commit 011926f62b
  1. 27
      src/CoreBundle/Controller/BaseController.php
  2. 29
      src/CoreBundle/Controller/ResourceApiController.php
  3. 72
      src/CoreBundle/Controller/ResourceController.php
  4. 2
      src/CoreBundle/Resources/config/repositories.yml
  5. 15
      src/CoreBundle/Traits/ControllerTrait.php
  6. 88
      src/CoreBundle/Traits/ResourceControllerTrait.php
  7. 2
      src/CourseBundle/Controller/ToolBaseController.php

@ -7,7 +7,6 @@ namespace Chamilo\CoreBundle\Controller;
use Chamilo\CoreBundle\Block\BreadcrumbBlockService;
use Chamilo\CoreBundle\Component\Utils\Glide;
use Chamilo\CoreBundle\Repository\ResourceFactory;
use Knp\Menu\FactoryInterface as MenuFactoryInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Contracts\Translation\TranslatorInterface;
@ -30,30 +29,4 @@ abstract class BaseController extends AbstractController
return $services;
}
public function getResourceRepositoryFactory(): ResourceFactory
{
return $this->container->get('resource_factory');
}
public function getBreadCrumb(): BreadcrumbBlockService
{
return $this->container->get('breadcrumb');
}
/**
* @return MenuFactoryInterface
*/
public function getMenuFactory()
{
return $this->container->get('knp_menu.factory');
}
/**
* @return Glide
*/
public function getGlide()
{
return $this->container->get('glide');
}
}

@ -16,14 +16,17 @@ use Chamilo\CourseBundle\Controller\CourseControllerInterface;
use Doctrine\ORM\QueryBuilder;
use FOS\RestBundle\Controller\AbstractFOSRestController;
use FOS\RestBundle\Controller\Annotations as Rest;
use FOS\RestBundle\Controller\Annotations\RouteResource;
use FOS\RestBundle\View\View;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
/**
* Class ResourceApiController.
*
* @Route("/api/resources")
* @RouteResource("Resource2")
*/
class ResourceApiController extends AbstractFOSRestController implements CourseControllerInterface
{
@ -42,23 +45,18 @@ class ResourceApiController extends AbstractFOSRestController implements CourseC
return $services;
}
public function getResourceRepositoryFactory(): ResourceFactory
{
return $this->container->get('resource_factory');
}
/**
* Route("/{tool}/{type}/{id}/list", name="chamilo_core_api_resource_list").
*
* @Rest\Get("/{tool}/{type}/{id}/list")
*
* If node has children show it
* @Rest\View(serializerGroups={"list"})
*/
public function getResourcesAction(Request $request)
{
$repository = $this->getRepositoryFromRequest($request);
$resourceNodeId = $request->get('id');
var_dump($resourceNodeId);
exit;
$parentNode = $repository->getResourceNodeRepository()->find($resourceNodeId);
$course = $this->getCourse();
@ -73,16 +71,13 @@ class ResourceApiController extends AbstractFOSRestController implements CourseC
/** @var QueryBuilder $qb */
$qb = $repository->getResources($this->getUser(), $parentNode, $course, $session, null);
$resources = $qb->getQuery()->getResult();
return $this->handleView($this->view($resources));
return $qb->getQuery()->getResult();
}
/**
* Route("/{tool}/{type}/{id}", name="chamilo_core_api_resource").
*
* @Rest\Get("/{tool}/{type}/{id}")
* Rest\Get("/{tool}/{type}/{id}").
*
* @Rest\View(serializerGroups={"list"})
*/
public function getResourceAction(Request $request)
{
@ -93,7 +88,9 @@ class ResourceApiController extends AbstractFOSRestController implements CourseC
$resource = $repository->getResourceFromResourceNode($nodeId);
$this->denyAccessUnlessValidResource($resource);
return $resource;
return $this->handleView($this->view($resource));
return View::create($resource, Response::HTTP_CREATED);
//return $resource;
}
}

@ -449,78 +449,6 @@ class ResourceController extends AbstractResourceController implements CourseCon
);
}
private function setBreadCrumb(Request $request)
{
$tool = $request->get('tool');
$type = $request->get('type');
$resourceNodeId = $request->get('id');
$routeParams = $this->getResourceParams($request);
if (!empty($resourceNodeId)) {
$breadcrumb = $this->getBreadCrumb();
$toolParams = $routeParams;
$toolParams['id'] = null;
// Root tool link
$breadcrumb->addChild(
$this->trans($tool),
[
'uri' => $this->generateUrl('chamilo_core_resource_index', $toolParams),
]
);
$repo = $this->getRepositoryFromRequest($request);
$settings = $repo->getResourceSettings();
/** @var ResourceInterface $originalResource */
$originalResource = $repo->findOneBy(['resourceNode' => $resourceNodeId]);
if (null === $originalResource) {
return;
}
$parent = $originalParent = $originalResource->getResourceNode();
$parentList = [];
while (null !== $parent) {
if ($type !== $parent->getResourceType()->getName()) {
break;
}
$parent = $parent->getParent();
if ($parent) {
$resource = $repo->findOneBy(['resourceNode' => $parent->getId()]);
if ($resource) {
$parentList[] = $resource;
}
}
}
$parentList = array_reverse($parentList);
/** @var ResourceInterface $item */
foreach ($parentList as $item) {
$params = $routeParams;
$params['id'] = $item->getResourceNode()->getId();
$breadcrumb->addChild(
$item->getResourceName(),
[
'uri' => $this->generateUrl('chamilo_core_resource_list', $params),
]
);
}
$params = $routeParams;
$params['id'] = $originalParent->getId();
if (false === $settings->isAllowNodeCreation() || $originalResource->getResourceNode()->hasResourceFile()) {
$breadcrumb->addChild($originalResource->getResourceName());
} else {
$breadcrumb->addChild(
$originalResource->getResourceName(),
[
'uri' => $this->generateUrl('chamilo_core_resource_list', $params),
]
);
}
}
}
/**
* @Route("/{tool}/{type}/{id}/new_folder", methods={"GET", "POST"}, name="chamilo_core_resource_new_folder")
*/

@ -4,7 +4,7 @@ services:
public: true
autoconfigure: true
Vich\UploaderBundle\Storage\FlysystemStorage: ~
Vich\UploaderBundle\Storage\FlysystemStorage: ~
Chamilo\CoreBundle\Repository\ResourceFactory: ~
Chamilo\CoreBundle\Repository\ResourceNodeRepository: ~

@ -4,6 +4,8 @@
namespace Chamilo\CoreBundle\Traits;
use Chamilo\CoreBundle\Block\BreadcrumbBlockService;
use Knp\Menu\FactoryInterface as MenuFactoryInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Contracts\Translation\TranslatorInterface;
@ -18,6 +20,19 @@ trait ControllerTrait
return $this->container->get('request_stack')->getCurrentRequest();
}
public function getBreadCrumb(): BreadcrumbBlockService
{
return $this->container->get('breadcrumb');
}
/**
* @return MenuFactoryInterface
*/
public function getMenuFactory()
{
return $this->container->get('knp_menu.factory');
}
/**
* @param string $message
*

@ -4,8 +4,11 @@
namespace Chamilo\CoreBundle\Traits;
use Chamilo\CoreBundle\Component\Utils\Glide;
use Chamilo\CoreBundle\Entity\Resource\AbstractResource;
use Chamilo\CoreBundle\Entity\Resource\ResourceInterface;
use Chamilo\CoreBundle\Entity\Resource\ResourceNode;
use Chamilo\CoreBundle\Repository\ResourceFactory;
use Chamilo\CoreBundle\Repository\ResourceRepository;
use Chamilo\UserBundle\Entity\User;
use Symfony\Component\HttpFoundation\Request;
@ -22,6 +25,19 @@ trait ResourceControllerTrait
return $this->getRepository($tool, $type);
}
public function getResourceRepositoryFactory(): ResourceFactory
{
return $this->container->get('resource_factory');
}
/**
* @return Glide
*/
public function getGlide()
{
return $this->container->get('glide');
}
public function getRepository($tool, $type): ResourceRepository
{
return $this->getResourceRepositoryFactory()->createRepository($tool, $type);
@ -89,4 +105,76 @@ trait ResourceControllerTrait
'sid' => $sessionId,
];
}
private function setBreadCrumb(Request $request)
{
$tool = $request->get('tool');
$type = $request->get('type');
$resourceNodeId = $request->get('id');
$routeParams = $this->getResourceParams($request);
if (!empty($resourceNodeId)) {
$breadcrumb = $this->getBreadCrumb();
$toolParams = $routeParams;
$toolParams['id'] = null;
// Root tool link
$breadcrumb->addChild(
$this->trans($tool),
[
'uri' => $this->generateUrl('chamilo_core_resource_index', $toolParams),
]
);
$repo = $this->getRepositoryFromRequest($request);
$settings = $repo->getResourceSettings();
/** @var ResourceInterface $originalResource */
$originalResource = $repo->findOneBy(['resourceNode' => $resourceNodeId]);
if (null === $originalResource) {
return;
}
$parent = $originalParent = $originalResource->getResourceNode();
$parentList = [];
while (null !== $parent) {
if ($type !== $parent->getResourceType()->getName()) {
break;
}
$parent = $parent->getParent();
if ($parent) {
$resource = $repo->findOneBy(['resourceNode' => $parent->getId()]);
if ($resource) {
$parentList[] = $resource;
}
}
}
$parentList = array_reverse($parentList);
/** @var ResourceInterface $item */
foreach ($parentList as $item) {
$params = $routeParams;
$params['id'] = $item->getResourceNode()->getId();
$breadcrumb->addChild(
$item->getResourceName(),
[
'uri' => $this->generateUrl('chamilo_core_resource_list', $params),
]
);
}
$params = $routeParams;
$params['id'] = $originalParent->getId();
if (false === $settings->isAllowNodeCreation() || $originalResource->getResourceNode()->hasResourceFile()) {
$breadcrumb->addChild($originalResource->getResourceName());
} else {
$breadcrumb->addChild(
$originalResource->getResourceName(),
[
'uri' => $this->generateUrl('chamilo_core_resource_list', $params),
]
);
}
}
}
}

@ -5,6 +5,7 @@
namespace Chamilo\CourseBundle\Controller;
use Chamilo\CoreBundle\Controller\BaseController;
use Chamilo\CoreBundle\Traits\ControllerTrait;
use Chamilo\CoreBundle\Traits\CourseControllerTrait;
/**
@ -15,4 +16,5 @@ use Chamilo\CoreBundle\Traits\CourseControllerTrait;
abstract class ToolBaseController extends BaseController implements CourseControllerInterface
{
use CourseControllerTrait;
use ControllerTrait;
}

Loading…
Cancel
Save