diff --git a/trunk/module/bug/config.php b/trunk/module/bug/config.php index 190bf6f918..e812572d1e 100644 --- a/trunk/module/bug/config.php +++ b/trunk/module/bug/config.php @@ -59,3 +59,16 @@ $config->bug->search['params']['assignedDate'] = array('operator' => '>=', $config->bug->create->requiredFields = 'title,openedBuild'; $config->bug->edit->requiredFields = $config->bug->create->requiredFields; $config->bug->resolve->requiredFields = 'resolution'; + +$config->bug->list->allFields = 'id, module, project, story, task, + title, keywords, severity, pri, type, os, browser, hardware, + found, steps, status, mailto, + openedBy, openedDate, openedBuild, + assignedTo, assignedDate, + resolvedBy, resolution, resolvedBuild, resolvedDate, + closedBy, closedDate, + duplicateBug, linkBug, + case, + lastEditedBy, + lastEditedDate'; +$config->bug->list->defaultFields = 'id,severity,pri,title,openedBy,assignedTo,resolvedBy,resolution'; diff --git a/trunk/module/bug/control.php b/trunk/module/bug/control.php index ed02b55245..ff759a5b04 100644 --- a/trunk/module/bug/control.php +++ b/trunk/module/bug/control.php @@ -163,6 +163,10 @@ class bug extends control $this->view->searchForm = $this->fetch('search', 'buildForm', $this->config->bug->search); $users = $this->user->getPairs('noletter'); + + /* 设置自定义字段。*/ + $customFields = $this->cookie->bugFields != false ? $this->cookie->bugFields : $this->config->bug->list->defaultFields; + $customed = !($customFields == $this->config->bug->list->defaultFields); $header['title'] = $this->products[$productID] . $this->lang->colon . $this->lang->bug->common; $position[] = html::a($this->createLink('bug', 'browse', "productID=$productID"), $this->products[$productID]); @@ -180,6 +184,8 @@ class bug extends control $this->view->param = $param; $this->view->orderBy = $orderBy; $this->view->moduleID = $moduleID; + $this->view->customed = $customed; + $this->view->customFields= explode(',', str_replace(' ', '', trim($customFields))); $this->display(); } @@ -545,6 +551,25 @@ class bug extends control die(); } + /* 自定义显示字段。*/ + public function customFields() + { + if($_POST) + { + $customFields = $this->post->customFields; + $customFields = join(',', $customFields); + setcookie('bugFields', $customFields); + die(js::reload('parent')); + } + /* 设定自定义字段列表。*/ + $customFields = $this->cookie->bugFields ? $this->cookie->bugFields : $this->config->bug->list->defaultFields; + + $this->view->allFields = $this->bug->getFieldPairs($this->config->bug->list->allFields); + $this->view->customFields = $this->bug->getFieldPairs($customFields); + $this->view->defaultFields = $this->bug->getFieldPairs($this->config->bug->list->defaultFields); + die($this->display()); + } + /* 获得用户的bug列表。*/ public function ajaxGetUserBugs($account = '') { diff --git a/trunk/module/bug/lang/zh-cn.php b/trunk/module/bug/lang/zh-cn.php index d1974f0762..37e765db68 100644 --- a/trunk/module/bug/lang/zh-cn.php +++ b/trunk/module/bug/lang/zh-cn.php @@ -37,6 +37,7 @@ $lang->bug->severityAB = '级别'; $lang->bug->pri = '优先级'; $lang->bug->type = 'Bug类型'; $lang->bug->os = '操作系统'; +$lang->bug->hardware = '硬件平台'; $lang->bug->browser = '浏览器'; $lang->bug->machine = '机器硬件'; $lang->bug->found = '如何发现'; @@ -77,6 +78,8 @@ $lang->bug->close = '关闭Bug'; $lang->bug->activate = '激活Bug'; $lang->bug->reportChart = '报表统计'; $lang->bug->delete = '删除Bug'; +$lang->bug->customFields = '自定义字段'; +$lang->bug->restoreDefault = '恢复默认'; $lang->bug->ajaxGetUserBugs = '接口:我的Bug'; $lang->bug->confirmStoryChange = '确认需求变动'; @@ -105,6 +108,8 @@ $lang->bug->lblAssignedTo = '当前指派'; $lang->bug->lblMailto = '抄送给'; $lang->bug->lblLastEdited = '最后修改'; $lang->bug->lblResolved = '由谁解决'; +$lang->bug->lblAllFields = '所有字段'; +$lang->bug->lblCustomFields = '自定义字段'; /* legend列表。*/ $lang->bug->legendBasicInfo = '基本信息'; diff --git a/trunk/module/bug/model.php b/trunk/module/bug/model.php index 9710d282bf..b7c8ed7853 100644 --- a/trunk/module/bug/model.php +++ b/trunk/module/bug/model.php @@ -460,4 +460,17 @@ class bugModel extends model ->get(); $this->dao->insert(TABLE_USERTPL)->data($template)->autoCheck('title, content', 'notempty')->check('title', 'unique')->exec(); } + + /* 给一个字段的列表,返回字段和相应语言解释的键值对。*/ + public function getFieldPairs($fields) + { + $fields = explode(',', $fields); + foreach($fields as $key => $field) + { + $field = trim($field); + $fields[$field] = $this->lang->bug->$field; + unset($fields[$key]); + } + return $fields; + } } diff --git a/trunk/module/bug/view/browse.custom.html.php b/trunk/module/bug/view/browse.custom.html.php new file mode 100644 index 0000000000..19650e823f --- /dev/null +++ b/trunk/module/bug/view/browse.custom.html.php @@ -0,0 +1,82 @@ +
' id='mainbox'> + + + + + + +
' id='treebox'> + +
+
+ +
+ createLink('tree', 'browse', "productID=$productID&view=bug"), $lang->tree->manage);?> +
+
+
+
+ recTotal}&recPerPage={$pager->recPerPage}"; ?> + + + + + + + + + + + + id");?> + + + + + + + + +
bug->$fieldName);?>actions;?>
+ $fieldName); + } + elseif(preg_match('/assignedTo|by/i', $fieldName)) + { + echo $users[$bug->$fieldName]; + } + elseif(preg_match('/^(severity|pri|resolution|os|type|browse|status)$/i', $fieldName)) + { + $key = $fieldName . 'List'; + $list = $lang->bug->$key; + echo $list[$bug->$fieldName]; + } + else + { + echo $bug->$fieldName; + } + ?> + + id"; + 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 . ' '; + common::printLink('bug', 'edit', $params, $lang->bug->buttonEdit); + ?> + +
+ show();?> +
+ + + + diff --git a/trunk/module/bug/view/browse.html.php b/trunk/module/bug/view/browse.html.php index aa8e586004..7cf3885710 100644 --- a/trunk/module/bug/view/browse.html.php +++ b/trunk/module/bug/view/browse.html.php @@ -47,6 +47,10 @@ function browseBySearch(active) $('#bysearchTab').addClass('active'); } +$(document).ready(function() +{ + $("a.iframe").colorbox({width:640, height:420, iframe:true, transition:'none'}); +});
@@ -66,6 +70,7 @@ function browseBySearch(active) ?>
+ bug->customFields, '', "class='iframe'"); ?> exportCSV, $lang->setFileName);?> bug->report->common); ?> bug->create); ?> @@ -74,6 +79,7 @@ function browseBySearch(active)
'>
+
' id='mainbox'>
diff --git a/trunk/module/bug/view/customfields.html.php b/trunk/module/bug/view/customfields.html.php new file mode 100644 index 0000000000..e9a06fa0d0 --- /dev/null +++ b/trunk/module/bug/view/customfields.html.php @@ -0,0 +1,72 @@ +. + * + * @copyright Copyright 2009-2010 青岛易软天创网络科技有限公司(www.cnezsoft.com) + * @author Chunsheng Wang + * @package product + * @version $Id$ + * @link http://www.zentaoms.com + */ +?> + + + +
+
+ + + + + + + + + + + + + + + +
bug->customFields;?>
bug->lblAllFields;?>bug->lblCustomFields;?>
+ + + ', "onclick=\"addItem('allFields', 'customFields')\"") . '
'; + echo html::commonButton('<', "onclick=delItem('customFields')") . '
'; + ?> +
+ '; + echo html::commonButton('-', "onclick=downItem('customFields')") . '
'; + echo html::commonButton($lang->bug->restoreDefault, "onclick=restoreDefault()") . '
'; + ?> +
+
+