示例#1
0
 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;
 }
示例#2
0
 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);
     }
 }
示例#6
0
 /**
  * @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);
 }