diff --git a/config/zentaopms.php b/config/zentaopms.php index 59ea1c162a..63fb73f861 100644 --- a/config/zentaopms.php +++ b/config/zentaopms.php @@ -189,7 +189,6 @@ if(!defined('TABLE_LANG')) define('TABLE_LANG', '`' . $config->db- if(!defined('TABLE_DESIGN')) define('TABLE_DESIGN', '`' . $config->db->prefix . 'design`'); if(!defined('TABLE_DESIGNSPEC')) define('TABLE_DESIGNSPEC', '`' . $config->db->prefix . 'designspec`'); if(!defined('TABLE_PROJECTSPEC')) define('TABLE_PROJECTSPEC', '`' . $config->db->prefix . 'projectspec`'); -if(!defined('TABLE_BUDGET')) define('TABLE_BUDGET', '`' . $config->db->prefix . 'budget`'); if(!defined('TABLE_SEARCHINDEX')) define('TABLE_SEARCHINDEX', $config->db->prefix . 'searchindex'); if(!defined('TABLE_SEARCHDICT')) define('TABLE_SEARCHDICT', $config->db->prefix . 'searchdict'); @@ -221,7 +220,6 @@ $config->objectTables['entry'] = TABLE_ENTRY; $config->objectTables['webhook'] = TABLE_WEBHOOK; $config->objectTables['design'] = TABLE_DESIGN; $config->objectTables['stakeholder'] = TABLE_STAKEHOLDER; -$config->objectTables['budget'] = TABLE_BUDGET; $config->objectTables['job'] = TABLE_JOB; /* Program privs.*/ diff --git a/db/update15.0.sql b/db/update15.0.sql index cfabe33029..124204cbbb 100644 --- a/db/update15.0.sql +++ b/db/update15.0.sql @@ -129,23 +129,6 @@ CREATE TABLE IF NOT EXISTS `zt_projectspec` ( UNIQUE KEY `project` (`project`,`version`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; --- DROP TABLE IF EXISTS `zt_budget`; -CREATE TABLE IF NOT EXISTS `zt_budget` ( - `id` int(8) NOT NULL AUTO_INCREMENT, - `PRJ` mediumint(8) NOT NULL, - `stage` char(30) NOT NULL, - `subject` mediumint(8) NOT NULL, - `amount` char(30) NOT NULL, - `name` varchar(255) NOT NULL, - `desc` text NOT NULL, - `createdBy` char(30) NOT NULL, - `createdDate` date NOT NULL, - `lastEditedBy` char(30) NOT NULL, - `lastEditedDate` date NOT NULL, - `deleted` enum('0','1') NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; - ALTER TABLE `zt_task` ADD `design` mediumint(8) unsigned NOT NULL AFTER `module`; ALTER TABLE `zt_task` ADD `version` smallint(6) NOT NULL AFTER `desc`; ALTER TABLE `zt_task` ADD `activatedDate` date NOT NULL AFTER `lastEditedDate`; diff --git a/db/zentao.sql b/db/zentao.sql index c90b2cb1d2..4bdc98a4b4 100644 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -148,22 +148,6 @@ CREATE TABLE IF NOT EXISTS `zt_bug` ( KEY `result` (`result`), KEY `assignedTo` (`assignedTo`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; --- DROP TABLE IF EXISTS `zt_budget`; -CREATE TABLE IF NOT EXISTS `zt_budget` ( - `id` int(8) NOT NULL AUTO_INCREMENT, - `PRJ` mediumint(8) NOT NULL, - `stage` char(30) NOT NULL, - `subject` mediumint(8) NOT NULL, - `amount` char(30) NOT NULL, - `name` varchar(255) NOT NULL, - `desc` text NOT NULL, - `createdBy` char(30) NOT NULL, - `createdDate` date NOT NULL, - `lastEditedBy` char(30) NOT NULL, - `lastEditedDate` date NOT NULL, - `deleted` enum('0','1') NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8; -- DROP TABLE IF EXISTS `zt_build`; CREATE TABLE IF NOT EXISTS `zt_build` ( `id` mediumint(8) unsigned NOT NULL auto_increment, diff --git a/module/budget/config.php b/module/budget/config.php deleted file mode 100644 index 0364a0fd80..0000000000 --- a/module/budget/config.php +++ /dev/null @@ -1,9 +0,0 @@ -budget = new stdclass(); -$config->budget->editor = new stdclass(); -$config->budget->create = new stdclass(); - -$config->budget->editor->create = array('id' => 'desc', 'tools' => 'simpleTools'); -$config->budget->editor->edit = array('id' => 'desc', 'tools' => 'simpleTools'); - -$config->budget->create->requiredFields = 'stage,subject,name'; diff --git a/module/budget/control.php b/module/budget/control.php deleted file mode 100644 index e0b690534c..0000000000 --- a/module/budget/control.php +++ /dev/null @@ -1,221 +0,0 @@ - - * @package budget - * @version $Id: control.php 5107 2013-07-12 01:46:12Z chencongzhi520@gmail.com $ - * @link http://www.zentao.net - */ -class budget extends control -{ - /** - * __construct - * - * @param string $module - * @param string $method - * @access public - * @return void - */ - public function __construct($module = '', $method = '') - { - parent::__construct($module, $method); - $this->view->project = $this->loadModel('program')->getPRJByID($this->session->PRJ); - } - - /** - * The budget browse page. - * - * @param string $orderBy - * @param int $recTotal - * @param int $recPerPage - * @param int $pageID - * @access public - * @return void - */ - public function browse($orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1) - { - $this->app->loadClass('pager', $static = true); - $pager = pager::init($recTotal, $recPerPage, $pageID); - - $this->view->title = $this->lang->budget->list . $this->lang->colon . $this->lang->budget->common; - $this->view->position[] = $this->lang->budget->common; - $this->view->position[] = $this->lang->budget->list; - - $this->view->budgets = $this->budget->getList($this->session->PRJ, $orderBy, $pager); - $this->view->orderBy = $orderBy; - $this->view->pager = $pager; - $this->view->modules = $this->loadModel('tree')->getOptionMenu(0, 'subject'); - $this->view->stages = $this->loadModel('project')->getExecutionsByProject($this->session->PRJ, 'all', 0, true); - $this->view->users = $this->loadModel('user')->getPairs('noclosed|noletter'); - $this->display(); - } - - /** - * The budget summary page. - * - * @access public - * @return void - */ - public function summary() - { - $subjects = $this->budget->getSubjectStructure(); - - $this->view->title = $this->lang->budget->summary . $this->lang->colon . $this->lang->budget->common; - $this->view->position[] = $this->lang->budget->common; - $this->view->position[] = $this->lang->budget->summary; - - $this->view->subjects = $subjects; - $this->view->hasSubSubject = $this->budget->checkSubSubject($subjects); - $this->view->plans = $this->loadModel('project')->getExecutionsByProject($this->session->PRJ, 'all', 0, true); - $this->view->summary = $this->budget->getSummary($this->session->PRJ, $subjects); - $this->view->modules = $this->loadModel('tree')->getOptionMenu(0, $viewType = 'subject', $startModuleID = 0); - - $this->display(); - } - - /** - * Create a budget. - * - * @access public - * @return void - */ - public function create() - { - if($_POST) - { - $budgetID = $this->budget->create(); - if(dao::isError()) - { - $response = array('result' => 'fail', 'message' => dao::getError()); - $this->send($response); - } - - $this->loadModel('action')->create('budget', $budgetID, 'created'); - $response = array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse')); - $this->send($response); - } - - $this->view->title = $this->lang->budget->create . $this->lang->colon . $this->lang->budget->common; - $this->view->position[] = $this->lang->budget->common; - $this->view->position[] = $this->lang->budget->create; - - $this->view->subjects = array(0 => '') + $this->budget->getSubjectOption(); - $this->view->plans = $this->loadModel('project')->getExecutionsByProject($this->session->PRJ, 'all', 0, true); - $this->display(); - } - - /** - * Edit a budget. - * - * @param int $budgetID - * @access public - * @return void - */ - public function edit($budgetID) - { - if($_POST) - { - $changes = $this->budget->update($budgetID); - if(dao::isError()) - { - $response = array('result' => 'fail', 'message' => dao::getError()); - $this->send($response); - } - - if($changes) - { - $actionID = $this->loadModel('action')->create('budget', $budgetID, 'edited'); - $this->action->logHistory($actionID, $changes); - } - - $response = array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse')); - $this->send($response); - } - - $this->view->title = $this->lang->budget->edit . $this->lang->colon . $this->lang->budget->common; - $this->view->position[] = $this->lang->budget->common; - $this->view->position[] = $this->lang->budget->edit; - - $this->view->subjects = array('' => '') + $this->budget->getSubjectOption(); - $this->view->plans = $this->loadModel('project')->getExecutionsByProject($this->session->PRJ, 'all', 0, true); - $this->view->budget = $this->budget->getByID($budgetID); - $this->display(); - } - - /** - * Budget details. - * - * @param int $budgetID - * @access public - * @return void - */ - public function view($budgetID) - { - $this->view->title = $this->lang->budget->common . $this->lang->colon . $this->lang->budget->view; - $this->view->position[] = $this->lang->budget->common; - $this->view->position[] = $this->lang->budget->view; - - $this->view->subjects = $this->budget->getSubjectOption(); - $this->view->plans = $this->loadModel('project')->getExecutionsByProject($this->session->PRJ, 'all', 0, true); - $this->view->budget = $this->budget->getByID($budgetID); - $this->view->actions = $this->loadModel('action')->getList('budget', $budgetID); - $this->view->users = $this->loadModel('user')->getPairs('noclosed|noletter'); - - $this->display(); - } - - /** - * Delete a budget. - * - * @param int $budgetID - * @param varchar $confirm - * @access public - * @return void - */ - public function delete($budgetID = 0, $confirm = 'no') - { - if($confirm == 'no') - { - echo js::confirm($this->lang->budget->confirmDelete, inLink('delete', "budgetID=$budgetID&confirm=yes")); - die(); - } - else - { - $this->budget->delete(TABLE_BUDGET, $budgetID); - die(js::locate(inlink('browse'), 'parent')); - } - } - - /** - * Batch create budgets. - * - * @access public - * @return void - */ - public function batchCreate() - { - if($_POST) - { - $this->budget->batchCreate(); - if(dao::isError()) - { - $response = array('result' => 'fail', 'message' => dao::getError()); - $this->send($response); - } - - $response = array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse')); - $this->send($response); - } - - $this->view->title = $this->lang->budget->batchCreate . $this->lang->colon . $this->lang->budget->common; - $this->view->position[] = $this->lang->budget->common; - $this->view->position[] = $this->lang->budget->batchCreate; - - $this->view->subjects = array('' => '') + $this->budget->getSubjectOption(); - $this->view->plans = $this->loadModel('project')->getExecutionsByProject($this->session->PRJ, 'all', 0, true); - $this->display(); - } -} diff --git a/module/budget/css/common.css b/module/budget/css/common.css deleted file mode 100644 index b42452795d..0000000000 --- a/module/budget/css/common.css +++ /dev/null @@ -1 +0,0 @@ -#pageNav{display: none} diff --git a/module/budget/lang/de.php b/module/budget/lang/de.php deleted file mode 100644 index 56050830ba..0000000000 --- a/module/budget/lang/de.php +++ /dev/null @@ -1,42 +0,0 @@ -budget->create = 'Create Budget'; -$lang->budget->edit = 'Edit'; -$lang->budget->total = 'Total Budget'; -$lang->budget->summary = 'Summary'; -$lang->budget->browse = 'Budget'; -$lang->budget->list = 'Budget List'; -$lang->budget->view = 'Budget Detail'; -$lang->budget->delete = 'Delete'; -$lang->budget->batchCreate = 'Batch Create'; -$lang->budget->common = 'Estimate Cost'; -$lang->budget->id = 'ID'; -$lang->budget->stage = 'Stage'; -$lang->budget->subject = 'Category'; -$lang->budget->name = 'Item'; -$lang->budget->amount = 'Estimated'; -$lang->budget->desc = 'Description'; -$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'; -$lang->budget->lastEditedDate = 'LastEditedDate'; -$lang->budget->basicInfo = 'Basic Info.'; - -$lang->budget->summaryReport = 'Summary'; -$lang->budget->confirmDelete = 'Do you want to delete it?'; diff --git a/module/budget/lang/en.php b/module/budget/lang/en.php deleted file mode 100644 index 56050830ba..0000000000 --- a/module/budget/lang/en.php +++ /dev/null @@ -1,42 +0,0 @@ -budget->create = 'Create Budget'; -$lang->budget->edit = 'Edit'; -$lang->budget->total = 'Total Budget'; -$lang->budget->summary = 'Summary'; -$lang->budget->browse = 'Budget'; -$lang->budget->list = 'Budget List'; -$lang->budget->view = 'Budget Detail'; -$lang->budget->delete = 'Delete'; -$lang->budget->batchCreate = 'Batch Create'; -$lang->budget->common = 'Estimate Cost'; -$lang->budget->id = 'ID'; -$lang->budget->stage = 'Stage'; -$lang->budget->subject = 'Category'; -$lang->budget->name = 'Item'; -$lang->budget->amount = 'Estimated'; -$lang->budget->desc = 'Description'; -$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'; -$lang->budget->lastEditedDate = 'LastEditedDate'; -$lang->budget->basicInfo = 'Basic Info.'; - -$lang->budget->summaryReport = 'Summary'; -$lang->budget->confirmDelete = 'Do you want to delete it?'; diff --git a/module/budget/lang/fr.php b/module/budget/lang/fr.php deleted file mode 100644 index 56050830ba..0000000000 --- a/module/budget/lang/fr.php +++ /dev/null @@ -1,42 +0,0 @@ -budget->create = 'Create Budget'; -$lang->budget->edit = 'Edit'; -$lang->budget->total = 'Total Budget'; -$lang->budget->summary = 'Summary'; -$lang->budget->browse = 'Budget'; -$lang->budget->list = 'Budget List'; -$lang->budget->view = 'Budget Detail'; -$lang->budget->delete = 'Delete'; -$lang->budget->batchCreate = 'Batch Create'; -$lang->budget->common = 'Estimate Cost'; -$lang->budget->id = 'ID'; -$lang->budget->stage = 'Stage'; -$lang->budget->subject = 'Category'; -$lang->budget->name = 'Item'; -$lang->budget->amount = 'Estimated'; -$lang->budget->desc = 'Description'; -$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'; -$lang->budget->lastEditedDate = 'LastEditedDate'; -$lang->budget->basicInfo = 'Basic Info.'; - -$lang->budget->summaryReport = 'Summary'; -$lang->budget->confirmDelete = 'Do you want to delete it?'; diff --git a/module/budget/lang/vi.php b/module/budget/lang/vi.php deleted file mode 100644 index 56050830ba..0000000000 --- a/module/budget/lang/vi.php +++ /dev/null @@ -1,42 +0,0 @@ -budget->create = 'Create Budget'; -$lang->budget->edit = 'Edit'; -$lang->budget->total = 'Total Budget'; -$lang->budget->summary = 'Summary'; -$lang->budget->browse = 'Budget'; -$lang->budget->list = 'Budget List'; -$lang->budget->view = 'Budget Detail'; -$lang->budget->delete = 'Delete'; -$lang->budget->batchCreate = 'Batch Create'; -$lang->budget->common = 'Estimate Cost'; -$lang->budget->id = 'ID'; -$lang->budget->stage = 'Stage'; -$lang->budget->subject = 'Category'; -$lang->budget->name = 'Item'; -$lang->budget->amount = 'Estimated'; -$lang->budget->desc = 'Description'; -$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'; -$lang->budget->lastEditedDate = 'LastEditedDate'; -$lang->budget->basicInfo = 'Basic Info.'; - -$lang->budget->summaryReport = 'Summary'; -$lang->budget->confirmDelete = 'Do you want to delete it?'; diff --git a/module/budget/lang/zh-cn.php b/module/budget/lang/zh-cn.php deleted file mode 100644 index 6945013bc7..0000000000 --- a/module/budget/lang/zh-cn.php +++ /dev/null @@ -1,42 +0,0 @@ -budget->create = '新建'; -$lang->budget->edit = '编辑'; -$lang->budget->total = '总预算'; -$lang->budget->summary = '汇总'; -$lang->budget->browse = '列表'; -$lang->budget->list = '列表'; -$lang->budget->view = '详情'; -$lang->budget->delete = '删除'; -$lang->budget->batchCreate = '批量新建'; -$lang->budget->common = '费用估算'; -$lang->budget->id = '编号'; -$lang->budget->stage = '阶段'; -$lang->budget->subject = '科目'; -$lang->budget->name = '费用名称'; -$lang->budget->amount = '预计金额'; -$lang->budget->desc = '说明'; -$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 = '由谁编辑'; -$lang->budget->lastEditedDate = '编辑时间'; -$lang->budget->basicInfo = '基本信息'; - -$lang->budget->summaryReport = '汇总表'; -$lang->budget->confirmDelete = '您确定要删除吗?'; diff --git a/module/budget/lang/zh-tw.php b/module/budget/lang/zh-tw.php deleted file mode 100644 index 9b77549e1f..0000000000 --- a/module/budget/lang/zh-tw.php +++ /dev/null @@ -1,42 +0,0 @@ -budget->create = '新建'; -$lang->budget->edit = '編輯'; -$lang->budget->total = '總預算'; -$lang->budget->summary = '彙總'; -$lang->budget->browse = '列表'; -$lang->budget->list = '列表'; -$lang->budget->view = '詳情'; -$lang->budget->delete = '刪除'; -$lang->budget->batchCreate = '批量新建'; -$lang->budget->common = '費用估算'; -$lang->budget->id = '編號'; -$lang->budget->stage = '階段'; -$lang->budget->subject = '科目'; -$lang->budget->name = '費用名稱'; -$lang->budget->amount = '預計金額'; -$lang->budget->desc = '說明'; -$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 = '由誰編輯'; -$lang->budget->lastEditedDate = '編輯時間'; -$lang->budget->basicInfo = '基本信息'; - -$lang->budget->summaryReport = '彙總表'; -$lang->budget->confirmDelete = '您確定要刪除嗎?'; diff --git a/module/budget/model.php b/module/budget/model.php deleted file mode 100644 index 527bf63ac6..0000000000 --- a/module/budget/model.php +++ /dev/null @@ -1,268 +0,0 @@ - - * @package budget - * @version $Id: model.php 5079 2013-07-10 00:44:34Z chencongzhi520@gmail.com $ - * @link http://www.zentao.net - */ -?> -loadModel('tree')->getOptionMenu(0, $viewType = 'subject', $startModuleID = 0); - $subjectList = $this->dao->select('*')->from(TABLE_MODULE)->where('id')->in(array_keys($subjects))->fetchAll(); - - foreach($subjectList as $subject) - { - if(isset($subjects[$subject->parent])) unset($subjects[$subject->parent]); - if($subject->grade > 2) unset($subjects[$subject->id]); - } - - return $subjects; - } - - /** - * Get budget by id. - * - * @param int $budgetID - * @access public - * @return array - */ - public function getByID($budgetID) - { - $budget = $this->dao->select('*')->from(TABLE_BUDGET)->where('id')->eq($budgetID)->fetch(); - $budget = $this->loadModel('file')->replaceImgURL($budget, 'desc'); - - return $budget; - } - - /** - * Get budget list. - * - * @param int $projectID - * @param string $orderBy - * @param object $pager - * @access public - * @return object - */ - public function getList($projectID, $orderBy = 'id_desc', $pager = null) - { - return $this->dao->select('*')->from(TABLE_BUDGET)->where('PRJ')->eq($projectID)->andWhere('deleted')->eq(0)->orderBy($orderBy)->page($pager)->fetchAll(); - } - - /** - * Get stages. - * - * @param int $projectID - * @access public - * @return array - */ - public function getStages($projectID) - { - return $this->dao->select('stage')->from(TABLE_BUDGET)->where('PRJ')->eq($projectID)->andWhere('deleted')->eq(0)->orderBy('stage_asc')->fetchPairs(); - } - - /** - * Get subjects. - * - * @param int $projectID - * @access public - * @return array - */ - public function getSubjectPairs($projectID) - { - return $this->dao->select('subject')->from(TABLE_BUDGET)->where('PRJ')->eq($projectID)->andWhere('deleted')->eq(0)->orderBy('subject_asc')->fetchPairs(); - } - - /** - * Get subject structure. - * - * @access public - * @return array - */ - public function getSubjectStructure() - { - $this->loadModel('tree'); - - $structure = array(); - $subjectPairs = $this->getSubjectPairs($this->session->PRJ); - $subjects = $this->dao->select('*')->from(TABLE_MODULE)->where('id')->in($subjectPairs)->fetchAll('id'); - - foreach($subjects as $subject) - { - if($subject->grade == 1) - { - $structure[$subject->id][] = $subject->id; - continue; - } - - $structure[$subject->parent][] = $subject->id; - } - - return $structure; - } - - /** - * Check if has sub-subjects. - * - * @param array $subjects - * @access public - * @return bool - */ - public function checkSubSubject($subjects) - { - foreach($subjects as $id => $subject) - { - if(count($subject) > 1 || $id != $subject[0]) return true; - } - - return false; - } - - /** - * Get summary. - * - * @param int $projectID - * @param array $subjects - * @access public - * @return array - */ - public function getSummary($projectID, $subjects) - { - $budgets = $this->dao->select('*')->from(TABLE_BUDGET)->where('PRJ')->eq($projectID)->andWhere('deleted')->eq(0)->fetchAll(); - $stages = $this->getStages($this->session->PRJ); - - /* Assign each subject to a stage. */ - $summary['stages'] = array(); - $summary['subjects'] = array(); - foreach($stages as $stageID) - { - foreach($subjects as $subject) - { - foreach($subject as $children) - { - $summary['stages'][$stageID][$children] = 0; - $summary['subjects'][$children] = 0; - } - } - } - - /* Count the costs incurred by a stage corresponding to a subject. */ - foreach($budgets as $budget) - { - $summary['stages'][$budget->stage][$budget->subject] += $budget->amount; - $summary['subjects'][$budget->subject] += $budget->amount; - } - - return $summary; - } - - /** - * Create a budget. - * - * @access public - * @return int - */ - public function create() - { - $budget = fixer::input('post') - ->setDefault('createdBy', $this->app->user->account) - ->setDefault('createdDate', helper::today()) - ->setDefault('PRJ', $this->session->PRJ) - ->cleanFloat('amount') - ->stripTags($this->config->budget->editor->create['id'], $this->config->allowedTags) - ->remove('uid') - ->get(); - - $this->dao->insert(TABLE_BUDGET)->data($budget) - ->autoCheck() - ->batchCheck($this->config->budget->create->requiredFields, 'notempty') - ->exec(); - - $budgetID = $this->dao->lastInsertID(); - return $budgetID; - } - - /** - * Batch create budgets. - * - * @access public - * @return bool - */ - public function batchCreate() - { - $today = helper::today(); - $budgets = fixer::input('post')->get(); - - foreach($budgets->name as $i => $name) - { - if(!$name) continue; - $data = new stdclass(); - $data->name = $name; - $data->PRJ = $this->session->PRJ; - $data->stage = $budgets->stage[$i]; - $data->subject = $budgets->subject[$i]; - $data->amount = (float)$budgets->amount[$i]; - $data->desc = nl2br($budgets->desc[$i]); - $data->createdBy = $this->app->user->account; - $data->createdDate = $today; - - foreach(explode(',', $this->config->budget->create->requiredFields) as $field) - { - $field = trim($field); - if($field and empty($data->$field)) - { - dao::$errors['message'][] = sprintf($this->lang->error->notempty, $this->lang->budget->$field); - return false; - } - } - - - $this->dao->insert(TABLE_BUDGET)->data($data)->autoCheck()->exec(); - - $budgetID = $this->dao->lastInsertID(); - $this->loadModel('action')->create('budget', $budgetID, 'Opened'); - } - - return !dao::isError(); - } - - /** - * Update a budget. - * - * @param int $budgetID - * @access public - * @return array - */ - public function update($budgetID) - { - $oldBudget = $this->getByID($budgetID); - $budget = fixer::input('post') - ->setDefault('lastEditedBy', $this->app->user->account) - ->setDefault('lastEditedDate', helper::today()) - ->cleanFloat('amount') - ->stripTags($this->config->budget->editor->edit['id'], $this->config->allowedTags) - ->remove('uid') - ->get(); - - $this->dao->update(TABLE_BUDGET)->data($budget) - ->where('id')->eq($budgetID) - ->autoCheck() - ->batchCheck($this->config->budget->create->requiredFields, 'notempty') - ->exec(); - - if(!dao::isError()) return common::createChanges($oldBudget, $budget); - } -} diff --git a/module/budget/view/batchcreate.html.php b/module/budget/view/batchcreate.html.php deleted file mode 100644 index 9f9ab8230c..0000000000 --- a/module/budget/view/batchcreate.html.php +++ /dev/null @@ -1,56 +0,0 @@ - - * @package budget - * @version $Id: batchCreate.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $ - * @link http://www.zentao.net - */ -?> - - -
-
-
-

budget->batchCreate;?>

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
idAB;?>budget->stage;?> budget->subject;?> budget->name;?> budget->amount;?> budget->desc;?>
-
- - budget->{$project->budgetUnit};?> -
-
-
-
-
- diff --git a/module/budget/view/browse.html.php b/module/budget/view/browse.html.php deleted file mode 100644 index 697939f0d6..0000000000 --- a/module/budget/view/browse.html.php +++ /dev/null @@ -1,77 +0,0 @@ - - * @package budget - * @version $Id: browse.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $ - * @link http://www.zentao.net - */ -?> - - - -
-
- -
-

- noData;?> - - createLink('budget', 'create', ''), " " . $lang->budget->create, '', "class='btn btn-info'");?> - -

-
- -
- - recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";?> - - - - - - - - - - - - - - - - - - - - - - - - - - -
budget->id);?>budget->name);?>budget->stage);?>budget->subject);?>budget->amount);?>budget->createdBy);?>budget->createdDate);?>actions;?>
id);?>createLink('budget', 'view', "id=$budget->id"), $budget->name);?>stage);?>subject);?>amount;?>createdBy);?>createdDate;?> - id", $budget, 'list');?> - id", $budget, 'list', '', 'hiddenwin');?> -
- -
- -
-
- diff --git a/module/budget/view/create.html.php b/module/budget/view/create.html.php deleted file mode 100644 index c183291a05..0000000000 --- a/module/budget/view/create.html.php +++ /dev/null @@ -1,58 +0,0 @@ - - * @package budget - * @version $Id: create.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $ - * @link http://www.zentao.net - */ -?> - - -
-
-
-

budget->create . $lang->budget->common;?>

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
budget->stage;?>
budget->subject;?>
budget->amount;?> -
- - budget->{$project->budgetUnit};?> -
-
budget->name;?>
budget->desc;?>
-
-
-
- diff --git a/module/budget/view/edit.html.php b/module/budget/view/edit.html.php deleted file mode 100644 index 1d302352af..0000000000 --- a/module/budget/view/edit.html.php +++ /dev/null @@ -1,58 +0,0 @@ - - * @package budget - * @version $Id: edit.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $ - * @link http://www.zentao.net - */ -?> - - -
-
-
-

budget->edit . $lang->budget->common;?>

-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
budget->stage;?> stage, 'class="form-control chosen"');?>
budget->subject;?> subject, 'class="form-control chosen"');?>
budget->amount;?> -
- amount, 'class="form-control"');?> - budget->{$project->budgetUnit};?> -
-
budget->name;?> name, 'class="form-control"');?>
budget->desc;?> desc, 'class="form-control"');?>
-
-
-
- diff --git a/module/budget/view/summary.html.php b/module/budget/view/summary.html.php deleted file mode 100644 index f925de80cf..0000000000 --- a/module/budget/view/summary.html.php +++ /dev/null @@ -1,76 +0,0 @@ - - * @package budget - * @version $Id: summary.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $ - * @link http://www.zentao.net - */ -?> - - - -
-
- - - - - $subject):?> - - - - - - $subject):?> - - - - - - - $subject):?> - - - - - - - - - - - - - - - -
budget->subject . '/' . $lang->budget->stage;?>budget->summary;?>
budget->summary;?>
-
budget->total . ':' . array_sum($summary['subjects']) . $lang->budget->{$project->budgetUnit};?>
- -
-

- noData;?> -

-
- -
-
- diff --git a/module/budget/view/view.html.php b/module/budget/view/view.html.php deleted file mode 100644 index 7a59b08659..0000000000 --- a/module/budget/view/view.html.php +++ /dev/null @@ -1,78 +0,0 @@ - - * @package budget - * @version $Id: view.html.php 4728 2013-05-03 06:14:34Z chencongzhi520@gmail.com $ - * @link http://www.zentao.net - */ -?> - - - - -
-
-
-
-
budget->desc;?>
-
- desc;?> -
-
-
-
-
-
-
-
-
budget->basicInfo;?>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
budget->stage;?>stage);?>
budget->subject;?>subject);?>
budget->amount;?>amount;?>
budget->createdBy;?>createdBy);?>
budget->createdDate;?>createdDate;?>
budget->lastEditedBy;?>lastEditedBy);?>
budget->lastEditedDate;?>lastEditedDate;?>
-
-
-
-
- diff --git a/module/common/lang/de.php b/module/common/lang/de.php index 5eeed15559..44b70123bc 100644 --- a/module/common/lang/de.php +++ b/module/common/lang/de.php @@ -663,9 +663,6 @@ $lang->navGroup->deploy = 'project'; $lang->navGroup->stakeholder = 'project'; $lang->navGroup->projectstory = 'project'; -$lang->navGroup->programplan = 'project'; -$lang->navGroup->workestimation = 'project'; -$lang->navGroup->budget = 'project'; $lang->navGroup->review = 'project'; $lang->navGroup->reviewissue = 'project'; $lang->navGroup->milestone = 'project'; @@ -934,9 +931,6 @@ $lang->scrum->setMenu->members = array('link' => 'Member|program|PRJManageMemb $lang->scrum->setMenu->whitelist = array('link' => 'White List|program|PRJWhitelist|project={PROJECT}', 'subModule' => 'personnel'); $lang->waterfallproduct = new stdclass(); -$lang->workestimation = new stdclass(); -$lang->budget = new stdclass(); -$lang->programplan = new stdclass(); $lang->review = new stdclass(); $lang->milestone = new stdclass(); $lang->design = new stdclass(); @@ -947,9 +941,6 @@ $lang->pssp = new stdclass(); $lang->stakeholder = new stdclass(); $lang->projectstory = new stdclass(); -$lang->workestimation->menu = new stdclass(); -$lang->budget->menu = new stdclass(); -$lang->programplan->menu = new stdclass(); $lang->review->menu = new stdclass(); $lang->milestone->menu = new stdclass(); $lang->design->menu = new stdclass(); @@ -960,17 +951,9 @@ $lang->stakeholder->menu = new stdclass(); $lang->waterfallproduct->menu = new stdclass(); $lang->projectstory->menu = new stdclass(); -$lang->workestimation->menu->workestimation = 'Work Estimation|workestimation|index|project={PROJECT}'; -$lang->workestimation->menu->budget = array('link' => 'Budget|budget|summary|', 'subModule' => 'budget'); - -$lang->budget->menu = $lang->workestimation->menu; - $lang->stakeholder->menu->list = array('link' => 'Stakeholder List|stakeholder|browse|', 'alias' => 'create,edit,view,batchcreate'); $lang->stakeholder->menu->issue = array('link' => 'Issue|stakeholder|issue|'); -$lang->programplan->menu->gantt = array('link' => 'Gantt|programplan|browse|programID={PROJECT}&productID={PRODUCT}&type=gantt'); -$lang->programplan->menu->lists = array('link' => 'Stage|programplan|browse|programID={PROJECT}&productID={PRODUCT}&type=lists', 'alias' => 'create'); - $lang->design->menu->all = array('link' => 'All|design|browse|productID={PRODUCT}&browseType=all'); $lang->design->menu->hlds = array('link' => 'HLDS|design|browse|productID={PRODUCT}&browseType=HLDS'); $lang->design->menu->dds = array('link' => 'DDS|design|browse|productID={PRODUCT}&browseType=DDS'); diff --git a/module/common/lang/en.php b/module/common/lang/en.php index a0785018aa..1f56365068 100644 --- a/module/common/lang/en.php +++ b/module/common/lang/en.php @@ -663,9 +663,6 @@ $lang->navGroup->deploy = 'project'; $lang->navGroup->stakeholder = 'project'; $lang->navGroup->projectstory = 'project'; -$lang->navGroup->programplan = 'project'; -$lang->navGroup->workestimation = 'project'; -$lang->navGroup->budget = 'project'; $lang->navGroup->review = 'project'; $lang->navGroup->reviewissue = 'project'; $lang->navGroup->milestone = 'project'; @@ -934,9 +931,6 @@ $lang->scrum->setMenu->members = array('link' => 'Member|program|PRJManageMemb $lang->scrum->setMenu->whitelist = array('link' => 'White List|program|PRJWhitelist|project={PROJECT}', 'subModule' => 'personnel'); $lang->waterfallproduct = new stdclass(); -$lang->workestimation = new stdclass(); -$lang->budget = new stdclass(); -$lang->programplan = new stdclass(); $lang->review = new stdclass(); $lang->milestone = new stdclass(); $lang->design = new stdclass(); @@ -947,9 +941,6 @@ $lang->pssp = new stdclass(); $lang->stakeholder = new stdclass(); $lang->projectstory = new stdclass(); -$lang->workestimation->menu = new stdclass(); -$lang->budget->menu = new stdclass(); -$lang->programplan->menu = new stdclass(); $lang->review->menu = new stdclass(); $lang->milestone->menu = new stdclass(); $lang->design->menu = new stdclass(); @@ -960,17 +951,9 @@ $lang->stakeholder->menu = new stdclass(); $lang->waterfallproduct->menu = new stdclass(); $lang->projectstory->menu = new stdclass(); -$lang->workestimation->menu->workestimation = 'Work Estimation|workestimation|index|project={PROJECT}'; -$lang->workestimation->menu->budget = array('link' => 'Budget|budget|summary|', 'subModule' => 'budget'); - -$lang->budget->menu = $lang->workestimation->menu; - $lang->stakeholder->menu->list = array('link' => 'Stakeholder List|stakeholder|browse|', 'alias' => 'create,edit,view,batchcreate'); $lang->stakeholder->menu->issue = array('link' => 'Issue|stakeholder|issue|'); -$lang->programplan->menu->gantt = array('link' => 'Gantt|programplan|browse|programID={PROJECT}&productID={PRODUCT}&type=gantt'); -$lang->programplan->menu->lists = array('link' => 'Stage|programplan|browse|programID={PROJECT}&productID={PRODUCT}&type=lists', 'alias' => 'create'); - $lang->design->menu->all = array('link' => 'All|design|browse|productID={PRODUCT}&browseType=all'); $lang->design->menu->hlds = array('link' => 'HLDS|design|browse|productID={PRODUCT}&browseType=HLDS'); $lang->design->menu->dds = array('link' => 'DDS|design|browse|productID={PRODUCT}&browseType=DDS'); diff --git a/module/common/lang/fr.php b/module/common/lang/fr.php index 2f78bd8ca5..da1c15a85c 100644 --- a/module/common/lang/fr.php +++ b/module/common/lang/fr.php @@ -663,9 +663,6 @@ $lang->navGroup->deploy = 'project'; $lang->navGroup->stakeholder = 'project'; $lang->navGroup->projectstory = 'project'; -$lang->navGroup->programplan = 'project'; -$lang->navGroup->workestimation = 'project'; -$lang->navGroup->budget = 'project'; $lang->navGroup->review = 'project'; $lang->navGroup->reviewissue = 'project'; $lang->navGroup->milestone = 'project'; @@ -934,9 +931,6 @@ $lang->scrum->setMenu->members = array('link' => 'Member|program|PRJManageMemb $lang->scrum->setMenu->whitelist = array('link' => 'White List|program|PRJWhitelist|project={PROJECT}', 'subModule' => 'personnel'); $lang->waterfallproduct = new stdclass(); -$lang->workestimation = new stdclass(); -$lang->budget = new stdclass(); -$lang->programplan = new stdclass(); $lang->review = new stdclass(); $lang->milestone = new stdclass(); $lang->design = new stdclass(); @@ -947,9 +941,6 @@ $lang->pssp = new stdclass(); $lang->stakeholder = new stdclass(); $lang->projectstory = new stdclass(); -$lang->workestimation->menu = new stdclass(); -$lang->budget->menu = new stdclass(); -$lang->programplan->menu = new stdclass(); $lang->review->menu = new stdclass(); $lang->milestone->menu = new stdclass(); $lang->design->menu = new stdclass(); @@ -960,17 +951,9 @@ $lang->stakeholder->menu = new stdclass(); $lang->waterfallproduct->menu = new stdclass(); $lang->projectstory->menu = new stdclass(); -$lang->workestimation->menu->workestimation = 'Work Estimation|workestimation|index|project={PROJECT}'; -$lang->workestimation->menu->budget = array('link' => 'Budget|budget|summary|', 'subModule' => 'budget'); - -$lang->budget->menu = $lang->workestimation->menu; - $lang->stakeholder->menu->list = array('link' => 'Stakeholder List|stakeholder|browse|', 'alias' => 'create,edit,view,batchcreate'); $lang->stakeholder->menu->issue = array('link' => 'Issue|stakeholder|issue|'); -$lang->programplan->menu->gantt = array('link' => 'Gantt|programplan|browse|programID={PROJECT}&productID={PRODUCT}&type=gantt'); -$lang->programplan->menu->lists = array('link' => 'Stage|programplan|browse|programID={PROJECT}&productID={PRODUCT}&type=lists', 'alias' => 'create'); - $lang->design->menu->all = array('link' => 'All|design|browse|productID={PRODUCT}&browseType=all'); $lang->design->menu->hlds = array('link' => 'HLDS|design|browse|productID={PRODUCT}&browseType=HLDS'); $lang->design->menu->dds = array('link' => 'DDS|design|browse|productID={PRODUCT}&browseType=DDS'); diff --git a/module/common/lang/menuOrder.php b/module/common/lang/menuOrder.php index 88ddd327d5..d5a9bbc83b 100644 --- a/module/common/lang/menuOrder.php +++ b/module/common/lang/menuOrder.php @@ -11,20 +11,6 @@ $lang->mainNav->menuOrder[70] = 'admin'; if($config->systemMode == 'new') $lang->mainNav->menuOrder[10] = 'program'; /* Sort of main menu. */ -$lang->waterfall->menuOrder[5] = 'programindex'; -$lang->waterfall->menuOrder[10] = 'programplan'; -$lang->waterfall->menuOrder[15] = 'project'; -$lang->waterfall->menuOrder[20] = 'projectstory'; -$lang->waterfall->menuOrder[25] = 'design'; -$lang->waterfall->menuOrder[30] = 'ci'; -$lang->waterfall->menuOrder[35] = 'track'; -$lang->waterfall->menuOrder[40] = 'qa'; -$lang->waterfall->menuOrder[45] = 'doc'; -$lang->waterfall->menuOrder[50] = 'projectbuild'; -$lang->waterfall->menuOrder[55] = 'projectrelease'; -$lang->waterfall->menuOrder[65] = 'other'; -$lang->waterfall->menuOrder[70] = 'projectsetting'; - $lang->scrum->menuOrder[5] = 'programindex'; $lang->scrum->menuOrder[10] = 'project'; $lang->scrum->menuOrder[15] = 'projectstory'; diff --git a/module/common/lang/vi.php b/module/common/lang/vi.php index 61b62b204b..12173d76f2 100644 --- a/module/common/lang/vi.php +++ b/module/common/lang/vi.php @@ -663,9 +663,6 @@ $lang->navGroup->deploy = 'project'; $lang->navGroup->stakeholder = 'project'; $lang->navGroup->projectstory = 'project'; -$lang->navGroup->programplan = 'project'; -$lang->navGroup->workestimation = 'project'; -$lang->navGroup->budget = 'project'; $lang->navGroup->review = 'project'; $lang->navGroup->reviewissue = 'project'; $lang->navGroup->milestone = 'project'; @@ -933,9 +930,6 @@ $lang->scrum->setMenu->members = array('link' => 'Member|program|PRJManageMemb $lang->scrum->setMenu->whitelist = array('link' => 'White List|program|PRJWhitelist|project={PROJECT}', 'subModule' => 'personnel'); $lang->waterfallproduct = new stdclass(); -$lang->workestimation = new stdclass(); -$lang->budget = new stdclass(); -$lang->programplan = new stdclass(); $lang->review = new stdclass(); $lang->milestone = new stdclass(); $lang->design = new stdclass(); @@ -946,9 +940,6 @@ $lang->pssp = new stdclass(); $lang->stakeholder = new stdclass(); $lang->projectstory = new stdclass(); -$lang->workestimation->menu = new stdclass(); -$lang->budget->menu = new stdclass(); -$lang->programplan->menu = new stdclass(); $lang->review->menu = new stdclass(); $lang->milestone->menu = new stdclass(); $lang->design->menu = new stdclass(); @@ -959,17 +950,9 @@ $lang->stakeholder->menu = new stdclass(); $lang->waterfallproduct->menu = new stdclass(); $lang->projectstory->menu = new stdclass(); -$lang->workestimation->menu->workestimation = 'Work Estimation|workestimation|index|project={PROJECT}'; -$lang->workestimation->menu->budget = array('link' => 'Budget|budget|summary|', 'subModule' => 'budget'); - -$lang->budget->menu = $lang->workestimation->menu; - $lang->stakeholder->menu->list = array('link' => 'Stakeholder List|stakeholder|browse|', 'alias' => 'create,edit,view,batchcreate'); $lang->stakeholder->menu->issue = array('link' => 'Issue|stakeholder|issue|'); -$lang->programplan->menu->gantt = array('link' => 'Gantt|programplan|browse|programID={PROJECT}&productID={PRODUCT}&type=gantt'); -$lang->programplan->menu->lists = array('link' => 'Stage|programplan|browse|programID={PROJECT}&productID={PRODUCT}&type=lists', 'alias' => 'create'); - $lang->design->menu->all = array('link' => 'All|design|browse|productID={PRODUCT}&browseType=all'); $lang->design->menu->hlds = array('link' => 'HLDS|design|browse|productID={PRODUCT}&browseType=HLDS'); $lang->design->menu->dds = array('link' => 'DDS|design|browse|productID={PRODUCT}&browseType=DDS'); diff --git a/module/common/lang/zh-cn.php b/module/common/lang/zh-cn.php index 0bedde05ed..c3be2d5491 100644 --- a/module/common/lang/zh-cn.php +++ b/module/common/lang/zh-cn.php @@ -661,9 +661,6 @@ $lang->navGroup->deploy = 'project'; $lang->navGroup->stakeholder = 'project'; $lang->navGroup->projectstory = 'project'; -$lang->navGroup->programplan = 'project'; -$lang->navGroup->workestimation = 'project'; -$lang->navGroup->budget = 'project'; $lang->navGroup->review = 'project'; $lang->navGroup->reviewissue = 'project'; $lang->navGroup->milestone = 'project'; @@ -932,9 +929,6 @@ $lang->scrum->setMenu->members = array('link' => '团队|program|PRJManag $lang->scrum->setMenu->whitelist = array('link' => '白名单|program|PRJWhitelist|project={PROJECT}', 'subModule' => 'personnel'); $lang->waterfallproduct = new stdclass(); -$lang->workestimation = new stdclass(); -$lang->budget = new stdclass(); -$lang->programplan = new stdclass(); $lang->review = new stdclass(); $lang->milestone = new stdclass(); $lang->design = new stdclass(); @@ -945,9 +939,6 @@ $lang->pssp = new stdclass(); $lang->stakeholder = new stdclass(); $lang->projectstory = new stdclass(); -$lang->workestimation->menu = new stdclass(); -$lang->budget->menu = new stdclass(); -$lang->programplan->menu = new stdclass(); $lang->review->menu = new stdclass(); $lang->milestone->menu = new stdclass(); $lang->design->menu = new stdclass(); @@ -958,17 +949,9 @@ $lang->stakeholder->menu = new stdclass(); $lang->waterfallproduct->menu = new stdclass(); $lang->projectstory->menu = new stdclass(); -$lang->workestimation->menu->workestimation = '工作量估算|workestimation|index|project={PROJECT}'; -$lang->workestimation->menu->budget = array('link' => '费用估算|budget|summary|', 'subModule' => 'budget'); - -$lang->budget->menu = $lang->workestimation->menu; - $lang->stakeholder->menu->list = array('link' => '干系人列表|stakeholder|browse|', 'alias' => 'create,edit,view,batchcreate'); $lang->stakeholder->menu->issue = array('link' => '问题管理|stakeholder|issue|'); -$lang->programplan->menu->gantt = array('link' => '甘特图|programplan|browse|programID={PROJECT}&productID={PRODUCT}&type=gantt'); -$lang->programplan->menu->lists = array('link' => '阶段列表|programplan|browse|programID={PROJECT}&productID={PRODUCT}&type=lists', 'alias' => 'create'); - $lang->design->menu->all = array('link' => '所有|design|browse|productID={PRODUCT}&browseType=all'); $lang->design->menu->hlds = array('link' => '概要设计|design|browse|productID={PRODUCT}&browseType=HLDS'); $lang->design->menu->dds = array('link' => '详细设计|design|browse|productID={PRODUCT}&browseType=DDS'); diff --git a/module/custom/lang/zh-cn.php b/module/custom/lang/zh-cn.php index 2896c87b1c..d364ee1ac9 100644 --- a/module/custom/lang/zh-cn.php +++ b/module/custom/lang/zh-cn.php @@ -40,7 +40,7 @@ $lang->custom->setStoryConcept = "设置需求概念"; $lang->custom->setDefaultConcept = "设置默认概念"; $lang->custom->browseStoryConcept = "需求概念列表"; $lang->custom->deleteStoryConcept = "删除需求概念"; -$lang->custom->configureScrum = "敏捷模型自定义"; +$lang->custom->configureScrum = "项目概念"; $lang->custom->URConcept = "用需概念"; $lang->custom->SRConcept = "软需概念"; $lang->custom->oneUnit = "一个{$lang->hourCommon}"; diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php index 5839172e4d..1b8e6bde19 100644 --- a/module/group/lang/resource.php +++ b/module/group/lang/resource.php @@ -61,8 +61,6 @@ $lang->moduleOrder[195] = 'cron'; $lang->moduleOrder[200] = 'dev'; $lang->moduleOrder[205] = 'message'; $lang->moduleOrder[210] = 'design'; -$lang->moduleOrder[215] = 'programplan'; -$lang->moduleOrder[235] = 'budget'; $lang->resource = new stdclass(); @@ -157,136 +155,160 @@ $lang->todo->methodOrder[70] = 'activate'; $lang->todo->methodOrder[75] = 'close'; $lang->todo->methodOrder[80] = 'batchClose'; -/* Program. */ -$lang->resource->program = new stdclass(); -$lang->resource->program->createGuide = 'createGuide'; -//$lang->resource->program->PGMIndex = 'PGMIndex'; -$lang->resource->program->PGMBrowse = 'PGMBrowse'; -$lang->resource->program->PGMProduct = 'PGMProduct'; -$lang->resource->program->PGMCreate = 'PGMCreate'; -$lang->resource->program->PGMEdit = 'PGMEdit'; -$lang->resource->program->PGMStart = 'PGMStart'; -$lang->resource->program->PGMSuspend = 'PGMSuspend'; -$lang->resource->program->PGMActivate = 'PGMActivate'; -$lang->resource->program->PGMClose = 'PGMClose'; -$lang->resource->program->PGMDelete = 'PGMDelete'; -$lang->resource->program->PGMProject = 'PGMProject'; -$lang->resource->program->PGMStakeholder = 'PGMStakeholder'; -$lang->resource->program->createStakeholder = 'createStakeholder'; -$lang->resource->program->unlinkStakeholder = 'unlinkStakeholder'; -$lang->resource->program->batchUnlinkStakeholders = 'batchUnlinkStakeholders'; -$lang->resource->program->export = 'export'; -$lang->resource->program->index = 'PRJIndex'; -$lang->resource->program->PRJBrowse = 'PRJBrowse'; -$lang->resource->program->PRJProgramTitle = 'PRJModuleOpen'; -$lang->resource->program->PRJCreate = 'PRJCreate'; -$lang->resource->program->PRJEdit = 'PRJEdit'; -$lang->resource->program->PRJBatchEdit = 'PRJBatchEdit'; -$lang->resource->program->PRJGroup = 'PRJGroup'; -$lang->resource->program->PRJCreateGroup = 'PRJCreateGroup'; -$lang->resource->program->PRJManageView = 'PRJManageView'; -$lang->resource->program->PRJManagePriv = 'PRJManagePriv'; -$lang->resource->program->PRJManageMembers = 'PRJManageMembers'; -$lang->resource->program->PRJManageGroupMember = 'PRJManageGroupMember'; -$lang->resource->program->PRJCopyGroup = 'PRJCopyGroup'; -$lang->resource->program->PRJEditGroup = 'PRJEditGroup'; -$lang->resource->program->PRJStart = 'PRJStart'; -$lang->resource->program->PRJSuspend = 'PRJSuspend'; -$lang->resource->program->PRJClose = 'PRJClose'; -$lang->resource->program->PRJActivate = 'PRJActivate'; -$lang->resource->program->PRJDelete = 'PRJDelete'; -$lang->resource->program->PRJView = 'PRJView'; -$lang->resource->program->PRJWhitelist = 'PRJWhitelist'; -$lang->resource->program->PRJAddWhitelist = 'PRJAddWhitelist'; -$lang->resource->program->unbindWhielist = 'unbindWhielist'; -$lang->resource->program->PRJManageProducts = 'PRJManageProducts'; -$lang->resource->program->view = 'view'; +global $config; +if($config->systemMode == 'new') +{ + /* Program. */ + $lang->resource->program = new stdclass(); + $lang->resource->program->createGuide = 'createGuide'; + //$lang->resource->program->PGMIndex = 'PGMIndex'; + $lang->resource->program->PGMBrowse = 'PGMBrowse'; + $lang->resource->program->PGMProduct = 'PGMProduct'; + $lang->resource->program->PGMCreate = 'PGMCreate'; + $lang->resource->program->PGMEdit = 'PGMEdit'; + $lang->resource->program->PGMStart = 'PGMStart'; + $lang->resource->program->PGMSuspend = 'PGMSuspend'; + $lang->resource->program->PGMActivate = 'PGMActivate'; + $lang->resource->program->PGMClose = 'PGMClose'; + $lang->resource->program->PGMDelete = 'PGMDelete'; + $lang->resource->program->PGMProject = 'PGMProject'; + $lang->resource->program->PGMStakeholder = 'PGMStakeholder'; + $lang->resource->program->createStakeholder = 'createStakeholder'; + $lang->resource->program->unlinkStakeholder = 'unlinkStakeholder'; + $lang->resource->program->batchUnlinkStakeholders = 'batchUnlinkStakeholders'; + $lang->resource->program->export = 'export'; + $lang->resource->program->index = 'PRJIndex'; + $lang->resource->program->PRJBrowse = 'PRJBrowse'; + $lang->resource->program->PRJProgramTitle = 'PRJModuleOpen'; + $lang->resource->program->PRJCreate = 'PRJCreate'; + $lang->resource->program->PRJEdit = 'PRJEdit'; + $lang->resource->program->PRJBatchEdit = 'PRJBatchEdit'; + $lang->resource->program->PRJGroup = 'PRJGroup'; + $lang->resource->program->PRJCreateGroup = 'PRJCreateGroup'; + $lang->resource->program->PRJManageView = 'PRJManageView'; + $lang->resource->program->PRJManagePriv = 'PRJManagePriv'; + $lang->resource->program->PRJManageMembers = 'PRJManageMembers'; + $lang->resource->program->PRJManageGroupMember = 'PRJManageGroupMember'; + $lang->resource->program->PRJCopyGroup = 'PRJCopyGroup'; + $lang->resource->program->PRJEditGroup = 'PRJEditGroup'; + $lang->resource->program->PRJStart = 'PRJStart'; + $lang->resource->program->PRJSuspend = 'PRJSuspend'; + $lang->resource->program->PRJClose = 'PRJClose'; + $lang->resource->program->PRJActivate = 'PRJActivate'; + $lang->resource->program->PRJDelete = 'PRJDelete'; + $lang->resource->program->PRJView = 'PRJView'; + $lang->resource->program->PRJWhitelist = 'PRJWhitelist'; + $lang->resource->program->PRJAddWhitelist = 'PRJAddWhitelist'; + $lang->resource->program->unbindWhielist = 'unbindWhielist'; + $lang->resource->program->PRJManageProducts = 'PRJManageProducts'; + $lang->resource->program->view = 'view'; -$lang->program->methodOrder[0] = 'createGuide'; -//$lang->program->methodOrder[5] = 'PGMIndex'; -$lang->program->methodOrder[10] = 'PGMBrowse'; -$lang->program->methodOrder[15] = 'PGMProduct'; -$lang->program->methodOrder[20] = 'PGMCreate'; -$lang->program->methodOrder[25] = 'PGMEdit'; -$lang->program->methodOrder[30] = 'PGMStart'; -$lang->program->methodOrder[35] = 'PGMSuspend'; -$lang->program->methodOrder[40] = 'PGMClose'; -$lang->program->methodOrder[45] = 'PGMActivate'; -$lang->program->methodOrder[55] = 'PGMDelete'; -$lang->program->methodOrder[60] = 'PGMProject'; -$lang->program->methodOrder[65] = 'PGMStakeholder'; -$lang->program->methodOrder[67] = 'createStakeholder'; -$lang->program->methodOrder[70] = 'unlinkStakeholder'; -$lang->program->methodOrder[75] = 'batchUnlinkStakeholders'; -$lang->program->methodOrder[80] = 'export'; -$lang->program->methodOrder[85] = 'PRJIndex'; -$lang->program->methodOrder[90] = 'PRJBrowse'; -$lang->program->methodOrder[95] = 'PRJProgramTitle'; -$lang->program->methodOrder[100] = 'PRJCreate'; -$lang->program->methodOrder[105] = 'PRJEdit'; -$lang->program->methodOrder[106] = 'PRJBatchEdit'; -$lang->program->methodOrder[110] = 'PRJGroup'; -$lang->program->methodOrder[115] = 'PRJCreateGroup'; -$lang->program->methodOrder[120] = 'PRJManageView'; -$lang->program->methodOrder[125] = 'PRJManagePriv'; -$lang->program->methodOrder[130] = 'PRJManageMembers'; -$lang->program->methodOrder[135] = 'PRJManageGroupMember'; -$lang->program->methodOrder[140] = 'PRJCopyGroup'; -$lang->program->methodOrder[145] = 'PRJEditGroup'; -$lang->program->methodOrder[150] = 'PRJStart'; -$lang->program->methodOrder[155] = 'PRJSuspend'; -$lang->program->methodOrder[160] = 'PRJClose'; -$lang->program->methodOrder[165] = 'PRJActivate'; -$lang->program->methodOrder[170] = 'PRJUpdateOrder'; -$lang->program->methodOrder[175] = 'PRJDelete'; -$lang->program->methodOrder[180] = 'PRJView'; -$lang->program->methodOrder[185] = 'PRJWhitelist'; -$lang->program->methodOrder[190] = 'PRJAddWhitelist'; -$lang->program->methodOrder[195] = 'unbindWhielist'; -$lang->program->methodOrder[200] = 'PRJManageProducts'; -$lang->program->methodOrder[205] = 'view'; + $lang->program->methodOrder[0] = 'createGuide'; + //$lang->program->methodOrder[5] = 'PGMIndex'; + $lang->program->methodOrder[10] = 'PGMBrowse'; + $lang->program->methodOrder[15] = 'PGMProduct'; + $lang->program->methodOrder[20] = 'PGMCreate'; + $lang->program->methodOrder[25] = 'PGMEdit'; + $lang->program->methodOrder[30] = 'PGMStart'; + $lang->program->methodOrder[35] = 'PGMSuspend'; + $lang->program->methodOrder[40] = 'PGMClose'; + $lang->program->methodOrder[45] = 'PGMActivate'; + $lang->program->methodOrder[55] = 'PGMDelete'; + $lang->program->methodOrder[60] = 'PGMProject'; + $lang->program->methodOrder[65] = 'PGMStakeholder'; + $lang->program->methodOrder[67] = 'createStakeholder'; + $lang->program->methodOrder[70] = 'unlinkStakeholder'; + $lang->program->methodOrder[75] = 'batchUnlinkStakeholders'; + $lang->program->methodOrder[80] = 'export'; + $lang->program->methodOrder[85] = 'PRJIndex'; + $lang->program->methodOrder[90] = 'PRJBrowse'; + $lang->program->methodOrder[95] = 'PRJProgramTitle'; + $lang->program->methodOrder[100] = 'PRJCreate'; + $lang->program->methodOrder[105] = 'PRJEdit'; + $lang->program->methodOrder[106] = 'PRJBatchEdit'; + $lang->program->methodOrder[110] = 'PRJGroup'; + $lang->program->methodOrder[115] = 'PRJCreateGroup'; + $lang->program->methodOrder[120] = 'PRJManageView'; + $lang->program->methodOrder[125] = 'PRJManagePriv'; + $lang->program->methodOrder[130] = 'PRJManageMembers'; + $lang->program->methodOrder[135] = 'PRJManageGroupMember'; + $lang->program->methodOrder[140] = 'PRJCopyGroup'; + $lang->program->methodOrder[145] = 'PRJEditGroup'; + $lang->program->methodOrder[150] = 'PRJStart'; + $lang->program->methodOrder[155] = 'PRJSuspend'; + $lang->program->methodOrder[160] = 'PRJClose'; + $lang->program->methodOrder[165] = 'PRJActivate'; + $lang->program->methodOrder[170] = 'PRJUpdateOrder'; + $lang->program->methodOrder[175] = 'PRJDelete'; + $lang->program->methodOrder[180] = 'PRJView'; + $lang->program->methodOrder[185] = 'PRJWhitelist'; + $lang->program->methodOrder[190] = 'PRJAddWhitelist'; + $lang->program->methodOrder[195] = 'unbindWhielist'; + $lang->program->methodOrder[200] = 'PRJManageProducts'; + $lang->program->methodOrder[205] = 'view'; -/* Personnel . */ -$lang->resource->personnel = new stdclass(); -$lang->resource->personnel->accessible = 'accessible'; -$lang->resource->personnel->putInto = 'putInto'; -$lang->resource->personnel->whitelist = 'whitelist'; -$lang->resource->personnel->addWhitelist = 'addWhitelist'; -$lang->resource->personnel->unbindWhielist = 'unbindWhielist'; + /* Personnel . */ + $lang->resource->personnel = new stdclass(); + $lang->resource->personnel->accessible = 'accessible'; + $lang->resource->personnel->putInto = 'putInto'; + $lang->resource->personnel->whitelist = 'whitelist'; + $lang->resource->personnel->addWhitelist = 'addWhitelist'; + $lang->resource->personnel->unbindWhielist = 'unbindWhielist'; -$lang->personnel->methodOrder[5] = 'accessible'; -$lang->personnel->methodOrder[10] = 'putInto'; -$lang->personnel->methodOrder[15] = 'whitelist'; -$lang->personnel->methodOrder[20] = 'addWhitelist'; -$lang->personnel->methodOrder[25] = 'unbindWhielist'; + $lang->personnel->methodOrder[5] = 'accessible'; + $lang->personnel->methodOrder[10] = 'putInto'; + $lang->personnel->methodOrder[15] = 'whitelist'; + $lang->personnel->methodOrder[20] = 'addWhitelist'; + $lang->personnel->methodOrder[25] = 'unbindWhielist'; -/* Issue . */ -$lang->resource->issue = new stdclass(); -$lang->resource->issue->browse = 'browse'; -$lang->resource->issue->create = 'create'; -$lang->resource->issue->batchCreate = 'batchCreate'; -$lang->resource->issue->delete = 'delete'; -$lang->resource->issue->edit = 'edit'; -$lang->resource->issue->confirm = 'confirm'; -$lang->resource->issue->assignTo = 'assignTo'; -$lang->resource->issue->close = 'close'; -$lang->resource->issue->cancel = 'cancel'; -$lang->resource->issue->activate = 'activate'; -$lang->resource->issue->resolve = 'resolve'; -$lang->resource->issue->view = 'view'; + /* Project Story. */ + $lang->resource->projectstory = new stdclass(); + $lang->resource->projectstory->story = 'story'; + $lang->resource->projectstory->track = 'track'; + $lang->resource->projectstory->view = 'view'; + $lang->resource->projectstory->linkStory = 'linkStory'; + $lang->resource->projectstory->unlinkStory = 'unlinkStory'; -$lang->issue->methodOrder[5] = 'browse'; -$lang->issue->methodOrder[10] = 'create'; -$lang->issue->methodOrder[15] = 'batchCreate'; -$lang->issue->methodOrder[20] = 'delete'; -$lang->issue->methodOrder[25] = 'edit'; -$lang->issue->methodOrder[30] = 'confirm'; -$lang->issue->methodOrder[35] = 'assignTo'; -$lang->issue->methodOrder[40] = 'close'; -$lang->issue->methodOrder[45] = 'cancel'; -$lang->issue->methodOrder[50] = 'activate'; -$lang->issue->methodOrder[55] = 'resolve'; -$lang->issue->methodOrder[60] = 'view'; + $lang->projectstory->methodOrder[5] = 'story'; + $lang->projectstory->methodOrder[10] = 'track'; + $lang->projectstory->methodOrder[15] = 'view'; + $lang->projectstory->methodOrder[20] = 'linkStory'; + $lang->projectstory->methodOrder[25] = 'unlinkStory'; + + /* Release. */ + $lang->resource->projectbuild = new stdclass(); + $lang->resource->projectbuild->browse = 'browse'; + + /* Release. */ + $lang->resource->projectrelease = new stdclass(); + $lang->resource->projectrelease->browse = 'browse'; + $lang->resource->projectrelease->create = 'create'; + $lang->resource->projectrelease->edit = 'edit'; + $lang->resource->projectrelease->delete = 'delete'; + $lang->resource->projectrelease->view = 'view'; + $lang->resource->projectrelease->export = 'export'; + $lang->resource->projectrelease->linkStory = 'linkStory'; + $lang->resource->projectrelease->unlinkStory = 'unlinkStory'; + $lang->resource->projectrelease->batchUnlinkStory = 'batchUnlinkStory'; + $lang->resource->projectrelease->linkBug = 'linkBug'; + $lang->resource->projectrelease->unlinkBug = 'unlinkBug'; + $lang->resource->projectrelease->batchUnlinkBug = 'batchUnlinkBug'; + $lang->resource->projectrelease->changeStatus = 'changeStatus'; + + $lang->projectrelease->methodOrder[5] = 'browse'; + $lang->projectrelease->methodOrder[10] = 'create'; + $lang->projectrelease->methodOrder[15] = 'edit'; + $lang->projectrelease->methodOrder[20] = 'delete'; + $lang->projectrelease->methodOrder[25] = 'view'; + $lang->projectrelease->methodOrder[35] = 'export'; + $lang->projectrelease->methodOrder[40] = 'linkStory'; + $lang->projectrelease->methodOrder[45] = 'unlinkStory'; + $lang->projectrelease->methodOrder[50] = 'batchUnlinkStory'; + $lang->projectrelease->methodOrder[55] = 'linkBug'; + $lang->projectrelease->methodOrder[60] = 'unlinkBug'; + $lang->projectrelease->methodOrder[65] = 'batchUnlinkBug'; + $lang->projectrelease->methodOrder[70] = 'changeStatus'; +} /* Product. */ $lang->resource->product = new stdclass(); @@ -467,20 +489,6 @@ $lang->productplan->methodOrder[50] = 'unlinkBug'; $lang->productplan->methodOrder[55] = 'batchUnlinkBug'; $lang->productplan->methodOrder[60] = 'batchEdit'; -/* Project Story. */ -$lang->resource->projectstory = new stdclass(); -$lang->resource->projectstory->story = 'story'; -$lang->resource->projectstory->track = 'track'; -$lang->resource->projectstory->view = 'view'; -$lang->resource->projectstory->linkStory = 'linkStory'; -$lang->resource->projectstory->unlinkStory = 'unlinkStory'; - -$lang->projectstory->methodOrder[5] = 'story'; -$lang->projectstory->methodOrder[10] = 'track'; -$lang->projectstory->methodOrder[15] = 'view'; -$lang->projectstory->methodOrder[20] = 'linkStory'; -$lang->projectstory->methodOrder[25] = 'unlinkStory'; - /* Release. */ $lang->resource->release = new stdclass(); $lang->resource->release->browse = 'browse'; @@ -511,40 +519,6 @@ $lang->release->methodOrder[60] = 'unlinkBug'; $lang->release->methodOrder[65] = 'batchUnlinkBug'; $lang->release->methodOrder[70] = 'changeStatus'; -/* Release. */ -$lang->resource->projectbuild = new stdclass(); -$lang->resource->projectbuild->browse = 'browse'; - -/* Release. */ -$lang->resource->projectrelease = new stdclass(); -$lang->resource->projectrelease->browse = 'browse'; -$lang->resource->projectrelease->create = 'create'; -$lang->resource->projectrelease->edit = 'edit'; -$lang->resource->projectrelease->delete = 'delete'; -$lang->resource->projectrelease->view = 'view'; -$lang->resource->projectrelease->export = 'export'; -$lang->resource->projectrelease->linkStory = 'linkStory'; -$lang->resource->projectrelease->unlinkStory = 'unlinkStory'; -$lang->resource->projectrelease->batchUnlinkStory = 'batchUnlinkStory'; -$lang->resource->projectrelease->linkBug = 'linkBug'; -$lang->resource->projectrelease->unlinkBug = 'unlinkBug'; -$lang->resource->projectrelease->batchUnlinkBug = 'batchUnlinkBug'; -$lang->resource->projectrelease->changeStatus = 'changeStatus'; - -$lang->projectrelease->methodOrder[5] = 'browse'; -$lang->projectrelease->methodOrder[10] = 'create'; -$lang->projectrelease->methodOrder[15] = 'edit'; -$lang->projectrelease->methodOrder[20] = 'delete'; -$lang->projectrelease->methodOrder[25] = 'view'; -$lang->projectrelease->methodOrder[35] = 'export'; -$lang->projectrelease->methodOrder[40] = 'linkStory'; -$lang->projectrelease->methodOrder[45] = 'unlinkStory'; -$lang->projectrelease->methodOrder[50] = 'batchUnlinkStory'; -$lang->projectrelease->methodOrder[55] = 'linkBug'; -$lang->projectrelease->methodOrder[60] = 'unlinkBug'; -$lang->projectrelease->methodOrder[65] = 'batchUnlinkBug'; -$lang->projectrelease->methodOrder[70] = 'changeStatus'; - /* Project. */ $lang->resource->project = new stdclass(); $lang->resource->project->index = 'index'; @@ -674,16 +648,6 @@ $lang->design->methodOrder[45] = 'viewCommit'; $lang->design->methodOrder[50] = 'unlinkCommit'; $lang->design->methodOrder[55] = 'revision'; -/* Program plan. */ -$lang->resource->programplan = new stdclass(); -$lang->resource->programplan->browse = 'browse'; -$lang->resource->programplan->create = 'create'; -$lang->resource->programplan->edit = 'edit'; - -$lang->programplan->methodOrder[5] = 'browse'; -$lang->programplan->methodOrder[10] = 'create'; -$lang->programplan->methodOrder[15] = 'edit'; - /* Task. */ $lang->resource->task = new stdclass(); $lang->resource->task->create = 'create'; @@ -1188,24 +1152,6 @@ $lang->company->methodOrder[5] = 'browse'; $lang->company->methodOrder[15] = 'edit'; $lang->company->methodOrder[25] = 'dynamic'; -/* Budget. */ -$lang->resource->budget = new stdclass(); -$lang->resource->budget->browse = 'browse'; -$lang->resource->budget->summary = 'summary'; -$lang->resource->budget->create = 'create'; -$lang->resource->budget->batchCreate = 'batchCreate'; -$lang->resource->budget->edit = 'edit'; -$lang->resource->budget->view = 'view'; -$lang->resource->budget->delete = 'delete'; - -$lang->budget->methodOrder[5] = 'browse'; -$lang->budget->methodOrder[10] = 'summary'; -$lang->budget->methodOrder[15] = 'create'; -$lang->budget->methodOrder[20] = 'batchCreate'; -$lang->budget->methodOrder[25] = 'edit'; -$lang->budget->methodOrder[30] = 'view'; -$lang->budget->methodOrder[35] = 'delete'; - /* Department. */ $lang->resource->dept = new stdclass(); $lang->resource->dept->browse = 'browse'; diff --git a/module/product/model.php b/module/product/model.php index 4f05e02c3f..7311e57233 100644 --- a/module/product/model.php +++ b/module/product/model.php @@ -963,7 +963,7 @@ class productModel extends model */ public function getExecutionPairsByProduct($productID, $branch = 0, $orderBy = 'id_asc', $projectID = 0) { - if($productID) return array(); + if(empty($productID)) return array(); if(empty($projectID)) return $this->getAllExecutionPairsByProduct($productID, $branch); $project = $this->loadModel('program')->getPRJByID($projectID); diff --git a/module/programplan/config.php b/module/programplan/config.php deleted file mode 100644 index 2710d95c98..0000000000 --- a/module/programplan/config.php +++ /dev/null @@ -1,54 +0,0 @@ -programplan->create = new stdclass(); -$config->programplan->edit = new stdclass(); -$config->programplan->create->requiredFields = 'name,begin,end'; -$config->programplan->edit->requiredFields = 'name,begin,end'; - -$config->programplan->datatable = new stdclass(); -$config->programplan->datatable->defaultField = array('id', 'name', 'percent', 'attribute', 'begin', 'end', 'realBegan', 'realEnd', 'actions'); - -$config->programplan->datatable->fieldList['id']['title'] = 'idAB'; -$config->programplan->datatable->fieldList['id']['fixed'] = 'left'; -$config->programplan->datatable->fieldList['id']['width'] = '70'; -$config->programplan->datatable->fieldList['id']['required'] = 'yes'; - -$config->programplan->datatable->fieldList['name']['title'] = 'name'; -$config->programplan->datatable->fieldList['name']['fixed'] = 'left'; -$config->programplan->datatable->fieldList['name']['width'] = 'auto'; -$config->programplan->datatable->fieldList['name']['required'] = 'yes'; - -$config->programplan->datatable->fieldList['percent']['title'] = 'percent'; -$config->programplan->datatable->fieldList['percent']['fixed'] = 'no'; -$config->programplan->datatable->fieldList['percent']['width'] = '100'; -$config->programplan->datatable->fieldList['percent']['required'] = 'no'; - -$config->programplan->datatable->fieldList['attribute']['title'] = 'attribute'; -$config->programplan->datatable->fieldList['attribute']['fixed'] = 'no'; -$config->programplan->datatable->fieldList['attribute']['width'] = '90'; -$config->programplan->datatable->fieldList['attribute']['required'] = 'no'; - -$config->programplan->datatable->fieldList['begin']['title'] = 'begin'; -$config->programplan->datatable->fieldList['begin']['fixed'] = 'no'; -$config->programplan->datatable->fieldList['begin']['width'] = '90'; -$config->programplan->datatable->fieldList['begin']['required'] = 'no'; - -$config->programplan->datatable->fieldList['end']['title'] = 'end'; -$config->programplan->datatable->fieldList['end']['fixed'] = 'no'; -$config->programplan->datatable->fieldList['end']['width'] = '90'; -$config->programplan->datatable->fieldList['end']['required'] = 'no'; - -$config->programplan->datatable->fieldList['realBegan']['title'] = 'realBegan'; -$config->programplan->datatable->fieldList['realBegan']['fixed'] = 'no'; -$config->programplan->datatable->fieldList['realBegan']['width'] = '90'; -$config->programplan->datatable->fieldList['realBegan']['required'] = 'no'; - -$config->programplan->datatable->fieldList['realEnd']['title'] = 'realEnd'; -$config->programplan->datatable->fieldList['realEnd']['fixed'] = 'no'; -$config->programplan->datatable->fieldList['realEnd']['width'] = '90'; -$config->programplan->datatable->fieldList['realEnd']['required'] = 'no'; - -$config->programplan->datatable->fieldList['actions']['title'] = 'actions'; -$config->programplan->datatable->fieldList['actions']['fixed'] = 'right'; -$config->programplan->datatable->fieldList['actions']['width'] = '150'; -$config->programplan->datatable->fieldList['actions']['required'] = 'yes'; -$config->programplan->datatable->fieldList['actions']['sort'] = 'no'; diff --git a/module/programplan/control.php b/module/programplan/control.php deleted file mode 100644 index c02c2e9fdf..0000000000 --- a/module/programplan/control.php +++ /dev/null @@ -1,196 +0,0 @@ - - * @package programplan - * @version $Id: control.php 5107 2013-07-12 01:46:12Z chencongzhi520@gmail.com $ - * @link http://www.zentao.net - */ -class programplan extends control -{ - /** - * __construct - * - * @param string $moduleName - * @param string $methodName - * @access public - * @return void - */ - public function __construct($moduleName = '', $methodName = '') - { - parent::__construct($moduleName, $methodName); - } - - /** - * Common action. - * - * @param int $projectID - * @param int $productID - * @param string $extra - * @access public - * @return void - */ - public function commonAction($projectID, $productID = 0, $extra = '') - { - $products = $this->loadModel('product')->getProductPairsByProject($projectID); - $productID = $this->product->saveState($productID, $products); - $this->productID = $productID; - $this->product->setMenu($products, $productID, 0, 0, '', $extra); - $this->programplan->setMenu($projectID, $productID); - } - - /** - * Browse program plans. - * - * @param int $projectID - * @param int $productID - * @param string $type - * @param string $orderBy - * @param int $baselineID - * @access public - * @return void - */ - public function browse($projectID = 0, $productID = 0, $type = 'gantt', $orderBy = 'id_asc', $baselineID = 0) - { - $this->app->loadLang('stage'); - $this->commonAction($projectID, $productID, $type); - $this->session->set('projectPlanList', $this->app->getURI(true)); - - if(common::hasPriv('programplan', 'create')) $this->lang->TRActions = html::a($this->createLink('programplan', 'create', "projectID=$projectID"), " " . $this->lang->programplan->create, '', "class='btn btn-primary'"); - - $selectCustom = 0; // Display date and task settings. - $dateDetails = 1; // Gantt chart detail date display. - if($type == 'gantt') - { - $owner = $this->app->user->account; - $module = 'programplan'; - $section = 'browse'; - $object = 'stageCustom'; - $selectCustom = $this->loadModel('setting')->getItem("owner={$owner}&module={$module}§ion={$section}&key={$object}"); - if(strpos($selectCustom, 'date') !== false) $dateDetails = 0; - - $plans = $this->programplan->getDataForGantt($projectID, $this->productID, $baselineID); - } - - if($type == 'lists') - { - $sort = $this->loadModel('common')->appendOrder($orderBy); - $this->loadModel('datatable'); - $plans = $this->programplan->getPlans($projectID, $this->productID, $sort); - } - - $this->view->title = $this->lang->programplan->browse; - $this->view->position[] = $this->lang->programplan->browse; - $this->view->projectID = $projectID; - $this->view->productID = $this->productID; - $this->view->type = $type; - $this->view->plans = $plans; - $this->view->orderBy = $orderBy; - $this->view->selectCustom = $selectCustom; - $this->view->dateDetails = $dateDetails; - $this->view->users = $this->loadModel('user')->getPairs('noletter'); - - $this->display(); - } - - /** - * Create a project plan. - * - * @param int $projectID - * @param int $productID - * @param int $planID - * @access public - * @return void - */ - public function create($projectID = 0, $productID = 0, $planID = 0) - { - $this->commonAction($projectID, $productID); - $this->app->loadLang('project'); - if($_POST) - { - $this->programplan->create($projectID, $this->productID, $planID); - if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError())); - - $locate = $this->session->projectPlanList ? $this->session->projectPlanList : $this->createLink('programplan', 'browse', "projectID=$projectID"); - $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $locate)); - } - - $this->app->loadLang('stage'); - $project = $this->loadModel('project')->getById($projectID); - - $this->view->title = $this->lang->programplan->create . $this->lang->colon . $project->name; - $this->view->position[] = html::a($this->createLink('programplan', 'browse', "projectID=$projectID"), $project->name); - $this->view->position[] = $this->lang->programplan->create; - - $this->view->project = $project; - $this->view->stages = empty($planID) ? $this->loadModel('stage')->getStages('id_asc') : array(); - $this->view->programPlan = $this->project->getById($planID); - $this->view->plans = $this->programplan->getStage($planID ? $planID : $projectID, $this->productID, 'parent'); - $this->view->planID = $planID; - $this->view->type = 'lists'; - - $this->display(); - } - - /** - * Edit a project plan. - * - * @param int $planID - * @param int $projectID - * @access public - * @return void - */ - public function edit($planID = 0, $projectID = 0) - { - $this->app->loadLang('project'); - $plan = $this->programplan->getByID($planID); - if($_POST) - { - $changes = $this->programplan->update($planID, $projectID); - - if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError())); - if($changes) - { - $actionID = $this->loadModel('action')->create('execution', $planID, 'edited'); - $this->action->logHistory($actionID, $changes); - } - $locate = isonlybody() ? 'parent' : inlink('browse', "program=$plan->program&type=lists"); - $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $locate)); - } - - $this->app->loadLang('stage'); - $this->view->title = $this->lang->programplan->edit; - $this->view->position[] = $this->lang->programplan->edit; - $this->view->parentStage = $this->programplan->getParentStageList($this->session->PRJ, $planID, $plan->product); - $this->view->isCreateTask = $this->programplan->isCreateTask($planID); - $this->view->plan = $plan; - - $this->display(); - } - - /** - * Save custom settings via ajax. - * - * @access public - * @return void - */ - public function ajaxCustom() - { - $data = fixer::input('post')->get(); - $owner = $this->app->user->account; - $module = 'programplan'; - $section = 'browse'; - $object = 'stageCustom'; - $setting = $this->loadModel('setting'); - $custom = empty($data->stageCustom) ? '' : implode(',', $data->stageCustom); - $setting->setItem("$owner.$module.$section.$object", $custom); - - $response = array(); - $response['result'] = 'success'; - $response['message'] = ''; - $this->send($response); - } -} diff --git a/module/programplan/js/browse.js b/module/programplan/js/browse.js deleted file mode 100644 index 480420dc76..0000000000 --- a/module/programplan/js/browse.js +++ /dev/null @@ -1,34 +0,0 @@ -$(function() -{ - setTimeout(function() - { - fixScroll(); - }, 500); -}) - -function fixScroll() -{ - var $scrollwrapper = $('div.datatable').first().find('.scroll-wrapper:first'); - if($scrollwrapper.size() == 0)return; - - var $tfoot = $('div.datatable').first().find('table tfoot:last'); - var scrollOffset = $scrollwrapper.offset().top + $scrollwrapper.find('.scroll-slide').height(); - if($tfoot.size() > 0) scrollOffset += $tfoot.height(); - if($('div.datatable.head-fixed').size() == 0) scrollOffset -= '29'; - var windowH = $(window).height(); - if(scrollOffset > windowH + $(window).scrollTop()) $scrollwrapper.css({'position': 'fixed', 'bottom': 50 + 'px'}); - $(window).scroll(function() - { - newBottom = $tfoot.hasClass('fixedTfootAction') ? 50 + $tfoot.height() : 50; - if(typeof(ssoRedirect) != "undefined") newBottom = 50; - if(scrollOffset <= windowH + $(window).scrollTop()) - { - $scrollwrapper.css({'position':'relative', 'bottom': '0px'}); - } - else if($scrollwrapper.css('position') != 'fixed') - { - $scrollwrapper.css({'position': 'fixed', 'bottom': newBottom + 'px'}); - bottom = newBottom; - } - }); -} diff --git a/module/programplan/js/create.js b/module/programplan/js/create.js deleted file mode 100644 index 62a08dbd0e..0000000000 --- a/module/programplan/js/create.js +++ /dev/null @@ -1,16 +0,0 @@ -function addItem(obj) -{ - var item = $('#addItem').html().replace(/%i%/g, i); - $(obj).closest('tr').after('' + item + ''); - var newItem = $('#names' + i).closest('tr'); - newItem.find('.form-date').datepicker(); - $("#output" + i).chosen(); - $("#output_i__chosen").remove(); - i ++; -} - -function deleteItem(obj) -{ - if($('#planForm .table tbody').children().length < 2) return false; - $(obj).closest('tr').remove(); -} diff --git a/module/programplan/lang/de.php b/module/programplan/lang/de.php deleted file mode 100644 index 7b79967dd4..0000000000 --- a/module/programplan/lang/de.php +++ /dev/null @@ -1,70 +0,0 @@ - - * @package programplan - * @version $Id: en.php 4729 2013-05-03 07:53:55Z chencongzhi520@gmail.com $ - * @link http://www.zentao.net - */ -$lang->programplan->common = 'Program Plan'; -$lang->programplan->browse = 'Program Plan'; -$lang->programplan->gantt = 'Gantt Chart'; -$lang->programplan->list = 'Stage List'; -$lang->programplan->create = 'Create'; -$lang->programplan->edit = 'Edit'; -$lang->programplan->delete = 'Delete'; -$lang->programplan->createSubPlan = 'Create Sub Plan'; - -$lang->programplan->parent = 'Parent Stage'; -$lang->programplan->emptyParent = 'N/A'; -$lang->programplan->name = 'Stage Name'; -$lang->programplan->subStageName = 'Sub Stage Name'; -$lang->programplan->percent = 'Workload Ratio'; -$lang->programplan->percentAB = 'Workload Ratio'; -$lang->programplan->planPercent = 'Workload'; -$lang->programplan->attribute = 'Stage Type'; -$lang->programplan->milestone = 'Milestone'; -$lang->programplan->taskProgress = 'Task Progress'; -$lang->programplan->task = 'Task'; -$lang->programplan->begin = 'Begin'; -$lang->programplan->end = 'End'; -$lang->programplan->realBegan = 'Actual Started'; -$lang->programplan->realEnd = 'Actual End'; -$lang->programplan->planDateRange = 'Planned Start'; -$lang->programplan->realDateRange = 'Actual Start'; -$lang->programplan->output = 'Output'; -$lang->programplan->openedBy = 'Created By'; -$lang->programplan->openedDate = 'Created Date'; -$lang->programplan->editedBy = 'Edited By'; -$lang->programplan->editedDate = 'Edited Date'; -$lang->programplan->duration = 'Duration'; -$lang->programplan->version = 'Version'; -$lang->programplan->full = 'Full Screen'; -$lang->programplan->today = 'Today'; -$lang->programplan->exporting = 'Exporting'; -$lang->programplan->exportFail = 'Export failed'; -$lang->programplan->hideCriticalPath = 'Hide Critical Path'; -$lang->programplan->showCriticalPath = 'Show Critical Path'; - -$lang->programplan->milestoneList[1] = 'Yes'; -$lang->programplan->milestoneList[0] = 'No'; - -$lang->programplan->noData = 'No Data'; -$lang->programplan->children = 'Sub Plan'; -$lang->programplan->childrenAB = 'Child'; -$lang->programplan->confirmDelete = 'Do you want to delete the current plan?'; -$lang->programplan->workloadTips = 'The proportion of the sub stage workload is divided by 100%.'; - -$lang->programplan->stageCustom = new stdClass(); -$lang->programplan->stageCustom->date = 'Show Date'; -$lang->programplan->stageCustom->task = 'Show Task'; - -$lang->programplan->error = new stdclass(); -$lang->programplan->error->percentNumber = '"Workload %" must be digits.'; -$lang->programplan->error->planFinishSmall = 'The "End" date must be > the "Begin" date.'; -$lang->programplan->error->percentOver = 'The sum of "Workload %" cannot exceed 100%.'; -$lang->programplan->error->createdTask = 'The task has been decomposed. Sub phases cannot be added.'; -$lang->programplan->error->parentWorkload = 'The sum of the workload of the child phase cannot be greater than that of the parent phase: %s.'; diff --git a/module/programplan/lang/en.php b/module/programplan/lang/en.php deleted file mode 100644 index 7b79967dd4..0000000000 --- a/module/programplan/lang/en.php +++ /dev/null @@ -1,70 +0,0 @@ - - * @package programplan - * @version $Id: en.php 4729 2013-05-03 07:53:55Z chencongzhi520@gmail.com $ - * @link http://www.zentao.net - */ -$lang->programplan->common = 'Program Plan'; -$lang->programplan->browse = 'Program Plan'; -$lang->programplan->gantt = 'Gantt Chart'; -$lang->programplan->list = 'Stage List'; -$lang->programplan->create = 'Create'; -$lang->programplan->edit = 'Edit'; -$lang->programplan->delete = 'Delete'; -$lang->programplan->createSubPlan = 'Create Sub Plan'; - -$lang->programplan->parent = 'Parent Stage'; -$lang->programplan->emptyParent = 'N/A'; -$lang->programplan->name = 'Stage Name'; -$lang->programplan->subStageName = 'Sub Stage Name'; -$lang->programplan->percent = 'Workload Ratio'; -$lang->programplan->percentAB = 'Workload Ratio'; -$lang->programplan->planPercent = 'Workload'; -$lang->programplan->attribute = 'Stage Type'; -$lang->programplan->milestone = 'Milestone'; -$lang->programplan->taskProgress = 'Task Progress'; -$lang->programplan->task = 'Task'; -$lang->programplan->begin = 'Begin'; -$lang->programplan->end = 'End'; -$lang->programplan->realBegan = 'Actual Started'; -$lang->programplan->realEnd = 'Actual End'; -$lang->programplan->planDateRange = 'Planned Start'; -$lang->programplan->realDateRange = 'Actual Start'; -$lang->programplan->output = 'Output'; -$lang->programplan->openedBy = 'Created By'; -$lang->programplan->openedDate = 'Created Date'; -$lang->programplan->editedBy = 'Edited By'; -$lang->programplan->editedDate = 'Edited Date'; -$lang->programplan->duration = 'Duration'; -$lang->programplan->version = 'Version'; -$lang->programplan->full = 'Full Screen'; -$lang->programplan->today = 'Today'; -$lang->programplan->exporting = 'Exporting'; -$lang->programplan->exportFail = 'Export failed'; -$lang->programplan->hideCriticalPath = 'Hide Critical Path'; -$lang->programplan->showCriticalPath = 'Show Critical Path'; - -$lang->programplan->milestoneList[1] = 'Yes'; -$lang->programplan->milestoneList[0] = 'No'; - -$lang->programplan->noData = 'No Data'; -$lang->programplan->children = 'Sub Plan'; -$lang->programplan->childrenAB = 'Child'; -$lang->programplan->confirmDelete = 'Do you want to delete the current plan?'; -$lang->programplan->workloadTips = 'The proportion of the sub stage workload is divided by 100%.'; - -$lang->programplan->stageCustom = new stdClass(); -$lang->programplan->stageCustom->date = 'Show Date'; -$lang->programplan->stageCustom->task = 'Show Task'; - -$lang->programplan->error = new stdclass(); -$lang->programplan->error->percentNumber = '"Workload %" must be digits.'; -$lang->programplan->error->planFinishSmall = 'The "End" date must be > the "Begin" date.'; -$lang->programplan->error->percentOver = 'The sum of "Workload %" cannot exceed 100%.'; -$lang->programplan->error->createdTask = 'The task has been decomposed. Sub phases cannot be added.'; -$lang->programplan->error->parentWorkload = 'The sum of the workload of the child phase cannot be greater than that of the parent phase: %s.'; diff --git a/module/programplan/lang/fr.php b/module/programplan/lang/fr.php deleted file mode 100644 index 7b79967dd4..0000000000 --- a/module/programplan/lang/fr.php +++ /dev/null @@ -1,70 +0,0 @@ - - * @package programplan - * @version $Id: en.php 4729 2013-05-03 07:53:55Z chencongzhi520@gmail.com $ - * @link http://www.zentao.net - */ -$lang->programplan->common = 'Program Plan'; -$lang->programplan->browse = 'Program Plan'; -$lang->programplan->gantt = 'Gantt Chart'; -$lang->programplan->list = 'Stage List'; -$lang->programplan->create = 'Create'; -$lang->programplan->edit = 'Edit'; -$lang->programplan->delete = 'Delete'; -$lang->programplan->createSubPlan = 'Create Sub Plan'; - -$lang->programplan->parent = 'Parent Stage'; -$lang->programplan->emptyParent = 'N/A'; -$lang->programplan->name = 'Stage Name'; -$lang->programplan->subStageName = 'Sub Stage Name'; -$lang->programplan->percent = 'Workload Ratio'; -$lang->programplan->percentAB = 'Workload Ratio'; -$lang->programplan->planPercent = 'Workload'; -$lang->programplan->attribute = 'Stage Type'; -$lang->programplan->milestone = 'Milestone'; -$lang->programplan->taskProgress = 'Task Progress'; -$lang->programplan->task = 'Task'; -$lang->programplan->begin = 'Begin'; -$lang->programplan->end = 'End'; -$lang->programplan->realBegan = 'Actual Started'; -$lang->programplan->realEnd = 'Actual End'; -$lang->programplan->planDateRange = 'Planned Start'; -$lang->programplan->realDateRange = 'Actual Start'; -$lang->programplan->output = 'Output'; -$lang->programplan->openedBy = 'Created By'; -$lang->programplan->openedDate = 'Created Date'; -$lang->programplan->editedBy = 'Edited By'; -$lang->programplan->editedDate = 'Edited Date'; -$lang->programplan->duration = 'Duration'; -$lang->programplan->version = 'Version'; -$lang->programplan->full = 'Full Screen'; -$lang->programplan->today = 'Today'; -$lang->programplan->exporting = 'Exporting'; -$lang->programplan->exportFail = 'Export failed'; -$lang->programplan->hideCriticalPath = 'Hide Critical Path'; -$lang->programplan->showCriticalPath = 'Show Critical Path'; - -$lang->programplan->milestoneList[1] = 'Yes'; -$lang->programplan->milestoneList[0] = 'No'; - -$lang->programplan->noData = 'No Data'; -$lang->programplan->children = 'Sub Plan'; -$lang->programplan->childrenAB = 'Child'; -$lang->programplan->confirmDelete = 'Do you want to delete the current plan?'; -$lang->programplan->workloadTips = 'The proportion of the sub stage workload is divided by 100%.'; - -$lang->programplan->stageCustom = new stdClass(); -$lang->programplan->stageCustom->date = 'Show Date'; -$lang->programplan->stageCustom->task = 'Show Task'; - -$lang->programplan->error = new stdclass(); -$lang->programplan->error->percentNumber = '"Workload %" must be digits.'; -$lang->programplan->error->planFinishSmall = 'The "End" date must be > the "Begin" date.'; -$lang->programplan->error->percentOver = 'The sum of "Workload %" cannot exceed 100%.'; -$lang->programplan->error->createdTask = 'The task has been decomposed. Sub phases cannot be added.'; -$lang->programplan->error->parentWorkload = 'The sum of the workload of the child phase cannot be greater than that of the parent phase: %s.'; diff --git a/module/programplan/lang/vi.php b/module/programplan/lang/vi.php deleted file mode 100644 index 7b79967dd4..0000000000 --- a/module/programplan/lang/vi.php +++ /dev/null @@ -1,70 +0,0 @@ - - * @package programplan - * @version $Id: en.php 4729 2013-05-03 07:53:55Z chencongzhi520@gmail.com $ - * @link http://www.zentao.net - */ -$lang->programplan->common = 'Program Plan'; -$lang->programplan->browse = 'Program Plan'; -$lang->programplan->gantt = 'Gantt Chart'; -$lang->programplan->list = 'Stage List'; -$lang->programplan->create = 'Create'; -$lang->programplan->edit = 'Edit'; -$lang->programplan->delete = 'Delete'; -$lang->programplan->createSubPlan = 'Create Sub Plan'; - -$lang->programplan->parent = 'Parent Stage'; -$lang->programplan->emptyParent = 'N/A'; -$lang->programplan->name = 'Stage Name'; -$lang->programplan->subStageName = 'Sub Stage Name'; -$lang->programplan->percent = 'Workload Ratio'; -$lang->programplan->percentAB = 'Workload Ratio'; -$lang->programplan->planPercent = 'Workload'; -$lang->programplan->attribute = 'Stage Type'; -$lang->programplan->milestone = 'Milestone'; -$lang->programplan->taskProgress = 'Task Progress'; -$lang->programplan->task = 'Task'; -$lang->programplan->begin = 'Begin'; -$lang->programplan->end = 'End'; -$lang->programplan->realBegan = 'Actual Started'; -$lang->programplan->realEnd = 'Actual End'; -$lang->programplan->planDateRange = 'Planned Start'; -$lang->programplan->realDateRange = 'Actual Start'; -$lang->programplan->output = 'Output'; -$lang->programplan->openedBy = 'Created By'; -$lang->programplan->openedDate = 'Created Date'; -$lang->programplan->editedBy = 'Edited By'; -$lang->programplan->editedDate = 'Edited Date'; -$lang->programplan->duration = 'Duration'; -$lang->programplan->version = 'Version'; -$lang->programplan->full = 'Full Screen'; -$lang->programplan->today = 'Today'; -$lang->programplan->exporting = 'Exporting'; -$lang->programplan->exportFail = 'Export failed'; -$lang->programplan->hideCriticalPath = 'Hide Critical Path'; -$lang->programplan->showCriticalPath = 'Show Critical Path'; - -$lang->programplan->milestoneList[1] = 'Yes'; -$lang->programplan->milestoneList[0] = 'No'; - -$lang->programplan->noData = 'No Data'; -$lang->programplan->children = 'Sub Plan'; -$lang->programplan->childrenAB = 'Child'; -$lang->programplan->confirmDelete = 'Do you want to delete the current plan?'; -$lang->programplan->workloadTips = 'The proportion of the sub stage workload is divided by 100%.'; - -$lang->programplan->stageCustom = new stdClass(); -$lang->programplan->stageCustom->date = 'Show Date'; -$lang->programplan->stageCustom->task = 'Show Task'; - -$lang->programplan->error = new stdclass(); -$lang->programplan->error->percentNumber = '"Workload %" must be digits.'; -$lang->programplan->error->planFinishSmall = 'The "End" date must be > the "Begin" date.'; -$lang->programplan->error->percentOver = 'The sum of "Workload %" cannot exceed 100%.'; -$lang->programplan->error->createdTask = 'The task has been decomposed. Sub phases cannot be added.'; -$lang->programplan->error->parentWorkload = 'The sum of the workload of the child phase cannot be greater than that of the parent phase: %s.'; diff --git a/module/programplan/lang/zh-cn.php b/module/programplan/lang/zh-cn.php deleted file mode 100644 index 7d6fa7f818..0000000000 --- a/module/programplan/lang/zh-cn.php +++ /dev/null @@ -1,70 +0,0 @@ - - * @package programplan - * @version $Id: zh-cn.php 4729 2013-05-03 07:53:55Z chencongzhi520@gmail.com $ - * @link http://www.zentao.net - */ -$lang->programplan->common = '项目计划'; -$lang->programplan->browse = '浏览阶段计划'; -$lang->programplan->gantt = '甘特图'; -$lang->programplan->list = '阶段列表'; -$lang->programplan->create = '设置阶段'; -$lang->programplan->edit = '编辑'; -$lang->programplan->delete = '删除'; -$lang->programplan->createSubPlan = '创建二级阶段'; - -$lang->programplan->parent = '父阶段'; -$lang->programplan->emptyParent = '无'; -$lang->programplan->name = '阶段名称'; -$lang->programplan->subStageName = '子阶段名称'; -$lang->programplan->percent = '工作量占比'; -$lang->programplan->percentAB = '工作量占比'; -$lang->programplan->planPercent = '工作量'; -$lang->programplan->attribute = '阶段类型'; -$lang->programplan->milestone = '里程碑'; -$lang->programplan->taskProgress = '任务进度'; -$lang->programplan->task = '任务'; -$lang->programplan->begin = '计划开始'; -$lang->programplan->end = '计划完成'; -$lang->programplan->realBegan = '实际开始'; -$lang->programplan->realEnd = '实际完成'; -$lang->programplan->planDateRange = '计划起始日期'; -$lang->programplan->realDateRange = '实际起始日期'; -$lang->programplan->output = '输出'; -$lang->programplan->openedBy = '由谁创建'; -$lang->programplan->openedDate = '创建日期'; -$lang->programplan->editedBy = '由谁编辑'; -$lang->programplan->editedDate = '编辑日期'; -$lang->programplan->duration = '计划工期'; -$lang->programplan->version = '版本号'; -$lang->programplan->full = '全屏'; -$lang->programplan->today = '今天'; -$lang->programplan->exporting = '导出'; -$lang->programplan->exportFail = '导出失败'; -$lang->programplan->hideCriticalPath = '隐藏关键路径'; -$lang->programplan->showCriticalPath = '显示关键路径'; - -$lang->programplan->milestoneList[1] = '是'; -$lang->programplan->milestoneList[0] = '否'; - -$lang->programplan->noData = '暂无数据。'; -$lang->programplan->children = '二级计划'; -$lang->programplan->childrenAB = '子'; -$lang->programplan->confirmDelete = '确定要删除当前计划吗?'; -$lang->programplan->workloadTips = '子阶段工作量占比按百分百的比例进行拆分'; - -$lang->programplan->stageCustom = new stdClass(); -$lang->programplan->stageCustom->date = '显示日期'; -$lang->programplan->stageCustom->task = '显示任务'; - -$lang->programplan->error = new stdclass(); -$lang->programplan->error->percentNumber = '"工作量比例"必须为数字'; -$lang->programplan->error->planFinishSmall = '"计划完成时间"必须大于"计划开始时间"'; -$lang->programplan->error->percentOver = '工作量占比累计不应当超过100%'; -$lang->programplan->error->createdTask = '已分解任务,不可添加子阶段'; -$lang->programplan->error->parentWorkload = '子阶段的工作量之和不能大于父阶段的工作量:%s'; diff --git a/module/programplan/lang/zh-tw.php b/module/programplan/lang/zh-tw.php deleted file mode 100644 index fb61f5ea6f..0000000000 --- a/module/programplan/lang/zh-tw.php +++ /dev/null @@ -1,70 +0,0 @@ - - * @package programplan - * @version $Id: zh-tw.php 4729 2013-05-03 07:53:55Z chencongzhi520@gmail.com $ - * @link http://www.zentao.net - */ -$lang->programplan->common = '項目計劃'; -$lang->programplan->browse = '瀏覽階段計劃'; -$lang->programplan->gantt = '甘特圖'; -$lang->programplan->list = '階段列表'; -$lang->programplan->create = '設置階段'; -$lang->programplan->edit = '編輯'; -$lang->programplan->delete = '刪除'; -$lang->programplan->createSubPlan = '創建二級階段'; - -$lang->programplan->parent = '父階段'; -$lang->programplan->emptyParent = '無'; -$lang->programplan->name = '階段名稱'; -$lang->programplan->subStageName = '子階段名稱'; -$lang->programplan->percent = '工作量占比'; -$lang->programplan->percentAB = '工作量占比'; -$lang->programplan->planPercent = '工作量'; -$lang->programplan->attribute = '階段類型'; -$lang->programplan->milestone = '里程碑'; -$lang->programplan->taskProgress = '任務進度'; -$lang->programplan->task = '任務'; -$lang->programplan->begin = '計劃開始'; -$lang->programplan->end = '計劃完成'; -$lang->programplan->realBegan = '實際開始'; -$lang->programplan->realEnd = '實際完成'; -$lang->programplan->planDateRange = '計划起始日期'; -$lang->programplan->realDateRange = '實際起始日期'; -$lang->programplan->output = '輸出'; -$lang->programplan->openedBy = '由誰創建'; -$lang->programplan->openedDate = '創建日期'; -$lang->programplan->editedBy = '由誰編輯'; -$lang->programplan->editedDate = '編輯日期'; -$lang->programplan->duration = '計劃工期'; -$lang->programplan->version = '版本號'; -$lang->programplan->full = '全屏'; -$lang->programplan->today = '今天'; -$lang->programplan->exporting = '導出'; -$lang->programplan->exportFail = '導出失敗'; -$lang->programplan->hideCriticalPath = '隱藏關鍵路徑'; -$lang->programplan->showCriticalPath = '顯示關鍵路徑'; - -$lang->programplan->milestoneList[1] = '是'; -$lang->programplan->milestoneList[0] = '否'; - -$lang->programplan->noData = '暫無數據。'; -$lang->programplan->children = '二級計劃'; -$lang->programplan->childrenAB = '子'; -$lang->programplan->confirmDelete = '確定要刪除當前計劃嗎?'; -$lang->programplan->workloadTips = '子階段工作量占比按百分百的比例進行拆分'; - -$lang->programplan->stageCustom = new stdClass(); -$lang->programplan->stageCustom->date = '顯示日期'; -$lang->programplan->stageCustom->task = '顯示任務'; - -$lang->programplan->error = new stdclass(); -$lang->programplan->error->percentNumber = '"工作量比例"必須為數字'; -$lang->programplan->error->planFinishSmall = '"計劃完成時間"必須大於"計劃開始時間"'; -$lang->programplan->error->percentOver = '工作量占比累計不應當超過100%'; -$lang->programplan->error->createdTask = '已分解任務,不可添加子階段'; -$lang->programplan->error->parentWorkload = '子階段的工作量之和不能大於父階段的工作量:%s'; diff --git a/module/programplan/model.php b/module/programplan/model.php deleted file mode 100644 index 3c00650367..0000000000 --- a/module/programplan/model.php +++ /dev/null @@ -1,910 +0,0 @@ - - * @package programplan - * @version $Id: model.php 5079 2013-07-10 00:44:34Z chencongzhi520@gmail.com $ - * @link http://www.zentao.net - */ -?> -dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($planID)->fetch(); - - return $this->processPlan($plan); - } - - /** - * Get plans list. - * - * @param int $projectID - * @param int $productID - * @param string $browseType all|parent - * @param string $orderBy - * @access public - * @return array - */ - public function getStage($projectID = 0, $productID = 0, $browseType = 'all', $orderBy = 'id_asc') - { - if(empty($projectID) || empty($productID)) return array(); - - $plans = $this->dao->select('t2.*')->from(TABLE_PROJECTPRODUCT)->alias('t1') - ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id') - ->where('t1.product')->eq($productID) - ->andWhere('t2.type')->eq('stage') - ->beginIF($browseType == 'all')->andWhere('t2.project')->eq($projectID)->fi() - ->beginIF($browseType == 'parent')->andWhere('t2.parent')->eq($projectID)->fi() - ->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->sprints)->fi() - ->andWhere('t2.deleted')->eq('0') - ->orderBy($orderBy) - ->fetchAll('id'); - - return $this->processPlans($plans); - } - - /** - * Get plans by idList. - * - * @param array $idList - * @access public - * @return array - */ - public function getByList($idList = array()) - { - $plans = $this->dao->select('*')->from(TABLE_PROJECT) - ->where('id')->in($idList) - ->andWhere('type')->eq('project') - ->fetchAll('id'); - - return $this->processPlans($plans); - } - - /** - * Get plans. - * - * @param int $projectID - * @param int $productID - * @param string $orderBy - * @access public - * @return array - */ - public function getPlans($projectID = 0, $productID = 0, $orderBy = 'id_asc') - { - $plans = $this->getStage($projectID, $productID, 'all', $orderBy); - - $parents = array(); - $children = array(); - foreach($plans as $planID => $plan) - { - $plan->grade == 1 ? $parents[$planID] = $plan : $children[$plan->parent][] = $plan; - } - - foreach($parents as $planID => $plan) $parents[$planID]->children = isset($children[$planID]) ? $children[$planID] : array(); - - return $parents; - } - - /** - * Get pairs. - * - * @param int $projectID - * @param int $productID - * @param string $type - * @access public - * @return array - */ - public function getPairs($projectID, $productID = 0, $type = 'all') - { - $plans = $this->getPlans($projectID, $productID); - - $pairs = array(0 => ''); - foreach($plans as $plan) - { - $pairs[$plan->id] = $plan->name; - if(!empty($plan->children)) - { - foreach($plan->children as $child) $pairs[$child->id] = $plan->name . '/' . $child->name; - } - } - - return $pairs; - } - - /** - * Get gantt data. - * - * @param int $projectID - * @param int $productID - * @param int $baselineID - * @param string $selectCustom - * @param bool $returnJson - * @access public - * @return string - */ - public function getDataForGantt($projectID, $productID, $baselineID = 0, $selectCustom = '', $returnJson = true) - { - $this->loadModel('stage'); - - $plans = $this->getStage($projectID, $productID); - if($baselineID) - { - $baseline = $this->loadModel('cm')->getByID($baselineID); - $oldData = json_decode($baseline->data); - $oldPlans = $oldData->stage; - foreach($oldPlans as $id => $oldPlan) - { - if(!isset($plans[$id])) continue; - $plans[$id]->version = $oldPlan->version; - $plans[$id]->name = $oldPlan->name; - $plans[$id]->milestone = $oldPlan->milestone; - $plans[$id]->begin = $oldPlan->begin; - $plans[$id]->end = $oldPlan->end; - } - } - - $datas = array(); - $planIDList = array(); - $isMilestone = " "; - $stageIndex = array(); - foreach($plans as $plan) - { - $planIDList[$plan->id] = $plan->id; - - $start = $plan->begin == '0000-00-00' ? '' : date('d-m-Y', strtotime($plan->begin)); - $end = $plan->end == '0000-00-00' ? '' : $plan->end; - - $data = new stdclass(); - $data->id = $plan->id; - $data->type = 'plan'; - $data->text = empty($plan->milestone) ? $plan->name : $plan->name . $isMilestone ; - $data->percent = $plan->percent; - $data->attribute = zget($this->lang->stage->typeList, $plan->attribute); - $data->milestone = zget($this->lang->programplan->milestoneList, $plan->milestone); - $data->start_date = $start; - $data->deadline = $end; - $data->realBegan = $plan->realBegan == '0000-00-00' ? '' : $plan->realBegan; - $data->realEnd = $plan->realEnd == '0000-00-00' ? '' : $plan->realEnd; - $data->duration = helper::diffDate($plan->end, $plan->begin) + 1;; - $data->parent = $plan->grade == 1 ? 0 :$plan->parent; - $data->open = true; - - if($data->start_date == '' or $data->deadline == '') $data->duration = 0; - - $datas['data'][] = $data; - $stageIndex[] = array('planID' => $plan->id, 'progress' => array('totalConsumed' => 0, 'totalReal' => 0)); - } - - $taskSign = "[ T ] "; - $taskPri = "%s "; - - /* Judge whether to display tasks under the stage. */ - $owner = $this->app->user->account; - $module = 'programplan'; - $section = 'browse'; - $object = 'stageCustom'; - - if(empty($selectCustom)) $selectCustom = $this->loadModel('setting')->getItem("owner={$owner}&module={$module}§ion={$section}&key={$object}"); - - $tasks = array(); - if(strpos($selectCustom, 'task') !== false) - { - $tasks = $this->dao->select('*')->from(TABLE_TASK)->where('deleted')->eq(0)->andWhere('project')->in($planIDList)->fetchAll('id'); - } - - if($baselineID) - { - $oldTasks = $oldData->task; - foreach($oldTasks as $id => $oldTask) - { - if(!isset($tasks->$id)) continue; - $tasks->$id->version = $oldTask->version; - $tasks->$id->name = $oldTask->name; - $tasks->$id->estStarted = $oldTask->estStarted; - $tasks->$id->deadline = $oldTask->deadline; - } - } - - foreach($tasks as $task) - { - $start = $task->estStarted == '0000-00-00' ? '' : date('d-m-Y', strtotime($task->estStarted)); - $end = $task->deadline == '0000-00-00' ? '' : $task->deadline; - - $realBegan = $task->realStarted == '0000-00-00' ? '' : $task->realStarted; - $realEnd = $task->finishedDate == '0000-00-00 00:00:00' ? '' : substr($task->finishedDate, 5, 11); - $priIcon = sprintf($taskPri, $task->pri, $task->pri, $task->pri); - - $data = new stdclass(); - $data->id = $task->project . '-' . $task->id; - $data->type = 'task'; - $data->text = $taskSign . $priIcon . $task->name; - $data->percent = ''; - $data->attribute = ''; - $data->milestone = ''; - $data->start_date = $start; - $data->deadline = $end; - $data->realBegan = $realBegan; - $data->realEnd = $realEnd; - $data->duration = helper::diffDate($task->deadline, $task->estStarted) + 1; - $data->parent = $task->parent > 0 ? $task->project . '-' . $task->parent : $task->project; - $data->open = true; - $progress = $task->consumed ? round($task->consumed / ($task->left + $task->consumed), 3) * 100 : 0; - $data->taskProgress = $progress . '%'; - - if($data->start_date == '' or $data->deadline == '') $data->duration = 0; - - $datas['data'][] = $data; - foreach($stageIndex as $index => $stage) - { - if($stage['planID'] == $task->project) - { - $stageIndex[$index]['progress']['totalConsumed'] += $task->consumed; - $stageIndex[$index]['progress']['totalReal'] += ($task->left + $task->consumed); - } - } - } - - /* Calculate the progress of the phase. */ - foreach($stageIndex as $index => $stage) - { - $progress = empty($stage['progress']['totalConsumed']) ? 0 : round($stage['progress']['totalConsumed'] / $stage['progress']['totalReal'], 3) * 100; - $progress .= '%'; - $datas['data'][$index]->taskProgress = $progress; - } - - return $returnJson ? json_encode($datas) : $datas; - } - - /** - * Get total percent. - * - * @param object $stage - * @param object $parent - * @access public - * @return int - */ - public function getTotalPercent($stage, $parent = false) - { - /* When parent is equal to true, query the total workload of the subphase. */ - $projectID = $parent ? $stage->id : $stage->project; - $plans = $this->getStage($projectID, $stage->product, 'parent'); - - $totalPercent = 0; - $stageID = $stage->id; - foreach($plans as $id => $stage) - { - if($id == $stageID) continue; - $totalPercent += $stage->percent; - } - - return $totalPercent; - } - - /** - * Process plans. - * - * @param int $plans - * @access public - * @return object - */ - public function processPlans($plans) - { - foreach($plans as $planID => $plan) $plans[$planID] = $this->processPlan($plan); - return $plans; - } - - /** - * Process plan. - * - * @param int $plan - * @access public - * @return object - */ - public function processPlan($plan) - { - $plan->setMilestone = true; - - if($plan->parent) - { - $attribute = $this->dao->select('attribute')->from(TABLE_PROJECT)->where('id')->eq($plan->parent)->fetch('attribute'); - $plan->attribute = $attribute == 'develop' ? $attribute : $plan->attribute; - } - else - { - $milestones = $this->dao->select('count(*) AS count')->from(TABLE_PROJECT) - ->where('parent')->eq($plan->id) - ->andWhere('milestone')->eq(1) - ->andWhere('deleted')->eq(0) - ->fetch('count'); - if($milestones > 0) - { - $plan->milestone = 0; - $plan->setMilestone = false; - } - } - - $plan->begin = $plan->begin == '0000-00-00' ? '' : $plan->begin; - $plan->end = $plan->end == '0000-00-00' ? '' : $plan->end; - $plan->realBegan = $plan->realBegan == '0000-00-00' ? '' : $plan->realBegan; - $plan->realEnd = $plan->realEnd == '0000-00-00' ? '' : $plan->realEnd; - - $plan->product = $this->loadModel('product')->getProductIDByProject($plan->id); - $plan->productName = $this->dao->findByID($plan->product)->from(TABLE_PRODUCT)->fetch('name'); - - return $plan; - } - - /** - * Get duration. - * - * @param int $begin - * @param int $end - * @access public - * @return int - */ - public function getDuration($begin, $end) - { - $duration = $this->loadModel('holiday')->getActualWorkingDays($begin, $end); - return count($duration); - } - - /** - * Create a plan. - * - * @param int $projectID - * @param int $productID - * @param int $parentID - * @access public - * @return bool - */ - public function create($projectID = 0, $productID = 0, $parentID = 0) - { - $data = (array)fixer::input('post')->get(); - extract($data); - - /* Determine if a task has been created under the parent phase. */ - if(!$this->isCreateTask($parentID)) return dao::$errors['message'][] = $this->lang->programplan->error->createdTask; - - /* The child phase type setting is the same as the parent phase. */ - $parentAttribute = ''; - $parentPercent = 0; - if($parentID) - { - $parentStage = $this->getByID($parentID); - $parentAttribute = $parentStage->attribute; - $parentPercent = $parentStage->percent; - $parentACL = $parentStage->acl; - } - - $attributes = array_values($attributes); - $milestone = array_values($milestone); - $datas = array(); - foreach($names as $key => $name) - { - if(empty($name)) continue; - - $plan = new stdclass(); - $plan->id = isset($planIDList[$key]) ? $planIDList[$key] : ''; - $plan->type = 'stage'; - $plan->project = $projectID; - $plan->parent = $parentID ? $parentID : $projectID; - $plan->name = $names[$key]; - $plan->percent = $percents[$key]; - $plan->attribute = empty($parentID) ? $attributes[$key] : $parentAttribute; - $plan->milestone = $milestone[$key]; - $plan->begin = empty($begin[$key]) ? '0000-00-00' : $begin[$key]; - $plan->end = empty($end[$key]) ? '0000-00-00' : $end[$key]; - $plan->realBegan = empty($realBegan[$key]) ? '0000-00-00' : $realBegan[$key]; - $plan->realEnd = empty($realEnd[$key]) ? '0000-00-00' : $realEnd[$key]; - $plan->output = empty($output[$key]) ? '' : implode(',', $output[$key]); - $plan->acl = empty($parentID) ? $acl[$key] : $parentACL; - - $datas[] = $plan; - } - - $totalPercent = 0; - $totalDevType = 0; - $milestone = 0; - foreach($datas as $plan) - { - if($plan->percent and !preg_match("/^[0-9]+(.[0-9]{1,3})?$/", $plan->percent)) - { - dao::$errors['message'][] = $this->lang->programplan->error->percentNumber; - return false; - } - if($plan->end != '0000-00-00' and $plan->end < $plan->begin) - { - dao::$errors['message'][] = $this->lang->programplan->error->planFinishSmall; - return false; - } - - if($plan->begin == '0000-00-00') $plan->begin = ''; - if($plan->end == '0000-00-00') $plan->end = ''; - foreach(explode(',', $this->config->programplan->create->requiredFields) as $field) - { - $field = trim($field); - if($field and empty($plan->$field)) - { - dao::$errors['message'][] = sprintf($this->lang->error->notempty, $this->lang->programplan->$field); - return false; - } - } - - $plan->percent = (float)$plan->percent; - $totalPercent += $plan->percent; - - if($plan->milestone) $milestone = 1; - } - - if($totalPercent > 100) return dao::$errors['message'][] = $this->lang->programplan->error->percentOver; - - $this->loadModel('action'); - $this->loadModel('user'); - $this->loadModel('project'); - $this->app->loadLang('doc'); - $account = $this->app->user->account; - $now = helper::now(); - foreach($datas as $data) - { - /* Set planDuration and realDuration. */ - $data->planDuration = $this->getDuration($data->begin, $data->end); - $data->realDuration = $this->getDuration($data->realBegan, $data->realEnd); - - $projectChanged = false; - $data->days = helper::diffDate($data->end, $data->begin) + 1; - if($data->id) - { - $stageID = $data->id; - unset($data->id); - - $oldStage = $this->getByID($stageID); - $planChanged = ($oldStage->name != $data->name || $oldStage->milestone != $data->milestone || $oldStage->begin != $data->begin || $oldStage->end != $data->end); - - if($planChanged) $data->version = $oldStage->version + 1; - $this->dao->update(TABLE_PROJECT)->data($data) - ->autoCheck() - ->batchCheck($this->config->programplan->edit->requiredFields, 'notempty') - ->checkIF($plan->percent != '', 'percent', 'float') - ->where('id')->eq($stageID) - ->exec(); - - if($data->acl != 'open') $this->user->updateUserView($stageID, 'sprint'); - - /* Record version change information. */ - if($planChanged) - { - $spec = new stdclass(); - $spec->project = $stageID; - $spec->version = $data->version; - $spec->name = $data->name; - $spec->milestone = $data->milestone; - $spec->begin = $data->begin; - $spec->end = $data->end; - $this->dao->insert(TABLE_PROJECTSPEC)->data($spec)->exec(); - } - - $changes = common::createChanges($oldStage, $data); - $actionID = $this->action->create('execution', $stageID, 'edited'); - $this->action->logHistory($actionID, $changes); - } - else - { - unset($data->id); - $data->status = 'wait'; - $data->version = 1; - $data->parentVersion = $data->parent == 0 ? 0 : $this->dao->findByID($data->parent)->from(TABLE_PROJECT)->fetch('version'); - $data->team = substr($data->name,0, 30); - $data->openedBy = $account; - $data->openedDate = $now; - $data->openedVersion = $this->config->version; - if(!isset($data->acl)) $data->acl = $this->dao->findByID($data->parent)->from(TABLE_PROJECT)->fetch('acl'); - $this->dao->insert(TABLE_PROJECT)->data($data) - ->autoCheck() - ->batchCheck($this->config->programplan->create->requiredFields, 'notempty') - ->checkIF($plan->percent != '', 'percent', 'float') - ->exec(); - - if(!dao::isError()) - { - $stageID = $this->dao->lastInsertID(); - - if($data->acl != 'open') $this->user->updateUserView($stageID, 'sprint'); - $this->dao->update(TABLE_PROJECT)->set('`order`')->eq($stageID * 5)->where('id')->eq($stageID)->exec(); - - /* Create doc lib. */ - $lib = new stdclass(); - $lib->project = $stageID; - $lib->name = $this->lang->doclib->main['project']; - $lib->type = 'project'; - $lib->main = '1'; - $lib->acl = 'default'; - $this->dao->insert(TABLE_DOCLIB)->data($lib)->exec(); - - /* Add creators to stage teams and project teams. */ - $member = new stdclass(); - $member->root = $stageID; - $member->account = $account; - $member->role = $this->lang->user->roleList[$this->app->user->role]; - $member->join = $now; - $member->type = $data->type; - $member->days = $data->days; - $member->hours = $this->config->project->defaultWorkhours; - $this->dao->insert(TABLE_TEAM)->data($member)->exec(); - $this->project->addProjectMembers($data->project, array($member)); - - $this->setTreePath($stageID); - if($data->acl != 'open') $this->user->updateUserView($stageID, 'sprint'); - - $this->post->set('products', array(0 => $productID)); - $this->project->updateProducts($stageID); - - /* Record version change information. */ - $spec = new stdclass(); - $spec->project = $stageID; - $spec->version = $data->version; - $spec->name = $data->name; - $spec->milestone = $data->milestone; - $spec->begin = $data->begin; - $spec->end = $data->end; - $this->dao->insert(TABLE_PROJECTSPEC)->data($spec)->exec(); - - $this->action->create('execution', $stageID, 'opened', '', join(',', $_POST['products'])); - } - } - - /* If child plans has milestone, update parent plan set milestone eq 0 . */ - if($parentID and $milestone) $this->dao->update(TABLE_PROJECT)->set('milestone')->eq(0)->where('id')->eq($parentID)->exec(); - - if(dao::isError()) die(js::error(dao::getError())); - } - } - - /** - * Set stage tree path. - * - * @param int $planID - * @access public - * @return bool - */ - public function setTreePath($planID) - { - $stage = $this->dao->select('id,type,parent,path,grade')->from(TABLE_PROJECT)->where('id')->eq($planID)->fetch(); - $parent = $this->dao->select('id,type,parent,path,grade')->from(TABLE_PROJECT)->where('id')->eq($stage->parent)->fetch(); - - if($parent->type == 'project') - { - $path['path'] = ",{$parent->id},{$stage->id},"; - $path['grade'] = 1; - } - elseif($parent->type == 'stage') - { - $path['path'] = $parent->path . "{$stage->id},"; - $path['grade'] = $parent->grade + 1; - } - $this->dao->update(TABLE_PROJECT)->set('path')->eq($path['path'])->set('grade')->eq($path['grade'])->where('id')->eq($stage->id)->exec(); - } - - /** - * Update a plan. - * - * @param int $planID - * @param int $projectID - * @access public - * @return bool|array - */ - public function update($planID = 0, $projectID = 0) - { - /* Get oldPlan and the data from the post. */ - $oldPlan = $this->getByID($planID); - $plan = fixer::input('post') - ->setDefault('begin', '0000-00-00') - ->setDefault('end', '0000-00-00') - ->setDefault('realBegan', '0000-00-00') - ->setDefault('realEnd', '0000-00-00') - ->join('output', ',') - ->get(); - - /* Judgment of required items. */ - if($plan->begin == '0000-00-00') dao::$errors['begin'][] = sprintf($this->lang->error->notempty, $this->lang->programplan->begin); - if($plan->end == '0000-00-00') dao::$errors['end'][] = sprintf($this->lang->error->notempty, $this->lang->programplan->end); - - $planChanged = ($oldPlan->name != $plan->name || $oldPlan->milestone != $plan->milestone || $oldPlan->begin != $plan->begin || $oldPlan->end != $plan->end); - - if($plan->parent > 0) - { - $parentStage = $this->getByID($plan->parent); - $plan->attribute = $parentStage->attribute; - $plan->acl = $parentStage->acl; - $parentPercent = $parentStage->percent; - - $childrenTotalPercent = $this->getTotalPercent($parentStage, true); - $childrenTotalPercent = $plan->parent == $oldPlan->parent ? ($childrenTotalPercent - $oldPlan->percent + $plan->percent) : ($childrenTotalPercent + $plan->percent); - if($childrenTotalPercent > 100) return dao::$errors['percent'][] = $this->lang->programplan->error->percentOver; - - /* If child plan has milestone, update parent plan set milestone eq 0 . */ - if($plan->milestone and $parentStage->milestone) $this->dao->update(TABLE_PROJECT)->set('milestone')->eq(0)->where('id')->eq($oldPlan->parent)->exec(); - } - else - { - /* Synchronously update sub-phase permissions. */ - $childrenIDList = $this->dao->select('*')->from(TABLE_PROJECT)->where('parent')->eq($oldPlan->id)->fetch('id'); - if(!empty($childrenIDList)) $this->dao->update(TABLE_PROJECT)->set('acl')->eq($plan->acl)->where('id')->in($childrenIDList)->exec(); - - /* The workload of the parent plan cannot exceed 100%. */ - $oldPlan->parent = $plan->parent; - $totalPercent = $this->getTotalPercent($oldPlan); - $totalPercent = $totalPercent + $plan->percent; - if($totalPercent > 100) return dao::$errors['percent'][] = $this->lang->programplan->error->percentOver; - } - - /* Set planDuration and realDuration. */ - $plan->planDuration = $this->getDuration($plan->begin, $plan->end); - $plan->realDuration = $this->getDuration($plan->realBegan, $plan->realEnd); - - if($planChanged) $plan->version = $oldPlan->version + 1; - if(empty($plan->parent)) $plan->parent = $projectID; - - $this->dao->update(TABLE_PROJECT)->data($plan) - ->autoCheck() - ->batchCheck($this->config->programplan->edit->requiredFields, 'notempty') - ->checkIF($plan->end != '0000-00-00', 'end', 'ge', $plan->begin) - ->checkIF($plan->percent != false, 'percent', 'float') - ->where('id')->eq($planID) - ->exec(); - - if(dao::isError()) return false; - $this->setTreePath($planID); - if($plan->acl != 'open') $this->loadModel('user')->updateUserView($planID, 'sprint'); - - if($planChanged) - { - $spec = new stdclass(); - $spec->project = $planID; - $spec->version = $plan->version; - $spec->name = $plan->name; - $spec->milestone = $plan->milestone; - $spec->begin = $plan->begin; - $spec->end = $plan->end; - - $this->dao->insert(TABLE_PROJECTSPEC)->data($spec)->exec(); - } - - return common::createChanges($oldPlan, $plan); - } - - /** - * Print cell. - * - * @param int $col - * @param int $plan - * @param int $users - * @param int $projectID - * @access public - * @return string - */ - public function printCell($col, $plan, $users, $projectID) - { - $id = $col->id; - if($col->show) - { - $class = 'c-' . $id; - $title = ''; - $idList = array('id','name','output','percent','attribute','version','begin','end','realBegan','realEnd', 'openedBy', 'openedDate'); - if(in_array($id,$idList)) - { - $class .= ' text-left'; - $title = "title='{$plan->$id}'"; - if($id == 'output') $class .= ' text-ellipsis'; - if(!empty($plan->children)) $class .= ' has-child'; - } - else - { - $class .= ' text-center'; - } - if($id == 'actions') $class .= ' c-actions'; - - echo ""; - if(isset($this->config->bizVersion)) $this->loadModel('flow')->printFlowCell('programplan', $plan, $id); - switch($id) - { - case 'id': - echo sprintf('%03d', $plan->id); - break; - case 'name': - $milestoneFlag = $plan->milestone ? " lang->programplan->milestone}'>" : ''; - if($plan->grade > 1) echo '' . $this->lang->programplan->childrenAB . ' '; - echo $plan->name . $milestoneFlag; - if(!empty($plan->children)) echo ''; - break; - case 'percent': - echo $plan->percent . '%'; - break; - case 'attribute': - echo zget($this->lang->stage->typeList, $plan->attribute, ''); - break; - case 'begin': - echo $plan->begin; - break; - case 'end': - echo $plan->end; - break; - case 'realBegan': - echo $plan->realBegan; - break; - case 'realEnd': - echo $plan->realEnd; - break; - case 'output': - echo $plan->output; - break; - case 'version': - echo $plan->version; - break; - case 'editedBy': - echo zget($users, $plan->editedBy); - break; - case 'editedDate': - echo substr($plan->editedDate, 5, 11); - break; - case 'openedBy': - echo zget($users, $plan->openedBy); - break; - case 'openedDate': - echo substr($plan->openedDate, 5, 11); - break; - case 'actions': - common::printIcon('project', 'start', "projectID={$plan->id}", $plan, 'list', '', '', 'iframe', true); - $class = !empty($plan->children) ? 'disabled' : ''; - common::printIcon('task', 'create', "projectID={$plan->id}", $plan, 'list', '', '', $class); - - if($plan->grade == 1 && $this->isCreateTask($plan->id)) - { - common::printIcon('programplan', 'create', "program={$plan->parent}&productID=$plan->product&planID=$plan->id", $plan, 'list', 'split', '', '', '', '', $this->lang->programplan->createSubPlan); - } - else - { - $disabled = ($plan->grade == 2) ? ' disabled' : ''; - echo html::a('javascript:alert("' . $this->lang->programplan->error->createdTask . '");', '', '', 'class="btn ' . $disabled . '"'); - } - - common::printIcon('programplan', 'edit', "planID=$plan->id&projectID=$projectID", $plan, 'list', '', '', 'iframe', true); - - $disabled = !empty($plan->children) ? ' disabled' : ''; - if(common::hasPriv('project', 'delete', $plan)) - { - common::printIcon('project', 'delete', "planID=$plan->id&confirm=no", $plan, 'list', 'trash', 'hiddenwin' , $disabled); - } - break; - } - echo ''; - } - } - - /** - * Is create task. - * - * @param int $planID - * @access public - * @return bool - */ - public function isCreateTask($planID) - { - $task = $this->dao->select('*')->from(TABLE_TASK)->where('project')->eq($planID)->limit(1)->fetch(); - return empty($task) ? true : false; - } - - /** - * Is clickable. - * - * @param int $plan - * @param int $action - * @static - * @access public - * @return bool - */ - public static function isClickable($plan, $action) - { - $action = strtolower($action); - - if($action == 'create' and $plan->grade > 1) return false; - - return true; - } - - /** - * Get the stage set to milestone. - * - * @param int $projectID - * @access public - * @return object - */ - public function getMilestones($projectID = 0) - { - return $this->dao->select('id, name')->from(TABLE_PROJECT) - ->where('project')->eq($projectID) - ->andWhere('type')->eq('stage') - ->andWhere('milestone')->eq(1) - ->andWhere('deleted')->eq(0) - ->orderBy('id_desc') - ->fetchPairs(); - } - - /** - * Get milestone by product. - * - * @param int $productID - * @access public - * @return object - */ - public function getMilestoneByProduct($productID) - { - return $this->dao->select('t1.id, t1.name')->from(TABLE_PROJECT)->alias('t1') - ->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id=t2.project') - ->where('t2.product')->eq($productID) - ->andWhere('t1.type')->eq('stage') - ->andWhere('t1.milestone')->eq(1) - ->andWhere('t1.deleted')->eq(0) - ->orderBy('t1.begin asc') - ->fetchPairs(); - } - - /** - * Get parent stage list. - * - * @param int $projectID - * @param int $planID - * @param int $productID - * @access public - * @return array - */ - public function getParentStageList($projectID, $planID, $productID) - { - $parentStage = $this->dao->select('t2.id, t2.name')->from(TABLE_PROJECTPRODUCT) - ->alias('t1')->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id') - ->where('t1.product')->eq($productID) - ->andWhere('t2.project')->eq($projectID) - ->andWhere('t2.grade')->eq(1) - ->beginIF(!$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->sprints)->fi() - ->orderBy('t2.id desc') - ->fetchPairs(); - - /* Remove the currently edited stage. */ - if(isset($parentStage[$planID])) unset($parentStage[$planID]); - - $plan = $this->getByID($planID); - foreach($parentStage as $key => $stage) - { - $isCreate = $this->isCreateTask($key); - if($isCreate === false and $key != $plan->parent) unset($parentStage[$key]); - } - $parentStage[0] = $this->lang->programplan->emptyParent; - ksort($parentStage); - - return $parentStage; - } -} diff --git a/module/programplan/view/browse.html.php b/module/programplan/view/browse.html.php deleted file mode 100644 index c732b2be1d..0000000000 --- a/module/programplan/view/browse.html.php +++ /dev/null @@ -1,38 +0,0 @@ - - * @package programplan - * @version $Id: browse.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $ - * @link http://www.zentao.net - */ -?> - - - -
- -
-

- programplan->noData;?> - - createLink('programplan', 'create', "projectID=$projectID&productID=$productID"), " " . $lang->programplan->create, '', "class='btn btn-info'");?> - -

-
- - - - -
- - diff --git a/module/programplan/view/create.html.php b/module/programplan/view/create.html.php deleted file mode 100644 index 09f2d6f46f..0000000000 --- a/module/programplan/view/create.html.php +++ /dev/null @@ -1,183 +0,0 @@ - - * @package programplan - * @version $Id: create.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $ - * @link http://www.zentao.net - */ -?> - - - - - - -programplan->name : $lang->programplan->subStageName;?> -
-
- - - - - - - - - - - - - config->qcVersion)):?> - - - - - - - - - - - - - - - - - - - - config->qcVersion)):?> - - - - - - - - - - - setMilestone ? '' : "disabled='disabled'"?> - id);?> - - - - - - - - - - - config->qcVersion)):?> - output) ? 0 : explode(',', $plan->output);?> - - - - - - - - - - - - - - - - - - - - config->qcVersion)):?> - - - - - - - - - - - - - -
- programplan->percent;?> - - - - programplan->attribute;?>project->acl;?>programplan->milestone;?>programplan->begin;?>programplan->end;?>programplan->realBegan;?>programplan->realEnd;?>programplan->output;?> actions;?>
-
- - % -
-
stage->typeList, $stage->type, "class='form-control'");?>project->aclList, 'open', "class='form-control' $class");?>programplan->milestoneList, 0);?> - - -
-
- - % -
-
stage->typeList, $plan->attribute, "class='form-control'");?>project->aclList, $plan->acl, "class='form-control' $class");?>programplan->milestoneList, $plan->milestone, $disabled);?> - -
-
- - % -
-
stage->typeList, '', "class='form-control'");?>project->aclList, 'open', "class='form-control' $class");?>programplan->milestoneList, 0);?> - - -
- -
-
-
- - - - - - - - - - - - - config->qcVersion)):?> - - - - - -
- - diff --git a/module/programplan/view/edit.html.php b/module/programplan/view/edit.html.php deleted file mode 100644 index adb92bb94f..0000000000 --- a/module/programplan/view/edit.html.php +++ /dev/null @@ -1,107 +0,0 @@ - - * @package programplan - * @version $Id: edit.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $ - * @link http://www.zentao.net - */ -?> - - -
-
-
-

programplan->edit;?>

-
-
- - - - - - - - - - - - - - - " id="attributeType"> - - - - setMilestone):?> - - - - - - milestone);?> - - - - grade == 2 ? "disabled='disabled'" : '';?> - - - - - - - - - - - config->qcVersion)):?> - - - - - - - - - -
programplan->parent;?>parent, "class='form-control chosen '");?>
programplan->name;?> name, "class='form-control'");?>
programplan->percent;?> -
- percent, "class='form-control'");?> -
% -
-
programplan->attribute;?> stage->typeList, $plan->attribute, "class='form-control'");?>
programplan->milestone;?> programplan->milestoneList, $plan->milestone);?>
project->acl;?> project->aclList, $plan->acl, "class='form-control' $class");?>
programplan->planDateRange;?> -
- begin, "class='form-control form-date'");?> - project->to;?> - end, "class='form-control form-date'");?> -
-
programplan->realDateRange;?> -
- realBegan, "class='form-control form-date'");?> - project->to;?> - realEnd, "class='form-control form-date'");?> -
-
programplan->output;?> output, "class='form-control chosen ' multiple");?>
-
-
-
- - diff --git a/module/programplan/view/gantt.html.php b/module/programplan/view/gantt.html.php deleted file mode 100644 index f17dd5084e..0000000000 --- a/module/programplan/view/gantt.html.php +++ /dev/null @@ -1,422 +0,0 @@ - - * @package programplan - * @version $Id: gantt.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $ - * @link http://www.zentao.net - */ -?> - - -createLink('programplan', 'ajaxCustom'));?> - - -
-
-
- programplan->full, 'id="fullScreenBtn"', 'btn btn-primary btn-sm')?> - programplan->stageCustom, $selectCustom);?> -
-
-
-
-
-
- diff --git a/module/programplan/view/list.html.php b/module/programplan/view/list.html.php deleted file mode 100644 index 0468da3c59..0000000000 --- a/module/programplan/view/list.html.php +++ /dev/null @@ -1,89 +0,0 @@ - - * @package programplan - * @version $Id: list.html.php 4903 2013-06-26 05:32:59Z wyd621@gmail.com $ - * @link http://www.zentao.net - */ -?> -programplan->confirmDelete); -?> - -
-
- -
- datatable->getSetting('programplan'); - $widths = $this->datatable->setFixedFieldWidth($setting); - $widths['leftWidth'] = 300; - $columns = 0; - ?> - ' data-fixed-right-width='' data-checkbox-name='programplanList[]'> - - - - - - - - - - - - - - - - - $value) $this->programplan->printCell($value, $plan, $users, $projectID);?> - - children)):?> - - children as $key => $child):?> - - children)) ? ' table-child-bottom' : '';?> - - $value) $this->programplan->printCell($value, $child, $users, $projectID);?> - - - - - - -
idAB);?> programplan->name);?>programplan->percent);?>programplan->attribute);?>programplan->begin);?>programplan->end);?>programplan->realBegan);?>programplan->realEnd);?>actions;?>
-
- diff --git a/module/project/model.php b/module/project/model.php index 23016aaf9b..f8058067f5 100644 --- a/module/project/model.php +++ b/module/project/model.php @@ -355,8 +355,11 @@ class projectModel extends model if(!empty($sprint->percent)) $this->checkWorkload('create', $sprint->percent); /* Set planDuration and realDuration. */ - $sprint->planDuration = $this->loadModel('programplan')->getDuration($sprint->begin, $sprint->end); - if(!empty($sprint->realBegan) and !empty($sprint->realEnd)) $sprint->realDuration = $this->loadModel('programplan')->getDuration($sprint->realBegan, $sprint->realEnd); + if($this->config->maxVersion) + { + $sprint->planDuration = $this->loadModel('programplan')->getDuration($sprint->begin, $sprint->end); + if(!empty($sprint->realBegan) and !empty($sprint->realEnd)) $sprint->realDuration = $this->loadModel('programplan')->getDuration($sprint->realBegan, $sprint->realEnd); + } $sprint = $this->loadModel('file')->processImgURL($sprint, $this->config->project->editor->create['id'], $this->post->uid); $this->dao->insert(TABLE_PROJECT)->data($sprint) @@ -380,7 +383,7 @@ class projectModel extends model $this->file->updateObjectID($this->post->uid, $projectID, 'project'); /* Update the path. */ - $this->loadModel('programplan')->setTreePath($projectID); + if($this->config->maxVersion) $this->loadModel('programplan')->setTreePath($projectID); /* Copy team of project. */ if($copyProjectID != '') @@ -485,8 +488,11 @@ class projectModel extends model if(!empty($project->percent)) $this->checkWorkload('update', $project->percent, $oldProject); /* Set planDuration and realDuration. */ - $project->planDuration = $this->loadModel('programplan')->getDuration($project->begin, $project->end); - if(!empty($project->realBegan) and !empty($project->realEnd)) $project->realDuration = $this->loadModel('programplan')->getDuration($project->realBegan, $project->realEnd); + if($this->config->maxVersion) + { + $project->planDuration = $this->loadModel('programplan')->getDuration($project->begin, $project->end); + if(!empty($project->realBegan) and !empty($project->realEnd)) $project->realDuration = $this->loadModel('programplan')->getDuration($project->realBegan, $project->realEnd); + } /* Update data. */ $this->dao->update(TABLE_PROJECT)->data($project) diff --git a/module/testsuite/model.php b/module/testsuite/model.php index a09c797328..94f1342e6c 100644 --- a/module/testsuite/model.php +++ b/module/testsuite/model.php @@ -286,7 +286,7 @@ class testsuiteModel extends model $linkedCases = $this->getLinkedCases($suite->id, 'id_desc', null, $append = false); $cases = $this->dao->select('*')->from(TABLE_CASE)->where($query) ->andWhere('id')->notIN(array_keys($linkedCases)) - ->andWhere('PRJ')->eq($this->session->PRJ) + ->beginIF($this->lang->navGroup->testsuite != 'qa')->andWhere('PRJ')->eq($this->session->PRJ)->fi() ->andWhere('deleted')->eq(0) ->orderBy('id desc') ->page($pager) diff --git a/module/testtask/model.php b/module/testtask/model.php index 5fe3d8a50d..8ba40def67 100644 --- a/module/testtask/model.php +++ b/module/testtask/model.php @@ -455,7 +455,7 @@ class testtaskModel extends model { return $this->dao->select('*')->from(TABLE_CASE)->where($query) ->andWhere('id')->notIN($linkedCases) - ->andWhere('PRJ')->eq($this->session->PRJ) + ->beginIF($this->lang->navGroup->testtask != 'qa')->andWhere('PRJ')->eq($this->session->PRJ)->fi() ->andWhere('status')->ne('wait') ->andWhere('type')->ne('unit') ->beginIF($task->branch)->andWhere('branch')->in("0,$task->branch")->fi() @@ -484,7 +484,7 @@ class testtaskModel extends model { $cases = $this->dao->select('*')->from(TABLE_CASE) ->where($query) - ->andWhere('PRJ')->eq($this->session->PRJ) + ->beginIF($this->lang->navGroup->testtask != 'qa')->andWhere('PRJ')->eq($this->session->PRJ)->fi() ->andWhere('product')->eq($productID) ->andWhere('status')->ne('wait') ->beginIF($linkedCases)->andWhere('id')->notIN($linkedCases)->fi() @@ -517,7 +517,7 @@ class testtaskModel extends model if($bugs) { $cases = $this->dao->select('*')->from(TABLE_CASE)->where($query) - ->andWhere('PRJ')->eq($this->session->PRJ) + ->beginIF($this->lang->navGroup->testtask != 'qa')->andWhere('PRJ')->eq($this->session->PRJ)->fi() ->andWhere('product')->eq($productID) ->andWhere('status')->ne('wait') ->beginIF($linkedCases)->andWhere('id')->notIN($linkedCases)->fi() @@ -550,7 +550,7 @@ class testtaskModel extends model return $this->dao->select('t1.*,t2.version as version')->from(TABLE_CASE)->alias('t1') ->leftJoin(TABLE_SUITECASE)->alias('t2')->on('t1.id=t2.case') ->where($query) - ->andWhere('t1.PRJ')->eq($this->session->PRJ) + ->beginIF($this->lang->navGroup->testtask != 'qa')->andWhere('t1.PRJ')->eq($this->session->PRJ)->fi() ->andWhere('t2.suite')->eq((int)$suite) ->andWhere('t1.product')->eq($productID) ->andWhere('status')->ne('wait') @@ -585,7 +585,7 @@ class testtaskModel extends model ->where($query) ->andWhere('t1.id')->notin($linkedCases) ->andWhere('t2.task')->eq($testTask) - ->andWhere('t1.PRJ')->eq($this->session->PRJ) + ->beginIF($this->lang->navGroup->testtask != 'qa')->andWhere('t1.PRJ')->eq($this->session->PRJ)->fi() ->andWhere('t1.status')->ne('wait') ->page($pager) ->fetchAll();