/**
  * Constructor.
  */
 public function __construct(HomeTab $homeTab, WidgetHomeTabConfig $whtc, WidgetDisplayConfig $wdc = null)
 {
     $widgetInstance = $whtc->getWidgetInstance();
     $widget = $widgetInstance->getWidget();
     $details = [];
     $details['tabId'] = $homeTab->getId();
     $details['tabName'] = $homeTab->getName();
     $details['tabType'] = $homeTab->getType();
     $details['tabIcon'] = $homeTab->getIcon();
     $details['widgetId'] = $widget->getId();
     $details['widgetName'] = $widget->getName();
     $details['widgetIsConfigurable'] = $widget->isConfigurable();
     $details['widgetIsExportable'] = $widget->isExportable();
     $details['widgetIsDisplayableInWorkspace'] = $widget->isDisplayableInWorkspace();
     $details['widgetIsDisplayableInDesktop'] = $widget->isDisplayableInDesktop();
     $details['id'] = $widgetInstance->getId();
     $details['name'] = $widgetInstance->getName();
     $details['icon'] = $widgetInstance->getIcon();
     $details['isAdmin'] = $widgetInstance->isAdmin();
     $details['isDesktop'] = $widgetInstance->isDesktop();
     $details['widgetHomeTabConfigId'] = $whtc->getId();
     $details['order'] = $whtc->getWidgetOrder();
     $details['type'] = $whtc->getType();
     $details['visible'] = $whtc->isVisible();
     $details['locked'] = $whtc->isLocked();
     if (!is_null($wdc)) {
         $details['widgetDisplayConfigId'] = $wdc->getId();
         $details['row'] = $wdc->getRow();
         $details['column'] = $wdc->getColumn();
         $details['width'] = $wdc->getWidth();
         $details['height'] = $wdc->getHeight();
         $details['color'] = $wdc->getColor();
     }
     parent::__construct(self::ACTION, $details);
 }
예제 #2
0
 public function changeVisibilityWidgetHomeTabConfig(WidgetHomeTabConfig $widgetHomeTabConfig)
 {
     $isVisible = !$widgetHomeTabConfig->isVisible();
     $widgetHomeTabConfig->setVisible($isVisible);
     $this->om->flush();
 }
 /**
  * @EXT\Route(
  *     "/api/workspace/home/tab/widget/config/{whtc}/display/{wdc}/edit",
  *     name="api_put_workspace_widget_instance_edition",
  *     options = {"expose"=true}
  * )
  *
  * Edits widget instance config
  */
 public function putWorkspaceWidgetInstanceEditionAction(WidgetHomeTabConfig $whtc, WidgetDisplayConfig $wdc)
 {
     $workspace = $whtc->getWorkspace();
     $this->checkToolEditionAccess($workspace);
     $widgetInstance = $wdc->getWidgetInstance();
     $this->checkWorkspaceWidgetInstance($workspace, $widgetInstance);
     $this->checkWorkspaceWidgetDisplayConfig($workspace, $wdc);
     $widget = $widgetInstance->getWidget();
     $color = $wdc->getColor();
     $details = $wdc->getDetails();
     $visible = $whtc->isVisible();
     $locked = $whtc->isLocked();
     $textTitleColor = isset($details['textTitleColor']) ? $details['textTitleColor'] : null;
     $formType = new WidgetInstanceConfigType('workspace', $this->bundles, false, [], $color, $textTitleColor, $locked, $visible, false);
     $formType->enableApi();
     $form = $this->createForm($formType, $widgetInstance);
     $form->submit($this->request);
     if ($form->isValid()) {
         $instance = $form->getData();
         $name = $instance->getName();
         $color = $form->get('color')->getData();
         $textTitleColor = $form->get('textTitleColor')->getData();
         $visible = $form->get('visible')->getData();
         $widgetInstance->setName($name);
         $whtc->setVisible($visible);
         $wdc->setColor($color);
         $details = $wdc->getDetails();
         if (is_null($details)) {
             $details = [];
         }
         $details['textTitleColor'] = $textTitleColor;
         $wdc->setDetails($details);
         $this->widgetManager->persistWidgetConfigs($widgetInstance, null, $wdc);
         $event = new LogWidgetWorkspaceEditEvent($widgetInstance, $whtc, $wdc);
         $this->eventDispatcher->dispatch('log', $event);
         $widgetDatas = ['config' => $this->serializer->serialize($whtc, 'json', SerializationContext::create()->setGroups(['api_widget'])), 'display' => $this->serializer->serialize($wdc, 'json', SerializationContext::create()->setGroups(['api_widget']))];
         return new JsonResponse($widgetDatas, 200);
     } else {
         $options = ['http_code' => 400, 'extra_parameters' => null, 'serializer_group' => 'api_widget', 'extra_infos' => $widget->isConfigurable()];
         return $this->apiManager->handleFormView('ClarolineCoreBundle:API:Widget\\widgetInstanceEditForm.html.twig', $form, $options);
     }
 }
예제 #4
0
 public function changeVisibilityWidgetHomeTabConfig(WidgetHomeTabConfig $widgetHomeTabConfig, $visible = null)
 {
     $isVisible = is_null($visible) ? !$widgetHomeTabConfig->isVisible() : $visible;
     $widgetHomeTabConfig->setVisible($isVisible);
     $this->om->flush();
 }