Fix toggle visibility for resource links - refs BT#22283

pull/5960/head
Angel Fernando Quiroz Campos 8 months ago
parent 0b68242f61
commit 749fa7fcb0
No known key found for this signature in database
GPG Key ID: B284841AE3E562CD
  1. 25
      assets/vue/services/linkService.js
  2. 7
      assets/vue/views/documents/DocumentsList.vue
  3. 7
      assets/vue/views/links/LinksList.vue
  4. 5
      public/main/announcements/announcements.php
  5. 6
      public/main/calendar/agenda_list.php
  6. 11
      public/main/exercise/exercise.php
  7. 2
      public/main/forum/forumfunction.inc.php
  8. 14
      public/main/inc/lib/AnnouncementManager.php
  9. 9
      public/main/inc/lib/agenda.lib.php
  10. 14
      public/main/inc/lib/link.lib.php
  11. 6
      public/main/link/link.php
  12. 7
      public/main/lp/learnpath.class.php
  13. 6
      public/main/work/work.php
  14. 11
      src/CoreBundle/Controller/Api/UpdateVisibilityDocument.php
  15. 11
      src/CoreBundle/Controller/Api/UpdateVisibilityLink.php
  16. 11
      src/CoreBundle/Controller/Api/UpdateVisibilityLinkCategory.php
  17. 6
      src/CoreBundle/Repository/ResourceRepository.php
  18. 2
      tests/CourseBundle/Repository/CDocumentRepositoryTest.php

@ -1,5 +1,6 @@
import { ENTRYPOINT } from "../config/entrypoint" import { ENTRYPOINT } from "../config/entrypoint"
import axios from "axios" import axios from "axios"
import baseService from "./baseService"
export default { export default {
/** /**
@ -45,14 +46,16 @@ export default {
}, },
/** /**
* @param {Number|String} linkId * @param {number} linkId
* @param {Boolean} visible * @param {boolean} visible
* @param {number} cid
* @param {number} sid
* @returns {Promise<Object>}
*/ */
toggleLinkVisibility: async (linkId, visible) => { toggleLinkVisibility: async (linkId, visible, cid, sid) => {
const endpoint = `${ENTRYPOINT}links/${linkId}/toggle_visibility` const endpoint = `${ENTRYPOINT}links/${linkId}/toggle_visibility?cid=${cid}&sid=${sid}`
const response = await axios.put(endpoint, { visible })
return response.data return baseService.put(endpoint, { visible })
}, },
/** /**
@ -123,11 +126,13 @@ export default {
}, },
/** /**
* @param {Number|String} categoryId * @param {number} categoryId
* @param {Boolean} visible * @param {boolean} visible
* @param {number} cid
* @param {number} sid
*/ */
toggleCategoryVisibility: async (categoryId, visible) => { toggleCategoryVisibility: async (categoryId, visible, cid, sid) => {
const endpoint = `${ENTRYPOINT}link_categories/${categoryId}/toggle_visibility` const endpoint = `${ENTRYPOINT}link_categories/${categoryId}/toggle_visibility?cid=${cid}&sid=${sid}`
const response = await axios.put(endpoint, { visible }) const response = await axios.put(endpoint, { visible })
return response.data return response.data

@ -420,6 +420,7 @@ import { useCidReq } from "../../composables/cidReq"
import { useDatatableList } from "../../composables/datatableList" import { useDatatableList } from "../../composables/datatableList"
import { useFormatDate } from "../../composables/formatDate" import { useFormatDate } from "../../composables/formatDate"
import axios from "axios" import axios from "axios"
import baseService from "../../services/baseService"
import DocumentEntry from "../../components/documents/DocumentEntry.vue" import DocumentEntry from "../../components/documents/DocumentEntry.vue"
import BaseButton from "../../components/basecomponents/BaseButton.vue" import BaseButton from "../../components/basecomponents/BaseButton.vue"
import BaseToolbar from "../../components/basecomponents/BaseToolbar.vue" import BaseToolbar from "../../components/basecomponents/BaseToolbar.vue"
@ -691,9 +692,9 @@ function btnChangeVisibilityOnClick(item) {
folderParams.id = item["@id"] folderParams.id = item["@id"]
axios.put(item["@id"] + "/toggle_visibility").then((response) => { baseService
item.resourceLinkListFromEntity = response.data.resourceLinkListFromEntity .put(item["@id"] + `/toggle_visibility?cid=${cid}&sid=${sid}`, {})
}) .then((data) => (item.resourceLinkListFromEntity = data.resourceLinkListFromEntity))
} }
function btnEditOnClick(item) { function btnEditOnClick(item) {

@ -346,7 +346,12 @@ async function deleteCategory() {
async function toggleCategoryVisibility(category) { async function toggleCategoryVisibility(category) {
const visibility = toggleVisibilityProperty(category.info.visible) const visibility = toggleVisibilityProperty(category.info.visible)
try { try {
const updatedLinkCategory = await linkService.toggleCategoryVisibility(category.info.id, isVisible(visibility)) const updatedLinkCategory = await linkService.toggleCategoryVisibility(
category.info.id,
isVisible(visibility),
cid,
sid,
)
category.info.visible = visibilityFromBoolean(updatedLinkCategory.linkCategoryVisible) category.info.visible = visibilityFromBoolean(updatedLinkCategory.linkCategoryVisible)
notifications.showSuccessNotification(t("Visibility of category changed")) notifications.showSuccessNotification(t("Visibility of category changed"))
} catch (error) { } catch (error) {

@ -348,9 +348,10 @@ switch ($action) {
api_is_element_in_the_session(TOOL_ANNOUNCEMENT, $announcement_id) api_is_element_in_the_session(TOOL_ANNOUNCEMENT, $announcement_id)
) { ) {
AnnouncementManager::change_visibility_announcement( AnnouncementManager::change_visibility_announcement(
$_course,
$announcement_id, $announcement_id,
$status $status,
$course,
$session
); );
Display::addFlash(Display::return_message(get_lang('The visibility has been changed.'))); Display::addFlash(Display::return_message(get_lang('The visibility has been changed.')));
header('Location: '.$homeUrl); header('Location: '.$homeUrl);

@ -92,12 +92,14 @@ $tpl->assign('is_allowed_to_edit', api_is_allowed_to_edit());
if (api_is_allowed_to_edit()) { if (api_is_allowed_to_edit()) {
if ('change_visibility' === $action) { if ('change_visibility' === $action) {
$courseInfo = api_get_course_info(); $courseInfo = api_get_course_info();
$course = api_get_course_entity();
$session = api_get_session_entity();
$courseCondition = ''; $courseCondition = '';
// This happens when list agenda is not inside a course // This happens when list agenda is not inside a course
if (('course' === $type || 'session' === $type) && !empty($courseInfo)) { if (('course' === $type || 'session' === $type) && $course) {
// For course and session event types // For course and session event types
// Just needs course ID // Just needs course ID
$agenda->changeVisibility($_GET['id'], $_GET['visibility'], $courseInfo); $agenda->changeVisibility($_GET['id'], $_GET['visibility'], $course, $session);
} else { } else {
$courseCondition = '&'.api_get_cidreq(); $courseCondition = '&'.api_get_cidreq();
} }

@ -36,8 +36,10 @@ $is_allowedToEdit = api_is_allowed_to_edit(null, true);
$is_tutor = api_is_allowed_to_edit(true); $is_tutor = api_is_allowed_to_edit(true);
$is_tutor_course = api_is_course_tutor(); $is_tutor_course = api_is_course_tutor();
$courseInfo = api_get_course_info(); $courseInfo = api_get_course_info();
$courseId = $courseInfo['real_id']; $courseEntity = api_get_course_entity();
$sessionId = api_get_session_id(); $courseId = $courseEntity->getId();
$sessionEntity = api_get_session_entity();
$sessionId = $sessionEntity?->getId() ?: 0;
$isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh( $isDrhOfCourse = CourseManager::isUserSubscribedInCourseAsDrh(
api_get_user_id(), api_get_user_id(),
$courseInfo $courseInfo
@ -89,7 +91,6 @@ if ($is_allowedToEdit && !empty($action)) {
switch ($action) { switch ($action) {
case 'add_shortcut': case 'add_shortcut':
$repo = Container::getShortcutRepository(); $repo = Container::getShortcutRepository();
$courseEntity = api_get_course_entity(api_get_course_int_id());
$user = api_get_user_entity(); $user = api_get_user_entity();
$repo->addShortCut($exerciseEntity, $user, $courseEntity, api_get_session_entity()); $repo->addShortCut($exerciseEntity, $user, $courseEntity, api_get_session_entity());
@ -127,7 +128,7 @@ if ($is_allowedToEdit && !empty($action)) {
// Teacher change exercise // Teacher change exercise
break; break;
} }
$exerciseRepo->setVisibilityPublished($exerciseEntity); $exerciseRepo->setVisibilityPublished($exerciseEntity, $courseEntity, $sessionEntity);
Display::addFlash(Display::return_message(get_lang('The visibility has been changed.'), 'confirmation')); Display::addFlash(Display::return_message(get_lang('The visibility has been changed.'), 'confirmation'));
break; break;
@ -137,7 +138,7 @@ if ($is_allowedToEdit && !empty($action)) {
break; break;
} }
$exerciseRepo->setVisibilityDraft($exerciseEntity); $exerciseRepo->setVisibilityDraft($exerciseEntity, $courseEntity, $sessionEntity);
Display::addFlash(Display::return_message(get_lang('The visibility has been changed.'), 'confirmation')); Display::addFlash(Display::return_message(get_lang('The visibility has been changed.'), 'confirmation'));
break; break;

@ -129,7 +129,7 @@ function handleForum($url)
case 'invisible': case 'invisible':
if (null !== $resource) { if (null !== $resource) {
if ('visible' === $action) { if ('visible' === $action) {
$repo->setVisibilityPublished($resource); $repo->setVisibilityPublished($resource, $course, $session);
} else { } else {
$repo->setVisibilityPending($resource); $repo->setVisibilityPending($resource);
} }

@ -3,8 +3,10 @@
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\AbstractResource; use Chamilo\CoreBundle\Entity\AbstractResource;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\ExtraField as ExtraFieldEntity; use Chamilo\CoreBundle\Entity\ExtraField as ExtraFieldEntity;
use Chamilo\CoreBundle\Entity\ExtraFieldValues; use Chamilo\CoreBundle\Entity\ExtraFieldValues;
use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CoreBundle\Entity\User; use Chamilo\CoreBundle\Entity\User;
use Chamilo\CoreBundle\Framework\Container; use Chamilo\CoreBundle\Framework\Container;
use Chamilo\CoreBundle\Security\Authorization\Voter\ResourceNodeVoter; use Chamilo\CoreBundle\Security\Authorization\Voter\ResourceNodeVoter;
@ -215,24 +217,18 @@ class AnnouncementManager
/** /**
* This functions switches the visibility a course resource * This functions switches the visibility a course resource
* using the visibility field in 'item_property'. * using the visibility field in 'item_property'.
*
* @param array $courseInfo
* @param int $id
* @param string $status
*
* @return bool False on failure, True on success
*/ */
public static function change_visibility_announcement($courseInfo, $id, $status) public static function change_visibility_announcement($id, $status, ?Course $course, ?Session $session): bool
{ {
$repo = Container::getAnnouncementRepository(); $repo = Container::getAnnouncementRepository();
$announcement = $repo->find($id); $announcement = $repo->find($id);
if ($announcement) { if ($announcement) {
switch ($status) { switch ($status) {
case 'invisible': case 'invisible':
$repo->setVisibilityDraft($announcement); $repo->setVisibilityDraft($announcement, $course, $session);
break; break;
case 'visible': case 'visible':
$repo->setVisibilityPublished($announcement); $repo->setVisibilityPublished($announcement, $course, $session);
break; break;
} }
} }

@ -3,6 +3,7 @@
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\Course; use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session as SessionEntity;
use Chamilo\CoreBundle\Framework\Container; use Chamilo\CoreBundle\Framework\Container;
use Chamilo\CourseBundle\Entity\CCalendarEvent; use Chamilo\CourseBundle\Entity\CCalendarEvent;
use Chamilo\CourseBundle\Entity\CCalendarEventAttachment; use Chamilo\CourseBundle\Entity\CCalendarEventAttachment;
@ -2249,8 +2250,8 @@ class Agenda
public static function changeVisibility( public static function changeVisibility(
$id, $id,
$visibility, $visibility,
$courseInfo, ?Course $course,
$userId = null ?SessionEntity $session,
) { ) {
$id = (int) $id; $id = (int) $id;
@ -2261,9 +2262,9 @@ class Agenda
if ($event) { if ($event) {
if (0 === $visibility) { if (0 === $visibility) {
$repo->setVisibilityDraft($event); $repo->setVisibilityDraft($event, $course, $session);
} else { } else {
$repo->setVisibilityPublished($event); $repo->setVisibilityPublished($event, $course, $session);
} }
} }

@ -2,6 +2,8 @@
/* For licensing terms, see /license.txt */ /* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CoreBundle\Framework\Container; use Chamilo\CoreBundle\Framework\Container;
use Chamilo\CourseBundle\Entity\CLink; use Chamilo\CourseBundle\Entity\CLink;
use Chamilo\CourseBundle\Entity\CLinkCategory; use Chamilo\CourseBundle\Entity\CLinkCategory;
@ -677,7 +679,7 @@ class Link extends Model
/** /**
* Changes the visibility of a link. * Changes the visibility of a link.
*/ */
public static function setVisible($id, $scope) public static function setVisible($id, $scope, ?Course $course, ?Session $session)
{ {
if (TOOL_LINK == $scope) { if (TOOL_LINK == $scope) {
/*api_item_property_update( /*api_item_property_update(
@ -691,14 +693,14 @@ class Link extends Model
/** @var CLink $link */ /** @var CLink $link */
$link = $repo->find($id); $link = $repo->find($id);
if ($link) { if ($link) {
$repo->setVisibilityPublished($link); $repo->setVisibilityPublished($link, $course, $session);
} }
} elseif (TOOL_LINK_CATEGORY == $scope) { } elseif (TOOL_LINK_CATEGORY == $scope) {
$repo = Container::getLinkCategoryRepository(); $repo = Container::getLinkCategoryRepository();
/** @var CLink $link */ /** @var CLink $link */
$link = $repo->find($id); $link = $repo->find($id);
if ($link) { if ($link) {
$repo->setVisibilityPublished($link); $repo->setVisibilityPublished($link, $course, $session);
} }
/*api_item_property_update( /*api_item_property_update(
$_course, $_course,
@ -711,21 +713,21 @@ class Link extends Model
Display::addFlash(Display::return_message(get_lang('The visibility has been changed.'))); Display::addFlash(Display::return_message(get_lang('The visibility has been changed.')));
} }
public static function setInvisible($id, $scope) public static function setInvisible($id, $scope, ?Course $course, ?Session $session)
{ {
if (TOOL_LINK == $scope) { if (TOOL_LINK == $scope) {
$repo = Container::getLinkRepository(); $repo = Container::getLinkRepository();
/** @var CLink $link */ /** @var CLink $link */
$link = $repo->find($id); $link = $repo->find($id);
if ($link) { if ($link) {
$repo->setVisibilityDraft($link); $repo->setVisibilityDraft($link, $course, $session);
} }
} elseif (TOOL_LINK_CATEGORY == $scope) { } elseif (TOOL_LINK_CATEGORY == $scope) {
$repo = Container::getLinkCategoryRepository(); $repo = Container::getLinkCategoryRepository();
/** @var CLinkCategory $link */ /** @var CLinkCategory $link */
$link = $repo->find($id); $link = $repo->find($id);
if ($link) { if ($link) {
$repo->setVisibilityDraft($link); $repo->setVisibilityDraft($link, $course, $session);
} }
} }
Display::addFlash(Display::return_message(get_lang('The visibility has been changed.'))); Display::addFlash(Display::return_message(get_lang('The visibility has been changed.')));

@ -49,6 +49,8 @@ $nameTools = get_lang('Links');
$course_id = api_get_course_int_id(); $course_id = api_get_course_int_id();
$session_id = api_get_session_id(); $session_id = api_get_session_id();
$courseInfo = api_get_course_info(); $courseInfo = api_get_course_info();
$course = api_get_course_entity();
$session = api_get_session_entity();
if ('addlink' === $action) { if ('addlink' === $action) {
$nameTools = ''; $nameTools = '';
@ -168,14 +170,14 @@ switch ($action) {
break; break;
case 'visible': case 'visible':
// Here we edit a category // Here we edit a category
Link::setVisible($id, $scope); Link::setVisible($id, $scope, $course, $session);
header('Location: '.$linkListUrl); header('Location: '.$linkListUrl);
exit; exit;
break; break;
case 'invisible': case 'invisible':
// Here we edit a category // Here we edit a category
Link::setInvisible($id, $scope); Link::setInvisible($id, $scope, $course, $session);
header('Location: '.$linkListUrl); header('Location: '.$linkListUrl);
exit; exit;

@ -3347,10 +3347,13 @@ class learnpath
$visibility = (int) $visibility; $visibility = (int) $visibility;
$course = api_get_course_entity();
$session = api_get_session_entity();
if (1 === $visibility) { if (1 === $visibility) {
$repo->setVisibilityPublished($resource); $repo->setVisibilityPublished($resource, $course, $session);
} else { } else {
$repo->setVisibilityDraft($resource); $repo->setVisibilityDraft($resource, $course, $session);
self::toggleCategoryPublish($id, 0); self::toggleCategoryPublish($id, 0);
} }

@ -17,6 +17,8 @@ $courseInfo = api_get_course_info();
$user_id = api_get_user_id(); $user_id = api_get_user_id();
$sessionId = api_get_session_id(); $sessionId = api_get_session_id();
$groupId = api_get_group_id(); $groupId = api_get_group_id();
$course = api_get_course_entity();
$session = api_get_session_entity();
// Section (for the tabs) // Section (for the tabs)
$this_section = SECTION_COURSES; $this_section = SECTION_COURSES;
@ -252,7 +254,7 @@ switch ($action) {
api_not_allowed(); api_not_allowed();
} }
$repo->setVisibilityPublished($studentPublication); $repo->setVisibilityPublished($studentPublication, $course, $session);
/*api_item_property_update( /*api_item_property_update(
$courseInfo, $courseInfo,
@ -283,7 +285,7 @@ switch ($action) {
api_not_allowed(); api_not_allowed();
} }
$repo->setVisibilityDraft($studentPublication); $repo->setVisibilityDraft($studentPublication, $course, $session);
/* /*
api_item_property_update( api_item_property_update(
$courseInfo, $courseInfo,

@ -6,6 +6,7 @@ declare(strict_types=1);
namespace Chamilo\CoreBundle\Controller\Api; namespace Chamilo\CoreBundle\Controller\Api;
use Chamilo\CoreBundle\ServiceHelper\CidReqHelper;
use Chamilo\CourseBundle\Entity\CDocument; use Chamilo\CourseBundle\Entity\CDocument;
use Chamilo\CourseBundle\Repository\CDocumentRepository; use Chamilo\CourseBundle\Repository\CDocumentRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
@ -14,9 +15,17 @@ use Symfony\Component\HttpKernel\Attribute\AsController;
#[AsController] #[AsController]
class UpdateVisibilityDocument extends AbstractController class UpdateVisibilityDocument extends AbstractController
{ {
public function __construct(
private readonly CidReqHelper $cidReqHelper,
) {}
public function __invoke(CDocument $document, CDocumentRepository $repo): CDocument public function __invoke(CDocument $document, CDocumentRepository $repo): CDocument
{ {
$repo->toggleVisibilityPublishedDraft($document); $repo->toggleVisibilityPublishedDraft(
$document,
$this->cidReqHelper->getCourseEntity(),
$this->cidReqHelper->getSessionEntity()
);
return $document; return $document;
} }

@ -6,6 +6,7 @@ declare(strict_types=1);
namespace Chamilo\CoreBundle\Controller\Api; namespace Chamilo\CoreBundle\Controller\Api;
use Chamilo\CoreBundle\ServiceHelper\CidReqHelper;
use Chamilo\CourseBundle\Entity\CLink; use Chamilo\CourseBundle\Entity\CLink;
use Chamilo\CourseBundle\Repository\CLinkRepository; use Chamilo\CourseBundle\Repository\CLinkRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
@ -14,9 +15,17 @@ use Symfony\Component\HttpKernel\Attribute\AsController;
#[AsController] #[AsController]
class UpdateVisibilityLink extends AbstractController class UpdateVisibilityLink extends AbstractController
{ {
public function __construct(
private readonly CidReqHelper $cidReqHelper,
) {}
public function __invoke(CLink $link, CLinkRepository $repo): CLink public function __invoke(CLink $link, CLinkRepository $repo): CLink
{ {
$repo->toggleVisibilityPublishedDraft($link); $repo->toggleVisibilityPublishedDraft(
$link,
$this->cidReqHelper->getCourseEntity(),
$this->cidReqHelper->getSessionEntity()
);
$link->toggleVisibility(); $link->toggleVisibility();
return $link; return $link;

@ -6,6 +6,7 @@ declare(strict_types=1);
namespace Chamilo\CoreBundle\Controller\Api; namespace Chamilo\CoreBundle\Controller\Api;
use Chamilo\CoreBundle\ServiceHelper\CidReqHelper;
use Chamilo\CourseBundle\Entity\CLinkCategory; use Chamilo\CourseBundle\Entity\CLinkCategory;
use Chamilo\CourseBundle\Repository\CLinkCategoryRepository; use Chamilo\CourseBundle\Repository\CLinkCategoryRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
@ -14,9 +15,17 @@ use Symfony\Component\HttpKernel\Attribute\AsController;
#[AsController] #[AsController]
class UpdateVisibilityLinkCategory extends AbstractController class UpdateVisibilityLinkCategory extends AbstractController
{ {
public function __construct(
private readonly CidReqHelper $cidReqHelper,
) {}
public function __invoke(CLinkCategory $linkCategory, CLinkCategoryRepository $repo): CLinkCategory public function __invoke(CLinkCategory $linkCategory, CLinkCategoryRepository $repo): CLinkCategory
{ {
$repo->toggleVisibilityPublishedDraft($linkCategory); $repo->toggleVisibilityPublishedDraft(
$linkCategory,
$this->cidReqHelper->getCourseEntity(),
$this->cidReqHelper->getSessionEntity()
);
$linkCategory->toggleVisibility(); $linkCategory->toggleVisibility();
return $linkCategory; return $linkCategory;

@ -585,18 +585,18 @@ abstract class ResourceRepository extends ServiceEntityRepository
} }
} }
public function toggleVisibilityPublishedDraft(AbstractResource $resource): void public function toggleVisibilityPublishedDraft(AbstractResource $resource, ?Course $course, ?Session $session): void
{ {
$firstLink = $resource->getFirstResourceLink(); $firstLink = $resource->getFirstResourceLink();
if (ResourceLink::VISIBILITY_PUBLISHED === $firstLink->getVisibility()) { if (ResourceLink::VISIBILITY_PUBLISHED === $firstLink->getVisibility()) {
$this->setVisibilityDraft($resource); $this->setVisibilityDraft($resource, $course, $session);
return; return;
} }
if (ResourceLink::VISIBILITY_DRAFT === $firstLink->getVisibility()) { if (ResourceLink::VISIBILITY_DRAFT === $firstLink->getVisibility()) {
$this->setVisibilityPublished($resource); $this->setVisibilityPublished($resource, $course, $session);
} }
} }

@ -1089,7 +1089,7 @@ class CDocumentRepositoryTest extends AbstractApiTest
$this->assertSame(ResourceLink::VISIBILITY_PUBLISHED, $link->getVisibility()); $this->assertSame(ResourceLink::VISIBILITY_PUBLISHED, $link->getVisibility());
$documentId = $document->getIid(); $documentId = $document->getIid();
$url = '/api/documents/'.$documentId.'/toggle_visibility'; $url = '/api/documents/'.$documentId.'/toggle_visibility?cid='.$course->getId();
// Not logged in. // Not logged in.
$client->request('PUT', $url); $client->request('PUT', $url);

Loading…
Cancel
Save