/** * @EXT\Route( * "/api/admin/home/tab/{homeTabConfig}/type/{homeTabType}/edit", * name="api_put_admin_home_tab_edition", * options = {"expose"=true} * ) * @EXT\ParamConverter("user", options={"authenticatedUser" = true}) * * Edits an admin home tab * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function putAdminHomeTabEditionAction(HomeTabConfig $homeTabConfig, $homeTabType = 'desktop') { $homeTab = $homeTabConfig->getHomeTab(); $this->checkAdminHomeTab($homeTab, $homeTabType); $this->checkAdminHomeTabConfig($homeTabConfig, $homeTabType); $formType = new HomeTabType('admin'); $formType->enableApi(); $form = $this->createForm($formType); $form->submit($this->request); if ($form->isValid()) { $formDatas = $form->getData(); $color = $form->get('color')->getData(); $locked = $form->get('locked')->getData(); $visible = $form->get('visible')->getData(); $roles = $formDatas['roles']; $homeTab->emptyRoles(); foreach ($roles as $role) { $homeTab->addRole($role); } $homeTab->setName($formDatas['name']); $homeTabConfig->setVisible($visible); $homeTabConfig->setLocked($locked); $details = $homeTabConfig->getDetails(); if (is_null($details)) { $details = []; } $details['color'] = $color; $homeTabConfig->setDetails($details); $this->homeTabManager->persistHomeTabConfigs($homeTab, $homeTabConfig); $event = new LogHomeTabAdminEditEvent($homeTabConfig); $this->eventDispatcher->dispatch('log', $event); return new JsonResponse($this->serializer->serialize($homeTabConfig, 'json', SerializationContext::create()->setGroups(['api_home_tab'])), 200); } else { $options = ['http_code' => 400, 'extra_parameters' => null, 'serializer_group' => 'api_home_tab']; return $this->apiManager->handleFormView('ClarolineCoreBundle:API:HomeTab\\adminHomeTabEditForm.html.twig', $form, $options); } }
/** * @EXT\Route( * "/api/desktop/home/tab/{homeTab}/edit", * name="api_put_user_home_tab_edition", * options = {"expose"=true} * ) * @EXT\ParamConverter("user", options={"authenticatedUser" = true}) * * Edits a home tab * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function putUserHomeTabEditionAction(User $user, HomeTab $homeTab) { $this->checkHomeLocked(); $this->checkHomeTabEdition($homeTab, $user); $formType = new HomeTabType(); $formType->enableApi(); $form = $this->createForm($formType); $form->submit($this->request); if ($form->isValid()) { $homeTabConfig = $this->homeTabManager->getHomeTabConfigByHomeTabAndUser($homeTab, $user); if (is_null($homeTabConfig)) { $homeTabConfig = new HomeTabConfig(); $homeTabConfig->setHomeTab($homeTab); $homeTabConfig->setType('desktop'); $homeTabConfig->setUser($user); $homeTabConfig->setLocked(false); $homeTabConfig->setVisible(true); $lastOrder = $this->homeTabManager->getOrderOfLastDesktopHomeTabConfigByUser($user); if (is_null($lastOrder['order_max'])) { $homeTabConfig->setTabOrder(1); } else { $homeTabConfig->setTabOrder($lastOrder['order_max'] + 1); } } $formDatas = $form->getData(); $homeTab->setName($formDatas['name']); $color = $form->get('color')->getData(); $details = $homeTabConfig->getDetails(); if (is_null($details)) { $details = []; } $details['color'] = $color; $homeTabConfig->setDetails($details); $this->homeTabManager->persistHomeTabConfigs($homeTab, $homeTabConfig); $event = new LogHomeTabUserEditEvent($homeTabConfig); $this->eventDispatcher->dispatch('log', $event); return new JsonResponse($this->serializer->serialize($homeTabConfig, 'json', SerializationContext::create()->setGroups(['api_home_tab'])), 200); } else { $options = ['http_code' => 400, 'extra_parameters' => null, 'serializer_group' => 'api_home_tab']; return $this->apiManager->handleFormView('ClarolineCoreBundle:API:HomeTab\\userHomeTabEditForm.html.twig', $form, $options); } }