Fix breadcrumb improve performance

pull/3262/head
Julio Montoya 6 years ago
parent 81628ef26e
commit 5a87ea0d02
  1. 6
      src/CoreBundle/Controller/ResourceApiController.php
  2. 31
      src/CoreBundle/Controller/ResourceController.php
  3. 19
      src/CoreBundle/Entity/Resource/ResourceNode.php
  4. 16
      src/ThemeBundle/EventListener/TwigListener.php

@ -41,15 +41,15 @@ class ResourceApiController extends AbstractFOSRestController implements CourseC
$repository = $this->getRepositoryFromRequest($request);
$parentNode = $repository->getResourceNodeRepository()->find($id);
$course = $this->getCourse();
$session = $this->getSession();
$this->denyAccessUnlessGranted(
ResourceNodeVoter::VIEW,
$parentNode,
'Unauthorised access to resource'
);
$course = $this->getCourse();
$session = $this->getSession();
/** @var QueryBuilder $qb */
$qb = $repository->getResources($this->getUser(), $parentNode, $course, $session, null);

@ -433,11 +433,10 @@ class ResourceController extends AbstractResourceController implements CourseCon
$settings = $repository->getResourceSettings();
$grid = $this->getGrid($request, $repository, $grid, $resourceNodeId, 'chamilo_core_resource_list');
$this->setBreadCrumb($request);
$parentResourceNode = $this->getParentResourceNode($request);
$this->setBreadCrumb($request, $parentResourceNode);
return $grid->getGridResponse(
$repository->getTemplates()->getFromAction(__FUNCTION__),
[
@ -456,8 +455,6 @@ class ResourceController extends AbstractResourceController implements CourseCon
*/
public function newFolderAction(Request $request): Response
{
$this->setBreadCrumb($request);
return $this->createResource($request, 'folder');
}
@ -466,8 +463,6 @@ class ResourceController extends AbstractResourceController implements CourseCon
*/
public function newAction(Request $request): Response
{
$this->setBreadCrumb($request);
return $this->createResource($request, 'file');
}
@ -476,13 +471,14 @@ class ResourceController extends AbstractResourceController implements CourseCon
*/
public function diskSpaceAction(Request $request): Response
{
$this->setBreadCrumb($request);
$nodeId = $request->get('id');
$repository = $this->getRepositoryFromRequest($request);
/** @var ResourceNode $resourceNode */
$resourceNode = $repository->getResourceNodeRepository()->find($nodeId);
$this->setBreadCrumb($request, $resourceNode);
$this->denyAccessUnlessGranted(
ResourceNodeVoter::VIEW,
$resourceNode,
@ -552,13 +548,14 @@ class ResourceController extends AbstractResourceController implements CourseCon
{
$resourceNodeId = $request->get('id');
$this->setBreadCrumb($request);
$repository = $this->getRepositoryFromRequest($request);
$resource = $repository->getResourceFromResourceNode($resourceNodeId);
$this->denyAccessUnlessValidResource($resource);
$settings = $repository->getResourceSettings();
$resourceNode = $resource->getResourceNode();
$this->setBreadCrumb($request, $resourceNode);
$this->denyAccessUnlessGranted(
ResourceNodeVoter::EDIT,
$resourceNode,
@ -635,18 +632,16 @@ class ResourceController extends AbstractResourceController implements CourseCon
*/
public function infoAction(Request $request): Response
{
$this->setBreadCrumb($request);
$nodeId = $request->get('id');
$repository = $this->getRepositoryFromRequest($request);
/** @var AbstractResource $resource */
$resource = $repository->getResourceFromResourceNode($nodeId);
$resourceNode = $resource->getResourceNode();
$this->denyAccessUnlessValidResource($resource);
$this->setBreadCrumb($request, $resourceNode);
$resourceNode = $resource->getResourceNode();
//throw new \Exception('as');
$this->denyAccessUnlessGranted(
ResourceNodeVoter::VIEW,
$resourceNode,
@ -666,7 +661,6 @@ class ResourceController extends AbstractResourceController implements CourseCon
'type' => $type,
'comment_form' => $form->createView(),
];
return $this->render(
$repository->getTemplates()->getFromAction(__FUNCTION__, $request->isXmlHttpRequest()),
$params
@ -680,9 +674,7 @@ class ResourceController extends AbstractResourceController implements CourseCon
*/
public function previewAction(Request $request): Response
{
$this->setBreadCrumb($request);
$nodeId = $request->get('id');
$repository = $this->getRepositoryFromRequest($request);
/** @var AbstractResource $resource */
@ -690,6 +682,7 @@ class ResourceController extends AbstractResourceController implements CourseCon
$this->denyAccessUnlessValidResource($resource);
$resourceNode = $resource->getResourceNode();
$this->setBreadCrumb($request, $resourceNode);
$this->denyAccessUnlessGranted(
ResourceNodeVoter::VIEW,
@ -880,7 +873,7 @@ class ResourceController extends AbstractResourceController implements CourseCon
$tool = $request->get('tool');
$type = $request->get('type');
$this->setBreadCrumb($request);
$this->setBreadCrumb($request, $resourceNode);
$params = [
'resource' => $resource,
@ -993,7 +986,7 @@ class ResourceController extends AbstractResourceController implements CourseCon
$this->trans('Unauthorised access to resource')
);
$this->setBreadCrumb($request);
$this->setBreadCrumb($request, $resourceNode);
$routeParams = $this->getResourceParams($request);
$routeParams['tool'] = $tool;
@ -1016,6 +1009,8 @@ class ResourceController extends AbstractResourceController implements CourseCon
// Default parent node is course.
$parentNode = $this->getParentResourceNode($request);
$this->setBreadCrumb($request, $parentNode);
$this->denyAccessUnlessGranted(
ResourceNodeVoter::CREATE,
$parentNode,

@ -32,6 +32,7 @@ class ResourceNode
use TimestampableEntity;
/**
* @Groups({"list"})
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
@ -40,7 +41,7 @@ class ResourceNode
/**
* @Assert\NotBlank()
*
* @Groups({"list"})
* @Gedmo\TreePathSource
*
* @ORM\Column(name="title", type="string", length=255, nullable=false)
@ -72,12 +73,13 @@ class ResourceNode
* @var ResourceFile
* @Groups({"list"})
*
* @ORM\OneToOne(targetEntity="ResourceFile", inversedBy="resourceNode", orphanRemoval=true, fetch="EAGER")
* @ORM\OneToOne(targetEntity="ResourceFile", inversedBy="resourceNode", orphanRemoval=true)
* @ORM\JoinColumn(name="resource_file_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $resourceFile;
/**
* @Groups({"list"})
* @ORM\ManyToOne(
* targetEntity="Chamilo\UserBundle\Entity\User", inversedBy="resourceNodes"
* )
@ -124,16 +126,16 @@ class ResourceNode
/**
* Shortcut to access Course resource from ResourceNode.
*
* @ORM\OneToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", mappedBy="resourceNode")
* ORM\OneToOne(targetEntity="Chamilo\CoreBundle\Entity\Course", mappedBy="resourceNode")
*/
protected $course;
//protected $course;
/**
* Shortcut to access Course resource from ResourceNode.
*
* @ORM\OneToOne(targetEntity="Chamilo\CoreBundle\Entity\Illustration", mappedBy="resourceNode")
* ORM\OneToOne(targetEntity="Chamilo\CoreBundle\Entity\Illustration", mappedBy="resourceNode")
*/
protected $illustration;
//protected $illustration;
/**
* @var ResourceComment[]|ArrayCollection
@ -359,6 +361,11 @@ class ResourceNode
return $this->slug;
}
public function getTitle()
{
return $this->title;
}
public function setTitle(string $title)
{
$this->title = $title;

@ -34,17 +34,22 @@ class TwigListener implements EventSubscriberInterface
}
$container = $this->container;
$settingsManager = $container->get('chamilo.settings.manager');
$theme = api_get_visual_theme();
$twig = $container->get('twig');
if (empty($twig)) {
return false;
}
$translator = $this->container->get('translator');
$settingsManager = $container->get('chamilo.settings.manager');
$theme = api_get_visual_theme();
$twig->addGlobal('favico', \Template::getPortalIcon($theme));
if ('true' === $settingsManager->getSetting('display.show_administrator_data')) {
// Admin data
$firstName = $settingsManager->getSetting('admin.administrator_name');
$lastName = $settingsManager->getSetting('admin.administrator_surname');
$email = $settingsManager->getSetting('admin.administrator_email');
@ -62,7 +67,7 @@ class TwigListener implements EventSubscriberInterface
$adminName = '';
// Administrator name
if (!empty($name)) {
$adminName = get_lang('Administrator').' : ';
$adminName = $translator->trans('Administrator').' : ';
$adminName .= \Display::encrypted_mailto_link($email, $name);
}
$twig->addGlobal('administrator_name', $adminName);
@ -85,7 +90,8 @@ class TwigListener implements EventSubscriberInterface
if ('true' === $settingsManager->getSetting('display.show_tutor_data')) {
// Course manager
$courseId = api_get_course_int_id();
// @todo load data using ajax
/* $courseId = api_get_course_int_id();
$sessionId = api_get_session_id();
if (!empty($courseId)) {
@ -131,7 +137,7 @@ class TwigListener implements EventSubscriberInterface
$teacherData .= $label.' : '.array_to_string($links, CourseManager::USER_SEPARATOR);
}
$twig->addGlobal('teachers', $teacherData);
}
}*/
}
$appPlugin = new \AppPlugin();

Loading…
Cancel
Save