* adjust for task #2531:Process the post data in model when value is 'ditto'.

This commit is contained in:
chenfeiCF
2016-04-09 13:37:25 +08:00
parent 2cb3981b38
commit b6ef7dd961
13 changed files with 315 additions and 220 deletions
+23 -15
View File
@@ -8,36 +8,44 @@ $(function()
});
})
$(document).on('click', '.chosen-with-drop', function()
{
var $select = $(this).prev('select');
oldValue = $select.val();
})
$(document).on('click', '.chosen-with-drop', function(){oldValue = $(this).prev('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 index = $(this).closest('td').index();
var row = $(this).closest('tr').index();
var $tbody = $(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();
value = $tbody.children('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)
isModules = $(this).attr('name').indexOf('modules') != -1;
isAssignedTos = $(this).attr('name').indexOf('assignedTos') != -1;
isFinishedBys = $(this).attr('name').indexOf('finishedBys') != -1;
isClosedBys = $(this).attr('name').indexOf('closedBys') != -1;
if(isModules || isAssignedTos || isFinishedBys || isClosedBys)
{
$(this).val(value);
var valueStr = ',' + $(this).find('option').map(function(){return $(this).val();}).get().join(',') + ',';
if(valueStr.indexOf(',' + value + ',') != -1)
{
$(this).val(value);
}
else
{
alert(dittoNotice);
$(this).val(oldValue);
}
}
else
{
alert(dittoNotice);
$(this).val(oldValue);
$(this).val(value);
}
$(this).trigger("chosen:updated");
+20
View File
@@ -281,6 +281,26 @@ class taskModel extends model
/* Adjust whether the post data is complete, if not, remove the last element of $taskIDList. */
if($this->session->showSuhosinInfo) array_pop($taskIDList);
/* Process data if the value is 'ditto'. */
foreach($taskIDList as $taskID)
{
if(isset($data->modules[$taskID]) and ($data->modules[$taskID] == 'ditto')) $data->modules[$taskID] = isset($prev['module']) ? $prev['module'] : 0;
if($data->types[$taskID] == 'ditto') $data->types[$taskID] = isset($prev['type']) ? $prev['type'] : '';
if($data->statuses[$taskID] == 'ditto') $data->statuses[$taskID] = isset($prev['status']) ? $prev['status'] : '';
if($data->assignedTos[$taskID] == 'ditto') $data->assignedTos[$taskID] = isset($prev['assignedTo']) ? $prev['assignedTo'] : '';
if($data->pris[$taskID] == 'ditto') $data->pris[$taskID] = isset($prev['pri']) ? $prev['pri'] : 0;
if($data->finishedBys[$taskID] == 'ditto') $data->finishedBys[$taskID] = isset($prev['finishedBy']) ? $prev['finishedBy'] : '';
if($data->closedBys[$taskID] == 'ditto') $data->closedBys[$taskID] = isset($prev['closedBy']) ? $prev['closedBy'] : '';
$prev['module'] = $data->modules[$taskID];
$prev['type'] = $data->types[$taskID];
$prev['status'] = $data->statuses[$taskID];
$prev['assignedTo'] = $data->assignedTos[$taskID];
$prev['pri'] = $data->pris[$taskID];
$prev['finishedBy'] = $data->finishedBys[$taskID];
$prev['closedBy'] = $data->closedBys[$taskID];
}
/* Initialize tasks from the post data.*/
foreach($taskIDList as $taskID)
{
+35 -37
View File
@@ -23,7 +23,7 @@
<table class='table table-form table-fixed'>
<thead>
<tr>
<th class='w-30px'><?php echo $lang->idAB;?></th>
<th class='w-30px'><?php echo $lang->idAB;?></th>
<th> <?php echo $lang->task->name?> <span class='required'></span></th>
<th class='w-150px'><?php echo $lang->task->module?></th>
<th class='w-150px'><?php echo $lang->task->assignedTo;?></th>
@@ -38,45 +38,43 @@
<th class='w-100px'><?php echo $lang->task->closedReason;?></th>
</tr>
</thead>
<?php foreach($taskIDList as $taskID):?>
<?php
if(!isset($project))
{
$prjInfo = $this->project->getById($tasks[$taskID]->project);
$modules = $this->tree->getOptionMenu($tasks[$taskID]->project, $viewType = 'task');
foreach($modules as $moduleID => $moduleName) $modules[$moduleID] = '/' . $prjInfo->name. $moduleName;
$modules['ditto'] = $this->lang->task->ditto;
<tbody>
<?php foreach($taskIDList as $taskID):?>
<?php
if(!isset($project))
{
$prjInfo = $this->project->getById($tasks[$taskID]->project);
$modules = $this->tree->getOptionMenu($tasks[$taskID]->project, $viewType = 'task');
foreach($modules as $moduleID => $moduleName) $modules[$moduleID] = '/' . $prjInfo->name. $moduleName;
$modules['ditto'] = $this->lang->task->ditto;
$members = $this->project->getTeamMemberPairs($tasks[$taskID]->project, 'nodeleted');
$members['ditto'] = $this->lang->task->ditto;
}
?>
<tr class='text-center'>
<td><?php echo $taskID . html::hidden("taskIDList[$taskID]", $taskID);?></td>
<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]", $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>
<td class='text-left' style='overflow:visible'><?php echo html::select("finishedBys[$taskID]", $members, $tasks[$taskID]->finishedBy, "class='form-control chosen'");?></td>
<td class='text-left' style='overflow:visible'><?php echo html::select("closedBys[$taskID]", $members, $tasks[$taskID]->closedBy, "class='form-control chosen'");?></td>
<td><?php echo html::select("closedReasons[$taskID]", $lang->task->reasonList, $tasks[$taskID]->closedReason, 'class=form-control');?></td>
</tr>
<?php endforeach;?>
$members = $this->project->getTeamMemberPairs($tasks[$taskID]->project, 'nodeleted');
$members['ditto'] = $this->lang->task->ditto;
}
?>
<tr class='text-center'>
<td><?php echo $taskID . html::hidden("taskIDList[$taskID]", $taskID);?></td>
<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]", $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>
<td class='text-left' style='overflow:visible'><?php echo html::select("finishedBys[$taskID]", $members, $tasks[$taskID]->finishedBy, "class='form-control chosen'");?></td>
<td class='text-left' style='overflow:visible'><?php echo html::select("closedBys[$taskID]", $members, $tasks[$taskID]->closedBy, "class='form-control chosen'");?></td>
<td><?php echo html::select("closedReasons[$taskID]", $lang->task->reasonList, $tasks[$taskID]->closedReason, 'class=form-control');?></td>
</tr>
<?php endforeach;?>
<?php if(isset($suhosinInfo)):?>
<tr><td colspan='<?php echo $this->config->task->batchEdit->columns;?>'>
<div class='f-left blue'><?php echo $suhosinInfo;?></div>
</td></tr>
<?php endif;?>
<?php if(isset($suhosinInfo)):?>
<tr><td colspan='<?php echo $this->config->task->batchEdit->columns;?>'><div class='f-left blue'><?php echo $suhosinInfo;?></div></td></tr>
<?php endif;?>
</tbody>
<tfoot>
<tr><td colspan='<?php echo $this->config->task->batchEdit->columns;?>'>
<?php echo html::submitButton();?>
</td></tr>
<tr><td colspan='<?php echo $this->config->task->batchEdit->columns;?>'><?php echo html::submitButton();?></td></tr>
</tfoot>
</table>
</form>