* Fix bug: dese not show linked projects in Repo edit page.

This commit is contained in:
wangjianhua
2022-10-17 17:51:01 +08:00
parent 45f2d070c5
commit 70cbc979dc
2 changed files with 25 additions and 30 deletions
+2 -30
View File
@@ -208,7 +208,7 @@ class repo extends control
$this->view->projects = $options;
}
$projectOptions = $this->filterProject(explode(',', $repo->product), explode(',', $repo->projects));
$projectOptions = $this->repo->filterProject(explode(',', $repo->product), explode(',', $repo->projects));
$shadowProduct = null;
$productIDList = explode(',', $repo->product);
@@ -1233,38 +1233,10 @@ class repo extends control
->setDefault('projects', array())
->get();
$projectOptions = $this->filterProject($postData->products, $postData->projects);
$projectOptions = $this->repo->filterProject($postData->products, $postData->projects);
return print html::select('projects[]', $projectOptions, $postData->projects, "class='form-control chosen' multiple");
}
/**
* Remove projects without privileges.
*
* @param array $productIDList
* @param array $projectIDList
* @access private
* @return array
*/
private function filterProject($productIDList, $projectIDList = array())
{
$allProjects = array();
foreach($productIDList as $productID)
{
$projects = $this->loadModel('product')->getProjectPairsByProduct($productID);
$allProjects = $allProjects + $projects;
}
$accessProjects = explode(',', $this->app->user->view->projects);
$accessProjects = $accessProjects + $projectIDList; /* Merge projects can be accessed and exists.*/
$projectOptions = array();
foreach($allProjects as $projectID => $projectName)
{
if(in_array($projectID, $accessProjects)) $projectOptions[$projectID] = $projectName;
}
return $projectOptions;
}
/**
* Ajax get hosts.
*
+23
View File
@@ -2209,4 +2209,27 @@ class repoModel extends model
return $url;
}
/**
* Remove projects without privileges.
*
* @param array $productIDList
* @param array $projectIDList
* @access public
* @return array
*/
public function filterProject($productIDList, $projectIDList = array())
{
/* Get all projects that can be accessed. */
$accessProjects = array();
foreach($productIDList as $productID)
{
$projects = $this->loadModel('product')->getProjectPairsByProduct($productID);
$accessProjects = $accessProjects + $projects;
}
/* Get linked projects. */
$linkedProjects = $this->dao->select('id,name')->from(TABLE_PROJECT)->where('id')->in($projectIDList)->fetchPairs('id', 'name');
return $accessProjects + $linkedProjects; /* Merge projects can be accessed and exists.*/
}
}