Fix shortcut delete

pull/3064/head
Julio 5 years ago
parent 32285ee012
commit 7fac50b07c
  1. 2
      public/main/exercise/exercise.php
  2. 8
      public/main/lp/learnpath.class.php
  3. 44
      public/main/lp/lp_controller.php
  4. 35
      public/main/lp/lp_list.php
  5. 4
      src/CourseBundle/Entity/CShortcut.php

@ -104,9 +104,7 @@ if ($is_allowedToEdit && !empty($action)) {
case 'remove_shortcut':
$repo = Container::getShortcutRepository();
$shortcut = $repo->getShortcutFromResource($exerciseEntity);
$courseEntity = api_get_course_entity(api_get_course_int_id());
if (null !== $shortcut) {
$repo->addResourceNode($shortcut, api_get_user_entity(api_get_user_id()), $courseEntity);
$repo->getEntityManager()->remove($shortcut);
$repo->getEntityManager()->flush();
}

@ -4276,7 +4276,7 @@ class learnpath
public static function toggle_publish($id, $setVisibility = 'v')
{
$addShortcut = false;
if ($setVisibility == 'v') {
if ($setVisibility === 'v') {
$addShortcut = true;
}
$repo = Container::getLpRepository();
@ -4293,8 +4293,10 @@ class learnpath
$repoShortcut->getEntityManager()->flush();
} else {
$shortcut = $repoShortcut->getShortcutFromResource($lp);
$repoShortcut->getEntityManager()->remove($shortcut);
$repoShortcut->getEntityManager()->flush();
if (null !== $shortcut) {
$repoShortcut->getEntityManager()->remove($shortcut);
$repoShortcut->getEntityManager()->flush();
}
}
return true;

@ -48,6 +48,7 @@ $(window).on("load", function () {
});
</script>';
$ajax_url = api_get_path(WEB_AJAX_PATH).'lp.ajax.php?'.api_get_cidreq();
$listUrl = api_get_self().'?action=list&'.api_get_cidreq();
$htmlHeadXtra[] = '
<script>
/*
@ -554,8 +555,7 @@ switch ($action) {
);
}
Display::addFlash(Display::return_message(get_lang('Message Sent')));
$url = api_get_self().'?action=list&'.api_get_cidreq();
header('Location: '.$url);
header('Location: '.$listUrl);
exit;
break;
case 'add_item':
@ -1081,21 +1081,23 @@ switch ($action) {
learnpath::toggleCategoryVisibility($_REQUEST['id'], $_REQUEST['new_status']);
Display::addFlash(Display::return_message(get_lang('Update successful')));
header('Location: '.api_get_self().'?'.api_get_cidreq());
header('Location: '.$listUrl);
exit;
break;
case 'toggle_visible':
// Change lp visibility (inside lp tool).
if (!$is_allowed_to_edit) {
api_not_allowed(true);
}
if (!$lp_found) {
require 'lp_list.php';
} else {
if ($lp_found) {
learnpath::toggle_visibility($_REQUEST['lp_id'], $_REQUEST['new_status']);
Display::addFlash(Display::return_message(get_lang('Update successful')));
require 'lp_list.php';
}
header('Location: '.$listUrl);
exit;
break;
case 'toggle_category_publish':
if (!$is_allowed_to_edit) {
@ -1104,46 +1106,48 @@ switch ($action) {
learnpath::toggleCategoryPublish($_REQUEST['id'], $_REQUEST['new_status']);
Display::addFlash(Display::return_message(get_lang('Update successful')));
require 'lp_list.php';
header('Location: '.$listUrl);
exit;
break;
case 'toggle_publish':
// Change lp published status (visibility on homepage).
if (!$is_allowed_to_edit) {
api_not_allowed(true);
}
if (!$lp_found) {
require 'lp_list.php';
} else {
if ($lp_found) {
learnpath::toggle_publish($_REQUEST['lp_id'], $_REQUEST['new_status']);
Display::addFlash(Display::return_message(get_lang('Update successful')));
require 'lp_list.php';
}
header('Location: '.$listUrl);
exit;
break;
case 'move_lp_up':
// Change lp published status (visibility on homepage)
if (!$is_allowed_to_edit) {
api_not_allowed(true);
}
if (!$lp_found) {
require 'lp_list.php';
} else {
if ($lp_found) {
learnpath::move_up($_REQUEST['lp_id'], $_REQUEST['category_id']);
Display::addFlash(Display::return_message(get_lang('Update successful')));
require 'lp_list.php';
}
header('Location: '.$listUrl);
exit;
break;
case 'move_lp_down':
// Change lp published status (visibility on homepage)
if (!$is_allowed_to_edit) {
api_not_allowed(true);
}
if (!$lp_found) {
require 'lp_list.php';
} else {
if ($lp_found) {
learnpath::move_down($_REQUEST['lp_id'], $_REQUEST['category_id']);
Display::addFlash(Display::return_message(get_lang('Update successful')));
require 'lp_list.php';
}
header('Location: '.$listUrl);
exit;
break;
case 'edit':
if (!$is_allowed_to_edit) {

@ -12,7 +12,6 @@ use ChamiloSession as Session;
*
* @author Yannick Warnier <ywarnier@beeznest.org>
*/
$this_section = SECTION_COURSES;
//@todo who turns on $lp_controller_touched?
if (empty($lp_controller_touched) || $lp_controller_touched != 1) {
header('Location: lp_controller.php?action=list&'.api_get_cidreq());
@ -23,9 +22,6 @@ require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script();
$courseDir = api_get_course_path().'/scorm';
$baseWordDir = $courseDir;
/**
* Display initialisation and security checks.
*/
@ -51,6 +47,8 @@ $courseId = api_get_course_int_id();
$sessionId = api_get_session_id();
$is_allowed_to_edit = api_is_allowed_to_edit(null, true);
$courseInfo = api_get_course_info();
$courseEntity = api_get_course_entity($courseId);
$sessionEntity = api_get_session_entity($sessionId);
$subscriptionSettings = learnpath::getSubscriptionSettings();
@ -189,25 +187,29 @@ $enableAutoLaunch = api_get_course_setting('enable_lp_auto_launch');
$gameMode = api_get_setting('gamification_mode');
$data = [];
/** @var CLpCategory $item */
foreach ($categories as $item) {
$categoryId = $item->getId();
/** @var CLpCategory $category */
foreach ($categories as $category) {
$categoryId = $category->getId();
$visibility = true;
if ($categoryId !== 0) {
$visibility = $category->isVisible($courseEntity, $sessionEntity);
}
if ($categoryId !== 0 && $subscriptionSettings['allow_add_users_to_lp_category'] == true) {
// "Without category" has id = 0
$categoryVisibility = api_get_item_visibility(
/*$categoryVisibility = api_get_item_visibility(
$courseInfo,
TOOL_LEARNPATH_CATEGORY,
$categoryId,
$sessionId
);
);*/
if (!$is_allowed_to_edit) {
if ($categoryVisibility !== 1 && $categoryVisibility != -1) {
if (!$visibility) {
continue;
}
}
if ($user && !learnpath::categoryIsVisibleForStudent($item, $user)) {
if ($user && !learnpath::categoryIsVisibleForStudent($category, $user)) {
continue;
}
}
@ -910,15 +912,10 @@ foreach ($categories as $item) {
}
$data[] = [
'category' => $item,
'category_visibility' => api_get_item_visibility(
$courseInfo,
TOOL_LEARNPATH_CATEGORY,
$item->getId(),
$sessionId
),
'category' => $category,
'category_visibility' => $visibility,
'category_is_published' => learnpath::categoryIsPublished(
$item,
$category,
$courseInfo['real_id']
),
'lp_list' => $listData,

@ -35,9 +35,9 @@ class CShortcut extends AbstractResource implements ResourceInterface
/**
* @ORM\OneToOne(
* targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceNode", mappedBy="resource", cascade={"remove"}, orphanRemoval=true
* targetEntity="Chamilo\CoreBundle\Entity\Resource\ResourceNode", mappedBy="resource"
* )
* @ORM\JoinColumn(name="shortcut_node_id", referencedColumnName="id", onDelete="CASCADE")
* @ORM\JoinColumn(name="shortcut_node_id", referencedColumnName="id")
*/
public $shortCutNode;

Loading…
Cancel
Save