Shorcut: add remove shortcut from exercises.

pull/3064/head
Julio 6 years ago
parent 18f9f154fb
commit 574b670948
  1. 19
      public/main/exercise/exercise.class.php
  2. 11
      public/main/exercise/exercise.php
  3. 10
      src/CourseBundle/Repository/CShortcutRepository.php

@ -8486,8 +8486,25 @@ class Exercise
'sid' => $sessionId,
]
);
$shortcutRepository = Container::getShortcutRepository();
$myRowAction->addManipulateRender(
function (RowAction $action, Row $row) use ($session, $repo) {
function (RowAction $action, Row $row) use ($session, $course, $repo, $shortcutRepository, $sessionId) {
/** @var CQuiz $exercise */
$exercise = $row->getEntity();
$shortcut = $shortcutRepository->getShortcutFromResource($exercise);
if ($shortcut) {
$action->setTitle(get_lang('Remove shortcut'));
$action->setRouteParameters(
[
'id',
'name' => 'exercise/exercise.php',
'action' => 'remove_shortcut',
'cid' => $course->getId(),
'sid' => $sessionId,
]
);
}
return $repo->rowCanBeEdited($action, $row, $session);
}
);

@ -100,6 +100,17 @@ if ($is_allowedToEdit && !empty($action)) {
Display::addFlash(Display::return_message(get_lang('Updated')));
break;
case 'remove_shortcut':
$repo = Container::getShortcutRepository();
$shortCut = $repo->getShortcutFromResource($exerciseEntity);
if (null !== $shortCut) {
$repo->addResourceNode($shortCut, api_get_user_entity(api_get_user_id()), $courseEntity);
$repo->getEntityManager()->remove($shortCut);
$repo->getEntityManager()->flush();
}
Display::addFlash(Display::return_message(get_lang('Deleted')));
break;
case 'enable_launch':
$objExerciseTmp->cleanCourseLaunchSettings();
$objExerciseTmp->enableAutoLaunch();

@ -8,11 +8,13 @@ use APY\DataGridBundle\Grid\Column\Column;
use APY\DataGridBundle\Grid\Grid;
use Chamilo\CoreBundle\Component\Utils\ResourceSettings;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Resource\AbstractResource;
use Chamilo\CoreBundle\Entity\Resource\ResourceNode;
use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CoreBundle\Repository\ResourceRepository;
use Chamilo\CoreBundle\Repository\ResourceRepositoryInterface;
use Chamilo\CourseBundle\Entity\CGroupInfo;
use Chamilo\CourseBundle\Entity\CShortcut;
use Chamilo\UserBundle\Entity\User;
use Doctrine\ORM\Query\Expr\Join;
use Symfony\Component\Form\FormInterface;
@ -23,6 +25,14 @@ use Symfony\Component\HttpFoundation\File\UploadedFile;
*/
final class CShortcutRepository extends ResourceRepository implements ResourceRepositoryInterface
{
public function getShortcutFromResource(AbstractResource $resource): ?CShortcut
{
$repo = $this->getRepository();
$criteria = ['shortCutNode' => $resource->getResourceNode()];
return $repo->findOneBy($criteria);
}
public function getResources(User $user, ResourceNode $parentNode, Course $course = null, Session $session = null, CGroupInfo $group = null)
{
$repo = $this->getRepository();

Loading…
Cancel
Save