* rewrite the view and edit page of bug.

This commit is contained in:
wangchunsheng
2010-01-19 08:39:17 +00:00
parent 2e600c8ba0
commit 25ad0cad8c
7 changed files with 310 additions and 301 deletions

View File

@@ -213,37 +213,31 @@ class bug extends control
die(js::locate($this->createLink('bug', 'view', "bugID=$bugID"), 'parent'));
}
/* 生成表单。*/
/* 查找当前bug信息和产品模块信息。*/
$bug = $this->bug->getById($bugID);
$productID = $bug->product;
$currentModuleID = $bug->module;
$header['title'] = $this->products[$productID] . $this->lang->colon . $this->lang->bug->edit;
$position[] = html::a($this->createLink('bug', 'browse', "productID=$productID"), $this->products[$productID]);
$position[] = $this->lang->bug->edit;
/* 设置菜单。*/
$this->bug->setMenu($this->products, $productID);
$projects = $this->product->getProjectPairs($bug->product);
$stories = $bug->project ? $this->story->getProjectStoryPairs($bug->project) : $this->story->getProductStoryPairs($bug->product);
$tasks = $this->task->getProjectTaskPairs($bug->project);
/* 位置。*/
$this->view->header->title = $this->products[$productID] . $this->lang->colon . $this->lang->bug->edit;
$this->view->position[] = html::a($this->createLink('bug', 'browse', "productID=$productID"), $this->products[$productID]);
$this->view->position[] = $this->lang->bug->edit;
$users = $this->user->getPairs();
$this->assign('header', $header);
$this->assign('position', $position);
$this->assign('productID', $productID);
$this->assign('productName', $this->products[$productID]);
$this->assign('moduleOptionMenu', $this->tree->getOptionMenu($productID, $viewType = 'bug', $rooteModuleID = 0));
$this->assign('currentModuleID', $currentModuleID);
$this->assign('users', $users);
$this->assign('projects', $projects);
$this->assign('stories', $stories);
$this->assign('tasks', $tasks);
$this->assign('header', $header);
$this->assign('position', $position);
$this->assign('bug', $bug);
/* 赋值。*/
$this->view->bug = $bug;
$this->view->productID = $productID;
$this->view->productName = $this->products[$productID];
$this->view->moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'bug', $rooteModuleID = 0);
$this->view->currentModuleID = $currentModuleID;
$this->view->projects = $this->product->getProjectPairs($bug->product);
$this->view->stories = $bug->project ? $this->story->getProjectStoryPairs($bug->project) : $this->story->getProductStoryPairs($bug->product);
$this->view->tasks = $this->task->getProjectTaskPairs($bug->project);
$this->view->users = $this->user->getPairs();
$this->view->builds = $this->loadModel('build')->getProductBuildPairs($productID);
$this->view->actions = $this->action->getList('bug', $bugID);
$this->display();
}

View File

@@ -44,27 +44,22 @@ $lang->bug->allBugs = '所有Bug';
$lang->bug->moduleBugs = '按模块浏览';
$lang->bug->byQuery = '搜索';
$lang->bug->labProductAndModule = '产品模块';
$lang->bug->labProjectAndTask = '项目任务';
$lang->bug->labStory = '相关需求';
$lang->bug->labBuild = '程序编译版本';
$lang->bug->labTypeAndSeverity = '类型/严重程度';
$lang->bug->labSystemBrowserAndHardware = '系统/浏览器';
$lang->bug->labAssignedTo = '当前指派';
$lang->bug->labMailto = '抄送给';
$lang->bug->labLastEdited = '最后修改';
$lang->bug->labResolved = '由谁解决';
$lang->bug->lblProductAndModule = '产品模块';
$lang->bug->lblProjectAndTask = '项目任务';
$lang->bug->lblStory = '相关需求';
$lang->bug->lblTypeAndSeverity = '类型/严重程度';
$lang->bug->lblSystemBrowserAndHardware = '系统/浏览器';
$lang->bug->lblAssignedTo = '当前指派';
$lang->bug->lblMailto = '抄送给';
$lang->bug->lblLastEdited = '最后修改';
$lang->bug->lblResolved = '由谁解决';
$lang->bug->confirmChangeProduct = '修改产品会导致相应的项目、需求和任务发生变化,确定吗?';
$lang->bug->legendRelated = '相关信息';
$lang->bug->legendBasicInfo = '基本信息';
$lang->bug->legendMailto = '抄送给';
$lang->bug->legendAttatch = '附件';
$lang->bug->legendLinkBugs = '相关Bug';
$lang->bug->legendOpenInfo = '创建信息';
$lang->bug->legendResolveInfo = '解决信息';
$lang->bug->legendCloseInfo = '关闭信息';
$lang->bug->legendPrjStoryTask= '项目/需求/任务';
$lang->bug->legendCases = '相关用例';
$lang->bug->legendSteps = '重现步骤';
@@ -72,6 +67,7 @@ $lang->bug->legendAction = '操作';
$lang->bug->legendHistory = '历史记录';
$lang->bug->legendComment = '备注';
$lang->bug->legendLife = 'BUG的一生';
$lang->bug->legendMisc = '其相关他';
$lang->bug->buttonEdit = '编辑';
$lang->bug->buttonActivate = '激活';
@@ -85,24 +81,29 @@ $lang->bug->severityList[2] = 2;
$lang->bug->severityList[4] = 4;
/* Define the OS list. */
$lang->bug->osList->all = '全部';
$lang->bug->osList->winxp = 'Windows XP';
$lang->bug->osList->win2000 = 'Windows 2000';
$lang->bug->osList->winnt = 'Windows NT';
$lang->bug->osList->win98 = 'Windows 98';
$lang->bug->osList->linux = 'Linux';
$lang->bug->osList->unix = 'Unix';
$lang->bug->osList->others = '其他';
$lang->bug->osList['all'] = '全部';
$lang->bug->osList['winxp'] = 'Windows XP';
$lang->bug->osList['win7'] = 'Windows 7';
$lang->bug->osList['vista'] = 'Windows Vista';
$lang->bug->osList['win2000'] = 'Windows 2000';
$lang->bug->osList['winnt'] = 'Windows NT';
$lang->bug->osList['win98'] = 'Windows 98';
$lang->bug->osList['linux'] = 'Linux';
$lang->bug->osList['unix'] = 'Unix';
$lang->bug->osList['others'] = '其他';
/* Define the OS list. */
$lang->bug->browserList->all = '全部';
$lang->bug->browserList->ie6 = 'IE6';
$lang->bug->browserList->ie7 = 'IE7';
$lang->bug->browserList->ie8 = 'IE8';
$lang->bug->browserList->firefox2 = 'firefox2';
$lang->bug->browserList->firefx3 = 'firefox3';
$lang->bug->browserList->opera9 = 'opera9';
$lang->bug->browserList->oprea10 = '其他';
$lang->bug->browserList['all'] = '全部';
$lang->bug->browserList['ie6'] = 'IE6';
$lang->bug->browserList['ie7'] = 'IE7';
$lang->bug->browserList['ie8'] = 'IE8';
$lang->bug->browserList['firefox2'] = 'firefox2';
$lang->bug->browserList['firefx3'] = 'firefox3';
$lang->bug->browserList['opera9'] = 'opera9';
$lang->bug->browserList['oprea10'] = 'opera10';
$lang->bug->browserList['safari'] = 'safari';
$lang->bug->browserList['chrome'] = 'chrome';
$lang->bug->browserList['other'] = '其他';
/* Define the types. */
$lang->bug->typeList[''] = '';
@@ -112,9 +113,9 @@ $lang->bug->typeList['designchange'] = '设计变更';
$lang->bug->typeList['Others'] = '其他';
$lang->bug->statusList[''] = '';
$lang->bug->statusList['active'] = 'active';
$lang->bug->statusList['resolved'] = 'resolved';
$lang->bug->statusList['closed'] = 'closed';
$lang->bug->statusList['active'] = '激活';
$lang->bug->statusList['resolved'] = '已解决';
$lang->bug->statusList['closed'] = '已关闭';
$lang->bug->resolutionList[''] = '';
$lang->bug->resolutionList['bydesign'] = '设计如此';
@@ -156,6 +157,8 @@ $lang->bug->closedDate = '关闭日期';
$lang->bug->duplicateBug = '重复Bug';
$lang->bug->lastEditedBy = '最后修改者';
$lang->bug->lastEditedDate = '最后修改日期';
$lang->bug->linkBug = '相关Bug';
$lang->bug->case = '相关用例';
$lang->bug->files = '附件';
$lang->bug->field1 = 'field1';
$lang->bug->field2 = 'field2';

View File

@@ -79,6 +79,8 @@ class bugModel extends model
foreach($bug as $key => $value) if(strpos($key, 'Date') !== false and !(int)substr($value, 0, 4)) $bug->$key = '';
$bug->mailto = ltrim(trim($bug->mailto), ',');
if($bug->duplicateBug) $bug->duplicateBugTitle = $this->dao->findById($bug->duplicateBug)->from(TABLE_BUG)->fields('title')->fetch('title');
if($bug->case) $bug->caseTitle = $this->dao->findById($bug->case)->from(TABLE_CASE)->fields('title')->fetch('title');
if($bug->linkBug) $bug->linkBugTitles = $this->dao->select('id,title')->from(TABLE_BUG)->where('id')->in($bug->linkBug)->fetchPairs();
$bug->files = $this->loadModel('file')->getByObject('bug', $bugID);
return $bug;
}

View File

@@ -24,10 +24,8 @@
?>
<?php include '../../common/header.html.php';?>
<style>
#project{width:245px}
#product{width:245px}
#story{width:245px}
#openedBuild{width:245px}
#project, #product, #story, #openedBuild {width:245px}
#severity, #browser {width: 113px}
</style>
<script language='Javascript'>
/* 当选择产品时,触发这个方法。*/
@@ -111,21 +109,21 @@ function loadProjectBuilds(projectID)
<table align='center' class='table-1'>
<caption><?php echo $lang->bug->create;?></caption>
<tr>
<th class='rowhead'><?php echo $lang->bug->labProductAndModule;?></th>
<th class='rowhead'><?php echo $lang->bug->lblProductAndModule;?></th>
<td class='a-left'>
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value); class='select-2'");?>
<span id='moduleIdBox'><?php echo html::select('module', $moduleOptionMenu, $currentModuleID, 'class=select-3');?></span>
</td>
</tr>
<tr>
<th class='rowhead'><?php echo $lang->bug->labProjectAndTask;?></th>
<th class='rowhead'><?php echo $lang->bug->lblProjectAndTask;?></th>
<td class='a-left'>
<span id='projectIdBox'><?php echo html::select('project', $projects, '', 'onchange=loadProjectRelated(this.value)');?></span>
<span id='taskIdBox'></span>
</td>
</tr>
<tr>
<th class='rowhead'><?php echo $lang->bug->labStory;?></th>
<th class='rowhead'><?php echo $lang->bug->lblStory;?></th>
<td class='a-left'>
<span id='storyIdBox'><?php echo html::select('story', $stories);?></span>
</td>
@@ -137,25 +135,25 @@ function loadProjectBuilds(projectID)
</td>
</tr>
<tr>
<th class='rowhead'><?php echo $lang->bug->labTypeAndSeverity;?></th>
<th class='rowhead'><?php echo $lang->bug->lblTypeAndSeverity;?></th>
<td class='a-left'>
<?php echo html::select('type', (array)$lang->bug->typeList, 'codeerror', 'class=select-2');?>
<?php echo html::select('severity', (array)$lang->bug->severityList, '', 'class=select-2');?>
</td>
</tr>
<tr>
<th class='rowhead'><nobr><?php echo $lang->bug->labSystemBrowserAndHardware;?></nobr></th>
<th class='rowhead'><nobr><?php echo $lang->bug->lblSystemBrowserAndHardware;?></nobr></th>
<td class='a-left'>
<?php echo html::select('os', (array)$lang->bug->osList, '', 'class=select-2');?>
<?php echo html::select('browser', (array)$lang->bug->browserList, '', 'class=select-2');?>
</td>
</tr>
<tr>
<th class='rowhead'><nobr><?php echo $lang->bug->labAssignedTo;?></nobr></th>
<th class='rowhead'><nobr><?php echo $lang->bug->lblAssignedTo;?></nobr></th>
<td class='a-left'> <?php echo html::select('assignedTo', $users, '', 'class=select-3');?></td>
</tr>
<tr>
<th class='rowhead'><nobr><?php echo $lang->bug->labMailto;?></nobr></th>
<th class='rowhead'><nobr><?php echo $lang->bug->lblMailto;?></nobr></th>
<td class='a-left'> <?php echo html::select('mailto[]', $users, '', 'class=select-3 size=5 multiple=multiple');?> </td>
</tr>
<tr>

View File

@@ -23,13 +23,15 @@
*/
?>
<?php include '../../common/header.html.php';?>
<style>#project, #story, #task{width:245px}</style>
<style>#product, #module, #project, #story, #task, #openedBuild, #resolvedBuild{width:245px}</style>
<script language='Javascript'>
changeProductConfirmed = false;
changeProjectConfirmed = false;
oldProjectID = '<?php echo $bug->project;?>';
oldStoryID = '<?php echo $bug->story;?>';
oldTaskID = '<?php echo $bug->task;?>';
oldOpenedBuild = '<?php echo $bug->openedBuild;?>';
oldResolvedBuild = '<?php echo $bug->resolvedBuild;?>';
emptySelect = "<select name='task' id='task'><option value=''></option></select>";
/* 当选择产品时,触发这个方法。*/
function loadAll(productID)
@@ -44,7 +46,8 @@ function loadAll(productID)
$('#taskIdBox').get(0).innerHTML = emptySelect;
loadModuleMenu(productID); // 加载产品的模块列表。
loadProductStories(productID); // 加载产品的需求列表。
loadProjects(productID); // 加载项目列表。
loadProductProjects(productID); // 加载项目列表。
loadProductBuilds(productID); // 加载build列表。
}
}
@@ -63,19 +66,29 @@ function loadProductStories(productID)
}
/* 加载项目列表。*/
function loadProjects(productID)
function loadProductProjects(productID)
{
link = createLink('product', 'ajaxGetProjects', 'productID=' + productID + '&projectID=' + oldProjectID);
$('#projectIdBox').load(link);
}
/* 加载产品build列表。*/
function loadProductBuilds(productID)
{
link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild);
$('#openedBuildBox').load(link);
link = createLink('build', 'ajaxGetProductBuilds', 'productID=' + productID + '&varName=resolvedBuild&build=' + oldResolvedBuild);
$('#resolvedBuildBox').load(link);
}
/* 加载项目的任务列表和需求列表。*/
function loadProjectStoriesAndTasks(projectID)
function loadProjectRelated(projectID)
{
if(projectID)
{
loadProjectTasks(projectID);
loadProjectStories(projectID);
loadProjectBuilds(projectID);
}
else
{
@@ -99,6 +112,16 @@ function loadProjectStories(projectID)
$('#storyIdBox').load(link);
}
/* 加载项目的build列表。*/
function loadProjectBuilds(projectID)
{
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&varName=openedBuild&build=' + oldOpenedBuild);
$('#openedBuildBox').load(link);
link = createLink('build', 'ajaxGetProjectBuilds', 'projectID=' + projectID + '&varName=resolvedBuild&build=' + oldResolvedBuild);
$('#resolvedBuildBox').load(link);
}
/* 设置重复bug的显示。*/
function setDuplicate(resolution)
{
if(resolution == 'duplicate')
@@ -122,180 +145,155 @@ function setDuplicate(resolution)
</div>
</div>
<div class='yui-d0'>
<div class='yui-g'>
<div class='yui-u first'>
<fieldset>
<legend><?php echo $lang->bug->legendBasicInfo;?></legend>
<table class='table-1 a-left' cellpadding='0' cellspacing='0'>
<tr>
<td class='rowhead'><?php echo $lang->bug->labProductAndModule;?></td>
<td>
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value); class='select-2'");?>
<span id='moduleIdBox'><?php echo html::select('module', $moduleOptionMenu, $currentModuleID);?></span>
</td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->type;?></td>
<td><?php echo html::select('type', (array)$lang->bug->typeList, $bug->type, 'class=select-2');?>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->severity;?></td>
<td><?php echo html::select('severity', (array)$lang->bug->severityList, $bug->severity, 'class=select-2');?>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->os;?></td>
<td><?php echo html::select('os', (array)$lang->bug->osList, $bug->os, 'class=select-2');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->status;?></td>
<td><?php echo html::select('status', (array)$lang->bug->statusList, $bug->status, 'class=select-2');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
<td><?php echo html::select('assignedTo', $users, $bug->assignedTo, 'class=select-2');?></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendPrjStoryTask;?></legend>
<table class='table-1 a-left'>
<tr>
<td class='rowhead'><?php echo $lang->bug->project;?></td>
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $bug->project, 'class=select-3 onchange=loadProjectStoriesAndTasks(this.value)');?></span></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->story;?></td>
<td><span id='storyIdBox'><?php echo html::select('story', $stories, $bug->story, 'class=select-3');?></span></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->task;?></td>
<td><span id='taskIdBox'><?php echo html::select('task', $tasks, $bug->task, 'class=select-3');?></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendMailto;?></legend>
<table class='table-1 a-left'>
<tr>
<td class='rowhead'></td>
<td><?php echo html::input('mailto', $bug->mailto, 'class=text-3');?></div>
</tr>
</table>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendAttatch;?></legend>
<table class='table-1 a-left'>
<tr>
<td class='rowhead'></td>
<td>
<?php echo $this->fetch('file', 'buildform', 'filecount=2');?>
<?php foreach($bug->files as $file) echo html::a($file->fullPath, $file->title);?>
</td>
</tr>
</table>
</fieldset>
</div>
<div class='yui-u'>
<fieldset>
<legend><?php echo $lang->bug->legendOpenInfo;?></legend>
<table class='table-1 a-left'>
<tr>
<td width='40%' class='rowhead'><?php echo $lang->bug->openedBy;?></td>
<td><?php echo $users[$bug->openedBy];?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->openedBuild;?></td>
<td><?php echo html::input('openedBuild', $bug->openedBuild, 'class=text-2');?></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendResolveInfo;?></legend>
<table class='table-1 a-left'>
<tr>
<td width='40%' class='rowhead'><?php echo $lang->bug->resolvedBy;?></td>
<td><?php echo html::select('resolvedBy', $users, $bug->resolvedBy, 'class=select-2');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->resolvedDate;?></td>
<td><?php echo html::input('resolvedDate', $bug->resolvedDate, 'class=text-2');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->resolvedBuild;?></td>
<td><?php echo html::input('resolvedBuild', $bug->resolvedBuild, 'class=text-2');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->resolution;?></td>
<td><?php echo html::select('resolution', $lang->bug->resolutionList, $bug->resolution, 'class=select-2 onchange=setDuplicate(this.value)');?></td>
</tr>
<tr id='duplicateBugBox' <?php if($bug->resolution != 'duplicate') echo "style='display:none'";?>>
<td class='rowhead'><?php echo $lang->bug->duplicateBug;?></td>
<td><?php echo html::input('duplicateBug', $bug->duplicateBug, 'class=text-2');?></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendCloseInfo;?></legend>
<table class='table-1 a-left'>
<tr>
<td width='40%' class='rowhead'><?php echo $lang->bug->closedBy;?></td>
<td><?php echo html::select('closedBy', $users, $bug->closedBy, 'class=select-2');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->closedDate;?></td>
<td><?php echo html::input('closedDate', $bug->closedDate, 'class=text-2');?></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendLinkBugs;?></legend>
<div>&nbsp;</div>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendCases;?></legend>
<div>&nbsp;</div>
</fieldset>
</div>
<div class='yui-d0 yui-t8'>
<div class='yui-main'>
<div class='yui-b'>
<table class='table-1 bd-none'>
<tr class='bd-none'><td class='bd-none'>
<fieldset>
<legend><?php echo $lang->bug->legendSteps;?></legend>
<textarea name='steps' rows='8' class='area-1'><?php echo $bug->steps;?></textarea>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendComment;?></legend>
<textarea name='comment' rows='6' class='area-1'></textarea>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendAttatch;?></legend>
<?php echo $this->fetch('file', 'buildform', 'filecount=2');?>
</fieldset>
<div class='a-center'>
<?php echo html::submitButton();?>
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
onclick='location.href="<?php echo $this->createLink('bug', 'browse', "productID=$productID");?>"' />
</div>
</td></tr>
</table>
<?php include '../../common/action.html.php';?>
</div>
</div>
</div>
<div class='yui-d0'>
<fieldset>
<legend><?php echo $lang->bug->legendComment;?></legend>
<table class='table-1'>
<tr>
<td width='90%'><textarea name='comment' rows='4' class='area-1'></textarea></td>
<td>
<?php echo html::submitButton();?>
<input type='button' value='<?php echo $lang->bug->buttonToList;?>' class='button-s'
onclick='location.href="<?php echo $this->createLink('bug', 'browse', "productID=$productID");?>"' />
</td>
</tr>
</table>
</fieldset>
<div class='yui-b'>
<fieldset>
<legend><?php echo $lang->bug->legendBasicInfo;?></legend>
<table class='table-1 a-left' cellpadding='0' cellspacing='0'>
<tr>
<td class='rowhead'><?php echo $lang->bug->product;?></td>
<td>
<?php echo html::select('product', $products, $productID, "onchange=loadAll(this.value);");?>
</td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->module;?></td>
<td>
<span id='moduleIdBox'><?php echo html::select('module', $moduleOptionMenu, $currentModuleID);?></span>
</td>
</tr>
<fieldset>
<legend><?php echo $lang->bug->legendSteps;?></legend>
<table class='table-1'>
<tr>
<td width='90%'><textarea name='steps' rows='4' class='area-1'><?php echo $bug->steps;?></textarea></td>
<td></td>
</tr>
</table>
</fieldset>
<tr>
<td class='rowhead'><?php echo $lang->bug->type;?></td>
<td><?php echo html::select('type', $lang->bug->typeList, $bug->type, 'class=select-3');?>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->severity;?></td>
<td><?php echo html::select('severity', $lang->bug->severityList, $bug->severity, 'class=select-3');?>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->status;?></td>
<td><?php echo html::select('status', $lang->bug->statusList, $bug->status, 'class=select-3');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->assignedTo;?></td>
<td><?php echo html::select('assignedTo', $users, $bug->assignedTo, 'class=select-3');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->os;?></td>
<td><?php echo html::select('os', $lang->bug->osList, $bug->os, 'class=select-3');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->browser;?></td>
<td><?php echo html::select('browser', $lang->bug->browserList, $bug->browser, 'class=select-3');?></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendPrjStoryTask;?></legend>
<table class='table-1 a-left'>
<tr>
<td class='rowhead'><?php echo $lang->bug->project;?></td>
<td><span id='projectIdBox'><?php echo html::select('project', $projects, $bug->project, 'class=select-3 onchange=loadProjectRelated(this.value)');?></span></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->story;?></td>
<td><span id='storyIdBox'><?php echo html::select('story', $stories, $bug->story, 'class=select-3');?></span></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->task;?></td>
<td><span id='taskIdBox'><?php echo html::select('task', $tasks, $bug->task, 'class=select-3');?></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendLife;?></legend>
<table class='table-1 a-left'>
<tr>
<td class='rowhead'><?php echo $lang->bug->openedBy;?></td>
<td><?php echo $users[$bug->openedBy];?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->openedBuild;?></td>
<td><span id='openedBuildBox'><?php echo html::select('openedBuild', $builds, $bug->openedBuild, 'class=select-3');?></span></td>
</tr>
<tr>
<td width='40%' class='rowhead'><?php echo $lang->bug->resolvedBy;?></td>
<td><?php echo html::select('resolvedBy', $users, $bug->resolvedBy, 'class=select-3');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->resolvedDate;?></td>
<td><?php echo html::input('resolvedDate', $bug->resolvedDate, 'class=text-3');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->resolvedBuild;?></td>
<td><span id='resolvedBuildBox'><?php echo html::select('resolvedBuild', $builds, $bug->resolvedBuild, 'class=select-3');?></span></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->resolution;?></td>
<td><?php echo html::select('resolution', $lang->bug->resolutionList, $bug->resolution, 'class=select-3 onchange=setDuplicate(this.value)');?></td>
</tr>
<tr id='duplicateBugBox' <?php if($bug->resolution != 'duplicate') echo "style='display:none'";?>>
<td class='rowhead'><?php echo $lang->bug->duplicateBug;?></td>
<td><?php echo html::input('duplicateBug', $bug->duplicateBug, 'class=text-3');?></td>
</tr>
<tr>
<td width='40%' class='rowhead'><?php echo $lang->bug->closedBy;?></td>
<td><?php echo html::select('closedBy', $users, $bug->closedBy, 'class=select-3');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->closedDate;?></td>
<td><?php echo html::input('closedDate', $bug->closedDate, 'class=text-3');?></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendMisc;?></legend>
<table class='table-1 a-left'>
<tr>
<td class='rowhead'><?php echo $lang->bug->mailto;?></td>
<td><?php echo html::input('mailto', $bug->mailto, 'class="text-3"');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->linkBug;?></td>
<td><?php echo html::input('linkBug', $bug->linkBug, 'class="text-3"');?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->case;?></td>
<td><?php echo html::input('case', $bug->case, 'class="text-3"');?></td>
</tr>
</table>
</fieldset>
</div>
</div>
<?php include '../../common/footer.html.php';?>

View File

@@ -6,14 +6,14 @@
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
*
* ZenTaoMS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
*
* You should have received a copy of the GNU Lesser General Public License
* along with ZenTaoMS. If not, see <http://www.gnu.org/licenses/>.
* along with ZenTaoMS. If not, see <http://www.gnu.org/licenses/>.
*
* @copyright Copyright: 2009 Chunsheng Wang
* @author Chunsheng Wang <wwccss@263.net>
@@ -28,18 +28,19 @@
<div id='titlebar'>
<div id='main'>BUG #<?php echo $bug->id . $lang->colon . $bug->title;?></div>
<div>
<?php
common::printLink('bug', 'edit', "bugID=$bug->id", $lang->bug->buttonEdit);
if($bug->status == 'active') common::printLink('bug', 'resolve', "bugID=$bug->id", $lang->bug->buttonResolve); else echo $lang->bug->buttonResolve . ' ';
if($bug->status == 'resolved') common::printLink('bug', 'close', "bugID=$bug->id", $lang->bug->buttonClose); else echo $lang->bug->buttonClose . ' ';
if($bug->status == 'closed' or $bug->status == 'resolved') common::printLink('bug', 'activate', "bugID=$bug->id", $lang->bug->buttonActivate); else echo $lang->bug->buttonActivate . ' ';
if(common::hasPriv('bug', 'browse')) echo html::a($this->session->bugList, $lang->bug->buttonToList);
?>
<?php
$params = "bugID=$bug->id";
common::printLink('bug', 'edit', $params, $lang->bug->buttonEdit);
if(!($bug->status == 'active' and common::printLink('bug', 'resolve', $params, $lang->bug->buttonResolve))) echo $lang->bug->buttonResolve . ' ';
if(!($bug->status == 'resolved' and common::printLink('bug', 'close', $params, $lang->bug->buttonClose))) echo $lang->bug->buttonClose . ' ';
if(!($bug->status == 'closed' and common::printLink('bug', 'activate', $params, $lang->bug->buttonActivate))) echo $lang->bug->buttonActivate . ' ';
common::printLink('bug', 'browse', '', $lang->bug->buttonToList);
?>
</div>
</div>
</div>
<div class='yui-d0 yui-t6'>
<div class='yui-d0 yui-t8'>
<div class='yui-main'>
<div class='yui-b'>
<fieldset>
@@ -51,34 +52,31 @@
<div><?php foreach($bug->files as $file) echo html::a($file->fullPath, $file->title, '_blank');?></div>
</fieldset>
<?php include '../../common/action.html.php';?>
<fieldset>
<legend><?php echo $lang->bug->legendAction;?></legend>
<div class='a-center' style='font-size:16px; font-weight:bold'>
<?php
if(common::hasPriv('bug', 'edit')) echo html::a($this->createLink('bug', 'edit', "bugID=$bug->id"), $lang->bug->buttonEdit);
if(common::hasPriv('bug', 'resolve') and $bug->status == 'active') echo html::a($this->createLink('bug', 'resolve', "bugID=$bug->id"), $lang->bug->buttonResolve); else echo $lang->bug->buttonResolve . ' ';
if(common::hasPriv('bug', 'close') and $bug->status == 'resolved') echo html::a($this->createLink('bug', 'close', "bugID=$bug->id"), $lang->bug->buttonClose); else echo $lang->bug->buttonClose . ' ';
if(common::hasPriv('bug', 'activate') and ($bug->status == 'closed' or $bug->status == 'resolved')) echo html::a($this->createLink('bug', 'activate', "bugID=$bug->id"), $lang->bug->buttonActivate); else echo $lang->bug->buttonActivate . ' ';
if(common::hasPriv('bug', 'browse')) echo html::a($this->session->bugList, $lang->bug->buttonToList);
?>
</div>
</fieldset>
<div class='a-center' style='font-size:16px; font-weight:bold'>
<?php
common::printLink('bug', 'edit', $params, $lang->bug->buttonEdit);
if(!($bug->status == 'active' and common::printLink('bug', 'resolve', $params, $lang->bug->buttonResolve))) echo $lang->bug->buttonResolve . ' ';
if(!($bug->status == 'resolved' and common::printLink('bug', 'close', $params, $lang->bug->buttonClose))) echo $lang->bug->buttonClose . ' ';
if(!($bug->status == 'closed' and common::printLink('bug', 'activate', $params, $lang->bug->buttonActivate))) echo $lang->bug->buttonActivate . ' ';
common::printLink('bug', 'browse', '', $lang->bug->buttonToList);
?>
</div>
</div>
</div>
<div class='yui-b'>
<fieldset>
<legend><?php echo $lang->bug->legendBasicInfo;?></legend>
<table class='table-1 a-left fixed'>
<tr>
<th class='w-p25 rowhead'><?php echo $lang->bug->labProductAndModule;?></th>
<td class='nobr'>
<table class='table-1 a-left'>
<tr valign='middle'>
<th class='w-p25 rowhead'><?php echo $lang->bug->lblProductAndModule;?></th>
<td>
<?php
echo $productName;
if(!common::printLink('bug', 'browse', "productID=$bug->product", $productName)) echo $productName;
if(!empty($modulePath)) echo $lang->arrow;
foreach($modulePath as $key => $module)
{
echo $module->name;
if(!common::printLink('bug', 'browse', "productID=$bug->product&browseType=byModule&param=$module->id", $module->name)) echo $module->name;
if(isset($modulePath[$key + 1])) echo $lang->arrow;
}
?>
@@ -88,22 +86,28 @@
<td class='rowhead'><?php echo $lang->bug->type;?></td>
<td><?php echo $lang->bug->typeList[$bug->type];?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->os;?></td>
<td><?php echo $lang->bug->osList->{$bug->os};?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->severity;?></td>
<td><?php echo $bug->severity;?></td>
<td><strong><?php echo $bug->severity;?></strong></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->status;?></td>
<td><?php echo $bug->status;?></td>
<td><strong><?php echo $lang->bug->statusList[$bug->status];?></strong></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->labAssignedTo;?></td>
<td class='rowhead'><?php echo $lang->bug->lblAssignedTo;?></td>
<td><?php if($bug->assignedTo) echo $users[$bug->assignedTo] . $lang->at . $bug->assignedDate;?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->os;?></td>
<td><?php echo $lang->bug->osList[$bug->os];?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->browser;?></td>
<td><?php echo $lang->bug->browserList[$bug->browser];?></td>
</tr>
</table>
</fieldset>
@@ -119,7 +123,7 @@
<td><?php echo $builds[$bug->openedBuild];?></td>
</tr>
<tr>
<th class='rowhead'><?php echo $lang->bug->labResolved;?></th>
<th class='rowhead'><?php echo $lang->bug->lblResolved;?></th>
<td><?php if($bug->resolvedBy) echo $users[$bug->resolvedBy] . $lang->at . $bug->resolvedDate;?>
</tr>
<tr>
@@ -129,7 +133,7 @@
<tr>
<th class='rowhead'><?php echo $lang->bug->resolution;?></th>
<td>
<?php
<?php
echo $lang->bug->resolutionList[$bug->resolution];
if(isset($bug->duplicateBugTitle)) echo " #$bug->duplicateBug:" . html::a($this->createLink('bug', 'view', "bugID=$bug->duplicateBug"), $bug->duplicateBugTitle);
?>
@@ -140,7 +144,7 @@
<td><?php if($bug->closedBy) echo $users[$bug->closedBy] . $lang->at . $bug->closedDate;?></td>
</tr>
<tr>
<th class='rowhead'><?php echo $lang->bug->labLastEdited;?></th>
<th class='rowhead'><?php echo $lang->bug->lblLastEdited;?></th>
<td><?php if($bug->lastEditedBy) echo $users[$bug->lastEditedBy] . $lang->at . $bug->lastEditedDate?></td>
</tr>
</table>
@@ -163,23 +167,33 @@
</tr>
</table>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendMailto;?></legend>
<div><?php $mailto = explode(',', $bug->mailto); foreach($mailto as $account) echo ' ' . $users[$account]; ?></div>
<legend><?php echo $lang->bug->legendMisc;?></legend>
<table class='table-1 a-left fixed'>
<tr>
<td class='rowhead w-p25'><?php echo $lang->bug->mailto;?></td>
<td><?php $mailto = explode(',', $bug->mailto); foreach($mailto as $account) echo ' ' . $users[$account]; ?></td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->linkBug;?></td>
<td>
<?php
if(isset($bug->linkBugTitles))
{
foreach($bug->linkBugTitles as $linkBugID => $linkBugTitle)
{
echo html::a($this->createLink('bug', 'view', "bugID=$linkBugID"), "#$linkBugID $linkBugTitle", '_blank') . '<br />';
}
}
?>
</td>
</tr>
<tr>
<td class='rowhead'><?php echo $lang->bug->case;?></td>
<td><?php if(isset($bug->caseTitle)) echo html::a($this->createLink('testcase', 'view', "caseID=$bug->case"), "#$bug->case $linkBugTitle", '_blank');?></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendLinkBugs;?></legend>
<div>&nbsp;</div>
</fieldset>
<fieldset>
<legend><?php echo $lang->bug->legendCases;?></legend>
<div>&nbsp;</div>
</fieldset>
</div>
</div>
<?php include '../../common/footer.html.php';?>

View File

@@ -98,15 +98,15 @@ class build extends control
}
/* AJAX接口获得产品的build列表。*/
public function ajaxGetProductBuilds($productID, $varName)
public function ajaxGetProductBuilds($productID, $varName, $build = '')
{
die(html::select($varName, $this->build->getProductBuildPairs($productID)));
die(html::select($varName, $this->build->getProductBuildPairs($productID), $build));
}
/* AJAX接口获得项目的build列表。*/
public function ajaxGetProjectBuilds($projectID, $varName)
public function ajaxGetProjectBuilds($projectID, $varName, $build = '')
{
die(html::select($varName, $this->build->getProjectBuildPairs($projectID)));
die(html::select($varName, $this->build->getProjectBuildPairs($projectID), $build));
}
}