* Finish Task#3576.
This commit is contained in:
@@ -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'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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 = '已关联';
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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)?>
|
||||
|
||||
Reference in New Issue
Block a user