* Improve reaction between product and project in edit repo page.

This commit is contained in:
wangjianhua
2022-10-24 17:28:15 +08:00
parent 1a24b9bdbe
commit f5fa90254e
+16 -4
View File
@@ -1225,11 +1225,14 @@ class repo extends control
->setDefault('objectID', 0)
->get();
$products = $postData->objectID ? $this->loadModel('product')->getProductPairsByProject($objectID) : $this->loadModel('product')->getPairs();
$shadowProduct = $this->loadModel('product')->getShadowProductByProject($postData->projectID);
$selectedProducts = array_diff($postData->products, array($shadowProduct->id)); // Remove shadow product.
$products = $postData->objectID ? $this->loadModel('product')->getProductPairsByProject($objectID) : $this->loadModel('product')->getPairs();
$linkedProducts = $this->loadModel('product')->getByIdList($postData->products);
$linkedProductPairs = array_combine(array_keys($linkedProducts), array_column($linkedProducts, 'name'));
$products = $products + $linkedProductPairs;
return print (html::select('product[]', $products, $selectedProducts, "class='form-control chosen' multiple"));
}
@@ -1246,8 +1249,17 @@ class repo extends control
->setDefault('projects', array())
->get();
$projectOptions = $this->repo->filterProject($postData->products, $postData->projects);
return print html::select('projects[]', $projectOptions, $postData->projects, "class='form-control chosen' multiple");
/* Get all projects that can be accessed. */
$accessProjects = array();
foreach($postData->products as $productID)
{
$projects = $this->loadModel('product')->getProjectPairsByProduct($productID);
$accessProjects = $accessProjects + $projects;
}
$selectedProjects = array_intersect(array_keys($accessProjects), $postData->projects);
return print (html::select('projects[]', $accessProjects, $selectedProjects, "class='form-control chosen' multiple"));
}
/**