diff --git a/module/block/control.php b/module/block/control.php index da49503da3..7cc7a5e273 100644 --- a/module/block/control.php +++ b/module/block/control.php @@ -720,7 +720,6 @@ class block extends control $status = isset($this->params->type) ? $this->params->type : ''; $orderBy = isset($this->params->orderBy) ? $this->params->orderBy : 'id_asc'; - $num = isset($this->params->num) ? (int)$this->params->num : 0; /* Get products. */ $products = $this->loadModel('product')->getList($status); @@ -737,7 +736,6 @@ class block extends control $products = $this->dao->select('*')->from(TABLE_PRODUCT) ->where('id')->in($productIDList) ->orderBy($orderBy) - ->beginIF($this->viewType != 'json')->limit($num)->fi() ->fetchAll('id'); /* Get stories. */ @@ -966,6 +964,39 @@ class block extends control $this->view->projects = $projects; } + /** + * Print qa statistic block. + * + * @access public + * @return void + */ + public function printQaStatisticBlock() + { + if(!empty($this->params->type) and preg_match('/[^a-zA-Z0-9_]/', $this->params->type)) die(); + + $status = isset($this->params->type) ? $this->params->type : ''; + $orderBy = isset($this->params->orderBy) ? $this->params->orderBy : 'id_asc'; + + /* Get products. */ + $products = $this->loadModel('product')->getList($status); + foreach($products as $productID => $product) + { + if(!$this->product->checkPriv($product)) unset($products[$productID]); + } + $productIDList = array_keys($products); + if(!$productIDList) + { + $this->view->products = $products; + return false; + } + $products = $this->dao->select('*')->from(TABLE_PRODUCT) + ->where('id')->in($productIDList) + ->orderBy($orderBy) + ->fetchAll('id'); + + $this->view->products = $products; + } + /** * Print overview block. * @@ -1024,6 +1055,38 @@ class block extends control $total++; } + $overviewPercent = array(); + foreach($this->lang->project->statusList as $statusKey => $statusName) + { + if(!isset($overview[$statusKey])) $overview[$statusKey] = 0; + $overviewPercent[$statusKey] = $total ? round($overview[$statusKey] / $total, 2) * 100 . '%' : '0%'; + } + + $this->view->total = $total; + $this->view->overview = $overview; + $this->view->overviewPercent = $overviewPercent; + } + + /** + * Print qa overview block. + * + * @access public + * @return void + */ + public function printQaOverviewBlock() + { + $projects = $this->loadModel('project')->getList(); + + $total = 0; + foreach($projects as $project) + { + if(!$this->project->checkPriv($project)) continue; + + if(!isset($overview[$project->status])) $overview[$project->status] = 0; + $overview[$project->status]++; + $total++; + } + $overviewPercent = array(); foreach($this->lang->project->statusList as $statusKey => $statusName) diff --git a/module/block/lang/en.php b/module/block/lang/en.php index ce139b118f..681b52982c 100644 --- a/module/block/lang/en.php +++ b/module/block/lang/en.php @@ -111,29 +111,40 @@ $lang->block->default['project']['4']['params']['num'] = 15; $lang->block->default['project']['4']['params']['orderBy'] = 'id_desc'; $lang->block->default['project']['4']['params']['type'] = 'assignedTo'; -$lang->block->default['qa']['1']['title'] = 'My Bugs'; -$lang->block->default['qa']['1']['block'] = 'bug'; -$lang->block->default['qa']['1']['grid'] = 4; +$lang->block->default['qa']['1']['title'] = 'Test Statistic'; +$lang->block->default['qa']['1']['block'] = 'statistic'; +$lang->block->default['qa']['1']['grid'] = 8; -$lang->block->default['qa']['1']['params']['num'] = 15; $lang->block->default['qa']['1']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['1']['params']['type'] = 'assignedTo'; +$lang->block->default['qa']['1']['params']['type'] = 'noclosed'; -$lang->block->default['qa']['2']['title'] = 'My Cases'; -$lang->block->default['qa']['2']['block'] = 'case'; +//$lang->block->default['qa']['2']['title'] = 'Testcase Overview'; +//$lang->block->default['qa']['2']['block'] = 'overview'; +//$lang->block->default['qa']['2']['grid'] = 4; + +$lang->block->default['qa']['2']['title'] = 'My Bugs'; +$lang->block->default['qa']['2']['block'] = 'bug'; $lang->block->default['qa']['2']['grid'] = 4; $lang->block->default['qa']['2']['params']['num'] = 15; $lang->block->default['qa']['2']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['2']['params']['type'] = 'assigntome'; +$lang->block->default['qa']['2']['params']['type'] = 'assignedTo'; -$lang->block->default['qa']['3']['title'] = 'Pending Builds'; -$lang->block->default['qa']['3']['block'] = 'testtask'; +$lang->block->default['qa']['3']['title'] = 'My Cases'; +$lang->block->default['qa']['3']['block'] = 'case'; $lang->block->default['qa']['3']['grid'] = 4; $lang->block->default['qa']['3']['params']['num'] = 15; $lang->block->default['qa']['3']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['3']['params']['type'] = 'wait'; +$lang->block->default['qa']['3']['params']['type'] = 'assigntome'; + +$lang->block->default['qa']['4']['title'] = 'Pending Builds'; +$lang->block->default['qa']['4']['block'] = 'testtask'; +$lang->block->default['qa']['4']['grid'] = 4; + +$lang->block->default['qa']['4']['params']['num'] = 15; +$lang->block->default['qa']['4']['params']['orderBy'] = 'id_desc'; +$lang->block->default['qa']['4']['params']['type'] = 'wait'; $lang->block->default['full']['my']['1']['title'] = 'Welcome'; $lang->block->default['full']['my']['1']['block'] = 'welcome'; @@ -251,6 +262,8 @@ $lang->block->modules['project']->availableBlocks->task = 'Tasks'; $lang->block->modules['project']->availableBlocks->build = 'Builds'; $lang->block->modules['qa'] = new stdclass(); $lang->block->modules['qa']->availableBlocks = new stdclass(); +$lang->block->modules['qa']->availableBlocks->statistic = 'Test Statistic'; +//$lang->block->modules['qa']->availableBlocks->overview = 'Testcase Overview'; $lang->block->modules['qa']->availableBlocks->bug = 'Bugs'; $lang->block->modules['qa']->availableBlocks->case = 'Cases'; $lang->block->modules['qa']->availableBlocks->testtask = 'Test Builds'; diff --git a/module/block/lang/zh-cn.php b/module/block/lang/zh-cn.php index 03eb60b29a..f5a2038d68 100644 --- a/module/block/lang/zh-cn.php +++ b/module/block/lang/zh-cn.php @@ -111,29 +111,40 @@ $lang->block->default['project']['4']['params']['num'] = 15; $lang->block->default['project']['4']['params']['orderBy'] = 'id_desc'; $lang->block->default['project']['4']['params']['type'] = 'assignedTo'; -$lang->block->default['qa']['1']['title'] = '指派给我的Bug'; -$lang->block->default['qa']['1']['block'] = 'bug'; -$lang->block->default['qa']['1']['grid'] = 4; +$lang->block->default['qa']['1']['title'] = '测试统计'; +$lang->block->default['qa']['1']['block'] = 'statistic'; +$lang->block->default['qa']['1']['grid'] = 8; -$lang->block->default['qa']['1']['params']['num'] = 15; $lang->block->default['qa']['1']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['1']['params']['type'] = 'assignedTo'; +$lang->block->default['qa']['1']['params']['type'] = 'noclosed'; -$lang->block->default['qa']['2']['title'] = '指派给我的用例'; -$lang->block->default['qa']['2']['block'] = 'case'; +//$lang->block->default['qa']['2']['title'] = '测试用例总览'; +//$lang->block->default['qa']['2']['block'] = 'overview'; +//$lang->block->default['qa']['2']['grid'] = 4; + +$lang->block->default['qa']['2']['title'] = '指派给我的Bug'; +$lang->block->default['qa']['2']['block'] = 'bug'; $lang->block->default['qa']['2']['grid'] = 4; $lang->block->default['qa']['2']['params']['num'] = 15; $lang->block->default['qa']['2']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['2']['params']['type'] = 'assigntome'; +$lang->block->default['qa']['2']['params']['type'] = 'assignedTo'; -$lang->block->default['qa']['3']['title'] = '待测版本列表'; -$lang->block->default['qa']['3']['block'] = 'testtask'; +$lang->block->default['qa']['3']['title'] = '指派给我的用例'; +$lang->block->default['qa']['3']['block'] = 'case'; $lang->block->default['qa']['3']['grid'] = 4; $lang->block->default['qa']['3']['params']['num'] = 15; $lang->block->default['qa']['3']['params']['orderBy'] = 'id_desc'; -$lang->block->default['qa']['3']['params']['type'] = 'wait'; +$lang->block->default['qa']['3']['params']['type'] = 'assigntome'; + +$lang->block->default['qa']['4']['title'] = '待测版本列表'; +$lang->block->default['qa']['4']['block'] = 'testtask'; +$lang->block->default['qa']['4']['grid'] = 8; + +$lang->block->default['qa']['4']['params']['num'] = 15; +$lang->block->default['qa']['4']['params']['orderBy'] = 'id_desc'; +$lang->block->default['qa']['4']['params']['type'] = 'wait'; $lang->block->default['full']['my']['1']['title'] = '欢迎'; $lang->block->default['full']['my']['1']['block'] = 'welcome'; @@ -251,9 +262,11 @@ $lang->block->modules['project']->availableBlocks->task = '任务列表'; $lang->block->modules['project']->availableBlocks->build = '版本列表'; $lang->block->modules['qa'] = new stdclass(); $lang->block->modules['qa']->availableBlocks = new stdclass(); -$lang->block->modules['qa']->availableBlocks->bug = 'Bug列表'; -$lang->block->modules['qa']->availableBlocks->case = '用例列表'; -$lang->block->modules['qa']->availableBlocks->testtask = '版本列表'; +$lang->block->modules['qa']->availableBlocks->statistic = '测试统计'; +//$lang->block->modules['qa']->availableBlocks->overview = '测试用例总览'; +$lang->block->modules['qa']->availableBlocks->bug = 'Bug列表'; +$lang->block->modules['qa']->availableBlocks->case = '用例列表'; +$lang->block->modules['qa']->availableBlocks->testtask = '版本列表'; $lang->block->modules['todo'] = new stdclass(); $lang->block->modules['todo']->availableBlocks = new stdclass(); $lang->block->modules['todo']->availableBlocks->list = '待办列表'; diff --git a/module/block/view/qaoverviewblock.html.php b/module/block/view/qaoverviewblock.html.php new file mode 100644 index 0000000000..7b9334ba28 --- /dev/null +++ b/module/block/view/qaoverviewblock.html.php @@ -0,0 +1,35 @@ + + * @package block + * @version $Id$ + * @link http://www.zentao.net + */ +?> + +
+
+
+
project->allProject;?>
+
+ project->viewAll;?> +
+
+
+ +
+
diff --git a/module/block/view/qastatisticblock.html.php b/module/block/view/qastatisticblock.html.php new file mode 100644 index 0000000000..46060b7314 --- /dev/null +++ b/module/block/view/qastatisticblock.html.php @@ -0,0 +1,119 @@ + +
+
+
+ +
+
+
+
+ +
+ task->statusList['done'];?> + progress;?>percent;?> +
+
+
+
+
project->totalEstimate;?>
+
totalEstimate;?> task->hour;?>
+
+
+ +
project->totalConsumed;?>
+
totalConsumed;?> task->hour;?>
+
+
+ +
project->totalLeft;?>
+
totalLeft;?> task->hour;?>
+
+
+
+
+
+
task->yesterdayFinished;?> yesterdayFinished;?>
+
+
+
+
+
+
+ task->allTasks;?> task->noFinished;?> +
+
+ totalTasks;?> undoneTasks;?> +
+
+
+
+
story->stageList['released'];?> releasedStories;?>
+
+
+
+
+
+ story->total;?> story->unclosed;?> +
+
+ totalStories;?> unclosedStories;?> +
+
+
+
+
bug->yesterdayResolved;?> yesterdayResolved;?>
+
+
+
+
+
+
+ bug->allBugs;?> bug->unResolved;?> +
+
+ totalBugs;?> activeBugs;?> +
+
+
+
+
+
+ +
+
+ +
+
+
diff --git a/module/bug/css/common.css b/module/bug/css/common.css index 2412c713a7..a0943b164c 100644 --- a/module/bug/css/common.css +++ b/module/bug/css/common.css @@ -1,3 +1,7 @@ .ke-toolbar .ke-outline[data-name='savetemplate'] {display: none} #modulemenu .nav #dropMenu #searchResult .closed{text-decoration:none;} .nav #moreMenus{cursor: pointer;} + +.input-group .control-product + .chosen-container-single .chosen-single {border-radius: 2px 0 0 2px; border-right-width: 0; padding-right: 1px;} +.input-group .control-product + .chosen-container-active .chosen-single {border-right-width: 1px; padding-right: 0;} +.input-group .control-branch + .chosen-container-single .chosen-single {border-radius: 0 2px 2px 0;} diff --git a/module/bug/view/create.html.php b/module/bug/view/create.html.php index 23f32cafaa..6d13287b8a 100644 --- a/module/bug/view/create.html.php +++ b/module/bug/view/create.html.php @@ -22,286 +22,282 @@ js::set('createBuild', $lang->build->create); js::set('refresh', $lang->refresh); js::set('confirmDeleteTemplate', $lang->bug->confirmDeleteTemplate); ?> -
-
-
- icons['bug']);?> - icons['create']);?> bug->create;?> +
+
+
+

bug->create;?>

+
+ createLink('custom', 'ajaxSaveCustomFields', 'module=bug§ion=custom&key=createFields')?> + +
-
- -
-
-
- - - - - - - - config->global->flow != 'onlyTest');?> - - + +
bug->product;?> -
- - session->currentProductType != 'normal') echo html::select('branch', $branches, $branch, "onchange='loadBranch()' class='form-control' style='width:120px'");?> -
-
-
- bug->module?> - "; - echo html::a($this->createLink('tree', 'browse', "rootID=$productID&view=bug¤tModuleID=0&branch=$branch"), $lang->tree->manage, '_blank'); - echo '  '; - echo html::a("javascript:loadProductModules($productID)", $lang->refresh); - echo ''; - } - ?> -
-
bug->project : $lang->bug->type;?>
+ + + + + + + config->global->flow != 'onlyTest');?> + + - - - - - - bug->browser?> - bug->browserList, $browser, "class='form-control chosen'");?> + + - - - - - - - - - - - - - - - - - config->global->flow != 'onlyTest' && $showProject):?> - - - - - + + + + + + + - - bug->browser?> - bug->browserList, $browser, "class='form-control chosen'");?> - - - - - - - - + config->global->flow != 'onlyTest' && $showProject):?> + + + + + + + + + + + + + + - - - - - - - config->global->flow != 'onlyTest'):?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - -
bug->product;?> +
+ + session->currentProductType != 'normal'):?> + + + +
+
+
+ bug->module?> + "; + echo html::a($this->createLink('tree', 'browse', "rootID=$productID&view=bug¤tModuleID=0&branch=$branch"), $lang->tree->manage, '_blank'); + echo '  '; + echo html::a("javascript:loadProductModules($productID)", $lang->refresh); + echo ''; + } + ?> +
+
bug->project : $lang->bug->type;?> -
- bug->typeList['designchange']); - unset($lang->bug->typeList['newfeature']); - unset($lang->bug->typeList['trackthings']); - echo html::select('type', $lang->bug->typeList, $type, "class='form-control chosen'"); - ?> - - bug->os?> - bug->osList, $os, "class='form-control chosen'");?> + + + +
+
+ bug->typeList['designchange']); + unset($lang->bug->typeList['newfeature']); + unset($lang->bug->typeList['trackthings']); + echo html::select('type', $lang->bug->typeList, $type, "class='form-control chosen'"); + ?> + + bug->os?> + bug->osList, $os, "class='form-control chosen'");?> + + + bug->browser?> + bug->browserList, $browser, "class='form-control chosen'");?> + +
+
-
- bug->openedBuild?> - - - bug->allBuilds, "class='btn btn-default' data-toggle='tooltip' onclick='loadAllBuilds()'")?> -
-
bug->lblAssignedTo;?> -
- - bug->allUsers, "class='btn btn-default' onclick='loadAllUsers()' data-toggle='tooltip'");?> -
-
-
- bug->deadline?> - -
-
bug->type;?> -
- bug->typeList['designchange']); - unset($lang->bug->typeList['newfeature']); - unset($lang->bug->typeList['trackthings']); - echo html::select('type', $lang->bug->typeList, $type, "class='form-control chosen'"); - ?> - - bug->os?> - bug->osList, $os, "class='form-control chosen'");?> +
+
+ bug->openedBuild?> + + + bug->allBuilds, "class='btn btn-default' data-toggle='tooltip' onclick='loadAllBuilds()'")?> +
+
bug->lblAssignedTo;?> +
+ + bug->allUsers, "class='btn btn-default' onclick='loadAllUsers()' data-toggle='tooltip'");?> +
+
+
+ bug->deadline?> + +
+
bug->title;?> -
-
-
+
bug->type;?> +
+ bug->typeList['designchange']); + unset($lang->bug->typeList['newfeature']); + unset($lang->bug->typeList['trackthings']); + echo html::select('type', $lang->bug->typeList, $type, "class='form-control chosen'"); + ?> + + bug->os?> + bug->osList, $os, "class='form-control chosen'");?> + + + bug->browser?> + bug->browserList, $browser, "class='form-control chosen'");?> + +
+
bug->title;?> +
-
- - - - - -
-
- - bug->severity;?> - bug->severityList as $severityKey => $severityValue) - { - if(!empty($severityKey) and (string)$severityKey != (string)$severityValue) + + + + + + bug->severity;?> + bug->severityList as $severityKey => $severityValue) { - $hasCustomSeverity = true; - break; + if(!empty($severityKey) and (string)$severityKey != (string)$severityValue) + { + $hasCustomSeverity = true; + break; + } } - } - ?> - - bug->severityList, $severity, "class='form-control minw-80px chosen'");?> - - - - - - bug->pri;?> - bug->priList as $priKey => $priValue) - { - if(!empty($priKey) and (string)$priKey != (string)$priValue) + ?> + + bug->severityList, $severity, "class='form-control minw-80px chosen'");?> + + + + + + bug->pri;?> + bug->priList as $priKey => $priValue) { - $hasCustomPri = true; - break; + if(!empty($priKey) and (string)$priKey != (string)$priValue) + { + $hasCustomPri = true; + break; + } } - } - ?> - - bug->priList, $pri, "class='form-control minw-80px chosen'");?> - - +
bug->steps;?> +
+
+
+ + + +
- -
- - - -
bug->steps;?> -
-
-
- - - -
-
-
- -
bug->story : $lang->bug->task;?> - - -
- - bug->task?> - - -
-
bug->lblMailto : $lang->bug->keywords;?> -
- fetch('my', 'buildContactLists'); - ?> -
-
> -
- - bug->keywords;?> - - -
-
bug->files;?>fetch('file', 'buildform', 'fileCount=1&percent=0.85');?>
+ +
-
+ config->global->flow != 'onlyTest'):?> + + bug->story : $lang->bug->task;?> + + + + + + + +
+ + bug->task?> + + +
+ + + + + + + + + bug->lblMailto : $lang->bug->keywords;?> + + +
+ fetch('my', 'buildContactLists'); + ?> +
+ + + + > +
+ + bug->keywords;?> + + +
+ + + + + + bug->files;?> + fetch('file', 'buildform', 'fileCount=1&percent=0.85');?> + + + + + + + + + + + + + + +
bug->module);?> -createLink('custom', 'ajaxSaveCustomFields', 'module=bug§ion=custom&key=createFields');?> - diff --git a/module/datatable/model.php b/module/datatable/model.php index 4b0b5d6d35..ff4ec16d33 100644 --- a/module/datatable/model.php +++ b/module/datatable/model.php @@ -125,13 +125,14 @@ class datatableModel extends model $id = $col->id; if($col->show) { - $fixed = $col->fixed == 'no' ? 'true': 'false'; - $width = is_numeric($col->width) ? "{$col->width}px" : $col->width; - $title = isset($col->name) ? "title='$col->name'" : ''; + $fixed = $col->fixed == 'no' ? 'true': 'false'; + $width = is_numeric($col->width) ? "{$col->width}px" : $col->width; + $title = isset($col->name) ? "title='$col->name'" : ''; if($id == 'id' and (int)$width < 90) $width = '90px'; $width = "data-width='$width' style='width:$width'"; + $align = $id == 'actions' ? 'text-center' : ''; - echo ""; + echo ""; if($id == 'actions') { echo $this->lang->actions; diff --git a/module/project/control.php b/module/project/control.php index 779c84571f..035c8235dd 100644 --- a/module/project/control.php +++ b/module/project/control.php @@ -820,13 +820,10 @@ class project extends control $this->app->loadClass('pager', $static = true); $pager = pager::init($recTotal, $recPerPage, $pageID); - $tasks = $this->testtask->getProjectTasks($projectID, $orderBy, $pager); - foreach($tasks as $key => $task) - { - $tasks[$task->product][] = $task; + $productTasks = array(); - unset($tasks[$key]); - } + $tasks = $this->testtask->getProjectTasks($projectID, $orderBy, $pager); + foreach($tasks as $key => $task) $productTasks[$task->product][] = $task; $this->view->title = $this->projects[$projectID] . $this->lang->colon . $this->lang->testtask->common; $this->view->position[] = html::a($this->createLink('project', 'testtask', "projectID=$projectID"), $this->projects[$projectID]); @@ -835,7 +832,7 @@ class project extends control $this->view->projectName = $this->projects[$projectID]; $this->view->pager = $pager; $this->view->orderBy = $orderBy; - $this->view->tasks = $tasks; + $this->view->tasks = $productTasks; $this->view->users = $this->loadModel('user')->getPairs('noclosed|noletter'); $this->view->products = $this->loadModel('product')->getPairs(); diff --git a/module/project/view/kanban.html.php b/module/project/view/kanban.html.php index fa54cbed0a..15347cfe44 100644 --- a/module/project/view/kanban.html.php +++ b/module/project/view/kanban.html.php @@ -58,7 +58,7 @@ app->user->account +$account = $this->app->user->account; ?>
@@ -139,7 +139,7 @@ $account = $this->app->user->account bugs[$col])):?> bugs[$col] as $bug):?> -
+
createLink('bug', 'view', "bugID=$bug->id", '', true), " #{$bug->id}{$bug->title}", '', 'class="title kanbaniframe" title="' . $bug->title . '"');?>
name?>'>name;?>
+ + createLink('project', 'story', "projectID=$project->id"), "{$lang->story->allStories}", '', "class='btn btn-link'");?> - createLink('project', 'storykanban', "projectID=$project->id"), "{$lang->project->kanban}", '', "class='btn btn-link btn-active-text'");?> + createLink('project', 'storykanban', "projectID=$project->id"), "{$lang->project->kanban}{$total}", '', "class='btn btn-link btn-active-text'");?>
diff --git a/module/release/view/view.html.php b/module/release/view/view.html.php index 3e5a4286de..e2062da3a4 100644 --- a/module/release/view/view.html.php +++ b/module/release/view/view.html.php @@ -16,6 +16,8 @@
- - - - - - - - - - + + - - - - - - - - - - + - - - - - - - - - - - - - story->checkForceReview()):?> - + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + story->checkForceReview()):?> + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
story->product;?> - type != 'normal'):?> -
- - - type != 'normal'):?> - - -
- -
-
-
story->module;?>
- "; - echo html::a($this->createLink('tree', 'browse', "rootID=$productID&view=story¤tModuleID=0&branch=$branch"), $lang->tree->manage, '_blank'); - echo '  '; - echo html::a("javascript:loadProductModules($productID)", $lang->refresh); - echo '
'; - } - ?> - -
story->plan;?> -
- "; - echo html::a($this->createLink('productplan', 'create', "productID=$productID&branch=$branch"), "", '_blank', "class='btn' data-toggle='tooltip' title='{$lang->productplan->create}'"); - echo '  '; - echo html::a("javascript:loadProductPlans($productID)", "", '', "class='btn' data-toggle='tooltip' title='{$lang->refresh}'"); - echo '
'; - } - ?> - -
-
-
-
story->source;?>
- story->sourceList, $source, "class='form-control chosen'");?> - story->sourceNote;?> - +
story->product;?> + type != 'normal'):?> +
+ + + type != 'normal'):?> + +
- -
story->title;?> -
- -
- - - -
-
-
story->pri;?> - story->priList as $priKey => $priValue) - { - if(!empty($priKey) and (string)$priKey != (string)$priValue) + + +
+
story->module;?>
+ "; + echo html::a($this->createLink('tree', 'browse', "rootID=$productID&view=story¤tModuleID=0&branch=$branch"), $lang->tree->manage, '_blank'); + echo '  '; + echo html::a("javascript:loadProductModules($productID)", $lang->refresh); + echo '
'; } - } - $priList = $lang->story->priList; - if(end($priList)) - { - unset($priList[0]); - $priList[0] = ''; - } - ?> - - - - - -
story->estimateAB;?>story->hour;?>
story->reviewedBy;?>PO : '', "class='form-control chosen'");?> -
- /> - -
-
story->plan;?> +
+ "; + echo html::a($this->createLink('productplan', 'create', "productID=$productID&branch=$branch"), "", '_blank', "class='btn' data-toggle='tooltip' title='{$lang->productplan->create}'"); + echo '  '; + echo html::a("javascript:loadProductPlans($productID)", "", '', "class='btn' data-toggle='tooltip' title='{$lang->refresh}'"); + echo '
'; + } + ?> + +
+
+
+
story->source;?>
+ story->sourceList, $source, "class='form-control chosen'");?> + story->sourceNote;?> + +
+
+
story->title;?> +
+ +
+ + + +
+
+
story->pri;?> + story->priList as $priKey => $priValue) + { + if(!empty($priKey) and (string)$priKey != (string)$priValue) + { + $hasCustomPri = true; + break; + } + } + $priList = $lang->story->priList; + if(end($priList)) + { + unset($priList[0]); + $priList[0] = ''; + } + ?> + + + + + +
story->estimateAB;?>story->hour;?>
story->reviewedBy;?>PO : '', "class='form-control chosen'");?> +
+ /> + +
+
story->spec;?>story->specTemplate) . "'");?>
story->verify;?>
story->spec;?>story->specTemplate) . "'");?>
story->verify;?>
story->legendAttatch;?>fetch('file', 'buildform');?>
story->mailto;?> -
- chooseUsersToMail}' multiple");?> - fetch('my', 'buildContactLists');?> -
-
story->keywords;?> - -
- - -
- - + + story->legendAttatch;?> + fetch('file', 'buildform');?> + + + + story->mailto;?> + +
+ chooseUsersToMail}' multiple");?> + fetch('my', 'buildContactLists');?> +
+ + + + + + story->keywords;?> + + + + + + + + + + + + + + + + + +
story->module);?> diff --git a/module/testsuite/css/linkcase.css b/module/testsuite/css/linkcase.css new file mode 100644 index 0000000000..e5a4c1d5f6 --- /dev/null +++ b/module/testsuite/css/linkcase.css @@ -0,0 +1 @@ +#queryBox.show {border-bottom: 1px solid #ddd;} diff --git a/module/testsuite/view/browse.html.php b/module/testsuite/view/browse.html.php index 5de87fc912..e906e30136 100644 --- a/module/testsuite/view/browse.html.php +++ b/module/testsuite/view/browse.html.php @@ -14,50 +14,59 @@ testsuite->confirmDelete)?> config->global->flow);?> config->global->flow != 'onlyTest'):?> -
-
testsuite->browse?>
-
+ - - - recTotal}&recPerPage={$pager->recPerPage}"; ?> - - - - - - - - - - - - - - - - - - + + + +
idAB);?>testsuite->name);?>testsuite->desc;?>testsuite->addedBy);?>testsuite->addedDate);?>actions;?>
id);?> - type == 'public') echo "{$lang->testsuite->authorList['public']} ";?> - type == 'private') echo "{$lang->testsuite->authorList['private']} ";?> - id"), $suite->name);?> - desc;?>addedBy);?>addedDate;?> - id", $suite, 'list', 'link'); - common::printIcon('testsuite', 'edit', "suiteID=$suite->id", $suite, 'list'); +
+ + + recTotal}&recPerPage={$pager->recPerPage}"; ?> + + + + + + + + + + + + + + + + + + - - - - -
idAB);?>testsuite->name);?>testsuite->desc;?>testsuite->addedBy);?>testsuite->addedDate);?>actions;?>
id);?> + type == 'public') echo "{$lang->testsuite->authorList['public']} ";?> + type == 'private') echo "{$lang->testsuite->authorList['private']} ";?> + id"), $suite->name);?> + desc;?>addedBy);?>addedDate;?> + id", $suite, 'list', 'link'); + common::printIcon('testsuite', 'edit', "suiteID=$suite->id", $suite, 'list'); - if(common::hasPriv('testsuite', 'delete', $suite)) - { - $deleteURL = $this->createLink('testsuite', 'delete', "suiteID=$suite->id&confirm=yes"); - echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"suiteList\",confirmDelete)", '', '', "title='{$lang->testsuite->delete}' class='btn-icon'"); - } - ?> -
show();?>
+ if(common::hasPriv('testsuite', 'delete', $suite)) + { + $deleteURL = $this->createLink('testsuite', 'delete', "suiteID=$suite->id&confirm=yes"); + echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"suiteList\",confirmDelete)", '', '', "title='{$lang->testsuite->delete}' class='btn'"); + } + ?> +
+ +
diff --git a/module/testsuite/view/create.html.php b/module/testsuite/view/create.html.php index ec66c7e87f..6beaddb373 100644 --- a/module/testsuite/view/create.html.php +++ b/module/testsuite/view/create.html.php @@ -11,32 +11,34 @@ */ ?> - -
-
-
- icons['create']);?> testsuite->create;?> +
+
+
+

testsuite->create;?>

+
+ + + + + + + + + + + + + + + + +
testsuite->name;?>
testsuite->desc;?>
testsuite->author;?>testsuite->authorList, 'private');?>
+ + +
+
-
- - - - - - - - - - - - - - - - -
testsuite->name;?>
testsuite->desc;?>
testsuite->author;?>testsuite->authorList, 'private');?>
-
diff --git a/module/testsuite/view/edit.html.php b/module/testsuite/view/edit.html.php index b1aad7a4a7..2454b8fcfd 100644 --- a/module/testsuite/view/edit.html.php +++ b/module/testsuite/view/edit.html.php @@ -11,35 +11,36 @@ */ ?> - -
-
-
- createLink('testsuite', 'view', 'suiteID=' . $suite->id), $suite->name, '_blank');?> - testsuite->edit;?> icons['edit']);?> +
+
+
+

testsuite->edit;?>

+
+ + + + + + + + + + type != 'library'):?> + + + + + + + + +
testsuite->name;?>name, "class='form-control' autocomplete='off'");?>
testsuite->desc;?>desc), "rows=10 class='form-control'");?>
testsuite->author;?>testsuite->authorList, $suite->type);?>
+ + +
+
-
- - - - - - - - - - type != 'library'):?> - - - - - - - - -
testsuite->name;?>name, "class='form-control' autocomplete='off'");?>
testsuite->desc;?>desc), "rows=10 class='form-control'");?>
testsuite->author;?>testsuite->authorList, $suite->type);?>
-
diff --git a/module/testsuite/view/linkcase.html.php b/module/testsuite/view/linkcase.html.php index 7f0da4d661..16cdd1d84b 100644 --- a/module/testsuite/view/linkcase.html.php +++ b/module/testsuite/view/linkcase.html.php @@ -13,68 +13,74 @@ config->global->flow);?> -
-
- id;?> - createLink('testsuite', 'view', 'suiteID=' . $suite->id), $suite->name, '_blank');?> - testsuite->linkCase;?> icons['link']);?> + -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-  testsuite->unlinkedCases;?> (recTotal;?>) -
idAB;?>testsuite->linkVersion;?>priAB;?>testcase->title;?>testcase->type;?>openedByAB;?>statusAB;?>
- - createLink('testcase', 'view', "testcaseID=$case->id"), sprintf('%03d', $case->id));?> - id]", array_combine(range($case->version, 1), range($case->version, 1)), '', 'class="form-control input-sm" style="padding: 0 5px; height: 20px"');?> testcase->priList, $case->pri, $case->pri)?>'>testcase->priList, $case->pri, $case->pri)?> - title . ' ( '; - for($i = $case->version; $i >= 1; $i --) - { - echo html::a($this->createLink('testcase', 'view', "caseID=$case->id&version=$i", '', true), "#$i", '', "class='iframe' data-width='95%'"); - } - echo ')'; - ?> - testcase->typeList[$case->type];?>openedBy];?>testcase->statusList[$case->status];?>
+
+
+ +
+
 testsuite->unlinkedCases;?> (recTotal;?>)
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ idAB;?> +
testsuite->linkVersion;?>priAB;?>testcase->title;?>testcase->type;?>openedByAB;?>statusAB;?>
+ id => sprintf('%03d', $case->id)));?> + id]", array_combine(range($case->version, 1), range($case->version, 1)), '', 'class="form-control"');?> testcase->priList, $case->pri, $case->pri)?> + title . ' ( '; + for($i = $case->version; $i >= 1; $i --) + { + echo html::a($this->createLink('testcase', 'view', "caseID=$case->id&version=$i", '', true), "#$i", '', "class='iframe' data-width='95%'"); + } + echo ')'; + ?> + testcase->typeList[$case->type];?>openedBy];?>testcase->statusList[$case->status];?>
+
-
+ show('right', 'pagerjs');?> +
+ +
diff --git a/module/testsuite/view/view.html.php b/module/testsuite/view/view.html.php index 64043ae6a5..4868908f03 100644 --- a/module/testsuite/view/view.html.php +++ b/module/testsuite/view/view.html.php @@ -14,86 +14,76 @@ testsuite->confirmUnlinkCase)?> global->flow);?> -
-
- id;?> - name;?> - deleted):?> - suite->deleted;?> - +