public function createUserVersion(HomeTabConfig $homeTabConfig, User $user) { $newHomeTabConfig = new HomeTabConfig(); $newHomeTabConfig->setHomeTab($homeTabConfig->getHomeTab()); $newHomeTabConfig->setType($homeTabConfig->getType()); $newHomeTabConfig->setUser($user); $newHomeTabConfig->setVisible($homeTabConfig->isVisible()); $newHomeTabConfig->setLocked($homeTabConfig->isLocked()); $newHomeTabConfig->setTabOrder($homeTabConfig->getTabOrder()); $this->om->persist($newHomeTabConfig); $this->om->flush(); return $newHomeTabConfig; }
private function reinitializeDesktopTabs() { $this->log('Reinitializing desktop tabs...'); $this->conn->query("\n DELETE FROM claro_home_tab\n WHERE type IN ('desktop', 'admin_desktop')\n "); $em = $this->container->get('doctrine.orm.entity_manager'); $em->clear(); // weird but needed... $widgetRepo = $em->getRepository('ClarolineCoreBundle:Widget\\Widget'); $widgets = array('claroline_announcement_widget', 'my_workspaces'); $users = $em->getRepository('ClarolineCoreBundle:User')->findAll(); foreach ($users as $user) { $tab = new HomeTab(); $tab->setName('Informations'); $tab->setType('desktop'); $tab->setUser($user); $em->persist($tab); $tabConfig = new HomeTabConfig(); $tabConfig->setHomeTab($tab); $tabConfig->setType('desktop'); $tabConfig->setTabOrder(1); $tabConfig->setUser($user); $em->persist($tabConfig); for ($i = 0, $count = count($widgets); $i < $count; ++$i) { $widget = $widgetRepo->findOneByName($widgets[$i]); $instance = new WidgetInstance($widget); $instance->setName($this->translator->trans($widget->getName(), array(), 'widget')); $instance->setIsAdmin(false); $instance->setIsDesktop(true); $instance->setWidget($widget); $instance->setUser($user); $em->persist($instance); $widgetTabConfig = new WidgetHomeTabConfig(); $widgetTabConfig->setType('desktop'); $widgetTabConfig->setHomeTab($tab); $widgetTabConfig->setWidgetInstance($instance); $widgetTabConfig->setWidgetOrder($i + 1); $widgetTabConfig->setUser($user); $em->persist($widgetTabConfig); } } $em->flush(); }
/** * @EXT\Route( * "/api/workspace/home/tab/{homeTabConfig}/bookmark", * name="api_post_workspace_home_tab_bookmark", * options = {"expose"=true} * ) * @EXT\ParamConverter("user", options={"authenticatedUser" = true}) * * Bookmark the given workspace homeTab. * * @return Response */ public function postWorkspaceHomeTabBookmarkAction(User $user, HomeTabConfig $homeTabConfig) { $homeTab = $homeTabConfig->getHomeTab(); $this->checkRoleAccessToHomeTab($homeTab); $userHTC = $this->homeTabManager->getOneVisibleWorkspaceUserHTC($homeTab, $user); if (is_null($userHTC)) { $workspace = $homeTab->getWorkspace(); $userHTC = new HomeTabConfig(); $userHTC->setHomeTab($homeTab); $userHTC->setUser($user); $userHTC->setWorkspace($workspace); $userHTC->setType('workspace_user'); $lastOrder = $this->homeTabManager->getOrderOfLastWorkspaceUserHomeTabByUser($user); if (is_null($lastOrder['order_max'])) { $userHTC->setTabOrder(1); } else { $userHTC->setTabOrder($lastOrder['order_max'] + 1); } $userHTC->setDetails($homeTabConfig->getDetails()); $this->homeTabManager->insertHomeTabConfig($userHTC); $event = new LogHomeTabWorkspacePinEvent($homeTabConfig); $this->eventDispatcher->dispatch('log', $event); } return new JsonResponse('success', 200); }
protected static function createDesktopHomeTabConfig($name, HomeTab $homeTab, User $user, $type, $visible, $locked, $tabOrder) { $homeTabConfig = new HomeTabConfig(); $homeTabConfig->setHomeTab($homeTab); $homeTabConfig->setUser($user); $homeTabConfig->setType($type); $homeTabConfig->setVisible($visible); $homeTabConfig->setLocked($locked); $homeTabConfig->setTabOrder($tabOrder); self::create($name, $homeTabConfig); self::$om->flush(); }
/** * @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); } }
/** * @EXT\Route( * "workspace/{workspace}/home_tab/{homeTab}/bookmark", * name="claro_workspace_home_tab_bookmark", * options = {"expose"=true} * ) * @EXT\ParamConverter("user", options={"authenticatedUser" = true}) * * Bookmark the given workspace homeTab. * * @return Response */ public function workspaceHomeTabBookmarkAction(Workspace $workspace, HomeTab $homeTab, User $user) { $this->checkWorkspaceAccessForHomeTab($homeTab, $workspace); $homeTabConfig = $this->homeTabManager->getOneVisibleWorkspaceUserHTC($homeTab, $user); if (is_null($homeTabConfig)) { $homeTabConfig = new HomeTabConfig(); $homeTabConfig->setHomeTab($homeTab); $homeTabConfig->setUser($user); $homeTabConfig->setWorkspace($workspace); $homeTabConfig->setType('workspace_user'); $lastOrder = $this->homeTabManager->getOrderOfLastWorkspaceUserHomeTabByUser($user); if (is_null($lastOrder['order_max'])) { $homeTabConfig->setTabOrder(1); } else { $homeTabConfig->setTabOrder($lastOrder['order_max'] + 1); } $this->homeTabManager->insertHomeTabConfig($homeTabConfig); } return new Response('success', 200); }