This commit is contained in:
holan20180123
2021-01-19 15:39:02 +08:00
19 changed files with 245 additions and 109 deletions
+71 -44
View File
@@ -1,48 +1,74 @@
REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES
(1, 'product', 'dashboard'),
(1, 'my', 'preference'),
(1, 'my', 'uploadAvatar'),
(1, 'user', 'cropAvatar'),
(2, 'product', 'dashboard'),
(2, 'my', 'preference'),
(2, 'my', 'uploadAvatar'),
(2, 'user', 'cropAvatar'),
(3, 'product', 'dashboard'),
(3, 'my', 'preference'),
(3, 'my', 'uploadAvatar'),
(3, 'user', 'cropAvatar'),
(4, 'product', 'dashboard'),
(4, 'my', 'preference'),
(4, 'my', 'uploadAvatar'),
(4, 'user', 'cropAvatar'),
(5, 'product', 'dashboard'),
(5, 'my', 'preference'),
(5, 'my', 'uploadAvatar'),
(5, 'user', 'cropAvatar'),
(6, 'product', 'dashboard'),
(6, 'my', 'preference'),
(6, 'my', 'uploadAvatar'),
(6, 'user', 'cropAvatar'),
(7, 'product', 'dashboard'),
(7, 'my', 'preference'),
(7, 'my', 'uploadAvatar'),
(7, 'user', 'cropAvatar'),
(8, 'product', 'dashboard'),
(8, 'my', 'preference'),
(8, 'my', 'uploadAvatar'),
(8, 'user', 'cropAvatar'),
(9, 'product', 'dashboard'),
(9, 'my', 'preference'),
(9, 'my', 'uploadAvatar'),
(9, 'user', 'cropAvatar'),
(10, 'product', 'dashboard'),
(10, 'my', 'preference'),
(10, 'my', 'uploadAvatar'),
(10, 'user', 'cropAvatar'),
(11, 'product', 'dashboard'),
(11, 'my', 'preference'),
(11, 'my', 'uploadAvatar'),
(11, 'user', 'cropAvatar');
(1, 'product', 'dashboard'),
(1, 'projectstory', 'story'),
(1, 'projectstory', 'track'),
(1, 'projectstory', 'linkStory'),
(1, 'my', 'preference'),
(1, 'my', 'uploadAvatar'),
(1, 'user', 'cropAvatar'),
(2, 'product', 'dashboard'),
(2, 'projectstory', 'story'),
(2, 'projectstory', 'track'),
(2, 'my', 'preference'),
(2, 'my', 'uploadAvatar'),
(2, 'user', 'cropAvatar'),
(3, 'product', 'dashboard'),
(3, 'projectstory', 'story'),
(3, 'projectstory', 'track'),
(3, 'my', 'preference'),
(3, 'my', 'uploadAvatar'),
(3, 'user', 'cropAvatar'),
(4, 'product', 'dashboard'),
(4, 'projectstory', 'story'),
(4, 'projectstory', 'track'),
(4, 'my', 'preference'),
(4, 'my', 'uploadAvatar'),
(4, 'user', 'cropAvatar'),
(5, 'product', 'dashboard'),
(5, 'projectstory', 'story'),
(5, 'projectstory', 'track'),
(5, 'projectstory', 'linkStory'),
(5, 'my', 'preference'),
(5, 'my', 'uploadAvatar'),
(5, 'user', 'cropAvatar'),
(6, 'product', 'dashboard'),
(6, 'projectstory', 'story'),
(6, 'projectstory', 'track'),
(6, 'my', 'preference'),
(6, 'my', 'uploadAvatar'),
(6, 'user', 'cropAvatar'),
(7, 'product', 'dashboard'),
(7, 'projectstory', 'story'),
(7, 'projectstory', 'track'),
(7, 'projectstory', 'linkStory'),
(7, 'my', 'preference'),
(7, 'my', 'uploadAvatar'),
(7, 'user', 'cropAvatar'),
(8, 'product', 'dashboard'),
(8, 'projectstory', 'story'),
(8, 'projectstory', 'track'),
(8, 'my', 'preference'),
(8, 'my', 'uploadAvatar'),
(8, 'user', 'cropAvatar'),
(9, 'product', 'dashboard'),
(9, 'projectstory', 'story'),
(9, 'projectstory', 'track'),
(9, 'projectstory', 'linkStory'),
(9, 'my', 'preference'),
(9, 'my', 'uploadAvatar'),
(9, 'user', 'cropAvatar'),
(10, 'product', 'dashboard'),
(10, 'projectstory', 'story'),
(10, 'projectstory', 'track'),
(10, 'my', 'preference'),
(10, 'my', 'uploadAvatar'),
(10, 'user', 'cropAvatar'),
(11, 'product', 'dashboard'),
(11, 'projectstory', 'story'),
(11, 'projectstory', 'track'),
(11, 'my', 'preference'),
(11, 'my', 'uploadAvatar'),
(11, 'user', 'cropAvatar');
REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'program', '', 'unitList', 'CNY,USD');
REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'program', '', 'mainCurrency', 'CNY');
@@ -51,6 +77,7 @@ ALTER TABLE `zt_project` DROP `storyConcept`;
ALTER TABLE `zt_product` DROP `storyConcept`;
ALTER TABLE `zt_user` CHANGE `avatar` `avatar` text NOT NULL AFTER `commiter`;
ALTER TABLE `zt_project` CHANGE `budgetUnit` `budgetUnit` char(30) NOT NULL DEFAULT 'CNY' AFTER `budget`;
-- DROP TABLE IF EXISTS `zt_searchindex`;
CREATE TABLE IF NOT EXISTS `zt_searchindex` (
+1 -1
View File
@@ -732,7 +732,7 @@ CREATE TABLE IF NOT EXISTS `zt_project` (
`product` char(30) NOT NULL DEFAULT 'single',
`lifetime` char(30) NOT NULL,
`budget` varchar(30) NOT NULL DEFAULT '0',
`budgetUnit` char(30) NOT NULL DEFAULT 'wanyuan',
`budgetUnit` char(30) NOT NULL DEFAULT 'CNY',
`attribute` varchar(30) NOT NULL DEFAULT '',
`percent` float unsigned NOT NULL DEFAULT '0',
`milestone` enum('0','1') NOT NULL DEFAULT '0',
+1 -2
View File
@@ -161,7 +161,6 @@ class router extends baseRouter
global $lang, $app;
$sprintConcept = $hourPoint = false;
/* Get config from DB. */
if($this->dbh and !empty($this->config->db->name))
{
@@ -216,7 +215,7 @@ class router extends baseRouter
/* Get user preference. */
$account = isset($this->session->user->account) ? $this->session->user->account : '';
$userSetting = $this->dbh->query('SELECT `key`, value FROM' . TABLE_CONFIG . "WHERE `owner`='{$account}' AND `module`='common' and `key` in ('programLink', 'productLink', 'projectLink', 'URSR')")->fetchAll();
if($this->dbh and !empty($this->config->db->name)) $userSetting = $this->dbh->query('SELECT `key`, value FROM' . TABLE_CONFIG . "WHERE `owner`='{$account}' AND `module`='common' and `key` in ('programLink', 'productLink', 'projectLink', 'URSR')")->fetchAll();
foreach($userSetting as $setting)
{
if($setting->key == 'URSR') $config->URSR = $setting->value;
+17 -2
View File
@@ -15,8 +15,23 @@ $lang->budget->subject = 'Category';
$lang->budget->name = 'Item';
$lang->budget->amount = 'Estimated';
$lang->budget->desc = 'Description';
$lang->budget->wanyuan = 'Wanyuan';
$lang->budget->dollar = 'Dollars';
$lang->budget->CNY = 'RMB';
$lang->budget->USD = 'USD';
$lang->budget->HKD = 'HKD';
$lang->budget->NTD = 'New Taiwan';
$lang->budget->EUR = 'Euro';
$lang->budget->DEM = 'Deutsche Mark';
$lang->budget->CHF = 'Swiss Franc';
$lang->budget->FRF = 'French Franc';
$lang->budget->GBP = 'Pound';
$lang->budget->NLG = 'Florin';
$lang->budget->CAD = 'Canadian';
$lang->budget->RUR = 'Russian Ruble';
$lang->budget->INR = 'Indian';
$lang->budget->AUD = 'Australian';
$lang->budget->NZD = 'New Zealand';
$lang->budget->THB = 'Thai Baht';
$lang->budget->SGD = 'Singapore';
$lang->budget->createdBy = 'CreatedBy';
$lang->budget->createdDate = 'CreatedDate';
$lang->budget->lastEditedBy = 'LastEditBy';
+17 -2
View File
@@ -15,8 +15,23 @@ $lang->budget->subject = 'Category';
$lang->budget->name = 'Item';
$lang->budget->amount = 'Estimated';
$lang->budget->desc = 'Description';
$lang->budget->wanyuan = 'Wanyuan';
$lang->budget->dollar = 'Dollars';
$lang->budget->CNY = 'RMB';
$lang->budget->USD = 'USD';
$lang->budget->HKD = 'HKD';
$lang->budget->NTD = 'New Taiwan';
$lang->budget->EUR = 'Euro';
$lang->budget->DEM = 'Deutsche Mark';
$lang->budget->CHF = 'Swiss Franc';
$lang->budget->FRF = 'French Franc';
$lang->budget->GBP = 'Pound';
$lang->budget->NLG = 'Florin';
$lang->budget->CAD = 'Canadian';
$lang->budget->RUR = 'Russian Ruble';
$lang->budget->INR = 'Indian';
$lang->budget->AUD = 'Australian';
$lang->budget->NZD = 'New Zealand';
$lang->budget->THB = 'Thai Baht';
$lang->budget->SGD = 'Singapore';
$lang->budget->createdBy = 'CreatedBy';
$lang->budget->createdDate = 'CreatedDate';
$lang->budget->lastEditedBy = 'LastEditBy';
+17 -2
View File
@@ -15,8 +15,23 @@ $lang->budget->subject = 'Category';
$lang->budget->name = 'Item';
$lang->budget->amount = 'Estimated';
$lang->budget->desc = 'Description';
$lang->budget->wanyuan = 'Wanyuan';
$lang->budget->dollar = 'Dollars';
$lang->budget->CNY = 'RMB';
$lang->budget->USD = 'USD';
$lang->budget->HKD = 'HKD';
$lang->budget->NTD = 'New Taiwan';
$lang->budget->EUR = 'Euro';
$lang->budget->DEM = 'Deutsche Mark';
$lang->budget->CHF = 'Swiss Franc';
$lang->budget->FRF = 'French Franc';
$lang->budget->GBP = 'Pound';
$lang->budget->NLG = 'Florin';
$lang->budget->CAD = 'Canadian';
$lang->budget->RUR = 'Russian Ruble';
$lang->budget->INR = 'Indian';
$lang->budget->AUD = 'Australian';
$lang->budget->NZD = 'New Zealand';
$lang->budget->THB = 'Thai Baht';
$lang->budget->SGD = 'Singapore';
$lang->budget->createdBy = 'CreatedBy';
$lang->budget->createdDate = 'CreatedDate';
$lang->budget->lastEditedBy = 'LastEditBy';
+17 -2
View File
@@ -15,8 +15,23 @@ $lang->budget->subject = 'Category';
$lang->budget->name = 'Item';
$lang->budget->amount = 'Estimated';
$lang->budget->desc = 'Description';
$lang->budget->wanyuan = 'Wanyuan';
$lang->budget->dollar = 'Dollars';
$lang->budget->CNY = 'RMB';
$lang->budget->USD = 'USD';
$lang->budget->HKD = 'HKD';
$lang->budget->NTD = 'New Taiwan';
$lang->budget->EUR = 'Euro';
$lang->budget->DEM = 'Deutsche Mark';
$lang->budget->CHF = 'Swiss Franc';
$lang->budget->FRF = 'French Franc';
$lang->budget->GBP = 'Pound';
$lang->budget->NLG = 'Florin';
$lang->budget->CAD = 'Canadian';
$lang->budget->RUR = 'Russian Ruble';
$lang->budget->INR = 'Indian';
$lang->budget->AUD = 'Australian';
$lang->budget->NZD = 'New Zealand';
$lang->budget->THB = 'Thai Baht';
$lang->budget->SGD = 'Singapore';
$lang->budget->createdBy = 'CreatedBy';
$lang->budget->createdDate = 'CreatedDate';
$lang->budget->lastEditedBy = 'LastEditBy';
+17 -2
View File
@@ -15,8 +15,23 @@ $lang->budget->subject = '科目';
$lang->budget->name = '费用名称';
$lang->budget->amount = '预计金额';
$lang->budget->desc = '说明';
$lang->budget->wanyuan = '万元';
$lang->budget->dollar = 'Dollars';
$lang->budget->CNY = '人民币';
$lang->budget->USD = '美元';
$lang->budget->HKD = '港元';
$lang->budget->NTD = '台元';
$lang->budget->EUR = '欧元';
$lang->budget->DEM = '马克';
$lang->budget->CHF = '瑞士法郎';
$lang->budget->FRF = '法国法郎';
$lang->budget->GBP = '英镑';
$lang->budget->NLG = '荷兰盾';
$lang->budget->CAD = '加拿大元';
$lang->budget->RUR = '卢布';
$lang->budget->INR = '卢比';
$lang->budget->AUD = '澳大利亚元';
$lang->budget->NZD = '新西兰元';
$lang->budget->THB = '泰国铢';
$lang->budget->SGD = '新加坡元';
$lang->budget->createdBy = '由谁创建';
$lang->budget->createdDate = '创建时间';
$lang->budget->lastEditedBy = '由谁编辑';
+17 -2
View File
@@ -15,8 +15,23 @@ $lang->budget->subject = '科目';
$lang->budget->name = '費用名稱';
$lang->budget->amount = '預計金額';
$lang->budget->desc = '說明';
$lang->budget->wanyuan = '萬元';
$lang->budget->dollar = 'Dollars';
$lang->budget->CNY = '人民幣';
$lang->budget->USD = '美元';
$lang->budget->HKD = '港元';
$lang->budget->NTD = '台元';
$lang->budget->EUR = '歐元';
$lang->budget->DEM = '馬克';
$lang->budget->CHF = '瑞士法郎';
$lang->budget->FRF = '法國法郎';
$lang->budget->GBP = '英鎊';
$lang->budget->NLG = '荷蘭盾';
$lang->budget->CAD = '加拿大元';
$lang->budget->RUR = '盧布';
$lang->budget->INR = '盧比';
$lang->budget->AUD = '澳大利亞元';
$lang->budget->NZD = '新西蘭元';
$lang->budget->THB = '泰國銖';
$lang->budget->SGD = '新加坡元';
$lang->budget->createdBy = '由誰創建';
$lang->budget->createdDate = '創建時間';
$lang->budget->lastEditedBy = '由誰編輯';
+6 -6
View File
@@ -487,13 +487,13 @@ $lang->productplan->methodOrder[60] = 'batchEdit';
/* Project Story. */
$lang->resource->projectstory = new stdclass();
$lang->resource->projectstory->requirement = 'requirement';
$lang->resource->projectstory->story = 'story';
$lang->resource->projectstory->track = 'track';
$lang->resource->projectstory->story = 'story';
$lang->resource->projectstory->track = 'track';
$lang->resource->projectstory->linkStory = 'linkStory';
$lang->productplan->methodOrder[5] = 'requirement';
$lang->productplan->methodOrder[10] = 'story';
$lang->productplan->methodOrder[15] = 'track';
$lang->productplan->methodOrder[5] = 'story';
$lang->productplan->methodOrder[10] = 'track';
$lang->productplan->methodOrder[15] = 'linkStory';
/* Release. */
$lang->resource->release = new stdclass();
+4 -11
View File
@@ -199,17 +199,10 @@ class product extends control
{
$products = $this->product->getProductsByProject($this->session->PRJ);
$productPlans = $this->loadModel('project')->getPlans($products);
$projectPlanList = $this->dao->select('product,plan')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($this->session->PRJ)->fetchPairs('product', 'plan');
$notLinkPlans = array();
foreach($projectPlanList as $product => $planID)
$allPlans = array();
foreach($productPlans as $productPlan)
{
if(isset($productPlans[$product][$planID])) unset($productPlans[$product][$planID]);
}
foreach($productPlans as $productPlans)
{
foreach($productPlans as $id => $plan) $notLinkPlans[$id] = $plan;
foreach($productPlan as $id => $plan) $allPlans[$id] = $plan;
}
if($projectStoryBrowseType == 'bybranch') $param = $branch;
@@ -261,7 +254,7 @@ class product extends control
$this->view->moduleID = $moduleID;
$this->view->stories = $stories;
$this->view->plans = $this->loadModel('productplan')->getPairs($productID, $branch, '', true);
$this->view->notLinkPlans = isset($notLinkPlans) ? $notLinkPlans : array();
$this->view->allPlans = isset($allPlans) ? $allPlans : array();
$this->view->summary = $this->product->summary($stories, $storyType);
$this->view->moduleTree = $moduleTree;
$this->view->parentModules = $this->tree->getParents($moduleID);
+3 -3
View File
@@ -150,8 +150,8 @@ $lang->story->createCommon = $storyType == 'story' ? $lang->story->createStory :
echo "<i class='icon-link'></i> {$lang->project->linkStory} <span class='caret'></span>";
echo '</button>';
echo "<ul class='dropdown-menu pull-right' id='linkActionMenu'>";
echo '<li>' . html::a($this->createLink('projectstory', 'linkStory', "project={$this->session->PRJ}"), $lang->project->linkStory). "</li>";
if(common::hasPriv('projectstory', 'importPlanStories')) echo '<li>' . html::a('#linkStoryByPlan', $lang->project->linkStoryByPlan, '', 'data-toggle="modal"') . "</li>";
if(common::hasPriv('projectstory', 'linkStory')) echo '<li>' . html::a($this->createLink('projectstory', 'linkStory', "project={$this->session->PRJ}"), $lang->project->linkStory). "</li>";
if(common::hasPriv('project', 'importPlanStories')) echo '<li>' . html::a('#linkStoryByPlan', $lang->project->linkStoryByPlan, '', 'data-toggle="modal"') . "</li>";
echo '</ul>';
}
?>
@@ -455,7 +455,7 @@ $lang->story->createCommon = $storyType == 'story' ? $lang->story->createStory :
</div>
<div class="modal-body">
<div class='input-group'>
<?php echo html::select('plan', $notLinkPlans, '', "class='form-control chosen' id='plan'");?>
<?php echo html::select('plan', $allPlans, '', "class='form-control chosen' id='plan'");?>
<span class='input-group-btn'><?php echo html::commonButton($lang->project->linkStory, "id='toTaskButton'", 'btn btn-primary');?></span>
</div>
</div>
+5 -5
View File
@@ -1,9 +1,9 @@
<?php
$lang->projectstory->common = 'Anforderungen an Projekte';
$lang->projectstory->index = 'Fordern Sie Homepage';
$lang->projectstory->requirement = $lang->generalUR;
$lang->projectstory->story = $lang->generalSR;
$lang->projectstory->track = 'Matrix der Verfolgung';
$lang->projectstory->common = 'Anforderungen an Projekte';
$lang->projectstory->index = 'Fordern Sie Homepage';
$lang->projectstory->story = $lang->generalSR;
$lang->projectstory->track = 'Matrix der Verfolgung';
$lang->projectstory->linkStory = 'Linked' . $lang->SRCommon;
global $app;
$app->loadLang('product');
+5 -5
View File
@@ -1,9 +1,9 @@
<?php
$lang->projectstory->common = 'Project Requirements';
$lang->projectstory->index = 'Request Home';
$lang->projectstory->requirement = $lang->generalUR;
$lang->projectstory->story = $lang->generalSR;
$lang->projectstory->track = 'Tracking Matrix';
$lang->projectstory->common = 'Project Requirements';
$lang->projectstory->index = 'Request Home';
$lang->projectstory->story = $lang->generalSR;
$lang->projectstory->track = 'Tracking Matrix';
$lang->projectstory->linkStory = 'Linked' . $lang->SRCommon;
global $app;
$app->loadLang('product');
+5 -5
View File
@@ -1,9 +1,9 @@
<?php
$lang->projectstory->common = 'Exigences du projet';
$lang->projectstory->index = 'Exigences Accueil';
$lang->projectstory->requirement = $lang->generalUR;
$lang->projectstory->story = $lang->generalSR;
$lang->projectstory->track = 'Matrice de suivi';
$lang->projectstory->common = 'Exigences du projet';
$lang->projectstory->index = 'Exigences Accueil';
$lang->projectstory->story = $lang->generalSR;
$lang->projectstory->track = 'Matrice de suivi';
$lang->projectstory->linkStory = 'Linked' . $lang->SRCommon;
global $app;
$app->loadLang('product');
+5 -5
View File
@@ -1,9 +1,9 @@
<?php
$lang->projectstory->common = 'Yêu cầu dự án';
$lang->projectstory->index = 'Yêu cầu trang nhà';
$lang->projectstory->requirement = $lang->generalUR;
$lang->projectstory->story = $lang->generalSR;
$lang->projectstory->track = 'Theo dõi ma trận';
$lang->projectstory->common = 'Yêu cầu dự án';
$lang->projectstory->index = 'Yêu cầu trang nhà';
$lang->projectstory->story = $lang->generalSR;
$lang->projectstory->track = 'Theo dõi ma trận';
$lang->projectstory->linkStory = 'Linked' . $lang->SRCommon;
global $app;
$app->loadLang('product');
+5 -5
View File
@@ -1,9 +1,9 @@
<?php
$lang->projectstory->common = '项目需求';
$lang->projectstory->index = '需求主页';
$lang->projectstory->requirement = $lang->generalUR;
$lang->projectstory->story = $lang->generalSR;
$lang->projectstory->track = '跟踪矩阵';
$lang->projectstory->common = '项目需求';
$lang->projectstory->index = '需求主页';
$lang->projectstory->story = $lang->generalSR;
$lang->projectstory->track = '跟踪矩阵';
$lang->projectstory->linkStory = '关联' . $lang->SRCommon;
global $app;
$app->loadLang('product');
+5 -5
View File
@@ -1,9 +1,9 @@
<?php
$lang->projectstory->common = '項目需求';
$lang->projectstory->index = '需求主頁';
$lang->projectstory->requirement = $lang->generalUR;
$lang->projectstory->story = $lang->generalSR;
$lang->projectstory->track = '跟蹤矩陣';
$lang->projectstory->common = '項目需求';
$lang->projectstory->index = '需求主頁';
$lang->projectstory->story = $lang->generalSR;
$lang->projectstory->track = '跟蹤矩陣';
$lang->projectstory->linkStory = '關聯' . $lang->SRCommon;
global $app;
$app->loadLang('product');
+27
View File
@@ -664,6 +664,7 @@ class upgradeModel extends model
$this->saveLogs('Execute 20_0_beta3');
$this->execSQL($this->getUpgradeFile('20.0.beta3'));
$this->addPriv20_0_bata3();
$this->adjustBudgetUnit();
$this->appendExec('20_0_beta3');
}
@@ -4505,4 +4506,30 @@ class upgradeModel extends model
}
return true;
}
/**
* Adjust budget units and values.
*
* @access public
* @return bool
*/
public function adjustBudgetUnit()
{
$budgets = $this->dao->select('id,budget,budgetUnit')->from(TABLE_PROJECT)
->where('type')->in('project,program')
->fetchAll('id');
foreach($budgets as $id => $budget)
{
$data = array();
$data['budgetUnit'] = 'CNY';
$data['budget'] = str_replace(',', '', $budget->budget);
if($budget->budgetUnit == 'wanyuan') $data['budget'] = (float)$data['budget'] * 10000;
if($budget->budgetUnit == 'dollar') $data['budgetUnit'] = 'USD';
if($data) $this->dao->update(TABLE_PROJECT)->data($data)->where('id')->eq($id)->exec();
}
return true;
}
}