* Finish Task#3576.

This commit is contained in:
滔哥
2018-01-10 16:43:17 +08:00
parent 13458b1b38
commit 1e12da117f
6 changed files with 79 additions and 8 deletions
+35 -2
View File
@@ -603,16 +603,27 @@ class project extends control
/* Count T B C */
$storyIdList = array_keys($stories);;
$storyTasks = $this->loadModel('task')->getStoryTaskCounts($storyIdList,$projectID);
$storyBugs = $this->loadModel('bug')->getStoryBugCounts($storyIdList,$projectID);
$storyTasks = $this->loadModel('task')->getStoryTaskCounts($storyIdList, $projectID);
$storyBugs = $this->loadModel('bug')->getStoryBugCounts($storyIdList, $projectID);
$storyCases = $this->loadModel('testcase')->getStoryCaseCounts($storyIdList);
$plans = $this->project->getPlans($productID);
$allPlans = array('' => '');
if(!empty($plans))
{
foreach($plans as $productID => $plan)
{
$allPlans = $allPlans + $plan;
}
}
/* Assign. */
$this->view->title = $title;
$this->view->position = $position;
$this->view->productID = $productID;
$this->view->project = $project;
$this->view->stories = $stories;
$this->view->allPlans = $allPlans;
$this->view->summary = $this->product->summary($stories);
$this->view->orderBy = $orderBy;
$this->view->type = $type;
@@ -2235,4 +2246,26 @@ class project extends control
die(js::reload('parent.parent'));
}
/**
* Import stories by plan.
*
* @param int $projectID
* @param int $planID
*
* @access public
* @return void
*/
public function importPlanStories($projectID, $planID)
{
$planStories = $planProducts = array();
$planStory = $this->loadModel('story')->getPlanStories($planID);
if(!empty($planStory))
{
$planStories = array_keys($planStory);
foreach($planStory as $story) $planProducts[$story->id] = $story->product;
$this->project->linkStory($projectID, $planStories, $planProducts);
}
die(js::locate(helper::createLink('project', 'story', 'projectID=' . $projectID), 'parent'));
}
}
+11
View File
@@ -24,6 +24,17 @@ $(function()
$('#branch' + branchID).addClass('active');
$(document).on('click', "#storyList tbody tr", function(){showCheckedSummary();});
$(document).on('change', "#storyList :checkbox", function(){showCheckedSummary();});
$("a[data-toggle='linkStoryByPlan']").click(function(){$('#linkStoryByPlan').modal('show')})
$('#toTaskButton').on('click', function ()
{
var planID = $('#plan').val();
if(planID)
{
parent.location.href = createLink('project', 'importPlanStories', 'projectID=' + projectID + '&planID=' + planID);
}
})
});
function showCheckedSummary()
+1
View File
@@ -118,6 +118,7 @@ $lang->project->doc = 'Doc';
$lang->project->manageProducts = 'Link ' . $lang->productCommon;
$lang->project->linkStory = 'Linked Story';
$lang->project->linkPlan = 'Linked Plan';
$lang->project->linkStoryByPlan = 'Linked Story From Plan';
$lang->project->unlinkStoryTasks = 'Unlinked';
$lang->project->linkedProducts = 'Linked Products';
$lang->project->unlinkedProducts = 'Unlinked Products';
+1
View File
@@ -117,6 +117,7 @@ $lang->project->team = '团队成员';
$lang->project->doc = '文档列表';
$lang->project->manageProducts = '关联' . $lang->productCommon;
$lang->project->linkStory = '关联需求';
$lang->project->linkStoryByPlan = '按照计划关联';
$lang->project->linkPlan = '关联计划';
$lang->project->unlinkStoryTasks = '未关联需求任务';
$lang->project->linkedProducts = '已关联';
+4 -4
View File
@@ -2581,16 +2581,16 @@ class projectModel extends model
}
/**
* Get plans by projectID.
* Get plans by $productID.
*
* @param int|array $projectID
* @param int|array $productID
*
* @return mixed
*/
public function getPlans($projectID)
public function getPlans($productID)
{
$plans = $this->dao->select('id,title,product')->from(TABLE_PRODUCTPLAN)
->where('product')->in($projectID)
->where('product')->in($productID)
->fetchAll();
$productPlans = array();
+27 -2
View File
@@ -25,7 +25,7 @@
</ul>
<div class='actions'>
<div class='btn-group'>
<?php
<?php
common::printIcon('story', 'export', "productID=$productID&orderBy=id_desc", '', 'button', '', '', 'export');
$this->lang->story->create = $this->lang->project->createStory;
@@ -52,7 +52,15 @@
}
else
{
echo "<div class='btn-group' id='createActionMenu'>";
common::printIcon('project', 'linkStory', "project=$project->id", '', 'button', 'link', '', 'link-story-btn');
echo "<button type='button' class='btn dropdown-toggle' data-toggle='dropdown'>";
echo "<span class='caret'></span>";
echo '</button>';
echo "<ul class='dropdown-menu pull-right'>";
echo "<li>" . html::a('###', $lang->project->linkStoryByPlan, '', 'data-toggle="linkStoryByPlan"') . "</li>";
echo '</ul>';
echo '</div>';
}
?>
</div>
@@ -109,7 +117,7 @@
<tr class='text-center' id="story<?php echo $story->id;?>" data-id='<?php echo $story->id;?>' data-order='<?php echo $story->order ?>' data-estimate='<?php echo $story->estimate?>' data-cases='<?php echo zget($storyCases, $story->id, 0)?>'>
<td class='cell-id'>
<?php if($canBatchEdit or $canBatchClose):?>
<input type='checkbox' name='storyIDList[<?php echo $story->id;?>]' value='<?php echo $story->id;?>' />
<input type='checkbox' name='storyIDList[<?php echo $story->id;?>]' value='<?php echo $story->id;?>' />
<?php endif;?>
<?php echo html::a($storyLink, sprintf('%03d', $story->id));?>
</td>
@@ -233,6 +241,23 @@
</table>
</form>
</div>
<div class="modal fade" id="linkStoryByPlan">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title"><i class="icon-file-text"></i> <?php echo $lang->project->linkStoryByPlan;?></h4>
</div>
<div class="modal-body">
<div class='input-group'>
<?php echo html::select('plan', $allPlans, '', "class='form-control chosen' id='plan'");?>
<span class='input-group-btn'><?php echo html::commonButton($lang->project->linkStory, "id='toTaskButton'");?></span>
</div>
</div>
</div>
</div>
</div>
<?php js::set('checkedSummary', $lang->product->checkedSummary);?>
<?php js::set('projectID', $project->id);?>
<?php js::set('orderBy', $orderBy)?>