* finish task #2534.

This commit is contained in:
wangyidong
2016-04-14 10:42:57 +08:00
parent ea4c94bcc2
commit a536675548
6 changed files with 69 additions and 57 deletions
+1 -1
View File
@@ -990,7 +990,7 @@ EOT;
static public function reload($window = 'self')
{
$js = self::start();
$js .= "$window.location.reload();\n";
$js .= "$window.location.reload(true);\n";
$js .= self::end();
return $js;
}
+4 -5
View File
@@ -9,9 +9,6 @@ $config->bug->create->requiredFields = 'title,openedBuild';
$config->bug->edit->requiredFields = $config->bug->create->requiredFields;
$config->bug->resolve->requiredFields = 'resolution';
$config->bug->batchEdit = new stdclass();
$config->bug->batchEdit->columns = 9;
$config->bug->list = new stdclass();
$config->bug->list->allFields = 'id, module, project, story, task,
title, keywords, severity, pri, type, os, browser, hardware,
@@ -39,11 +36,13 @@ $config->bug->list->exportFields = 'id, product, module, project, story, task,
lastEditedDate, files';
$config->bug->list->customCreateFields = 'project,story,task,pri,severity,os,browser,mailto,keywords';
$config->bug->list->customBatchCreateFields = 'module,project,os,browser,severity,pri,type,steps,keywords';
$config->bug->list->customBatchCreateFields = 'module,project,steps,type,pri,severity,os,browser,keywords';
$config->bug->list->customBatchEditFields = 'type,severity,pri,productplan,assignedTo,status,resolvedBy,resolution,os,browser,keywords';
$config->bug->custom = new stdclass();
$config->bug->custom->create = $config->bug->list->customCreateFields;
$config->bug->custom->batchcreate = $config->bug->list->customBatchCreateFields;
$config->bug->custom->batchcreate = 'module,project,steps,type,severity,os,browser';
$config->bug->custom->batchedit = 'type,severity,pri,assignedTo,status,resolvedBy,resolution';
$config->bug->editor = new stdclass();
$config->bug->editor->create = array('id' => 'steps', 'tools' => 'bugTools');
+15 -4
View File
@@ -622,17 +622,27 @@ class bug extends control
/* Judge whether the editedTasks is too large and set session. */
$showSuhosinInfo = false;
$showSuhosinInfo = $this->loadModel('common')->judgeSuhosinSetting(count($bugs), $this->config->bug->batchEdit->columns);
$showSuhosinInfo = $this->loadModel('common')->judgeSuhosinSetting(count($bugs), count(explode(',', $this->config->bug->custom->batchedit)) + 2);
$this->app->session->set('showSuhosinInfo', $showSuhosinInfo);
if($showSuhosinInfo) $this->view->suhosinInfo = $this->lang->suhosinInfo;
/* Set Custom*/
foreach(explode(',', $this->config->bug->list->customBatchEditFields) as $field) $customFields[$field] = $this->lang->bug->$field;
$this->view->customFields = $customFields;
$this->view->showFields = $this->config->bug->custom->batchedit;
/* Set ditto option for users and type, severity, pri, resolution list. */
$users = $this->user->getPairs('nodeleted,devfirst');
$users['ditto'] = $this->lang->bug->ditto;
$this->lang->bug->typeList ['ditto'] = $this->lang->bug->ditto;
$this->lang->bug->priList ['ditto'] = $this->lang->bug->ditto;
$plans = $this->loadModel('productplan')->getPairs($productID, $branch);
$plans['ditto'] = $this->lang->bug->ditto;
$this->lang->bug->typeList['ditto'] = $this->lang->bug->ditto;
$this->lang->bug->priList['ditto'] = $this->lang->bug->ditto;
$this->lang->bug->resolutionList['ditto'] = $this->lang->bug->ditto;
$this->lang->bug->severityList ['ditto'] = $this->lang->bug->ditto;
$this->lang->bug->severityList['ditto'] = $this->lang->bug->ditto;
$this->lang->bug->statusList['ditto'] = $this->lang->bug->ditto;
$this->lang->bug->osList['ditto'] = $this->lang->bug->ditto;
$this->lang->bug->browserList['ditto'] = $this->lang->bug->ditto;
/* Assign. */
$this->view->position[] = $this->lang->bug->common;
@@ -646,6 +656,7 @@ class bug extends control
$this->view->bugs = $bugs;
$this->view->branch = $branch;
$this->view->users = $users;
$this->view->plans = $plans;
$this->display();
}
-28
View File
@@ -26,31 +26,3 @@ $(function()
$(this).trigger("chosen:updated");
});
})
$(document).on('change', 'select', function()
{
if($(this).val() == 'ditto')
{
var index = $(this).closest('td').index();
var row = $(this).closest('tr').index();
var $tbody = $(this).closest('tr').parent();
if($(this).attr('name').indexOf('resolutions') != -1)
{
index = $(this).closest('tr').closest('td').index();
row = $(this).closest('tr').closest('td').parent().index();
$tbody = $(this).closest('tr').closest('td').parent().parent();
}
var value = '';
for(i = row - 1; i >= 0; i--)
{
value = $tbody.children('tr').eq(i).find('td').eq(index).find('select').val();
if(value != 'ditto') break;
}
$(this).val(value);
$(this).trigger("chosen:updated");
$(this).trigger("change");
}
})
+10
View File
@@ -512,16 +512,22 @@ class bugModel extends model
if($data->types[$bugID] == 'ditto') $data->types[$bugID] = isset($prev['type']) ? $prev['type'] : '';
if($data->severities[$bugID] == 'ditto') $data->severities[$bugID] = isset($prev['severity']) ? $prev['severity'] : 3;
if($data->pris[$bugID] == 'ditto') $data->pris[$bugID] = isset($prev['pri']) ? $prev['pri'] : 0;
if($data->plans[$bugID] == 'ditto') $data->plans[$bugID] = isset($prev['plan']) ? $prev['plan'] : '';
if($data->assignedTos[$bugID] == 'ditto') $data->assignedTos[$bugID] = isset($prev['assignedTo']) ? $prev['assignedTo'] : '';
if($data->resolvedBys[$bugID] == 'ditto') $data->resolvedBys[$bugID] = isset($prev['resolvedBy']) ? $prev['resolvedBy'] : '';
if($data->resolutions[$bugID] == 'ditto') $data->resolutions[$bugID] = isset($prev['resolution']) ? $prev['resolution'] : '';
if($data->os[$bugID] == 'ditto') $data->os[$bugID] = isset($prev['os']) ? $prev['os'] : '';
if($data->browsers[$bugID] == 'ditto') $data->browsers[$bugID] = isset($prev['browser']) ? $prev['browser'] : '';
$prev['type'] = $data->types[$bugID];
$prev['severity'] = $data->severities[$bugID];
$prev['pri'] = $data->pris[$bugID];
$prev['plan'] = $data->plans[$bugID];
$prev['assignedTo'] = $data->assignedTos[$bugID];
$prev['resolvedBy'] = $data->resolvedBys[$bugID];
$prev['resolution'] = $data->resolutions[$bugID];
$prev['os'] = $data->os[$bugID];
$prev['browser'] = $data->browsers[$bugID];
}
/* Initialize bugs from the post data.*/
@@ -537,8 +543,12 @@ class bugModel extends model
$bug->pri = $data->pris[$bugID];
$bug->status = $data->statuses[$bugID];
$bug->title = $data->titles[$bugID];
$bug->plan = $data->plan[$bugID];
$bug->assignedTo = $data->assignedTos[$bugID];
$bug->resolvedBy = $data->resolvedBys[$bugID];
$bug->keywords = $data->keywords[$bugID];
$bug->os = $data->os[$bugID];
$bug->browser = $data->browsers[$bugID];
$bug->resolution = $data->resolutions[$bugID];
$bug->duplicateBug = $data->duplicateBugs[$bugID] ? $data->duplicateBugs[$bugID] : $oldBug->duplicateBug;
+39 -19
View File
@@ -15,22 +15,36 @@
<div class='heading'>
<span class='prefix'><?php echo html::icon($lang->icons['bug']);?></span>
<strong><small class='text-muted'><?php echo html::icon($lang->icons['batchEdit']);?></small> <?php echo $lang->bug->common . $lang->colon . $lang->bug->batchEdit;?></strong>
<div class='actions'>
<button type="button" class="btn btn-default" data-toggle="customModal"><i class='icon icon-cog'></i> </button>
</div>
</div>
</div>
<?php
$hasFields = array();
foreach(explode(',', $showFields) as $field)
{
if($field)$hasFields[$field] = '';
}
$columns = count($hasFields) + 2;
?>
<form class='form-condensed' method='post' target='hiddenwin' action="<?php echo inLink('batchEdit', "productID=$productID");?>">
<table class='table table-form table-fixed'>
<thead>
<tr>
<th class='w-30px'><?php echo $lang->idAB;?></th>
<th class='w-110px'><?php echo $lang->bug->type;?></th>
<th class='w-70px'><?php echo $lang->bug->severityAB;?></th>
<th class='w-70px'><?php echo $lang->bug->pri;?></th>
<th><?php echo $lang->bug->title;?> <span class='required'></span></th>
<th class='w-150px'><?php echo $lang->bug->assignedTo;?></th>
<th class='w-90px'><?php echo $lang->bug->status;?></th>
<th class='w-150px'><?php echo $lang->bug->resolvedByAB;?></th>
<th class='w-180px'><?php echo $lang->bug->resolutionAB;?></th>
<th class='w-50px'><?php echo $lang->idAB;?></th>
<th class='w-110px<?php echo zget($hasFields, 'type', ' hidden')?>'><?php echo $lang->bug->type;?></th>
<th class='w-70px<?php echo zget($hasFields, 'severity', ' hidden')?>'><?php echo $lang->bug->severityAB;?></th>
<th class='w-70px<?php echo zget($hasFields, 'pri', ' hidden')?>'><?php echo $lang->bug->pri;?></th>
<th <?php if(count($hasFields) >= 10) echo "class='w-150px'"?>><?php echo $lang->bug->title;?> <span class='required'></span></th>
<th class='w-150px<?php echo zget($hasFields, 'productplan', ' hidden')?>'><?php echo $lang->bug->productplan;?></th>
<th class='w-150px<?php echo zget($hasFields, 'assignedTo', ' hidden')?>'><?php echo $lang->bug->assignedTo;?></th>
<th class='w-90px<?php echo zget($hasFields, 'status', ' hidden')?>'><?php echo $lang->bug->status;?></th>
<th class='w-150px<?php echo zget($hasFields, 'resolvedBy', ' hidden')?>'><?php echo $lang->bug->resolvedByAB;?></th>
<th class='w-180px<?php echo zget($hasFields, 'resolution', ' hidden')?>'><?php echo $lang->bug->resolutionAB;?></th>
<th class='w-100px<?php echo zget($hasFields, 'os', ' hidden')?>'><?php echo $lang->bug->os;?></th>
<th class='w-100px<?php echo zget($hasFields, 'browser', ' hidden')?>'><?php echo $lang->bug->browser;?></th>
<th class='w-100px<?php echo zget($hasFields, 'keywords', ' hidden')?>'><?php echo $lang->bug->keywords;?></th>
</tr>
</thead>
<tbody>
@@ -46,14 +60,15 @@
?>
<tr class='text-center'>
<td><?php echo $bugID . html::hidden("bugIDList[$bugID]", $bugID);?></td>
<td><?php echo html::select("types[$bugID]", $typeList, $bugs[$bugID]->type, 'class=form-control');?></td>
<td><?php echo html::select("severities[$bugID]", $severityList, $bugs[$bugID]->severity, 'class=form-control');?></td>
<td><?php echo html::select("pris[$bugID]", $priList, $bugs[$bugID]->pri, 'class=form-control');?></td>
<td <?php echo zget($hasFields, 'type', "class='hidden'")?>><?php echo html::select("types[$bugID]", $typeList, $bugs[$bugID]->type, 'class=form-control');?></td>
<td <?php echo zget($hasFields, 'severity', "class='hidden'")?>><?php echo html::select("severities[$bugID]", $severityList, $bugs[$bugID]->severity, 'class=form-control');?></td>
<td <?php echo zget($hasFields, 'pri', "class='hidden'")?>><?php echo html::select("pris[$bugID]", $priList, $bugs[$bugID]->pri, 'class=form-control');?></td>
<td title='<?php echo $bugs[$bugID]->title?>'> <?php echo html::input("titles[$bugID]", $bugs[$bugID]->title, 'class=form-control');?></td>
<td class='text-left' style='overflow:visible'><?php echo html::select("assignedTos[$bugID]", $users, $bugs[$bugID]->assignedTo, "class='form-control chosen'");?></td>
<td><?php echo html::select("statuses[$bugID]", (array)$lang->bug->statusList, $bugs[$bugID]->status, 'class=form-control');?></td>
<td class='text-left' style='overflow:visible'><?php echo html::select("resolvedBys[$bugID]", $users, $bugs[$bugID]->resolvedBy, "class='form-control chosen'");?></td>
<td>
<td class='text-left<?php echo zget($hasFields, 'productplan', ' hidden')?>' style='overflow:visible'><?php echo html::select("plans[$bugID]", $plans, $bugs[$bugID]->plan, "class='form-control chosen'");?></td>
<td class='text-left<?php echo zget($hasFields, 'assignedTo', ' hidden')?>' style='overflow:visible'><?php echo html::select("assignedTos[$bugID]", $users, $bugs[$bugID]->assignedTo, "class='form-control chosen'");?></td>
<td <?php echo zget($hasFields, 'status', "class='hidden'")?>><?php echo html::select("statuses[$bugID]", $lang->bug->statusList, $bugs[$bugID]->status, 'class=form-control');?></td>
<td class='text-left<?php echo zget($hasFields, 'resolvedBy', ' hidden')?>' style='overflow:visible'><?php echo html::select("resolvedBys[$bugID]", $users, $bugs[$bugID]->resolvedBy, "class='form-control chosen'");?></td>
<td <?php echo zget($hasFields, 'resolution', "class='hidden'")?>>
<table class='w-p100'>
<tr>
<td class='pd-0'>
@@ -65,15 +80,20 @@
</tr>
</table>
</td>
<td <?php echo zget($hasFields, 'os', "class='hidden'")?>><?php echo html::select("os[$bugID]", $lang->bug->osList, $bugs[$bugID]->os, 'class=form-control');?></td>
<td <?php echo zget($hasFields, 'browser', "class='hidden'")?>><?php echo html::select("browsers[$bugID]", $lang->bug->browserList, $bugs[$bugID]->browser, 'class=form-control');?></td>
<td <?php echo zget($hasFields, 'keywords', "class='hidden'")?>><?php echo html::input("keywords[$bugID]", $bugs[$bugID]->keywords, 'class=form-control');?></td>
</tr>
<?php endforeach;?>
<?php if(isset($suhosinInfo)):?>
<tr><td colspan='<?php echo $this->config->bug->batchEdit->columns;?>'><div class='alert alert-info'><?php echo $suhosinInfo;?></div></td></tr>
<tr><td colspan='<?php echo $columns;?>'><div class='alert alert-info'><?php echo $suhosinInfo;?></div></td></tr>
<?php endif;?>
</tbody>
<tfoot>
<tr><td colspan='<?php echo $this->config->bug->batchEdit->columns;?>' class='text-center'><?php echo html::submitButton();?></td></tr>
<tr><td colspan='<?php echo $columns;?>' class='text-center'><?php echo html::submitButton();?></td></tr>
</tfoot>
</table>
</form>
<?php $customLink = $this->createLink('custom', 'ajaxSaveCustom', 'module=bug&section=custom&key=batchedit')?>
<?php include '../../common/view/customfield.html.php';?>
<?php include '../../common/view/footer.html.php';?>