* code for task #2531: add ditto option for task batch edit.

This commit is contained in:
chenfeiCF
2016-04-06 21:29:42 +08:00
parent 5bea716cb7
commit 2a881fbe12
5 changed files with 62 additions and 8 deletions
+15 -3
View File
@@ -336,12 +336,16 @@ class task extends control
{
$project = $this->project->getById($projectID);
$this->project->setMenu($this->project->getPairs(), $project->id);
$members = $this->project->getTeamMemberPairs($projectID, 'nodeleted');
$members = $members + array('closed' => 'Closed');
/* Set modules and members. */
$modules = array(0 => '/', 'ditto' => $this->lang->task->ditto) + $this->tree->getTaskOptionMenu($projectID);
$members = $this->project->getTeamMemberPairs($projectID, 'nodeleted') + array('closed' => 'Closed');
$members = array('' => '', 'ditto' => $this->lang->task->ditto) + $members;
$this->view->title = $project->name . $this->lang->colon . $this->lang->task->batchEdit;
$this->view->position[] = html::a($this->createLink('project', 'browse', "project=$project->id"), $project->name);
$this->view->project = $project;
$this->view->modules = $this->tree->getTaskOptionMenu($projectID);
$this->view->modules = $modules;
$this->view->members = $members;
}
/* The tasks of my. */
@@ -365,10 +369,18 @@ class task extends control
$this->app->session->set('showSuhosinInfo', $showSuhosinInfo);
if($showSuhosinInfo) $this->view->suhosinInfo = $this->lang->suhosinInfo;
/* Set pri, status and type list. */
$priList = array(0 => '', 'ditto' => $this->lang->task->ditto) + (array)$this->lang->task->priList;
$statusList = array('' => '', 'ditto' => $this->lang->task->ditto) + $this->lang->task->statusList;
$typeList = array('' => '', 'ditto' => $this->lang->task->ditto) + $this->lang->task->typeList;
/* Assign. */
$this->view->position[] = $this->lang->task->common;
$this->view->position[] = $this->lang->task->batchEdit;
$this->view->projectID = $projectID;
$this->view->priList = $priList;
$this->view->statusList = $statusList;
$this->view->typeList = $typeList;
$this->view->taskIDList = $taskIDList;
$this->view->tasks = $tasks;
$this->view->projectName = isset($project) ? $project->name : '';
+36
View File
@@ -0,0 +1,36 @@
$(document).on('click', '.chosen-with-drop', function()
{
var $select = $(this).prev('select');
oldValue = $select.val();
})
$(document).on('change', 'select', function()
{
if($(this).val() == 'ditto')
{
var index = $(this).closest('td').index();
var row = $(this).closest('tr').index();
var table = $(this).closest('tr').parent();
var value = '';
for(i = row - 1; i >= 0; i--)
{
value = $(table).find('tr').eq(i).find('td').eq(index).find('select').val();
if(value != 'ditto') break;
}
var valueStr = ',' + $(this).find('option').map(function(){return $(this).val();}).get().join(',') + ',';
if(valueStr.indexOf(',' + value + ',') != -1)
{
$(this).val(value);
}
else
{
alert(editNotice);
$(this).val(oldValue);
}
$(this).trigger("chosen:updated");
$(this).trigger("change");
}
})
+1
View File
@@ -31,6 +31,7 @@ $lang->task->export = "Export data";
$lang->task->reportChart = "Report chart";
$lang->task->fromBug = 'From Bug';
$lang->task->confirmStoryChange = "Confirm story change";
$lang->task->editNotice = "Current task and task above it do not belong to same project!";
$lang->task->common = 'Task';
$lang->task->id = 'ID';
+1
View File
@@ -31,6 +31,7 @@ $lang->task->export = "导出数据";
$lang->task->reportChart = "报表统计";
$lang->task->fromBug = '来源Bug';
$lang->task->confirmStoryChange = "确认需求变动";
$lang->task->editNotice = "该任务与上一任务不属于同一项目!";
$lang->task->common = '任务';
$lang->task->id = '编号';
+9 -5
View File
@@ -11,6 +11,7 @@
*/
?>
<?php include '../../common/view/header.html.php';?>
<?php js::set('editNotice', $this->lang->task->editNotice);?>
<div id='titlebar'>
<div class='heading'>
<span class='prefix'><?php echo html::icon($lang->icons['task']);?></span>
@@ -41,8 +42,11 @@
<?php
if(!isset($project))
{
$modules = $this->tree->getOptionMenu($tasks[$taskID]->project, $viewType = 'task');
$members = $this->project->getTeamMemberPairs($tasks[$taskID]->project, 'nodeleted');
$modules = $this->tree->getOptionMenu($tasks[$taskID]->project, $viewType = 'task');
$prjInfo = $this->project->getById($tasks[$taskID]->project);
foreach($modules as $moduleID => $moduleName) $modules[$moduleID] = '/' . $prjInfo->name. $moduleName;
$modules = array(0 => '/', 'ditto' => $this->lang->task->ditto) + $modules;
$members = array('' => '', 'ditto' => $this->lang->task->ditto) + $this->project->getTeamMemberPairs($tasks[$taskID]->project, 'nodeleted');
}
?>
<tr class='text-center'>
@@ -50,9 +54,9 @@
<td title='<?php echo $tasks[$taskID]->name?>'><?php echo html::input("names[$taskID]", $tasks[$taskID]->name, 'class=form-control');?></td>
<td class='text-left' style='overflow:visible'><?php echo html::select("modules[$taskID]", $modules, $tasks[$taskID]->module, "class='form-control chosen'")?></td>
<td class='text-left' style='overflow:visible'><?php echo html::select("assignedTos[$taskID]", $members, $tasks[$taskID]->assignedTo, "class='form-control chosen'");?></td>
<td><?php echo html::select("types[$taskID]", $lang->task->typeList, $tasks[$taskID]->type, 'class=form-control');?></td>
<td><?php echo html::select("statuses[$taskID]", $lang->task->statusList, $tasks[$taskID]->status, 'class=form-control');?></td>
<td><?php echo html::select("pris[$taskID]", (array)$lang->task->priList, $tasks[$taskID]->pri, 'class=form-control');?></td>
<td><?php echo html::select("types[$taskID]", $typeList, $tasks[$taskID]->type, 'class=form-control');?></td>
<td><?php echo html::select("statuses[$taskID]", $statusList, $tasks[$taskID]->status, 'class=form-control');?></td>
<td><?php echo html::select("pris[$taskID]", $priList, $tasks[$taskID]->pri, 'class=form-control');?></td>
<td><?php echo html::input("estimates[$taskID]", $tasks[$taskID]->estimate, "class='form-control text-center' autocomplete='off'");?></td>
<td><?php echo html::input("consumeds[$taskID]", '', "class='form-control text-center' autocomplete='off'");?></td>
<td><?php echo html::input("lefts[$taskID]", $tasks[$taskID]->left, "class='form-control text-center' autocomplete='off'");?></td>