* finish task #2048.

This commit is contained in:
wangyidong
2014-08-15 02:41:42 +00:00
parent 2268964697
commit 7af17a2e4a
5 changed files with 111 additions and 33 deletions
+51 -6
View File
@@ -25,11 +25,56 @@ function loadProjectBuilds(productID, projectID, index)
$.get(link, function(builds)
{
$('#buildBox' + index).html(builds);
$('#openedBuilds' + index + '_chosen').remove();
$('#buildBox' + index + ' select').removeClass('select-3');
$('#buildBox' + index + ' select').addClass('select-1');
$('#buildBox' + index + ' select').attr('id', 'openedBuilds[' + index + '][]');
$('#buildBox' + index + ' select').chosen(defaultChosenOptions);
var row = $('#buildBox' + index).parents('tbody').find('tr').size()
do
{
var selected = $('#buildBox' + index).find('select').val();
$('#buildBox' + index).html(builds);
$('#buildBox' + index).find('select').val(selected);
$('#openedBuilds' + index + '_chosen').remove();
$('#buildBox' + index + ' select').removeClass('select-3');
$('#buildBox' + index + ' select').addClass('select-1');
$('#buildBox' + index + ' select').attr('name','openedBuilds[' + index + '][]');
$('#buildBox' + index + ' select').attr('id','openedBuilds' + index);
$('#buildBox' + index + ' select').chosen(defaultChosenOptions);
index++;
if($('#projects' + index).val() != 'ditto') break;
}while(index < row)
});
}
$(document).on('click', '.chosen-with-drop', function()
{
var select = $(this).prev('select');
if($(select).val() == 'ditto')
{
var index = $(select).parents('td').index();
var row = $(select).parents('tr').index();
var table = $(select).parents('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;
}
$(select).val(value);
$(select).trigger("chosen:updated");
}
})
$(document).on('mousedown', 'select', function()
{
if($(this).val() == 'ditto')
{
var index = $(this).parents('td').index();
var row = $(this).parents('tr').index();
var table = $(this).parents('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;
}
$(this).val(value);
}
})
+1
View File
@@ -113,6 +113,7 @@ $lang->bug->moduleBugs = 'ByModule';
$lang->bug->byQuery = 'Search';
$lang->bug->needConfirm = 'StoryChanged';
$lang->bug->allProduct = 'All products';
$lang->bug->ditto = 'Ditto';
/* Labels. */
$lang->bug->lblProductAndModule = 'Product&Module';
+1
View File
@@ -113,6 +113,7 @@ $lang->bug->moduleBugs = '按模块';
$lang->bug->byQuery = '搜索';
$lang->bug->needConfirm = '需求变动';
$lang->bug->allProduct = '所有产品';
$lang->bug->ditto = '同上';
/* 页面标签。*/
$lang->bug->lblProductAndModule = '产品模块';
+23 -10
View File
@@ -77,7 +77,7 @@ class bugModel extends model
$now = helper::now();
$actions = array();
$data = fixer::input('post')->get();
$batchNum = count(current($data));
$batchNum = count(reset($data));
for($i = 0; $i < $batchNum; $i++)
{
@@ -88,22 +88,35 @@ class bugModel extends model
$stmt = $this->dbh->query($this->loadModel('tree')->buildMenuQuery($productID, 'bug', $startModuleID = 0));
$moduleOwners = array();
while($module = $stmt->fetch()) $moduleOwners[$module->id] = $module->owner;
$module = 0;
$project = 0;
$type = '';
$os = '';
$browser = '';
for($i = 0; $i < $batchNum; $i++)
{
if(empty($data->titles[$i])) continue;
if($data->modules[$i] != 'ditto') $module = (int)$data->modules[$i];
if($data->projects[$i] != 'ditto') $project = (int)$data->projects[$i];
if($data->types[$i] != 'ditto') $type = $data->types[$i];
if($data->oses[$i] != 'ditto') $os = $data->oses[$i];
if($data->browsers[$i] != 'ditto') $browser = $data->browsers[$i];
$bug = new stdClass();
$bug->openedBy = $this->app->user->account;
$bug->openedDate = $now;
$bug->product = $productID;
$bug->module = $data->modules[$i];
$bug->project = $data->projects[$i] ? $data->projects[$i] : 0;
$bug->module = $module;
$bug->project = $project;
$bug->openedBuild = implode(',', $data->openedBuilds[$i]);
$bug->title = $data->titles[$i];
$bug->steps = nl2br($data->stepses[$i]);
$bug->type = $data->types[$i];
$bug->type = $type;
$bug->severity = $data->severities[$i];
$bug->os = $data->oses[$i];
$bug->browser = $data->browsers[$i];
$bug->os = $os;
$bug->browser = $browser;
if(!empty($moduleOwners[$bug->module]))
{
@@ -111,11 +124,11 @@ class bugModel extends model
$bug->assignedDate = $now;
}
$this->dao->insert(TABLE_BUG)->data($bug)->autoCheck()->batchCheck($this->config->bug->create->requiredFields, 'notempty')->exec();
$bugID = $this->dao->lastInsertID();
$this->dao->insert(TABLE_BUG)->data($bug)->autoCheck()->batchCheck($this->config->bug->create->requiredFields, 'notempty')->exec();
$bugID = $this->dao->lastInsertID();
if(dao::isError()) die(js::error('bug#' . ($i+1) . dao::getError(true)));
$actions[$bugID] = $this->action->create('bug', $bugID, 'Opened');
if(dao::isError()) die(js::error('bug#' . ($i+1) . dao::getError(true)));
$actions[$bugID] = $this->action->create('bug', $bugID, 'Opened');
}
return $actions;
}
+35 -17
View File
@@ -36,23 +36,41 @@
<th class='w-100px'> <?php echo $lang->bug->browser;?></th>
</tr>
</thead>
<?php for($i = 0; $i < $config->bug->batchCreate; $i++):?>
<tr class='text-center'>
<td><?php echo $i+1;?></td>
<td class='text-left' style='overflow:visible'><?php echo html::select("modules[$i]", $moduleOptionMenu, $moduleID, "class='form-control chosen'");?></td>
<td class='text-left' style='overflow:visible'><?php echo html::select("projects[$i]", $projects, $projectID, "class='form-control chosen' onchange='loadProjectBuilds($productID, this.value, $i)'");?></td>
<td class='text-left' style='overflow:visible' id='buildBox<?php echo $i;?>'><?php echo html::select("openedBuilds[$i][]", $builds, '', "class='form-control chosen' multiple");?></td>
<td><?php echo html::input("titles[$i]", '', 'class=form-control');?></td>
<td>
<?php echo html::textarea("stepses[$i]", '', "rows='1' class='form-control'");?>
</td>
<td><?php echo html::select("types[$i]", $lang->bug->typeList, '', "class='form-control'");?></td>
<td><?php echo html::select("severities[$i]", $lang->bug->severityList, '', "class='form-control'");?></td>
<td><?php echo html::select("oses[$i]", $lang->bug->osList, '', "class='form-control'");?></td>
<td><?php echo html::select("browsers[$i]", $lang->bug->browserList, '', "class='form-control'");?></td>
</tr>
<?php endfor;?>
<tr><td colspan='8' class='text-center'><?php echo html::submitButton() . html::backButton();?></td></tr>
<tbody>
<?php
$moduleOptionMenu += array('ditto' => $lang->bug->ditto);
$projects += array('ditto' => $lang->bug->ditto);
$lang->bug->typeList += array('ditto' => $lang->bug->ditto);
$lang->bug->osList += array('ditto' => $lang->bug->ditto);
$lang->bug->browserList += array('ditto' => $lang->bug->ditto);
?>
<?php for($i = 0; $i < $config->bug->batchCreate; $i++):?>
<?php
$moduleID = $i == 0 ? 0 : 'ditto';
$projectID = $i == 0 ? 0 : 'ditto';
$type = $i == 0 ? '' : 'ditto';
$os = $i == 0 ? '' : 'ditto';
$browser = $i == 0 ? '' : 'ditto';
?>
<tr class='text-center'>
<td><?php echo $i+1;?></td>
<td class='text-left' style='overflow:visible'><?php echo html::select("modules[$i]", $moduleOptionMenu, $moduleID, "class='form-control chosen'");?></td>
<td class='text-left' style='overflow:visible'><?php echo html::select("projects[$i]", $projects, $projectID, "class='form-control chosen' onchange='loadProjectBuilds($productID, this.value, $i)'");?></td>
<td class='text-left' style='overflow:visible' id='buildBox<?php echo $i;?>'><?php echo html::select("openedBuilds[$i][]", $builds, '', "class='form-control chosen' multiple");?></td>
<td><?php echo html::input("titles[$i]", '', 'class=form-control');?></td>
<td>
<?php echo html::textarea("stepses[$i]", '', "rows='1' class='form-control'");?>
</td>
<td><?php echo html::select("types[$i]", $lang->bug->typeList, $type, "class='form-control'");?></td>
<td><?php echo html::select("severities[$i]", $lang->bug->severityList, '', "class='form-control'");?></td>
<td><?php echo html::select("oses[$i]", $lang->bug->osList, $os, "class='form-control'");?></td>
<td><?php echo html::select("browsers[$i]", $lang->bug->browserList, $browser, "class='form-control'");?></td>
</tr>
<?php endfor;?>
</tbody>
<tfoot>
<tr><td colspan='8' class='text-center'><?php echo html::submitButton() . html::backButton();?></td></tr>
</tfoot>
</table>
</form>
<table class='hide' id='trTemp'>