* finish task #2048.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -113,6 +113,7 @@ $lang->bug->moduleBugs = '按模块';
|
||||
$lang->bug->byQuery = '搜索';
|
||||
$lang->bug->needConfirm = '需求变动';
|
||||
$lang->bug->allProduct = '所有产品';
|
||||
$lang->bug->ditto = '同上';
|
||||
|
||||
/* 页面标签。*/
|
||||
$lang->bug->lblProductAndModule = '产品模块';
|
||||
|
||||
+23
-10
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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'>
|
||||
|
||||
Reference in New Issue
Block a user