OneBot: Leantime 改造版源码(BOM/Univer 表格/AI 接管/品牌替换等)
This commit is contained in:
107
app/Domain/Menu/Composers/ProjectSelector.php
Normal file
107
app/Domain/Menu/Composers/ProjectSelector.php
Normal file
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
namespace Leantime\Domain\Menu\Composers;
|
||||
|
||||
use Illuminate\Contracts\Container\BindingResolutionException;
|
||||
use Leantime\Core\Controller\Composer;
|
||||
use Leantime\Core\Controller\Frontcontroller as FrontcontrollerCore;
|
||||
use Leantime\Core\Events\DispatchesEvents;
|
||||
use Leantime\Core\Http\IncomingRequest as IncomingRequestCore;
|
||||
|
||||
class ProjectSelector extends Composer
|
||||
{
|
||||
use DispatchesEvents;
|
||||
|
||||
public static array $views = [
|
||||
'menu::projectSelector',
|
||||
];
|
||||
|
||||
private IncomingRequestCore $incomingRequest;
|
||||
|
||||
private \Leantime\Domain\Menu\Services\Menu $menuService;
|
||||
|
||||
public function init(
|
||||
\Leantime\Domain\Menu\Services\Menu $menuService,
|
||||
IncomingRequestCore $request
|
||||
): void {
|
||||
$this->menuService = $menuService;
|
||||
$this->incomingRequest = $request;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws BindingResolutionException
|
||||
*/
|
||||
public function with(): array
|
||||
{
|
||||
$allAssignedprojects =
|
||||
$allAvailableProjects =
|
||||
$recentProjects =
|
||||
$favoriteProjects =
|
||||
$clients =
|
||||
$allAvailableProjectsHierarchy =
|
||||
$allAssignedprojectsHierarchy = [];
|
||||
|
||||
$currentClient = '';
|
||||
$currentProject = '';
|
||||
$projectType = '';
|
||||
$menuType = 'default';
|
||||
|
||||
$projectSelectFilter = session('usersettings.projectSelectFilter', [
|
||||
'groupBy' => 'structure',
|
||||
'client' => null,
|
||||
]);
|
||||
|
||||
if (session()->exists('userdata')) {
|
||||
// Getting all projects (ignoring client filter, clients are filtered on the frontend)
|
||||
$projectVars = $this->menuService->getUserProjectList(session('userdata.id'), $projectSelectFilter['client']);
|
||||
|
||||
$allAssignedprojects = $projectVars['assignedProjects'];
|
||||
$allAvailableProjects = $projectVars['availableProjects'];
|
||||
$allAvailableProjectsHierarchy = $projectVars['availableProjectsHierarchy'];
|
||||
$allAssignedprojectsHierarchy = $projectVars['assignedHierarchy'];
|
||||
$currentClient = $projectVars['currentClient'];
|
||||
|
||||
$projectType = $projectVars['projectType'];
|
||||
$recentProjects = $projectVars['recentProjects'];
|
||||
$favoriteProjects = $projectVars['favoriteProjects'];
|
||||
$clients = $projectVars['clients'];
|
||||
$currentProject = $projectVars['currentProject'];
|
||||
}
|
||||
|
||||
if (str_contains($redirectUrl = $this->incomingRequest->getRequestUri(), 'showProject')) {
|
||||
$redirectUrl = '/dashboard/show';
|
||||
}
|
||||
|
||||
$projectTypeAvatars = $this->menuService->getProjectTypeAvatars();
|
||||
$projectSelectGroupOptions = $this->menuService->getProjectSelectorGroupingOptions();
|
||||
|
||||
$newProjectUrl = self::dispatch_filter('startSomething', BASE_URL.'/projects/newProject');
|
||||
|
||||
return [
|
||||
'currentClient' => $currentClient,
|
||||
'module' => FrontcontrollerCore::getModuleName(),
|
||||
'action' => FrontcontrollerCore::getActionName(),
|
||||
'currentProjectType' => $projectType,
|
||||
'allAssignedProjects' => $allAssignedprojects,
|
||||
'allAvailableProjects' => $allAvailableProjects,
|
||||
'allAvailableProjectsHierarchy' => $allAvailableProjectsHierarchy,
|
||||
'projectHierarchy' => $allAssignedprojectsHierarchy,
|
||||
'recentProjects' => $recentProjects,
|
||||
'currentProject' => $currentProject,
|
||||
'settingsLink' => [
|
||||
'label' => __('menu.project_settings'),
|
||||
'module' => 'projects',
|
||||
'action' => 'showProject',
|
||||
'settingsIcon' => __('menu.project_settings_icon'),
|
||||
'settingsTooltip' => __('menu.project_settings_tooltip'),
|
||||
],
|
||||
'redirectUrl' => $redirectUrl,
|
||||
'projectTypeAvatars' => $projectTypeAvatars,
|
||||
'favoriteProjects' => $favoriteProjects,
|
||||
'projectSelectGroupOptions' => $projectSelectGroupOptions,
|
||||
'projectSelectFilter' => $projectSelectFilter,
|
||||
'clients' => $clients,
|
||||
'startSomethingUrl' => $newProjectUrl,
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user