/** * 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); }
/** * @EXT\Route( * "/api/workspace/home/tab/widget/{widgetHomeTabConfig}/delete", * name="api_delete_workspace_widget_home_tab_config", * options = {"expose"=true} * ) * * Deletes a widget * * @return \Symfony\Component\HttpFoundation\JsonResponse */ public function deleteAdminWidgetHomeTabConfigAction(WidgetHomeTabConfig $widgetHomeTabConfig) { $workspace = $widgetHomeTabConfig->getWorkspace(); $this->checkToolEditionAccess($workspace); $widgetInstance = $widgetHomeTabConfig->getWidgetInstance(); $datas = $this->serializer->serialize($widgetInstance, 'json', SerializationContext::create()->setGroups(['api_widget'])); $this->homeTabManager->deleteWidgetHomeTabConfig($widgetHomeTabConfig); $this->widgetManager->removeInstance($widgetInstance); $event = new LogWidgetWorkspaceDeleteEvent($workspace, json_decode($datas, true)); $this->eventDispatcher->dispatch('log', $event); return new JsonResponse($datas, 200); }