diff --git a/db/update1.3.sql b/db/update1.3.sql index a065c25e5a..ab54148d3b 100644 --- a/db/update1.3.sql +++ b/db/update1.3.sql @@ -1,3 +1,10 @@ -- 2010-11-13 project table. ALTER TABLE `zt_project` ADD `RM` varchar(30) NOT NULL DEFAULT '' AFTER `QM`; -ALTER TABLE `zt_user` DROP `birthday` ; +ALTER TABLE `zt_user` DROP `birthyear`; + +-- 2010-11-24 product table. +ALTER TABLE `zt_product` CHANGE `productOwner` `PO` VARCHAR( 30 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , +CHANGE `bugOwner` `QM` VARCHAR( 30 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; +ALTER TABLE `zt_product` ADD `RM` VARCHAR( 30 ) NOT NULL AFTER `QM` ; +ALTER TABLE `zt_product` ADD `createdBy` VARCHAR( 30 ) NOT NULL AFTER `whitelist` , +ADD `createdDate` DATETIME NOT NULL AFTER `createdBy` ; diff --git a/module/product/config.php b/module/product/config.php index 027d2c63e7..71386ddd56 100644 --- a/module/product/config.php +++ b/module/product/config.php @@ -33,3 +33,6 @@ $config->product->search['params']['mailto'] = array('operator' => 'includ $config->product->create->requiredFields = 'name,code'; $config->product->edit->requiredFields = 'name,code'; + +$config->product->editor->create = array('id' => 'desc', 'tools' => 'simpleTools'); +$config->product->editor->edit = array('id' => 'desc', 'tools' => 'simpleTools'); diff --git a/module/product/control.php b/module/product/control.php index f25de2ee0f..46d69ba9c2 100644 --- a/module/product/control.php +++ b/module/product/control.php @@ -69,7 +69,7 @@ class product extends control $this->session->set('productList', $this->app->getURI(true)); /* Set product, module and query. */ - $productID = $this->product->saveState($productID, key($this->products)); + $productID = $this->product->saveState($productID, $this->products); $moduleID = ($browseType == 'bymodule') ? (int)$param : 0; $queryID = ($browseType == 'bysearch') ? (int)$param : 0; @@ -224,7 +224,7 @@ class product extends control $this->view->position[] = $this->lang->product->view; $this->view->product = $product; $this->view->actions = $this->loadModel('action')->getList('product', $productID); - $this->view->users = $this->user->getPairs(); + $this->view->users = $this->user->getPairs('noletter'); $this->view->groups = $this->loadModel('group')->getPairs(); $this->display(); diff --git a/module/product/lang/en.php b/module/product/lang/en.php index 6d191de897..a4f0ee61b4 100644 --- a/module/product/lang/en.php +++ b/module/product/lang/en.php @@ -40,7 +40,9 @@ $lang->product->code = 'Code'; $lang->product->order = 'Order'; $lang->product->status = 'Status'; $lang->product->desc = 'Desc'; -$lang->product->bugOwner = 'Bug Owner'; +$lang->product->PO = 'Product owner'; +$lang->product->QM = 'QA manager'; +$lang->product->RM = 'Release manager'; $lang->product->acl = 'Access limitation'; $lang->product->whitelist = 'Whitelist'; diff --git a/module/product/lang/zh-cn.php b/module/product/lang/zh-cn.php index 83ab6cbbe8..91c57cc8f0 100644 --- a/module/product/lang/zh-cn.php +++ b/module/product/lang/zh-cn.php @@ -40,7 +40,9 @@ $lang->product->code = '产品代号'; $lang->product->order = '排序'; $lang->product->status = '状态'; $lang->product->desc = '产品描述'; -$lang->product->bugOwner = 'Bug负责人'; +$lang->product->PO = '产品负责人'; +$lang->product->QM = '测试负责人'; +$lang->product->RM = '发布负责人'; $lang->product->acl = '访问控制'; $lang->product->whitelist = '分组白名单'; diff --git a/module/product/model.php b/module/product/model.php index bf9627809d..f7ed3712b4 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -38,16 +38,17 @@ class productModel extends model /** * Save the product id user last visited to session. * - * @param int $productID - * @param int $defaultProductID + * @param int $productID + * @param array $products * @access public * @return int */ - public function saveState($productID, $defaultProductID) + public function saveState($productID, $products) { if($productID > 0) $this->session->set('product', (int)$productID); if($productID == 0 and $this->cookie->lastProduct) $this->session->set('product', (int)$this->cookie->lastProduct); - if($productID == 0 and $this->session->product == '') $this->session->set('product', $defaultProductID); + if($productID == 0 and $this->session->product == '') $this->session->set('product', key($products)); + if(!isset($products[$this->session->product])) $this->session->set('product', key($products)); return $this->session->product; } @@ -68,7 +69,7 @@ class productModel extends model if($product->acl == 'open') return true; /* Get team members. */ - $teamMembers = $this->getTeamMemberPairs($product->id); + $teamMembers = $this->getTeamMemberPairs($product); /* Private. */ if($product->acl == 'private') @@ -156,8 +157,10 @@ class productModel extends model { $product = fixer::input('post') ->stripTags('name,code') - ->specialChars('desc') ->setIF($this->post->acl != 'custom', 'whitelist', '') + ->setDefault('status', 'normal') + ->setDefault('createdBy', $this->app->user->account) + ->setDefault('createdDate', helper::now()) ->join('whitelist', ',') ->get(); $this->dao->insert(TABLE_PRODUCT) @@ -183,7 +186,6 @@ class productModel extends model $oldProduct = $this->getById($productID); $product = fixer::input('post') ->stripTags('name,code') - ->specialChars('desc') ->setIF($this->post->acl != 'custom', 'whitelist', '') ->join('whitelist', ',') ->get(); @@ -248,14 +250,20 @@ class productModel extends model /** * Get team members of a product from projects. * - * @param int $productID + * @param object $product * @access public * @return array */ - public function getTeamMemberPairs($productID) + public function getTeamMemberPairs($product) { - $projects = $this->dao->select('project')->from(TABLE_PROJECTPRODUCT)->where('product')->eq($productID)->fetchPairs(); - if(!$projects) return array(); - return $this->dao->select('account')->from(TABLE_TEAM)->where('project')->in($projects)->fetchPairs(); + $members[$product->PO] = $product->PO; + $members[$product->QM] = $product->QM; + $members[$product->RM] = $product->RM; + $members[$product->createdBy] = $product->createdBy; + + $projects = $this->dao->select('project')->from(TABLE_PROJECTPRODUCT)->where('product')->eq($product->id)->fetchPairs(); + if(!$projects) return $members; + $projectTeams = $this->dao->select('account')->from(TABLE_TEAM)->where('project')->in($projects)->fetchPairs(); + return array_merge($members, $projectTeams); } } diff --git a/module/product/view/create.html.php b/module/product/view/create.html.php index 09a498c7e4..3ede3e1ced 100644 --- a/module/product/view/create.html.php +++ b/module/product/view/create.html.php @@ -11,6 +11,7 @@ */ ?> +