From 51558901a59bcdb48858fd7ca7bb9c27c94dcc09 Mon Sep 17 00:00:00 2001 From: zenggang Date: Tue, 20 Jul 2021 18:30:19 +0800 Subject: [PATCH] * Finish task #40117 --- module/project/control.php | 4 ++++ module/project/js/edit.js | 12 ++++++++++-- module/project/model.php | 4 ++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/module/project/control.php b/module/project/control.php index f15686f23e..a55a8b610d 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -1614,6 +1614,10 @@ class project extends control $response = array(); $response['result'] = true; $response['message'] = $this->lang->project->changeProgramTip; + + /* Get new program products. */ + $newProducts = $this->program->getProductPairs($programID, 'assign', 'noclosed'); + $response['newProducts'] = html::select("newProducts", array('0' => '') + $newProducts, '', "class='form-control chosen' onchange='loadBranches(this)'"); $multiLinkedProducts = $this->project->getMultiLinkedProducts($projectID); if($multiLinkedProducts) diff --git a/module/project/js/edit.js b/module/project/js/edit.js index f9d3c0e2bf..321e55c715 100644 --- a/module/project/js/edit.js +++ b/module/project/js/edit.js @@ -15,8 +15,16 @@ $(function() { changed = confirm(data.message); if(changed) - { - $('#productsBox select').prop('disabled', true).trigger("chosen:updated"); + { + /* Select change to the new program products. */ + var lastProductSelect = $('#productsBox .input-group:last select:first'); + if($(lastProductSelect).val() == 0) { + var lastProductSelectID = $(lastProductSelect).attr("id"); + var lastProductSelectName = $(lastProductSelect).attr("name"); + $('#'+lastProductSelectID+'_chosen').remove(); + $(lastProductSelect).replaceWith(data.newProducts); + $('#productsBox .input-group:last select:first').attr('name', lastProductSelectName).attr('id', lastProductSelectID).chosen(); + } } } diff --git a/module/project/model.php b/module/project/model.php index c6cb2abaa5..3dc9101b06 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -866,7 +866,7 @@ class projectModel extends model { $oldProject = $this->dao->findById($projectID)->from(TABLE_PROJECT)->fetch(); $linkedProducts = $this->dao->select('product')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($projectID)->fetchPairs(); - $_POST['products'] = isset($_POST['products']) ? $_POST['products'] : $linkedProducts; + $_POST['products'] = isset($_POST['products']) ? array_filter($_POST['products']) : $linkedProducts; $project = fixer::input('post') ->setDefault('team', substr($this->post->name, 0, 30)) @@ -1225,7 +1225,7 @@ class projectModel extends model $newTopProgram = $this->program->getTopByID($newProgram); if($oldTopProgram != $newTopProgram) { - foreach($products as $productID => $product) + foreach($products as $productID) { $oldProduct = $this->dao->findById($productID)->from(TABLE_PRODUCT)->fetch(); $this->dao->update(TABLE_PRODUCT)->set('program')->eq((int)$newTopProgram)->where('id')->eq((int)$productID)->exec();