* Fix edit project logic.
This commit is contained in:
+23
-17
@@ -840,7 +840,7 @@ class program extends control
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function PRJEdit($projectID = 0)
|
||||
public function PRJEdit($projectID = 0, $parentID = 0)
|
||||
{
|
||||
$this->lang->navGroup->program = 'project';
|
||||
$this->app->loadLang('project');
|
||||
@@ -867,24 +867,29 @@ class program extends control
|
||||
$project = $this->program->getPRJByID($projectID);
|
||||
$parents = $this->program->getParentPairs();
|
||||
$programID = $this->program->getPRJProgramID($projectID);
|
||||
$allProducts = $this->program->getPGMProduct($programID);
|
||||
$linkedProducts = $this->project->getProducts($projectID);
|
||||
$linkedBranches = array();
|
||||
foreach($linkedProducts as $product)
|
||||
{
|
||||
if(!isset($allProducts[$product->id])) $allProducts[$product->id] = $product->name;
|
||||
if($product->branch) $linkedBranches[$product->branch] = $product->branch;
|
||||
}
|
||||
foreach($linkedProducts as $product)
|
||||
{
|
||||
if(!isset($allProducts[$product->id])) $allProducts[$product->id] = $product->name;
|
||||
if($product->branch) $linkedBranches[$product->branch] = $product->branch;
|
||||
}
|
||||
|
||||
$productPlans = array(0 => '');
|
||||
foreach($linkedProducts as $product)
|
||||
|
||||
$linkedProducts = array();
|
||||
$linkedBranches = array();
|
||||
$productPlans = array(0 => '');
|
||||
if($parentID)
|
||||
{
|
||||
$productPlans[$product->id] = $this->productplan->getPairs($product->id);
|
||||
$allProducts = $this->program->getPGMProduct($parentID);
|
||||
}
|
||||
else
|
||||
{
|
||||
$allProducts = $this->program->getPGMProduct($projectID);
|
||||
$linkedProducts = $this->project->getProducts($projectID);
|
||||
foreach($linkedProducts as $product)
|
||||
{
|
||||
if(!isset($allProducts[$product->id])) $allProducts[$product->id] = $product->name;
|
||||
if($product->branch) $linkedBranches[$product->branch] = $product->branch;
|
||||
}
|
||||
|
||||
foreach($linkedProducts as $product)
|
||||
{
|
||||
$productPlans[$product->id] = $this->loadModel('productplan')->getPairs($product->id);
|
||||
}
|
||||
}
|
||||
|
||||
$this->view->title = $this->lang->program->PRJEdit;
|
||||
@@ -894,6 +899,7 @@ class program extends control
|
||||
$this->view->users = $this->user->getPairs('noclosed|nodeleted');
|
||||
$this->view->project = $project;
|
||||
$this->view->parents = $parents;
|
||||
$this->view->parentID = $parentID;
|
||||
$this->view->allProducts = array('0' => '') + $allProducts;
|
||||
$this->view->productPlans = $productPlans;
|
||||
$this->view->linkedProducts = $linkedProducts;
|
||||
|
||||
@@ -13,6 +13,11 @@ $(function()
|
||||
}
|
||||
});
|
||||
|
||||
$('#parent').click(function()
|
||||
{
|
||||
if(!confirm(PGMChangeTips)) return false;
|
||||
})
|
||||
|
||||
adjustProductBoxMargin();
|
||||
adjustPlanBoxMargin();
|
||||
});
|
||||
@@ -28,3 +33,18 @@ function setAclList(programID)
|
||||
$('.aclBox').html($('#PRJAcl').html());
|
||||
}
|
||||
}
|
||||
|
||||
function setParentProgram()
|
||||
{
|
||||
var parentProgram = $("#parent").val();
|
||||
|
||||
if(confirm(PGMChangeTips))
|
||||
{
|
||||
location.href = createLink('program', 'PRJEdit', 'projectID=' + projectID + '&programID=' + parentProgram);
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#parent').val(oldParent);
|
||||
$("#parent").trigger("chosen:updated");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,6 +207,7 @@ $lang->program->PGMLongTime = '长期项目';
|
||||
$lang->program->noPGM = '暂时没有项目集';
|
||||
$lang->program->PGMShowClosed = '显示已关闭';
|
||||
$lang->program->PGMTips = '修改父项目集,可关联产品也会发生变化,并且变为必填,如果未选择任何项目集,则系统会默认创建一个和该项目同名的产品并关联到该项目。';
|
||||
$lang->program->PGMChangeTips = '修改父项目集后,项目已关联的产品会被清空,并且项目下的需求、bug等数据也会受影响,是否修改?';
|
||||
|
||||
$lang->program->PGMAclList['open'] = "公开(有项目集视图权限,即可访问)";
|
||||
$lang->program->PGMAclList['private'] = "私有(项目集负责人和干系人可访问)";
|
||||
|
||||
@@ -1135,6 +1135,7 @@ class programModel extends model
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
|
||||
/* Judge products not empty. */
|
||||
if(!$_POST['products'][0])
|
||||
{
|
||||
dao::$errors[] = $this->lang->program->productNotEmpty;
|
||||
@@ -1162,13 +1163,13 @@ class programModel extends model
|
||||
$this->loadModel('personnel')->updateWhitelist($whitelist, 'project', $projectID);
|
||||
if($project->acl != 'open') $this->loadModel('user')->updateUserView($projectID, 'project');
|
||||
|
||||
/* If parent not empty, link products or create products. */
|
||||
if($project->parent)
|
||||
{
|
||||
$this->loadModel('project')->updateProducts($projectID);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If parent not empty, link products or create products. */
|
||||
$product = new stdclass();
|
||||
$product->name = $project->name;
|
||||
$product->code = $project->code;
|
||||
@@ -1258,6 +1259,13 @@ class programModel extends model
|
||||
|
||||
if(dao::isError()) return false;
|
||||
}
|
||||
|
||||
/* Judge products not empty. */
|
||||
if(!$_POST['products'][0])
|
||||
{
|
||||
dao::$errors[] = $this->lang->program->productNotEmpty;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$project = $this->loadModel('file')->processImgURL($project, $this->config->program->editor->prjedit['id'], $this->post->uid);
|
||||
@@ -1278,6 +1286,8 @@ class programModel extends model
|
||||
|
||||
if(!dao::isError())
|
||||
{
|
||||
if($project->parent != $oldProject->parent) $this->loadModel('project')->updateProducts($projectID);
|
||||
|
||||
$this->file->updateObjectID($this->post->uid, $projectID, 'project');
|
||||
$whitelist = explode(',', $project->whitelist);
|
||||
$this->loadModel('personnel')->updateWhitelist($whitelist, 'project', $projectID);
|
||||
|
||||
@@ -15,6 +15,10 @@
|
||||
<?php js::import($jsRoot . 'misc/date.js');?>
|
||||
<?php js::set('weekend', $config->project->weekend);?>
|
||||
<?php js::set('errorSameProducts', $lang->project->errorSameProducts);?>
|
||||
<?php js::set('parentID', $parentID);?>
|
||||
<?php js::set('oldParent', $project->parent);?>
|
||||
<?php js::set('projectID', $project->id);?>
|
||||
<?php js::set('PGMChangeTips', $lang->program->PGMChangeTips);?>
|
||||
<?php $aclList = $project->parent ? $lang->program->PGMPRJAclList : $lang->program->PRJAclList;?>
|
||||
<div id='mainContent' class='main-content'>
|
||||
<div class='center-block'>
|
||||
@@ -30,7 +34,9 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->program->PGMParent;?></th>
|
||||
<td><?php echo zget($parents, $project->parent, '/');?></td>
|
||||
<td><?php echo html::select('parent', $parents, $parentID ? $parentID : $project->parent, "class='form-control chosen' onchange='setParentProgram(this.value)'");?></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->program->PRJName;?></th>
|
||||
@@ -68,7 +74,7 @@
|
||||
</div>
|
||||
<?php $i++;?>
|
||||
<?php endforeach;?>
|
||||
<div class='col-sm-4'>
|
||||
<div class='col-sm-4 <?php if($parentID) echo 'required';?>'>
|
||||
<div class='input-group'>
|
||||
<?php echo html::select("products[$i]", $allProducts, '', "class='form-control chosen' onchange='loadBranches(this)'");?>
|
||||
<span class='input-group-addon fix-border'></span>
|
||||
|
||||
Reference in New Issue
Block a user