Merge pull request #5061 from christianbeeznest/GH-displayorder

Migration: Change tools display_order by resource_node order field
pull/5070/head
christianbeeznest 2 years ago committed by GitHub
commit 026fc0ac09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      assets/vue/components/glossary/GlossaryForm.vue
  2. 8
      assets/vue/components/glossary/GlossaryTermList.vue
  3. 9
      assets/vue/components/links/LinkItem.vue
  4. 2
      assets/vue/views/glossary/GlossaryList.vue
  5. 8
      assets/vue/views/links/LinksList.vue
  6. 75
      public/main/announcements/announcements.php
  7. 23
      public/main/inc/lib/AnnouncementManager.php
  8. 55
      public/main/inc/lib/groupmanager.lib.php
  9. 1
      public/main/inc/lib/link.lib.php
  10. 2
      src/CoreBundle/Controller/Api/GetGlossaryCollectionController.php
  11. 10
      src/CoreBundle/Controller/Api/GetLinksCollectionController.php
  12. 6
      src/CoreBundle/Controller/Api/UpdatePositionLink.php
  13. 2
      src/CoreBundle/Entity/SettingsCurrent.php
  14. 3
      src/CoreBundle/Migrations/Schema/V200/Version20230615213500.php
  15. 81
      src/CoreBundle/Migrations/Schema/V200/Version20240112191200.php
  16. 6
      src/CoreBundle/Repository/ResourceRepository.php
  17. 21
      src/CourseBundle/Entity/CAnnouncement.php
  18. 19
      src/CourseBundle/Entity/CGlossary.php
  19. 25
      src/CourseBundle/Entity/CLink.php
  20. 17
      src/CourseBundle/Entity/CLinkCategory.php

@ -117,8 +117,8 @@ const submitGlossaryForm = async () => {
} }
try { try {
if (props.linkId) { if (props.termId) {
await glossaryService.updateGlossaryTerm(props.linkId, postData) await glossaryService.updateGlossaryTerm(props.termId, postData)
} else { } else {
await glossaryService.createGlossaryTerm(postData) await glossaryService.createGlossaryTerm(postData)
} }

@ -12,7 +12,7 @@
<div> <div>
{{ term.name }} {{ term.name }}
</div> </div>
<div> <div v-if="securityStore.isAuthenticated && isCurrentTeacher">
<BaseButton <BaseButton
:label="t('Edit')" :label="t('Edit')"
class="mr-2" class="mr-2"
@ -50,8 +50,14 @@
import BaseButton from "../basecomponents/BaseButton.vue" import BaseButton from "../basecomponents/BaseButton.vue"
import { useI18n } from "vue-i18n" import { useI18n } from "vue-i18n"
import BaseCard from "../basecomponents/BaseCard.vue" import BaseCard from "../basecomponents/BaseCard.vue"
import { useSecurityStore } from "../../store/securityStore"
import { useStore } from "vuex"
import { computed } from "vue"
const { t } = useI18n() const { t } = useI18n()
const securityStore = useSecurityStore()
const store = useStore()
const isCurrentTeacher = computed(() => store.getters["security/isCurrentTeacher"])
defineProps({ defineProps({
glossaries: { glossaries: {

@ -11,7 +11,7 @@
</a> </a>
</h6> </h6>
</div> </div>
<div class="flex gap-2"> <div class="flex gap-2" v-if="securityStore.isAuthenticated && isCurrentTeacher">
<BaseButton <BaseButton
type="black" type="black"
icon="check" icon="check"
@ -63,6 +63,13 @@ import BaseButton from "../basecomponents/BaseButton.vue"
import { useI18n } from "vue-i18n" import { useI18n } from "vue-i18n"
import BaseIcon from "../basecomponents/BaseIcon.vue" import BaseIcon from "../basecomponents/BaseIcon.vue"
import { isVisible, VISIBLE } from "./linkVisibility" import { isVisible, VISIBLE } from "./linkVisibility"
import { useSecurityStore } from "../../store/securityStore"
import { useStore } from "vuex"
import { computed } from "vue"
const store = useStore()
const securityStore = useSecurityStore()
const isCurrentTeacher = computed(() => store.getters["security/isCurrentTeacher"])
const { t } = useI18n() const { t } = useI18n()

@ -258,4 +258,4 @@ async function fetchGlossaries() {
isSearchLoading.value = false isSearchLoading.value = false
} }
} }
</script> </script>

@ -94,7 +94,7 @@
/> />
<h5>{{ category.info.name }}</h5> <h5>{{ category.info.name }}</h5>
</div> </div>
<div class="flex gap-2"> <div class="flex gap-2" v-if="securityStore.isAuthenticated && isCurrentTeacher">
<BaseButton <BaseButton
:label="t('Edit')" :label="t('Edit')"
icon="edit" icon="edit"
@ -156,7 +156,9 @@
> >
<div v-if="categoryToDelete"> <div v-if="categoryToDelete">
<p class="mb-2 font-semibold">{{ categoryToDelete.info.name }}</p> <p class="mb-2 font-semibold">{{ categoryToDelete.info.name }}</p>
<p>{{ t("With links") }}: {{ categoryToDelete.links.map((l) => l.title).join(", ") }}</p> <p>
{{ t("With links") }}: {{ (categoryToDelete.links || []).map((l) => l.title).join(", ") }}
</p>
</div> </div>
</BaseDialogDelete> </BaseDialogDelete>
</div> </div>
@ -375,4 +377,4 @@ async function fetchLinks() {
isLoading.value = false isLoading.value = false
} }
} }
</script> </script>

@ -95,66 +95,41 @@ $thisAnnouncementId = null;
switch ($action) { switch ($action) {
case 'move': case 'move':
throw new Exception('@todo move');
if (!$allowToEdit) { if (!$allowToEdit) {
api_not_allowed(true); api_not_allowed(true);
} }
$em = Database::getManager();
$repo = Container::getAnnouncementRepository();
/* Move announcement up/down */ /* Move announcement up/down */
$thisAnnouncementId = null;
$sortDirection = null;
if (!empty($_GET['down'])) { if (!empty($_GET['down'])) {
$thisAnnouncementId = (int) ($_GET['down']); $thisAnnouncementId = (int) $_GET['down'];
$sortDirection = 'DESC'; $sortDirection = 'down';
} } elseif (!empty($_GET['up'])) {
/* $thisAnnouncementId = (int) $_GET['up'];
if (!empty($_GET['up'])) { $sortDirection = 'up';
$thisAnnouncementId = (int) ($_GET['up']);
$sortDirection = 'ASC';
} }
if (!empty($sortDirection)) { $currentAnnouncement = $repo->find($thisAnnouncementId);
if (!in_array(trim(strtoupper($sortDirection)), ['ASC', 'DESC'])) { if ($currentAnnouncement) {
$sortDirection = 'ASC'; $resourceNode = $currentAnnouncement->getResourceNode();
} $currentDisplayOrder = $resourceNode->getDisplayOrder();
$sql = "SELECT DISTINCT announcement.id, announcement.display_order $newPosition = $currentDisplayOrder + ($sortDirection === 'down' ? 1 : -1);
FROM $tbl_announcement announcement $newPosition = max(0, $newPosition);
INNER JOIN $tbl_item_property itemproperty
ON (announcement.c_id = itemproperty.c_id) $resourceNode->setDisplayOrder($newPosition);
WHERE $em->flush();
announcement.c_id = $courseId AND }
itemproperty.c_id = $courseId AND
itemproperty.ref = announcement.id AND header('Location: '.$homeUrl);
itemproperty.tool = '".TOOL_ANNOUNCEMENT."' AND exit;
itemproperty.visibility <> 2
ORDER BY display_order $sortDirection";
$result = Database::query($sql);
$thisAnnouncementOrderFound = false;
$thisAnnouncementOrder = null;
while (list($announcementId, $announcementOrder) = Database::fetch_row($result)) {
if ($thisAnnouncementOrderFound) {
$nextAnnouncementId = $announcementId;
$nextAnnouncementOrder = $announcementOrder;
$sql = "UPDATE $tbl_announcement SET display_order = '$nextAnnouncementOrder'
WHERE c_id = $courseId AND id = $thisAnnouncementId";
Database::query($sql);
$sql = "UPDATE $tbl_announcement SET display_order = '$thisAnnouncementOrder'
WHERE c_id = $courseId AND id = $nextAnnouncementId";
Database::query($sql);
break;
}
// STEP 1 : FIND THE ORDER OF THE ANNOUNCEMENT
if ($announcementId == $thisAnnouncementId) {
$thisAnnouncementOrder = $announcementOrder;
$thisAnnouncementOrderFound = true;
}
}
Display::addFlash(Display::return_message(get_lang('The announcement has been moved')));
header('Location: '.$homeUrl);
exit;
}*/
break;
case 'view': case 'view':
$interbreadcrumb[] = [ $interbreadcrumb[] = [
'url' => api_get_path(WEB_CODE_PATH).'announcements/announcements.php?'.api_get_cidreq(), 'url' => api_get_path(WEB_CODE_PATH).'announcements/announcements.php?'.api_get_cidreq(),

@ -1388,7 +1388,7 @@ class AnnouncementManager
$group = api_get_group_entity(api_get_group_id()); $group = api_get_group_entity(api_get_group_id());
if (api_is_allowed_to_edit(false, true)) { if (api_is_allowed_to_edit(false, true)) {
$qb = $repo->getResourcesByCourse($course, $session, $group); $qb = $repo->getResourcesByCourse($course, $session, $group, null, true, true);
} else { } else {
$user = api_get_user_entity(); $user = api_get_user_entity();
if (null === $user) { if (null === $user) {
@ -1586,19 +1586,22 @@ class AnnouncementManager
href=\"".$actionUrl."&action=set_visibility&status=".$setNewStatus."&id=".$announcementId."&sec_token=".$stok."\">" href=\"".$actionUrl."&action=set_visibility&status=".$setNewStatus."&id=".$announcementId."&sec_token=".$stok."\">"
.$iconVisibility."</a>"; .$iconVisibility."</a>";
// DISPLAY MOVE UP COMMAND only if it is not the top announcement // Move up action
if (1 != $iterator) { if ($iterator == 1) {
$modify_icons .= "<a href=\"".$actionUrl."&action=move&up=".$announcementId."&sec_token=".$stok."\">" $move1 = $iconUpDisabled;
.$iconUp.'</a>';
} else { } else {
$modify_icons .= $iconUpDisabled; $move1 = "<a href=\"".$actionUrl."&action=move&up=".$announcementId."&sec_token=".$stok."\">".$iconUp."</a>";
} }
if ($iterator < $bottomAnnouncement) { $modify_icons .= $move1;
$modify_icons .= "<a href=\"".$actionUrl."&action=move&down=".$announcementId."&sec_token=".$stok."\">"
.$iconDown.'</a>'; // Move down action
if ($iterator == 4) {
$move2 = $iconDownDisabled;
} else { } else {
$modify_icons .= $iconDownDisabled; $move2 = "<a href=\"".$actionUrl."&action=move&down=".$announcementId."&sec_token=".$stok."\">".$iconDown."</a>";;
} }
$modify_icons .= $move2;
if (api_is_allowed_to_edit(false, true)) { if (api_is_allowed_to_edit(false, true)) {
if (true === $disableEdit) { if (true === $disableEdit) {
$modify_icons .= $deleteIconDisable; $modify_icons .= $deleteIconDisable;

@ -723,25 +723,11 @@ class GroupManager
} }
$session = api_get_session_entity(api_get_session_id()); $session = api_get_session_entity(api_get_session_id());
//$group = api_get_group_entity(api_get_group_id());
$group = null; $group = null;
$qb = $repo->getResourcesByCourse($course, $session, $group); $qb = $repo->getResourcesByCourse($course, $session, $group, null, true, true);
return $qb->getQuery()->getArrayResult(); return $qb->getQuery()->getArrayResult();
/*$course_info = api_get_course_info($course_code);
$courseId = $course_info['real_id'];
$table = Database::get_course_table(TABLE_GROUP_CATEGORY);
$sql = "SELECT * FROM $table
WHERE c_id = $courseId
ORDER BY display_order";
$res = Database::query($sql);
$cats = [];
while ($cat = Database::fetch_array($res)) {
$cats[] = $cat;
}
return $cats;*/
} }
/** /**
@ -919,14 +905,6 @@ class GroupManager
if (empty($title)) { if (empty($title)) {
return false; return false;
} }
/*$sql = "SELECT MAX(display_order)+1 as new_order
FROM $table
WHERE c_id = $course_id ";
$res = Database::query($sql);
$obj = Database::fetch_object($res);
if (!isset($obj->new_order)) {
$obj->new_order = 1;
}*/
$course = api_get_course_entity(api_get_course_int_id()); $course = api_get_course_entity(api_get_course_int_id());
$session = api_get_session_entity(api_get_session_id()); $session = api_get_session_entity(api_get_session_id());
@ -1087,24 +1065,25 @@ class GroupManager
*/ */
public static function swap_category_order($id1, $id2) public static function swap_category_order($id1, $id2)
{ {
$table = Database::get_course_table(TABLE_GROUP_CATEGORY); $em = Database::getManager();
$id1 = intval($id1);
$id2 = intval($id2); $groupCategoryRepo = $em->getRepository(CGroupCategory::class);
$course_id = api_get_course_int_id(); $cat1 = $groupCategoryRepo->find($id1);
$cat2 = $groupCategoryRepo->find($id2);
$sql = "SELECT iid, display_order FROM $table
WHERE iid IN ($id1,$id2) AND c_id = $course_id ";
$res = Database::query($sql);
$cat1 = Database::fetch_object($res);
$cat2 = Database::fetch_object($res);
if ($cat1 && $cat2) { if ($cat1 && $cat2) {
$sql = "UPDATE $table SET display_order=$cat2->display_order $node1 = $cat1->getResourceNode();
WHERE iid = $cat1->id AND c_id = $course_id "; $node2 = $cat2->getResourceNode();
Database::query($sql);
$sql = "UPDATE $table SET display_order=$cat1->display_order if ($node1 && $node2) {
WHERE iid = $cat2->id AND c_id = $course_id "; $order1 = $node1->getDisplayOrder();
Database::query($sql); $order2 = $node2->getDisplayOrder();
$node1->setDisplayOrder($order2);
$node2->setDisplayOrder($order1);
$em->flush();
}
} }
} }

@ -35,7 +35,6 @@ class Link extends Model
'title', 'title',
'description', 'description',
'category_id', 'category_id',
'display_order',
'on_homepage', 'on_homepage',
'target', 'target',
'session_id', 'session_id',

@ -32,7 +32,7 @@ class GetGlossaryCollectionController extends BaseResourceFileAction
$session = $em->getRepository(Session::class)->find($sid); $session = $em->getRepository(Session::class)->find($sid);
} }
$qb = $repo->getResourcesByCourse($course, $session); $qb = $repo->getResourcesByCourse($course, $session, null, null, true, true);
if ($q) { if ($q) {
$qb->andWhere($qb->expr()->like('resource.name', ':name')) $qb->andWhere($qb->expr()->like('resource.name', ':name'))
->setParameter('name', '%'.$q.'%') ->setParameter('name', '%'.$q.'%')

@ -36,9 +36,8 @@ class GetLinksCollectionController extends BaseResourceFileAction
$session = $em->getRepository(Session::class)->find($sid); $session = $em->getRepository(Session::class)->find($sid);
} }
$qb = $repo->getResourcesByCourse($course, $session); $qb = $repo->getResourcesByCourse($course, $session, null, null, true , true);
$qb->andWhere('resource.category = 0 OR resource.category is null'); $qb->andWhere('resource.category = 0 OR resource.category is null');
$qb->addOrderBy('resource.displayOrder', 'ASC');
$links = $qb->getQuery()->getResult(); $links = $qb->getQuery()->getResult();
if ($links) { if ($links) {
@ -51,12 +50,12 @@ class GetLinksCollectionController extends BaseResourceFileAction
'url' => $link->getUrl(), 'url' => $link->getUrl(),
'iid' => $link->getIid(), 'iid' => $link->getIid(),
'linkVisible' => $link->getFirstResourceLink()->getVisibility(), 'linkVisible' => $link->getFirstResourceLink()->getVisibility(),
'position' => $link->getDisplayOrder(), 'position' => $link->getResourceNode()->getDisplayOrder(),
]; ];
} }
} }
$qb = $repoCategory->getResourcesByCourse($course, $session); $qb = $repoCategory->getResourcesByCourse($course, $session, null, null, true, true);
$categories = $qb->getQuery()->getResult(); $categories = $qb->getQuery()->getResult();
if ($categories) { if ($categories) {
/** @var CLinkCategory $category */ /** @var CLinkCategory $category */
@ -64,7 +63,6 @@ class GetLinksCollectionController extends BaseResourceFileAction
$categoryId = $category->getIid(); $categoryId = $category->getIid();
$qbLink = $repo->getResourcesByCourse($course, $session); $qbLink = $repo->getResourcesByCourse($course, $session);
$qbLink->andWhere('resource.category = '.$categoryId); $qbLink->andWhere('resource.category = '.$categoryId);
$qbLink->addOrderBy('resource.displayOrder', 'ASC');
$links = $qbLink->getQuery()->getResult(); $links = $qbLink->getQuery()->getResult();
$categoryInfo = [ $categoryInfo = [
@ -84,7 +82,7 @@ class GetLinksCollectionController extends BaseResourceFileAction
'url' => $link->getUrl(), 'url' => $link->getUrl(),
'iid' => $link->getIid(), 'iid' => $link->getIid(),
'linkVisible' => $link->getFirstResourceLink()->getVisibility(), 'linkVisible' => $link->getFirstResourceLink()->getVisibility(),
'position' => $link->getDisplayOrder(), 'position' => $link->getResourceNode()->getDisplayOrder(),
]; ];
$dataResponse['categories'][$categoryId]['links'] = $items; $dataResponse['categories'][$categoryId]['links'] = $items;

@ -21,7 +21,11 @@ class UpdatePositionLink extends AbstractController
$requestData = json_decode($request->getContent(), true); $requestData = json_decode($request->getContent(), true);
$newPosition = (int) $requestData['position']; $newPosition = (int) $requestData['position'];
$link->setDisplayOrder($newPosition); $resourceNode = $link->getResourceNode();
if ($resourceNode) {
$resourceNode->setDisplayOrder($newPosition);
$em->flush();
}
return $link; return $link;
} }

@ -123,7 +123,7 @@ class SettingsCurrent
return $this->selectedValue; return $this->selectedValue;
} }
public function setSelectedValue(?string $selectedValue): self public function setSelectedValue(int|float|string|null $selectedValue): self
{ {
$this->selectedValue = $selectedValue; $this->selectedValue = $selectedValue;

@ -58,10 +58,11 @@ final class Version20230615213500 extends AbstractMigrationChamilo
if ($item) { if ($item) {
$item->setDisplayOrder($position); $item->setDisplayOrder($position);
$em->persist($item); $em->persist($item);
$em->flush();
} }
} }
} }
} }
$em->flush();
} }
} }

@ -0,0 +1,81 @@
<?php
declare(strict_types=1);
/* For licensing terms, see /license.txt */
namespace Chamilo\CoreBundle\Migrations\Schema\V200;
use Chamilo\CoreBundle\Migrations\AbstractMigrationChamilo;
use Chamilo\CourseBundle\Repository\CAnnouncementRepository;
use Chamilo\CourseBundle\Repository\CGlossaryRepository;
use Chamilo\CourseBundle\Repository\CGroupCategoryRepository;
use Chamilo\CourseBundle\Repository\CLinkCategoryRepository;
use Chamilo\CourseBundle\Repository\CLinkRepository;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Schema\Schema;
final class Version20240112191200 extends AbstractMigrationChamilo
{
public function getDescription(): string
{
return 'Migrate tool display_order as resource order';
}
public function up(Schema $schema): void
{
$container = $this->getContainer();
$doctrine = $container->get('doctrine');
$em = $doctrine->getManager();
/** @var Connection $connection */
$connection = $em->getConnection();
$linkCategoryRepo = $container->get(CLinkCategoryRepository::class);
$linkRepo = $container->get(CLinkRepository::class);
$groupCategoryRepo = $container->get(CGroupCategoryRepository::class);
$glossaryRepo = $container->get(CGlossaryRepository::class);
$announcementRepo = $container->get(CAnnouncementRepository::class);
$this->updateResourceNodeDisplayOrder($linkCategoryRepo, 'c_link_category', $em);
$this->updateResourceNodeDisplayOrder($linkRepo, 'c_link', $em);
$this->updateResourceNodeDisplayOrder($groupCategoryRepo, 'c_group_category', $em);
$this->updateResourceNodeDisplayOrder($glossaryRepo, 'c_glossary', $em);
$this->updateResourceNodeDisplayOrder($announcementRepo, 'c_announcement', $em);
}
private function updateResourceNodeDisplayOrder($resourceRepo, $tableName, $em) {
/** @var Connection $connection */
$connection = $em->getConnection();
try {
$testResult = $connection->executeQuery("SELECT display_order FROM $tableName LIMIT 1");
$columnExists = true;
} catch (\Exception $e) {
$columnExists = false;
}
if ($columnExists) {
$sql = "SELECT * FROM $tableName ORDER BY display_order";
$result = $connection->executeQuery($sql);
$resources = $result->fetchAllAssociative();
foreach ($resources as $resourceData) {
$resourceId = (int) $resourceData['iid'];
$resourcePosition = (int) $resourceData['display_order'];
$resource = $resourceRepo->find($resourceId);
if ($resource && $resource->hasResourceNode()) {
$resourceNode = $resource->getResourceNode();
if ($resourceNode) {
$resourceNode->setDisplayOrder($resourcePosition);
}
}
}
$em->flush();
}
}
}

@ -387,12 +387,16 @@ abstract class ResourceRepository extends ServiceEntityRepository
return $qb; return $qb;
} }
public function getResourcesByCourse(Course $course, Session $session = null, CGroup $group = null, ResourceNode $parentNode = null, bool $displayOnlyPublished = true): QueryBuilder public function getResourcesByCourse(Course $course, Session $session = null, CGroup $group = null, ResourceNode $parentNode = null, bool $displayOnlyPublished = true, bool $displayOrder = false): QueryBuilder
{ {
$qb = $this->getResources($parentNode); $qb = $this->getResources($parentNode);
$this->addVisibilityQueryBuilder($qb, true, $displayOnlyPublished); $this->addVisibilityQueryBuilder($qb, true, $displayOnlyPublished);
$this->addCourseSessionGroupQueryBuilder($course, $session, $group, $qb); $this->addCourseSessionGroupQueryBuilder($course, $session, $group, $qb);
if ($displayOrder) {
$qb->orderBy('node.displayOrder', 'ASC');
}
return $qb; return $qb;
} }

@ -35,9 +35,6 @@ class CAnnouncement extends AbstractResource implements ResourceInterface, Strin
#[ORM\Column(name: 'end_date', type: 'date', nullable: true)] #[ORM\Column(name: 'end_date', type: 'date', nullable: true)]
protected ?DateTime $endDate = null; protected ?DateTime $endDate = null;
#[ORM\Column(name: 'display_order', type: 'integer', nullable: false)]
protected int $displayOrder;
#[ORM\Column(name: 'email_sent', type: 'boolean', nullable: true)] #[ORM\Column(name: 'email_sent', type: 'boolean', nullable: true)]
protected ?bool $emailSent = null; protected ?bool $emailSent = null;
@ -50,7 +47,6 @@ class CAnnouncement extends AbstractResource implements ResourceInterface, Strin
public function __construct() public function __construct()
{ {
$this->content = ''; $this->content = '';
$this->displayOrder = 1;
$this->attachments = new ArrayCollection(); $this->attachments = new ArrayCollection();
} }
@ -107,23 +103,6 @@ class CAnnouncement extends AbstractResource implements ResourceInterface, Strin
return $this->endDate; return $this->endDate;
} }
public function setDisplayOrder(int $displayOrder): self
{
$this->displayOrder = $displayOrder;
return $this;
}
/**
* Get displayOrder.
*
* @return int
*/
public function getDisplayOrder()
{
return $this->displayOrder;
}
public function setEmailSent(bool $emailSent): self public function setEmailSent(bool $emailSent): self
{ {
$this->emailSent = $emailSent; $this->emailSent = $emailSent;

@ -197,10 +197,6 @@ class CGlossary extends AbstractResource implements ResourceInterface, Stringabl
#[ORM\Column(name: 'description', type: 'text', nullable: false)] #[ORM\Column(name: 'description', type: 'text', nullable: false)]
protected ?string $description = null; protected ?string $description = null;
#[Groups(['glossary:read', 'glossary:write'])]
#[ORM\Column(name: 'display_order', type: 'integer', nullable: true)]
protected ?int $displayOrder = null;
public function __toString(): string public function __toString(): string
{ {
return $this->getName(); return $this->getName();
@ -233,21 +229,6 @@ class CGlossary extends AbstractResource implements ResourceInterface, Stringabl
return $this->description; return $this->description;
} }
public function setDisplayOrder(int $displayOrder): self
{
$this->displayOrder = $displayOrder;
return $this;
}
/**
* Get displayOrder.
*/
public function getDisplayOrder(): ?int
{
return $this->displayOrder;
}
public function getIid(): ?int public function getIid(): ?int
{ {
return $this->iid; return $this->iid;

@ -68,7 +68,6 @@ use Symfony\Component\Validator\Constraints as Assert;
'title' => ['type' => 'string'], 'title' => ['type' => 'string'],
'description' => ['type' => 'string'], 'description' => ['type' => 'string'],
'category_id' => ['type' => 'int'], 'category_id' => ['type' => 'int'],
'displayOrder' => ['type' => 'integer'],
'target' => ['type' => 'string'], 'target' => ['type' => 'string'],
'parentResourceNodeId' => ['type' => 'integer'], 'parentResourceNodeId' => ['type' => 'integer'],
'resourceLinkList' => [ 'resourceLinkList' => [
@ -135,7 +134,6 @@ use Symfony\Component\Validator\Constraints as Assert;
], ],
)] )]
#[ApiFilter(SearchFilter::class, properties: ['title' => 'partial', 'resourceNode.parent' => 'exact'])] #[ApiFilter(SearchFilter::class, properties: ['title' => 'partial', 'resourceNode.parent' => 'exact'])]
#[ApiFilter(OrderFilter::class, properties: ['resourceNode.displayOrder'])]
#[ORM\Table(name: 'c_link')] #[ORM\Table(name: 'c_link')]
#[ORM\Entity(repositoryClass: CLinkRepository::class)] #[ORM\Entity(repositoryClass: CLinkRepository::class)]
class CLink extends AbstractResource implements ResourceInterface, Stringable class CLink extends AbstractResource implements ResourceInterface, Stringable
@ -164,13 +162,8 @@ class CLink extends AbstractResource implements ResourceInterface, Stringable
#[Groups(['link:read', 'link:write', 'link:browse'])] #[Groups(['link:read', 'link:write', 'link:browse'])]
#[ORM\ManyToOne(targetEntity: CLinkCategory::class, inversedBy: 'links')] #[ORM\ManyToOne(targetEntity: CLinkCategory::class, inversedBy: 'links')]
#[ORM\JoinColumn(name: 'category_id', referencedColumnName: 'iid', onDelete: 'SET NULL')] #[ORM\JoinColumn(name: 'category_id', referencedColumnName: 'iid', onDelete: 'SET NULL')]
#[Gedmo\SortableGroup]
protected ?CLinkCategory $category = null; protected ?CLinkCategory $category = null;
#[ORM\Column(name: 'display_order', type: 'integer', nullable: false)]
#[Gedmo\SortablePosition]
protected int $displayOrder;
#[Groups(['link:read', 'link:write', 'link:browse'])] #[Groups(['link:read', 'link:write', 'link:browse'])]
#[ORM\Column(name: 'target', type: 'string', length: 10, nullable: true)] #[ORM\Column(name: 'target', type: 'string', length: 10, nullable: true)]
protected ?string $target = null; protected ?string $target = null;
@ -180,7 +173,6 @@ class CLink extends AbstractResource implements ResourceInterface, Stringable
public function __construct() public function __construct()
{ {
$this->displayOrder = 0;
$this->description = ''; $this->description = '';
} }
@ -225,23 +217,6 @@ class CLink extends AbstractResource implements ResourceInterface, Stringable
return $this->description; return $this->description;
} }
public function setDisplayOrder(int $displayOrder): self
{
$this->displayOrder = $displayOrder;
return $this;
}
/**
* Get displayOrder.
*
* @return int
*/
public function getDisplayOrder()
{
return $this->displayOrder;
}
public function setTarget(string $target): self public function setTarget(string $target): self
{ {
$this->target = $target; $this->target = $target;

@ -147,10 +147,6 @@ class CLinkCategory extends AbstractResource implements ResourceInterface, Strin
#[ORM\Column(name: 'description', type: 'text', nullable: true)] #[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description; protected ?string $description;
#[Groups(['link_category:read', 'link_category:write'])]
#[ORM\Column(name: 'display_order', type: 'integer', nullable: false)]
protected int $displayOrder;
#[Groups(['link_category:read', 'link_category:browse'])] #[Groups(['link_category:read', 'link_category:browse'])]
protected bool $linkCategoryVisible = true; protected bool $linkCategoryVisible = true;
@ -163,7 +159,6 @@ class CLinkCategory extends AbstractResource implements ResourceInterface, Strin
public function __construct() public function __construct()
{ {
$this->description = ''; $this->description = '';
$this->displayOrder = 0;
$this->links = new ArrayCollection(); $this->links = new ArrayCollection();
} }
@ -201,18 +196,6 @@ class CLinkCategory extends AbstractResource implements ResourceInterface, Strin
return $this->description; return $this->description;
} }
public function setDisplayOrder(int $displayOrder): self
{
$this->displayOrder = $displayOrder;
return $this;
}
public function getDisplayOrder(): int
{
return $this->displayOrder;
}
public function toggleVisibility(): void public function toggleVisibility(): void
{ {
$this->linkCategoryVisible = !$this->getFirstResourceLink()->getVisibility(); $this->linkCategoryVisible = !$this->getFirstResourceLink()->getVisibility();

Loading…
Cancel
Save