added avatars, show user teams in list, new team dashboard widgets (#1150)

This commit is contained in:
Kevin Papst
2019-10-03 13:44:16 +02:00
committed by GitHub
parent 718ad4b398
commit e8c25d8ac5
120 changed files with 2585 additions and 642 deletions

View File

@@ -10,9 +10,11 @@
namespace App\Controller;
use App\Event\DashboardEvent;
use App\Widget\Type\CompoundChart;
use App\Widget\Type\AbstractContainer;
use App\Widget\Type\AuthorizedWidget;
use App\Widget\Type\CompoundRow;
use App\Widget\WidgetContainerInterface;
use App\Widget\WidgetException;
use App\Widget\WidgetService;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
@@ -67,11 +69,23 @@ class DashboardController extends AbstractController
continue;
}
// TODO this should be dynamic
if ($widgetRow['type'] === 'compoundChart') {
$row = new CompoundChart();
} else {
$row = new CompoundRow();
if (!isset($widgetRow['type'])) {
$widgetRow['type'] = CompoundRow::class;
}
if (!class_exists($widgetRow['type'])) {
throw new WidgetException(sprintf('Unknown widget type "%s"', $widgetRow['type']));
}
$row = new $widgetRow['type']();
if (!($row instanceof AbstractContainer)) {
throw new WidgetException(
sprintf(
'Expected widget type to be an instanceof "%s", but found "%s"',
AbstractContainer::class,
$widgetRow['type']
)
);
}
$row->setTitle($widgetRow['title'] ?? '');
@@ -82,7 +96,23 @@ class DashboardController extends AbstractController
throw new \Exception(sprintf('Unknown widget "%s"', $widgetName));
}
$row->addWidget($this->widgets->getWidget($widgetName));
$widget = $this->widgets->getWidget($widgetName);
$add = true;
if ($widget instanceof AuthorizedWidget) {
$tmp = false;
foreach ($widget->getPermissions() as $perm) {
if ($this->isGranted($perm)) {
$tmp = true;
break;
}
}
$add = $tmp;
}
if ($add) {
$row->addWidget($widget);
}
}
$event->addSection($row);