Add LP category shortcut

pull/3124/head
Julio Montoya 6 years ago
parent 87a8edb29b
commit 47de57450c
  1. 50
      public/main/lp/learnpath.class.php
  2. 13
      public/main/lp/lp_list.php
  3. 5
      src/CoreBundle/Entity/Resource/AbstractResource.php
  4. 18
      src/CourseBundle/Repository/CLpCategoryRepository.php
  5. 14
      src/CourseBundle/Repository/CLpRepository.php

@ -4240,8 +4240,8 @@ class learnpath
* on the course homepage
* Can be used as abstract.
*
* @param int $lp_id Learnpath id
* @param string $set_visibility New visibility (v/i - visible/invisible)
* @param int $id Learnpath id
* @param string $setVisibility New visibility (v/i - visible/invisible)
*
* @return bool
*/
@ -4371,14 +4371,34 @@ class learnpath
*/
public static function toggleCategoryPublish($id, $setVisibility = 1)
{
$courseId = api_get_course_int_id();
$setVisibility = (int) $setVisibility;
$sessionId = api_get_session_id();
$sessionCondition = api_get_session_condition(
$sessionId,
true,
false,
't.sessionId'
);
$addShortcut = false;
if (1 === $setVisibility) {
$addShortcut = true;
}
$repo = Container::getLpCategoryRepository();
/** @var CLpCategory $lp */
$category = $repo->find($id);
$repoShortcut = Container::getShortcutRepository();
if ($addShortcut) {
$shortcut = new CShortcut();
$shortcut->setName($category->getName());
$shortcut->setShortCutNode($category->getResourceNode());
$courseEntity = api_get_course_entity(api_get_course_int_id());
$repoShortcut->addResourceNode($shortcut, api_get_user_entity(api_get_user_id()), $courseEntity);
$repoShortcut->getEntityManager()->flush();
} else {
$shortcut = $repoShortcut->getShortcutFromResource($category);
if (null !== $shortcut) {
$repoShortcut->getEntityManager()->remove($shortcut);
$repoShortcut->getEntityManager()->flush();
}
}
return true;
$em = Database::getManager();
@ -10060,29 +10080,21 @@ EOD;
// Using doctrine extensions
/** @var SortableRepository $repo */
$repo = $em->getRepository('ChamiloCourseBundle:CLpCategory');
$items = $repo
->getBySortableGroupsQuery(['cId' => $courseId])
->getResult();
return $items;
return $repo->getBySortableGroupsQuery(['cId' => $courseId])->getResult();
}
/**
* @param int $id
*
* @throws \Doctrine\ORM\ORMException
* @throws \Doctrine\ORM\OptimisticLockException
* @throws \Doctrine\ORM\TransactionRequiredException
*
* @return CLpCategory
*/
public static function getCategory($id)
{
$id = (int) $id;
$em = Database::getManager();
$item = $em->find('ChamiloCourseBundle:CLpCategory', $id);
return $item;
return $em->find('ChamiloCourseBundle:CLpCategory', $id);
}
/**

@ -2,6 +2,7 @@
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Framework\Container;
use Chamilo\CourseBundle\Entity\CLpCategory;
use ChamiloSession as Session;
@ -187,6 +188,8 @@ $enableAutoLaunch = api_get_course_setting('enable_lp_auto_launch');
$gameMode = api_get_setting('gamification_mode');
$data = [];
$shortcutRepository = Container::getShortcutRepository();
/** @var CLpCategory $category */
foreach ($categories as $category) {
$categoryId = $category->getId();
@ -911,13 +914,15 @@ foreach ($categories as $category) {
} // end foreach ($flat_list)
}
$shortcut = false;
if ($category->hasResourceNode()) {
$shortcut = $shortcutRepository->getShortcutFromResource($category);
}
$data[] = [
'category' => $category,
'category_visibility' => $visibility,
'category_is_published' => learnpath::categoryIsPublished(
$category,
$courseInfo['real_id']
),
'category_is_published' => $shortcut ? 1 : 0,
'lp_list' => $listData,
];
}

@ -34,6 +34,11 @@ abstract class AbstractResource
return $this;
}
public function hasResourceNode(): bool
{
return $this->resourceNode instanceof ResourceNode;
}
public function getResourceNode(): ResourceNode
{
return $this->resourceNode;

@ -4,8 +4,24 @@
namespace Chamilo\CourseBundle\Repository;
use Chamilo\CoreBundle\Entity\Resource\ResourceInterface;
use Chamilo\CoreBundle\Repository\ResourceRepository;
use Chamilo\CoreBundle\Repository\ResourceWithLinkInterface;
use Symfony\Component\Routing\RouterInterface;
final class CLpCategoryRepository extends ResourceRepository
final class CLpCategoryRepository extends ResourceRepository implements ResourceWithLinkInterface
{
public function getLink(ResourceInterface $resource, RouterInterface $router, $extraParams = []): string
{
$params = [
'id' => $resource->getResourceIdentifier(),
'name' => 'lp/lp_controller.php',
'action' => 'view_category',
];
if (!empty($extraParams)) {
$params = array_merge($params, $extraParams);
}
return $router->generate('legacy_main', $params);
}
}

@ -4,11 +4,23 @@
namespace Chamilo\CourseBundle\Repository;
use Chamilo\CoreBundle\Entity\Resource\ResourceInterface;
use Chamilo\CoreBundle\Repository\ResourceRepository;
use Chamilo\CoreBundle\Repository\ResourceWithLinkInterface;
use Symfony\Component\Routing\RouterInterface;
/**
* Class CLpRepository.
*/
final class CLpRepository extends ResourceRepository
final class CLpRepository extends ResourceRepository implements ResourceWithLinkInterface
{
public function getLink(ResourceInterface $resource, RouterInterface $router, $extraParams = []): string
{
$params = ['lp_id' => $resource->getResourceIdentifier(), 'name' => 'lp/lp_controller.php', 'action' => 'view'];
if (!empty($extraParams)) {
$params = array_merge($params, $extraParams);
}
return $router->generate('legacy_main', $params);
}
}

Loading…
Cancel
Save