* Divide program/project/execution.

This commit is contained in:
Yagami
2021-03-03 17:45:28 +08:00
parent 76baa276fd
commit 76cb3cee0b
70 changed files with 3148 additions and 5358 deletions
+2 -1
View File
@@ -599,7 +599,7 @@ $lang->menugroup->testtask = 'qa';
$lang->menugroup->testsuite = 'qa';
$lang->menugroup->caselib = 'qa';
$lang->menugroup->testreport = 'qa';
$lang->menugroup->report = 'reporting';
$lang->menugroup->report = 'report';
$lang->menugroup->people = 'admin';
$lang->menugroup->dept = 'company';
$lang->menugroup->todo = 'my';
@@ -627,6 +627,7 @@ $lang->navGroup->todo = 'my';
$lang->navGroup->effort = 'my';
$lang->navGroup->score = 'my';
$lang->navGroup->program = 'program';
$lang->navGroup->personnel = 'program';
$lang->navGroup->product = 'product';
+1
View File
@@ -625,6 +625,7 @@ $lang->navGroup->todo = 'my';
$lang->navGroup->effort = 'my';
$lang->navGroup->score = 'my';
$lang->navGroup->program = 'program';
$lang->navGroup->personnel = 'program';
$lang->navGroup->product = 'product';
+6 -6
View File
@@ -8,11 +8,11 @@ $config->custom->canAdd['testtask'] = 'priList';
$config->custom->canAdd['todo'] = 'priList,typeList';
$config->custom->canAdd['user'] = 'roleList';
$config->custom->canAdd['block'] = '';
$config->custom->canAdd['program'] = 'unitList';
$config->custom->canAdd['project'] = 'unitList';
$config->custom->noModuleMenu = array();
$config->custom->requiredModules[10] = 'program';
$config->custom->requiredModules[10] = 'project';
$config->custom->requiredModules[15] = 'product';
$config->custom->requiredModules[20] = 'story';
$config->custom->requiredModules[25] = 'productplan';
@@ -33,10 +33,10 @@ $config->custom->requiredModules[80] = 'doc';
$config->custom->requiredModules[85] = 'user';
$config->custom->fieldList['program']['PGMCreate'] = 'budget,PM,desc';
$config->custom->fieldList['program']['PGMEdit'] = 'budget,PM,desc';
$config->custom->fieldList['program']['PRJCreate'] = 'budget,PM,desc';
$config->custom->fieldList['program']['PRJEdit'] = 'budget,PM,desc';
$config->custom->fieldList['program']['create'] = 'budget,PM,desc';
$config->custom->fieldList['program']['edit'] = 'budget,PM,desc';
$config->custom->fieldList['project']['create'] = 'budget,PM,desc';
$config->custom->fieldList['project']['edit'] = 'budget,PM,desc';
$config->custom->fieldList['product']['create'] = 'PO,QD,RD,type,desc';
$config->custom->fieldList['product']['edit'] = 'PO,QD,RD,type,desc,status';
$config->custom->fieldList['story']['create'] = 'module,plan,source,pri,estimate,keywords';
+8 -8
View File
@@ -19,7 +19,7 @@ class custom extends control
*/
public function index()
{
if(common::hasPriv('custom', 'set')) die(js::locate(inlink('set', "module=program&field=" . key($this->lang->custom->program->fields))));
if(common::hasPriv('custom', 'set')) die(js::locate(inlink('set', "module=project&field=" . key($this->lang->custom->project->fields))));
if(common::hasPriv('custom', 'product')) die(js::locate(inlink('product')));
if(common::hasPriv('custom', 'project')) die(js::locate(inlink('project')));
@@ -48,7 +48,7 @@ class custom extends control
$this->app->loadLang($module);
$fieldList = zget($this->lang->$module, $field, '');
if($module == 'program' and $field == 'unitList')
if($module == 'project' and $field == 'unitList')
{
$this->app->loadConfig($module);
$unitList = zget($this->config->$module, 'unitList', '');
@@ -65,9 +65,9 @@ class custom extends control
}
if($module == 'task' and $field == 'hours')
{
$this->app->loadConfig('project');
$this->view->weekend = $this->config->project->weekend;
$this->view->workhours = $this->config->project->defaultWorkhours;
$this->app->loadConfig('execution');
$this->view->weekend = $this->config->execution->weekend;
$this->view->workhours = $this->config->execution->defaultWorkhours;
}
if($module == 'bug' and $field == 'longlife')
{
@@ -90,7 +90,7 @@ class custom extends control
if(strtolower($this->server->request_method) == "post")
{
if($module == 'program' and $field == 'unitList')
if($module == 'project' and $field == 'unitList')
{
$data = fixer::input('post')->join('unitList', ',')->get();
if(empty($data->unitList)) $this->send(array('result' => 'fail', 'message' => $this->lang->custom->currencyNotEmpty));
@@ -111,7 +111,7 @@ class custom extends control
}
elseif($module == 'task' and $field == 'hours')
{
$this->loadModel('setting')->setItems('system.project', fixer::input('post')->get());
$this->loadModel('setting')->setItems('system.execution', fixer::input('post')->get());
}
elseif($module == 'bug' and $field == 'longlife')
{
@@ -466,7 +466,7 @@ class custom extends control
* @access public
* @return void
*/
public function project()
public function execution()
{
if($_POST)
{
-27
View File
@@ -1,27 +0,0 @@
$(function()
{
$("[name='URAndSR']").change(function()
{
if($(this).val() == 0)
{
$('#URSRName').addClass('hidden');
$('#customURSR').addClass('hidden');
}
else
{
$('#URSRName').removeClass('hidden');
}
});
$('[name^="URSRCustom"]').change(function()
{
if($(this).attr('checked'))
{
$('#customURSR').removeClass('hidden');
}
else
{
$('#customURSR').addClass('hidden');
}
})
})
+16 -16
View File
@@ -19,7 +19,7 @@ $lang->custom->score = '积分';
$lang->custom->timezone = '时区';
$lang->custom->scoreReset = '重置积分';
$lang->custom->scoreTitle = '积分功能';
$lang->custom->project = $lang->sprintCommon;
$lang->custom->execution = $lang->executionCommon;
$lang->custom->product = $lang->productCommon;
$lang->custom->convertFactor = '换算系数';
$lang->custom->region = '区间';
@@ -74,22 +74,22 @@ $lang->custom->numberError = '区间必须大于零';
$lang->custom->closedProject = '已关闭' . $lang->sprintCommon;
$lang->custom->closedProduct = '已关闭' . $lang->productCommon;
$lang->custom->object['program'] = '项目';
$lang->custom->object['product'] = $lang->productCommon;
$lang->custom->object['project'] = $lang->sprintCommon;
$lang->custom->object['story'] = $lang->SRCommon;
$lang->custom->object['task'] = '任务';
$lang->custom->object['bug'] = 'Bug';
$lang->custom->object['testcase'] = '用例';
$lang->custom->object['testtask'] = '版本';
$lang->custom->object['todo'] = '待办';
$lang->custom->object['user'] = '用户';
$lang->custom->object['block'] = '区块';
$lang->custom->object['project'] = '项目';
$lang->custom->object['product'] = $lang->productCommon;
$lang->custom->object['execution'] = $lang->executionCommon;
$lang->custom->object['story'] = $lang->SRCommon;
$lang->custom->object['task'] = '任务';
$lang->custom->object['bug'] = 'Bug';
$lang->custom->object['testcase'] = '用例';
$lang->custom->object['testtask'] = '版本';
$lang->custom->object['todo'] = '待办';
$lang->custom->object['user'] = '用户';
$lang->custom->object['block'] = '区块';
$lang->custom->program = new stdClass();
$lang->custom->program->currencySetting = '货币设置';
$lang->custom->program->defaultCurrency = '默认货币';
$lang->custom->program->fields['unitList'] = '预算单位';
$lang->custom->project = new stdClass();
$lang->custom->project->currencySetting = '货币设置';
$lang->custom->project->defaultCurrency = '默认货币';
$lang->custom->project->fields['unitList'] = '预算单位';
$lang->custom->story = new stdClass();
$lang->custom->story->fields['priList'] = '优先级';
@@ -35,7 +35,7 @@
<script>
$(function()
{
$('#mainMenu #projectTab').addClass('btn-active-text');
$('#mainMenu #executionTab').addClass('btn-active-text');
})
</script>
<?php include '../../common/view/footer.html.php';?>
+2 -2
View File
@@ -4,8 +4,8 @@
<?php
foreach($lang->custom->object as $object => $name)
{
if(strpos('project|product', $object) !== false) common::printLink('custom', $object, "", "<span class='text'>{$lang->custom->$object}</span>", '', "class='btn btn-link' id='{$object}Tab'");
if(strpos('project|product', $object) === false) common::printLink('custom', 'set', "module=$object&field=" . key($lang->custom->{$object}->fields), "<span class='text'>{$name}</span>", '', "class='btn btn-link' id='{$object}Tab'");
if(strpos('execution|product', $object) !== false) common::printLink('custom', $object, "", "<span class='text'>{$lang->custom->$object}</span>", '', "class='btn btn-link' id='{$object}Tab'");
if(strpos('execution|product', $object) === false) common::printLink('custom', 'set', "module=$object&field=" . key($lang->custom->{$object}->fields), "<span class='text'>{$name}</span>", '', "class='btn btn-link' id='{$object}Tab'");
}
foreach($lang->custom->system as $sysObject)
+5 -5
View File
@@ -54,17 +54,17 @@ EOT;
<strong><?php echo $lang->custom->object[$module] . $lang->arrow . $lang->custom->$module->fields[$field]?></strong>
</div>
</div>
<?php if($module == 'program' and $field == 'unitList'):?>
<?php if($module == 'project' and $field == 'unitList'):?>
<table class='table table-form'>
<tr>
<th class='<?php echo strpos($this->app->getClientLang(), 'zh') === false ? 'w-120px' : 'w-70px';?> text-left'><?php echo $lang->custom->program->currencySetting;?></th>
<th class='<?php echo strpos($this->app->getClientLang(), 'zh') === false ? 'w-120px' : 'w-70px';?> text-left'><?php echo $lang->custom->project->currencySetting;?></th>
</tr>
<tr>
<td colspan='5'><?php echo html::checkbox('unitList', $lang->program->unitList, $unitList);?></td>
<td colspan='5'><?php echo html::checkbox('unitList', $lang->project->unitList, $unitList);?></td>
</tr>
<tr>
<th class='text-left'><?php echo $lang->custom->program->defaultCurrency;?></th>
<td><?php echo html::select('defaultCurrency', $lang->program->unitList, $defaultCurrency, "class='form-control chosen' required");?></td>
<th class='text-left'><?php echo $lang->custom->project->defaultCurrency;?></th>
<td><?php echo html::select('defaultCurrency', $lang->project->unitList, $defaultCurrency, "class='form-control chosen' required");?></td>
</tr>
<tr>
<td colspan='4' class='text-center'><?php echo html::submitButton();?></td>
+94 -94
View File
@@ -1,109 +1,109 @@
<?php
$config->project = new stdclass();
$config->project->defaultWorkhours = '7.0';
$config->project->orderBy = 'isDone,status,order_desc';
$config->project->maxBurnDay = '31';
$config->project->weekend = '2';
$config->execution = new stdclass();
$config->execution->defaultWorkhours = '7.0';
$config->execution->orderBy = 'isDone,status,order_desc';
$config->execution->maxBurnDay = '31';
$config->execution->weekend = '2';
$config->project->list = new stdclass();
$config->project->list->exportFields = 'id,name,code,PM,end,status,totalEstimate,totalConsumed,totalLeft,progress';
$config->execution->list = new stdclass();
$config->execution->list->exportFields = 'id,name,code,PM,end,status,totalEstimate,totalConsumed,totalLeft,progress';
$config->project->modelList['scrum'] = 'sprint';
$config->project->modelList['waterfall'] = 'stage';
$config->execution->modelList['scrum'] = 'sprint';
$config->execution->modelList['waterfall'] = 'stage';
global $lang, $app;
$app->loadLang('task');
$config->project->task = new stdclass();
$config->project->create = new stdclass();
$config->project->edit = new stdclass();
$config->project->create->requiredFields = 'name,code,begin,end';
$config->project->edit->requiredFields = 'name,code,begin,end';
$config->execution->task = new stdclass();
$config->execution->create = new stdclass();
$config->execution->edit = new stdclass();
$config->execution->create->requiredFields = 'name,code,begin,end';
$config->execution->edit->requiredFields = 'name,code,begin,end';
$config->project->customBatchEditFields = 'days,type,teamname,status,desc,PO,QD,PM,RD';
$config->execution->customBatchEditFields = 'days,type,teamname,status,desc,PO,QD,PM,RD';
$config->project->custom = new stdclass();
$config->project->custom->batchEditFields = 'days,status,PM';
$config->execution->custom = new stdclass();
$config->execution->custom->batchEditFields = 'days,status,PM';
$config->project->editor = new stdclass();
$config->project->editor->create = array('id' => 'desc', 'tools' => 'simpleTools');
$config->project->editor->edit = array('id' => 'desc', 'tools' => 'simpleTools');
$config->project->editor->putoff = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->activate = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->close = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->start = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->suspend = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->tree = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->view = array('id' => 'comment,lastComment', 'tools' => 'simpleTools');
$config->execution->editor = new stdclass();
$config->execution->editor->create = array('id' => 'desc', 'tools' => 'simpleTools');
$config->execution->editor->edit = array('id' => 'desc', 'tools' => 'simpleTools');
$config->execution->editor->putoff = array('id' => 'comment', 'tools' => 'simpleTools');
$config->execution->editor->activate = array('id' => 'comment', 'tools' => 'simpleTools');
$config->execution->editor->close = array('id' => 'comment', 'tools' => 'simpleTools');
$config->execution->editor->start = array('id' => 'comment', 'tools' => 'simpleTools');
$config->execution->editor->suspend = array('id' => 'comment', 'tools' => 'simpleTools');
$config->execution->editor->tree = array('id' => 'comment', 'tools' => 'simpleTools');
$config->execution->editor->view = array('id' => 'comment,lastComment', 'tools' => 'simpleTools');
$config->project->search['module'] = 'task';
$config->project->search['fields']['name'] = $lang->task->name;
$config->project->search['fields']['id'] = $lang->task->id;
$config->project->search['fields']['status'] = $lang->task->status;
$config->project->search['fields']['desc'] = $lang->task->desc;
$config->project->search['fields']['assignedTo'] = $lang->task->assignedTo;
$config->project->search['fields']['pri'] = $lang->task->pri;
$config->execution->search['module'] = 'task';
$config->execution->search['fields']['name'] = $lang->task->name;
$config->execution->search['fields']['id'] = $lang->task->id;
$config->execution->search['fields']['status'] = $lang->task->status;
$config->execution->search['fields']['desc'] = $lang->task->desc;
$config->execution->search['fields']['assignedTo'] = $lang->task->assignedTo;
$config->execution->search['fields']['pri'] = $lang->task->pri;
$config->project->search['fields']['project'] = $lang->task->execution;
$config->project->search['fields']['module'] = $lang->task->module;
$config->project->search['fields']['estimate'] = $lang->task->estimate;
$config->project->search['fields']['left'] = $lang->task->left;
$config->project->search['fields']['consumed'] = $lang->task->consumed;
$config->project->search['fields']['type'] = $lang->task->type;
$config->project->search['fields']['fromBug'] = $lang->task->fromBug;
$config->project->search['fields']['closedReason'] = $lang->task->closedReason;
$config->execution->search['fields']['execution'] = $lang->task->execution;
$config->execution->search['fields']['module'] = $lang->task->module;
$config->execution->search['fields']['estimate'] = $lang->task->estimate;
$config->execution->search['fields']['left'] = $lang->task->left;
$config->execution->search['fields']['consumed'] = $lang->task->consumed;
$config->execution->search['fields']['type'] = $lang->task->type;
$config->execution->search['fields']['fromBug'] = $lang->task->fromBug;
$config->execution->search['fields']['closedReason'] = $lang->task->closedReason;
$config->project->search['fields']['openedBy'] = $lang->task->openedBy;
$config->project->search['fields']['finishedBy'] = $lang->task->finishedBy;
$config->project->search['fields']['closedBy'] = $lang->task->closedBy;
$config->project->search['fields']['canceledBy'] = $lang->task->canceledBy;
$config->project->search['fields']['lastEditedBy'] = $lang->task->lastEditedBy;
$config->execution->search['fields']['openedBy'] = $lang->task->openedBy;
$config->execution->search['fields']['finishedBy'] = $lang->task->finishedBy;
$config->execution->search['fields']['closedBy'] = $lang->task->closedBy;
$config->execution->search['fields']['canceledBy'] = $lang->task->canceledBy;
$config->execution->search['fields']['lastEditedBy'] = $lang->task->lastEditedBy;
$config->project->search['fields']['mailto'] = $lang->task->mailto;
$config->project->search['fields']['finishedList'] = $lang->task->finishedList;
$config->execution->search['fields']['mailto'] = $lang->task->mailto;
$config->execution->search['fields']['finishedList'] = $lang->task->finishedList;
$config->project->search['fields']['openedDate'] = $lang->task->openedDate;
$config->project->search['fields']['deadline'] = $lang->task->deadline;
$config->project->search['fields']['estStarted'] = $lang->task->estStarted;
$config->project->search['fields']['realStarted'] = $lang->task->realStarted;
$config->project->search['fields']['assignedDate'] = $lang->task->assignedDate;
$config->project->search['fields']['finishedDate'] = $lang->task->finishedDate;
$config->project->search['fields']['closedDate'] = $lang->task->closedDate;
$config->project->search['fields']['canceledDate'] = $lang->task->canceledDate;
$config->project->search['fields']['lastEditedDate'] = $lang->task->lastEditedDate;
$config->execution->search['fields']['openedDate'] = $lang->task->openedDate;
$config->execution->search['fields']['deadline'] = $lang->task->deadline;
$config->execution->search['fields']['estStarted'] = $lang->task->estStarted;
$config->execution->search['fields']['realStarted'] = $lang->task->realStarted;
$config->execution->search['fields']['assignedDate'] = $lang->task->assignedDate;
$config->execution->search['fields']['finishedDate'] = $lang->task->finishedDate;
$config->execution->search['fields']['closedDate'] = $lang->task->closedDate;
$config->execution->search['fields']['canceledDate'] = $lang->task->canceledDate;
$config->execution->search['fields']['lastEditedDate'] = $lang->task->lastEditedDate;
$config->project->search['params']['name'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
$config->project->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->statusList);
$config->project->search['params']['desc'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
$config->project->search['params']['assignedTo'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['pri'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->priList);
$config->execution->search['params']['name'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
$config->execution->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->statusList);
$config->execution->search['params']['desc'] = array('operator' => 'include', 'control' => 'input', 'values' => '');
$config->execution->search['params']['assignedTo'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->execution->search['params']['pri'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->priList);
$config->project->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => '');
$config->project->search['params']['module'] = array('operator' => 'belong', 'control' => 'select', 'values' => '');
$config->project->search['params']['estimate'] = array('operator' => '=', 'control' => 'input', 'values' => '');
$config->project->search['params']['left'] = array('operator' => '=', 'control' => 'input', 'values' => '');
$config->project->search['params']['consumed'] = array('operator' => '=', 'control' => 'input', 'values' => '');
$config->project->search['params']['type'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->typeList);
$config->project->search['params']['fromBug'] = array('operator' => '=', 'control' => 'input', 'values' => $lang->task->typeList);
$config->project->search['params']['closedReason'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->reasonList);
$config->execution->search['params']['execution'] = array('operator' => '=', 'control' => 'select', 'values' => '');
$config->execution->search['params']['module'] = array('operator' => 'belong', 'control' => 'select', 'values' => '');
$config->execution->search['params']['estimate'] = array('operator' => '=', 'control' => 'input', 'values' => '');
$config->execution->search['params']['left'] = array('operator' => '=', 'control' => 'input', 'values' => '');
$config->execution->search['params']['consumed'] = array('operator' => '=', 'control' => 'input', 'values' => '');
$config->execution->search['params']['type'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->typeList);
$config->execution->search['params']['fromBug'] = array('operator' => '=', 'control' => 'input', 'values' => $lang->task->typeList);
$config->execution->search['params']['closedReason'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->task->reasonList);
$config->project->search['params']['openedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['finishedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['closedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['cancelBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['lastEditedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->execution->search['params']['openedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->execution->search['params']['finishedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->execution->search['params']['closedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->execution->search['params']['cancelBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->execution->search['params']['lastEditedBy'] = array('operator' => '=', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['mailto'] = array('operator' => 'include', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['finishedList'] = array('operator' => 'include', 'control' => 'select', 'values' => 'users');
$config->execution->search['params']['mailto'] = array('operator' => 'include', 'control' => 'select', 'values' => 'users');
$config->execution->search['params']['finishedList'] = array('operator' => 'include', 'control' => 'select', 'values' => 'users');
$config->project->search['params']['openedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->project->search['params']['deadline'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->project->search['params']['estStarted'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->project->search['params']['realStarted'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->project->search['params']['assignedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->project->search['params']['finishedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->project->search['params']['closedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->project->search['params']['canceledDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->project->search['params']['lastEditedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->execution->search['params']['openedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->execution->search['params']['deadline'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->execution->search['params']['estStarted'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->execution->search['params']['realStarted'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->execution->search['params']['assignedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->execution->search['params']['finishedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->execution->search['params']['closedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->execution->search['params']['canceledDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->execution->search['params']['lastEditedDate'] = array('operator' => '=', 'control' => 'input', 'values' => '', 'class' => 'date');
$config->printKanban = new stdClass();
$config->printKanban->col['story'] = 1;
@@ -112,10 +112,10 @@ $config->printKanban->col['doing'] = 3;
$config->printKanban->col['done'] = 4;
$config->printKanban->col['closed'] = 5;
$config->project->kanbanSetting = new stdclass();
$config->project->kanbanSetting->colorList['wait'] = '#7EC5FF';
$config->project->kanbanSetting->colorList['doing'] = '#0991FF';
$config->project->kanbanSetting->colorList['pause'] = '#fdc137';
$config->project->kanbanSetting->colorList['done'] = '#0BD986';
$config->project->kanbanSetting->colorList['cancel'] = '#CBD0DB';
$config->project->kanbanSetting->colorList['closed'] = '#838A9D';
$config->execution->kanbanSetting = new stdclass();
$config->execution->kanbanSetting->colorList['wait'] = '#7EC5FF';
$config->execution->kanbanSetting->colorList['doing'] = '#0991FF';
$config->execution->kanbanSetting->colorList['pause'] = '#fdc137';
$config->execution->kanbanSetting->colorList['done'] = '#0BD986';
$config->execution->kanbanSetting->colorList['cancel'] = '#CBD0DB';
$config->execution->kanbanSetting->colorList['closed'] = '#838A9D';
+317 -313
View File
@@ -1,102 +1,102 @@
<?php
/**
* The project module English file of ZenTaoPMS.
* The execution module English file of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package project
* @package execution
* @version $Id: en.php 5094 2013-07-10 08:46:15Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
/* Fields. */
$lang->project->common = $lang->executionCommon;
$lang->project->allProjects = 'All ' . $lang->executionCommon . 's';
$lang->project->id = $lang->executionCommon . ' ID';
$lang->project->type = 'Type';
$lang->project->name = "{$lang->executionCommon} Name";
$lang->project->code = 'Code';
$lang->project->statge = 'Stage';
$lang->project->pri = 'Priority';
$lang->project->openedBy = 'OpenedBy';
$lang->project->openedDate = 'OpenedDate';
$lang->project->closedBy = 'ClosedBy';
$lang->project->closedDate = 'ClosedDate';
$lang->project->canceledBy = 'CanceledBy';
$lang->project->canceledDate = 'CanceledDate';
$lang->project->begin = 'Begin';
$lang->project->end = 'End';
$lang->project->dateRange = 'Duration';
$lang->project->to = 'To';
$lang->project->days = 'Available Days';
$lang->project->day = ' Days';
$lang->project->workHour = ' Hours';
$lang->project->workHourUnit = 'H';
$lang->project->totalHours = 'Available Hours';
$lang->project->totalDays = 'Available Days';
$lang->project->status = 'Status';
$lang->project->subStatus = 'Sub Status';
$lang->project->desc = 'Description';
$lang->project->owner = 'Owner';
$lang->project->PO = "{$lang->executionCommon} Owner";
$lang->project->PM = "{$lang->executionCommon} Manager";
$lang->project->QD = 'Test Manager';
$lang->project->RD = 'Release Manager';
$lang->project->qa = 'Test';
$lang->project->release = 'Release';
$lang->project->acl = 'Access Control';
$lang->project->teamname = 'Team Name';
$lang->project->order = "Rank {$lang->executionCommon}";
$lang->project->orderAB = "Rank";
$lang->project->products = "Link {$lang->productCommon}";
$lang->project->whitelist = 'Whitelist';
$lang->project->addWhitelist = 'Add Whitelist';
$lang->project->unbindWhielist = 'Remove Whitelist';
$lang->project->totalEstimate = 'Estimates';
$lang->project->totalConsumed = 'Cost';
$lang->project->totalLeft = 'Left';
$lang->project->progress = ' Progress';
$lang->project->hours = 'Estimates: %s, Cost: %s, Left: %s.';
$lang->project->viewBug = 'Bugs';
$lang->project->noProduct = "No {$lang->productCommon} yet.";
$lang->project->createStory = "Create Story";
$lang->project->storyTitle = "Story Name";
$lang->project->all = "All {$lang->executionCommon}s";
$lang->project->undone = 'Unfinished ';
$lang->project->unclosed = 'Unclosed';
$lang->project->typeDesc = "OPS {$lang->executionCommon} has no {$lang->SRCommon}, Bug, Build, or Test features.";
$lang->project->mine = 'Mine: ';
$lang->project->other = 'Others:';
$lang->project->deleted = 'Deleted';
$lang->project->delayed = 'Delayed';
$lang->project->product = $lang->project->products;
$lang->project->readjustTime = "Adjust {$lang->executionCommon} Begin and End";
$lang->project->readjustTask = 'Adjust Task Begin and End';
$lang->project->effort = 'Effort';
$lang->project->relatedMember = 'Team';
$lang->project->watermark = 'Exported by ZenTao';
$lang->project->burnXUnit = '(Date)';
$lang->project->burnYUnit = '(Hours)';
$lang->project->waitTasks = 'Waiting Tasks';
$lang->project->viewByUser = 'By User';
$lang->project->oneProduct = "Only one stage can be linked {$lang->productCommon}";
$lang->project->noLinkProduct = "Stage not linked {$lang->productCommon}";
$lang->project->recent = 'Recent visits: ';
$lang->execution->common = $lang->executionCommon;
$lang->execution->allProjects = 'All ' . $lang->executionCommon . 's';
$lang->execution->id = $lang->executionCommon . ' ID';
$lang->execution->type = 'Type';
$lang->execution->name = "{$lang->executionCommon} Name";
$lang->execution->code = 'Code';
$lang->execution->statge = 'Stage';
$lang->execution->pri = 'Priority';
$lang->execution->openedBy = 'OpenedBy';
$lang->execution->openedDate = 'OpenedDate';
$lang->execution->closedBy = 'ClosedBy';
$lang->execution->closedDate = 'ClosedDate';
$lang->execution->canceledBy = 'CanceledBy';
$lang->execution->canceledDate = 'CanceledDate';
$lang->execution->begin = 'Begin';
$lang->execution->end = 'End';
$lang->execution->dateRange = 'Duration';
$lang->execution->to = 'To';
$lang->execution->days = 'Available Days';
$lang->execution->day = ' Days';
$lang->execution->workHour = ' Hours';
$lang->execution->workHourUnit = 'H';
$lang->execution->totalHours = 'Available Hours';
$lang->execution->totalDays = 'Available Days';
$lang->execution->status = 'Status';
$lang->execution->subStatus = 'Sub Status';
$lang->execution->desc = 'Description';
$lang->execution->owner = 'Owner';
$lang->execution->PO = "{$lang->executionCommon} Owner";
$lang->execution->PM = "{$lang->executionCommon} Manager";
$lang->execution->QD = 'Test Manager';
$lang->execution->RD = 'Release Manager';
$lang->execution->qa = 'Test';
$lang->execution->release = 'Release';
$lang->execution->acl = 'Access Control';
$lang->execution->teamname = 'Team Name';
$lang->execution->order = "Rank {$lang->executionCommon}";
$lang->execution->orderAB = "Rank";
$lang->execution->products = "Link {$lang->productCommon}";
$lang->execution->whitelist = 'Whitelist';
$lang->execution->addWhitelist = 'Add Whitelist';
$lang->execution->unbindWhielist = 'Remove Whitelist';
$lang->execution->totalEstimate = 'Estimates';
$lang->execution->totalConsumed = 'Cost';
$lang->execution->totalLeft = 'Left';
$lang->execution->progress = ' Progress';
$lang->execution->hours = 'Estimates: %s, Cost: %s, Left: %s.';
$lang->execution->viewBug = 'Bugs';
$lang->execution->noProduct = "No {$lang->productCommon} yet.";
$lang->execution->createStory = "Create Story";
$lang->execution->storyTitle = "Story Name";
$lang->execution->all = "All {$lang->executionCommon}s";
$lang->execution->undone = 'Unfinished ';
$lang->execution->unclosed = 'Unclosed';
$lang->execution->typeDesc = "OPS {$lang->executionCommon} has no {$lang->SRCommon}, Bug, Build, or Test features.";
$lang->execution->mine = 'Mine: ';
$lang->execution->other = 'Others:';
$lang->execution->deleted = 'Deleted';
$lang->execution->delayed = 'Delayed';
$lang->execution->product = $lang->execution->products;
$lang->execution->readjustTime = "Adjust {$lang->executionCommon} Begin and End";
$lang->execution->readjustTask = 'Adjust Task Begin and End';
$lang->execution->effort = 'Effort';
$lang->execution->relatedMember = 'Team';
$lang->execution->watermark = 'Exported by ZenTao';
$lang->execution->burnXUnit = '(Date)';
$lang->execution->burnYUnit = '(Hours)';
$lang->execution->waitTasks = 'Waiting Tasks';
$lang->execution->viewByUser = 'By User';
$lang->execution->oneProduct = "Only one stage can be linked {$lang->productCommon}";
$lang->execution->noLinkProduct = "Stage not linked {$lang->productCommon}";
$lang->execution->recent = 'Recent visits: ';
$lang->project->start = 'Start';
$lang->project->activate = 'Activate';
$lang->project->putoff = 'Delay';
$lang->project->suspend = 'Suspend';
$lang->project->close = 'Close';
$lang->project->export = 'Export';
$lang->execution->start = 'Start';
$lang->execution->activate = 'Activate';
$lang->execution->putoff = 'Delay';
$lang->execution->suspend = 'Suspend';
$lang->execution->close = 'Close';
$lang->execution->export = 'Export';
$lang->project->endList[7] = '1 Week';
$lang->project->endList[14] = '2 Weeks';
$lang->project->endList[31] = '1 Month';
$lang->project->endList[62] = '2 Months';
$lang->project->endList[93] = '3 Months';
$lang->project->endList[186] = '6 Months';
$lang->project->endList[365] = '1 Year';
$lang->execution->endList[7] = '1 Week';
$lang->execution->endList[14] = '2 Weeks';
$lang->execution->endList[31] = '1 Month';
$lang->execution->endList[62] = '2 Months';
$lang->execution->endList[93] = '3 Months';
$lang->execution->endList[186] = '6 Months';
$lang->execution->endList[365] = '1 Year';
$lang->team = new stdclass();
$lang->team->account = 'User';
@@ -110,245 +110,243 @@ $lang->team->limited = 'Limited User';
$lang->team->limitedList['yes'] = 'Yes';
$lang->team->limitedList['no'] = 'No';
$lang->project->basicInfo = 'Basic Information';
$lang->project->otherInfo = 'Other Information';
$lang->execution->basicInfo = 'Basic Information';
$lang->execution->otherInfo = 'Other Information';
/* Field value list. */
$lang->project->statusList['wait'] = 'Waiting';
$lang->project->statusList['doing'] = 'Doing';
$lang->project->statusList['suspended'] = 'Suspended';
$lang->project->statusList['closed'] = 'Closed';
$lang->execution->statusList['wait'] = 'Waiting';
$lang->execution->statusList['doing'] = 'Doing';
$lang->execution->statusList['suspended'] = 'Suspended';
$lang->execution->statusList['closed'] = 'Closed';
global $config;
if($config->systemMode == 'new')
{
$lang->project->aclList['private'] = 'Private (for team members and project stakeholders)';
$lang->project->aclList['open'] = 'Inherited Project ACL (for who can access the current project)';
$lang->execution->aclList['private'] = 'Private (for team members and execution stakeholders)';
$lang->execution->aclList['open'] = 'Inherited Project ACL (for who can access the current execution)';
}
else
{
$lang->project->aclList['private'] = 'Private (for team members and project stakeholders)';
$lang->project->aclList['open'] = "Public (Users who can visit {$lang->executionCommon} can access it.)";
$lang->execution->aclList['private'] = 'Private (for team members and execution stakeholders)';
$lang->execution->aclList['open'] = "Public (Users who can visit {$lang->executionCommon} can access it.)";
}
$lang->project->storyPoint = 'Story Point';
$lang->execution->storyPoint = 'Story Point';
$lang->project->burnByList['left'] = 'View by remaining hours';
$lang->project->burnByList['estimate'] = "View by plan hours";
$lang->project->burnByList['storyPoint'] = 'View by story point';
$lang->execution->burnByList['left'] = 'View by remaining hours';
$lang->execution->burnByList['estimate'] = "View by plan hours";
$lang->execution->burnByList['storyPoint'] = 'View by story point';
/* Method list. */
$lang->project->index = "{$lang->executionCommon} Home";
$lang->project->task = 'Task List';
$lang->project->groupTask = 'Group View';
$lang->project->story = 'Story List';
$lang->project->bug = 'Bug List';
$lang->project->dynamic = 'Dynamics';
$lang->project->latestDynamic = 'Dynamics';
$lang->project->build = 'Build List';
$lang->project->testtask = 'Request';
$lang->project->burn = 'Burndown';
$lang->project->computeBurn = 'Update';
$lang->project->burnData = 'Burndown Data';
$lang->project->fixFirst = 'Edit 1st-Day Estimates';
$lang->project->team = 'Members';
$lang->project->doc = 'Document';
$lang->project->doclib = 'Docoment Library';
$lang->project->manageProducts = 'Linked ' . $lang->productCommon . 's';
$lang->project->linkStory = 'Link Stories';
$lang->project->linkStoryByPlan = 'Link Stories By Plan';
$lang->project->linkPlan = 'Linked Plan';
$lang->project->unlinkStoryTasks = 'Unlink';
$lang->project->linkedProducts = "Linked {$lang->productCommon}s";
$lang->project->unlinkedProducts = "Unlinked {$lang->productCommon}s";
$lang->project->view = "{$lang->executionCommon} Detail";
$lang->project->startAction = "Start {$lang->executionCommon}";
$lang->project->activateAction = "Activate {$lang->executionCommon}";
$lang->project->delayAction = "Delay {$lang->executionCommon}";
$lang->project->suspendAction = "Suspend {$lang->executionCommon}";
$lang->project->closeAction = "Close {$lang->executionCommon}";
$lang->project->testtaskAction = "{$lang->executionCommon} Request";
$lang->project->teamAction = "{$lang->executionCommon} Members";
$lang->project->kanbanAction = "{$lang->executionCommon} Kanban";
$lang->project->printKanbanAction = "Print Kanban";
$lang->project->treeAction = "{$lang->executionCommon} Tree View";
$lang->project->exportAction = "Export {$lang->executionCommon}";
$lang->project->computeBurnAction = "Update Burndown";
$lang->project->create = "Create {$lang->executionCommon}";
$lang->project->copy = "Copy {$lang->executionCommon}";
$lang->project->delete = "Delete {$lang->executionCommon}";
$lang->project->browse = "{$lang->executionCommon} List";
$lang->project->list = "{$lang->executionCommon} List";
$lang->project->edit = "Edit {$lang->executionCommon}";
$lang->project->batchEdit = "Batch Edit";
$lang->project->manageMembers = 'Manage Team';
$lang->project->unlinkMember = 'Remove Member';
$lang->project->unlinkStory = 'Unlink Story';
$lang->project->unlinkStoryAB = 'Unlink';
$lang->project->batchUnlinkStory = 'Batch Unlink Stories';
$lang->project->importTask = 'Transfer Task';
$lang->project->importPlanStories = 'Link Stories By Plan';
$lang->project->importBug = 'Import Bug';
$lang->project->updateOrder = "Rank {$lang->executionCommon}";
$lang->project->tree = 'Tree';
$lang->project->treeTask = 'Show Task Only';
$lang->project->treeStory = 'Show Story Only';
$lang->project->treeOnlyTask = 'Show Task Only';
$lang->project->treeOnlyStory = 'Show Story Only';
$lang->project->storyKanban = 'Story Kanban';
$lang->project->storySort = 'Rank Story';
$lang->project->importPlanStory = $lang->executionCommon . ' is created!\nDo you want to import stories that have been linked to the plan?';
$lang->project->iteration = 'Iterations';
$lang->project->iterationInfo = '%s Iterations';
$lang->project->viewAll = 'View All';
$lang->execution->index = "{$lang->executionCommon} Home";
$lang->execution->task = 'Task List';
$lang->execution->groupTask = 'Group View';
$lang->execution->story = 'Story List';
$lang->execution->bug = 'Bug List';
$lang->execution->dynamic = 'Dynamics';
$lang->execution->latestDynamic = 'Dynamics';
$lang->execution->build = 'Build List';
$lang->execution->testtask = 'Request';
$lang->execution->burn = 'Burndown';
$lang->execution->computeBurn = 'Update';
$lang->execution->burnData = 'Burndown Data';
$lang->execution->fixFirst = 'Edit 1st-Day Estimates';
$lang->execution->team = 'Members';
$lang->execution->doc = 'Document';
$lang->execution->doclib = 'Docoment Library';
$lang->execution->manageProducts = 'Linked ' . $lang->productCommon . 's';
$lang->execution->linkStory = 'Link Stories';
$lang->execution->linkStoryByPlan = 'Link Stories By Plan';
$lang->execution->linkPlan = 'Linked Plan';
$lang->execution->unlinkStoryTasks = 'Unlink';
$lang->execution->linkedProducts = "Linked {$lang->productCommon}s";
$lang->execution->unlinkedProducts = "Unlinked {$lang->productCommon}s";
$lang->execution->view = "{$lang->executionCommon} Detail";
$lang->execution->startAction = "Start {$lang->executionCommon}";
$lang->execution->activateAction = "Activate {$lang->executionCommon}";
$lang->execution->delayAction = "Delay {$lang->executionCommon}";
$lang->execution->suspendAction = "Suspend {$lang->executionCommon}";
$lang->execution->closeAction = "Close {$lang->executionCommon}";
$lang->execution->testtaskAction = "{$lang->executionCommon} Request";
$lang->execution->teamAction = "{$lang->executionCommon} Members";
$lang->execution->kanbanAction = "{$lang->executionCommon} Kanban";
$lang->execution->printKanbanAction = "Print Kanban";
$lang->execution->treeAction = "{$lang->executionCommon} Tree View";
$lang->execution->exportAction = "Export {$lang->executionCommon}";
$lang->execution->computeBurnAction = "Update Burndown";
$lang->execution->create = "Create {$lang->executionCommon}";
$lang->execution->copy = "Copy {$lang->executionCommon}";
$lang->execution->delete = "Delete {$lang->executionCommon}";
$lang->execution->browse = "{$lang->executionCommon} List";
$lang->execution->list = "{$lang->executionCommon} List";
$lang->execution->edit = "Edit {$lang->executionCommon}";
$lang->execution->batchEdit = "Batch Edit";
$lang->execution->manageMembers = 'Manage Team';
$lang->execution->unlinkMember = 'Remove Member';
$lang->execution->unlinkStory = 'Unlink Story';
$lang->execution->unlinkStoryAB = 'Unlink';
$lang->execution->batchUnlinkStory = 'Batch Unlink Stories';
$lang->execution->importTask = 'Transfer Task';
$lang->execution->importPlanStories = 'Link Stories By Plan';
$lang->execution->importBug = 'Import Bug';
$lang->execution->updateOrder = "Rank {$lang->executionCommon}";
$lang->execution->tree = 'Tree';
$lang->execution->treeTask = 'Show Task Only';
$lang->execution->treeStory = 'Show Story Only';
$lang->execution->treeOnlyTask = 'Show Task Only';
$lang->execution->treeOnlyStory = 'Show Story Only';
$lang->execution->storyKanban = 'Story Kanban';
$lang->execution->storySort = 'Rank Story';
$lang->execution->importPlanStory = $lang->executionCommon . ' is created!\nDo you want to import stories that have been linked to the plan?';
$lang->execution->iteration = 'Iterations';
$lang->execution->iterationInfo = '%s Iterations';
$lang->execution->viewAll = 'View All';
/* Group browsing. */
$lang->project->allTasks = 'All';
$lang->project->assignedToMe = 'My';
$lang->project->myInvolved = 'Involved';
$lang->execution->allTasks = 'All';
$lang->execution->assignedToMe = 'My';
$lang->execution->myInvolved = 'Involved';
$lang->project->statusSelects[''] = 'More';
$lang->project->statusSelects['wait'] = 'Waiting';
$lang->project->statusSelects['doing'] = 'Doing';
$lang->project->statusSelects['undone'] = 'Unfinished';
$lang->project->statusSelects['finishedbyme'] = 'FinishedByMe';
$lang->project->statusSelects['done'] = 'Done';
$lang->project->statusSelects['closed'] = 'Closed';
$lang->project->statusSelects['cancel'] = 'Cancelled';
$lang->execution->statusSelects[''] = 'More';
$lang->execution->statusSelects['wait'] = 'Waiting';
$lang->execution->statusSelects['doing'] = 'Doing';
$lang->execution->statusSelects['undone'] = 'Unfinished';
$lang->execution->statusSelects['finishedbyme'] = 'FinishedByMe';
$lang->execution->statusSelects['done'] = 'Done';
$lang->execution->statusSelects['closed'] = 'Closed';
$lang->execution->statusSelects['cancel'] = 'Cancelled';
$lang->project->groups[''] = 'View by Groups';
$lang->project->groups['story'] = 'Group by Story';
$lang->project->groups['status'] = 'Group by Status';
$lang->project->groups['pri'] = 'Group by Priority';
$lang->project->groups['assignedTo'] = 'Group by AssignedTo';
$lang->project->groups['finishedBy'] = 'Group by FinishedBy';
$lang->project->groups['closedBy'] = 'Group by ClosedBy';
$lang->project->groups['type'] = 'Group by Type';
$lang->execution->groups[''] = 'View by Groups';
$lang->execution->groups['story'] = 'Group by Story';
$lang->execution->groups['status'] = 'Group by Status';
$lang->execution->groups['pri'] = 'Group by Priority';
$lang->execution->groups['assignedTo'] = 'Group by AssignedTo';
$lang->execution->groups['finishedBy'] = 'Group by FinishedBy';
$lang->execution->groups['closedBy'] = 'Group by ClosedBy';
$lang->execution->groups['type'] = 'Group by Type';
$lang->project->groupFilter['story']['all'] = 'All';
$lang->project->groupFilter['story']['linked'] = 'Tasks linked to stories';
$lang->project->groupFilter['pri']['all'] = 'All';
$lang->project->groupFilter['pri']['noset'] = 'Not Set';
$lang->project->groupFilter['assignedTo']['undone'] = 'Unfinished';
$lang->project->groupFilter['assignedTo']['all'] = 'All';
$lang->execution->groupFilter['story']['all'] = 'All';
$lang->execution->groupFilter['story']['linked'] = 'Tasks linked to stories';
$lang->execution->groupFilter['pri']['all'] = 'All';
$lang->execution->groupFilter['pri']['noset'] = 'Not Set';
$lang->execution->groupFilter['assignedTo']['undone'] = 'Unfinished';
$lang->execution->groupFilter['assignedTo']['all'] = 'All';
$lang->project->byQuery = 'Search';
$lang->execution->byQuery = 'Search';
/* Query condition list. */
$lang->project->allProject = "All {$lang->executionCommon}s";
$lang->project->aboveAllProduct = "All the above {$lang->productCommon}s";
$lang->project->aboveAllProject = "All the above {$lang->executionCommon}s";
$lang->execution->allProject = "All {$lang->executionCommon}s";
$lang->execution->aboveAllProduct = "All the above {$lang->productCommon}s";
$lang->execution->aboveAllProject = "All the above {$lang->executionCommon}s";
/* Page prompt. */
$lang->project->linkStoryByPlanTips = "This action will link all stories in this plan to the {$lang->executionCommon}.";
$lang->project->selectProject = "Select {$lang->executionCommon}";
$lang->project->selectExecution = "Select Stage/Sprint/Iteration";
$lang->project->beginAndEnd = 'Duration';
$lang->project->begin = 'Begin';
$lang->project->end = 'End';
$lang->project->lblStats = 'Efforts';
$lang->project->stats = 'Available: <strong>%s</strong>(h). Estimates: <strong>%s</strong>(h). Cost: <strong>%s</strong>(h). Left: <strong>%s</strong>(h).';
$lang->project->taskSummary = "Total tasks on this page:<strong>%s</strong>. Waiting: <strong>%s</strong>. Doing: <strong>%s</strong>. &nbsp;&nbsp;&nbsp; Estimates: <strong>%s</strong>(h). Cost: <strong>%s</strong>(h). Left: <strong>%s</strong>(h).";
$lang->project->pageSummary = "Total tasks: <strong>%total%</strong>. Waiting: <strong>%wait%</strong>. Doing: <strong>%doing%</strong>. Estimates: <strong>%estimate%</strong>(h). Cost: <strong>%consumed%</strong>(h). Left: <strong>%left%</strong>(h).";
$lang->project->checkedSummary = "Selected: <strong>%total%</strong>. Waiting: <strong>%wait%</strong>. Doing: <strong>%doing%</strong>. Estimates: <strong>%estimate%</strong>(h). Cost: <strong>%consumed%</strong>(h). Left: <strong>%left%</strong>(h).";
$lang->project->memberHoursAB = "%s has <strong>%s</ strong> hours.";
$lang->project->memberHours = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">%s Available Hours</div><div class="segment-value">%s</div></div></div></div>';
$lang->project->countSummary = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">Tasks</div><div class="segment-value">%s</div></div><div class="segment"><div class="segment-title">Doing</div><div class="segment-value"><span class="label label-dot label-primary"></span> %s</div></div><div class="segment"><div class="segment-title">Waiting</div><div class="segment-value"><span class="label label-dot label-primary muted"></span> %s</div></div></div></div>';
$lang->project->timeSummary = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">Estimates</div><div class="segment-value">%s</div></div><div class="segment"><div class="segment-title">Cost</div><div class="segment-value text-red">%s</div></div><div class="segment"><div class="segment-title">Left</div><div class="segment-value">%s</div></div></div></div>';
$lang->project->groupSummaryAB = "<div>Tasks <strong>%s :</strong><span class='text-muted'>Waiting</span> %s &nbsp; <span class='text-muted'>Doing</span> %s</div><div>Estimates <strong>%s :</strong><span class='text-muted'>Cost</span> %s &nbsp; <span class='text-muted'>Left</span> %s</div>";
$lang->project->wbs = "Create Task";
$lang->project->batchWBS = "Batch Create Tasks";
$lang->project->howToUpdateBurn = "<a href='https://api.zentao.pm/goto.php?item=burndown' target='_blank' title='How to update the Burndown Chart?' class='btn btn-link'>Help <i class='icon icon-help'></i></a>";
$lang->project->whyNoStories = "No story can be linked. Please check whether there is any story in {$lang->executionCommon} which is linked to {$lang->productCommon} and make sure it has been reviewed.";
$lang->project->productStories = "Stories linked to {$lang->executionCommon} are the subeset of stories linked to {$lang->productCommon}. Stories can only be linked after they pass the review. <a href='%s'> Link Stories</a> now.";
$lang->project->haveDraft = "%s stories in draft, so they can't be linked.";
$lang->project->doneProjects = 'Finished';
$lang->project->selectDept = 'Select Department';
$lang->project->selectDeptTitle = 'Select User';
$lang->project->copyTeam = 'Copy Team';
$lang->project->copyFromTeam = "Copy from {$lang->executionCommon} Team: <strong>%s</strong>";
$lang->project->noMatched = "No $lang->executionCommon including '%s'can be found.";
$lang->project->copyTitle = "Choose a {$lang->executionCommon} to copy.";
$lang->project->copyTeamTitle = "Choose a {$lang->executionCommon} Team to copy.";
$lang->project->copyNoProject = "No {$lang->executionCommon} can be copied.";
$lang->project->copyFromProject = "Copy from {$lang->executionCommon} <strong>%s</strong>";
$lang->project->cancelCopy = 'Cancel Copy';
$lang->project->byPeriod = 'By Time';
$lang->project->byUser = 'By User';
$lang->project->noProject = "No {$lang->executionCommon}. ";
$lang->project->noMembers = 'No team members yet. ';
$lang->project->workloadTotal = "The cumulative workload ratio should not exceed 100, and the total workload under the current product is: %s";
$lang->project->linkPRJStoryTip = "(Link {$lang->SRCommon} comes from {$lang->SRCommon} linked under the project)";
$lang->project->linkAllStoryTip = "({$lang->SRCommon} has never been linked under the project, and can be directly linked with {$lang->SRCommon} of the product linked with the sprint/stage)";
$lang->execution->linkStoryByPlanTips = "This action will link all stories in this plan to the {$lang->executionCommon}.";
$lang->execution->selectProject = "Select {$lang->executionCommon}";
$lang->execution->selectExecution = "Select Stage/Sprint/Iteration";
$lang->execution->beginAndEnd = 'Duration';
$lang->execution->lblStats = 'Efforts';
$lang->execution->stats = 'Available: <strong>%s</strong>(h). Estimates: <strong>%s</strong>(h). Cost: <strong>%s</strong>(h). Left: <strong>%s</strong>(h).';
$lang->execution->taskSummary = "Total tasks on this page:<strong>%s</strong>. Waiting: <strong>%s</strong>. Doing: <strong>%s</strong>. &nbsp;&nbsp;&nbsp; Estimates: <strong>%s</strong>(h). Cost: <strong>%s</strong>(h). Left: <strong>%s</strong>(h).";
$lang->execution->pageSummary = "Total tasks: <strong>%total%</strong>. Waiting: <strong>%wait%</strong>. Doing: <strong>%doing%</strong>. Estimates: <strong>%estimate%</strong>(h). Cost: <strong>%consumed%</strong>(h). Left: <strong>%left%</strong>(h).";
$lang->execution->checkedSummary = "Selected: <strong>%total%</strong>. Waiting: <strong>%wait%</strong>. Doing: <strong>%doing%</strong>. Estimates: <strong>%estimate%</strong>(h). Cost: <strong>%consumed%</strong>(h). Left: <strong>%left%</strong>(h).";
$lang->execution->memberHoursAB = "%s has <strong>%s</ strong> hours.";
$lang->execution->memberHours = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">%s Available Hours</div><div class="segment-value">%s</div></div></div></div>';
$lang->execution->countSummary = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">Tasks</div><div class="segment-value">%s</div></div><div class="segment"><div class="segment-title">Doing</div><div class="segment-value"><span class="label label-dot label-primary"></span> %s</div></div><div class="segment"><div class="segment-title">Waiting</div><div class="segment-value"><span class="label label-dot label-primary muted"></span> %s</div></div></div></div>';
$lang->execution->timeSummary = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">Estimates</div><div class="segment-value">%s</div></div><div class="segment"><div class="segment-title">Cost</div><div class="segment-value text-red">%s</div></div><div class="segment"><div class="segment-title">Left</div><div class="segment-value">%s</div></div></div></div>';
$lang->execution->groupSummaryAB = "<div>Tasks <strong>%s :</strong><span class='text-muted'>Waiting</span> %s &nbsp; <span class='text-muted'>Doing</span> %s</div><div>Estimates <strong>%s :</strong><span class='text-muted'>Cost</span> %s &nbsp; <span class='text-muted'>Left</span> %s</div>";
$lang->execution->wbs = "Create Task";
$lang->execution->batchWBS = "Batch Create Tasks";
$lang->execution->howToUpdateBurn = "<a href='https://api.zentao.pm/goto.php?item=burndown' target='_blank' title='How to update the Burndown Chart?' class='btn btn-link'>Help <i class='icon icon-help'></i></a>";
$lang->execution->whyNoStories = "No story can be linked. Please check whether there is any story in {$lang->executionCommon} which is linked to {$lang->productCommon} and make sure it has been reviewed.";
$lang->execution->productStories = "Stories linked to {$lang->executionCommon} are the subeset of stories linked to {$lang->productCommon}. Stories can only be linked after they pass the review. <a href='%s'> Link Stories</a> now.";
$lang->execution->haveDraft = "%s stories in draft, so they can't be linked.";
$lang->execution->doneProjects = 'Finished';
$lang->execution->selectDept = 'Select Department';
$lang->execution->selectDeptTitle = 'Select User';
$lang->execution->copyTeam = 'Copy Team';
$lang->execution->copyFromTeam = "Copy from {$lang->executionCommon} Team: <strong>%s</strong>";
$lang->execution->noMatched = "No $lang->executionCommon including '%s'can be found.";
$lang->execution->copyTitle = "Choose a {$lang->executionCommon} to copy.";
$lang->execution->copyTeamTitle = "Choose a {$lang->executionCommon} Team to copy.";
$lang->execution->copyNoProject = "No {$lang->executionCommon} can be copied.";
$lang->execution->copyFromProject = "Copy from {$lang->executionCommon} <strong>%s</strong>";
$lang->execution->cancelCopy = 'Cancel Copy';
$lang->execution->byPeriod = 'By Time';
$lang->execution->byUser = 'By User';
$lang->execution->noProject = "No {$lang->executionCommon}. ";
$lang->execution->noMembers = 'No team members yet. ';
$lang->execution->workloadTotal = "The cumulative workload ratio should not exceed 100, and the total workload under the current product is: %s";
$lang->execution->linkPRJStoryTip = "(Link {$lang->SRCommon} comes from {$lang->SRCommon} linked under the execution)";
$lang->execution->linkAllStoryTip = "({$lang->SRCommon} has never been linked under the execution, and can be directly linked with {$lang->SRCommon} of the product linked with the sprint/stage)";
/* Interactive prompts. */
$lang->project->confirmDelete = "Do you want to delete the {$lang->executionCommon}[%s]?";
$lang->project->confirmUnlinkMember = "Do you want to unlink this User from {$lang->executionCommon}?";
$lang->project->confirmUnlinkStory = "Do you want to unlink this Story from {$lang->executionCommon}?";
$lang->project->confirmUnlinkProjectStory = "Do you want to unlink this Story from the project?";
$lang->project->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked to the {$lang->executionCommon} of the project. Remove it from the {$lang->executionCommon}, then try again.";
$lang->project->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
$lang->project->errorNoLinkedProducts = "No {$lang->productCommon} is linked to {$lang->executionCommon}. You will be directed to {$lang->productCommon} page to link one.";
$lang->project->errorSameProducts = "{$lang->executionCommon} cannot be linked to the same {$lang->productCommon} twice.";
$lang->project->accessDenied = "Your access to {$lang->executionCommon} is denied!";
$lang->project->tips = 'Note';
$lang->project->afterInfo = "{$lang->executionCommon} is created. Next you can ";
$lang->project->setTeam = 'Set Team';
$lang->project->linkStory = 'Link Story';
$lang->project->createTask = 'Create Task';
$lang->project->goback = "Go Back";
$lang->project->noweekend = 'Exclude Weekend';
$lang->project->withweekend = 'Include Weekend';
$lang->project->interval = 'Intervals ';
$lang->project->fixFirstWithLeft = 'Update hours left too';
$lang->project->unfinishedProject = "This {$lang->executionCommon} has ";
$lang->project->unfinishedTask = "[%s] unfinished tasks. ";
$lang->project->unresolvedBug = "[%s] unresolved bugs. ";
$lang->execution->confirmDelete = "Do you want to delete the {$lang->executionCommon}[%s]?";
$lang->execution->confirmUnlinkMember = "Do you want to unlink this User from {$lang->executionCommon}?";
$lang->execution->confirmUnlinkStory = "Do you want to unlink this Story from {$lang->executionCommon}?";
$lang->execution->confirmUnlinkProjectStory = "Do you want to unlink this Story from the execution?";
$lang->execution->notAllowedUnlinkStory = "This {$lang->SRCommon} is linked to the {$lang->executionCommon} of the execution. Remove it from the {$lang->executionCommon}, then try again.";
$lang->execution->notAllowRemoveProducts = "The story of this product is linked with the {$lang->executionCommon}. Unlink it before doing any action.";
$lang->execution->errorNoLinkedProducts = "No {$lang->productCommon} is linked to {$lang->executionCommon}. You will be directed to {$lang->productCommon} page to link one.";
$lang->execution->errorSameProducts = "{$lang->executionCommon} cannot be linked to the same {$lang->productCommon} twice.";
$lang->execution->accessDenied = "Your access to {$lang->executionCommon} is denied!";
$lang->execution->tips = 'Note';
$lang->execution->afterInfo = "{$lang->executionCommon} is created. Next you can ";
$lang->execution->setTeam = 'Set Team';
$lang->execution->linkStory = 'Link Story';
$lang->execution->createTask = 'Create Task';
$lang->execution->goback = "Go Back";
$lang->execution->noweekend = 'Exclude Weekend';
$lang->execution->withweekend = 'Include Weekend';
$lang->execution->interval = 'Intervals ';
$lang->execution->fixFirstWithLeft = 'Update hours left too';
$lang->execution->unfinishedProject = "This {$lang->executionCommon} has ";
$lang->execution->unfinishedTask = "[%s] unfinished tasks. ";
$lang->execution->unresolvedBug = "[%s] unresolved bugs. ";
$lang->project->action = new stdclass();
$lang->project->action->opened = '$date, created by <strong>$actor</strong> . $extra' . "\n";
$lang->project->action->managed = '$date, managed by <strong>$actor</strong> . $extra' . "\n";
$lang->project->action->edited = '$date, edited by <strong>$actor</strong> . $extra' . "\n";
$lang->project->action->extra = "The linked {$lang->productCommon}s are %s.";
$lang->execution->action = new stdclass();
$lang->execution->action->opened = '$date, created by <strong>$actor</strong> . $extra' . "\n";
$lang->execution->action->managed = '$date, managed by <strong>$actor</strong> . $extra' . "\n";
$lang->execution->action->edited = '$date, edited by <strong>$actor</strong> . $extra' . "\n";
$lang->execution->action->extra = "The linked {$lang->productCommon}s are %s.";
/* Statistics. */
$lang->project->charts = new stdclass();
$lang->project->charts->burn = new stdclass();
$lang->project->charts->burn->graph = new stdclass();
$lang->project->charts->burn->graph->caption = " Burndown Chart";
$lang->project->charts->burn->graph->xAxisName = "Date";
$lang->project->charts->burn->graph->yAxisName = "Hour";
$lang->project->charts->burn->graph->baseFontSize = 12;
$lang->project->charts->burn->graph->formatNumber = 0;
$lang->project->charts->burn->graph->animation = 0;
$lang->project->charts->burn->graph->rotateNames = 1;
$lang->project->charts->burn->graph->showValues = 0;
$lang->project->charts->burn->graph->reference = 'Ideal';
$lang->project->charts->burn->graph->actuality = 'Actual';
$lang->execution->charts = new stdclass();
$lang->execution->charts->burn = new stdclass();
$lang->execution->charts->burn->graph = new stdclass();
$lang->execution->charts->burn->graph->caption = " Burndown Chart";
$lang->execution->charts->burn->graph->xAxisName = "Date";
$lang->execution->charts->burn->graph->yAxisName = "Hour";
$lang->execution->charts->burn->graph->baseFontSize = 12;
$lang->execution->charts->burn->graph->formatNumber = 0;
$lang->execution->charts->burn->graph->animation = 0;
$lang->execution->charts->burn->graph->rotateNames = 1;
$lang->execution->charts->burn->graph->showValues = 0;
$lang->execution->charts->burn->graph->reference = 'Ideal';
$lang->execution->charts->burn->graph->actuality = 'Actual';
$lang->project->placeholder = new stdclass();
$lang->project->placeholder->code = "Abbreviation of {$lang->executionCommon} name";
$lang->project->placeholder->totalLeft = "Hours estimated on the first day of the {$lang->executionCommon}.";
$lang->execution->placeholder = new stdclass();
$lang->execution->placeholder->code = "Abbreviation of {$lang->executionCommon} name";
$lang->execution->placeholder->totalLeft = "Hours estimated on the first day of the {$lang->executionCommon}.";
$lang->project->selectGroup = new stdclass();
$lang->project->selectGroup->done = '(Done)';
$lang->execution->selectGroup = new stdclass();
$lang->execution->selectGroup->done = '(Done)';
$lang->project->orderList['order_asc'] = "Story Rank Ascending";
$lang->project->orderList['order_desc'] = "Story Rank Descending";
$lang->project->orderList['pri_asc'] = "Story Priority Ascending";
$lang->project->orderList['pri_desc'] = "Story Priority Descending";
$lang->project->orderList['stage_asc'] = "Story Phase Ascending";
$lang->project->orderList['stage_desc'] = "Story Phase Descending";
$lang->execution->orderList['order_asc'] = "Story Rank Ascending";
$lang->execution->orderList['order_desc'] = "Story Rank Descending";
$lang->execution->orderList['pri_asc'] = "Story Priority Ascending";
$lang->execution->orderList['pri_desc'] = "Story Priority Descending";
$lang->execution->orderList['stage_asc'] = "Story Phase Ascending";
$lang->execution->orderList['stage_desc'] = "Story Phase Descending";
$lang->project->kanban = "Kanban";
$lang->project->kanbanSetting = "Settings";
$lang->project->resetKanban = "Reset";
$lang->project->printKanban = "Print";
$lang->project->bugList = "Bugs";
$lang->execution->kanban = "Kanban";
$lang->execution->kanbanSetting = "Settings";
$lang->execution->resetKanban = "Reset";
$lang->execution->printKanban = "Print";
$lang->execution->bugList = "Bugs";
$lang->project->kanbanHideCols = 'Closed & Cancelled Columns';
$lang->project->kanbanShowOption = 'Unfold';
$lang->project->kanbanColsColor = 'Customize Column Color';
$lang->execution->kanbanHideCols = 'Closed & Cancelled Columns';
$lang->execution->kanbanShowOption = 'Unfold';
$lang->execution->kanbanColsColor = 'Customize Column Color';
$lang->kanbanSetting = new stdclass();
$lang->kanbanSetting->noticeReset = 'Do you want to reset Kanban?';
@@ -365,27 +363,33 @@ $lang->printKanban->taskStatus = 'Status';
$lang->printKanban->typeList['all'] = 'All';
$lang->printKanban->typeList['increment'] = 'Increment';
$lang->project->typeList[''] = '';
$lang->project->typeList['stage'] = 'Stage';
$lang->project->typeList['sprint'] = $lang->executionCommon;
$lang->execution->typeList[''] = '';
$lang->execution->typeList['stage'] = 'Stage';
$lang->execution->typeList['sprint'] = $lang->executionCommon;
$lang->project->featureBar['task']['all'] = $lang->project->allTasks;
$lang->project->featureBar['task']['unclosed'] = $lang->project->unclosed;
$lang->project->featureBar['task']['assignedtome'] = $lang->project->assignedToMe;
$lang->project->featureBar['task']['myinvolved'] = $lang->project->myInvolved;
$lang->project->featureBar['task']['delayed'] = 'Delayed';
$lang->project->featureBar['task']['needconfirm'] = 'Changed';
$lang->project->featureBar['task']['status'] = $lang->project->statusSelects[''];
$lang->execution->featureBar['task']['all'] = $lang->execution->allTasks;
$lang->execution->featureBar['task']['unclosed'] = $lang->execution->unclosed;
$lang->execution->featureBar['task']['assignedtome'] = $lang->execution->assignedToMe;
$lang->execution->featureBar['task']['myinvolved'] = $lang->execution->myInvolved;
$lang->execution->featureBar['task']['delayed'] = 'Delayed';
$lang->execution->featureBar['task']['needconfirm'] = 'Changed';
$lang->execution->featureBar['task']['status'] = $lang->execution->statusSelects[''];
$lang->project->featureBar['all']['all'] = $lang->project->all;
$lang->project->featureBar['all']['undone'] = $lang->project->undone;
$lang->project->featureBar['all']['wait'] = $lang->project->statusList['wait'];
$lang->project->featureBar['all']['doing'] = $lang->project->statusList['doing'];
$lang->project->featureBar['all']['suspended'] = $lang->project->statusList['suspended'];
$lang->project->featureBar['all']['closed'] = $lang->project->statusList['closed'];
$lang->execution->featureBar['all']['all'] = $lang->execution->all;
$lang->execution->featureBar['all']['undone'] = $lang->execution->undone;
$lang->execution->featureBar['all']['wait'] = $lang->execution->statusList['wait'];
$lang->execution->featureBar['all']['doing'] = $lang->execution->statusList['doing'];
$lang->execution->featureBar['all']['suspended'] = $lang->execution->statusList['suspended'];
$lang->execution->featureBar['all']['closed'] = $lang->execution->statusList['closed'];
$lang->project->treeLevel = array();
$lang->project->treeLevel['all'] = 'Expand All';
$lang->project->treeLevel['root'] = 'Collapse All';
$lang->project->treeLevel['task'] = 'Stories&Tasks';
$lang->project->treeLevel['story'] = 'Only Stories';
$lang->execution->treeLevel = array();
$lang->execution->treeLevel['all'] = 'Expand All';
$lang->execution->treeLevel['root'] = 'Collapse All';
$lang->execution->treeLevel['task'] = 'Stories&Tasks';
$lang->execution->treeLevel['story'] = 'Only Stories';
$lang->execution->action = new stdclass();
$lang->execution->action->opened = '$date, created by <strong>$actor</strong>. $extra' . "\n";
$lang->execution->action->managed = '$date, managed by <strong>$actor</strong>. $extra' . "\n";
$lang->execution->action->edited = '$date, edited by <strong>$actor</strong>. $extra' . "\n";
$lang->execution->action->extra = 'Linked products is %s.';
+309 -311
View File
@@ -10,93 +10,93 @@
* @link http://www.zentao.net
*/
/* 字段列表。*/
$lang->project->common = $lang->executionCommon . '视图';
$lang->project->allProjects = '所有' . $lang->executionCommon;
$lang->project->id = $lang->executionCommon . '编号';
$lang->project->type = $lang->executionCommon . '类型';
$lang->project->name = $lang->executionCommon . '名称';
$lang->project->code = $lang->executionCommon . '代号';
$lang->project->statge = '阶段';
$lang->project->pri = '优先级';
$lang->project->openedBy = '由谁创建';
$lang->project->openedDate = '创建日期';
$lang->project->closedBy = '由谁关闭';
$lang->project->closedDate = '关闭日期';
$lang->project->canceledBy = '由谁取消';
$lang->project->canceledDate = '取消日期';
$lang->project->begin = '开始日期';
$lang->project->end = '结束日期';
$lang->project->dateRange = '起始日期';
$lang->project->to = '至';
$lang->project->days = '可用工作日';
$lang->project->day = '天';
$lang->project->workHour = '工时';
$lang->project->workHourUnit = 'H';
$lang->project->totalHours = '可用工时';
$lang->project->totalDays = '可用工日';
$lang->project->status = $lang->executionCommon . '状态';
$lang->project->subStatus = '子状态';
$lang->project->desc = $lang->executionCommon . '描述';
$lang->project->owner = '负责人';
$lang->project->PO = $lang->productCommon . '负责人';
$lang->project->PM = $lang->executionCommon . '负责人';
$lang->project->QD = '测试负责人';
$lang->project->RD = '发布负责人';
$lang->project->qa = '测试';
$lang->project->release = '发布';
$lang->project->acl = '访问控制';
$lang->project->teamname = '团队名称';
$lang->project->order = $lang->executionCommon . '排序';
$lang->project->orderAB = '排序';
$lang->project->products = '相关' . $lang->productCommon;
$lang->project->whitelist = '白名单';
$lang->project->addWhitelist = '添加白名单';
$lang->project->unbindWhielist = '删除白名单';
$lang->project->totalEstimate = '预计';
$lang->project->totalConsumed = '消耗';
$lang->project->totalLeft = '剩余';
$lang->project->progress = '进度';
$lang->project->hours = '预计 %s 消耗 %s 剩余 %s';
$lang->project->viewBug = '查看bug';
$lang->project->noProduct = "无{$lang->executionCommon}";
$lang->project->createStory = "添加{$lang->SRCommon}";
$lang->project->storyTitle = "{$lang->SRCommon}名称";
$lang->project->all = '所有';
$lang->project->undone = '未完成';
$lang->project->unclosed = '未关闭';
$lang->project->typeDesc = "运维{$lang->executionCommon}没有{$lang->SRCommon}、bug、版本、测试功能。";
$lang->project->mine = '我负责:';
$lang->project->other = '其他:';
$lang->project->deleted = '已删除';
$lang->project->delayed = '已延期';
$lang->project->product = $lang->project->products;
$lang->project->readjustTime = "调整{$lang->executionCommon}起止时间";
$lang->project->readjustTask = '顺延任务的起止时间';
$lang->project->effort = '日志';
$lang->project->relatedMember = '相关成员';
$lang->project->watermark = '由禅道导出';
$lang->project->burnXUnit = '(日期)';
$lang->project->burnYUnit = '(工时)';
$lang->project->waitTasks = '待处理';
$lang->project->viewByUser = '按用户查看';
$lang->project->oneProduct = "阶段只能关联一个{$lang->productCommon}";
$lang->project->noLinkProduct = "阶段没有关联{$lang->productCommon}";
$lang->project->recent = '近期访问:';
$lang->execution->common = $lang->executionCommon . '视图';
$lang->execution->allProjects = '所有' . $lang->executionCommon;
$lang->execution->id = $lang->executionCommon . '编号';
$lang->execution->type = $lang->executionCommon . '类型';
$lang->execution->name = $lang->executionCommon . '名称';
$lang->execution->code = $lang->executionCommon . '代号';
$lang->execution->statge = '阶段';
$lang->execution->pri = '优先级';
$lang->execution->openedBy = '由谁创建';
$lang->execution->openedDate = '创建日期';
$lang->execution->closedBy = '由谁关闭';
$lang->execution->closedDate = '关闭日期';
$lang->execution->canceledBy = '由谁取消';
$lang->execution->canceledDate = '取消日期';
$lang->execution->begin = '开始日期';
$lang->execution->end = '结束日期';
$lang->execution->dateRange = '起始日期';
$lang->execution->to = '至';
$lang->execution->days = '可用工作日';
$lang->execution->day = '天';
$lang->execution->workHour = '工时';
$lang->execution->workHourUnit = 'H';
$lang->execution->totalHours = '可用工时';
$lang->execution->totalDays = '可用工日';
$lang->execution->status = $lang->executionCommon . '状态';
$lang->execution->subStatus = '子状态';
$lang->execution->desc = $lang->executionCommon . '描述';
$lang->execution->owner = '负责人';
$lang->execution->PO = $lang->productCommon . '负责人';
$lang->execution->PM = $lang->executionCommon . '负责人';
$lang->execution->QD = '测试负责人';
$lang->execution->RD = '发布负责人';
$lang->execution->qa = '测试';
$lang->execution->release = '发布';
$lang->execution->acl = '访问控制';
$lang->execution->teamname = '团队名称';
$lang->execution->order = $lang->executionCommon . '排序';
$lang->execution->orderAB = '排序';
$lang->execution->products = '相关' . $lang->productCommon;
$lang->execution->whitelist = '白名单';
$lang->execution->addWhitelist = '添加白名单';
$lang->execution->unbindWhielist = '删除白名单';
$lang->execution->totalEstimate = '预计';
$lang->execution->totalConsumed = '消耗';
$lang->execution->totalLeft = '剩余';
$lang->execution->progress = '进度';
$lang->execution->hours = '预计 %s 消耗 %s 剩余 %s';
$lang->execution->viewBug = '查看bug';
$lang->execution->noProduct = "无{$lang->executionCommon}";
$lang->execution->createStory = "添加{$lang->SRCommon}";
$lang->execution->storyTitle = "{$lang->SRCommon}名称";
$lang->execution->all = '所有';
$lang->execution->undone = '未完成';
$lang->execution->unclosed = '未关闭';
$lang->execution->typeDesc = "运维{$lang->executionCommon}没有{$lang->SRCommon}、bug、版本、测试功能。";
$lang->execution->mine = '我负责:';
$lang->execution->other = '其他:';
$lang->execution->deleted = '已删除';
$lang->execution->delayed = '已延期';
$lang->execution->product = $lang->execution->products;
$lang->execution->readjustTime = "调整{$lang->executionCommon}起止时间";
$lang->execution->readjustTask = '顺延任务的起止时间';
$lang->execution->effort = '日志';
$lang->execution->relatedMember = '相关成员';
$lang->execution->watermark = '由禅道导出';
$lang->execution->burnXUnit = '(日期)';
$lang->execution->burnYUnit = '(工时)';
$lang->execution->waitTasks = '待处理';
$lang->execution->viewByUser = '按用户查看';
$lang->execution->oneProduct = "阶段只能关联一个{$lang->productCommon}";
$lang->execution->noLinkProduct = "阶段没有关联{$lang->productCommon}";
$lang->execution->recent = '近期访问:';
$lang->project->start = "开始";
$lang->project->activate = "激活";
$lang->project->putoff = "延期";
$lang->project->suspend = "挂起";
$lang->project->close = "关闭";
$lang->project->export = "导出";
$lang->execution->start = "开始";
$lang->execution->activate = "激活";
$lang->execution->putoff = "延期";
$lang->execution->suspend = "挂起";
$lang->execution->close = "关闭";
$lang->execution->export = "导出";
$lang->project->endList[7] = '一星期';
$lang->project->endList[14] = '两星期';
$lang->project->endList[31] = '一个月';
$lang->project->endList[62] = '两个月';
$lang->project->endList[93] = '三个月';
$lang->project->endList[186] = '半年';
$lang->project->endList[365] = '一年';
$lang->execution->endList[7] = '一星期';
$lang->execution->endList[14] = '两星期';
$lang->execution->endList[31] = '一个月';
$lang->execution->endList[62] = '两个月';
$lang->execution->endList[93] = '三个月';
$lang->execution->endList[186] = '半年';
$lang->execution->endList[365] = '一年';
$lang->team = new stdclass();
$lang->team->account = '用户';
@@ -110,244 +110,243 @@ $lang->team->limited = '受限用户';
$lang->team->limitedList['yes'] = '是';
$lang->team->limitedList['no'] = '否';
$lang->project->basicInfo = '基本信息';
$lang->project->otherInfo = '其他信息';
$lang->execution->basicInfo = '基本信息';
$lang->execution->otherInfo = '其他信息';
/* 字段取值列表。*/
$lang->project->statusList['wait'] = '未开始';
$lang->project->statusList['doing'] = '进行中';
$lang->project->statusList['suspended'] = '已挂起';
$lang->project->statusList['closed'] = '已关闭';
$lang->execution->statusList['wait'] = '未开始';
$lang->execution->statusList['doing'] = '进行中';
$lang->execution->statusList['suspended'] = '已挂起';
$lang->execution->statusList['closed'] = '已关闭';
global $config;
if($config->systemMode == 'new')
{
$lang->project->aclList['private'] = "私有(团队成员和项目负责人、干系人可访问)";
$lang->project->aclList['open'] = "继承项目访问权限(能访问当前项目,即可访问)";
$lang->execution->aclList['private'] = "私有(团队成员和项目负责人、干系人可访问)";
$lang->execution->aclList['open'] = "继承项目访问权限(能访问当前项目,即可访问)";
}
else
{
$lang->project->aclList['private'] = "私有(团队成员和{$lang->executionCommon}负责人可访问)";
$lang->project->aclList['open'] = "公开(有{$lang->executionCommon}视图权限即可访问)";
$lang->execution->aclList['private'] = "私有(团队成员和{$lang->executionCommon}负责人可访问)";
$lang->execution->aclList['open'] = "公开(有{$lang->executionCommon}视图权限即可访问)";
}
$lang->project->storyPoint = '故事点';
$lang->execution->storyPoint = '故事点';
$lang->project->burnByList['left'] = '按剩余工时查看';
$lang->project->burnByList['estimate'] = "按计划工时查看";
$lang->project->burnByList['storyPoint'] = '按故事点查看';
$lang->execution->burnByList['left'] = '按剩余工时查看';
$lang->execution->burnByList['estimate'] = "按计划工时查看";
$lang->execution->burnByList['storyPoint'] = '按故事点查看';
/* 方法列表。*/
$lang->project->index = "{$lang->executionCommon}主页";
$lang->project->task = '任务列表';
$lang->project->groupTask = '分组浏览任务';
$lang->project->story = "{$lang->SRCommon}列表";
$lang->project->bug = 'Bug列表';
$lang->project->dynamic = '动态';
$lang->project->latestDynamic = '最新动态';
$lang->project->build = '所有版本';
$lang->project->testtask = '测试单';
$lang->project->burn = '燃尽图';
$lang->project->computeBurn = '更新燃尽图';
$lang->project->burnData = '燃尽图数据';
$lang->project->fixFirst = '修改首天工时';
$lang->project->team = '团队成员';
$lang->project->doc = '文档列表';
$lang->project->doclib = '文档库列表';
$lang->project->manageProducts = '关联' . $lang->productCommon;
$lang->project->linkStory = "关联{$lang->SRCommon}";
$lang->project->linkStoryByPlan = "按照计划关联";
$lang->project->linkPlan = "关联计划";
$lang->project->unlinkStoryTasks = "未关联{$lang->SRCommon}任务";
$lang->project->linkedProducts = '已关联';
$lang->project->unlinkedProducts = '未关联';
$lang->project->view = "{$lang->executionCommon}概况";
$lang->project->startAction = "开始{$lang->executionCommon}";
$lang->project->activateAction = "激活{$lang->executionCommon}";
$lang->project->delayAction = "延期{$lang->executionCommon}";
$lang->project->suspendAction = "挂起{$lang->executionCommon}";
$lang->project->closeAction = "关闭{$lang->executionCommon}";
$lang->project->testtaskAction = "{$lang->executionCommon}测试单";
$lang->project->teamAction = "{$lang->executionCommon}团队";
$lang->project->kanbanAction = "{$lang->executionCommon}看板";
$lang->project->printKanbanAction = "打印看板";
$lang->project->treeAction = "{$lang->executionCommon}树状图";
$lang->project->exportAction = "导出{$lang->executionCommon}";
$lang->project->computeBurnAction = "计算燃尽图";
$lang->project->create = "添加{$lang->executionCommon}";
$lang->project->copy = "复制{$lang->executionCommon}";
$lang->project->delete = "删除{$lang->executionCommon}";
$lang->project->browse = "浏览{$lang->executionCommon}";
$lang->project->list = "{$lang->executionCommon}列表";
$lang->project->edit = "编辑{$lang->executionCommon}";
$lang->project->batchEdit = "批量编辑";
$lang->project->manageMembers = '团队管理';
$lang->project->unlinkMember = '移除成员';
$lang->project->unlinkStory = "移除{$lang->SRCommon}";
$lang->project->unlinkStoryAB = "移除{$lang->SRCommon}";
$lang->project->batchUnlinkStory = "批量移除{$lang->SRCommon}";
$lang->project->importTask = '转入任务';
$lang->project->importPlanStories = "按计划关联{$lang->SRCommon}";
$lang->project->importBug = '导入Bug';
$lang->project->updateOrder = "{$lang->executionCommon}排序";
$lang->project->tree = '树状图';
$lang->project->treeTask = '只看任务';
$lang->project->treeStory = "只看{$lang->SRCommon}";
$lang->project->treeOnlyTask = '树状图只看任务';
$lang->project->treeOnlyStory = "树状图只看{$lang->SRCommon}";
$lang->project->storyKanban = "{$lang->SRCommon}看板";
$lang->project->storySort = "{$lang->SRCommon}排序";
$lang->project->importPlanStory = '创建' . $lang->executionCommon . '成功!\n是否导入计划关联的相关' . $lang->SRCommon . '?';
$lang->project->iteration = '版本迭代';
$lang->project->iterationInfo = '迭代%s次';
$lang->project->viewAll = '查看所有';
$lang->execution->index = "{$lang->executionCommon}主页";
$lang->execution->task = '任务列表';
$lang->execution->groupTask = '分组浏览任务';
$lang->execution->story = "{$lang->SRCommon}列表";
$lang->execution->bug = 'Bug列表';
$lang->execution->dynamic = '动态';
$lang->execution->latestDynamic = '最新动态';
$lang->execution->build = '所有版本';
$lang->execution->testtask = '测试单';
$lang->execution->burn = '燃尽图';
$lang->execution->computeBurn = '更新燃尽图';
$lang->execution->burnData = '燃尽图数据';
$lang->execution->fixFirst = '修改首天工时';
$lang->execution->team = '团队成员';
$lang->execution->doc = '文档列表';
$lang->execution->doclib = '文档库列表';
$lang->execution->manageProducts = '关联' . $lang->productCommon;
$lang->execution->linkStory = "关联{$lang->SRCommon}";
$lang->execution->linkStoryByPlan = "按照计划关联";
$lang->execution->linkPlan = "关联计划";
$lang->execution->unlinkStoryTasks = "未关联{$lang->SRCommon}任务";
$lang->execution->linkedProducts = '已关联';
$lang->execution->unlinkedProducts = '未关联';
$lang->execution->view = "{$lang->executionCommon}概况";
$lang->execution->startAction = "开始{$lang->executionCommon}";
$lang->execution->activateAction = "激活{$lang->executionCommon}";
$lang->execution->delayAction = "延期{$lang->executionCommon}";
$lang->execution->suspendAction = "挂起{$lang->executionCommon}";
$lang->execution->closeAction = "关闭{$lang->executionCommon}";
$lang->execution->testtaskAction = "{$lang->executionCommon}测试单";
$lang->execution->teamAction = "{$lang->executionCommon}团队";
$lang->execution->kanbanAction = "{$lang->executionCommon}看板";
$lang->execution->printKanbanAction = "打印看板";
$lang->execution->treeAction = "{$lang->executionCommon}树状图";
$lang->execution->exportAction = "导出{$lang->executionCommon}";
$lang->execution->computeBurnAction = "计算燃尽图";
$lang->execution->create = "添加{$lang->executionCommon}";
$lang->execution->copy = "复制{$lang->executionCommon}";
$lang->execution->delete = "删除{$lang->executionCommon}";
$lang->execution->browse = "浏览{$lang->executionCommon}";
$lang->execution->list = "{$lang->executionCommon}列表";
$lang->execution->edit = "编辑{$lang->executionCommon}";
$lang->execution->batchEdit = "批量编辑";
$lang->execution->manageMembers = '团队管理';
$lang->execution->unlinkMember = '移除成员';
$lang->execution->unlinkStory = "移除{$lang->SRCommon}";
$lang->execution->unlinkStoryAB = "移除{$lang->SRCommon}";
$lang->execution->batchUnlinkStory = "批量移除{$lang->SRCommon}";
$lang->execution->importTask = '转入任务';
$lang->execution->importPlanStories = "按计划关联{$lang->SRCommon}";
$lang->execution->importBug = '导入Bug';
$lang->execution->updateOrder = "{$lang->executionCommon}排序";
$lang->execution->tree = '树状图';
$lang->execution->treeTask = '只看任务';
$lang->execution->treeStory = "只看{$lang->SRCommon}";
$lang->execution->treeOnlyTask = '树状图只看任务';
$lang->execution->treeOnlyStory = "树状图只看{$lang->SRCommon}";
$lang->execution->storyKanban = "{$lang->SRCommon}看板";
$lang->execution->storySort = "{$lang->SRCommon}排序";
$lang->execution->importPlanStory = '创建' . $lang->executionCommon . '成功!\n是否导入计划关联的相关' . $lang->SRCommon . '?';
$lang->execution->iteration = '版本迭代';
$lang->execution->iterationInfo = '迭代%s次';
$lang->execution->viewAll = '查看所有';
/* 分组浏览。*/
$lang->project->allTasks = '所有';
$lang->project->assignedToMe = '指派给我';
$lang->project->myInvolved = '由我参与';
$lang->execution->allTasks = '所有';
$lang->execution->assignedToMe = '指派给我';
$lang->execution->myInvolved = '由我参与';
$lang->project->statusSelects[''] = '更多';
$lang->project->statusSelects['wait'] = '未开始';
$lang->project->statusSelects['doing'] = '进行中';
$lang->project->statusSelects['undone'] = '未完成';
$lang->project->statusSelects['finishedbyme'] = '我完成';
$lang->project->statusSelects['done'] = '已完成';
$lang->project->statusSelects['closed'] = '已关闭';
$lang->project->statusSelects['cancel'] = '已取消';
$lang->execution->statusSelects[''] = '更多';
$lang->execution->statusSelects['wait'] = '未开始';
$lang->execution->statusSelects['doing'] = '进行中';
$lang->execution->statusSelects['undone'] = '未完成';
$lang->execution->statusSelects['finishedbyme'] = '我完成';
$lang->execution->statusSelects['done'] = '已完成';
$lang->execution->statusSelects['closed'] = '已关闭';
$lang->execution->statusSelects['cancel'] = '已取消';
$lang->project->groups[''] = '分组查看';
$lang->project->groups['story'] = "{$lang->SRCommon}分组";
$lang->project->groups['status'] = '状态分组';
$lang->project->groups['pri'] = '优先级分组';
$lang->project->groups['assignedTo'] = '指派给分组';
$lang->project->groups['finishedBy'] = '完成者分组';
$lang->project->groups['closedBy'] = '关闭者分组';
$lang->project->groups['type'] = '类型分组';
$lang->execution->groups[''] = '分组查看';
$lang->execution->groups['story'] = "{$lang->SRCommon}分组";
$lang->execution->groups['status'] = '状态分组';
$lang->execution->groups['pri'] = '优先级分组';
$lang->execution->groups['assignedTo'] = '指派给分组';
$lang->execution->groups['finishedBy'] = '完成者分组';
$lang->execution->groups['closedBy'] = '关闭者分组';
$lang->execution->groups['type'] = '类型分组';
$lang->project->groupFilter['story']['all'] = '所有';
$lang->project->groupFilter['story']['linked'] = "已关联{$lang->SRCommon}的任务";
$lang->project->groupFilter['pri']['all'] = '所有';
$lang->project->groupFilter['pri']['noset'] = '未设置';
$lang->project->groupFilter['assignedTo']['undone'] = '未完成';
$lang->project->groupFilter['assignedTo']['all'] = '所有';
$lang->execution->groupFilter['story']['all'] = '所有';
$lang->execution->groupFilter['story']['linked'] = "已关联{$lang->SRCommon}的任务";
$lang->execution->groupFilter['pri']['all'] = '所有';
$lang->execution->groupFilter['pri']['noset'] = '未设置';
$lang->execution->groupFilter['assignedTo']['undone'] = '未完成';
$lang->execution->groupFilter['assignedTo']['all'] = '所有';
$lang->project->byQuery = '搜索';
$lang->execution->byQuery = '搜索';
/* 查询条件列表。*/
$lang->project->allProject = "所有{$lang->executionCommon}";
$lang->project->aboveAllProduct = "以上所有{$lang->productCommon}";
$lang->project->aboveAllProject = "以上所有{$lang->executionCommon}";
$lang->execution->allProject = "所有{$lang->executionCommon}";
$lang->execution->aboveAllProduct = "以上所有{$lang->productCommon}";
$lang->execution->aboveAllProject = "以上所有{$lang->executionCommon}";
/* 页面提示。*/
$lang->project->linkStoryByPlanTips = "此操作会将所选计划下面的{$lang->SRCommon}全部关联到此{$lang->executionCommon}中";
$lang->project->selectProject = "请选择{$lang->executionCommon}";
$lang->project->selectExecution = "请选择阶段/迭代/冲刺";
$lang->project->beginAndEnd = '起止时间';
$lang->project->end = '截止日期';
$lang->project->lblStats = '工时统计';
$lang->project->stats = '可用工时 <strong>%s</strong> 工时,总共预计 <strong>%s</strong> 工时,已经消耗 <strong>%s</strong> 工时,预计剩余 <strong>%s</strong> 工时';
$lang->project->taskSummary = "本页共 <strong>%s</strong> 个任务,未开始 <strong>%s</strong>,进行中 <strong>%s</strong>,总预计 <strong>%s</strong> 工时,已消耗 <strong>%s</strong> 工时,剩余 <strong>%s</strong> 工时。";
$lang->project->pageSummary = "本页共 <strong>%total%</strong> 个任务,未开始 <strong>%wait%</strong>,进行中 <strong>%doing%</strong>,总预计 <strong>%estimate%</strong> 工时,已消耗 <strong>%consumed%</strong> 工时,剩余 <strong>%left%</strong> 工时。";
$lang->project->checkedSummary = "选中 <strong>%total%</strong> 个任务,未开始 <strong>%wait%</strong>,进行中 <strong>%doing%</strong>,总预计 <strong>%estimate%</strong> 工时,已消耗 <strong>%consumed%</strong> 工时,剩余 <strong>%left%</strong> 工时。";
$lang->project->memberHoursAB = "<div>%s有 <strong>%s</strong> 工时</div>";
$lang->project->memberHours = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">%s可用工时</div><div class="segment-value">%s</div></div></div></div>';
$lang->project->countSummary = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">总任务</div><div class="segment-value">%s</div></div><div class="segment"><div class="segment-title">进行中</div><div class="segment-value"><span class="label label-dot label-primary"></span> %s</div></div><div class="segment"><div class="segment-title">未开始</div><div class="segment-value"><span class="label label-dot label-primary muted"></span> %s</div></div></div></div>';
$lang->project->timeSummary = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">总预计</div><div class="segment-value">%s</div></div><div class="segment"><div class="segment-title">已消耗</div><div class="segment-value text-red">%s</div></div><div class="segment"><div class="segment-title">剩余</div><div class="segment-value">%s</div></div></div></div>';
$lang->project->groupSummaryAB = "<div>总任务 <strong>%s : </strong><span class='text-muted'>未开始</span> %s &nbsp; <span class='text-muted'>进行中</span> %s</div><div>总预计 <strong>%s : </strong><span class='text-muted'>已消耗</span> %s &nbsp; <span class='text-muted'>剩余</span> %s</div>";
$lang->project->wbs = "分解任务";
$lang->project->batchWBS = "批量分解";
$lang->project->howToUpdateBurn = "<a href='https://api.zentao.net/goto.php?item=burndown&lang=zh-cn' target='_blank' title='如何更新燃尽图?' class='btn btn-link'>帮助 <i class='icon icon-help'></i></a>";
$lang->project->whyNoStories = "看起来没有{$lang->SRCommon}可以关联。请检查下{$lang->executionCommon}关联的{$lang->productCommon}中有没有{$lang->SRCommon},而且要确保它们已经审核通过。";
$lang->project->productStories = "{$lang->executionCommon}关联的{$lang->SRCommon}是{$lang->productCommon}{$lang->SRCommon}的子集,并且只有评审通过的{$lang->SRCommon}才能关联。请<a href='%s'>关联{$lang->SRCommon}</a>。";
$lang->project->haveDraft = "有%s条草稿状态的{$lang->SRCommon}无法关联到该{$lang->executionCommon}";
$lang->project->doneProjects = '已结束';
$lang->project->selectDept = '选择部门';
$lang->project->selectDeptTitle = '选择一个部门的成员';
$lang->project->copyTeam = '复制团队';
$lang->project->copyFromTeam = "复制自{$lang->executionCommon}团队: <strong>%s</strong>";
$lang->project->noMatched = "找不到包含'%s'的$lang->executionCommon";
$lang->project->copyTitle = "请选择一个{$lang->executionCommon}来复制";
$lang->project->copyTeamTitle = "选择一个{$lang->executionCommon}团队来复制";
$lang->project->copyNoProject = "没有可用的{$lang->executionCommon}来复制";
$lang->project->copyFromProject = "复制自{$lang->executionCommon} <strong>%s</strong>";
$lang->project->cancelCopy = '取消复制';
$lang->project->byPeriod = '按时间段';
$lang->project->byUser = '按用户';
$lang->project->noProject = "暂时没有{$lang->executionCommon}。";
$lang->project->noMembers = '暂时没有团队成员。';
$lang->project->workloadTotal = "工作量占比累计不应当超过100, 当前产品下的工作量之和为%s";
$lang->project->linkPRJStoryTip = "(关联{$lang->SRCommon}来源于项目下所关联的{$lang->SRCommon})";
$lang->project->linkAllStoryTip = "(项目下还未关联{$lang->SRCommon},可直接关联该迭代/阶段/冲刺所关联产品的{$lang->SRCommon})";
$lang->execution->linkStoryByPlanTips = "此操作会将所选计划下面的{$lang->SRCommon}全部关联到此{$lang->executionCommon}中";
$lang->execution->selectProject = "请选择{$lang->executionCommon}";
$lang->execution->selectExecution = "请选择阶段/迭代/冲刺";
$lang->execution->beginAndEnd = '起止时间';
$lang->execution->lblStats = '工时统计';
$lang->execution->stats = '可用工时 <strong>%s</strong> 工时,总共预计 <strong>%s</strong> 工时,已经消耗 <strong>%s</strong> 工时,预计剩余 <strong>%s</strong> 工时';
$lang->execution->taskSummary = "本页共 <strong>%s</strong> 个任务,未开始 <strong>%s</strong>,进行中 <strong>%s</strong>,总预计 <strong>%s</strong> 工时,已消耗 <strong>%s</strong> 工时,剩余 <strong>%s</strong> 工时。";
$lang->execution->pageSummary = "本页共 <strong>%total%</strong> 个任务,未开始 <strong>%wait%</strong>,进行中 <strong>%doing%</strong>,总预计 <strong>%estimate%</strong> 工时,已消耗 <strong>%consumed%</strong> 工时,剩余 <strong>%left%</strong> 工时。";
$lang->execution->checkedSummary = "选中 <strong>%total%</strong> 个任务,未开始 <strong>%wait%</strong>,进行中 <strong>%doing%</strong>,总预计 <strong>%estimate%</strong> 工时,已消耗 <strong>%consumed%</strong> 工时,剩余 <strong>%left%</strong> 工时。";
$lang->execution->memberHoursAB = "<div>%s有 <strong>%s</strong> 工时</div>";
$lang->execution->memberHours = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">%s可用工时</div><div class="segment-value">%s</div></div></div></div>';
$lang->execution->countSummary = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">总任务</div><div class="segment-value">%s</div></div><div class="segment"><div class="segment-title">进行中</div><div class="segment-value"><span class="label label-dot label-primary"></span> %s</div></div><div class="segment"><div class="segment-title">未开始</div><div class="segment-value"><span class="label label-dot label-primary muted"></span> %s</div></div></div></div>';
$lang->execution->timeSummary = '<div class="table-col"><div class="clearfix segments"><div class="segment"><div class="segment-title">总预计</div><div class="segment-value">%s</div></div><div class="segment"><div class="segment-title">已消耗</div><div class="segment-value text-red">%s</div></div><div class="segment"><div class="segment-title">剩余</div><div class="segment-value">%s</div></div></div></div>';
$lang->execution->groupSummaryAB = "<div>总任务 <strong>%s : </strong><span class='text-muted'>未开始</span> %s &nbsp; <span class='text-muted'>进行中</span> %s</div><div>总预计 <strong>%s : </strong><span class='text-muted'>已消耗</span> %s &nbsp; <span class='text-muted'>剩余</span> %s</div>";
$lang->execution->wbs = "分解任务";
$lang->execution->batchWBS = "批量分解";
$lang->execution->howToUpdateBurn = "<a href='https://api.zentao.net/goto.php?item=burndown&lang=zh-cn' target='_blank' title='如何更新燃尽图?' class='btn btn-link'>帮助 <i class='icon icon-help'></i></a>";
$lang->execution->whyNoStories = "看起来没有{$lang->SRCommon}可以关联。请检查下{$lang->executionCommon}关联的{$lang->productCommon}中有没有{$lang->SRCommon},而且要确保它们已经审核通过。";
$lang->execution->productStories = "{$lang->executionCommon}关联的{$lang->SRCommon}是{$lang->productCommon}{$lang->SRCommon}的子集,并且只有评审通过的{$lang->SRCommon}才能关联。请<a href='%s'>关联{$lang->SRCommon}</a>。";
$lang->execution->haveDraft = "有%s条草稿状态的{$lang->SRCommon}无法关联到该{$lang->executionCommon}";
$lang->execution->doneProjects = '已结束';
$lang->execution->selectDept = '选择部门';
$lang->execution->selectDeptTitle = '选择一个部门的成员';
$lang->execution->copyTeam = '复制团队';
$lang->execution->copyFromTeam = "复制自{$lang->executionCommon}团队: <strong>%s</strong>";
$lang->execution->noMatched = "找不到包含'%s'的$lang->executionCommon";
$lang->execution->copyTitle = "请选择一个{$lang->executionCommon}来复制";
$lang->execution->copyTeamTitle = "选择一个{$lang->executionCommon}团队来复制";
$lang->execution->copyNoProject = "没有可用的{$lang->executionCommon}来复制";
$lang->execution->copyFromProject = "复制自{$lang->executionCommon} <strong>%s</strong>";
$lang->execution->cancelCopy = '取消复制';
$lang->execution->byPeriod = '按时间段';
$lang->execution->byUser = '按用户';
$lang->execution->noProject = "暂时没有{$lang->executionCommon}。";
$lang->execution->noMembers = '暂时没有团队成员。';
$lang->execution->workloadTotal = "工作量占比累计不应当超过100, 当前产品下的工作量之和为%s";
$lang->execution->linkPRJStoryTip = "(关联{$lang->SRCommon}来源于项目下所关联的{$lang->SRCommon})";
$lang->execution->linkAllStoryTip = "(项目下还未关联{$lang->SRCommon},可直接关联该迭代/阶段/冲刺所关联产品的{$lang->SRCommon})";
/* 交互提示。*/
$lang->project->confirmDelete = "您确定删除{$lang->executionCommon}[%s]吗?";
$lang->project->confirmUnlinkMember = "您确定从该{$lang->executionCommon}中移除该用户吗?";
$lang->project->confirmUnlinkStory = "您确定从该{$lang->executionCommon}中移除该{$lang->SRCommon}吗?";
$lang->project->confirmUnlinkProjectStory = "您确定从该项目中移除该{$lang->SRCommon}吗?";
$lang->project->notAllowedUnlinkStory = "该{$lang->SRCommon}已经与项目下{$lang->executionCommon}相关联,请从{$lang->executionCommon}中移除后再操作。";
$lang->project->notAllowRemoveProducts = "该{$lang->productCommon}中的{$lang->SRCommon}已与该{$lang->executionCommon}进行了关联,请取消关联后再操作。";
$lang->project->errorNoLinkedProducts = "该{$lang->executionCommon}没有关联的{$lang->productCommon},系统将转到{$lang->productCommon}关联页面";
$lang->project->errorSameProducts = "{$lang->executionCommon}不能关联多个相同的{$lang->productCommon}。";
$lang->project->accessDenied = "您无权访问该{$lang->executionCommon}!";
$lang->project->tips = '提示';
$lang->project->afterInfo = "{$lang->executionCommon}添加成功,您现在可以进行以下操作:";
$lang->project->setTeam = '设置团队';
$lang->project->linkStory = "关联{$lang->SRCommon}";
$lang->project->createTask = '创建任务';
$lang->project->goback = "返回任务列表";
$lang->project->noweekend = '去除周末';
$lang->project->withweekend = '显示周末';
$lang->project->interval = '间隔';
$lang->project->fixFirstWithLeft = '修改剩余工时';
$lang->project->unfinishedProject = "该{$lang->executionCommon}下还有";
$lang->project->unfinishedTask = "[%s]个未完成的任务,";
$lang->project->unresolvedBug = "[%s]个未解决的bug,";
$lang->execution->confirmDelete = "您确定删除{$lang->executionCommon}[%s]吗?";
$lang->execution->confirmUnlinkMember = "您确定从该{$lang->executionCommon}中移除该用户吗?";
$lang->execution->confirmUnlinkStory = "您确定从该{$lang->executionCommon}中移除该{$lang->SRCommon}吗?";
$lang->execution->confirmUnlinkProjectStory = "您确定从该项目中移除该{$lang->SRCommon}吗?";
$lang->execution->notAllowedUnlinkStory = "该{$lang->SRCommon}已经与项目下{$lang->executionCommon}相关联,请从{$lang->executionCommon}中移除后再操作。";
$lang->execution->notAllowRemoveProducts = "该{$lang->productCommon}中的{$lang->SRCommon}已与该{$lang->executionCommon}进行了关联,请取消关联后再操作。";
$lang->execution->errorNoLinkedProducts = "该{$lang->executionCommon}没有关联的{$lang->productCommon},系统将转到{$lang->productCommon}关联页面";
$lang->execution->errorSameProducts = "{$lang->executionCommon}不能关联多个相同的{$lang->productCommon}。";
$lang->execution->accessDenied = "您无权访问该{$lang->executionCommon}!";
$lang->execution->tips = '提示';
$lang->execution->afterInfo = "{$lang->executionCommon}添加成功,您现在可以进行以下操作:";
$lang->execution->setTeam = '设置团队';
$lang->execution->linkStory = "关联{$lang->SRCommon}";
$lang->execution->createTask = '创建任务';
$lang->execution->goback = "返回任务列表";
$lang->execution->noweekend = '去除周末';
$lang->execution->withweekend = '显示周末';
$lang->execution->interval = '间隔';
$lang->execution->fixFirstWithLeft = '修改剩余工时';
$lang->execution->unfinishedProject = "该{$lang->executionCommon}下还有";
$lang->execution->unfinishedTask = "[%s]个未完成的任务,";
$lang->execution->unresolvedBug = "[%s]个未解决的bug,";
$lang->project->action = new stdclass();
$lang->project->action->opened = '$date, 由 <strong>$actor</strong> 创建。$extra' . "\n";
$lang->project->action->managed = '$date, 由 <strong>$actor</strong> 维护。$extra' . "\n";
$lang->project->action->edited = '$date, 由 <strong>$actor</strong> 编辑。$extra' . "\n";
$lang->project->action->extra = '相关产品为 %s。';
$lang->execution->action = new stdclass();
$lang->execution->action->opened = '$date, 由 <strong>$actor</strong> 创建。$extra' . "\n";
$lang->execution->action->managed = '$date, 由 <strong>$actor</strong> 维护。$extra' . "\n";
$lang->execution->action->edited = '$date, 由 <strong>$actor</strong> 编辑。$extra' . "\n";
$lang->execution->action->extra = '相关产品为 %s。';
/* 统计。*/
$lang->project->charts = new stdclass();
$lang->project->charts->burn = new stdclass();
$lang->project->charts->burn->graph = new stdclass();
$lang->project->charts->burn->graph->caption = "燃尽图";
$lang->project->charts->burn->graph->xAxisName = "日期";
$lang->project->charts->burn->graph->yAxisName = "HOUR";
$lang->project->charts->burn->graph->baseFontSize = 12;
$lang->project->charts->burn->graph->formatNumber = 0;
$lang->project->charts->burn->graph->animation = 0;
$lang->project->charts->burn->graph->rotateNames = 1;
$lang->project->charts->burn->graph->showValues = 0;
$lang->project->charts->burn->graph->reference = '参考';
$lang->project->charts->burn->graph->actuality = '实际';
$lang->execution->charts = new stdclass();
$lang->execution->charts->burn = new stdclass();
$lang->execution->charts->burn->graph = new stdclass();
$lang->execution->charts->burn->graph->caption = "燃尽图";
$lang->execution->charts->burn->graph->xAxisName = "日期";
$lang->execution->charts->burn->graph->yAxisName = "HOUR";
$lang->execution->charts->burn->graph->baseFontSize = 12;
$lang->execution->charts->burn->graph->formatNumber = 0;
$lang->execution->charts->burn->graph->animation = 0;
$lang->execution->charts->burn->graph->rotateNames = 1;
$lang->execution->charts->burn->graph->showValues = 0;
$lang->execution->charts->burn->graph->reference = '参考';
$lang->execution->charts->burn->graph->actuality = '实际';
$lang->project->placeholder = new stdclass();
$lang->project->placeholder->code = '团队内部的简称';
$lang->project->placeholder->totalLeft = "{$lang->executionCommon}开始时的总预计工时";
$lang->execution->placeholder = new stdclass();
$lang->execution->placeholder->code = '团队内部的简称';
$lang->execution->placeholder->totalLeft = "{$lang->executionCommon}开始时的总预计工时";
$lang->project->selectGroup = new stdclass();
$lang->project->selectGroup->done = '(已结束)';
$lang->execution->selectGroup = new stdclass();
$lang->execution->selectGroup->done = '(已结束)';
$lang->project->orderList['order_asc'] = "{$lang->SRCommon}排序正序";
$lang->project->orderList['order_desc'] = "{$lang->SRCommon}排序倒序";
$lang->project->orderList['pri_asc'] = "{$lang->SRCommon}优先级正序";
$lang->project->orderList['pri_desc'] = "{$lang->SRCommon}优先级倒序";
$lang->project->orderList['stage_asc'] = "{$lang->SRCommon}阶段正序";
$lang->project->orderList['stage_desc'] = "{$lang->SRCommon}阶段倒序";
$lang->execution->orderList['order_asc'] = "{$lang->SRCommon}排序正序";
$lang->execution->orderList['order_desc'] = "{$lang->SRCommon}排序倒序";
$lang->execution->orderList['pri_asc'] = "{$lang->SRCommon}优先级正序";
$lang->execution->orderList['pri_desc'] = "{$lang->SRCommon}优先级倒序";
$lang->execution->orderList['stage_asc'] = "{$lang->SRCommon}阶段正序";
$lang->execution->orderList['stage_desc'] = "{$lang->SRCommon}阶段倒序";
$lang->project->kanban = "看板";
$lang->project->kanbanSetting = "看板设置";
$lang->project->resetKanban = "恢复默认";
$lang->project->printKanban = "打印看板";
$lang->project->bugList = "Bug列表";
$lang->execution->kanban = "看板";
$lang->execution->kanbanSetting = "看板设置";
$lang->execution->resetKanban = "恢复默认";
$lang->execution->printKanban = "打印看板";
$lang->execution->bugList = "Bug列表";
$lang->project->kanbanHideCols = '看板隐藏已关闭、已取消列';
$lang->project->kanbanShowOption = '显示折叠信息';
$lang->project->kanbanColsColor = '看板列自定义颜色';
$lang->execution->kanbanHideCols = '看板隐藏已关闭、已取消列';
$lang->execution->kanbanShowOption = '显示折叠信息';
$lang->execution->kanbanColsColor = '看板列自定义颜色';
$lang->kanbanSetting = new stdclass();
$lang->kanbanSetting->noticeReset = '是否恢复看板默认设置?';
@@ -364,34 +363,33 @@ $lang->printKanban->taskStatus = '状态';
$lang->printKanban->typeList['all'] = '全部';
$lang->printKanban->typeList['increment'] = '增量';
$lang->project->typeList[''] = '';
$lang->project->typeList['stage'] = '阶段';
$lang->project->typeList['sprint'] = $lang->executionCommon;
$lang->execution->typeList[''] = '';
$lang->execution->typeList['stage'] = '阶段';
$lang->execution->typeList['sprint'] = $lang->executionCommon;
$lang->project->featureBar['task']['all'] = $lang->project->allTasks;
$lang->project->featureBar['task']['unclosed'] = $lang->project->unclosed;
$lang->project->featureBar['task']['assignedtome'] = $lang->project->assignedToMe;
$lang->project->featureBar['task']['myinvolved'] = $lang->project->myInvolved;
$lang->project->featureBar['task']['delayed'] = '已延期';
$lang->project->featureBar['task']['needconfirm'] = "{$lang->SRCommon}变更";
$lang->project->featureBar['task']['status'] = $lang->project->statusSelects[''];
$lang->execution->featureBar['task']['all'] = $lang->execution->allTasks;
$lang->execution->featureBar['task']['unclosed'] = $lang->execution->unclosed;
$lang->execution->featureBar['task']['assignedtome'] = $lang->execution->assignedToMe;
$lang->execution->featureBar['task']['myinvolved'] = $lang->execution->myInvolved;
$lang->execution->featureBar['task']['delayed'] = '已延期';
$lang->execution->featureBar['task']['needconfirm'] = "{$lang->SRCommon}变更";
$lang->execution->featureBar['task']['status'] = $lang->execution->statusSelects[''];
$lang->project->featureBar['all']['all'] = $lang->project->all;
$lang->project->featureBar['all']['undone'] = $lang->project->undone;
$lang->project->featureBar['all']['wait'] = $lang->project->statusList['wait'];
$lang->project->featureBar['all']['doing'] = $lang->project->statusList['doing'];
$lang->project->featureBar['all']['suspended'] = $lang->project->statusList['suspended'];
$lang->project->featureBar['all']['closed'] = $lang->project->statusList['closed'];
$lang->execution->featureBar['all']['all'] = $lang->execution->all;
$lang->execution->featureBar['all']['undone'] = $lang->execution->undone;
$lang->execution->featureBar['all']['wait'] = $lang->execution->statusList['wait'];
$lang->execution->featureBar['all']['doing'] = $lang->execution->statusList['doing'];
$lang->execution->featureBar['all']['suspended'] = $lang->execution->statusList['suspended'];
$lang->execution->featureBar['all']['closed'] = $lang->execution->statusList['closed'];
$lang->project->treeLevel = array();
$lang->project->treeLevel['all'] = '全部展开';
$lang->project->treeLevel['root'] = '全部折叠';
$lang->project->treeLevel['task'] = '全部显示';
$lang->project->treeLevel['story'] = "只看{$lang->SRCommon}";
$lang->execution->treeLevel = array();
$lang->execution->treeLevel['all'] = '全部展开';
$lang->execution->treeLevel['root'] = '全部折叠';
$lang->execution->treeLevel['task'] = '全部显示';
$lang->execution->treeLevel['story'] = "只看{$lang->SRCommon}";
$lang->execution->action = new stdclass();
$lang->execution->action->opened = '$date, 由 <strong>$actor</strong> 创建。$extra' . "\n";
$lang->execution->action->managed = '$date, 由 <strong>$actor</strong> 维护。$extra' . "\n";
$lang->execution->action->edited = '$date, 由 <strong>$actor</strong> 编辑。$extra' . "\n";
$lang->execution->action->extra = '相关产品为 %s。';
+1 -1
View File
@@ -11,7 +11,7 @@
*/
?>
<?php
class projectModel extends model
class executionModel extends model
{
/* The members every linking. */
const LINK_MEMBERS_ONE_TIME = 20;
+24 -154
View File
@@ -15,6 +15,7 @@ class program extends control
parent::__construct($moduleName, $methodName);
$this->loadModel('project');
$this->loadModel('group');
$this->loadModel('execution');
}
/**
@@ -42,10 +43,9 @@ class program extends control
*/
public function browse($status = 'all', $orderBy = 'order_asc')
{
$this->lang->navGroup->program = 'program';
$this->lang->program->mainMenuAction = html::a('javascript:history.go(-1);', '<i class="icon icon-back"></i> ' . $this->lang->goback, '', "class='btn btn-link'");
if(common::hasPriv('program', 'create')) $this->lang->pageActions = html::a($this->createLink('program', 'create'), "<i class='icon icon-sm icon-plus'></i> " . $this->lang->program->PGMCreate, '', "class='btn btn-secondary'");
if(common::hasPriv('program', 'create')) $this->lang->pageActions = html::a($this->createLink('program', 'create'), "<i class='icon icon-sm icon-plus'></i> " . $this->lang->program->create, '', "class='btn btn-secondary'");
$this->app->session->set('programList', $this->app->getURI(true));
@@ -68,8 +68,8 @@ class program extends control
}
$PMList = $this->loadModel('user')->getListByAccounts($accounts, 'account');
$this->view->title = $this->lang->program->PGMBrowse;
$this->view->position[] = $this->lang->program->PGMBrowse;
$this->view->title = $this->lang->program->browse;
$this->view->position[] = $this->lang->program->browse;
$this->view->programs = $programs;
$this->view->status = $status;
@@ -101,7 +101,6 @@ class program extends control
$program = $this->program->getPGMByID($programID);
if(empty($program) || $program->type != 'program') die(js::error($this->lang->notFound) . js::locate('back'));
$this->lang->navGroup->program = 'program';
$this->lang->program->switcherMenu = $this->program->getPGMSwitcher($programID, true);
$this->lang->program->mainMenuAction = $this->program->getPGMMainAction();
$this->program->setPGMViewMenu($programID);
@@ -118,8 +117,8 @@ class program extends control
$programID = current($path);
}
$this->view->title = $this->lang->program->PGMProduct;
$this->view->position[] = $this->lang->program->PGMProduct;
$this->view->title = $this->lang->program->product;
$this->view->position[] = $this->lang->program->product;
$this->view->program = $program;
$this->view->browseType = $browseType;
$this->view->orderBy = $orderBy;
@@ -139,29 +138,27 @@ class program extends control
*/
public function create($parentProgramID = 0)
{
$this->lang->navGroup->program = 'program';
$parentProgram = $this->program->getPGMByID($parentProgramID);
if($_POST)
{
$projectID = $this->program->PGMCreate();
$projectID = $this->program->create();
if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError()));
$this->loadModel('action')->create('program', $projectID, 'opened');
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('browse')));
}
$this->view->title = $this->lang->program->PGMCreate;
$this->view->position[] = $this->lang->program->PGMCreate;
$this->view->title = $this->lang->program->create;
$this->view->position[] = $this->lang->program->create;
$this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst');
$this->view->poUsers = $this->user->getPairs('noclosed|nodeleted|pofirst');
$this->view->users = $this->user->getPairs('noclosed|nodeleted');
$this->view->parentProgram = $parentProgram;
$this->view->parents = $this->program->getParentPairs();
$this->view->PGMList = $this->program->getPGMList();
$this->view->budgetUnitList = $this->program->getBudgetUnitList();
$this->view->programList = $this->program->getPGMList();
$this->view->budgetUnitList = $this->project->getBudgetUnitList();
$this->view->availableBudget = $this->program->getAvailableBudget($parentProgram);
$this->display();
@@ -176,11 +173,9 @@ class program extends control
*/
public function edit($programID = 0)
{
$this->lang->navGroup->program = 'program';
if($_POST)
{
$changes = $this->program->PGMUpdate($programID);
$changes = $this->program->update($programID);
if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError()));
if($changes)
{
@@ -188,7 +183,7 @@ class program extends control
$this->action->logHistory($actionID, $changes);
}
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inLink('PGMBrowse')));
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inLink('browse')));
}
$program = $this->program->getPGMByID($programID);
@@ -196,15 +191,15 @@ class program extends control
$parents = $this->program->getParentPairs();
unset($parents[$programID]);
$this->view->title = $this->lang->program->PGMEdit;
$this->view->position[] = $this->lang->program->PGMEdit;
$this->view->title = $this->lang->program->edit;
$this->view->position[] = $this->lang->program->edit;
$this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst', $program->PM);
$this->view->poUsers = $this->user->getPairs('noclosed|nodeleted|pofirst');
$this->view->users = $this->user->getPairs('noclosed|nodeleted');
$this->view->program = $program;
$this->view->parents = $parents;
$this->view->PGMList = $this->program->getPGMList();
$this->view->programList = $this->program->getPGMList();
$this->view->budgetUnitList = $this->program->getBudgetUnitList();
$this->view->parentProgram = $parentProgram;
$this->view->availableBudget = $this->program->getAvailableBudget($parentProgram) + (float)$program->budget;
@@ -221,7 +216,6 @@ class program extends control
*/
public function close($programID)
{
$this->lang->navGroup->program = 'program';
$this->loadModel('action');
$program = $this->program->getPGMByID($programID);
@@ -262,7 +256,6 @@ class program extends control
*/
public function start($programID)
{
$this->lang->navGroup->program = 'program';
$this->loadModel('action');
if(!empty($_POST))
@@ -296,7 +289,6 @@ class program extends control
*/
public function activate($programID = 0)
{
$this->lang->navGroup->program = 'program';
$this->loadModel('action');
$program = $this->program->getPGMByID($programID);
@@ -336,7 +328,6 @@ class program extends control
*/
public function suspend($programID)
{
$this->lang->navGroup->program = 'program';
$this->loadModel('action');
if(!empty($_POST))
@@ -399,13 +390,12 @@ class program extends control
public function project($programID = 0, $browseType = 'doing', $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
{
$programID = $this->program->savePGMState($programID, $this->program->getPGMPairs());
if(!$programID) $this->locate($this->createLink('program', 'PGMbrowse'));
if(!$programID) $this->locate($this->createLink('program', 'browse'));
setCookie("lastPGM", $programID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
$this->app->session->set('PGMProject', $this->app->getURI(true));
$this->app->session->set('projectList', $this->app->getURI(true));
$this->lang->navGroup->program = 'program';
$this->lang->program->switcherMenu = $this->program->getPGMSwitcher($programID, true);
$this->lang->program->mainMenuAction = $this->program->getPGMMainAction();
$this->program->setPGMViewMenu($programID);
@@ -421,8 +411,8 @@ class program extends control
$sortField = zget($this->config->program->sortFields, $order[0], 'id') . '_' . $order[1];
$projectStats = $this->program->getPRJStats($programID, $browseType, 0, $sortField, $pager, $programTitle);
$this->view->title = $this->lang->program->PGMProject;
$this->view->position[] = $this->lang->program->PGMProject;
$this->view->title = $this->lang->program->project;
$this->view->position[] = $this->lang->program->project;
$this->view->projectStats = $projectStats;
$this->view->pager = $pager;
@@ -448,7 +438,6 @@ class program extends control
*/
public function stakeholder($programID = 0, $orderBy = 't1.id_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
{
$this->lang->navGroup->program = 'program';
$this->lang->program->switcherMenu = $this->program->getPGMSwitcher($programID, true);
$this->lang->program->mainMenuAction = $this->program->getPGMMainAction();
$this->program->setPGMViewMenu($programID);
@@ -457,8 +446,8 @@ class program extends control
$this->app->loadClass('pager', $static = true);
$pager = new pager(0, $recPerPage, $pageID);
$this->view->title = $this->lang->program->PGMStakeholder;
$this->view->position[] = $this->lang->program->PGMStakeholder;
$this->view->title = $this->lang->program->stakeholder;
$this->view->position[] = $this->lang->program->stakeholder;
$this->view->stakeholders = $this->program->getStakeholders($programID, $orderBy, $pager);
$this->view->pager = $pager;
@@ -482,11 +471,10 @@ class program extends control
if($_POST)
{
$this->program->createStakeholder($programID);
die(js::locate($this->createLink('program', 'PGMStakeholder', "programID=$programID"), 'parent'));
die(js::locate($this->createLink('program', 'stakeholder', "programID=$programID"), 'parent'));
}
$this->loadModel('user');
$this->lang->navGroup->program = 'program';
$this->lang->program->switcherMenu = $this->program->getPGMSwitcher($programID, true);
$this->lang->program->mainMenuAction = $this->program->getPGMMainAction();
$this->program->setPGMViewMenu($programID);
@@ -654,35 +642,6 @@ class program extends control
$this->display();
}
/**
* Ajax get project drop menu.
*
* @param int $projectID
* @param string $module
* @param string $method
* @access public
* @return void
*/
public function ajaxGetPRJDropMenu($projectID = 0, $module, $method)
{
$closedProjects = $this->program->getPRJList(0, 'closed', 0, 'id_desc');
$closedProjectNames = array();
foreach($closedProjects as $project) $closedProjectNames = common::convert2Pinyin($closedProjectNames);
$closedProjectsHtml = '';
foreach($closedProjects as $project) $closedProjectsHtml .= html::a($this->createLink('program', 'index', '', '', '', $project->id), '<i class="icon icon-menu-doc"></i>' . $project->name);
$this->view->projectID = $projectID;
$this->view->module = $module;
$this->view->method = $method;
$this->view->normalProjectsHtml = $this->program->getPRJTreeMenu(0, array('programmodel', 'createPRJManageLink'), 0, 'dropmenu');
$this->view->closedProjectsHtml = $closedProjectsHtml;
$this->display();
}
/**
* Ajax get projects.
*
@@ -742,31 +701,6 @@ class program extends control
$this->send(array('result' => 'success'));
}
/**
* Project index view.
*
* @param int $projectID
* @access public
* @return void
*/
public function index($projectID = 0)
{
$this->lang->navGroup->program = 'project';
$projectID = $this->program->savePRJState($projectID, $this->program->getPRJPairs());
$project = $this->program->getPRJByID($projectID);
if(empty($project) || $project->type != 'project') die(js::error($this->lang->notFound) . js::locate('back'));
if(!$projectID) $this->locate($this->createLink('program', 'PRJbrowse'));
setCookie("lastPRJ", $projectID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
$this->view->title = $this->lang->program->common . $this->lang->colon . $this->lang->program->PRJIndex;
$this->view->position[] = $this->lang->program->PRJIndex;
$this->view->project = $project;
$this->display();
}
/*
* Removing users from the white list.
*
@@ -775,9 +709,9 @@ class program extends control
* @access public
* @return void
*/
public function unbindWhielist($id = 0, $confirm = 'no')
public function unbindWhitelist($id = 0, $confirm = 'no')
{
echo $this->fetch('personnel', 'unbindWhielist', "id=$id&confirm=$confirm");
echo $this->fetch('personnel', 'unbindWhitelist', "id=$id&confirm=$confirm");
}
/**
@@ -794,68 +728,4 @@ class program extends control
echo $this->fetch('program', 'PGMProduct', "programID=$programID");
}
/**
* AJAX: Check products.
*
* @param int $programID
* @param int $projectID
* @access public
* @return void
*/
public function ajaxCheckProduct($programID, $projectID)
{
/* Set vars. */
$project = $this->program->getPRJByID($projectID);
$oldTopPGM = $this->program->getTopPGMByID($project->parent);
$newTopPGM = $this->program->getTopPGMByID($programID);
if($oldTopPGM == $newTopPGM) die();
$response = array();
$response['result'] = true;
$response['message'] = $this->lang->program->changeProgramTip;
$multiLinkedProducts = $this->program->getMultiLinkedProducts($projectID);
if($multiLinkedProducts)
{
$multiLinkedProjects = array();
foreach($multiLinkedProducts as $productID => $product)
{
$multiLinkedProjects[$productID] = $this->loadModel('product')->getProjectPairsByProduct($productID);
}
$response['result'] = false;
$response['message'] = $multiLinkedProducts;
$response['multiLinkedProjects'] = $multiLinkedProjects;
}
die(json_encode($response));
}
/**
* Adjust the navigation.
*
* @param string $from
* @param int $programID
* @access public
* @return void
*/
public function adjustNavigation($from = '', $programID = 0)
{
if($from == 'browse') $this->lang->navGroup->program = 'program';
if($from == 'PRJ')
{
$this->lang->navGroup->program = 'project';
$this->lang->program->menu = $this->lang->scrum->setMenu;
$moduleIndex = array_search('program', $this->lang->noMenuModule);
if($moduleIndex !== false) unset($this->lang->noMenuModule[$moduleIndex]);
}
if($from == 'project')
{
$this->app->rawMethod = 'project';
$this->lang->program->switcherMenu = $this->program->getPGMSwitcher($programID, true);
$this->program->setPGMViewMenu($programID);
}
}
}
+66 -278
View File
@@ -1,178 +1,62 @@
<?php
/* Actions. */
$lang->program->createGuide = 'Select Template';
$lang->program->PRJIndex = 'Dashboard';
$lang->program->PRJHome = 'Home';
$lang->program->PRJCreate = 'Create Project';
$lang->program->PRJEdit = 'Edit';
$lang->program->PRJBatchEdit = 'Batch Edit Projects';
$lang->program->PRJView = 'Project View';
$lang->program->batchEdit = 'Batch Edit';
$lang->program->PRJBrowse = 'Projects';
$lang->program->PRJAll = 'All';
$lang->program->PRJStart = 'Start';
$lang->program->PRJFinish = 'Finish';
$lang->program->PRJSuspend = 'Suspend';
$lang->program->PRJDelete = 'Delete';
$lang->program->PRJClose = 'Close';
$lang->program->PRJActivate = 'Activate';
$lang->program->PRJGroup = 'Privilege Group';
$lang->program->PRJCreateGroup = 'Create Group';
$lang->program->PRJEditGroup = 'Edit Group';
$lang->program->PRJCopyGroup = 'Copy Group';
$lang->program->PRJManageView = 'Manage View';
$lang->program->PRJManagePriv = 'Manage Privilege';
$lang->program->PRJManageMembers = 'Manage Team';
$lang->program->export = 'Export';
$lang->program->addProduct = 'Add Product';
$lang->program->PRJManageGroupMember = 'Manage Group';
$lang->program->PRJModuleSetting = 'List Settings';
$lang->program->PRJModuleOpen = 'Program Name';
$lang->program->PRJUpdateOrder = 'Order';
$lang->program->PRJSort = 'Order';
$lang->program->PRJWhitelist = 'Project Whitelist';
$lang->program->PRJAddWhitelist = 'Project Add Whitelist';
$lang->program->unbindWhielist = 'Project Remove Whitelist';
$lang->program->PRJManageProducts = 'Manage Products';
$lang->program->view = 'Program Detail';
$lang->program->copyTitle = 'Please select an project to copy';
$lang->program->errorSameProducts = 'Project cannot be associated with multiple identical products.';
$lang->program->errorNoProducts = 'At least one product is associated';
$lang->program->copyNoProject = 'There are no items available to copy.';
$lang->project->searchByName = 'Enter the project name to retrieve';
/* Fields. */
$lang->program->common = 'Program';
$lang->program->project = 'Project';
$lang->program->stage = 'Stage';
$lang->program->PM = 'Manager';
$lang->program->PRJName = 'Name';
$lang->program->PRJCategory = 'Category';
$lang->program->PRJDesc = 'Description';
$lang->program->PRJCode = 'Code';
$lang->program->PRJCopy = 'Copy';
$lang->program->begin = 'Begin';
$lang->program->end = 'End';
$lang->program->PRJStatus = 'Status';
$lang->program->PRJPM = 'Manager';
$lang->program->PRJBudget = 'Budget';
$lang->program->PRJTemplate = 'Template';
$lang->program->PRJEstimate = 'Estimates';
$lang->program->PRJConsume = 'Cost';
$lang->program->PRJSurplus = 'Left';
$lang->program->PRJProgress = 'Progress';
$lang->program->dateRange = 'Duration';
$lang->program->to = ' to ';
$lang->program->realEnd = 'Actual End';
$lang->program->realBegan = 'Actual Began';
$lang->program->bygrid = 'Kanban';
$lang->program->bylist = 'List';
$lang->program->mine = 'My';
$lang->program->setPlanduration = 'Set Duration';
$lang->program->auth = 'Access Control';
$lang->program->durationEstimation = 'Estimated Workload';
$lang->program->teamCount = 'Man';
$lang->program->leftStories = 'Left Stories';
$lang->program->leftTasks = 'Left Tasks';
$lang->program->leftBugs = 'Left Bugs';
$lang->program->PRJChildren = 'Child Project';
$lang->program->PRJParent = 'Parent Project';
$lang->program->allStories = 'All Stories';
$lang->program->doneStories = 'Finished Stories';
$lang->program->allInput = 'Total Input';
$lang->program->weekly = 'Program Weekly';
$lang->program->pv = 'PV';
$lang->program->ev = 'EV';
$lang->program->sv = 'SV%';
$lang->program->ac = 'AC';
$lang->program->cv = 'CV%';
$lang->program->PRJTeamCount = 'Team';
$lang->program->PRJLongTime = 'Long-Term Project';
$lang->program->future = 'TBD';
$lang->program->morePRJ = 'More Project';
$lang->program->name = 'Name';
$lang->program->template = 'Template';
$lang->program->category = 'Type';
$lang->program->desc = 'Description';
$lang->program->copy = 'Copy Program';
$lang->program->status = 'Status';
$lang->program->PM = 'Manager';
$lang->program->budget = 'Budget';
$lang->program->progress = 'Progress';
$lang->program->children = 'Child';
$lang->program->parent = 'Parent';
$lang->program->allInput = 'Input';
$lang->program->teamCount = 'Team';
$lang->program->longTime = 'Long-Term';
$lang->program->productNotEmpty = 'Please link products or create products.';
$lang->program->existProductName = 'Product name already exists.';
$lang->program->changeProgram = '%s > Change program';
$lang->program->changeProgramTip = 'After modifying the program set, the products linked with the project will also modify the program set to which it belongs. Please confirm whether to modify it.';
$lang->program->linkedProjectsTip = 'Linked projects are as follows';
$lang->program->multiLinkedProductsTip = 'The following products linked to this project are also linked to other projects, please unlink before proceeding.';
/* Actions. */
$lang->program->common = 'Program';
$lang->program->index = 'Home';
$lang->program->create = 'Create Program';
$lang->program->createGuide = 'Select Template';
$lang->program->edit = 'Edit Program';
$lang->program->browse = 'Programs';
$lang->program->product = 'Products';
$lang->program->project = 'Program Project List';
$lang->program->all = 'All Programs';
$lang->program->start = 'Start';
$lang->program->finish = 'Finish';
$lang->program->suspend = 'Suspend';
$lang->program->delete = 'Delete';
$lang->program->close = 'Close';
$lang->program->activate = 'Activate';
$lang->program->export = 'Export';
$lang->program->stakeholder = 'Stakeholder';
$lang->program->createStakeholder = 'Create Stakeholder';
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
$lang->program->unlink = 'Unlink';
$lang->program->moreProgram = 'More program';
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
$lang->program->manageMembers = 'Program Team';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->parentBudget = 'Parent program surplus budget:';
$lang->program->beginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
$lang->program->endGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
$lang->program->beginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
$lang->program->endLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
$lang->program->closeErrorMessage = 'There are subprograms or projects that are not closed';
$lang->program->tenThousand = '';
$lang->program->stakeholderTypeList['inside'] = 'Inside';
$lang->program->stakeholderTypeList['outside'] = 'Outside';
$lang->program->unitList['CNY'] = 'RMB';
$lang->program->unitList['USD'] = 'USD';
$lang->program->unitList['HKD'] = 'HKD';
$lang->program->unitList['NTD'] = 'New Taiwan';
$lang->program->unitList['EUR'] = 'Euro';
$lang->program->unitList['DEM'] = 'Deutsche Mark';
$lang->program->unitList['CHF'] = 'Swiss Franc';
$lang->program->unitList['FRF'] = 'French Franc';
$lang->program->unitList['GBP'] = 'Pound';
$lang->program->unitList['NLG'] = 'Florin';
$lang->program->unitList['CAD'] = 'Canadian';
$lang->program->unitList['RUR'] = 'Russian Ruble';
$lang->program->unitList['INR'] = 'Indian';
$lang->program->unitList['AUD'] = 'Australian';
$lang->program->unitList['NZD'] = 'New Zealand';
$lang->program->unitList['THB'] = 'Thai Baht';
$lang->program->unitList['SGD'] = 'Singapore';
$lang->program->currencySymbol['CNY'] = '¥';
$lang->program->currencySymbol['USD'] = '$';
$lang->program->currencySymbol['HKD'] = 'HK$';
$lang->program->currencySymbol['NTD'] = 'NT$';
$lang->program->currencySymbol['EUR'] = '€';
$lang->program->currencySymbol['DEM'] = 'DEM';
$lang->program->currencySymbol['CHF'] = '₣';
$lang->program->currencySymbol['FRF'] = '₣';
$lang->program->currencySymbol['GBP'] = '£';
$lang->program->currencySymbol['NLG'] = 'ƒ';
$lang->program->currencySymbol['CAD'] = '$';
$lang->program->currencySymbol['RUR'] = '₽';
$lang->program->currencySymbol['INR'] = '₹';
$lang->program->currencySymbol['AUD'] = 'A$';
$lang->program->currencySymbol['NZD'] = 'NZ$';
$lang->program->currencySymbol['THB'] = '฿';
$lang->program->currencySymbol['SGD'] = 'S$';
$lang->program->modelList['scrum'] = "Scrum";
$lang->program->modelList['waterfall'] = "CMMI";
$lang->program->PRJCategoryList['single'] = "Single product";
$lang->program->PRJCategoryList['multiple'] = "Multiple products";
$lang->program->PRJLifeTimeList['short'] = "Short-Term";
$lang->program->PRJLifeTimeList['long'] = "Long-Term";
$lang->program->PRJLifeTimeList['ops'] = "DevOps";
$lang->program->featureBar['all'] = 'All';
$lang->program->featureBar['doing'] = 'Going';
$lang->program->featureBar['wait'] = 'Waiting';
$lang->program->featureBar['suspended'] = 'Suspended';
$lang->program->featureBar['closed'] = 'Closed';
$lang->program->PRJAclList['private'] = 'Private (For team members and stakeholders only)';
$lang->program->PRJAclList['open'] = "Open (accessible with project view permissions)";
$lang->program->PRJAcls['private'] = 'Private';
$lang->program->PRJAcls['open'] = "Open";
$lang->program->PGMPRJAclList['private'] = "Private (For team members and stakeholders only)";
$lang->program->PGMPRJAclList['program'] = "Public within the project set (accessible to all higher-level project set leaders and stakeholders, members of this project team and stakeholders)";
$lang->program->PGMPRJAclList['open'] = "Full disclosure (accessible with project view permissions)";
$lang->program->PGMPRJAcls['private'] = "Private";
$lang->program->PGMPRJAcls['program'] = "Public within the project set";
$lang->program->PGMPRJAcls['open'] = "Full disclosure";
$lang->program->PRJAuthList['extend'] = 'Inherit (system privilege and project privilege)';
$lang->program->PRJAuthList['reset'] = 'Reset (project privilege only)';
$lang->program->statusList['wait'] = 'Waiting';
$lang->program->statusList['doing'] = 'Doing';
$lang->program->statusList['suspended'] = 'Suspended';
$lang->program->statusList['closed'] = 'Closed';
$lang->program->noProgram = 'No program.';
$lang->program->showClosed = 'Closed programs.';
$lang->program->tips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
$lang->program->endList[31] = 'One month';
$lang->program->endList[93] = 'Trimester';
@@ -180,115 +64,19 @@ $lang->program->endList[186] = 'Half yearly';
$lang->program->endList[365] = 'One year';
$lang->program->endList[999] = 'Longtime';
$lang->program->noPRJ = 'No project.';
$lang->program->accessDenied = 'Access denied!';
$lang->program->chooseProgramType = 'Select the project management model';
$lang->program->nextStep = 'Next step';
$lang->program->hoursUnit = '%s hours';
$lang->program->membersUnit = '%s men';
$lang->program->lastIteration = 'Recent iterations';
$lang->program->ongoingStage = 'Ongoing stage';
$lang->program->scrum = 'Scrum';
$lang->program->waterfall = 'CMMI';
$lang->program->waterfallTitle = 'CMMI';
$lang->program->cannotCreateChild = 'It is not empty, so you cannot add a child. You can add a parent for it, and then create a child.';
$lang->program->hasChildren = 'It has child programs or projects. You cannot delete it.';
$lang->program->confirmDelete = "Do you want to delete [%s]?";
$lang->program->emptyPM = 'No manager';
$lang->program->cannotChangeToCat = "It is not empty, so you cannot change it to a parent.";
$lang->program->cannotCancelCat = "It has child projects, so you cannot unmark the parent.";
$lang->program->parentBeginEnd = "Parent begin&end date: %s ~ %s";
$lang->program->childLongTime = "If a child as long-term projects, the parent should be long-term too.";
$lang->program->readjustTime = 'Change the project begin&end date.';
$lang->program->notAllowRemoveProducts = 'The story of this product is linked with the project. Unlink it before doing any action.';
$lang->program->aclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
$lang->program->aclList['open'] = "Default(user who can visit the program can access it)";
$lang->program->PRJProgramTitle['0'] = 'Hide';
$lang->program->PRJProgramTitle['base'] = 'Base-level program only';
$lang->program->PRJProgramTitle['end'] = 'End-level program only';
$lang->program->subAclList['private'] = "Private (accessible to this program set leader and stakeholders, stakeholders can follow up maintenance)";
$lang->program->subAclList['open'] = "Default(user who can visit the program can access it)";
$lang->program->subAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
$lang->program->PRJAccessDenied = 'Access denied to this program';
$lang->program->PRJChooseProgramType = 'Select management type';
$lang->program->scrumTitle = 'Agile Development Management';
$lang->program->PRJCannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
$lang->program->PRJHasChildren = 'This project has a child project, so it cannot be deleted.';
$lang->program->PRJConfirmDelete = 'Do you want to delete this project?';
$lang->program->PRJCannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
$lang->program->PRJCannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
$lang->program->PRJParentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
$lang->program->PRJParentBudget = "The budget of the parent project: %s";
$lang->program->PRJBeginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
$lang->program->PRJEndGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
$lang->program->PRJBeginGreateChild = "The minimum start date of the project set: %s. The start date of the project cannot be less than the minimum start date of the program set.";
$lang->program->PRJEndLetterChild = "The maximum finish date for the project set: %s. The completion date of a project cannot be greater than the maximum completion date of the program set.";
$lang->program->PRJChildLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
$lang->program->authList['extend'] = 'Inherit(program privileges and company privileges)';
$lang->program->authList['reset'] = 'Reset(program privileges only)';
/* Actions. */
$lang->program->PGMCommon = 'Program';
$lang->program->PGMIndex = 'Home';
$lang->program->PGMCreate = 'Create Program';
$lang->program->PGMCreateGuide = 'Select Template';
$lang->program->PGMEdit = 'Edit Program';
$lang->program->PGMBrowse = 'Programs';
$lang->program->PGMProduct = 'Products';
$lang->program->PGMProject = 'Program Project List';
$lang->program->PGMAll = 'All Programs';
$lang->program->PGMStart = 'Start';
$lang->program->PGMFinish = 'Finish';
$lang->program->PGMSuspend = 'Suspend';
$lang->program->PGMDelete = 'Delete';
$lang->program->PGMClose = 'Close';
$lang->program->PGMActivate = 'Activate';
$lang->program->PGMExport = 'Export';
$lang->program->PGMStakeholder = 'Stakeholder';
$lang->program->createStakeholder = 'Create Stakeholder';
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
$lang->program->unlink = 'Unlink';
$lang->program->morePGM = 'More program';
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
$lang->program->PGMManageMembers = 'Program Team';
$lang->program->PGMParentBudget = 'Parent program surplus budget:';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
$lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
$lang->program->PGMBeginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
$lang->program->PGMEndLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
$lang->program->PGMCloseErrorMessage = 'There are subprograms or projects that are not closed';
$lang->program->statusList['wait'] = 'Waiting';
$lang->program->statusList['doing'] = 'Doing';
$lang->program->statusList['suspended'] = 'Suspended';
$lang->program->statusList['closed'] = 'Closed';
$lang->program->stakeholderTypeList['inside'] = 'Inside';
$lang->program->stakeholderTypeList['outside'] = 'Outside';
/* Fields. */
$lang->program->PGMName = 'Name';
$lang->program->PGMTemplate = 'Template';
$lang->program->PGMCategory = 'Type';
$lang->program->PGMDesc = 'Description';
$lang->program->PGMCopy = 'Copy Program';
$lang->program->PGMStatus = 'Status';
$lang->program->PGMPM = 'Manager';
$lang->program->PGMBudget = 'Budget';
$lang->program->PGMProgress = 'Progress';
$lang->program->PGMChildren = 'Child';
$lang->program->PGMParent = 'Parent';
$lang->program->PGMAllInput = 'Input';
$lang->program->PGMTeamCount = 'Team';
$lang->program->PGMLongTime = 'Long-Term';
$lang->program->noPGM = 'No program.';
$lang->program->PGMShowClosed = 'Closed programs.';
$lang->program->PGMTips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
$lang->program->PGMAclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
$lang->program->PGMAclList['open'] = "Default(user who can visit the program can access it)";
$lang->program->subPGMAclList['private'] = "Private (accessible to this program set leader and stakeholders, stakeholders can follow up maintenance)";
$lang->program->subPGMAclList['open'] = "Default(user who can visit the program can access it)";
$lang->program->subPGMAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
$lang->program->PGMAuthList['extend'] = 'Inherit(program privileges and company privileges)';
$lang->program->PGMAuthList['reset'] = 'Reset(program privileges only)';
$lang->program->PGMFeatureBar['all'] = 'All';
$lang->program->featureBar['all'] = 'All';
+66 -278
View File
@@ -1,178 +1,62 @@
<?php
/* Actions. */
$lang->program->createGuide = '选择项目模板';
$lang->program->PRJIndex = '项目仪表盘';
$lang->program->PRJHome = '项目主页';
$lang->program->PRJCreate = '创建项目';
$lang->program->PRJEdit = '编辑项目';
$lang->program->PRJBatchEdit = '批量编辑项目';
$lang->program->PRJView = '项目概况';
$lang->program->batchEdit = '批量编辑';
$lang->program->PRJBrowse = '项目列表';
$lang->program->PRJAll = '所有项目';
$lang->program->PRJStart = '启动项目';
$lang->program->PRJFinish = '完成项目';
$lang->program->PRJSuspend = '挂起项目';
$lang->program->PRJDelete = '删除项目';
$lang->program->PRJClose = '关闭项目';
$lang->program->PRJActivate = '激活项目';
$lang->program->PRJGroup = '项目权限分组';
$lang->program->PRJCreateGroup = '项目创建分组';
$lang->program->PRJEditGroup = '项目编辑分组';
$lang->program->PRJCopyGroup = '项目复制分组';
$lang->program->PRJManageView = '项目维护视野';
$lang->program->PRJManagePriv = '项目维护权限';
$lang->program->PRJManageMembers = '项目团队';
$lang->program->export = '导出';
$lang->program->addProduct = '新建产品';
$lang->program->PRJManageGroupMember = '维护分组用户';
$lang->program->PRJModuleSetting = '列表设置';
$lang->program->PRJModuleOpen = '显示项目集名';
$lang->program->PRJUpdateOrder = '排序';
$lang->program->PRJSort = '项目排序';
$lang->program->PRJWhitelist = '项目白名单';
$lang->program->PRJAddWhitelist = '项目添加白名单';
$lang->program->unbindWhielist = '项目删除白名单';
$lang->program->PRJManageProducts = '关联产品';
$lang->program->view = '项目集详情';
$lang->program->copyTitle = '请选择要复制的项目';
$lang->program->errorSameProducts = '项目不能关联多个相同的产品。';
$lang->program->errorNoProducts = '最少关联一个产品';
$lang->program->copyNoProject = '没有可用的项目来复制';
$lang->project->searchByName = '输入项目名称进行检索';
/* Fields. */
$lang->program->common = '项目集';
$lang->program->project = '项目';
$lang->program->stage = '阶段';
$lang->program->PM = '负责人';
$lang->program->PRJName = '项目名称';
$lang->program->PRJCategory = '项目类型';
$lang->program->PRJDesc = '项目描述';
$lang->program->PRJCode = '项目代号';
$lang->program->PRJCopy = '复制项目';
$lang->program->begin = '计划开始';
$lang->program->end = '计划完成';
$lang->program->PRJStatus = '项目状态';
$lang->program->PRJPM = '项目负责人';
$lang->program->PRJBudget = '项目预算';
$lang->program->PRJTemplate = '项目模板';
$lang->program->PRJEstimate = '预计';
$lang->program->PRJConsume = '消耗';
$lang->program->PRJSurplus = '剩余';
$lang->program->PRJProgress = '进度';
$lang->program->dateRange = '起止日期';
$lang->program->to = '至';
$lang->program->realEnd = '实际完成日期';
$lang->program->realBegan = '实际开始日期';
$lang->program->bygrid = '看板';
$lang->program->bylist = '列表';
$lang->program->mine = '我参与的';
$lang->program->setPlanduration = '设置工期';
$lang->program->auth = '权限控制';
$lang->program->durationEstimation = '工作量估算';
$lang->program->teamCount = '人数';
$lang->program->leftStories = '剩余需求';
$lang->program->leftTasks = '剩余任务';
$lang->program->leftBugs = '剩余Bug';
$lang->program->PRJChildren = '子项目';
$lang->program->PRJParent = '父项目';
$lang->program->allStories = '总需求';
$lang->program->doneStories = '已完成';
$lang->program->allInput = '项目总投入';
$lang->program->weekly = '项目周报';
$lang->program->pv = 'PV';
$lang->program->ev = 'EV';
$lang->program->sv = 'SV%';
$lang->program->ac = 'AC';
$lang->program->cv = 'CV%';
$lang->program->PRJTeamCount = '项目成员';
$lang->program->PRJLongTime = '长期';
$lang->program->future = '待定';
$lang->program->morePRJ = '更多项目';
$lang->program->name = '项目集名称';
$lang->program->template = '项目集模板';
$lang->program->category = '项目集类型';
$lang->program->desc = '项目集描述';
$lang->program->copy = '复制项目集';
$lang->program->status = '状态';
$lang->program->PM = '负责人';
$lang->program->budget = '预算';
$lang->program->progress = '项目进度';
$lang->program->children = '子项目集';
$lang->program->parent = '父项目集';
$lang->program->allInput = '项目集总投入';
$lang->program->teamCount = '项目集成员';
$lang->program->longTime = '长期项目';
$lang->program->productNotEmpty = '请关联产品或创建产品。';
$lang->program->existProductName = '产品名称已存在。';
$lang->program->changeProgram = '%s > 修改项目集';
$lang->program->changeProgramTip = '修改项目集后,该项目关联的产品也会同时修改所属项目集,请确认是否修改。';
$lang->program->linkedProjectsTip = '关联的项目如下';
$lang->program->multiLinkedProductsTip = '该项目关联的如下产品还关联了其他项目,请取消关联后再操作';
/* Actions. */
$lang->program->common = '项目集';
$lang->program->index = '项目集主页';
$lang->program->create = '添加项目集';
$lang->program->createGuide = '选择项目模板';
$lang->program->edit = '编辑项目集';
$lang->program->browse = '项目集列表';
$lang->program->product = '产品列表';
$lang->program->project = '项目集项目列表';
$lang->program->all = '所有项目集';
$lang->program->start = '启动项目集';
$lang->program->finish = '完成项目集';
$lang->program->suspend = '挂起项目集';
$lang->program->delete = '删除项目集';
$lang->program->close = '关闭项目集';
$lang->program->activate = '激活项目集';
$lang->program->export = '导出';
$lang->program->stakeholder = '干系人列表';
$lang->program->createStakeholder = '添加干系人';
$lang->program->unlinkStakeholder = '移除干系人';
$lang->program->batchUnlinkStakeholders = '批量移除干系人';
$lang->program->unlink = '移除';
$lang->program->moreProgram = '更多项目集';
$lang->program->confirmBatchUnlink = "您确定要批量移除这些干系人吗?";
$lang->program->stakeholderType = '干系人类型';
$lang->program->isStakeholderKey = '关键干系人';
$lang->program->importStakeholder = '从父项目集导入';
$lang->program->manageMembers = '项目集团队';
$lang->program->beyondParentBudget = '已超出所属项目集的剩余预算';
$lang->program->parentBudget = '所属项目集剩余预算:';
$lang->program->beginLetterParent = "父项目集的开始日期:%s,开始日期不能小于父项目集的开始日期";
$lang->program->endGreaterParent = "父项目集的完成日期:%s,完成日期不能大于父项目集的完成日期";
$lang->program->beginGreateChild = "子项目集的最小开始日期:%s,父项目集的开始日期不能大于子项目集的最小开始日期";
$lang->program->endLetterChild = "子项目的最大完成日期:%s,父项目的完成日期不能小于子项目的最大完成日期";
$lang->program->closeErrorMessage = '存在子项目集或项目为未关闭状态';
$lang->program->tenThousand = '万';
$lang->program->stakeholderTypeList['inside'] = '内部';
$lang->program->stakeholderTypeList['outside'] = '外部';
$lang->program->unitList['CNY'] = '人民币';
$lang->program->unitList['USD'] = '美元';
$lang->program->unitList['HKD'] = '港元';
$lang->program->unitList['NTD'] = '台元';
$lang->program->unitList['EUR'] = '欧元';
$lang->program->unitList['DEM'] = '马克';
$lang->program->unitList['CHF'] = '瑞士法郎';
$lang->program->unitList['FRF'] = '法国法郎';
$lang->program->unitList['GBP'] = '英镑';
$lang->program->unitList['NLG'] = '荷兰盾';
$lang->program->unitList['CAD'] = '加拿大元';
$lang->program->unitList['RUR'] = '卢布';
$lang->program->unitList['INR'] = '卢比';
$lang->program->unitList['AUD'] = '澳大利亚元';
$lang->program->unitList['NZD'] = '新西兰元';
$lang->program->unitList['THB'] = '泰国铢';
$lang->program->unitList['SGD'] = '新加坡元';
$lang->program->currencySymbol['CNY'] = '¥';
$lang->program->currencySymbol['USD'] = '$';
$lang->program->currencySymbol['HKD'] = 'HK$';
$lang->program->currencySymbol['NTD'] = 'NT$';
$lang->program->currencySymbol['EUR'] = '€';
$lang->program->currencySymbol['DEM'] = 'DEM';
$lang->program->currencySymbol['CHF'] = '₣';
$lang->program->currencySymbol['FRF'] = '₣';
$lang->program->currencySymbol['GBP'] = '£';
$lang->program->currencySymbol['NLG'] = 'ƒ';
$lang->program->currencySymbol['CAD'] = '$';
$lang->program->currencySymbol['RUR'] = '₽';
$lang->program->currencySymbol['INR'] = '₹';
$lang->program->currencySymbol['AUD'] = 'A$';
$lang->program->currencySymbol['NZD'] = 'NZ$';
$lang->program->currencySymbol['THB'] = '฿';
$lang->program->currencySymbol['SGD'] = 'S$';
$lang->program->modelList['scrum'] = "Scrum";
$lang->program->modelList['waterfall'] = "瀑布";
$lang->program->PRJCategoryList['single'] = "单产品项目";
$lang->program->PRJCategoryList['multiple'] = "多产品项目";
$lang->program->PRJLifeTimeList['short'] = "短期";
$lang->program->PRJLifeTimeList['long'] = "长期";
$lang->program->PRJLifeTimeList['ops'] = "运维";
$lang->program->featureBar['all'] = '所有';
$lang->program->featureBar['doing'] = '进行中';
$lang->program->featureBar['wait'] = '未开始';
$lang->program->featureBar['suspended'] = '已挂起';
$lang->program->featureBar['closed'] = '已关闭';
$lang->program->PRJAclList['private'] = "私有(只有项目团队成员和干系人可访问)";
$lang->program->PRJAclList['open'] = "公开(有项目视图权限即可访问)";
$lang->program->PRJAcls['private'] = "私有";
$lang->program->PRJAcls['open'] = "公开";
$lang->program->PGMPRJAclList['private'] = "私有(只有项目团队成员和干系人可访问)";
$lang->program->PGMPRJAclList['program'] = "项目集内公开(所有上级项目集负责人和干系人,本项目团队成员和干系人可访问)";
$lang->program->PGMPRJAclList['open'] = "全部公开(有项目视图权限即可访问)";
$lang->program->PGMPRJAcls['private'] = "私有";
$lang->program->PGMPRJAcls['program'] = "项目集内公开";
$lang->program->PGMPRJAcls['open'] = "全部公开";
$lang->program->PRJAuthList['extend'] = '继承(取系统权限与项目权限的合集)';
$lang->program->PRJAuthList['reset'] = '重新定义(只取项目权限)';
$lang->program->statusList['wait'] = '未开始';
$lang->program->statusList['doing'] = '进行中';
$lang->program->statusList['suspended'] = '已挂起';
$lang->program->statusList['closed'] = '已关闭';
$lang->program->noProgram = '暂时没有项目集';
$lang->program->showClosed = '显示已关闭';
$lang->program->tips = '选择了父项目集,则可关联该父项目集下的产品。如果项目未选择任何项目集,则系统会默认创建一个和该项目同名的产品并关联该项目。';
$lang->program->endList[31] = '一个月';
$lang->program->endList[93] = '三个月';
@@ -180,115 +64,19 @@ $lang->program->endList[186] = '半年';
$lang->program->endList[365] = '一年';
$lang->program->endList[999] = '长期';
$lang->program->noPRJ = '暂时没有项目';
$lang->program->accessDenied = '您无权访问该项目!';
$lang->program->chooseProgramType = '选中项目管理模型';
$lang->program->nextStep = '下一步';
$lang->program->hoursUnit = "%s 工时";
$lang->program->membersUnit = '%s人';
$lang->program->lastIteration = '近期迭代';
$lang->program->ongoingStage = '进行中的阶段';
$lang->program->scrum = 'Scrum';
$lang->program->waterfall = '瀑布';
$lang->program->waterfallTitle = '瀑布式项目管理';
$lang->program->cannotCreateChild = '该项目已经有实际的内容,无法直接添加子项目。您可以为当前项目创建一个父项目,然后在新的父项目下面添加子项目。';
$lang->program->hasChildren = '该项目集有子项目集或项目存在,不能删除。';
$lang->program->confirmDelete = "您确定要删除吗?";
$lang->program->emptyPM = '暂无';
$lang->program->cannotChangeToCat = "该项目已经有实际的内容,无法修改为父项目";
$lang->program->cannotCancelCat = "该项目下已经有子项目,无法取消父项目标记";
$lang->program->parentBeginEnd = "父项目起止时间:%s ~ %s";
$lang->program->childLongTime = "子项目中有长期项目,父项目也应该是长期项目";
$lang->program->readjustTime = '重新调整项目起止时间';
$lang->program->notAllowRemoveProducts = '该产品中的需求已与项目进行了关联,请取消关联后再操作。';
$lang->program->aclList['private'] = "私有(项目集负责人和干系人可访问,干系人可后续维护)";
$lang->program->aclList['open'] = "公开(有项目集视图权限,即可访问)";
$lang->program->PRJProgramTitle['0'] = '不显示';
$lang->program->PRJProgramTitle['base'] = '只显示一级项目集';
$lang->program->PRJProgramTitle['end'] = '只显示最后一级项目集';
$lang->program->subAclList['private'] = "私有(本项目集负责人和干系人可访问,干系人可后续维护)";
$lang->program->subAclList['open'] = "全部公开(有项目集视图权限,即可访问)";
$lang->program->subAclList['program'] = "项目集内公开 (所有上级项目集负责人和干系人、本项目集负责人和干系人可访问)";
$lang->program->PRJAccessDenied = '您无权访问该项目!';
$lang->program->PRJChooseProgramType = '选择项目管理方式';
$lang->program->scrumTitle = '敏捷开发全流程项目管理';
$lang->program->PRJCannotCreateChild = '该项目已经有实际的内容,无法直接添加子项目。您可以为当前项目创建一个父项目,然后在新的父项目下面添加子项目。';
$lang->program->PRJHasChildren = '该项目有子项目存在,不能删除。';
$lang->program->PRJConfirmDelete = "您确定删除项目[%s]吗?";
$lang->program->PRJCannotChangeToCat = "该项目已经有实际的内容,无法修改为父项目";
$lang->program->PRJCannotCancelCat = "该项目下已经有子项目,无法取消父项目标记";
$lang->program->PRJParentBeginEnd = "父项目起止时间:%s ~ %s";
$lang->program->PRJParentBudget = "父项目预算:%s";
$lang->program->PRJBeginLetterParent = "父项目的开始日期:%s,开始日期不能小于父项目的开始日期";
$lang->program->PRJEndGreaterParent = "父项目的完成日期:%s,完成日期不能大于父项目的完成日期";
$lang->program->PRJBeginGreateChild = "项目集的最小开始日期:%s,项目的开始日期不能小于项目集的最小开始日期";
$lang->program->PRJEndLetterChild = "项目集的最大完成日期:%s,项目的完成日期不能大于项目集的最大完成日期";
$lang->program->PRJChildLongTime = "子项目中有长期项目,父项目也应该是长期项目";
$lang->program->authList['extend'] = '继承(取项目权限与组织权限的并集)';
$lang->program->authList['reset'] = '重新定义(只取项目权限)';
/* Actions. */
$lang->program->PGMCommon = '项目集';
$lang->program->PGMIndex = '项目集主页';
$lang->program->PGMCreate = '添加项目集';
$lang->program->PGMCreateGuide = '选择项目模板';
$lang->program->PGMEdit = '编辑项目集';
$lang->program->PGMBrowse = '项目集列表';
$lang->program->PGMProduct = '产品列表';
$lang->program->PGMProject = '项目集项目列表';
$lang->program->PGMAll = '所有项目集';
$lang->program->PGMStart = '启动项目集';
$lang->program->PGMFinish = '完成项目集';
$lang->program->PGMSuspend = '挂起项目集';
$lang->program->PGMDelete = '删除项目集';
$lang->program->PGMClose = '关闭项目集';
$lang->program->PGMActivate = '激活项目集';
$lang->program->PGMExport = '导出';
$lang->program->PGMStakeholder = '干系人列表';
$lang->program->createStakeholder = '添加干系人';
$lang->program->unlinkStakeholder = '移除干系人';
$lang->program->batchUnlinkStakeholders = '批量移除干系人';
$lang->program->unlink = '移除';
$lang->program->morePGM = '更多项目集';
$lang->program->confirmBatchUnlink = "您确定要批量移除这些干系人吗?";
$lang->program->stakeholderType = '干系人类型';
$lang->program->isStakeholderKey = '关键干系人';
$lang->program->importStakeholder = '从父项目集导入';
$lang->program->PGMManageMembers = '项目集团队';
$lang->program->PGMParentBudget = '所属项目集剩余预算:';
$lang->program->beyondParentBudget = '已超出所属项目集的剩余预算';
$lang->program->PGMBeginLetterParent = "父项目集的开始日期:%s,开始日期不能小于父项目集的开始日期";
$lang->program->PGMEndGreaterParent = "父项目集的完成日期:%s,完成日期不能大于父项目集的完成日期";
$lang->program->PGMBeginGreateChild = "子项目集的最小开始日期:%s,父项目集的开始日期不能大于子项目集的最小开始日期";
$lang->program->PGMEndLetterChild = "子项目的最大完成日期:%s,父项目的完成日期不能小于子项目的最大完成日期";
$lang->program->PGMCloseErrorMessage = '存在子项目集或项目为未关闭状态';
$lang->program->statusList['wait'] = '未开始';
$lang->program->statusList['doing'] = '进行中';
$lang->program->statusList['suspended'] = '已挂起';
$lang->program->statusList['closed'] = '已关闭';
$lang->program->stakeholderTypeList['inside'] = '内部';
$lang->program->stakeholderTypeList['outside'] = '外部';
/* Fields. */
$lang->program->PGMName = '项目集名称';
$lang->program->PGMTemplate = '项目集模板';
$lang->program->PGMCategory = '项目集类型';
$lang->program->PGMDesc = '项目集描述';
$lang->program->PGMCopy = '复制项目集';
$lang->program->PGMStatus = '状态';
$lang->program->PGMPM = '负责人';
$lang->program->PGMBudget = '预算';
$lang->program->PGMProgress = '项目进度';
$lang->program->PGMChildren = '子项目集';
$lang->program->PGMParent = '父项目集';
$lang->program->PGMAllInput = '项目集总投入';
$lang->program->PGMTeamCount = '项目集成员';
$lang->program->PGMLongTime = '长期项目';
$lang->program->noPGM = '暂时没有项目集';
$lang->program->PGMShowClosed = '显示已关闭';
$lang->program->PGMTips = '选择了父项目集,则可关联该父项目集下的产品。如果项目未选择任何项目集,则系统会默认创建一个和该项目同名的产品并关联该项目。';
$lang->program->PGMAclList['private'] = "私有(项目集负责人和干系人可访问,干系人可后续维护)";
$lang->program->PGMAclList['open'] = "公开(有项目集视图权限,即可访问)";
$lang->program->subPGMAclList['private'] = "私有(本项目集负责人和干系人可访问,干系人可后续维护)";
$lang->program->subPGMAclList['open'] = "全部公开(有项目集视图权限,即可访问)";
$lang->program->subPGMAclList['program'] = "项目集内公开 (所有上级项目集负责人和干系人、本项目集负责人和干系人可访问)";
$lang->program->PGMAuthList['extend'] = '继承(取项目权限与组织权限的并集)';
$lang->program->PGMAuthList['reset'] = '重新定义(只取项目权限)';
$lang->program->PGMFeatureBar['all'] = '所有';
$lang->program->featureBar['all'] = '所有';
+52 -282
View File
@@ -9,18 +9,18 @@ class programModel extends model
* @access public
* @return int
*/
public function savePGMState($programID = 0, $programs = array())
public function saveState($programID = 0, $programs = array())
{
if($programID > 0) $this->session->set('PGM', (int)$programID);
if($programID == 0 and $this->cookie->lastPGM) $this->session->set('PGM', (int)$this->cookie->lastPGM);
if($programID == 0 and $this->session->PGM == '') $this->session->set('PGM', key($programs));
if(!isset($programs[$this->session->PGM]))
if($programID > 0) $this->session->set('program', (int)$programID);
if($programID == 0 and $this->cookie->lastProgram) $this->session->set('program', (int)$this->cookie->lastProgram);
if($programID == 0 and $this->session->program == '') $this->session->set('program', key($programs));
if(!isset($programs[$this->session->program]))
{
$this->session->set('PGM', key($programs));
if($programID && strpos(",{$this->app->user->view->programs},", ",{$this->session->PGM},") === false) $this->accessDenied();
$this->session->set('program', key($programs));
if($programID && strpos(",{$this->app->user->view->programs},", ",{$this->session->program},") === false) $this->accessDenied();
}
return $this->session->PGM;
return $this->session->program;
}
/**
@@ -29,7 +29,7 @@ class programModel extends model
* @access public
* @return string
*/
public function getPGMMainAction()
public function getMainAction()
{
$link = html::a(helper::createLink('program', 'browse'), "<i class='icon icon-list'></i>", '', "style='border: none;'");
$html = "<p style='padding-top:5px;'>" . $link . "</p>";
@@ -43,7 +43,7 @@ class programModel extends model
* @access public
* @return array
*/
public function getPGMPairs($isQueryAll = false)
public function getPairs($isQueryAll = false)
{
return $this->dao->select('id, name')->from(TABLE_PROGRAM)
->where('type')->eq('program')
@@ -61,12 +61,12 @@ class programModel extends model
* @access public
* @return array
*/
public function getPGMProductPairs($programID = 0, $mode = 'assign', $status = 'all')
public function getProductPairs($programID = 0, $mode = 'assign', $status = 'all')
{
/* Get the top programID. */
if($programID)
{
$program = $this->getPGMByID($programID);
$program = $this->getByID($programID);
$path = explode(',', $program->path);
$path = array_filter($path);
$programID = current($path);
@@ -89,7 +89,7 @@ class programModel extends model
* @access public
* @return array
*/
public function getPGMByID($programID = 0)
public function getByID($programID = 0)
{
return $this->dao->select('*')->from(TABLE_PROGRAM)->where('id')->eq($programID)->andWhere('`type`')->eq('program')->fetch();
}
@@ -103,7 +103,7 @@ class programModel extends model
* @access public
* @return array
*/
public function getPGMList($status = 'all', $orderBy = 'id_asc', $pager = NULL)
public function getList($status = 'all', $orderBy = 'id_asc', $pager = NULL)
{
return $this->dao->select('*')->from(TABLE_PROGRAM)
->where('type')->in('program,project')
@@ -126,7 +126,7 @@ class programModel extends model
* @access private
* @return void
*/
public function setPGMViewMenu($programID = 0)
public function setViewMenu($programID = 0)
{
foreach($this->lang->program->viewMenu as $label => $menu)
{
@@ -148,7 +148,7 @@ class programModel extends model
* @access private
* @return int|bool
*/
public function PGMCreate()
public function create()
{
$program = fixer::input('post')
->setDefault('status', 'wait')
@@ -160,7 +160,7 @@ class programModel extends model
->setIF($this->post->budget != 0, 'budget', round($this->post->budget, 2))
->add('type', 'program')
->join('whitelist', ',')
->stripTags($this->config->program->editor->pgmcreate['id'], $this->config->allowedTags)
->stripTags($this->config->program->editor->create['id'], $this->config->allowedTags)
->remove('delta,future')
->get();
@@ -170,13 +170,13 @@ class programModel extends model
if($parentProgram)
{
/* Child program begin cannot less than parent. */
if($program->begin < $parentProgram->begin) dao::$errors['begin'] = sprintf($this->lang->program->PGMBeginLetterParent, $parentProgram->begin);
if($program->begin < $parentProgram->begin) dao::$errors['begin'] = sprintf($this->lang->program->beginLetterParent, $parentProgram->begin);
/* When parent set end then child program end cannot greater than parent. */
if($parentProgram->end != '0000-00-00' and $program->end > $parentProgram->end) dao::$errors['end'] = sprintf($this->lang->program->PGMEndGreaterParent, $parentProgram->end);
if($parentProgram->end != '0000-00-00' and $program->end > $parentProgram->end) dao::$errors['end'] = sprintf($this->lang->program->endGreaterParent, $parentProgram->end);
/* When parent set end then child program cannot set longTime. */
if(empty($program->end) and $this->post->delta == 999 and $parentProgram->end != '0000-00-00') dao::$errors['end'] = sprintf($this->lang->program->PGMEndGreaterParent, $parentProgram->end);
if(empty($program->end) and $this->post->delta == 999 and $parentProgram->end != '0000-00-00') dao::$errors['end'] = sprintf($this->lang->program->endGreaterParent, $parentProgram->end);
/* The budget of a child program cannot beyond the remaining budget of the parent program. */
$program->budgetUnit = $parentProgram->budgetUnit;
@@ -191,16 +191,15 @@ class programModel extends model
}
/* Redefines the language entries for the fields in the project table. */
foreach(explode(',', $this->config->program->PGMCreate->requiredFields) as $fieldName)
foreach(explode(',', $this->config->program->create->requiredFields) as $field)
{
$fieldKey = 'PGM' . ucfirst($fieldName);
if(isset($this->lang->program->$fieldKey)) $this->lang->project->$fieldName = $this->lang->program->$fieldKey;
if(isset($this->lang->program->$field)) $this->lang->project->$field = $this->lang->program->$field;
}
$program = $this->loadModel('file')->processImgURL($program, $this->config->program->editor->pgmcreate['id'], $this->post->uid);
$program = $this->loadModel('file')->processImgURL($program, $this->config->program->editor->create['id'], $this->post->uid);
$this->dao->insert(TABLE_PROGRAM)->data($program)
->autoCheck()
->batchcheck($this->config->program->PGMCreate->requiredFields, 'notempty')
->batchcheck($this->config->program->create->requiredFields, 'notempty')
->checkIF($program->begin != '', 'begin', 'date')
->checkIF($program->end != '', 'end', 'date')
->checkIF($program->end != '', 'end', 'gt', $program->begin)
@@ -252,7 +251,7 @@ class programModel extends model
* @access public
* @return array|bool
*/
public function PGMUpdate($programID)
public function update($programID)
{
$programID = (int)$programID;
$oldProgram = $this->dao->findById($programID)->from(TABLE_PROGRAM)->fetch();
@@ -267,11 +266,11 @@ class programModel extends model
->setIF($this->post->future, 'budget', 0)
->setIF($this->post->budget != 0, 'budget', round($this->post->budget, 2))
->join('whitelist', ',')
->stripTags($this->config->program->editor->pgmedit['id'], $this->config->allowedTags)
->stripTags($this->config->program->editor->edit['id'], $this->config->allowedTags)
->remove('uid,delta,future')
->get();
$program = $this->loadModel('file')->processImgURL($program, $this->config->program->editor->pgmedit['id'], $this->post->uid);
$program = $this->loadModel('file')->processImgURL($program, $this->config->program->editor->edit['id'], $this->post->uid);
$children = $this->getChildren($programID);
if($children > 0)
@@ -279,8 +278,8 @@ class programModel extends model
$minChildBegin = $this->dao->select('min(begin) as minBegin')->from(TABLE_PROGRAM)->where('id')->ne($programID)->andWhere('deleted')->eq(0)->andWhere('path')->like("%,{$programID},%")->fetch('minBegin');
$maxChildEnd = $this->dao->select('max(end) as maxEnd')->from(TABLE_PROGRAM)->where('id')->ne($programID)->andWhere('deleted')->eq(0)->andWhere('path')->like("%,{$programID},%")->andWhere('end')->ne('0000-00-00')->fetch('maxEnd');
if($minChildBegin and $program->begin > $minChildBegin) dao::$errors['begin'] = sprintf($this->lang->program->PGMBeginGreateChild, $minChildBegin);
if($maxChildEnd and $program->end < $maxChildEnd and $this->post->delta != 999) dao::$errors['end'] = sprintf($this->lang->program->PGMEndLetterChild, $maxChildEnd);
if($minChildBegin and $program->begin > $minChildBegin) dao::$errors['begin'] = sprintf($this->lang->program->beginGreateChild, $minChildBegin);
if($maxChildEnd and $program->end < $maxChildEnd and $this->post->delta != 999) dao::$errors['end'] = sprintf($this->lang->program->endLetterChild, $maxChildEnd);
}
if($program->parent)
@@ -288,9 +287,9 @@ class programModel extends model
$parentProgram = $this->dao->select('*')->from(TABLE_PROGRAM)->where('id')->eq($program->parent)->fetch();
if($parentProgram)
{
if($program->begin < $parentProgram->begin) dao::$errors['begin'] = sprintf($this->lang->program->PGMBeginLetterParent, $parentProgram->begin);
if($parentProgram->end != '0000-00-00' and $program->end > $parentProgram->end) dao::$errors['end'] = sprintf($this->lang->program->PGMEndGreaterParent, $parentProgram->end);
if(empty($program->end) and $this->post->delta == 999 and $parentProgram->end != '0000-00-00') dao::$errors['end'] = sprintf($this->lang->program->PGMEndGreaterParent, $parentProgram->end);
if($program->begin < $parentProgram->begin) dao::$errors['begin'] = sprintf($this->lang->program->beginLetterParent, $parentProgram->begin);
if($parentProgram->end != '0000-00-00' and $program->end > $parentProgram->end) dao::$errors['end'] = sprintf($this->lang->program->endGreaterParent, $parentProgram->end);
if(empty($program->end) and $this->post->delta == 999 and $parentProgram->end != '0000-00-00') dao::$errors['end'] = sprintf($this->lang->program->endGreaterParent, $parentProgram->end);
}
/* The budget of a child program cannot beyond the remaining budget of the parent program. */
@@ -304,15 +303,14 @@ class programModel extends model
if(dao::isError()) return false;
/* Redefines the language entries for the fields in the project table. */
foreach(explode(',', $this->config->program->PGMCreate->requiredFields) as $fieldName)
foreach(explode(',', $this->config->program->edit->requiredFields) as $field)
{
$fieldKey = 'PGM' . ucfirst($fieldName);
if(isset($this->lang->program->$fieldKey)) $this->lang->project->$fieldName = $this->lang->program->$fieldKey;
if(isset($this->lang->program->$field)) $this->lang->project->$field = $this->lang->program->$field;
}
$this->dao->update(TABLE_PROGRAM)->data($program)
->autoCheck($skipFields = 'begin,end')
->batchcheck($this->config->program->PGMEdit->requiredFields, 'notempty')
->batchcheck($this->config->program->edit->requiredFields, 'notempty')
->checkIF($program->begin != '', 'begin', 'date')
->checkIF($program->end != '', 'end', 'date')
->checkIF($program->end != '', 'end', 'gt', $program->begin)
@@ -342,7 +340,7 @@ class programModel extends model
* @access private
* @return string
*/
public function getPGMSwitcher($programID = 0)
public function getSwitcher($programID = 0)
{
$currentProgramName = '';
$currentModule = $this->app->moduleName;
@@ -351,15 +349,15 @@ class programModel extends model
if($programID)
{
setCookie("lastProgram", $programID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
$currentProgram = $this->getPGMById($programID);
$currentProgram = $this->getById($programID);
$currentProgramName = $currentProgram->name;
}
else
{
$currentProgramName = $this->lang->program->PGMAll;
$currentProgramName = $this->lang->program->all;
}
$dropMenuLink = helper::createLink('program', 'ajaxGetPGMDropMenu', "objectID=$programID&module=$currentModule&method=$currentMethod");
$dropMenuLink = helper::createLink('program', 'ajaxGetDropMenu', "objectID=$programID&module=$currentModule&method=$currentMethod");
$output = "<div class='btn-group header-angle-btn' id='swapper'><button data-toggle='dropdown' type='button' class='btn' id='currentItem' title='{$currentProgramName}'><span class='text'><i class='icon icon-folder-open-o'></i> {$currentProgramName}</span> <span class='caret'></span></button><div id='dropMenu' class='dropdown-menu search-list' data-ride='searchList' data-url='$dropMenuLink'>";
$output .= '<div class="input-control search-box has-icon-left has-icon-right search-example"><input type="search" class="form-control search-input" /><label class="input-control-icon-left search-icon"><i class="icon icon-search"></i></label><a class="input-control-icon-right search-clear-btn"><i class="icon icon-close icon-sm"></i></a></div>'; $output .= "</div></div>";
@@ -375,7 +373,7 @@ class programModel extends model
* @access public
* @return string
*/
public function getPGMTreeMenu($programID = 0, $from = 'program', $vars = '')
public function getTreeMenu($programID = 0, $from = 'program', $vars = '')
{
$programMenu = array();
$query = $this->dao->select('*')->from(TABLE_PROJECT)
@@ -433,7 +431,7 @@ class programModel extends model
* @access public
* @return array
*/
public function getTopPGMPairs($model = '', $mode = '')
public function getTopPairs($model = '', $mode = '')
{
return $this->dao->select('id,name')->from(TABLE_PROGRAM)
->where('type')->eq('program')
@@ -453,44 +451,21 @@ class programModel extends model
* @access public
* @return int
*/
public function getTopPGMByID($programID)
public function getTopByID($programID)
{
if(empty($programID)) return 0;
$program = $this->getPGMByID($programID);
$program = $this->getByID($programID);
if(empty($program)) return 0;
$path = explode(',', trim($program->path, ','));
return $path[0];
}
/**
* Get Multiple linked products for project.
*
* @param int $projectID
* @access public
* @return array
*/
public function getMultiLinkedProducts($projectID)
{
$linkedProducts = $this->dao->select('product')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($projectID)->fetchPairs();
$multiLinkedProducts = $this->dao->select('t3.id,t3.name')->from(TABLE_PROJECTPRODUCT)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id')
->where('t1.product')->in($linkedProducts)
->andWhere('t1.project')->ne($projectID)
->andWhere('t2.type')->eq('project')
->andWhere('t2.deleted')->eq('0')
->andWhere('t3.deleted')->eq('0')
->fetchPairs('id', 'name');
return $multiLinkedProducts;
}
/**
* Get children by program id.
*
* @param int $programID
* @param int $programID
* @access public
* @return int
*/
@@ -518,41 +493,6 @@ class programModel extends model
return $unfinished;
}
/**
* Get stakeholders by program id.
*
* @param int $programID
* @param string $orderBy
* @param object $paper
* @access public
* @return array
*/
public function getStakeholders($programID = 0, $orderBy, $pager = null)
{
return $this->dao->select('t2.account,t2.realname,t2.role,t2.qq,t2.mobile,t2.phone,t2.weixin,t2.email,t1.id,t1.type,t1.key')->from(TABLE_STAKEHOLDER)->alias('t1')
->leftJoin(TABLE_USER)->alias('t2')->on('t1.user=t2.account')
->where('t1.objectID')->eq($programID)
->andWhere('t1.objectType')->eq('program')
->orderBy($orderBy)
->page($pager)
->fetchAll();
}
/**
* Get stakeholders by program id list.
*
* @param string $programIdList
* @access public
* @return array
*/
public function getStakeholdersByPGMList($programIdList = 0)
{
return $this->dao->select('distinct user as account')->from(TABLE_STAKEHOLDER)
->where('objectID')->in($programIdList)
->andWhere('objectType')->eq('program')
->fetchAll();
}
/**
* Create stakeholder for a program.
*
@@ -600,24 +540,6 @@ class programModel extends model
if(!empty($childProducts)) $this->user->updateUserView($childProducts, 'product', $changedAccounts);
}
/**
* Show accessDenied response.
*
* @access private
* @return void
*/
public function accessDenied()
{
echo(js::alert($this->lang->program->accessDenied));
if(!$this->server->http_referer) die(js::locate(helper::createLink('program', 'prjbrowse')));
$loginLink = $this->config->requestType == 'GET' ? "?{$this->config->moduleVar}=user&{$this->config->methodVar}=login" : "user{$this->config->requestFix}login";
if(strpos($this->server->http_referer, $loginLink) !== false) die(js::locate(helper::createLink('program', 'browse')));
die(js::locate('back'));
}
/**
* Judge an action is clickable or not.
*
@@ -633,48 +555,13 @@ class programModel extends model
if(empty($program)) return true;
if(!isset($program->type)) return true;
if($action == 'pgmclose') return $program->status != 'closed';
if($action == 'pgmactivate') return $program->status == 'done' or $program->status == 'closed';
if($action == 'pgmsuspend') return $program->status == 'wait' or $program->status == 'doing';
if($action == 'prjstart') return $program->status == 'wait' or $program->status == 'suspended';
if($action == 'prjfinish') return $program->status == 'wait' or $program->status == 'doing';
if($action == 'prjclose') return $program->status != 'closed';
if($action == 'prjsuspend') return $program->status == 'wait' or $program->status == 'doing';
if($action == 'prjactivate') return $program->status == 'done' or $program->status == 'closed';
if($action == 'close') return $program->status != 'closed';
if($action == 'activate') return $program->status == 'done' or $program->status == 'closed';
if($action == 'suspend') return $program->status == 'wait' or $program->status == 'doing';
return true;
}
/**
* Check has content for program.
*
* @param int $programID
* @access public
* @return bool
*/
public function checkHasContent($programID)
{
$count = 0;
$count += (int)$this->dao->select('count(*) as count')->from(TABLE_PROGRAM)->where('parent')->eq($programID)->fetch('count');
$count += (int)$this->dao->select('count(*) as count')->from(TABLE_TASK)->where('PRJ')->eq($programID)->fetch('count');
return $count > 0;
}
/**
* Check has children project.
*
* @param int $programID
* @access public
* @return bool
*/
public function checkHasChildren($programID)
{
$count = $this->dao->select('count(*) as count')->from(TABLE_PROGRAM)->where('parent')->eq($programID)->fetch('count');
return $count > 0;
}
/**
* Set program tree path.
*
@@ -697,36 +584,23 @@ class programModel extends model
$path['grade'] = $parent->grade + 1;
}
$this->dao->update(TABLE_PROGRAM)->set('path')->eq($path['path'])->set('grade')->eq($path['grade'])->where('id')->eq($program->id)->exec();
return !dao::isError();
}
/**
* Get budget unit list.
*
* @access public
* @return array
*/
public function getBudgetUnitList()
{
$budgetUnitList = array();
foreach(explode(',', $this->config->program->unitList) as $unit) $budgetUnitList[$unit] = zget($this->lang->program->unitList, $unit, '');
return $budgetUnitList;
}
/**
* Get available budget.
* Get budget left.
*
* @param object $parentProgram
* @access public
* @return int
*/
public function getAvailableBudget($parentProgram)
public function getBudgetLeft($parentProgram)
{
if(empty($parentProgram)) return;
$childGrade = $parentProgram->grade + 1;
$childSumBudget = $this->dao->select("sum(budget) as sumBudget")->from(TABLE_PROJECT)
$childSumBudget = $this->dao->select("sum(budget) as sumBudget")->from(TABLE_PROGRAM)
->where('path')->like("%{$parentProgram->id}%")
->andWhere('grade')->eq($childGrade)
->fetch('sumBudget');
@@ -836,7 +710,7 @@ class programModel extends model
* @access public
* @return array
*/
public function getPRJStats($programID = 0, $browseType = 'undone', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $PRJMine = 0)
public function getProjectStats($programID = 0, $browseType = 'undone', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $PRJMine = 0)
{
/* Init vars. */
$projects = $this->getPRJList($programID, $browseType, $queryID, $orderBy, $pager, $programTitle, $PRJMine);
@@ -908,108 +782,4 @@ class programModel extends model
}
return $stats;
}
/**
* Get a project by id.
*
* @param int $projectID
* @access public
* @return object
*/
public function getPRJByID($projectID)
{
$project = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($projectID)->andWhere('`type`')->eq('project')->fetch();
if(!$project) return false;
if($project->end == '0000-00-00') $project->end = '';
return $project;
}
/**
* Get project list data.
*
* @param int $programID
* @param string $browseType
* @param string $queryID
* @param string $orderBy
* @param object $pager
* @param int $programTitle
* @param int $PRJMine
* @access public
* @return object
*/
public function getPRJList($programID = 0, $browseType = 'all', $queryID = 0, $orderBy = 'id_desc', $pager = null, $programTitle = 0, $PRJMine = 0)
{
$path = '';
if($programID)
{
$project = $this->getPGMByID($programID);
$path = $project->path;
}
$projectList = $this->dao->select('*')->from(TABLE_PROJECT)
->where('deleted')->eq('0')
->beginIF($this->config->systemMode == 'new')->andWhere('type')->eq('project')->fi()
->beginIF($browseType != 'all')->andWhere('status')->eq($browseType)->fi()
->beginIF($path)->andWhere('path')->like($path . '%')->fi()
->beginIF(!$this->app->user->admin and $this->config->systemMode == 'new')->andWhere('id')->in($this->app->user->view->projects)->fi()
->beginIF(!$this->app->user->admin and $this->config->systemMode == 'classic')->andWhere('id')->in($this->app->user->view->sprints)->fi()
->beginIF($this->cookie->PRJMine or $PRJMine)
->andWhere('openedBy', true)->eq($this->app->user->account)
->orWhere('PM')->eq($this->app->user->account)
->markRight(1)
->fi()
->orderBy($orderBy)
->page($pager)
->fetchAll('id');
/* Determine how to display the name of the project. */
if($programTitle and $this->config->systemMode == 'new')
{
$projectList = $this->getPGMPairs();
foreach($projectList as $id => $project)
{
$path = explode(',', $project->path);
$path = array_filter($path);
array_pop($path);
$projectID = $programTitle == 'base' ? current($path) : end($path);
if(empty($path) || $projectID == $id) continue;
$projectName = isset($projectList[$projectID]) ? $projectList[$projectID] : '';
$projectList[$id]->name = $projectName . '/' . $projectList[$id]->name;
}
}
return $projectList;
}
/**
* Get program team member pairs.
*
* @param int $programID
* @access public
* @return array
*/
public function getPRJTeamMemberPairs($programID = 0)
{
$projectList = $this->loadModel('project')->getPRJPairs($programID);
if(!$projectList) return array('' => '');
$users = $this->dao->select("t2.id, t2.account, t2.realname")->from(TABLE_TEAM)->alias('t1')
->leftJoin(TABLE_USER)->alias('t2')->on('t1.account = t2.account')
->where('t1.root')->in(array_keys($projectList))
->andWhere('t1.type')->eq('project')
->andWhere('t2.deleted')->eq(0)
->fetchAll('account');
if(!$users) return array('' => '');
foreach($users as $account => $user)
{
$firstLetter = ucfirst(substr($user->account, 0, 1)) . ':';
if(!empty($this->config->isINT)) $firstLetter = '';
$users[$account] = $firstLetter . ($user->realname ? $user->realname : $user->account);
}
return array('' => '') + $users;
}
}
+3 -3
View File
@@ -1,12 +1,12 @@
<?php
/**
* The suspend file of program module of ZenTaoPMS.
* The activate file of program module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang<wwccss@gmail.com>
* @package program
* @version $Id: suspend.html.php 935 2013-01-16 07:49:24Z wwccss@gmail.com $
* @package program
* @version $Id: activate.html.php 935 2013-01-16 07:49:24Z wwccss@gmail.com $
* @link http://www.zentao.net
*/
?>
+6 -8
View File
@@ -18,21 +18,19 @@
<?php endif;?>
<div id='mainMenu' class='clearfix'>
<div class="btn-toolBar pull-left">
<?php foreach($lang->program->PGMFeatureBar as $key => $label):?>
<?php foreach($lang->program->featureBar as $key => $label):?>
<?php $active = $status == $key ? 'btn-active-text' : '';?>
<?php $label = "<span class='text'>$label</span>";?>
<?php echo html::a(inlink('browse', "status=$key&orderBy=$orderBy"), $label, '', "class='btn btn-link $active'");?>
<?php endforeach;?>
<?php echo html::checkbox('showClosed', array('1' => $lang->program->PGMShowClosed), '', $this->cookie->showClosed ? 'checked=checked' : '');?>
<?php echo html::checkbox('showClosed', array('1' => $lang->program->showClosed), '', $this->cookie->showClosed ? 'checked=checked' : '');?>
</div>
<div class='pull-right'>
<?php if(isset($lang->pageActions)) echo $lang->pageActions;?>
<?php if(isset($this->config->maxVersion)):?>
<?php common::printLink('program', 'createGuide', "programID=0&from=PGM", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary" data-toggle="modal" data-target="#guideDialog"');?>
<?php common::printLink('project', 'createGuide', "programID=0&from=PGM", '<i class="icon icon-plus"></i>' . $lang->project->create, '', 'class="btn btn-primary" data-toggle="modal" data-target="#guideDialog"');?>
<?php elseif($this->config->systemMode == 'new'):?>
<?php common::printLink('program', 'prjcreate', "mode=scrum&programID=0&from=PGM", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary"');?>
<?php else:?>
<?php common::printLink('project', 'create', '', '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary"');?>
<?php common::printLink('project', 'create', "mode=scrum&programID=0&from=PGM", '<i class="icon icon-plus"></i>' . $lang->project->create, '', 'class="btn btn-primary"');?>
<?php endif;?>
</div>
</div>
@@ -40,8 +38,8 @@
<?php if(empty($programs)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->program->noPGM;?></span>
<?php common::printLink('program', 'create', '', "<i class='icon icon-plus'></i> " . $lang->program->PGMCreate, '', "class='btn btn-info'");?>
<span class="text-muted"><?php echo $lang->program->noProgram;?></span>
<?php common::printLink('program', 'create', '', "<i class='icon icon-plus'></i> " . $lang->program->create, '', "class='btn btn-info'");?>
</p>
</div>
<?php else:?>
+19 -19
View File
@@ -6,13 +6,13 @@
<tr>
<th class='table-nest-title'>
<a class='table-nest-toggle table-nest-toggle-global' data-expand-text='<?php echo $lang->expand; ?>' data-collapse-text='<?php echo $lang->collapse; ?>'></a>
<?php echo $lang->program->PGMName;?>
<?php echo $lang->program->name;?>
</th>
<th class='w-100px'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->program->PGMPM);?></th>
<th class='text-right w-100px'><?php common::printOrderLink('budget', $orderBy, $vars, $lang->program->PGMBudget);?></th>
<th class='w-90px'> <?php common::printOrderLink('status', $orderBy, $vars, $lang->program->PGMStatus);?></th>
<th class='w-100px'><?php common::printOrderLink('begin', $orderBy, $vars, $lang->program->begin);?></th>
<th class='w-100px'><?php common::printOrderLink('end', $orderBy, $vars, $lang->program->end);?></th>
<th class='w-100px'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->program->PM);?></th>
<th class='text-right w-100px'><?php common::printOrderLink('budget', $orderBy, $vars, $lang->project->budget);?></th>
<th class='w-90px'> <?php common::printOrderLink('status', $orderBy, $vars, $lang->program->status);?></th>
<th class='w-100px'><?php common::printOrderLink('begin', $orderBy, $vars, $lang->project->begin);?></th>
<th class='w-100px'><?php common::printOrderLink('end', $orderBy, $vars, $lang->project->end);?></th>
<th class='text-center w-180px'><?php echo $lang->actions;?></th>
</tr>
</thead>
@@ -56,30 +56,30 @@
<?php $userID = isset($PMList[$program->PM]) ? $PMList[$program->PM]->id : ''?>
<?php if(!empty($program->PM)) echo html::a($this->createLink('user', 'profile', "userID=$userID", '', true), zget($users, $program->PM), '', "data-toggle='modal' data-type='iframe' data-width='600'");?>
</td>
<?php $programBudget = in_array($this->app->getClientLang(), ['zh-cn','zh-tw']) && $program->budget >= 10000 ? number_format($program->budget / 10000, 1) . $lang->program->tenThousand : number_format((float)$program->budget, 1);?>
<td class='text-right'><?php echo $program->budget != 0 ? zget($lang->program->currencySymbol, $program->budgetUnit) . ' ' . $programBudget : $lang->program->future;?></td>
<?php $programBudget = in_array($this->app->getClientLang(), ['zh-cn','zh-tw']) && $program->budget >= 10000 ? number_format($program->budget / 10000, 1) . $lang->project->tenThousand : number_format((float)$program->budget, 1);?>
<td class='text-right'><?php echo $program->budget != 0 ? zget($lang->project->currencySymbol, $program->budgetUnit) . ' ' . $programBudget : $lang->project->future;?></td>
<td class='c-status'><span class="status-program status-<?php echo $program->status?>"><?php echo zget($lang->project->statusList, $program->status, '');?></span></td>
<td><?php echo $program->begin;?></td>
<td><?php echo $program->end == LONG_TIME ? $lang->program->PRJLongTime : $program->end;?></td>
<td class='c-actions'>
<?php if($program->type == 'program'):?>
<?php if($program->status == 'wait' || $program->status == 'suspended') common::printIcon('program', 'PGMStart', "programID=$program->id", $program, 'list', 'play', '', 'iframe', true, '', $this->lang->program->PGMStart);?>
<?php if($program->status == 'doing') common::printIcon('program', 'PGMClose', "programID=$program->id", $program, 'list', 'off', '', 'iframe', true);?>
<?php if($program->status == 'closed') common::printIcon('program', 'PGMActivate', "programID=$program->id", $program, 'list', 'magic', '', 'iframe', true);?>
<?php if($program->status == 'wait' || $program->status == 'suspended') common::printIcon('program', 'start', "programID=$program->id", $program, 'list', 'play', '', 'iframe', true, '', $this->lang->program->start);?>
<?php if($program->status == 'doing') common::printIcon('program', 'close', "programID=$program->id", $program, 'list', 'off', '', 'iframe', true);?>
<?php if($program->status == 'closed') common::printIcon('program', 'activate', "programID=$program->id", $program, 'list', 'magic', '', 'iframe', true);?>
<?php if(common::hasPriv('program', 'PGMSuspend') || (common::hasPriv('program', 'PGMClose') && $program->status != 'doing') || (common::hasPriv('program', 'PGMActivate') && $program->status != 'closed')):?>
<?php if(common::hasPriv('program', 'suspend') || (common::hasPriv('program', 'close') && $program->status != 'doing') || (common::hasPriv('program', 'activate') && $program->status != 'closed')):?>
<div class='btn-group'>
<button type='button' class='btn icon-caret-down dropdown-toggle' data-toggle='dropdown' title="<?php echo $this->lang->more;?>" style="width: 16px; padding-left: 0px;"></button>
<ul class='dropdown-menu pull-right text-center' role='menu' style="min-width:auto; padding: 5px 10px;">
<?php common::printIcon('program', 'PGMSuspend', "programID=$program->id", $program, 'list', 'pause', '', 'iframe', true, '', $this->lang->program->PGMSuspend);?>
<?php if($program->status != 'doing') common::printIcon('program', 'PGMClose', "programID=$program->id", $program, 'list', 'off', '', 'iframe', true);?>
<?php if($program->status != 'closed') common::printIcon('program', 'PGMActivate', "programID=$program->id", $program, 'list', 'magic', '', 'iframe', true);?>
<?php common::printIcon('program', 'suspend', "programID=$program->id", $program, 'list', 'pause', '', 'iframe', true, '', $this->lang->program->suspend);?>
<?php if($program->status != 'doing') common::printIcon('program', 'close', "programID=$program->id", $program, 'list', 'off', '', 'iframe', true);?>
<?php if($program->status != 'closed') common::printIcon('program', 'activate', "programID=$program->id", $program, 'list', 'magic', '', 'iframe', true);?>
</ul>
</div>
<?php endif;?>
<?php common::printIcon('program', 'PGMEdit', "programID=$program->id", '', 'list', 'edit');?>
<?php common::printIcon('program', 'PGMCreate', "programID=$program->id", '', 'list', 'split', '', '', '', '', $this->lang->program->PGMChildren);?>
<?php if(common::hasPriv('program', 'PGMDelete')) echo html::a($this->createLink("program", "PGMDelete", "programID=$program->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn' title='{$this->lang->program->PGMDelete}'");?>
<?php common::printIcon('program', 'edit', "programID=$program->id", '', 'list', 'edit');?>
<?php common::printIcon('program', 'create', "programID=$program->id", '', 'list', 'split', '', '', '', '', $this->lang->program->children);?>
<?php if(common::hasPriv('program', 'delete')) echo html::a($this->createLink("program", "delete", "programID=$program->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn' title='{$this->lang->program->delete}'");?>
<?php else:?>
<?php if($program->status == 'wait' || $program->status == 'suspended') common::printIcon('project', 'start', "projectID=$program->id", $program, 'list', 'play', '', 'iframe', true);?>
@@ -104,7 +104,7 @@
<ul class='dropdown-menu pull-right text-center' role='menu'>
<?php common::printIcon('project', 'manageProducts', "projectID=$program->id&programID=0&from=browse", $program, 'list', 'link', '', '', '', "data-group='program'", '', $program->id);?>
<?php common::printIcon('project', 'whitelist', "projectID=$program->id&programID=0&module=program&from=browse", $program, 'list', 'shield-check', '', '', '', "data-group='program'", '', $program->id);?>
<?php if(common::hasPriv('project','delete')) echo html::a($this->createLink("project", "delete", "projectID=$program->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn' title='{$this->lang->program->PRJDelete}' data-group='program'");?>
<?php if(common::hasPriv('project','delete')) echo html::a($this->createLink("project", "delete", "projectID=$program->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn' title='{$this->lang->delete}' data-group='program'");?>
</ul>
</div>
<?php endif;?>
+21 -21
View File
@@ -31,65 +31,65 @@
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/kindeditor.html.php';?>
<?php js::import($jsRoot . 'misc/date.js');?>
<?php js::set('weekend', $config->project->weekend);?>
<?php js::set('holders', $lang->project->placeholder);?>
<?php js::set('weekend', $config->execution->weekend);?>
<?php js::set('holders', $lang->execution->placeholder);?>
<?php js::set('errorSameProducts', $lang->project->errorSameProducts);?>
<?php js::set('longTime', $lang->program->PRJLongTime);?>
<?php js::set('currencySymbol', $lang->program->currencySymbol);?>
<?php js::set('PGMParentBudget', $lang->program->PGMParentBudget);?>
<?php js::set('future', $lang->program->future);?>
<?php js::set('longTime', $lang->program->longTime);?>
<?php js::set('currencySymbol', $lang->project->currencySymbol);?>
<?php js::set('PGMParentBudget', $lang->program->parentBudget);?>
<?php js::set('future', $lang->project->future);?>
<?php js::set('PGMList', $PGMList);?>
<?php $aclList = $parentProgram ? $lang->program->subPGMAclList : $lang->program->PGMAclList;?>
<?php $requiredFields = $config->program->PGMCreate->requiredFields;?>
<?php $aclList = $parentProgram ? $lang->program->subAclList : $lang->program->aclList;?>
<?php $requiredFields = $config->program->create->requiredFields;?>
<div id='mainContent' class='main-content'>
<div class='center-block'>
<div class='main-header'>
<h2><?php echo $lang->program->PGMCreate;?></h2>
<h2><?php echo $lang->program->create;?></h2>
</div>
<form class='form-indicator main-form form-ajax' method='post' target='hiddenwin' id='dataform'>
<table class='table table-form'>
<tr>
<th><?php echo $lang->program->PGMParent;?></th>
<th><?php echo $lang->program->parent;?></th>
<td><?php echo html::select('parent', $parents, isset($parentProgram->id) ? $parentProgram->id : 0, "class='form-control chosen' onchange=setBudgetTipsAndAclList(this.value)");?>
<td></td>
</tr>
<tr>
<th class='w-120px'><?php echo $lang->program->PGMName;?></th>
<th class='w-120px'><?php echo $lang->program->name;?></th>
<td class="col-main"><?php echo html::input('name', '', "class='form-control' required");?></td>
<td></td>
</tr>
<tr>
<th><?php echo $lang->program->PGMPM;?></th>
<th><?php echo $lang->program->PM;?></th>
<td><?php echo html::select('PM', $pmUsers, '', "class='form-control chosen'" . (strpos($requiredFields, 'PM') !== false ? ' required' : ''));?></td>
</tr>
<tr>
<th><?php echo $lang->program->PGMBudget;?></th>
<th><?php echo $lang->program->budget;?></th>
<td>
<div class='input-group'>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->program->parentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?>
<?php echo html::input('budget', '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . $placeholder);?>
<?php if($parentProgram):?>
<span class='input-group-addon fix-border'><?php echo zget($budgetUnitList, $parentProgram->budgetUnit);?></span>
<?php else:?>
<span class='input-group-addon fix-border'></span>
<?php echo html::select('budgetUnit', $budgetUnitList, $config->program->defaultCurrency, "class='form-control'");?>
<?php echo html::select('budgetUnit', $budgetUnitList, $config->project->defaultCurrency, "class='form-control'");?>
<?php endif;?>
</div>
</td>
<td>
<div class='checkbox-primary future w-70px'>
<input type='checkbox' id='future' name='future' value='1' />
<label for='future'><?php echo $lang->program->future;?></label>
<label for='future'><?php echo $lang->project->future;?></label>
</div>
</td>
</tr>
<tr>
<th><?php echo $lang->program->dateRange;?></th>
<th><?php echo $lang->project->dateRange;?></th>
<td>
<div class='input-group'>
<?php echo html::input('begin', date('Y-m-d'), "class='form-control form-date' placeholder='" . $lang->program->begin . "' required");?>
<span class='input-group-addon'><?php echo $lang->program->to;?></span>
<?php echo html::input('end', '', "class='form-control form-date' placeholder='" . $lang->program->end . "' required");?>
<?php echo html::input('begin', date('Y-m-d'), "class='form-control form-date' placeholder='" . $lang->project->begin . "' required");?>
<span class='input-group-addon'><?php echo $lang->project->to;?></span>
<?php echo html::input('end', '', "class='form-control form-date' placeholder='" . $lang->project->end . "' required");?>
</div>
</td>
<td colspan='2'><?php echo html::radio('delta', $lang->program->endList , '', "onclick='computeEndDate(this.value)'");?></td>
@@ -103,7 +103,7 @@
</tr>
<?php $this->printExtendFields('', 'table');?>
<tr>
<th><?php echo $lang->program->PGMDesc;?></th>
<th><?php echo $lang->program->desc;?></th>
<td colspan='3'>
<?php echo html::textarea('desc', '', "rows='6' class='form-control kindeditor' hidefocus='true'" . (strpos($requiredFields, 'desc') !== false ? ' required' : ''));?>
</td>
+26 -26
View File
@@ -12,39 +12,39 @@
?>
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/kindeditor.html.php';?>
<?php js::set('weekend', $config->project->weekend);?>
<?php js::set('longTime', $lang->program->PRJLongTime);?>
<?php js::set('currencySymbol', $lang->program->currencySymbol);?>
<?php js::set('PGMParentBudget', $lang->program->PGMParentBudget);?>
<?php js::set('future', $lang->program->future);?>
<?php js::set('PGMList', $PGMList);?>
<?php $aclList = $program->parent ? $lang->program->subPGMAclList : $lang->program->PGMAclList;?>
<?php $requiredFields = $config->program->PGMEdit->requiredFields;?>
<?php js::set('weekend', $config->execution->weekend);?>
<?php js::set('longTime', $lang->program->longTime);?>
<?php js::set('currencySymbol', $lang->project->currencySymbol);?>
<?php js::set('parentBudget', $lang->program->parentBudget);?>
<?php js::set('future', $lang->project->future);?>
<?php js::set('programList', $programList);?>
<?php $aclList = $program->parent ? $lang->program->subAclList : $lang->program->aclList;?>
<?php $requiredFields = $config->program->edit->requiredFields;?>
<div id='mainContent' class='main-content'>
<div class='center-block'>
<div class='main-header'>
<h2><?php echo $lang->program->PGMEdit;?></h2>
<h2><?php echo $lang->program->edit;?></h2>
</div>
<form class='form-indicator main-form form-ajax' method='post' target='hiddenwin' id='dataform'>
<table class='table table-form'>
<tr>
<th class='w-120px'><?php echo $lang->program->PGMParent;?></th>
<th class='w-120px'><?php echo $lang->program->parent;?></th>
<td class="col-main"><?php echo html::select('parent', $parents, $program->parent, "class='form-control chosen' onchange=setBudgetTipsAndAclList(this.value)");?></td>
<td></td><td></td>
</tr>
<tr>
<th class='w-120px'><?php echo $lang->program->PGMName;?></th>
<th class='w-120px'><?php echo $lang->program->name;?></th>
<td class="col-main"><?php echo html::input('name', $program->name, "class='form-control' required");?></td>
</tr>
<tr>
<th><?php echo $lang->program->PGMPM;?></th>
<th><?php echo $lang->program->PM;?></th>
<td><?php echo html::select('PM', $pmUsers, $program->PM, "class='form-control chosen'" . (strpos($requiredFields, 'PM') !== false ? ' required' : ''));?></td>
</tr>
<tr>
<th><?php echo $lang->program->PGMBudget;?></th>
<th><?php echo $lang->program->budget;?></th>
<td>
<div class='input-group'>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->program->parentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?>
<?php echo html::input('budget', $program->budget != 0 ? $program->budget : '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($program->budget == 0 ? 'disabled ' : '') . $placeholder);?>
<?php if($parentProgram):?>
<span class='input-group-addon'><?php echo zget($budgetUnitList, $parentProgram->budgetUnit);?></span>
@@ -57,20 +57,20 @@
<td>
<div class='checkbox-primary future w-70px'>
<input type='checkbox' id='future' name='future' value='1' <?php if($program->budget == 0) echo 'checked';?> />
<label for='future'><?php echo $lang->program->future;?></label>
<label for='future'><?php echo $lang->project->future;?></label>
</div>
</td>
</tr>
<tr>
<th><?php echo $lang->program->dateRange;?></th>
<th><?php echo $lang->project->dateRange;?></th>
<td>
<div class='input-group'>
<?php echo html::input('begin', $program->begin, "class='form-control form-date' placeholder='" . $lang->program->begin . "' required");?>
<span class='input-group-addon'><?php echo $lang->program->to;?></span>
<?php echo html::input('begin', $program->begin, "class='form-control form-date' placeholder='" . $lang->project->begin . "' required");?>
<span class='input-group-addon'><?php echo $lang->project->to;?></span>
<?php
$disabledEnd = $program->end == LONG_TIME ? 'disabled' : '';
$end = $program->end == LONG_TIME ? $lang->program->PRJLongTime : $program->end;
echo html::input('end', $end, "class='form-control form-date' $disabledEnd placeholder='" . $lang->program->end . "' required");
$end = $program->end == LONG_TIME ? $lang->program->longTime : $program->end;
echo html::input('end', $end, "class='form-control form-date' $disabledEnd placeholder='" . $lang->project->end . "' required");
?>
</div>
</td>
@@ -78,11 +78,11 @@
<td colspan='2'><?php echo html::radio('delta', $lang->program->endList , $endValue, "onclick='computeEndDate(this.value)'");?></td>
</tr>
<tr>
<th><?php echo $lang->program->realBegan;?></th>
<th><?php echo $lang->project->realBegan;?></th>
<td><?php echo html::input('realBegan', $program->realBegan, "class='form-control form-date'");?></td><td></td><td></td>
</tr>
<tr>
<th><?php echo $lang->program->PGMDesc;?></th>
<th><?php echo $lang->program->desc;?></th>
<td colspan='3'>
<?php echo html::textarea('desc', $program->desc, "rows='6' class='form-control kindeditor' hidefocus='true'" . (strpos($requiredFields, 'desc') !== false ? ' required' : ''));?>
</td>
@@ -107,10 +107,10 @@
</form>
</div>
</div>
<div id='PGMAcl' class='hidden'>
<?php echo nl2br(html::radio('acl', $lang->program->PGMAclList, $program->acl == 'program' ? 'private' : 'open', "onclick='setWhite(this.value);'", 'block'));?>
<div id='acl' class='hidden'>
<?php echo nl2br(html::radio('acl', $lang->program->aclList, $program->acl == 'program' ? 'private' : 'open', "onclick='setWhite(this.value);'", 'block'));?>
</div>
<div id='subPGMAcl' class='hidden'>
<?php echo nl2br(html::radio('acl', $lang->program->subPGMAclList, $program->acl, "onclick='setWhite(this.value);'", 'block'));?>
<div id='subAcl' class='hidden'>
<?php echo nl2br(html::radio('acl', $lang->program->subAclList, $program->acl, "onclick='setWhite(this.value);'", 'block'));?>
</div>
<?php include '../../common/view/footer.html.php';?>
+1 -1
View File
@@ -17,7 +17,7 @@
<?php foreach($lang->product->featureBar['all'] as $key => $label):?>
<?php $active = $key == $browseType ? 'btn-active-text' : '';?>
<?php if($key == $browseType) $label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";?>
<?php echo html::a(inlink("pgmproduct", "programID=$program->id&browseType=$key&orderBy=$orderBy"), "<span class='text'>{$label}</span>", '', "class='btn btn-link $active'");?>
<?php echo html::a(inlink("product", "programID=$program->id&browseType=$key&orderBy=$orderBy"), "<span class='text'>{$label}</span>", '', "class='btn btn-link $active'");?>
<?php endforeach;?>
</div>
<div class="btn-toolbar pull-right">
+9 -7
View File
@@ -21,17 +21,15 @@ js::set('browseType', $browseType);
<?php $active = $browseType == $key ? 'btn-active-text' : '';?>
<?php $label = "<span class='text'>$label</span>";?>
<?php if($browseType == $key) $label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";?>
<?php echo html::a(inlink('PGMProject', "programID=$programID&browseType=$key"), $label, '', "class='btn btn-link $active'");?>
<?php echo html::a(inlink('project', "programID=$programID&browseType=$key"), $label, '', "class='btn btn-link $active'");?>
<?php endforeach;?>
<?php echo html::checkbox('PRJMine', array('1' => $lang->program->mine), '', $this->cookie->PRJMine ? 'checked=checked' : '');?>
<?php echo html::checkbox('involved ', array('1' => $lang->project->mine), '', $this->cookie->PRJMine ? 'checked=checked' : '');?>
</div>
<div class="btn-toolbar pull-right">
<?php if(isset($this->config->maxVersion)):?>
<?php common::printLink('project', 'createGuide', "programID=$programID&from=program", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary" data-toggle="modal" data-target="#guideDialog"');?>
<?php elseif($this->config->systemMode == 'new'):?>
<?php common::printLink('project', 'create', "mode=scrum&programID=$programID&from=program", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary"');?>
<?php else:?>
<?php common::printLink('project', 'create', '', '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary"');?>
<?php common::printLink('project', 'create', "mode=scrum&programID=$programID&from=program", '<i class="icon icon-plus"></i>' . $lang->project->create, '', 'class="btn btn-primary"');?>
<?php endif;?>
</div>
</div>
@@ -40,8 +38,12 @@ js::set('browseType', $browseType);
<?php if(empty($projectStats)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->program->noPRJ;?></span>
<?php common::printLink('program', 'createGuide', "programID=$programID", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-info btn-wide " data-toggle="modal" data-target="#guideDialog"');?>
<span class="text-muted"><?php echo $lang->project->empty;?></span>
<?php if(isset($this->config->maxVersion)):?>
<?php common::printLink('program', 'createGuide', "programID=$programID", '<i class="icon icon-plus"></i>' . $lang->project->create, '', 'class="btn btn-info btn-wide " data-toggle="modal" data-target="#guideDialog"');?>
<?php elseif($this->config->systemMode == 'new'):?>
<?php common::printLink('project', 'create', "mode=scrum&programID=$programID&from=program", '<i class="icon icon-plus"></i>' . $lang->project->create, '', 'class="btn btn-info btn-wide"');?>
<?php endif;?>
</p>
</div>
<?php else:?>
+2 -2
View File
@@ -11,10 +11,10 @@
*/
?>
<?php include '../../common/view/header.html.php';?>
<?php js::set('confirmDelete', $lang->program->confirmDelete);?>
<?php js::set('confirmDelete', $lang->project->confirmDelete);?>
<div id="mainMenu" class="clearfix">
<div class="btn-toolbar pull-left">
<?php echo html::a($this->createLink('program', 'pgmstakeholder', "programID=$programID"), '<span class="text">' . $lang->program->PGMStakeholder . '</span>', '', 'class="btn btn-link btn-active-text"');?>
<?php echo html::a($this->createLink('program', 'stakeholder', "programID=$programID"), '<span class="text">' . $lang->program->stakeholder . '</span>', '', 'class="btn btn-link btn-active-text"');?>
</div>
<div class="btn-toolbar pull-right">
<?php common::printLink('stakeholder', 'create', "programID=$programID", "<i class='icon icon-plus'></i>" . $lang->program->createStakeholder, '', "class='btn btn-primary'");?>
+89 -89
View File
@@ -1,110 +1,110 @@
<?php
$config->program = new stdclass();
$config->project = new stdclass();
$config->program->editor = new stdclass();
$config->program->editor->pgmcreate = array('id' => 'desc', 'tools' => 'simpleTools');
$config->program->editor->pgmedit = array('id' => 'desc', 'tools' => 'simpleTools');
$config->program->editor->pgmclose = array('id' => 'comment', 'tools' => 'simpleTools');
$config->program->editor->pgmstart = array('id' => 'comment', 'tools' => 'simpleTools');
$config->program->editor->pgmactivate = array('id' => 'comment', 'tools' => 'simpleTools');
$config->program->editor->pgmfinish = array('id' => 'comment', 'tools' => 'simpleTools');
$config->program->editor->pgmsuspend = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor = new stdclass();
$config->project->editor->pgmcreate = array('id' => 'desc', 'tools' => 'simpleTools');
$config->project->editor->pgmedit = array('id' => 'desc', 'tools' => 'simpleTools');
$config->project->editor->pgmclose = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->pgmstart = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->pgmactivate = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->pgmfinish = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->pgmsuspend = array('id' => 'comment', 'tools' => 'simpleTools');
$config->program->editor->prjcreate = array('id' => 'desc', 'tools' => 'simpleTools');
$config->program->editor->prjedit = array('id' => 'desc', 'tools' => 'simpleTools');
$config->program->editor->prjclose = array('id' => 'comment', 'tools' => 'simpleTools');
$config->program->editor->prjsuspend = array('id' => 'comment', 'tools' => 'simpleTools');
$config->program->editor->prjstart = array('id' => 'comment', 'tools' => 'simpleTools');
$config->program->editor->prjactivate = array('id' => 'comment', 'tools' => 'simpleTools');
$config->program->editor->prjview = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->prjcreate = array('id' => 'desc', 'tools' => 'simpleTools');
$config->project->editor->prjedit = array('id' => 'desc', 'tools' => 'simpleTools');
$config->project->editor->prjclose = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->prjsuspend = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->prjstart = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->prjactivate = array('id' => 'comment', 'tools' => 'simpleTools');
$config->project->editor->prjview = array('id' => 'comment', 'tools' => 'simpleTools');
$config->program->list = new stdclass();
$config->program->list->exportFields = 'id,name,code,template,product,status,begin,end,budget,PM,end,desc';
$config->project->list = new stdclass();
$config->project->list->exportFields = 'id,name,code,template,product,status,begin,end,budget,PM,end,desc';
$config->program->PGMCreate = new stdclass();
$config->program->PGMEdit = new stdclass();
$config->program->PGMCreate->requiredFields = 'name,begin,end';
$config->program->PGMEdit->requiredFields = 'name,begin,end';
$config->project->PGMCreate = new stdclass();
$config->project->PGMEdit = new stdclass();
$config->project->PGMCreate->requiredFields = 'name,begin,end';
$config->project->PGMEdit->requiredFields = 'name,begin,end';
$config->program->PRJCreate = new stdclass();
$config->program->PRJEdit = new stdclass();
$config->program->PRJCreate->requiredFields = 'name,code,begin,end';
$config->program->PRJEdit->requiredFields = 'name,code,begin,end';
$config->project->PRJCreate = new stdclass();
$config->project->PRJEdit = new stdclass();
$config->project->PRJCreate->requiredFields = 'name,code,begin,end';
$config->project->PRJEdit->requiredFields = 'name,code,begin,end';
$config->program->sortFields = new stdclass();
$config->program->sortFields->id = 'id';
$config->program->sortFields->begin = 'begin';
$config->program->sortFields->end = 'end';
$config->program->sortFields->PRJStatus = 'status';
$config->program->sortFields->PRJBudget = 'budget';
$config->project->sortFields = new stdclass();
$config->project->sortFields->id = 'id';
$config->project->sortFields->begin = 'begin';
$config->project->sortFields->end = 'end';
$config->project->sortFields->PRJStatus = 'status';
$config->project->sortFields->PRJBudget = 'budget';
global $lang;
$config->program->datatable = new stdclass();
$config->program->datatable->defaultField = array('id', 'PRJName', 'PM', 'PRJStatus', 'begin', 'end', 'PRJBudget', 'teamCount','PRJEstimate','PRJConsume', 'PRJProgress', 'actions');
$config->project->datatable = new stdclass();
$config->project->datatable->defaultField = array('id', 'PRJName', 'PM', 'PRJStatus', 'begin', 'end', 'PRJBudget', 'teamCount','PRJEstimate','PRJConsume', 'PRJProgress', 'actions');
$config->program->datatable->fieldList['id']['title'] = 'ID';
$config->program->datatable->fieldList['id']['fixed'] = 'left';
$config->program->datatable->fieldList['id']['width'] = '60';
$config->program->datatable->fieldList['id']['required'] = 'yes';
$config->project->datatable->fieldList['id']['title'] = 'ID';
$config->project->datatable->fieldList['id']['fixed'] = 'left';
$config->project->datatable->fieldList['id']['width'] = '60';
$config->project->datatable->fieldList['id']['required'] = 'yes';
$config->program->datatable->fieldList['PRJName']['title'] = 'PRJName';
$config->program->datatable->fieldList['PRJName']['fixed'] = 'left';
$config->program->datatable->fieldList['PRJName']['width'] = 'auto';
$config->program->datatable->fieldList['PRJName']['required'] = 'yes';
$config->program->datatable->fieldList['PRJName']['sort'] = 'no';
$config->project->datatable->fieldList['PRJName']['title'] = 'PRJName';
$config->project->datatable->fieldList['PRJName']['fixed'] = 'left';
$config->project->datatable->fieldList['PRJName']['width'] = 'auto';
$config->project->datatable->fieldList['PRJName']['required'] = 'yes';
$config->project->datatable->fieldList['PRJName']['sort'] = 'no';
$config->program->datatable->fieldList['PM']['title'] = 'PM';
$config->program->datatable->fieldList['PM']['fixed'] = 'no';
$config->program->datatable->fieldList['PM']['width'] = '80';
$config->program->datatable->fieldList['PM']['required'] = 'yes';
$config->program->datatable->fieldList['PM']['sort'] = 'no';
$config->project->datatable->fieldList['PM']['title'] = 'PM';
$config->project->datatable->fieldList['PM']['fixed'] = 'no';
$config->project->datatable->fieldList['PM']['width'] = '80';
$config->project->datatable->fieldList['PM']['required'] = 'yes';
$config->project->datatable->fieldList['PM']['sort'] = 'no';
$config->program->datatable->fieldList['PRJStatus']['title'] = 'PRJStatus';
$config->program->datatable->fieldList['PRJStatus']['fixed'] = 'left';
$config->program->datatable->fieldList['PRJStatus']['width'] = '80';
$config->program->datatable->fieldList['PRJStatus']['required'] = 'no';
$config->program->datatable->fieldList['PRJStatus']['sort'] = 'yes';
$config->project->datatable->fieldList['PRJStatus']['title'] = 'PRJStatus';
$config->project->datatable->fieldList['PRJStatus']['fixed'] = 'left';
$config->project->datatable->fieldList['PRJStatus']['width'] = '80';
$config->project->datatable->fieldList['PRJStatus']['required'] = 'no';
$config->project->datatable->fieldList['PRJStatus']['sort'] = 'yes';
$config->program->datatable->fieldList['begin']['title'] = 'begin';
$config->program->datatable->fieldList['begin']['fixed'] = 'no';
$config->program->datatable->fieldList['begin']['width'] = '100';
$config->program->datatable->fieldList['begin']['required'] = 'no';
$config->project->datatable->fieldList['begin']['title'] = 'begin';
$config->project->datatable->fieldList['begin']['fixed'] = 'no';
$config->project->datatable->fieldList['begin']['width'] = '100';
$config->project->datatable->fieldList['begin']['required'] = 'no';
$config->program->datatable->fieldList['end']['title'] = 'end';
$config->program->datatable->fieldList['end']['fixed'] = 'no';
$config->program->datatable->fieldList['end']['width'] = '100';
$config->program->datatable->fieldList['end']['required'] = 'no';
$config->project->datatable->fieldList['end']['title'] = 'end';
$config->project->datatable->fieldList['end']['fixed'] = 'no';
$config->project->datatable->fieldList['end']['width'] = '100';
$config->project->datatable->fieldList['end']['required'] = 'no';
$config->program->datatable->fieldList['PRJBudget']['title'] = 'PRJBudget';
$config->program->datatable->fieldList['PRJBudget']['fixed'] = 'no';
$config->program->datatable->fieldList['PRJBudget']['width'] = '80';
$config->program->datatable->fieldList['PRJBudget']['required'] = 'yes';
$config->project->datatable->fieldList['PRJBudget']['title'] = 'PRJBudget';
$config->project->datatable->fieldList['PRJBudget']['fixed'] = 'no';
$config->project->datatable->fieldList['PRJBudget']['width'] = '80';
$config->project->datatable->fieldList['PRJBudget']['required'] = 'yes';
$config->program->datatable->fieldList['teamCount']['title'] = 'teamCount';
$config->program->datatable->fieldList['teamCount']['fixed'] = 'no';
$config->program->datatable->fieldList['teamCount']['width'] = '40';
$config->program->datatable->fieldList['teamCount']['required'] = 'no';
$config->program->datatable->fieldList['teamCount']['sort'] = 'no';
$config->project->datatable->fieldList['teamCount']['title'] = 'teamCount';
$config->project->datatable->fieldList['teamCount']['fixed'] = 'no';
$config->project->datatable->fieldList['teamCount']['width'] = '40';
$config->project->datatable->fieldList['teamCount']['required'] = 'no';
$config->project->datatable->fieldList['teamCount']['sort'] = 'no';
$config->program->datatable->fieldList['PRJEstimate']['title'] = 'PRJEstimate';
$config->program->datatable->fieldList['PRJEstimate']['fixed'] = 'no';
$config->program->datatable->fieldList['PRJEstimate']['width'] = '60';
$config->program->datatable->fieldList['PRJEstimate']['required'] = 'no';
$config->program->datatable->fieldList['PRJEstimate']['sort'] = 'no';
$config->project->datatable->fieldList['PRJEstimate']['title'] = 'PRJEstimate';
$config->project->datatable->fieldList['PRJEstimate']['fixed'] = 'no';
$config->project->datatable->fieldList['PRJEstimate']['width'] = '60';
$config->project->datatable->fieldList['PRJEstimate']['required'] = 'no';
$config->project->datatable->fieldList['PRJEstimate']['sort'] = 'no';
$config->program->datatable->fieldList['PRJConsume']['title'] = 'PRJConsume';
$config->program->datatable->fieldList['PRJConsume']['fixed'] = 'no';
$config->program->datatable->fieldList['PRJConsume']['width'] = '60';
$config->program->datatable->fieldList['PRJConsume']['required'] = 'no';
$config->program->datatable->fieldList['PRJConsume']['sort'] = 'no';
$config->project->datatable->fieldList['PRJConsume']['title'] = 'PRJConsume';
$config->project->datatable->fieldList['PRJConsume']['fixed'] = 'no';
$config->project->datatable->fieldList['PRJConsume']['width'] = '60';
$config->project->datatable->fieldList['PRJConsume']['required'] = 'no';
$config->project->datatable->fieldList['PRJConsume']['sort'] = 'no';
$config->program->datatable->fieldList['PRJProgress']['title'] = 'PRJProgress';
$config->program->datatable->fieldList['PRJProgress']['fixed'] = 'right';
$config->program->datatable->fieldList['PRJProgress']['width'] = '60';
$config->program->datatable->fieldList['PRJProgress']['required'] = 'no';
$config->program->datatable->fieldList['PRJProgress']['sort'] = 'no';
$config->project->datatable->fieldList['PRJProgress']['title'] = 'PRJProgress';
$config->project->datatable->fieldList['PRJProgress']['fixed'] = 'right';
$config->project->datatable->fieldList['PRJProgress']['width'] = '60';
$config->project->datatable->fieldList['PRJProgress']['required'] = 'no';
$config->project->datatable->fieldList['PRJProgress']['sort'] = 'no';
$config->program->datatable->fieldList['actions']['title'] = 'actions';
$config->program->datatable->fieldList['actions']['fixed'] = 'right';
$config->program->datatable->fieldList['actions']['width'] = '180';
$config->program->datatable->fieldList['actions']['required'] = 'yes';
$config->project->datatable->fieldList['actions']['title'] = 'actions';
$config->project->datatable->fieldList['actions']['fixed'] = 'right';
$config->project->datatable->fieldList['actions']['width'] = '180';
$config->project->datatable->fieldList['actions']['required'] = 'yes';
+24 -590
View File
@@ -13,7 +13,7 @@ class project extends control
public function __construct($moduleName = '', $methodName = '')
{
parent::__construct($moduleName, $methodName);
$this->loadModel('project');
$this->loadModel('execution');
$this->loadModel('group');
}
@@ -32,554 +32,6 @@ class project extends control
$this->display();
}
/**
* Project home page.
*
* @access public
* @return void
*/
public function PGMIndex()
{
$this->lang->navGroup->project = 'project';
$this->view->title = $this->lang->project->PGMIndex;
$this->view->position[] = $this->lang->project->PGMIndex;
$this->display();
}
/**
* Project list.
*
* @param varchar $status
* @param varchar $orderBy
* @access public
* @return void
*/
public function PGMBrowse($status = 'all', $orderBy = 'order_asc')
{
$this->lang->navGroup->project = 'project';
$this->lang->project->mainMenuAction = html::a('javascript:history.go(-1);', '<i class="icon icon-back"></i> ' . $this->lang->goback, '', "class='btn btn-link'");
if(common::hasPriv('project', 'pgmcreate')) $this->lang->pageActions = html::a($this->createLink('project', 'pgmcreate'), "<i class='icon icon-sm icon-plus'></i> " . $this->lang->project->PGMCreate, '', "class='btn btn-secondary'");
$this->app->session->set('projectList', $this->app->getURI(true));
$projectType = $this->cookie->projectType ? $this->cookie->projectType : 'bylist';
if($projectType === 'bygrid')
{
$projects = $this->project->getProjectStats($status, 20, $orderBy);
}
else
{
$projects = $this->project->getPGMList($status, $orderBy, null, true);
}
/* Get PM id list. */
$accounts = array();
foreach($projects as $project)
{
if(!empty($project->PM) and !in_array($project->PM, $accounts)) $accounts[] = $project->PM;
}
$PMList = $this->loadModel('user')->getListByAccounts($accounts, 'account');
$this->view->title = $this->lang->project->PGMBrowse;
$this->view->position[] = $this->lang->project->PGMBrowse;
$this->view->projects = $projects;
$this->view->status = $status;
$this->view->orderBy = $orderBy;
$this->view->users = $this->user->getPairs('noletter');
$this->view->projectType = $projectType;
$this->view->PMList = $PMList;
$this->display();
}
/**
* Project products list.
*
* @param int $projectID
* @param string $browseType
* @param string $orderBy
* @param int $recTotal
* @param int $recPerPage
* @param int $pageID
* @access public
* @return void
*/
public function PGMProduct($projectID = 0, $browseType = 'noclosed', $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
{
$projectID = $this->project->savePGMState($projectID, $this->project->getPGMPairs());
setCookie("lastPGM", $projectID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
$project = $this->project->getPGMByID($projectID);
if(empty($project) || $project->type != 'project') die(js::error($this->lang->notFound) . js::locate('back'));
$this->lang->navGroup->project = 'project';
$this->lang->project->switcherMenu = $this->project->getPGMSwitcher($projectID, true);
$this->lang->project->mainMenuAction = $this->project->getPGMMainAction();
$this->project->setPGMViewMenu($projectID);
/* Load pager and get tasks. */
$this->app->loadClass('pager', $static = true);
$pager = new pager($recTotal, $recPerPage, $pageID);
/* Get the top projectID. */
if($projectID)
{
$path = explode(',', $project->path);
$path = array_filter($path);
$projectID = current($path);
}
$this->view->title = $this->lang->project->PGMProduct;
$this->view->position[] = $this->lang->project->PGMProduct;
$this->view->project = $project;
$this->view->browseType = $browseType;
$this->view->orderBy = $orderBy;
$this->view->pager = $pager;
$this->view->users = $this->loadModel('user')->getPairs('noletter');
$this->view->products = $this->loadModel('product')->getStats($orderBy, $pager, $browseType, '', 'story', $projectID);
$this->display();
}
/**
* Create a project.
*
* @param int $parentProjectID
* @access public
* @return void
*/
public function PGMCreate($parentProjectID = 0)
{
$this->lang->navGroup->project = 'project';
$parentProject = $this->project->getPGMByID($parentProjectID);
if($_POST)
{
$projectID = $this->project->PGMCreate();
if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError()));
$this->loadModel('action')->create('project', $projectID, 'opened');
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('pgmbrowse')));
}
$this->view->title = $this->lang->project->PGMCreate;
$this->view->position[] = $this->lang->project->PGMCreate;
$this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst');
$this->view->poUsers = $this->user->getPairs('noclosed|nodeleted|pofirst');
$this->view->users = $this->user->getPairs('noclosed|nodeleted');
$this->view->parentProject = $parentProject;
$this->view->parents = $this->project->getParentPairs();
$this->view->PGMList = $this->project->getPGMList();
$this->view->budgetUnitList = $this->project->getBudgetUnitList();
$this->view->availableBudget = $this->project->getAvailableBudget($parentProject);
$this->display();
}
/**
* Edit a project.
*
* @param int $projectID
* @access public
* @return void
*/
public function PGMEdit($projectID = 0)
{
$this->lang->navGroup->project = 'project';
if($_POST)
{
$changes = $this->project->PGMUpdate($projectID);
if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError()));
if($changes)
{
$actionID = $this->loadModel('action')->create('project', $projectID, 'edited');
$this->action->logHistory($actionID, $changes);
}
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inLink('PGMBrowse')));
}
$project = $this->project->getPGMByID($projectID);
$parentProject = $project->parent ? $this->project->getPGMByID($project->parent) : '';
$parents = $this->project->getParentPairs();
unset($parents[$projectID]);
$this->view->title = $this->lang->project->PGMEdit;
$this->view->position[] = $this->lang->project->PGMEdit;
$this->view->pmUsers = $this->loadModel('user')->getPairs('noclosed|nodeleted|pmfirst', $project->PM);
$this->view->poUsers = $this->user->getPairs('noclosed|nodeleted|pofirst');
$this->view->users = $this->user->getPairs('noclosed|nodeleted');
$this->view->project = $project;
$this->view->parents = $parents;
$this->view->PGMList = $this->project->getPGMList();
$this->view->budgetUnitList = $this->project->getBudgetUnitList();
$this->view->parentProject = $parentProject;
$this->view->availableBudget = $this->project->getAvailableBudget($parentProject) + (float)$project->budget;
$this->display();
}
/**
* Close a project.
*
* @param int $projectID
* @access public
* @return void
*/
public function PGMClose($projectID)
{
$this->lang->navGroup->project = 'project';
$this->loadModel('action');
$project = $this->project->getPGMByID($projectID);
if(!empty($_POST))
{
/* Only when all subprojects and subprojects are closed can the project be closed. */
$hasUnfinished = $this->project->hasUnfinished($project);
if($hasUnfinished) die(js::error($this->lang->project->PGMCloseErrorMessage));
$changes = $this->project->close($projectID);
if(dao::isError()) die(js::error(dao::getError()));
if($this->post->comment != '' or !empty($changes))
{
$actionID = $this->action->create('project', $projectID, 'Closed', $this->post->comment);
$this->action->logHistory($actionID, $changes);
}
$this->executeHooks($projectID);
die(js::reload('parent.parent'));
}
$this->view->title = $this->lang->project->PGMClose;
$this->view->position[] = $this->lang->project->PGMClose;
$this->view->project = $project;
$this->view->users = $this->loadModel('user')->getPairs('noletter');
$this->view->actions = $this->action->getList('project', $projectID);
$this->display('project', 'close');
}
/**
* Start project.
*
* @param int $projectID
* @access public
* @return void
*/
public function PGMStart($projectID)
{
$this->lang->navGroup->project = 'project';
$this->loadModel('action');
if(!empty($_POST))
{
$changes = $this->project->start($projectID);
if(dao::isError()) die(js::error(dao::getError()));
if($this->post->comment != '' or !empty($changes))
{
$actionID = $this->action->create('project', $projectID, 'Started', $this->post->comment);
$this->action->logHistory($actionID, $changes);
}
$this->executeHooks($projectID);
die(js::reload('parent.parent'));
}
$this->view->title = $this->lang->project->start;
$this->view->position[] = $this->lang->project->start;
$this->view->project = $this->project->getPGMByID($projectID);
$this->view->users = $this->loadModel('user')->getPairs('noletter');
$this->view->actions = $this->action->getList('project', $projectID);
$this->display();
}
/**
* Activate a project.
*
* @param int $projectID
* @access public
* @return void
*/
public function PGMActivate($projectID = 0)
{
$this->lang->navGroup->project = 'project';
$this->loadModel('action');
$project = $this->project->getPGMByID($projectID);
if(!empty($_POST))
{
$changes = $this->project->activate($projectID);
if(dao::isError()) die(js::error(dao::getError()));
if($this->post->comment != '' or !empty($changes))
{
$actionID = $this->action->create('project', $projectID, 'Activated', $this->post->comment);
$this->action->logHistory($actionID, $changes);
}
die(js::reload('parent.parent'));
}
$newBegin = date('Y-m-d');
$dateDiff = helper::diffDate($newBegin, $project->begin);
$newEnd = date('Y-m-d', strtotime($project->end) + $dateDiff * 24 * 3600);
$this->view->title = $this->lang->project->PGMActivate;
$this->view->position[] = $this->lang->project->PGMActivate;
$this->view->project = $project;
$this->view->users = $this->loadModel('user')->getPairs('noletter');
$this->view->actions = $this->action->getList('project', $projectID);
$this->view->newBegin = $newBegin;
$this->view->newEnd = $newEnd;
$this->display();
}
/**
* Suspend a project.
*
* @param int $projectID
* @access public
* @return void
*/
public function PGMSuspend($projectID)
{
$this->lang->navGroup->project = 'project';
$this->loadModel('action');
if(!empty($_POST))
{
$changes = $this->project->suspend($projectID);
if(dao::isError()) die(js::error(dao::getError()));
if($this->post->comment != '' or !empty($changes))
{
$actionID = $this->action->create('project', $projectID, 'Suspended', $this->post->comment);
$this->action->logHistory($actionID, $changes);
}
$this->executeHooks($projectID);
die(js::reload('parent.parent'));
}
$this->view->title = $this->lang->project->suspend;
$this->view->position[] = $this->lang->project->suspend;
$this->view->users = $this->loadModel('user')->getPairs('noletter');
$this->view->actions = $this->action->getList('project', $projectID);
$this->view->project = $this->project->getPGMByID($projectID);
$this->display('project', 'suspend');
}
/**
* Delete a project.
*
* @param int $projectID
* @param string $confirm yes|no
* @access public
* @return void
*/
public function PGMDelete($projectID, $confirm = 'no')
{
$childrenCount = $this->dao->select('count(*) as count')->from(TABLE_PROGRAM)->where('parent')->eq($projectID)->andWhere('deleted')->eq(0)->fetch('count');
if($childrenCount) die(js::alert($this->lang->project->hasChildren));
$project = $this->dao->select('*')->from(TABLE_PROGRAM)->where('id')->eq($projectID)->fetch();
if($confirm == 'no') die(js::confirm($this->lang->project->confirmDelete, $this->createLink('project', 'PGMDelete', "projectID=$projectID&confirm=yes")));
$this->dao->update(TABLE_PROGRAM)->set('deleted')->eq(1)->where('id')->eq($projectID)->exec();
$this->loadModel('action')->create('project', $projectID, 'deleted', '', $extra = ACTIONMODEL::CAN_UNDELETED);
die(js::reload('parent'));
}
/**
* Project project list.
*
* @param int $projectID
* @param string $browseType
* @param string $orderBy
* @param int $recTotal
* @param int $recPerPage
* @param int $pageID
* @access public
* @return void
*/
public function PGMProject($projectID = 0, $browseType = 'doing', $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
{
$projectID = $this->project->savePGMState($projectID, $this->project->getPGMPairs());
if(!$projectID) $this->locate($this->createLink('project', 'PGMbrowse'));
setCookie("lastPGM", $projectID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
$this->app->session->set('PGMProject', $this->app->getURI(true));
$this->app->session->set('projectList', $this->app->getURI(true));
$this->lang->navGroup->project = 'project';
$this->lang->project->switcherMenu = $this->project->getPGMSwitcher($projectID, true);
$this->lang->project->mainMenuAction = $this->project->getPGMMainAction();
$this->project->setPGMViewMenu($projectID);
$this->loadModel('datatable');
/* Load pager and get tasks. */
$this->app->loadClass('pager', $static = true);
$pager = new pager($recTotal, $recPerPage, $pageID);
$projectTitle = $this->loadModel('setting')->getItem('owner=' . $this->app->user->account . '&module=project&key=PRJProjectTitle');
$order = explode('_', $orderBy);
$sortField = zget($this->config->project->sortFields, $order[0], 'id') . '_' . $order[1];
$projectStats = $this->project->getPRJStats($projectID, $browseType, 0, $sortField, $pager, $projectTitle);
$this->view->title = $this->lang->project->PGMProject;
$this->view->position[] = $this->lang->project->PGMProject;
$this->view->projectStats = $projectStats;
$this->view->pager = $pager;
$this->view->projectID = $projectID;
$this->view->project = $this->project->getPRJByID($projectID);
$this->view->users = $this->loadModel('user')->getPairs('noletter|pofirst|nodeleted');
$this->view->browseType = $browseType;
$this->view->orderBy = $orderBy;
$this->display();
}
/**
* Project stakeholder list.
*
* @param int $projectID
* @param string $orderBy
* @param int $recTotal
* @param int $recPerPage
* @param int $pageID
* @access public
* @return void
*/
public function PGMStakeholder($projectID = 0, $orderBy = 't1.id_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
{
$this->lang->navGroup->project = 'project';
$this->lang->project->switcherMenu = $this->project->getPGMSwitcher($projectID, true);
$this->lang->project->mainMenuAction = $this->project->getPGMMainAction();
$this->project->setPGMViewMenu($projectID);
/* Load pager and get tasks. */
$this->app->loadClass('pager', $static = true);
$pager = new pager(0, $recPerPage, $pageID);
$this->view->title = $this->lang->project->PGMStakeholder;
$this->view->position[] = $this->lang->project->PGMStakeholder;
$this->view->stakeholders = $this->project->getStakeholders($projectID, $orderBy, $pager);
$this->view->pager = $pager;
$this->view->projectID = $projectID;
$this->view->project = $this->project->getPRJByID($projectID);
$this->view->users = $this->loadModel('user')->getPairs('noletter|pofirst|nodeleted');
$this->view->orderBy = $orderBy;
$this->display();
}
/**
* Create project stakeholder.
*
* @param int $projectID
* @access public
* @return void
*/
public function createStakeholder($projectID = 0, $dept = '', $parentIdList = '')
{
if($_POST)
{
$this->project->createStakeholder($projectID);
die(js::locate($this->createLink('project', 'PGMStakeholder', "projectID=$projectID"), 'parent'));
}
$this->loadModel('user');
$this->lang->navGroup->project = 'project';
$this->lang->project->switcherMenu = $this->project->getPGMSwitcher($projectID, true);
$this->lang->project->mainMenuAction = $this->project->getPGMMainAction();
$this->project->setPGMViewMenu($projectID);
$this->loadModel('dept');
$deptUsers = $dept === '' ? array() : $this->dept->getDeptUserPairs($dept);
$this->view->title = $this->lang->project->createStakeholder;
$this->view->position[] = $this->lang->project->createStakeholder;
$this->view->projectID = $projectID;
$this->view->project = $this->project->getPGMByID($projectID);
$this->view->users = $this->loadModel('user')->getPairs('nodeleted|noclosed');
$this->view->deptUsers = $deptUsers;
$this->view->dept = $dept;
$this->view->depts = array('' => '') + $this->dept->getOptionMenu();
$this->view->stakeholders = $this->project->getStakeholders($projectID, 't1.id_desc');
$this->view->parentStakeholders = $this->project->getStakeholdersByPGMList($parentIdList);
$this->display();
}
/**
* Unlink project stakeholder.
*
* @param int $stakeholderID
* @param int $projectID
* @param string $confirm
* @access public
* @return void
*/
public function unlinkStakeholder($stakeholderID, $projectID, $confirm = 'no')
{
if($confirm == 'no')
{
die(js::confirm($this->lang->project->confirmDelete, $this->inlink('unlinkStakeholder', "stakeholderID=$stakeholderID&projectID=$projectID&confirm=yes")));
}
else
{
$account = $this->dao->select('user')->from(TABLE_STAKEHOLDER)->where('id')->eq($stakeholderID)->fetch('user');
$this->dao->delete()->from(TABLE_STAKEHOLDER)->where('id')->eq($stakeholderID)->exec();
$this->loadModel('user')->updateUserView($projectID, 'project', array($account));
$this->updateChildUserView($projectID, $account);
die(js::reload('parent'));
}
}
/**
* Batch unlink project stakeholders.
*
* @param int $projectID
* @param string $stakeholderIDList
* @param string $confirm
* @access public
* @return void
*/
public function batchUnlinkStakeholders($projectID = 0, $stakeholderIDList = '', $confirm = 'no')
{
$stakeholderIDList = $stakeholderIDList ? $stakeholderIDList : implode(',', $this->post->stakeholderIDList);
if($confirm == 'no')
{
die(js::confirm($this->lang->project->confirmBatchUnlink, $this->inlink('batchUnlinkStakeholders', "projectID=$projectID&stakeholderIDList=$stakeholderIDList&confirm=yes")));
}
else
{
$account = $this->dao->select('user')->from(TABLE_STAKEHOLDER)->where('id')->in($stakeholderIDList)->fetchPairs('user');
$this->dao->delete()->from(TABLE_STAKEHOLDER)->where('id')->in($stakeholderIDList)->exec();
$this->loadModel('user')->updateUserView($projectID, 'project', $account);
$this->updateChildUserView($projectID, $account);
die(js::reload('parent'));
}
}
/**
* Update children user view.
*
@@ -651,24 +103,6 @@ class project extends control
$this->display();
}
/**
* Ajax get project drop menu.
*
* @param int $projectID
* @param string $module
* @param string $method
* @access public
* @return void
*/
public function ajaxGetPGMDropMenu($projectID = 0, $module, $method)
{
$this->view->projectID = $projectID;
$this->view->module = $module;
$this->view->method = $method;
$this->view->projects = $this->project->getPGMList('all');
$this->display();
}
/**
* Ajax get project drop menu.
*
@@ -795,7 +229,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJBrowse($projectID = 0, $browseType = 'doing', $param = 0, $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
public function browse($projectID = 0, $browseType = 'doing', $param = 0, $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
{
$this->lang->project->menu = $this->lang->PRJ->menu;
if($this->session->moreProjectLink) $this->lang->project->mainMenuAction = html::a($this->session->moreProjectLink, '<i class="icon icon-back"></i> ' . $this->lang->goback, '', "class='btn btn-link'");
@@ -835,7 +269,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJProjectTitle()
public function projectTitle()
{
$this->loadModel('setting');
if($_POST)
@@ -860,7 +294,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJCreate($model = 'waterfall', $projectID = 0, $from = 'PRJ', $copyProjectID = '')
public function create($model = 'waterfall', $projectID = 0, $from = 'PRJ', $copyProjectID = '')
{
if($from == 'PRJ') $this->lang->project->menu = $this->lang->PRJ->menu;
@@ -955,7 +389,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJEdit($projectID = 0, $from = 'PRJ')
public function edit($projectID = 0, $from = 'PRJ')
{
$this->app->loadLang('custom');
$this->app->loadLang('project');
@@ -1041,7 +475,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJBatchEdit($from = 'prjbrowse', $projectID = 0)
public function batchEdit($from = 'prjbrowse', $projectID = 0)
{
$this->loadModel('action');
@@ -1087,7 +521,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJView($projectID = 0)
public function view($projectID = 0)
{
$this->app->loadLang('bug');
$this->lang->navGroup->project = 'project';
@@ -1133,7 +567,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJGroup($projectID = 0, $projectID = 0)
public function group($projectID = 0, $projectID = 0)
{
$this->lang->navGroup->project = 'project';
$this->lang->project->menu = $this->lang->scrum->setMenu;
@@ -1165,7 +599,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJCreateGroup($projectID = 0, $projectID = 0)
public function createGroup($projectID = 0, $projectID = 0)
{
if(!empty($_POST))
{
@@ -1190,7 +624,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJManageView($groupID, $projectID, $projectID)
public function manageView($groupID, $projectID, $projectID)
{
$this->lang->navGroup->project = 'project';
$this->lang->project->menu = $this->lang->scrum->setMenu;
@@ -1228,7 +662,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJManagePriv($type = 'byGroup', $param = 0, $menu = '', $version = '')
public function managePriv($type = 'byGroup', $param = 0, $menu = '', $version = '')
{
$this->lang->navGroup->project = 'project';
$this->lang->project->menu = $this->lang->scrum->setMenu;
@@ -1298,7 +732,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJManageMembers($projectID, $dept = '')
public function manageMembers($projectID, $dept = '')
{
$this->lang->navGroup->project = 'project';
$this->lang->project->menu = $this->lang->scrum->setMenu;
@@ -1342,7 +776,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJManageGroupMember($groupID, $deptID = 0)
public function manageGroupMember($groupID, $deptID = 0)
{
if(!empty($_POST))
{
@@ -1377,7 +811,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJCopyGroup($groupID)
public function copyGroup($groupID)
{
if(!empty($_POST))
{
@@ -1402,7 +836,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJEditGroup($groupID)
public function editGroup($groupID)
{
if(!empty($_POST))
{
@@ -1424,7 +858,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJStart($projectID)
public function start($projectID)
{
$this->loadModel('action');
$project = $this->project->getPRJByID($projectID);
@@ -1482,7 +916,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJSuspend($projectID)
public function suspend($projectID)
{
$this->loadModel('action');
@@ -1516,7 +950,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJClose($projectID)
public function close($projectID)
{
$this->loadModel('action');
@@ -1550,7 +984,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJActivate($projectID)
public function activate($projectID)
{
$this->loadModel('action');
$project = $this->project->getPRJByID($projectID);
@@ -1592,7 +1026,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJDelete($projectID, $confirm = 'no')
public function delete($projectID, $confirm = 'no')
{
if($confirm == 'no')
{
@@ -1619,7 +1053,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJUpdateOrder()
public function updateOrder()
{
$idList = explode(',', trim($this->post->projects, ','));
$orderBy = $this->post->orderBy;
@@ -1654,7 +1088,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJWhitelist($projectID = 0, $projectID = 0, $module = 'project', $from = 'PRJ', $objectType = 'project', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
public function whitelist($projectID = 0, $projectID = 0, $module = 'project', $from = 'PRJ', $objectType = 'project', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 20, $pageID = 1)
{
if($from == 'PRJ')
{
@@ -1684,7 +1118,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJAddWhitelist($projectID = 0, $deptID = 0, $projectID = 0, $from = 'PRJ')
public function addWhitelist($projectID = 0, $deptID = 0, $projectID = 0, $from = 'PRJ')
{
/* Navigation stay in project when enter from project list. */
$this->adjustNavigation($from, $projectID);
@@ -1714,7 +1148,7 @@ class project extends control
* @access public
* @return void
*/
public function PRJManageProducts($projectID, $projectID = 0, $from = 'PRJ')
public function manageProducts($projectID, $projectID = 0, $from = 'PRJ')
{
/* Navigation stay in project when enter from project list. */
$this->adjustNavigation($from, $projectID);
+3 -3
View File
@@ -293,13 +293,13 @@ function setBudgetTipsAndAclList(parentProgramID)
{
if(parentProgramID != 0)
{
$.get(createLink('program', 'ajaxGetAvailableBudget', "parentProgramID=" + parentProgramID), function(availableBudget)
$.get(createLink('project', 'ajaxGetAvailableBudget', "parentProgramID=" + parentProgramID), function(availableBudget)
{
parentProgram = PGMList[parentProgramID];
programBudget = parentProgram.budget;
projectBudget = parentProgram.budget;
PGMBudgetUnit = currencySymbol[parentProgram.budgetUnit];
budgetNotes = programBudget != 0 ? (PGMParentBudget + PGMBudgetUnit + availableBudget) : '';
budgetNotes = projectBudget != 0 ? (PGMParentBudget + PGMBudgetUnit + availableBudget) : '';
$('#budget').attr('placeholder', budgetNotes);
});
$('.aclBox').html($('#subPGMAcl').html());
+1 -1
View File
@@ -29,5 +29,5 @@ $(function()
function setCopyProject(copiedProgramID)
{
location.href = createLink('program', 'create', 'template=' + template + '&programID=' + parentProgramID + '&copyProgramID=' + copiedProgramID);
location.href = createLink('project', 'create', 'template=' + template + '&projectID=' + parentProgramID + '&copyProgramID=' + copiedProgramID);
}
+1 -1
View File
@@ -7,7 +7,7 @@
function setDeptUsers(obj)
{
dept = $(obj).val();//Get dept ID.
link = createLink('program', 'createstakeholder', 'programID=' + programID + '&dept=' + dept);
link = createLink('project', 'createstakeholder', 'projectID=' + projectID + '&dept=' + dept);
location.href=link;
}
+3 -3
View File
@@ -3,13 +3,13 @@ $(function()
$("select[name^='parents']").change(function()
{
var $this = $(this);
var programID = $this.val();
var projectID = $this.val();
var projectID = $this.attr("data-id");
var oldParent = $this.attr("data-parent");
var title = changeProgram.replace('%s', $this.attr("data-name"));
/* Determine whether the project can change the program set. */
link = createLink('program', 'ajaxCheckProduct', 'programID=' + programID + '&projectID=' + projectID);
/* Determine whether the project can change the project set. */
link = createLink('project', 'ajaxCheckProduct', 'projectID=' + projectID + '&projectID=' + projectID);
$.getJSON(link, function(data)
{
var changed = true;
+1 -1
View File
@@ -8,5 +8,5 @@ $(function()
});
});
$('#project' + programID).addClass('active');
$('#project' + projectID).addClass('active');
$(".tree .active").parent('li').addClass('active');
+7 -7
View File
@@ -25,7 +25,7 @@ $(function()
});
/**
* Set parent program.
* Set parent project.
*
* @access public
* @return void
@@ -33,7 +33,7 @@ $(function()
function setParentProgram()
{
var parentProgram = $("#parent").val();
location.href = createLink('program', 'PRJCreate', 'model=' + model + '&programID=' + parentProgram + '&from=' + from);
location.href = createLink('project', 'PRJCreate', 'model=' + model + '&projectID=' + parentProgram + '&from=' + from);
}
/**
@@ -45,7 +45,7 @@ function setParentProgram()
*/
function setCopyProject(copyProjectID)
{
location.href = createLink('program', 'PRJCreate', 'model=' + model + '&programID=' + programID + '&from=' + from + '&copyProjectID=' + copyProjectID);
location.href = createLink('project', 'PRJCreate', 'model=' + model + '&projectID=' + projectID + '&from=' + from + '&copyProjectID=' + copyProjectID);
}
/**
@@ -78,13 +78,13 @@ function addNewProduct(obj)
/**
* Set access control box.
*
* @param int $programID
* @param int $projectID
* @access public
* @return void
*/
function setAclList(programID)
function setAclList(projectID)
{
if(programID != 0)
if(projectID != 0)
{
$('.aclBox').html($('#PGMAcl').html());
}
@@ -225,7 +225,7 @@ $('#projectName').on('keyup', function()
{
var name = $(this).val();
name = name.replace(/\s+/g, '');
link = createLink('program', 'ajaxGetCopyProjects');
link = createLink('project', 'ajaxGetCopyProjects');
$.post(link, {name: name, cpoyProjectID : copyProjectID}, function(data)
{
$('#copyProjects').html(data);
+6 -6
View File
@@ -2,10 +2,10 @@ $(function()
{
$('#parent').change(function()
{
var programID = $(this).val();
var projectID = $(this).val();
/* Determine whether the project can change the program set. */
link = createLink('program', 'ajaxCheckProduct', 'programID=' + programID + '&projectID=' + projectID);
/* Determine whether the project can change the project set. */
link = createLink('project', 'ajaxCheckProduct', 'projectID=' + projectID + '&projectID=' + projectID);
$.getJSON(link, function(data)
{
var changed = true;
@@ -69,13 +69,13 @@ $(function()
/**
* Set aclList.
*
* @param int $programID
* @param int $projectID
* @access public
* @return void
*/
function setAclList(programID)
function setAclList(projectID)
{
if(programID != 0)
if(projectID != 0)
{
$('.aclBox').html($('#PGMAcl').html());
}
+1 -1
View File
@@ -31,6 +31,6 @@ function deleteItem(obj)
function setDeptUsers(obj)
{
dept = $(obj).val(); // Get dept ID.
link = createLink('program', 'PRJManageMembers', 'projectID=' + projectID + '&dept=' + dept); // Create manageMembers link.
link = createLink('project', 'PRJManageMembers', 'projectID=' + projectID + '&dept=' + dept); // Create manageMembers link.
location.href=link;
}
+261 -261
View File
@@ -1,294 +1,294 @@
<?php
/* Actions. */
$lang->program->createGuide = 'Select Template';
$lang->program->PRJIndex = 'Dashboard';
$lang->program->PRJHome = 'Home';
$lang->program->PRJCreate = 'Create Project';
$lang->program->PRJEdit = 'Edit';
$lang->program->PRJBatchEdit = 'Batch Edit Projects';
$lang->program->PRJView = 'Project View';
$lang->program->batchEdit = 'Batch Edit';
$lang->program->PRJBrowse = 'Projects';
$lang->program->PRJAll = 'All';
$lang->program->PRJStart = 'Start';
$lang->program->PRJFinish = 'Finish';
$lang->program->PRJSuspend = 'Suspend';
$lang->program->PRJDelete = 'Delete';
$lang->program->PRJClose = 'Close';
$lang->program->PRJActivate = 'Activate';
$lang->program->PRJGroup = 'Privilege Group';
$lang->program->PRJCreateGroup = 'Create Group';
$lang->program->PRJEditGroup = 'Edit Group';
$lang->program->PRJCopyGroup = 'Copy Group';
$lang->program->PRJManageView = 'Manage View';
$lang->program->PRJManagePriv = 'Manage Privilege';
$lang->program->PRJManageMembers = 'Manage Team';
$lang->program->export = 'Export';
$lang->program->addProduct = 'Add product';
$lang->program->PRJManageGroupMember = 'Manage Group';
$lang->program->PRJModuleSetting = 'List Settings';
$lang->program->PRJModuleOpen = 'Program Name';
$lang->program->PRJUpdateOrder = 'Order';
$lang->program->PRJSort = 'Order';
$lang->program->PRJWhitelist = 'Project Whitelist';
$lang->program->PRJAddWhitelist = 'Project Add Whitelist';
$lang->program->unbindWhielist = 'Project Remove Whitelist';
$lang->program->PRJManageProducts = 'Manage Products';
$lang->program->view = 'Program Detail';
$lang->program->copyTitle = 'Please select an project to copy';
$lang->program->errorSameProducts = 'Project cannot be associated with multiple identical products.';
$lang->program->errorNoProducts = 'At least one product is associated';
$lang->program->copyNoProject = 'There are no items available to copy.';
$lang->project->createGuide = 'Select Template';
$lang->project->PRJIndex = 'Dashboard';
$lang->project->PRJHome = 'Home';
$lang->project->PRJCreate = 'Create Project';
$lang->project->PRJEdit = 'Edit';
$lang->project->PRJBatchEdit = 'Batch Edit Projects';
$lang->project->PRJView = 'Project View';
$lang->project->batchEdit = 'Batch Edit';
$lang->project->PRJBrowse = 'Projects';
$lang->project->PRJAll = 'All';
$lang->project->PRJStart = 'Start';
$lang->project->PRJFinish = 'Finish';
$lang->project->PRJSuspend = 'Suspend';
$lang->project->PRJDelete = 'Delete';
$lang->project->PRJClose = 'Close';
$lang->project->PRJActivate = 'Activate';
$lang->project->PRJGroup = 'Privilege Group';
$lang->project->PRJCreateGroup = 'Create Group';
$lang->project->PRJEditGroup = 'Edit Group';
$lang->project->PRJCopyGroup = 'Copy Group';
$lang->project->PRJManageView = 'Manage View';
$lang->project->PRJManagePriv = 'Manage Privilege';
$lang->project->PRJManageMembers = 'Manage Team';
$lang->project->export = 'Export';
$lang->project->addProduct = 'Add product';
$lang->project->PRJManageGroupMember = 'Manage Group';
$lang->project->PRJModuleSetting = 'List Settings';
$lang->project->PRJModuleOpen = 'Program Name';
$lang->project->PRJUpdateOrder = 'Order';
$lang->project->PRJSort = 'Order';
$lang->project->PRJWhitelist = 'Project Whitelist';
$lang->project->PRJAddWhitelist = 'Project Add Whitelist';
$lang->project->unbindWhielist = 'Project Remove Whitelist';
$lang->project->PRJManageProducts = 'Manage Products';
$lang->project->view = 'Program Detail';
$lang->project->copyTitle = 'Please select an project to copy';
$lang->project->errorSameProducts = 'Project cannot be associated with multiple identical products.';
$lang->project->errorNoProducts = 'At least one product is associated';
$lang->project->copyNoProject = 'There are no items available to copy.';
$lang->project->searchByName = 'Enter the project name to retrieve';
/* Fields. */
$lang->program->common = 'Program';
$lang->program->project = 'Project';
$lang->program->stage = 'Stage';
$lang->program->PM = 'Manager';
$lang->program->PRJName = 'Name';
$lang->program->PRJCategory = 'Category';
$lang->program->PRJDesc = 'Description';
$lang->program->PRJCode = 'Code';
$lang->program->PRJCopy = 'Copy';
$lang->program->begin = 'Begin';
$lang->program->end = 'End';
$lang->program->PRJStatus = 'Status';
$lang->program->PRJPM = 'Manager';
$lang->program->PRJBudget = 'Budget';
$lang->program->PRJTemplate = 'Template';
$lang->program->PRJEstimate = 'Estimates';
$lang->program->PRJConsume = 'Cost';
$lang->program->PRJSurplus = 'Left';
$lang->program->PRJProgress = 'Progress';
$lang->program->dateRange = 'Duration';
$lang->program->to = ' to ';
$lang->program->realEnd = 'Actual End';
$lang->program->realBegan = 'Actual Began';
$lang->program->bygrid = 'Kanban';
$lang->program->bylist = 'List';
$lang->program->mine = 'My';
$lang->program->setPlanduration = 'Set Duration';
$lang->program->auth = 'Access Control';
$lang->program->durationEstimation = 'Estimated Workload';
$lang->program->teamCount = 'Man';
$lang->program->leftStories = 'Left Stories';
$lang->program->leftTasks = 'Left Tasks';
$lang->program->leftBugs = 'Left Bugs';
$lang->program->PRJChildren = 'Child Project';
$lang->program->PRJParent = 'Parent Project';
$lang->program->allStories = 'All Stories';
$lang->program->doneStories = 'Finished Stories';
$lang->program->allInput = 'Total Input';
$lang->program->weekly = 'Program Weekly';
$lang->program->pv = 'PV';
$lang->program->ev = 'EV';
$lang->program->sv = 'SV%';
$lang->program->ac = 'AC';
$lang->program->cv = 'CV%';
$lang->program->PRJTeamCount = 'Team';
$lang->program->PRJLongTime = 'Long-Term Project';
$lang->program->future = 'TBD';
$lang->program->morePRJ = 'More Project';
$lang->project->common = 'Program';
$lang->project->project = 'Project';
$lang->project->stage = 'Stage';
$lang->project->PM = 'Manager';
$lang->project->PRJName = 'Name';
$lang->project->PRJCategory = 'Category';
$lang->project->PRJDesc = 'Description';
$lang->project->PRJCode = 'Code';
$lang->project->PRJCopy = 'Copy';
$lang->project->begin = 'Begin';
$lang->project->end = 'End';
$lang->project->PRJStatus = 'Status';
$lang->project->PRJPM = 'Manager';
$lang->project->PRJBudget = 'Budget';
$lang->project->PRJTemplate = 'Template';
$lang->project->PRJEstimate = 'Estimates';
$lang->project->PRJConsume = 'Cost';
$lang->project->PRJSurplus = 'Left';
$lang->project->PRJProgress = 'Progress';
$lang->project->dateRange = 'Duration';
$lang->project->to = ' to ';
$lang->project->realEnd = 'Actual End';
$lang->project->realBegan = 'Actual Began';
$lang->project->bygrid = 'Kanban';
$lang->project->bylist = 'List';
$lang->project->mine = 'My';
$lang->project->setPlanduration = 'Set Duration';
$lang->project->auth = 'Access Control';
$lang->project->durationEstimation = 'Estimated Workload';
$lang->project->teamCount = 'Man';
$lang->project->leftStories = 'Left Stories';
$lang->project->leftTasks = 'Left Tasks';
$lang->project->leftBugs = 'Left Bugs';
$lang->project->PRJChildren = 'Child Project';
$lang->project->PRJParent = 'Parent Project';
$lang->project->allStories = 'All Stories';
$lang->project->doneStories = 'Finished Stories';
$lang->project->allInput = 'Total Input';
$lang->project->weekly = 'Program Weekly';
$lang->project->pv = 'PV';
$lang->project->ev = 'EV';
$lang->project->sv = 'SV%';
$lang->project->ac = 'AC';
$lang->project->cv = 'CV%';
$lang->project->PRJTeamCount = 'Team';
$lang->project->PRJLongTime = 'Long-Term Project';
$lang->project->future = 'TBD';
$lang->project->morePRJ = 'More Project';
$lang->program->productNotEmpty = 'Please link products or create products.';
$lang->program->existProductName = 'Product name already exists.';
$lang->program->changeProgram = '%s > Change program';
$lang->program->changeProgramTip = 'After modifying the program set, the products linked with the project will also modify the program set to which it belongs. Please confirm whether to modify it.';
$lang->program->linkedProjectsTip = 'Linked projects are as follows';
$lang->program->multiLinkedProductsTip = 'The following products linked to this project are also linked to other projects, please unlink before proceeding.';
$lang->project->productNotEmpty = 'Please link products or create products.';
$lang->project->existProductName = 'Product name already exists.';
$lang->project->changeProgram = '%s > Change project';
$lang->project->changeProgramTip = 'After modifying the project set, the products linked with the project will also modify the project set to which it belongs. Please confirm whether to modify it.';
$lang->project->linkedProjectsTip = 'Linked projects are as follows';
$lang->project->multiLinkedProductsTip = 'The following products linked to this project are also linked to other projects, please unlink before proceeding.';
$lang->program->tenThousand = '';
$lang->project->tenThousand = '';
$lang->program->unitList['CNY'] = 'RMB';
$lang->program->unitList['USD'] = 'USD';
$lang->program->unitList['HKD'] = 'HKD';
$lang->program->unitList['NTD'] = 'New Taiwan';
$lang->program->unitList['EUR'] = 'Euro';
$lang->program->unitList['DEM'] = 'Deutsche Mark';
$lang->program->unitList['CHF'] = 'Swiss Franc';
$lang->program->unitList['FRF'] = 'French Franc';
$lang->program->unitList['GBP'] = 'Pound';
$lang->program->unitList['NLG'] = 'Florin';
$lang->program->unitList['CAD'] = 'Canadian';
$lang->program->unitList['RUR'] = 'Russian Ruble';
$lang->program->unitList['INR'] = 'Indian';
$lang->program->unitList['AUD'] = 'Australian';
$lang->program->unitList['NZD'] = 'New Zealand';
$lang->program->unitList['THB'] = 'Thai Baht';
$lang->program->unitList['SGD'] = 'Singapore';
$lang->project->unitList['CNY'] = 'RMB';
$lang->project->unitList['USD'] = 'USD';
$lang->project->unitList['HKD'] = 'HKD';
$lang->project->unitList['NTD'] = 'New Taiwan';
$lang->project->unitList['EUR'] = 'Euro';
$lang->project->unitList['DEM'] = 'Deutsche Mark';
$lang->project->unitList['CHF'] = 'Swiss Franc';
$lang->project->unitList['FRF'] = 'French Franc';
$lang->project->unitList['GBP'] = 'Pound';
$lang->project->unitList['NLG'] = 'Florin';
$lang->project->unitList['CAD'] = 'Canadian';
$lang->project->unitList['RUR'] = 'Russian Ruble';
$lang->project->unitList['INR'] = 'Indian';
$lang->project->unitList['AUD'] = 'Australian';
$lang->project->unitList['NZD'] = 'New Zealand';
$lang->project->unitList['THB'] = 'Thai Baht';
$lang->project->unitList['SGD'] = 'Singapore';
$lang->program->currencySymbol['CNY'] = '¥';
$lang->program->currencySymbol['USD'] = '$';
$lang->program->currencySymbol['HKD'] = 'HK$';
$lang->program->currencySymbol['NTD'] = 'NT$';
$lang->program->currencySymbol['EUR'] = '€';
$lang->program->currencySymbol['DEM'] = 'DEM';
$lang->program->currencySymbol['CHF'] = '₣';
$lang->program->currencySymbol['FRF'] = '₣';
$lang->program->currencySymbol['GBP'] = '£';
$lang->program->currencySymbol['NLG'] = 'ƒ';
$lang->program->currencySymbol['CAD'] = '$';
$lang->program->currencySymbol['RUR'] = '₽';
$lang->program->currencySymbol['INR'] = '₹';
$lang->program->currencySymbol['AUD'] = 'A$';
$lang->program->currencySymbol['NZD'] = 'NZ$';
$lang->program->currencySymbol['THB'] = '฿';
$lang->program->currencySymbol['SGD'] = 'S$';
$lang->project->currencySymbol['CNY'] = '¥';
$lang->project->currencySymbol['USD'] = '$';
$lang->project->currencySymbol['HKD'] = 'HK$';
$lang->project->currencySymbol['NTD'] = 'NT$';
$lang->project->currencySymbol['EUR'] = '€';
$lang->project->currencySymbol['DEM'] = 'DEM';
$lang->project->currencySymbol['CHF'] = '₣';
$lang->project->currencySymbol['FRF'] = '₣';
$lang->project->currencySymbol['GBP'] = '£';
$lang->project->currencySymbol['NLG'] = 'ƒ';
$lang->project->currencySymbol['CAD'] = '$';
$lang->project->currencySymbol['RUR'] = '₽';
$lang->project->currencySymbol['INR'] = '₹';
$lang->project->currencySymbol['AUD'] = 'A$';
$lang->project->currencySymbol['NZD'] = 'NZ$';
$lang->project->currencySymbol['THB'] = '฿';
$lang->project->currencySymbol['SGD'] = 'S$';
$lang->program->modelList['scrum'] = "Scrum";
$lang->program->modelList['waterfall'] = "CMMI";
$lang->project->modelList['scrum'] = "Scrum";
$lang->project->modelList['waterfall'] = "CMMI";
$lang->program->PRJCategoryList['single'] = "Single product";
$lang->program->PRJCategoryList['multiple'] = "Multiple products";
$lang->project->PRJCategoryList['single'] = "Single product";
$lang->project->PRJCategoryList['multiple'] = "Multiple products";
$lang->program->PRJLifeTimeList['short'] = "Short-Term";
$lang->program->PRJLifeTimeList['long'] = "Long-Term";
$lang->program->PRJLifeTimeList['ops'] = "DevOps";
$lang->project->PRJLifeTimeList['short'] = "Short-Term";
$lang->project->PRJLifeTimeList['long'] = "Long-Term";
$lang->project->PRJLifeTimeList['ops'] = "DevOps";
$lang->program->featureBar['all'] = 'All';
$lang->program->featureBar['doing'] = 'Going';
$lang->program->featureBar['wait'] = 'Waiting';
$lang->program->featureBar['suspended'] = 'Suspended';
$lang->program->featureBar['closed'] = 'Closed';
$lang->project->featureBar['all'] = 'All';
$lang->project->featureBar['doing'] = 'Going';
$lang->project->featureBar['wait'] = 'Waiting';
$lang->project->featureBar['suspended'] = 'Suspended';
$lang->project->featureBar['closed'] = 'Closed';
$lang->program->PRJAclList['private'] = 'Private (For team members and stakeholders only)';
$lang->program->PRJAclList['open'] = "Open (accessible with project view permissions)";
$lang->project->PRJAclList['private'] = 'Private (For team members and stakeholders only)';
$lang->project->PRJAclList['open'] = "Open (accessible with project view permissions)";
$lang->program->PRJAcls['private'] = 'Private';
$lang->program->PRJAcls['open'] = "Open";
$lang->project->PRJAcls['private'] = 'Private';
$lang->project->PRJAcls['open'] = "Open";
$lang->program->PGMPRJAclList['private'] = "Private (For team members and stakeholders only)";
$lang->program->PGMPRJAclList['program'] = "Public within the project set (accessible to all higher-level project set leaders and stakeholders, members of this project team and stakeholders)";
$lang->program->PGMPRJAclList['open'] = "Full disclosure (accessible with project view permissions)";
$lang->project->PGMPRJAclList['private'] = "Private (For team members and stakeholders only)";
$lang->project->PGMPRJAclList['project'] = "Public within the project set (accessible to all higher-level project set leaders and stakeholders, members of this project team and stakeholders)";
$lang->project->PGMPRJAclList['open'] = "Full disclosure (accessible with project view permissions)";
$lang->program->PGMPRJAcls['private'] = "Private";
$lang->program->PGMPRJAcls['program'] = "Public within the project set";
$lang->program->PGMPRJAcls['open'] = "Full disclosure";
$lang->project->PGMPRJAcls['private'] = "Private";
$lang->project->PGMPRJAcls['project'] = "Public within the project set";
$lang->project->PGMPRJAcls['open'] = "Full disclosure";
$lang->program->PRJAuthList['extend'] = 'Inherit (system privilege and project privilege)';
$lang->program->PRJAuthList['reset'] = 'Reset (project privilege only)';
$lang->project->PRJAuthList['extend'] = 'Inherit (system privilege and project privilege)';
$lang->project->PRJAuthList['reset'] = 'Reset (project privilege only)';
$lang->program->statusList['wait'] = 'Waiting';
$lang->program->statusList['doing'] = 'Doing';
$lang->program->statusList['suspended'] = 'Suspended';
$lang->program->statusList['closed'] = 'Closed';
$lang->project->statusList['wait'] = 'Waiting';
$lang->project->statusList['doing'] = 'Doing';
$lang->project->statusList['suspended'] = 'Suspended';
$lang->project->statusList['closed'] = 'Closed';
$lang->program->endList[31] = 'One month';
$lang->program->endList[93] = 'Trimester';
$lang->program->endList[186] = 'Half yearly';
$lang->program->endList[365] = 'One year';
$lang->program->endList[999] = 'Longtime';
$lang->project->endList[31] = 'One month';
$lang->project->endList[93] = 'Trimester';
$lang->project->endList[186] = 'Half yearly';
$lang->project->endList[365] = 'One year';
$lang->project->endList[999] = 'Longtime';
$lang->program->noPRJ = 'No project.';
$lang->program->accessDenied = 'Access denied!';
$lang->program->chooseProgramType = 'Select the project management model';
$lang->program->nextStep = 'Next step';
$lang->program->hoursUnit = '%s hours';
$lang->program->membersUnit = '%s men';
$lang->program->lastIteration = 'Recent iterations';
$lang->program->ongoingStage = 'Ongoing stage';
$lang->program->scrum = 'Scrum';
$lang->program->waterfall = 'CMMI';
$lang->program->waterfallTitle = 'CMMI';
$lang->program->cannotCreateChild = 'It is not empty, so you cannot add a child. You can add a parent for it, and then create a child.';
$lang->program->hasChildren = 'It has child programs or projects. You cannot delete it.';
$lang->program->confirmDelete = "Do you want to delete [%s]?";
$lang->program->emptyPM = 'No manager';
$lang->program->cannotChangeToCat = "It is not empty, so you cannot change it to a parent.";
$lang->program->cannotCancelCat = "It has child projects, so you cannot unmark the parent.";
$lang->program->parentBeginEnd = "Parent begin&end date: %s ~ %s";
$lang->program->childLongTime = "If a child as long-term projects, the parent should be long-term too.";
$lang->program->readjustTime = 'Change the project begin&end date.';
$lang->program->notAllowRemoveProducts = 'The story of this product is linked with the project. Unlink it before doing any action.';
$lang->project->noPRJ = 'No project.';
$lang->project->accessDenied = 'Access denied!';
$lang->project->chooseProgramType = 'Select the project management model';
$lang->project->nextStep = 'Next step';
$lang->project->hoursUnit = '%s hours';
$lang->project->membersUnit = '%s men';
$lang->project->lastIteration = 'Recent iterations';
$lang->project->ongoingStage = 'Ongoing stage';
$lang->project->scrum = 'Scrum';
$lang->project->waterfall = 'CMMI';
$lang->project->waterfallTitle = 'CMMI';
$lang->project->cannotCreateChild = 'It is not empty, so you cannot add a child. You can add a parent for it, and then create a child.';
$lang->project->hasChildren = 'It has child projects or projects. You cannot delete it.';
$lang->project->confirmDelete = "Do you want to delete [%s]?";
$lang->project->emptyPM = 'No manager';
$lang->project->cannotChangeToCat = "It is not empty, so you cannot change it to a parent.";
$lang->project->cannotCancelCat = "It has child projects, so you cannot unmark the parent.";
$lang->project->parentBeginEnd = "Parent begin&end date: %s ~ %s";
$lang->project->childLongTime = "If a child as long-term projects, the parent should be long-term too.";
$lang->project->readjustTime = 'Change the project begin&end date.';
$lang->project->notAllowRemoveProducts = 'The story of this product is linked with the project. Unlink it before doing any action.';
$lang->program->PRJProgramTitle['0'] = 'Hide';
$lang->program->PRJProgramTitle['base'] = 'Base-level program only';
$lang->program->PRJProgramTitle['end'] = 'End-level program only';
$lang->project->PRJProgramTitle['0'] = 'Hide';
$lang->project->PRJProgramTitle['base'] = 'Base-level project only';
$lang->project->PRJProgramTitle['end'] = 'End-level project only';
$lang->program->PRJAccessDenied = 'Access denied to this program';
$lang->program->PRJChooseProgramType = 'Select management type';
$lang->program->scrumTitle = 'Agile Development Management';
$lang->program->PRJCannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
$lang->program->PRJHasChildren = 'This project has a child project, so it cannot be deleted.';
$lang->program->PRJConfirmDelete = 'Do you want to delete this project?';
$lang->program->PRJCannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
$lang->program->PRJCannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
$lang->program->PRJParentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
$lang->program->PRJParentBudget = "The budget of the parent project: %s";
$lang->program->PRJBeginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
$lang->program->PRJEndGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
$lang->program->PRJBeginGreateChild = "The minimum start date of the project set: %s. The start date of the project cannot be less than the minimum start date of the program set.";
$lang->program->PRJEndLetterChild = "The maximum finish date for the project set: %s. The completion date of a project cannot be greater than the maximum completion date of the program set.";
$lang->program->PRJChildLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
$lang->project->PRJAccessDenied = 'Access denied to this project';
$lang->project->PRJChooseProgramType = 'Select management type';
$lang->project->scrumTitle = 'Agile Development Management';
$lang->project->PRJCannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
$lang->project->PRJHasChildren = 'This project has a child project, so it cannot be deleted.';
$lang->project->PRJConfirmDelete = 'Do you want to delete this project?';
$lang->project->PRJCannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
$lang->project->PRJCannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
$lang->project->PRJParentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
$lang->project->PRJParentBudget = "The budget of the parent project: %s";
$lang->project->PRJBeginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
$lang->project->PRJEndGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
$lang->project->PRJBeginGreateChild = "The minimum start date of the project set: %s. The start date of the project cannot be less than the minimum start date of the project set.";
$lang->project->PRJEndLetterChild = "The maximum finish date for the project set: %s. The completion date of a project cannot be greater than the maximum completion date of the project set.";
$lang->project->PRJChildLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
/* Actions. */
$lang->program->PGMCommon = 'Program';
$lang->program->PGMIndex = 'Home';
$lang->program->PGMCreate = 'Create Program';
$lang->program->PGMCreateGuide = 'Select Template';
$lang->program->PGMEdit = 'Edit Program';
$lang->program->PGMBrowse = 'Programs';
$lang->program->PGMProduct = 'Products';
$lang->program->PGMProject = 'Program Project List';
$lang->program->PGMAll = 'All Programs';
$lang->program->PGMStart = 'Start';
$lang->program->PGMFinish = 'Finish';
$lang->program->PGMSuspend = 'Suspend';
$lang->program->PGMDelete = 'Delete';
$lang->program->PGMClose = 'Close';
$lang->program->PGMActivate = 'Activate';
$lang->program->PGMExport = 'Export';
$lang->program->PGMStakeholder = 'Stakeholder';
$lang->program->createStakeholder = 'Create Stakeholder';
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
$lang->program->unlink = 'Unlink';
$lang->program->morePGM = 'More Programs';
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
$lang->program->PGMManageMembers = 'Program Team';
$lang->program->PGMParentBudget = 'Parent program surplus budget:';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
$lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
$lang->program->PGMBeginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
$lang->program->PGMEndLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
$lang->program->PGMCloseErrorMessage = 'There are subprograms or projects that are not closed';
$lang->project->PGMCommon = 'Program';
$lang->project->PGMIndex = 'Home';
$lang->project->PGMCreate = 'Create Program';
$lang->project->PGMCreateGuide = 'Select Template';
$lang->project->PGMEdit = 'Edit Program';
$lang->project->PGMBrowse = 'Programs';
$lang->project->PGMProduct = 'Products';
$lang->project->PGMProject = 'Program Project List';
$lang->project->PGMAll = 'All Programs';
$lang->project->PGMStart = 'Start';
$lang->project->PGMFinish = 'Finish';
$lang->project->PGMSuspend = 'Suspend';
$lang->project->PGMDelete = 'Delete';
$lang->project->PGMClose = 'Close';
$lang->project->PGMActivate = 'Activate';
$lang->project->PGMExport = 'Export';
$lang->project->PGMStakeholder = 'Stakeholder';
$lang->project->createStakeholder = 'Create Stakeholder';
$lang->project->unlinkStakeholder = 'Unlink Stakeholder';
$lang->project->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
$lang->project->unlink = 'Unlink';
$lang->project->morePGM = 'More Programs';
$lang->project->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->project->stakeholderType = 'Stakeholder type';
$lang->project->isStakeholderKey = 'Key stakeholder';
$lang->project->importStakeholder = 'Import project';
$lang->project->PGMManageMembers = 'Program Team';
$lang->project->PGMParentBudget = 'Parent project surplus budget:';
$lang->project->beyondParentBudget = 'The remaining budget of the owned project has been exceeded.';
$lang->project->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
$lang->project->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
$lang->project->PGMBeginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
$lang->project->PGMEndLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
$lang->project->PGMCloseErrorMessage = 'There are subprojects or projects that are not closed';
$lang->program->stakeholderTypeList['inside'] = 'Inside';
$lang->program->stakeholderTypeList['outside'] = 'Outside';
$lang->project->stakeholderTypeList['inside'] = 'Inside';
$lang->project->stakeholderTypeList['outside'] = 'Outside';
/* Fields. */
$lang->program->PGMName = 'Name';
$lang->program->PGMTemplate = 'Template';
$lang->program->PGMCategory = 'Type';
$lang->program->PGMDesc = 'Description';
$lang->program->PGMCopy = 'Copy Program';
$lang->program->PGMStatus = 'Status';
$lang->program->PGMPM = 'Manager';
$lang->program->PGMBudget = 'Budget';
$lang->program->PGMProgress = 'Progress';
$lang->program->PGMChildren = 'Child';
$lang->program->PGMParent = 'Parent';
$lang->program->PGMAllInput = 'Input';
$lang->program->PGMTeamCount = 'Team';
$lang->program->PGMLongTime = 'Long-Term';
$lang->project->PGMName = 'Name';
$lang->project->PGMTemplate = 'Template';
$lang->project->PGMCategory = 'Type';
$lang->project->PGMDesc = 'Description';
$lang->project->PGMCopy = 'Copy Program';
$lang->project->PGMStatus = 'Status';
$lang->project->PGMPM = 'Manager';
$lang->project->PGMBudget = 'Budget';
$lang->project->PGMProgress = 'Progress';
$lang->project->PGMChildren = 'Child';
$lang->project->PGMParent = 'Parent';
$lang->project->PGMAllInput = 'Input';
$lang->project->PGMTeamCount = 'Team';
$lang->project->PGMLongTime = 'Long-Term';
$lang->program->noPGM = 'No program.';
$lang->program->PGMShowClosed = 'Closed programs.';
$lang->program->PGMTips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
$lang->project->noPGM = 'No project.';
$lang->project->PGMShowClosed = 'Closed projects.';
$lang->project->PGMTips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
$lang->program->PGMAclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
$lang->program->PGMAclList['open'] = "Default(user who can visit the program can access it)";
$lang->project->PGMAclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
$lang->project->PGMAclList['open'] = "Default(user who can visit the project can access it)";
$lang->program->subPGMAclList['private'] = "Private (accessible to this program set leader and stakeholders, stakeholders can follow up maintenance)";
$lang->program->subPGMAclList['open'] = "Default(user who can visit the program can access it)";
$lang->program->subPGMAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
$lang->project->subPGMAclList['private'] = "Private (accessible to this project set leader and stakeholders, stakeholders can follow up maintenance)";
$lang->project->subPGMAclList['open'] = "Default(user who can visit the project can access it)";
$lang->project->subPGMAclList['project'] = "Open within the project (accessible to all higher-level project directors and affiliates, as well as to this project director and affiliates)";
$lang->program->PGMAuthList['extend'] = 'Inherit(program privileges and company privileges)';
$lang->program->PGMAuthList['reset'] = 'Reset(program privileges only)';
$lang->project->PGMAuthList['extend'] = 'Inherit(project privileges and company privileges)';
$lang->project->PGMAuthList['reset'] = 'Reset(project privileges only)';
$lang->program->PGMFeatureBar['all'] = 'All';
$lang->project->PGMFeatureBar['all'] = 'All';
+196 -274
View File
@@ -1,294 +1,216 @@
<?php
/* Actions. */
$lang->program->createGuide = 'Select Template';
$lang->program->PRJIndex = 'Dashboard';
$lang->program->PRJHome = 'Home';
$lang->program->PRJCreate = 'Create Project';
$lang->program->PRJEdit = 'Edit';
$lang->program->PRJBatchEdit = 'Batch Edit Projects';
$lang->program->PRJView = 'Project View';
$lang->program->batchEdit = 'Batch Edit';
$lang->program->PRJBrowse = 'Projects';
$lang->program->PRJAll = 'All';
$lang->program->PRJStart = 'Start';
$lang->program->PRJFinish = 'Finish';
$lang->program->PRJSuspend = 'Suspend';
$lang->program->PRJDelete = 'Delete';
$lang->program->PRJClose = 'Close';
$lang->program->PRJActivate = 'Activate';
$lang->program->PRJGroup = 'Privilege Group';
$lang->program->PRJCreateGroup = 'Create Group';
$lang->program->PRJEditGroup = 'Edit Group';
$lang->program->PRJCopyGroup = 'Copy Group';
$lang->program->PRJManageView = 'Manage View';
$lang->program->PRJManagePriv = 'Manage Privilege';
$lang->program->PRJManageMembers = 'Manage Team';
$lang->program->export = 'Export';
$lang->program->addProduct = 'Add Product';
$lang->program->PRJManageGroupMember = 'Manage Group';
$lang->program->PRJModuleSetting = 'List Settings';
$lang->program->PRJModuleOpen = 'Program Name';
$lang->program->PRJUpdateOrder = 'Order';
$lang->program->PRJSort = 'Order';
$lang->program->PRJWhitelist = 'Project Whitelist';
$lang->program->PRJAddWhitelist = 'Project Add Whitelist';
$lang->program->unbindWhielist = 'Project Remove Whitelist';
$lang->program->PRJManageProducts = 'Manage Products';
$lang->program->view = 'Program Detail';
$lang->program->copyTitle = 'Please select an project to copy';
$lang->program->errorSameProducts = 'Project cannot be associated with multiple identical products.';
$lang->program->errorNoProducts = 'At least one product is associated';
$lang->program->copyNoProject = 'There are no items available to copy.';
$lang->project->searchByName = 'Enter the project name to retrieve';
$lang->project->createGuide = 'Select Template';
$lang->project->index = 'Dashboard';
$lang->project->home = 'Home';
$lang->project->create = 'Create Project';
$lang->project->edit = 'Edit';
$lang->project->batchEdit = 'Batch Edit Projects';
$lang->project->view = 'Project View';
$lang->project->batchEdit = 'Batch Edit';
$lang->project->browse = 'Projects';
$lang->project->all = 'All';
$lang->project->start = 'Start';
$lang->project->finish = 'Finish';
$lang->project->suspend = 'Suspend';
$lang->project->delete = 'Delete';
$lang->project->close = 'Close';
$lang->project->activate = 'Activate';
$lang->project->group = 'Privilege Group';
$lang->project->createGroup = 'Create Group';
$lang->project->editGroup = 'Edit Group';
$lang->project->copyGroup = 'Copy Group';
$lang->project->manageView = 'Manage View';
$lang->project->managePriv = 'Manage Privilege';
$lang->project->manageMembers = 'Manage Team';
$lang->project->export = 'Export';
$lang->project->addProduct = 'Add Product';
$lang->project->manageGroupMember = 'Manage Group';
$lang->project->moduleSetting = 'List Settings';
$lang->project->moduleOpen = 'Program Name';
$lang->project->updateOrder = 'Order';
$lang->project->sort = 'Order';
$lang->project->whitelist = 'Project Whitelist';
$lang->project->addWhitelist = 'Project Add Whitelist';
$lang->project->unbindWhielist = 'Project Remove Whitelist';
$lang->project->manageProducts = 'Manage Products';
$lang->project->view = 'Program Detail';
$lang->project->copyTitle = 'Please select an project to copy';
$lang->project->errorSameProducts = 'Project cannot be associated with multiple identical products.';
$lang->project->errorNoProducts = 'At least one product is associated';
$lang->project->copyNoProject = 'There are no items available to copy.';
$lang->project->searchByName = 'Enter the project name to retrieve';
/* Fields. */
$lang->program->common = 'Program';
$lang->program->project = 'Project';
$lang->program->stage = 'Stage';
$lang->program->PM = 'Manager';
$lang->program->PRJName = 'Name';
$lang->program->PRJCategory = 'Category';
$lang->program->PRJDesc = 'Description';
$lang->program->PRJCode = 'Code';
$lang->program->PRJCopy = 'Copy';
$lang->program->begin = 'Begin';
$lang->program->end = 'End';
$lang->program->PRJStatus = 'Status';
$lang->program->PRJPM = 'Manager';
$lang->program->PRJBudget = 'Budget';
$lang->program->PRJTemplate = 'Template';
$lang->program->PRJEstimate = 'Estimates';
$lang->program->PRJConsume = 'Cost';
$lang->program->PRJSurplus = 'Left';
$lang->program->PRJProgress = 'Progress';
$lang->program->dateRange = 'Duration';
$lang->program->to = ' to ';
$lang->program->realEnd = 'Actual End';
$lang->program->realBegan = 'Actual Began';
$lang->program->bygrid = 'Kanban';
$lang->program->bylist = 'List';
$lang->program->mine = 'My';
$lang->program->setPlanduration = 'Set Duration';
$lang->program->auth = 'Access Control';
$lang->program->durationEstimation = 'Estimated Workload';
$lang->program->teamCount = 'Man';
$lang->program->leftStories = 'Left Stories';
$lang->program->leftTasks = 'Left Tasks';
$lang->program->leftBugs = 'Left Bugs';
$lang->program->PRJChildren = 'Child Project';
$lang->program->PRJParent = 'Parent Project';
$lang->program->allStories = 'All Stories';
$lang->program->doneStories = 'Finished Stories';
$lang->program->allInput = 'Total Input';
$lang->program->weekly = 'Program Weekly';
$lang->program->pv = 'PV';
$lang->program->ev = 'EV';
$lang->program->sv = 'SV%';
$lang->program->ac = 'AC';
$lang->program->cv = 'CV%';
$lang->program->PRJTeamCount = 'Team';
$lang->program->PRJLongTime = 'Long-Term Project';
$lang->program->future = 'TBD';
$lang->program->morePRJ = 'More Project';
$lang->project->common = 'Program';
$lang->project->project = 'Project';
$lang->project->stage = 'Stage';
$lang->project->PM = 'Manager';
$lang->project->name = 'Name';
$lang->project->category = 'Category';
$lang->project->desc = 'Description';
$lang->project->code = 'Code';
$lang->project->copy = 'Copy';
$lang->project->begin = 'Begin';
$lang->project->end = 'End';
$lang->project->status = 'Status';
$lang->project->PM = 'Manager';
$lang->project->budget = 'Budget';
$lang->project->template = 'Template';
$lang->project->estimate = 'Estimates';
$lang->project->consume = 'Cost';
$lang->project->surplus = 'Left';
$lang->project->progress = 'Progress';
$lang->project->dateRange = 'Duration';
$lang->project->to = ' to ';
$lang->project->realEnd = 'Actual End';
$lang->project->realBegan = 'Actual Began';
$lang->project->bygrid = 'Kanban';
$lang->project->bylist = 'List';
$lang->project->mine = 'My';
$lang->project->acl = 'Access Control';
$lang->project->setPlanduration = 'Set Duration';
$lang->project->auth = 'Access Control';
$lang->project->durationEstimation = 'Estimated Workload';
$lang->project->teamCount = 'Man';
$lang->project->leftStories = 'Left Stories';
$lang->project->leftTasks = 'Left Tasks';
$lang->project->leftBugs = 'Left Bugs';
$lang->project->children = 'Child Project';
$lang->project->parent = 'Parent Project';
$lang->project->allStories = 'All Stories';
$lang->project->doneStories = 'Finished Stories';
$lang->project->allInput = 'Total Input';
$lang->project->weekly = 'Program Weekly';
$lang->project->pv = 'PV';
$lang->project->ev = 'EV';
$lang->project->sv = 'SV%';
$lang->project->ac = 'AC';
$lang->project->cv = 'CV%';
$lang->project->teamCount = 'Team';
$lang->project->longTime = 'Long-Term Project';
$lang->project->future = 'TBD';
$lang->project->moreProject = 'More Project';
$lang->program->productNotEmpty = 'Please link products or create products.';
$lang->program->existProductName = 'Product name already exists.';
$lang->program->changeProgram = '%s > Change program';
$lang->program->changeProgramTip = 'After modifying the program set, the products linked with the project will also modify the program set to which it belongs. Please confirm whether to modify it.';
$lang->program->linkedProjectsTip = 'Linked projects are as follows';
$lang->program->multiLinkedProductsTip = 'The following products linked to this project are also linked to other projects, please unlink before proceeding.';
$lang->project->productNotEmpty = 'Please link products or create products.';
$lang->project->existProductName = 'Product name already exists.';
$lang->project->changeProgram = '%s > Change project';
$lang->project->changeProgramTip = 'After modifying the project set, the products linked with the project will also modify the project set to which it belongs. Please confirm whether to modify it.';
$lang->project->linkedProjectsTip = 'Linked projects are as follows';
$lang->project->multiLinkedProductsTip = 'The following products linked to this project are also linked to other projects, please unlink before proceeding.';
$lang->program->tenThousand = '';
$lang->project->tenThousand = '';
$lang->program->unitList['CNY'] = 'RMB';
$lang->program->unitList['USD'] = 'USD';
$lang->program->unitList['HKD'] = 'HKD';
$lang->program->unitList['NTD'] = 'New Taiwan';
$lang->program->unitList['EUR'] = 'Euro';
$lang->program->unitList['DEM'] = 'Deutsche Mark';
$lang->program->unitList['CHF'] = 'Swiss Franc';
$lang->program->unitList['FRF'] = 'French Franc';
$lang->program->unitList['GBP'] = 'Pound';
$lang->program->unitList['NLG'] = 'Florin';
$lang->program->unitList['CAD'] = 'Canadian';
$lang->program->unitList['RUR'] = 'Russian Ruble';
$lang->program->unitList['INR'] = 'Indian';
$lang->program->unitList['AUD'] = 'Australian';
$lang->program->unitList['NZD'] = 'New Zealand';
$lang->program->unitList['THB'] = 'Thai Baht';
$lang->program->unitList['SGD'] = 'Singapore';
$lang->project->unitList['CNY'] = 'RMB';
$lang->project->unitList['USD'] = 'USD';
$lang->project->unitList['HKD'] = 'HKD';
$lang->project->unitList['NTD'] = 'New Taiwan';
$lang->project->unitList['EUR'] = 'Euro';
$lang->project->unitList['DEM'] = 'Deutsche Mark';
$lang->project->unitList['CHF'] = 'Swiss Franc';
$lang->project->unitList['FRF'] = 'French Franc';
$lang->project->unitList['GBP'] = 'Pound';
$lang->project->unitList['NLG'] = 'Florin';
$lang->project->unitList['CAD'] = 'Canadian';
$lang->project->unitList['RUR'] = 'Russian Ruble';
$lang->project->unitList['INR'] = 'Indian';
$lang->project->unitList['AUD'] = 'Australian';
$lang->project->unitList['NZD'] = 'New Zealand';
$lang->project->unitList['THB'] = 'Thai Baht';
$lang->project->unitList['SGD'] = 'Singapore';
$lang->program->currencySymbol['CNY'] = '¥';
$lang->program->currencySymbol['USD'] = '$';
$lang->program->currencySymbol['HKD'] = 'HK$';
$lang->program->currencySymbol['NTD'] = 'NT$';
$lang->program->currencySymbol['EUR'] = '€';
$lang->program->currencySymbol['DEM'] = 'DEM';
$lang->program->currencySymbol['CHF'] = '₣';
$lang->program->currencySymbol['FRF'] = '₣';
$lang->program->currencySymbol['GBP'] = '£';
$lang->program->currencySymbol['NLG'] = 'ƒ';
$lang->program->currencySymbol['CAD'] = '$';
$lang->program->currencySymbol['RUR'] = '₽';
$lang->program->currencySymbol['INR'] = '₹';
$lang->program->currencySymbol['AUD'] = 'A$';
$lang->program->currencySymbol['NZD'] = 'NZ$';
$lang->program->currencySymbol['THB'] = '฿';
$lang->program->currencySymbol['SGD'] = 'S$';
$lang->project->currencySymbol['CNY'] = '¥';
$lang->project->currencySymbol['USD'] = '$';
$lang->project->currencySymbol['HKD'] = 'HK$';
$lang->project->currencySymbol['NTD'] = 'NT$';
$lang->project->currencySymbol['EUR'] = '€';
$lang->project->currencySymbol['DEM'] = 'DEM';
$lang->project->currencySymbol['CHF'] = '₣';
$lang->project->currencySymbol['FRF'] = '₣';
$lang->project->currencySymbol['GBP'] = '£';
$lang->project->currencySymbol['NLG'] = 'ƒ';
$lang->project->currencySymbol['CAD'] = '$';
$lang->project->currencySymbol['RUR'] = '₽';
$lang->project->currencySymbol['INR'] = '₹';
$lang->project->currencySymbol['AUD'] = 'A$';
$lang->project->currencySymbol['NZD'] = 'NZ$';
$lang->project->currencySymbol['THB'] = '฿';
$lang->project->currencySymbol['SGD'] = 'S$';
$lang->program->modelList['scrum'] = "Scrum";
$lang->program->modelList['waterfall'] = "CMMI";
$lang->project->modelList['scrum'] = "Scrum";
$lang->project->modelList['waterfall'] = "CMMI";
$lang->program->PRJCategoryList['single'] = "Single product";
$lang->program->PRJCategoryList['multiple'] = "Multiple products";
$lang->project->categoryList['single'] = "Single product";
$lang->project->categoryList['multiple'] = "Multiple products";
$lang->program->PRJLifeTimeList['short'] = "Short-Term";
$lang->program->PRJLifeTimeList['long'] = "Long-Term";
$lang->program->PRJLifeTimeList['ops'] = "DevOps";
$lang->project->lifeTimeList['short'] = "Short-Term";
$lang->project->lifeTimeList['long'] = "Long-Term";
$lang->project->lifeTimeList['ops'] = "DevOps";
$lang->program->featureBar['all'] = 'All';
$lang->program->featureBar['doing'] = 'Going';
$lang->program->featureBar['wait'] = 'Waiting';
$lang->program->featureBar['suspended'] = 'Suspended';
$lang->program->featureBar['closed'] = 'Closed';
$lang->project->featureBar['all'] = 'All';
$lang->project->featureBar['doing'] = 'Going';
$lang->project->featureBar['wait'] = 'Waiting';
$lang->project->featureBar['suspended'] = 'Suspended';
$lang->project->featureBar['closed'] = 'Closed';
$lang->program->PRJAclList['private'] = 'Private (For team members and stakeholders only)';
$lang->program->PRJAclList['open'] = "Open (accessible with project view permissions)";
$lang->project->aclList['private'] = 'Private (For team members and stakeholders only)';
$lang->project->aclList['open'] = "Open (accessible with project view permissions)";
$lang->program->PRJAcls['private'] = 'Private';
$lang->program->PRJAcls['open'] = "Open";
$lang->project->acls['private'] = 'Private';
$lang->project->acls['open'] = 'Open';
$lang->program->PGMPRJAclList['private'] = "Private (For team members and stakeholders only)";
$lang->program->PGMPRJAclList['program'] = "Public within the project set (accessible to all higher-level project set leaders and stakeholders, members of this project team and stakeholders)";
$lang->program->PGMPRJAclList['open'] = "Full disclosure (accessible with project view permissions)";
$lang->project->authList['extend'] = 'Inherit (system privilege and project privilege)';
$lang->project->authList['reset'] = 'Reset (project privilege only)';
$lang->program->PGMPRJAcls['private'] = "Private";
$lang->program->PGMPRJAcls['program'] = "Public within the project set";
$lang->program->PGMPRJAcls['open'] = "Full disclosure";
$lang->project->statusList['wait'] = 'Waiting';
$lang->project->statusList['doing'] = 'Doing';
$lang->project->statusList['suspended'] = 'Suspended';
$lang->project->statusList['closed'] = 'Closed';
$lang->program->PRJAuthList['extend'] = 'Inherit (system privilege and project privilege)';
$lang->program->PRJAuthList['reset'] = 'Reset (project privilege only)';
$lang->project->endList[31] = 'One month';
$lang->project->endList[93] = 'Trimester';
$lang->project->endList[186] = 'Half yearly';
$lang->project->endList[365] = 'One year';
$lang->project->endList[999] = 'Longtime';
$lang->program->statusList['wait'] = 'Waiting';
$lang->program->statusList['doing'] = 'Doing';
$lang->program->statusList['suspended'] = 'Suspended';
$lang->program->statusList['closed'] = 'Closed';
$lang->project->empty = 'No project.';
$lang->project->accessDenied = 'Access denied!';
$lang->project->chooseProgramType = 'Select the project management model';
$lang->project->nextStep = 'Next step';
$lang->project->hoursUnit = '%s hours';
$lang->project->membersUnit = '%s men';
$lang->project->lastIteration = 'Recent iterations';
$lang->project->ongoingStage = 'Ongoing stage';
$lang->project->scrum = 'Scrum';
$lang->project->waterfall = 'CMMI';
$lang->project->waterfallTitle = 'CMMI';
$lang->project->cannotCreateChild = 'It is not empty, so you cannot add a child. You can add a parent for it, and then create a child.';
$lang->project->hasChildren = 'It has child projects or projects. You cannot delete it.';
$lang->project->confirmDelete = "Do you want to delete [%s]?";
$lang->project->emptyPM = 'No manager';
$lang->project->cannotChangeToCat = "It is not empty, so you cannot change it to a parent.";
$lang->project->cannotCancelCat = "It has child projects, so you cannot unmark the parent.";
$lang->project->parentBeginEnd = "Parent begin&end date: %s ~ %s";
$lang->project->childLongTime = "If a child as long-term projects, the parent should be long-term too.";
$lang->project->readjustTime = 'Change the project begin&end date.';
$lang->project->notAllowRemoveProducts = 'The story of this product is linked with the project. Unlink it before doing any action.';
$lang->program->endList[31] = 'One month';
$lang->program->endList[93] = 'Trimester';
$lang->program->endList[186] = 'Half yearly';
$lang->program->endList[365] = 'One year';
$lang->program->endList[999] = 'Longtime';
$lang->project->programTitle['0'] = 'Hidden';
$lang->project->programTitle['base'] = 'Base-level project only';
$lang->project->programTitle['end'] = 'End-level project only';
$lang->program->noPRJ = 'No project.';
$lang->program->accessDenied = 'Access denied!';
$lang->program->chooseProgramType = 'Select the project management model';
$lang->program->nextStep = 'Next step';
$lang->program->hoursUnit = '%s hours';
$lang->program->membersUnit = '%s men';
$lang->program->lastIteration = 'Recent iterations';
$lang->program->ongoingStage = 'Ongoing stage';
$lang->program->scrum = 'Scrum';
$lang->program->waterfall = 'CMMI';
$lang->program->waterfallTitle = 'CMMI';
$lang->program->cannotCreateChild = 'It is not empty, so you cannot add a child. You can add a parent for it, and then create a child.';
$lang->program->hasChildren = 'It has child programs or projects. You cannot delete it.';
$lang->program->confirmDelete = "Do you want to delete [%s]?";
$lang->program->emptyPM = 'No manager';
$lang->program->cannotChangeToCat = "It is not empty, so you cannot change it to a parent.";
$lang->program->cannotCancelCat = "It has child projects, so you cannot unmark the parent.";
$lang->program->parentBeginEnd = "Parent begin&end date: %s ~ %s";
$lang->program->childLongTime = "If a child as long-term projects, the parent should be long-term too.";
$lang->program->readjustTime = 'Change the project begin&end date.';
$lang->program->notAllowRemoveProducts = 'The story of this product is linked with the project. Unlink it before doing any action.';
$lang->program->PRJProgramTitle['0'] = 'Hide';
$lang->program->PRJProgramTitle['base'] = 'Base-level program only';
$lang->program->PRJProgramTitle['end'] = 'End-level program only';
$lang->program->PRJAccessDenied = 'Access denied to this program';
$lang->program->PRJChooseProgramType = 'Select management type';
$lang->program->scrumTitle = 'Agile Development Management';
$lang->program->PRJCannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
$lang->program->PRJHasChildren = 'This project has a child project, so it cannot be deleted.';
$lang->program->PRJConfirmDelete = 'Do you want to delete this project?';
$lang->program->PRJCannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
$lang->program->PRJCannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
$lang->program->PRJParentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
$lang->program->PRJParentBudget = "The budget of the parent project: %s";
$lang->program->PRJBeginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
$lang->program->PRJEndGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
$lang->program->PRJBeginGreateChild = "The minimum start date of the project set: %s. The start date of the project cannot be less than the minimum start date of the program set.";
$lang->program->PRJEndLetterChild = "The maximum finish date for the project set: %s. The completion date of a project cannot be greater than the maximum completion date of the program set.";
$lang->program->PRJChildLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
/* Actions. */
$lang->program->PGMCommon = 'Program';
$lang->program->PGMIndex = 'Home';
$lang->program->PGMCreate = 'Create Program';
$lang->program->PGMCreateGuide = 'Select Template';
$lang->program->PGMEdit = 'Edit Program';
$lang->program->PGMBrowse = 'Programs';
$lang->program->PGMProduct = 'Products';
$lang->program->PGMProject = 'Program Project List';
$lang->program->PGMAll = 'All Programs';
$lang->program->PGMStart = 'Start';
$lang->program->PGMFinish = 'Finish';
$lang->program->PGMSuspend = 'Suspend';
$lang->program->PGMDelete = 'Delete';
$lang->program->PGMClose = 'Close';
$lang->program->PGMActivate = 'Activate';
$lang->program->PGMExport = 'Export';
$lang->program->PGMStakeholder = 'Stakeholder';
$lang->program->createStakeholder = 'Create Stakeholder';
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
$lang->program->unlink = 'Unlink';
$lang->program->morePGM = 'More program';
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
$lang->program->PGMManageMembers = 'Program Team';
$lang->program->PGMParentBudget = 'Parent program surplus budget:';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
$lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
$lang->program->PGMBeginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
$lang->program->PGMEndLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
$lang->program->PGMCloseErrorMessage = 'There are subprograms or projects that are not closed';
$lang->program->stakeholderTypeList['inside'] = 'Inside';
$lang->program->stakeholderTypeList['outside'] = 'Outside';
/* Fields. */
$lang->program->PGMName = 'Name';
$lang->program->PGMTemplate = 'Template';
$lang->program->PGMCategory = 'Type';
$lang->program->PGMDesc = 'Description';
$lang->program->PGMCopy = 'Copy Program';
$lang->program->PGMStatus = 'Status';
$lang->program->PGMPM = 'Manager';
$lang->program->PGMBudget = 'Budget';
$lang->program->PGMProgress = 'Progress';
$lang->program->PGMChildren = 'Child';
$lang->program->PGMParent = 'Parent';
$lang->program->PGMAllInput = 'Input';
$lang->program->PGMTeamCount = 'Team';
$lang->program->PGMLongTime = 'Long-Term';
$lang->program->noPGM = 'No program.';
$lang->program->PGMShowClosed = 'Closed programs.';
$lang->program->PGMTips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
$lang->program->PGMAclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
$lang->program->PGMAclList['open'] = "Default(user who can visit the program can access it)";
$lang->program->subPGMAclList['private'] = "Private (accessible to this program set leader and stakeholders, stakeholders can follow up maintenance)";
$lang->program->subPGMAclList['open'] = "Default(user who can visit the program can access it)";
$lang->program->subPGMAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
$lang->program->PGMAuthList['extend'] = 'Inherit(program privileges and company privileges)';
$lang->program->PGMAuthList['reset'] = 'Reset(program privileges only)';
$lang->program->PGMFeatureBar['all'] = 'All';
$lang->project->accessDenied = 'Access denied to this project';
$lang->project->chooseProgramType = 'Select management type';
$lang->project->scrumTitle = 'Agile Development Management';
$lang->project->cannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
$lang->project->hasChildren = 'This project has a child project, so it cannot be deleted.';
$lang->project->confirmDelete = 'Do you want to delete this project?';
$lang->project->cannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
$lang->project->cannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
$lang->project->parentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
$lang->project->parentBudget = "The budget of the parent project: %s";
$lang->project->beginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
$lang->project->endGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
$lang->project->beginGreateChild = "The minimum start date of the project set: %s. The start date of the project cannot be less than the minimum start date of the project set.";
$lang->project->endLetterChild = "The maximum finish date for the project set: %s. The completion date of a project cannot be greater than the maximum completion date of the project set.";
$lang->project->childLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
+261 -261
View File
@@ -1,294 +1,294 @@
<?php
/* Actions. */
$lang->program->createGuide = 'Select Template';
$lang->program->PRJIndex = 'Dashboard';
$lang->program->PRJHome = 'Home';
$lang->program->PRJCreate = 'Create Project';
$lang->program->PRJEdit = 'Edit';
$lang->program->PRJBatchEdit = 'Batch Edit Projects';
$lang->program->PRJView = 'Project View';
$lang->program->batchEdit = 'Batch Edit';
$lang->program->PRJBrowse = 'Projects';
$lang->program->PRJAll = 'All';
$lang->program->PRJStart = 'Start';
$lang->program->PRJFinish = 'Finish';
$lang->program->PRJSuspend = 'Suspend';
$lang->program->PRJDelete = 'Delete';
$lang->program->PRJClose = 'Close';
$lang->program->PRJActivate = 'Activate';
$lang->program->PRJGroup = 'Privilege Group';
$lang->program->PRJCreateGroup = 'Create Group';
$lang->program->PRJEditGroup = 'Edit Group';
$lang->program->PRJCopyGroup = 'Copy Group';
$lang->program->PRJManageView = 'Manage View';
$lang->program->PRJManagePriv = 'Manage Privilege';
$lang->program->PRJManageMembers = 'Manage Team';
$lang->program->export = 'Export';
$lang->program->addProduct = 'Add product';
$lang->program->PRJManageGroupMember = 'Manage Group';
$lang->program->PRJModuleSetting = 'List Settings';
$lang->program->PRJModuleOpen = 'Program Name';
$lang->program->PRJUpdateOrder = 'Order';
$lang->program->PRJSort = 'Order';
$lang->program->PRJWhitelist = 'Project Whitelist';
$lang->program->PRJAddWhitelist = 'Project Add Whitelist';
$lang->program->unbindWhielist = 'Project Remove Whitelist';
$lang->program->PRJManageProducts = 'Manage Products';
$lang->program->view = 'Program Detail';
$lang->program->copyTitle = 'Please select an project to copy';
$lang->program->errorSameProducts = 'Project cannot be associated with multiple identical products.';
$lang->program->errorNoProducts = 'At least one product is associated';
$lang->program->copyNoProject = 'There are no items available to copy.';
$lang->project->createGuide = 'Select Template';
$lang->project->PRJIndex = 'Dashboard';
$lang->project->PRJHome = 'Home';
$lang->project->PRJCreate = 'Create Project';
$lang->project->PRJEdit = 'Edit';
$lang->project->PRJBatchEdit = 'Batch Edit Projects';
$lang->project->PRJView = 'Project View';
$lang->project->batchEdit = 'Batch Edit';
$lang->project->PRJBrowse = 'Projects';
$lang->project->PRJAll = 'All';
$lang->project->PRJStart = 'Start';
$lang->project->PRJFinish = 'Finish';
$lang->project->PRJSuspend = 'Suspend';
$lang->project->PRJDelete = 'Delete';
$lang->project->PRJClose = 'Close';
$lang->project->PRJActivate = 'Activate';
$lang->project->PRJGroup = 'Privilege Group';
$lang->project->PRJCreateGroup = 'Create Group';
$lang->project->PRJEditGroup = 'Edit Group';
$lang->project->PRJCopyGroup = 'Copy Group';
$lang->project->PRJManageView = 'Manage View';
$lang->project->PRJManagePriv = 'Manage Privilege';
$lang->project->PRJManageMembers = 'Manage Team';
$lang->project->export = 'Export';
$lang->project->addProduct = 'Add product';
$lang->project->PRJManageGroupMember = 'Manage Group';
$lang->project->PRJModuleSetting = 'List Settings';
$lang->project->PRJModuleOpen = 'Program Name';
$lang->project->PRJUpdateOrder = 'Order';
$lang->project->PRJSort = 'Order';
$lang->project->PRJWhitelist = 'Project Whitelist';
$lang->project->PRJAddWhitelist = 'Project Add Whitelist';
$lang->project->unbindWhielist = 'Project Remove Whitelist';
$lang->project->PRJManageProducts = 'Manage Products';
$lang->project->view = 'Program Detail';
$lang->project->copyTitle = 'Please select an project to copy';
$lang->project->errorSameProducts = 'Project cannot be associated with multiple identical products.';
$lang->project->errorNoProducts = 'At least one product is associated';
$lang->project->copyNoProject = 'There are no items available to copy.';
$lang->project->searchByName = 'Enter the project name to retrieve';
/* Fields. */
$lang->program->common = 'Program';
$lang->program->project = 'Project';
$lang->program->stage = 'Stage';
$lang->program->PM = 'Manager';
$lang->program->PRJName = 'Name';
$lang->program->PRJCategory = 'Category';
$lang->program->PRJDesc = 'Description';
$lang->program->PRJCode = 'Code';
$lang->program->PRJCopy = 'Copy';
$lang->program->begin = 'Begin';
$lang->program->end = 'End';
$lang->program->PRJStatus = 'Status';
$lang->program->PRJPM = 'Manager';
$lang->program->PRJBudget = 'Budget';
$lang->program->PRJTemplate = 'Template';
$lang->program->PRJEstimate = 'Estimates';
$lang->program->PRJConsume = 'Cost';
$lang->program->PRJSurplus = 'Left';
$lang->program->PRJProgress = 'Progress';
$lang->program->dateRange = 'Duration';
$lang->program->to = ' to ';
$lang->program->realEnd = 'Actual End';
$lang->program->realBegan = 'Actual Began';
$lang->program->bygrid = 'Kanban';
$lang->program->bylist = 'List';
$lang->program->mine = 'My';
$lang->program->setPlanduration = 'Set Duration';
$lang->program->auth = 'Access Control';
$lang->program->durationEstimation = 'Estimated Workload';
$lang->program->teamCount = 'Man';
$lang->program->leftStories = 'Left Stories';
$lang->program->leftTasks = 'Left Tasks';
$lang->program->leftBugs = 'Left Bugs';
$lang->program->PRJChildren = 'Child Project';
$lang->program->PRJParent = 'Parent Project';
$lang->program->allStories = 'All Stories';
$lang->program->doneStories = 'Finished Stories';
$lang->program->allInput = 'Total Input';
$lang->program->weekly = 'Program Weekly';
$lang->program->pv = 'PV';
$lang->program->ev = 'EV';
$lang->program->sv = 'SV%';
$lang->program->ac = 'AC';
$lang->program->cv = 'CV%';
$lang->program->PRJTeamCount = 'Team';
$lang->program->PRJLongTime = 'Long-Term Project';
$lang->program->future = 'TBD';
$lang->program->morePRJ = 'More Projects';
$lang->project->common = 'Program';
$lang->project->project = 'Project';
$lang->project->stage = 'Stage';
$lang->project->PM = 'Manager';
$lang->project->PRJName = 'Name';
$lang->project->PRJCategory = 'Category';
$lang->project->PRJDesc = 'Description';
$lang->project->PRJCode = 'Code';
$lang->project->PRJCopy = 'Copy';
$lang->project->begin = 'Begin';
$lang->project->end = 'End';
$lang->project->PRJStatus = 'Status';
$lang->project->PRJPM = 'Manager';
$lang->project->PRJBudget = 'Budget';
$lang->project->PRJTemplate = 'Template';
$lang->project->PRJEstimate = 'Estimates';
$lang->project->PRJConsume = 'Cost';
$lang->project->PRJSurplus = 'Left';
$lang->project->PRJProgress = 'Progress';
$lang->project->dateRange = 'Duration';
$lang->project->to = ' to ';
$lang->project->realEnd = 'Actual End';
$lang->project->realBegan = 'Actual Began';
$lang->project->bygrid = 'Kanban';
$lang->project->bylist = 'List';
$lang->project->mine = 'My';
$lang->project->setPlanduration = 'Set Duration';
$lang->project->auth = 'Access Control';
$lang->project->durationEstimation = 'Estimated Workload';
$lang->project->teamCount = 'Man';
$lang->project->leftStories = 'Left Stories';
$lang->project->leftTasks = 'Left Tasks';
$lang->project->leftBugs = 'Left Bugs';
$lang->project->PRJChildren = 'Child Project';
$lang->project->PRJParent = 'Parent Project';
$lang->project->allStories = 'All Stories';
$lang->project->doneStories = 'Finished Stories';
$lang->project->allInput = 'Total Input';
$lang->project->weekly = 'Program Weekly';
$lang->project->pv = 'PV';
$lang->project->ev = 'EV';
$lang->project->sv = 'SV%';
$lang->project->ac = 'AC';
$lang->project->cv = 'CV%';
$lang->project->PRJTeamCount = 'Team';
$lang->project->PRJLongTime = 'Long-Term Project';
$lang->project->future = 'TBD';
$lang->project->morePRJ = 'More Projects';
$lang->program->productNotEmpty = 'Please link products or create products.';
$lang->program->existProductName = 'Product name already exists.';
$lang->program->changeProgram = '%s > Change program';
$lang->program->changeProgramTip = 'After modifying the program set, the products linked with the project will also modify the program set to which it belongs. Please confirm whether to modify it.';
$lang->program->linkedProjectsTip = 'Linked projects are as follows';
$lang->program->multiLinkedProductsTip = 'The following products linked to this project are also linked to other projects, please unlink before proceeding.';
$lang->project->productNotEmpty = 'Please link products or create products.';
$lang->project->existProductName = 'Product name already exists.';
$lang->project->changeProgram = '%s > Change project';
$lang->project->changeProgramTip = 'After modifying the project set, the products linked with the project will also modify the project set to which it belongs. Please confirm whether to modify it.';
$lang->project->linkedProjectsTip = 'Linked projects are as follows';
$lang->project->multiLinkedProductsTip = 'The following products linked to this project are also linked to other projects, please unlink before proceeding.';
$lang->program->tenThousand = '';
$lang->project->tenThousand = '';
$lang->program->unitList['CNY'] = 'RMB';
$lang->program->unitList['USD'] = 'USD';
$lang->program->unitList['HKD'] = 'HKD';
$lang->program->unitList['NTD'] = 'New Taiwan';
$lang->program->unitList['EUR'] = 'Euro';
$lang->program->unitList['DEM'] = 'Deutsche Mark';
$lang->program->unitList['CHF'] = 'Swiss Franc';
$lang->program->unitList['FRF'] = 'French Franc';
$lang->program->unitList['GBP'] = 'Pound';
$lang->program->unitList['NLG'] = 'Florin';
$lang->program->unitList['CAD'] = 'Canadian';
$lang->program->unitList['RUR'] = 'Russian Ruble';
$lang->program->unitList['INR'] = 'Indian';
$lang->program->unitList['AUD'] = 'Australian';
$lang->program->unitList['NZD'] = 'New Zealand';
$lang->program->unitList['THB'] = 'Thai Baht';
$lang->program->unitList['SGD'] = 'Singapore';
$lang->project->unitList['CNY'] = 'RMB';
$lang->project->unitList['USD'] = 'USD';
$lang->project->unitList['HKD'] = 'HKD';
$lang->project->unitList['NTD'] = 'New Taiwan';
$lang->project->unitList['EUR'] = 'Euro';
$lang->project->unitList['DEM'] = 'Deutsche Mark';
$lang->project->unitList['CHF'] = 'Swiss Franc';
$lang->project->unitList['FRF'] = 'French Franc';
$lang->project->unitList['GBP'] = 'Pound';
$lang->project->unitList['NLG'] = 'Florin';
$lang->project->unitList['CAD'] = 'Canadian';
$lang->project->unitList['RUR'] = 'Russian Ruble';
$lang->project->unitList['INR'] = 'Indian';
$lang->project->unitList['AUD'] = 'Australian';
$lang->project->unitList['NZD'] = 'New Zealand';
$lang->project->unitList['THB'] = 'Thai Baht';
$lang->project->unitList['SGD'] = 'Singapore';
$lang->program->currencySymbol['CNY'] = '¥';
$lang->program->currencySymbol['USD'] = '$';
$lang->program->currencySymbol['HKD'] = 'HK$';
$lang->program->currencySymbol['NTD'] = 'NT$';
$lang->program->currencySymbol['EUR'] = '€';
$lang->program->currencySymbol['DEM'] = 'DEM';
$lang->program->currencySymbol['CHF'] = '₣';
$lang->program->currencySymbol['FRF'] = '₣';
$lang->program->currencySymbol['GBP'] = '£';
$lang->program->currencySymbol['NLG'] = 'ƒ';
$lang->program->currencySymbol['CAD'] = '$';
$lang->program->currencySymbol['RUR'] = '₽';
$lang->program->currencySymbol['INR'] = '₹';
$lang->program->currencySymbol['AUD'] = 'A$';
$lang->program->currencySymbol['NZD'] = 'NZ$';
$lang->program->currencySymbol['THB'] = '฿';
$lang->program->currencySymbol['SGD'] = 'S$';
$lang->project->currencySymbol['CNY'] = '¥';
$lang->project->currencySymbol['USD'] = '$';
$lang->project->currencySymbol['HKD'] = 'HK$';
$lang->project->currencySymbol['NTD'] = 'NT$';
$lang->project->currencySymbol['EUR'] = '€';
$lang->project->currencySymbol['DEM'] = 'DEM';
$lang->project->currencySymbol['CHF'] = '₣';
$lang->project->currencySymbol['FRF'] = '₣';
$lang->project->currencySymbol['GBP'] = '£';
$lang->project->currencySymbol['NLG'] = 'ƒ';
$lang->project->currencySymbol['CAD'] = '$';
$lang->project->currencySymbol['RUR'] = '₽';
$lang->project->currencySymbol['INR'] = '₹';
$lang->project->currencySymbol['AUD'] = 'A$';
$lang->project->currencySymbol['NZD'] = 'NZ$';
$lang->project->currencySymbol['THB'] = '฿';
$lang->project->currencySymbol['SGD'] = 'S$';
$lang->program->modelList['scrum'] = "Scrum";
$lang->program->modelList['waterfall'] = "CMMI";
$lang->project->modelList['scrum'] = "Scrum";
$lang->project->modelList['waterfall'] = "CMMI";
$lang->program->PRJCategoryList['single'] = "Single product";
$lang->program->PRJCategoryList['multiple'] = "Multiple products";
$lang->project->PRJCategoryList['single'] = "Single product";
$lang->project->PRJCategoryList['multiple'] = "Multiple products";
$lang->program->PRJLifeTimeList['short'] = "Short-Term";
$lang->program->PRJLifeTimeList['long'] = "Long-Term";
$lang->program->PRJLifeTimeList['ops'] = "DevOps";
$lang->project->PRJLifeTimeList['short'] = "Short-Term";
$lang->project->PRJLifeTimeList['long'] = "Long-Term";
$lang->project->PRJLifeTimeList['ops'] = "DevOps";
$lang->program->featureBar['all'] = 'All';
$lang->program->featureBar['doing'] = 'Going';
$lang->program->featureBar['wait'] = 'Waiting';
$lang->program->featureBar['suspended'] = 'Suspended';
$lang->program->featureBar['closed'] = 'Closed';
$lang->project->featureBar['all'] = 'All';
$lang->project->featureBar['doing'] = 'Going';
$lang->project->featureBar['wait'] = 'Waiting';
$lang->project->featureBar['suspended'] = 'Suspended';
$lang->project->featureBar['closed'] = 'Closed';
$lang->program->PRJAclList['private'] = 'Private (For team members and stakeholders only)';
$lang->program->PRJAclList['open'] = "Open (accessible with project view permissions)";
$lang->project->PRJAclList['private'] = 'Private (For team members and stakeholders only)';
$lang->project->PRJAclList['open'] = "Open (accessible with project view permissions)";
$lang->program->PRJAcls['private'] = 'Private';
$lang->program->PRJAcls['open'] = "Open";
$lang->project->PRJAcls['private'] = 'Private';
$lang->project->PRJAcls['open'] = "Open";
$lang->program->PGMPRJAclList['private'] = "Private (For team members and stakeholders only)";
$lang->program->PGMPRJAclList['program'] = "Public within the project set (accessible to all higher-level project set leaders and stakeholders, members of this project team and stakeholders)";
$lang->program->PGMPRJAclList['open'] = "Full disclosure (accessible with project view permissions)";
$lang->project->PGMPRJAclList['private'] = "Private (For team members and stakeholders only)";
$lang->project->PGMPRJAclList['project'] = "Public within the project set (accessible to all higher-level project set leaders and stakeholders, members of this project team and stakeholders)";
$lang->project->PGMPRJAclList['open'] = "Full disclosure (accessible with project view permissions)";
$lang->program->PGMPRJAcls['private'] = "Private";
$lang->program->PGMPRJAcls['program'] = "Public within the project set";
$lang->program->PGMPRJAcls['open'] = "Full disclosure";
$lang->project->PGMPRJAcls['private'] = "Private";
$lang->project->PGMPRJAcls['project'] = "Public within the project set";
$lang->project->PGMPRJAcls['open'] = "Full disclosure";
$lang->program->PRJAuthList['extend'] = 'Inherit (system privilege and project privilege)';
$lang->program->PRJAuthList['reset'] = 'Reset (project privilege only)';
$lang->project->PRJAuthList['extend'] = 'Inherit (system privilege and project privilege)';
$lang->project->PRJAuthList['reset'] = 'Reset (project privilege only)';
$lang->program->statusList['wait'] = 'Waiting';
$lang->program->statusList['doing'] = 'Doing';
$lang->program->statusList['suspended'] = 'Suspended';
$lang->program->statusList['closed'] = 'Closed';
$lang->project->statusList['wait'] = 'Waiting';
$lang->project->statusList['doing'] = 'Doing';
$lang->project->statusList['suspended'] = 'Suspended';
$lang->project->statusList['closed'] = 'Closed';
$lang->program->endList[31] = 'One month';
$lang->program->endList[93] = 'Trimester';
$lang->program->endList[186] = 'Half yearly';
$lang->program->endList[365] = 'One year';
$lang->program->endList[999] = 'Longtime';
$lang->project->endList[31] = 'One month';
$lang->project->endList[93] = 'Trimester';
$lang->project->endList[186] = 'Half yearly';
$lang->project->endList[365] = 'One year';
$lang->project->endList[999] = 'Longtime';
$lang->program->noPRJ = 'No project.';
$lang->program->accessDenied = 'Access denied!';
$lang->program->chooseProgramType = 'Select the project management model';
$lang->program->nextStep = 'Next step';
$lang->program->hoursUnit = '%s hours';
$lang->program->membersUnit = '%s men';
$lang->program->lastIteration = 'Recent iterations';
$lang->program->ongoingStage = 'Ongoing stage';
$lang->program->scrum = 'Scrum';
$lang->program->waterfall = 'CMMI';
$lang->program->waterfallTitle = 'CMMI';
$lang->program->cannotCreateChild = 'It is not empty, so you cannot add a child. You can add a parent for it, and then create a child.';
$lang->program->hasChildren = 'It has child programs or projects. You cannot delete it.';
$lang->program->confirmDelete = "Do you want to delete [%s]?";
$lang->program->emptyPM = 'No manager';
$lang->program->cannotChangeToCat = "It is not empty, so you cannot change it to a parent.";
$lang->program->cannotCancelCat = "It has child projects, so you cannot unmark the parent.";
$lang->program->parentBeginEnd = "Parent begin&end date: %s ~ %s";
$lang->program->childLongTime = "If a child as long-term projects, the parent should be long-term too.";
$lang->program->readjustTime = 'Change the project begin&end date.';
$lang->program->notAllowRemoveProducts = 'The story of this product is linked with the project. Unlink it before doing any action.';
$lang->project->noPRJ = 'No project.';
$lang->project->accessDenied = 'Access denied!';
$lang->project->chooseProgramType = 'Select the project management model';
$lang->project->nextStep = 'Next step';
$lang->project->hoursUnit = '%s hours';
$lang->project->membersUnit = '%s men';
$lang->project->lastIteration = 'Recent iterations';
$lang->project->ongoingStage = 'Ongoing stage';
$lang->project->scrum = 'Scrum';
$lang->project->waterfall = 'CMMI';
$lang->project->waterfallTitle = 'CMMI';
$lang->project->cannotCreateChild = 'It is not empty, so you cannot add a child. You can add a parent for it, and then create a child.';
$lang->project->hasChildren = 'It has child projects or projects. You cannot delete it.';
$lang->project->confirmDelete = "Do you want to delete [%s]?";
$lang->project->emptyPM = 'No manager';
$lang->project->cannotChangeToCat = "It is not empty, so you cannot change it to a parent.";
$lang->project->cannotCancelCat = "It has child projects, so you cannot unmark the parent.";
$lang->project->parentBeginEnd = "Parent begin&end date: %s ~ %s";
$lang->project->childLongTime = "If a child as long-term projects, the parent should be long-term too.";
$lang->project->readjustTime = 'Change the project begin&end date.';
$lang->project->notAllowRemoveProducts = 'The story of this product is linked with the project. Unlink it before doing any action.';
$lang->program->PRJProgramTitle['0'] = 'Hide';
$lang->program->PRJProgramTitle['base'] = 'Base-level program only';
$lang->program->PRJProgramTitle['end'] = 'End-level program only';
$lang->project->PRJProgramTitle['0'] = 'Hide';
$lang->project->PRJProgramTitle['base'] = 'Base-level project only';
$lang->project->PRJProgramTitle['end'] = 'End-level project only';
$lang->program->PRJAccessDenied = 'Access denied to this program';
$lang->program->PRJChooseProgramType = 'Select management type';
$lang->program->scrumTitle = 'Agile Development Management';
$lang->program->PRJCannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
$lang->program->PRJHasChildren = 'This project has a child project, so it cannot be deleted.';
$lang->program->PRJConfirmDelete = 'Do you want to delete this project?';
$lang->program->PRJCannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
$lang->program->PRJCannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
$lang->program->PRJParentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
$lang->program->PRJParentBudget = "The budget of the parent project: %s";
$lang->program->PRJBeginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
$lang->program->PRJEndGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
$lang->program->PRJBeginGreateChild = "The minimum start date of the project set: %s. The start date of the project cannot be less than the minimum start date of the program set.";
$lang->program->PRJEndLetterChild = "The maximum finish date for the project set: %s. The completion date of a project cannot be greater than the maximum completion date of the program set.";
$lang->program->PRJChildLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
$lang->project->PRJAccessDenied = 'Access denied to this project';
$lang->project->PRJChooseProgramType = 'Select management type';
$lang->project->scrumTitle = 'Agile Development Management';
$lang->project->PRJCannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
$lang->project->PRJHasChildren = 'This project has a child project, so it cannot be deleted.';
$lang->project->PRJConfirmDelete = 'Do you want to delete this project?';
$lang->project->PRJCannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
$lang->project->PRJCannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
$lang->project->PRJParentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
$lang->project->PRJParentBudget = "The budget of the parent project: %s";
$lang->project->PRJBeginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
$lang->project->PRJEndGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
$lang->project->PRJBeginGreateChild = "The minimum start date of the project set: %s. The start date of the project cannot be less than the minimum start date of the project set.";
$lang->project->PRJEndLetterChild = "The maximum finish date for the project set: %s. The completion date of a project cannot be greater than the maximum completion date of the project set.";
$lang->project->PRJChildLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
/* Actions. */
$lang->program->PGMCommon = 'Program';
$lang->program->PGMIndex = 'Home';
$lang->program->PGMCreate = 'Create Program';
$lang->program->PGMCreateGuide = 'Select Template';
$lang->program->PGMEdit = 'Edit Program';
$lang->program->PGMBrowse = 'Programs';
$lang->program->PGMProduct = 'Products';
$lang->program->PGMProject = 'Program Project List';
$lang->program->PGMAll = 'All Programs';
$lang->program->PGMStart = 'Start';
$lang->program->PGMFinish = 'Finish';
$lang->program->PGMSuspend = 'Suspend';
$lang->program->PGMDelete = 'Delete';
$lang->program->PGMClose = 'Close';
$lang->program->PGMActivate = 'Activate';
$lang->program->PGMExport = 'Export';
$lang->program->PGMStakeholder = 'Stakeholder';
$lang->program->createStakeholder = 'Create Stakeholder';
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
$lang->program->unlink = 'Unlink';
$lang->program->morePGM = 'More Programs';
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
$lang->program->PGMManageMembers = 'Program Team';
$lang->program->PGMParentBudget = 'Parent program surplus budget:';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
$lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
$lang->program->PGMBeginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
$lang->program->PGMEndLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
$lang->program->PGMCloseErrorMessage = 'There are subprograms or projects that are not closed';
$lang->project->PGMCommon = 'Program';
$lang->project->PGMIndex = 'Home';
$lang->project->PGMCreate = 'Create Program';
$lang->project->PGMCreateGuide = 'Select Template';
$lang->project->PGMEdit = 'Edit Program';
$lang->project->PGMBrowse = 'Programs';
$lang->project->PGMProduct = 'Products';
$lang->project->PGMProject = 'Program Project List';
$lang->project->PGMAll = 'All Programs';
$lang->project->PGMStart = 'Start';
$lang->project->PGMFinish = 'Finish';
$lang->project->PGMSuspend = 'Suspend';
$lang->project->PGMDelete = 'Delete';
$lang->project->PGMClose = 'Close';
$lang->project->PGMActivate = 'Activate';
$lang->project->PGMExport = 'Export';
$lang->project->PGMStakeholder = 'Stakeholder';
$lang->project->createStakeholder = 'Create Stakeholder';
$lang->project->unlinkStakeholder = 'Unlink Stakeholder';
$lang->project->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
$lang->project->unlink = 'Unlink';
$lang->project->morePGM = 'More Programs';
$lang->project->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->project->stakeholderType = 'Stakeholder type';
$lang->project->isStakeholderKey = 'Key stakeholder';
$lang->project->importStakeholder = 'Import project';
$lang->project->PGMManageMembers = 'Program Team';
$lang->project->PGMParentBudget = 'Parent project surplus budget:';
$lang->project->beyondParentBudget = 'The remaining budget of the owned project has been exceeded.';
$lang->project->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
$lang->project->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
$lang->project->PGMBeginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
$lang->project->PGMEndLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
$lang->project->PGMCloseErrorMessage = 'There are subprojects or projects that are not closed';
$lang->program->stakeholderTypeList['inside'] = 'Inside';
$lang->program->stakeholderTypeList['outside'] = 'Outside';
$lang->project->stakeholderTypeList['inside'] = 'Inside';
$lang->project->stakeholderTypeList['outside'] = 'Outside';
/* Fields. */
$lang->program->PGMName = 'Name';
$lang->program->PGMTemplate = 'Template';
$lang->program->PGMCategory = 'Type';
$lang->program->PGMDesc = 'Description';
$lang->program->PGMCopy = 'Copy Program';
$lang->program->PGMStatus = 'Status';
$lang->program->PGMPM = 'Manager';
$lang->program->PGMBudget = 'Budget';
$lang->program->PGMProgress = 'Progress';
$lang->program->PGMChildren = 'Child';
$lang->program->PGMParent = 'Parent';
$lang->program->PGMAllInput = 'Input';
$lang->program->PGMTeamCount = 'Team';
$lang->program->PGMLongTime = 'Long-Term';
$lang->project->PGMName = 'Name';
$lang->project->PGMTemplate = 'Template';
$lang->project->PGMCategory = 'Type';
$lang->project->PGMDesc = 'Description';
$lang->project->PGMCopy = 'Copy Program';
$lang->project->PGMStatus = 'Status';
$lang->project->PGMPM = 'Manager';
$lang->project->PGMBudget = 'Budget';
$lang->project->PGMProgress = 'Progress';
$lang->project->PGMChildren = 'Child';
$lang->project->PGMParent = 'Parent';
$lang->project->PGMAllInput = 'Input';
$lang->project->PGMTeamCount = 'Team';
$lang->project->PGMLongTime = 'Long-Term';
$lang->program->noPGM = 'No program.';
$lang->program->PGMShowClosed = 'Closed programs.';
$lang->program->PGMTips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
$lang->project->noPGM = 'No project.';
$lang->project->PGMShowClosed = 'Closed projects.';
$lang->project->PGMTips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
$lang->program->PGMAclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
$lang->program->PGMAclList['open'] = "Default(user who can visit the program can access it)";
$lang->project->PGMAclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
$lang->project->PGMAclList['open'] = "Default(user who can visit the project can access it)";
$lang->program->subPGMAclList['private'] = "Private (accessible to this program set leader and stakeholders, stakeholders can follow up maintenance)";
$lang->program->subPGMAclList['open'] = "Default(user who can visit the program can access it)";
$lang->program->subPGMAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
$lang->project->subPGMAclList['private'] = "Private (accessible to this project set leader and stakeholders, stakeholders can follow up maintenance)";
$lang->project->subPGMAclList['open'] = "Default(user who can visit the project can access it)";
$lang->project->subPGMAclList['project'] = "Open within the project (accessible to all higher-level project directors and affiliates, as well as to this project director and affiliates)";
$lang->program->PGMAuthList['extend'] = 'Inherit(program privileges and company privileges)';
$lang->program->PGMAuthList['reset'] = 'Reset(program privileges only)';
$lang->project->PGMAuthList['extend'] = 'Inherit(project privileges and company privileges)';
$lang->project->PGMAuthList['reset'] = 'Reset(project privileges only)';
$lang->program->PGMFeatureBar['all'] = 'All';
$lang->project->PGMFeatureBar['all'] = 'All';
+261 -261
View File
@@ -1,294 +1,294 @@
<?php
/* Actions. */
$lang->program->createGuide = 'Select Template';
$lang->program->PRJIndex = 'Dashboard';
$lang->program->PRJHome = 'Home';
$lang->program->PRJCreate = 'Create Project';
$lang->program->PRJEdit = 'Edit';
$lang->program->PRJBatchEdit = 'Batch Edit Projects';
$lang->program->PRJView = 'Project View';
$lang->program->batchEdit = 'Batch Edit';
$lang->program->PRJBrowse = 'Projects';
$lang->program->PRJAll = 'All';
$lang->program->PRJStart = 'Start';
$lang->program->PRJFinish = 'Finish';
$lang->program->PRJSuspend = 'Suspend';
$lang->program->PRJDelete = 'Delete';
$lang->program->PRJClose = 'Close';
$lang->program->PRJActivate = 'Activate';
$lang->program->PRJGroup = 'Privilege Group';
$lang->program->PRJCreateGroup = 'Create Group';
$lang->program->PRJEditGroup = 'Edit Group';
$lang->program->PRJCopyGroup = 'Copy Group';
$lang->program->PRJManageView = 'Manage View';
$lang->program->PRJManagePriv = 'Manage Privilege';
$lang->program->PRJManageMembers = 'Manage Team';
$lang->program->export = 'Export';
$lang->program->addProduct = 'Add product';
$lang->program->PRJManageGroupMember = 'Manage Group';
$lang->program->PRJModuleSetting = 'List Settings';
$lang->program->PRJModuleOpen = 'Program Name';
$lang->program->PRJUpdateOrder = 'Order';
$lang->program->PRJSort = 'Order';
$lang->program->PRJWhitelist = 'Project Whitelist';
$lang->program->PRJAddWhitelist = 'Project Add Whitelist';
$lang->program->unbindWhielist = 'Project Remove Whitelist';
$lang->program->PRJManageProducts = 'Manage Products';
$lang->program->view = 'Program Detail';
$lang->program->copyTitle = 'Please select an project to copy';
$lang->program->errorSameProducts = 'Project cannot be associated with multiple identical products.';
$lang->program->errorNoProducts = 'At least one product is associated';
$lang->program->copyNoProject = 'There are no items available to copy.';
$lang->project->createGuide = 'Select Template';
$lang->project->PRJIndex = 'Dashboard';
$lang->project->PRJHome = 'Home';
$lang->project->PRJCreate = 'Create Project';
$lang->project->PRJEdit = 'Edit';
$lang->project->PRJBatchEdit = 'Batch Edit Projects';
$lang->project->PRJView = 'Project View';
$lang->project->batchEdit = 'Batch Edit';
$lang->project->PRJBrowse = 'Projects';
$lang->project->PRJAll = 'All';
$lang->project->PRJStart = 'Start';
$lang->project->PRJFinish = 'Finish';
$lang->project->PRJSuspend = 'Suspend';
$lang->project->PRJDelete = 'Delete';
$lang->project->PRJClose = 'Close';
$lang->project->PRJActivate = 'Activate';
$lang->project->PRJGroup = 'Privilege Group';
$lang->project->PRJCreateGroup = 'Create Group';
$lang->project->PRJEditGroup = 'Edit Group';
$lang->project->PRJCopyGroup = 'Copy Group';
$lang->project->PRJManageView = 'Manage View';
$lang->project->PRJManagePriv = 'Manage Privilege';
$lang->project->PRJManageMembers = 'Manage Team';
$lang->project->export = 'Export';
$lang->project->addProduct = 'Add product';
$lang->project->PRJManageGroupMember = 'Manage Group';
$lang->project->PRJModuleSetting = 'List Settings';
$lang->project->PRJModuleOpen = 'Program Name';
$lang->project->PRJUpdateOrder = 'Order';
$lang->project->PRJSort = 'Order';
$lang->project->PRJWhitelist = 'Project Whitelist';
$lang->project->PRJAddWhitelist = 'Project Add Whitelist';
$lang->project->unbindWhielist = 'Project Remove Whitelist';
$lang->project->PRJManageProducts = 'Manage Products';
$lang->project->view = 'Program Detail';
$lang->project->copyTitle = 'Please select an project to copy';
$lang->project->errorSameProducts = 'Project cannot be associated with multiple identical products.';
$lang->project->errorNoProducts = 'At least one product is associated';
$lang->project->copyNoProject = 'There are no items available to copy.';
$lang->project->searchByName = 'Enter the project name to retrieve';
/* Fields. */
$lang->program->common = 'Program';
$lang->program->project = 'Project';
$lang->program->stage = 'Stage';
$lang->program->PM = 'Manager';
$lang->program->PRJName = 'Name';
$lang->program->PRJCategory = 'Category';
$lang->program->PRJDesc = 'Description';
$lang->program->PRJCode = 'Code';
$lang->program->PRJCopy = 'Copy';
$lang->program->begin = 'Begin';
$lang->program->end = 'End';
$lang->program->PRJStatus = 'Status';
$lang->program->PRJPM = 'Manager';
$lang->program->PRJBudget = 'Budget';
$lang->program->PRJTemplate = 'Template';
$lang->program->PRJEstimate = 'Estimates';
$lang->program->PRJConsume = 'Cost';
$lang->program->PRJSurplus = 'Left';
$lang->program->PRJProgress = 'Progress';
$lang->program->dateRange = 'Duration';
$lang->program->to = ' to ';
$lang->program->realEnd = 'Actual End';
$lang->program->realBegan = 'Actual Began';
$lang->program->bygrid = 'Kanban';
$lang->program->bylist = 'List';
$lang->program->mine = 'My';
$lang->program->setPlanduration = 'Set Duration';
$lang->program->auth = 'Access Control';
$lang->program->durationEstimation = 'Estimated Workload';
$lang->program->teamCount = 'Man';
$lang->program->leftStories = 'Left Stories';
$lang->program->leftTasks = 'Left Tasks';
$lang->program->leftBugs = 'Left Bugs';
$lang->program->PRJChildren = 'Child Project';
$lang->program->PRJParent = 'Parent Project';
$lang->program->allStories = 'All Stories';
$lang->program->doneStories = 'Finished Stories';
$lang->program->allInput = 'Total Input';
$lang->program->weekly = 'Program Weekly';
$lang->program->pv = 'PV';
$lang->program->ev = 'EV';
$lang->program->sv = 'SV%';
$lang->program->ac = 'AC';
$lang->program->cv = 'CV%';
$lang->program->PRJTeamCount = 'Team';
$lang->program->PRJLongTime = 'Long-Term Project';
$lang->program->future = 'TBD';
$lang->program->morePRJ = 'More Projects';
$lang->project->common = 'Program';
$lang->project->project = 'Project';
$lang->project->stage = 'Stage';
$lang->project->PM = 'Manager';
$lang->project->PRJName = 'Name';
$lang->project->PRJCategory = 'Category';
$lang->project->PRJDesc = 'Description';
$lang->project->PRJCode = 'Code';
$lang->project->PRJCopy = 'Copy';
$lang->project->begin = 'Begin';
$lang->project->end = 'End';
$lang->project->PRJStatus = 'Status';
$lang->project->PRJPM = 'Manager';
$lang->project->PRJBudget = 'Budget';
$lang->project->PRJTemplate = 'Template';
$lang->project->PRJEstimate = 'Estimates';
$lang->project->PRJConsume = 'Cost';
$lang->project->PRJSurplus = 'Left';
$lang->project->PRJProgress = 'Progress';
$lang->project->dateRange = 'Duration';
$lang->project->to = ' to ';
$lang->project->realEnd = 'Actual End';
$lang->project->realBegan = 'Actual Began';
$lang->project->bygrid = 'Kanban';
$lang->project->bylist = 'List';
$lang->project->mine = 'My';
$lang->project->setPlanduration = 'Set Duration';
$lang->project->auth = 'Access Control';
$lang->project->durationEstimation = 'Estimated Workload';
$lang->project->teamCount = 'Man';
$lang->project->leftStories = 'Left Stories';
$lang->project->leftTasks = 'Left Tasks';
$lang->project->leftBugs = 'Left Bugs';
$lang->project->PRJChildren = 'Child Project';
$lang->project->PRJParent = 'Parent Project';
$lang->project->allStories = 'All Stories';
$lang->project->doneStories = 'Finished Stories';
$lang->project->allInput = 'Total Input';
$lang->project->weekly = 'Program Weekly';
$lang->project->pv = 'PV';
$lang->project->ev = 'EV';
$lang->project->sv = 'SV%';
$lang->project->ac = 'AC';
$lang->project->cv = 'CV%';
$lang->project->PRJTeamCount = 'Team';
$lang->project->PRJLongTime = 'Long-Term Project';
$lang->project->future = 'TBD';
$lang->project->morePRJ = 'More Projects';
$lang->program->productNotEmpty = 'Please link products or create products.';
$lang->program->existProductName = 'Product name already exists.';
$lang->program->changeProgram = '%s > Change program';
$lang->program->changeProgramTip = 'After modifying the program set, the products linked with the project will also modify the program set to which it belongs. Please confirm whether to modify it.';
$lang->program->linkedProjectsTip = 'Linked projects are as follows';
$lang->program->multiLinkedProductsTip = 'The following products linked to this project are also linked to other projects, please unlink before proceeding.';
$lang->project->productNotEmpty = 'Please link products or create products.';
$lang->project->existProductName = 'Product name already exists.';
$lang->project->changeProgram = '%s > Change project';
$lang->project->changeProgramTip = 'After modifying the project set, the products linked with the project will also modify the project set to which it belongs. Please confirm whether to modify it.';
$lang->project->linkedProjectsTip = 'Linked projects are as follows';
$lang->project->multiLinkedProductsTip = 'The following products linked to this project are also linked to other projects, please unlink before proceeding.';
$lang->program->tenThousand = '';
$lang->project->tenThousand = '';
$lang->program->unitList['CNY'] = 'RMB';
$lang->program->unitList['USD'] = 'USD';
$lang->program->unitList['HKD'] = 'HKD';
$lang->program->unitList['NTD'] = 'New Taiwan';
$lang->program->unitList['EUR'] = 'Euro';
$lang->program->unitList['DEM'] = 'Deutsche Mark';
$lang->program->unitList['CHF'] = 'Swiss Franc';
$lang->program->unitList['FRF'] = 'French Franc';
$lang->program->unitList['GBP'] = 'Pound';
$lang->program->unitList['NLG'] = 'Florin';
$lang->program->unitList['CAD'] = 'Canadian';
$lang->program->unitList['RUR'] = 'Russian Ruble';
$lang->program->unitList['INR'] = 'Indian';
$lang->program->unitList['AUD'] = 'Australian';
$lang->program->unitList['NZD'] = 'New Zealand';
$lang->program->unitList['THB'] = 'Thai Baht';
$lang->program->unitList['SGD'] = 'Singapore';
$lang->project->unitList['CNY'] = 'RMB';
$lang->project->unitList['USD'] = 'USD';
$lang->project->unitList['HKD'] = 'HKD';
$lang->project->unitList['NTD'] = 'New Taiwan';
$lang->project->unitList['EUR'] = 'Euro';
$lang->project->unitList['DEM'] = 'Deutsche Mark';
$lang->project->unitList['CHF'] = 'Swiss Franc';
$lang->project->unitList['FRF'] = 'French Franc';
$lang->project->unitList['GBP'] = 'Pound';
$lang->project->unitList['NLG'] = 'Florin';
$lang->project->unitList['CAD'] = 'Canadian';
$lang->project->unitList['RUR'] = 'Russian Ruble';
$lang->project->unitList['INR'] = 'Indian';
$lang->project->unitList['AUD'] = 'Australian';
$lang->project->unitList['NZD'] = 'New Zealand';
$lang->project->unitList['THB'] = 'Thai Baht';
$lang->project->unitList['SGD'] = 'Singapore';
$lang->program->currencySymbol['CNY'] = '¥';
$lang->program->currencySymbol['USD'] = '$';
$lang->program->currencySymbol['HKD'] = 'HK$';
$lang->program->currencySymbol['NTD'] = 'NT$';
$lang->program->currencySymbol['EUR'] = '€';
$lang->program->currencySymbol['DEM'] = 'DEM';
$lang->program->currencySymbol['CHF'] = '₣';
$lang->program->currencySymbol['FRF'] = '₣';
$lang->program->currencySymbol['GBP'] = '£';
$lang->program->currencySymbol['NLG'] = 'ƒ';
$lang->program->currencySymbol['CAD'] = '$';
$lang->program->currencySymbol['RUR'] = '₽';
$lang->program->currencySymbol['INR'] = '₹';
$lang->program->currencySymbol['AUD'] = 'A$';
$lang->program->currencySymbol['NZD'] = 'NZ$';
$lang->program->currencySymbol['THB'] = '฿';
$lang->program->currencySymbol['SGD'] = 'S$';
$lang->project->currencySymbol['CNY'] = '¥';
$lang->project->currencySymbol['USD'] = '$';
$lang->project->currencySymbol['HKD'] = 'HK$';
$lang->project->currencySymbol['NTD'] = 'NT$';
$lang->project->currencySymbol['EUR'] = '€';
$lang->project->currencySymbol['DEM'] = 'DEM';
$lang->project->currencySymbol['CHF'] = '₣';
$lang->project->currencySymbol['FRF'] = '₣';
$lang->project->currencySymbol['GBP'] = '£';
$lang->project->currencySymbol['NLG'] = 'ƒ';
$lang->project->currencySymbol['CAD'] = '$';
$lang->project->currencySymbol['RUR'] = '₽';
$lang->project->currencySymbol['INR'] = '₹';
$lang->project->currencySymbol['AUD'] = 'A$';
$lang->project->currencySymbol['NZD'] = 'NZ$';
$lang->project->currencySymbol['THB'] = '฿';
$lang->project->currencySymbol['SGD'] = 'S$';
$lang->program->modelList['scrum'] = "Scrum";
$lang->program->modelList['waterfall'] = "CMMI";
$lang->project->modelList['scrum'] = "Scrum";
$lang->project->modelList['waterfall'] = "CMMI";
$lang->program->PRJCategoryList['single'] = "Single product";
$lang->program->PRJCategoryList['multiple'] = "Multiple products";
$lang->project->PRJCategoryList['single'] = "Single product";
$lang->project->PRJCategoryList['multiple'] = "Multiple products";
$lang->program->PRJLifeTimeList['short'] = "Short-Term";
$lang->program->PRJLifeTimeList['long'] = "Long-Term";
$lang->program->PRJLifeTimeList['ops'] = "DevOps";
$lang->project->PRJLifeTimeList['short'] = "Short-Term";
$lang->project->PRJLifeTimeList['long'] = "Long-Term";
$lang->project->PRJLifeTimeList['ops'] = "DevOps";
$lang->program->featureBar['all'] = 'All';
$lang->program->featureBar['doing'] = 'Going';
$lang->program->featureBar['wait'] = 'Waiting';
$lang->program->featureBar['suspended'] = 'Suspended';
$lang->program->featureBar['closed'] = 'Closed';
$lang->project->featureBar['all'] = 'All';
$lang->project->featureBar['doing'] = 'Going';
$lang->project->featureBar['wait'] = 'Waiting';
$lang->project->featureBar['suspended'] = 'Suspended';
$lang->project->featureBar['closed'] = 'Closed';
$lang->program->PRJAclList['private'] = 'Private (For team members and stakeholders only)';
$lang->program->PRJAclList['open'] = "Open (accessible with project view permissions)";
$lang->project->PRJAclList['private'] = 'Private (For team members and stakeholders only)';
$lang->project->PRJAclList['open'] = "Open (accessible with project view permissions)";
$lang->program->PRJAcls['private'] = 'Private';
$lang->program->PRJAcls['open'] = "Open";
$lang->project->PRJAcls['private'] = 'Private';
$lang->project->PRJAcls['open'] = "Open";
$lang->program->PGMPRJAclList['private'] = "Private (For team members and stakeholders only)";
$lang->program->PGMPRJAclList['program'] = "Public within the project set (accessible to all higher-level project set leaders and stakeholders, members of this project team and stakeholders)";
$lang->program->PGMPRJAclList['open'] = "Full disclosure (accessible with project view permissions)";
$lang->project->PGMPRJAclList['private'] = "Private (For team members and stakeholders only)";
$lang->project->PGMPRJAclList['project'] = "Public within the project set (accessible to all higher-level project set leaders and stakeholders, members of this project team and stakeholders)";
$lang->project->PGMPRJAclList['open'] = "Full disclosure (accessible with project view permissions)";
$lang->program->PGMPRJAcls['private'] = "Private";
$lang->program->PGMPRJAcls['program'] = "Public within the project set";
$lang->program->PGMPRJAcls['open'] = "Full disclosure";
$lang->project->PGMPRJAcls['private'] = "Private";
$lang->project->PGMPRJAcls['project'] = "Public within the project set";
$lang->project->PGMPRJAcls['open'] = "Full disclosure";
$lang->program->PRJAuthList['extend'] = 'Inherit (system privilege and project privilege)';
$lang->program->PRJAuthList['reset'] = 'Reset (project privilege only)';
$lang->project->PRJAuthList['extend'] = 'Inherit (system privilege and project privilege)';
$lang->project->PRJAuthList['reset'] = 'Reset (project privilege only)';
$lang->program->statusList['wait'] = 'Waiting';
$lang->program->statusList['doing'] = 'Doing';
$lang->program->statusList['suspended'] = 'Suspended';
$lang->program->statusList['closed'] = 'Closed';
$lang->project->statusList['wait'] = 'Waiting';
$lang->project->statusList['doing'] = 'Doing';
$lang->project->statusList['suspended'] = 'Suspended';
$lang->project->statusList['closed'] = 'Closed';
$lang->program->endList[31] = 'One month';
$lang->program->endList[93] = 'Trimester';
$lang->program->endList[186] = 'Half yearly';
$lang->program->endList[365] = 'One year';
$lang->program->endList[999] = 'Longtime';
$lang->project->endList[31] = 'One month';
$lang->project->endList[93] = 'Trimester';
$lang->project->endList[186] = 'Half yearly';
$lang->project->endList[365] = 'One year';
$lang->project->endList[999] = 'Longtime';
$lang->program->noPRJ = 'No project.';
$lang->program->accessDenied = 'Access denied!';
$lang->program->chooseProgramType = 'Select the project management model';
$lang->program->nextStep = 'Next step';
$lang->program->hoursUnit = '%s hours';
$lang->program->membersUnit = '%s men';
$lang->program->lastIteration = 'Recent iterations';
$lang->program->ongoingStage = 'Ongoing stage';
$lang->program->scrum = 'Scrum';
$lang->program->waterfall = 'CMMI';
$lang->program->waterfallTitle = 'CMMI';
$lang->program->cannotCreateChild = 'It is not empty, so you cannot add a child. You can add a parent for it, and then create a child.';
$lang->program->hasChildren = 'It has child programs or projects. You cannot delete it.';
$lang->program->confirmDelete = "Do you want to delete [%s]?";
$lang->program->emptyPM = 'No manager';
$lang->program->cannotChangeToCat = "It is not empty, so you cannot change it to a parent.";
$lang->program->cannotCancelCat = "It has child projects, so you cannot unmark the parent.";
$lang->program->parentBeginEnd = "Parent begin&end date: %s ~ %s";
$lang->program->childLongTime = "If a child as long-term projects, the parent should be long-term too.";
$lang->program->readjustTime = 'Change the project begin&end date.';
$lang->program->notAllowRemoveProducts = 'The story of this product is linked with the project. Unlink it before doing any action.';
$lang->project->noPRJ = 'No project.';
$lang->project->accessDenied = 'Access denied!';
$lang->project->chooseProgramType = 'Select the project management model';
$lang->project->nextStep = 'Next step';
$lang->project->hoursUnit = '%s hours';
$lang->project->membersUnit = '%s men';
$lang->project->lastIteration = 'Recent iterations';
$lang->project->ongoingStage = 'Ongoing stage';
$lang->project->scrum = 'Scrum';
$lang->project->waterfall = 'CMMI';
$lang->project->waterfallTitle = 'CMMI';
$lang->project->cannotCreateChild = 'It is not empty, so you cannot add a child. You can add a parent for it, and then create a child.';
$lang->project->hasChildren = 'It has child projects or projects. You cannot delete it.';
$lang->project->confirmDelete = "Do you want to delete [%s]?";
$lang->project->emptyPM = 'No manager';
$lang->project->cannotChangeToCat = "It is not empty, so you cannot change it to a parent.";
$lang->project->cannotCancelCat = "It has child projects, so you cannot unmark the parent.";
$lang->project->parentBeginEnd = "Parent begin&end date: %s ~ %s";
$lang->project->childLongTime = "If a child as long-term projects, the parent should be long-term too.";
$lang->project->readjustTime = 'Change the project begin&end date.';
$lang->project->notAllowRemoveProducts = 'The story of this product is linked with the project. Unlink it before doing any action.';
$lang->program->PRJProgramTitle['0'] = 'Hide';
$lang->program->PRJProgramTitle['base'] = 'Base-level program only';
$lang->program->PRJProgramTitle['end'] = 'End-level program only';
$lang->project->PRJProgramTitle['0'] = 'Hide';
$lang->project->PRJProgramTitle['base'] = 'Base-level project only';
$lang->project->PRJProgramTitle['end'] = 'End-level project only';
$lang->program->PRJAccessDenied = 'Access denied to this program';
$lang->program->PRJChooseProgramType = 'Select management type';
$lang->program->scrumTitle = 'Agile Development Management';
$lang->program->PRJCannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
$lang->program->PRJHasChildren = 'This project has a child project, so it cannot be deleted.';
$lang->program->PRJConfirmDelete = 'Do you want to delete this project?';
$lang->program->PRJCannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
$lang->program->PRJCannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
$lang->program->PRJParentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
$lang->program->PRJParentBudget = "The budget of the parent project: %s";
$lang->program->PRJBeginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
$lang->program->PRJEndGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
$lang->program->PRJBeginGreateChild = "The minimum start date of the project set: %s. The start date of the project cannot be less than the minimum start date of the program set.";
$lang->program->PRJEndLetterChild = "The maximum finish date for the project set: %s. The completion date of a project cannot be greater than the maximum completion date of the program set.";
$lang->program->PRJChildLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
$lang->project->PRJAccessDenied = 'Access denied to this project';
$lang->project->PRJChooseProgramType = 'Select management type';
$lang->project->scrumTitle = 'Agile Development Management';
$lang->project->PRJCannotCreateChild = 'The project has contents, so you cannot add a child project. You can create a parent project for this one and then add a child project for the parent project.';
$lang->project->PRJHasChildren = 'This project has a child project, so it cannot be deleted.';
$lang->project->PRJConfirmDelete = 'Do you want to delete this project?';
$lang->project->PRJCannotChangeToCat = "The project has contents, so you cannot it to a parent project.";
$lang->project->PRJCannotCancelCat = "There are child projects of this project. You cannot cancel the parent project mark.";
$lang->project->PRJParentBeginEnd = "The begin and end date of the parent project: %s ~ %s";
$lang->project->PRJParentBudget = "The budget of the parent project: %s";
$lang->project->PRJBeginLetterParent = "The begin date of the parent project: %s. It cannot be < the begin date of its parent project.";
$lang->project->PRJEndGreaterParent = "The end date of the parent project: %s. It cannot be > the end date of its parent project.";
$lang->project->PRJBeginGreateChild = "The minimum start date of the project set: %s. The start date of the project cannot be less than the minimum start date of the project set.";
$lang->project->PRJEndLetterChild = "The maximum finish date for the project set: %s. The completion date of a project cannot be greater than the maximum completion date of the project set.";
$lang->project->PRJChildLongTime = "There are long-term projects in the child project, and the parent project should also be a long-term project.";
/* Actions. */
$lang->program->PGMCommon = 'Program';
$lang->program->PGMIndex = 'Home';
$lang->program->PGMCreate = 'Create Program';
$lang->program->PGMCreateGuide = 'Select Template';
$lang->program->PGMEdit = 'Edit Program';
$lang->program->PGMBrowse = 'Programs';
$lang->program->PGMProduct = 'Products';
$lang->program->PGMProject = 'Program Project List';
$lang->program->PGMAll = 'All Programs';
$lang->program->PGMStart = 'Start';
$lang->program->PGMFinish = 'Finish';
$lang->program->PGMSuspend = 'Suspend';
$lang->program->PGMDelete = 'Delete';
$lang->program->PGMClose = 'Close';
$lang->program->PGMActivate = 'Activate';
$lang->program->PGMExport = 'Export';
$lang->program->PGMStakeholder = 'Stakeholder';
$lang->program->createStakeholder = 'Create Stakeholder';
$lang->program->unlinkStakeholder = 'Unlink Stakeholder';
$lang->program->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
$lang->program->unlink = 'Unlink';
$lang->program->morePGM = 'More Programs';
$lang->program->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->program->stakeholderType = 'Stakeholder type';
$lang->program->isStakeholderKey = 'Key stakeholder';
$lang->program->importStakeholder = 'Import program';
$lang->program->PGMManageMembers = 'Program Team';
$lang->program->PGMParentBudget = 'Parent program surplus budget:';
$lang->program->beyondParentBudget = 'The remaining budget of the owned program has been exceeded.';
$lang->program->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
$lang->program->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
$lang->program->PGMBeginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
$lang->program->PGMEndLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
$lang->program->PGMCloseErrorMessage = 'There are subprograms or projects that are not closed';
$lang->project->PGMCommon = 'Program';
$lang->project->PGMIndex = 'Home';
$lang->project->PGMCreate = 'Create Program';
$lang->project->PGMCreateGuide = 'Select Template';
$lang->project->PGMEdit = 'Edit Program';
$lang->project->PGMBrowse = 'Programs';
$lang->project->PGMProduct = 'Products';
$lang->project->PGMProject = 'Program Project List';
$lang->project->PGMAll = 'All Programs';
$lang->project->PGMStart = 'Start';
$lang->project->PGMFinish = 'Finish';
$lang->project->PGMSuspend = 'Suspend';
$lang->project->PGMDelete = 'Delete';
$lang->project->PGMClose = 'Close';
$lang->project->PGMActivate = 'Activate';
$lang->project->PGMExport = 'Export';
$lang->project->PGMStakeholder = 'Stakeholder';
$lang->project->createStakeholder = 'Create Stakeholder';
$lang->project->unlinkStakeholder = 'Unlink Stakeholder';
$lang->project->batchUnlinkStakeholders = 'Batch Remove Stakeholder';
$lang->project->unlink = 'Unlink';
$lang->project->morePGM = 'More Programs';
$lang->project->confirmBatchUnlink = "Do you want to batch unlink these stakeholders?";
$lang->project->stakeholderType = 'Stakeholder type';
$lang->project->isStakeholderKey = 'Key stakeholder';
$lang->project->importStakeholder = 'Import project';
$lang->project->PGMManageMembers = 'Program Team';
$lang->project->PGMParentBudget = 'Parent project surplus budget:';
$lang->project->beyondParentBudget = 'The remaining budget of the owned project has been exceeded.';
$lang->project->PGMBeginLetterParent = "Parent begin date: %s, begin date should be > = parent begin date.";
$lang->project->PGMEndGreaterParent = "Parent end date: %s, end date should be < = parent end date.";
$lang->project->PGMBeginGreateChild = "Child earliest begin: %s, parent begin date < = child earliest begin date.";
$lang->project->PGMEndLetterChild = "Child latest end: %s, parent end date > = child latest end date.";
$lang->project->PGMCloseErrorMessage = 'There are subprojects or projects that are not closed';
$lang->program->stakeholderTypeList['inside'] = 'Inside';
$lang->program->stakeholderTypeList['outside'] = 'Outside';
$lang->project->stakeholderTypeList['inside'] = 'Inside';
$lang->project->stakeholderTypeList['outside'] = 'Outside';
/* Fields. */
$lang->program->PGMName = 'Name';
$lang->program->PGMTemplate = 'Template';
$lang->program->PGMCategory = 'Type';
$lang->program->PGMDesc = 'Description';
$lang->program->PGMCopy = 'Copy Program';
$lang->program->PGMStatus = 'Status';
$lang->program->PGMPM = 'Manager';
$lang->program->PGMBudget = 'Budget';
$lang->program->PGMProgress = 'Progress';
$lang->program->PGMChildren = 'Child';
$lang->program->PGMParent = 'Parent';
$lang->program->PGMAllInput = 'Input';
$lang->program->PGMTeamCount = 'Team';
$lang->program->PGMLongTime = 'Long-Term';
$lang->project->PGMName = 'Name';
$lang->project->PGMTemplate = 'Template';
$lang->project->PGMCategory = 'Type';
$lang->project->PGMDesc = 'Description';
$lang->project->PGMCopy = 'Copy Program';
$lang->project->PGMStatus = 'Status';
$lang->project->PGMPM = 'Manager';
$lang->project->PGMBudget = 'Budget';
$lang->project->PGMProgress = 'Progress';
$lang->project->PGMChildren = 'Child';
$lang->project->PGMParent = 'Parent';
$lang->project->PGMAllInput = 'Input';
$lang->project->PGMTeamCount = 'Team';
$lang->project->PGMLongTime = 'Long-Term';
$lang->program->noPGM = 'No program.';
$lang->program->PGMShowClosed = 'Closed programs.';
$lang->program->PGMTips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
$lang->project->noPGM = 'No project.';
$lang->project->PGMShowClosed = 'Closed projects.';
$lang->project->PGMTips = 'If a parent item set is selected, products under that parent item set can be associated. If no item set is selected, a product with the same name as the item is created by default and associated with that item.';
$lang->program->PGMAclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
$lang->program->PGMAclList['open'] = "Default(user who can visit the program can access it)";
$lang->project->PGMAclList['private'] = "Private (accessible to project portfolio holders and stakeholders, stakeholders can follow up maintenance)";
$lang->project->PGMAclList['open'] = "Default(user who can visit the project can access it)";
$lang->program->subPGMAclList['private'] = "Private (accessible to this program set leader and stakeholders, stakeholders can follow up maintenance)";
$lang->program->subPGMAclList['open'] = "Default(user who can visit the program can access it)";
$lang->program->subPGMAclList['program'] = "Open within the program (accessible to all higher-level program directors and affiliates, as well as to this program director and affiliates)";
$lang->project->subPGMAclList['private'] = "Private (accessible to this project set leader and stakeholders, stakeholders can follow up maintenance)";
$lang->project->subPGMAclList['open'] = "Default(user who can visit the project can access it)";
$lang->project->subPGMAclList['project'] = "Open within the project (accessible to all higher-level project directors and affiliates, as well as to this project director and affiliates)";
$lang->program->PGMAuthList['extend'] = 'Inherit(program privileges and company privileges)';
$lang->program->PGMAuthList['reset'] = 'Reset(program privileges only)';
$lang->project->PGMAuthList['extend'] = 'Inherit(project privileges and company privileges)';
$lang->project->PGMAuthList['reset'] = 'Reset(project privileges only)';
$lang->program->PGMFeatureBar['all'] = 'All';
$lang->project->PGMFeatureBar['all'] = 'All';
+196 -274
View File
@@ -1,294 +1,216 @@
<?php
/* Actions. */
$lang->program->createGuide = '选择项目模板';
$lang->program->PRJIndex = '项目仪表盘';
$lang->program->PRJHome = '项目主页';
$lang->program->PRJCreate = '创建项目';
$lang->program->PRJEdit = '编辑项目';
$lang->program->PRJBatchEdit = '批量编辑项目';
$lang->program->PRJView = '项目概况';
$lang->program->batchEdit = '批量编辑';
$lang->program->PRJBrowse = '项目列表';
$lang->program->PRJAll = '所有项目';
$lang->program->PRJStart = '启动项目';
$lang->program->PRJFinish = '完成项目';
$lang->program->PRJSuspend = '挂起项目';
$lang->program->PRJDelete = '删除项目';
$lang->program->PRJClose = '关闭项目';
$lang->program->PRJActivate = '激活项目';
$lang->program->PRJGroup = '项目权限分组';
$lang->program->PRJCreateGroup = '项目创建分组';
$lang->program->PRJEditGroup = '项目编辑分组';
$lang->program->PRJCopyGroup = '项目复制分组';
$lang->program->PRJManageView = '项目维护视野';
$lang->program->PRJManagePriv = '项目维护权限';
$lang->program->PRJManageMembers = '项目团队';
$lang->program->export = '导出';
$lang->program->addProduct = '新建产品';
$lang->program->PRJManageGroupMember = '维护分组用户';
$lang->program->PRJModuleSetting = '列表设置';
$lang->program->PRJModuleOpen = '显示项目集名';
$lang->program->PRJUpdateOrder = '排序';
$lang->program->PRJSort = '项目排序';
$lang->program->PRJWhitelist = '项目白名单';
$lang->program->PRJAddWhitelist = '项目添加白名单';
$lang->program->unbindWhielist = '项目删除白名单';
$lang->program->PRJManageProducts = '关联产品';
$lang->program->view = '项目集详情';
$lang->program->copyTitle = '请选择要复制的项目';
$lang->program->errorSameProducts = '项目不能关联多个相同的产品。';
$lang->program->errorNoProducts = '最少关联一个产品';
$lang->program->copyNoProject = '没有可用的项目来复制';
$lang->project->searchByName = '输入项目名称进行检索';
$lang->project->createGuide = '选择项目模板';
$lang->project->index = '项目仪表盘';
$lang->project->home = '项目主页';
$lang->project->create = '创建项目';
$lang->project->edit = '编辑项目';
$lang->project->batchEdit = '批量编辑项目';
$lang->project->view = '项目概况';
$lang->project->batchEdit = '批量编辑';
$lang->project->browse = '项目列表';
$lang->project->all = '所有项目';
$lang->project->start = '启动项目';
$lang->project->finish = '完成项目';
$lang->project->suspend = '挂起项目';
$lang->project->delete = '删除项目';
$lang->project->close = '关闭项目';
$lang->project->activate = '激活项目';
$lang->project->group = '项目权限分组';
$lang->project->createGroup = '项目创建分组';
$lang->project->editGroup = '项目编辑分组';
$lang->project->copyGroup = '项目复制分组';
$lang->project->manageView = '项目维护视野';
$lang->project->managePriv = '项目维护权限';
$lang->project->manageMembers = '项目团队';
$lang->project->export = '导出';
$lang->project->addProduct = '新建产品';
$lang->project->manageGroupMember = '维护分组用户';
$lang->project->moduleSetting = '列表设置';
$lang->project->moduleOpen = '显示项目集名';
$lang->project->updateOrder = '排序';
$lang->project->sort = '项目排序';
$lang->project->whitelist = '项目白名单';
$lang->project->addWhitelist = '项目添加白名单';
$lang->project->unbindWhielist = '项目删除白名单';
$lang->project->manageProducts = '关联产品';
$lang->project->view = '项目集详情';
$lang->project->copyTitle = '请选择要复制的项目';
$lang->project->errorSameProducts = '项目不能关联多个相同的产品。';
$lang->project->errorNoProducts = '最少关联一个产品';
$lang->project->copyNoProject = '没有可用的项目来复制';
$lang->project->searchByName = '输入项目名称进行检索';
/* Fields. */
$lang->program->common = '项目集';
$lang->program->project = '项目';
$lang->program->stage = '阶段';
$lang->program->PM = '负责人';
$lang->program->PRJName = '项目名称';
$lang->program->PRJCategory = '项目类型';
$lang->program->PRJDesc = '项目描述';
$lang->program->PRJCode = '项目代号';
$lang->program->PRJCopy = '复制项目';
$lang->program->begin = '计划开始';
$lang->program->end = '计划完成';
$lang->program->PRJStatus = '项目状态';
$lang->program->PRJPM = '项目负责人';
$lang->program->PRJBudget = '项目预算';
$lang->program->PRJTemplate = '项目模板';
$lang->program->PRJEstimate = '预计';
$lang->program->PRJConsume = '消耗';
$lang->program->PRJSurplus = '剩余';
$lang->program->PRJProgress = '进度';
$lang->program->dateRange = '起止日期';
$lang->program->to = '至';
$lang->program->realEnd = '实际完成日期';
$lang->program->realBegan = '实际开始日期';
$lang->program->bygrid = '看板';
$lang->program->bylist = '列表';
$lang->program->mine = '我参与的';
$lang->program->setPlanduration = '设置工期';
$lang->program->auth = '权限控制';
$lang->program->durationEstimation = '工作量估算';
$lang->program->teamCount = '人数';
$lang->program->leftStories = '剩余需求';
$lang->program->leftTasks = '剩余任务';
$lang->program->leftBugs = '剩余Bug';
$lang->program->PRJChildren = '子项目';
$lang->program->PRJParent = '父项目';
$lang->program->allStories = '总需求';
$lang->program->doneStories = '已完成';
$lang->program->allInput = '项目总投入';
$lang->program->weekly = '项目周报';
$lang->program->pv = 'PV';
$lang->program->ev = 'EV';
$lang->program->sv = 'SV%';
$lang->program->ac = 'AC';
$lang->program->cv = 'CV%';
$lang->program->PRJTeamCount = '项目成员';
$lang->program->PRJLongTime = '长期';
$lang->program->future = '待定';
$lang->program->morePRJ = '更多项目';
$lang->project->common = '项目集';
$lang->project->project = '项目';
$lang->project->stage = '阶段';
$lang->project->PM = '负责人';
$lang->project->name = '项目名称';
$lang->project->category = '项目类型';
$lang->project->desc = '项目描述';
$lang->project->code = '项目代号';
$lang->project->copy = '复制项目';
$lang->project->begin = '计划开始';
$lang->project->end = '计划完成';
$lang->project->status = '项目状态';
$lang->project->PM = '项目负责人';
$lang->project->budget = '项目预算';
$lang->project->template = '项目模板';
$lang->project->estimate = '预计';
$lang->project->consume = '消耗';
$lang->project->surplus = '剩余';
$lang->project->progress = '进度';
$lang->project->dateRange = '起止日期';
$lang->project->to = '至';
$lang->project->realEnd = '实际完成日期';
$lang->project->realBegan = '实际开始日期';
$lang->project->bygrid = '看板';
$lang->project->bylist = '列表';
$lang->project->mine = '我参与的';
$lang->project->acl = '访问控制';
$lang->project->setPlanduration = '设置工期';
$lang->project->auth = '权限控制';
$lang->project->durationEstimation = '工作量估算';
$lang->project->teamCount = '人数';
$lang->project->leftStories = '剩余需求';
$lang->project->leftTasks = '剩余任务';
$lang->project->leftBugs = '剩余Bug';
$lang->project->children = '子项目';
$lang->project->parent = '父项目';
$lang->project->allStories = '总需求';
$lang->project->doneStories = '已完成';
$lang->project->allInput = '项目总投入';
$lang->project->weekly = '项目周报';
$lang->project->pv = 'PV';
$lang->project->ev = 'EV';
$lang->project->sv = 'SV%';
$lang->project->ac = 'AC';
$lang->project->cv = 'CV%';
$lang->project->teamCount = '项目成员';
$lang->project->longTime = '长期';
$lang->project->future = '待定';
$lang->project->moreProject = '更多项目';
$lang->program->productNotEmpty = '请关联产品或创建产品。';
$lang->program->existProductName = '产品名称已存在。';
$lang->program->changeProgram = '%s > 修改项目集';
$lang->program->changeProgramTip = '修改项目集后,该项目关联的产品也会同时修改所属项目集,请确认是否修改。';
$lang->program->linkedProjectsTip = '关联的项目如下';
$lang->program->multiLinkedProductsTip = '该项目关联的如下产品还关联了其他项目,请取消关联后再操作';
$lang->project->productNotEmpty = '请关联产品或创建产品。';
$lang->project->existProductName = '产品名称已存在。';
$lang->project->changeProgram = '%s > 修改项目集';
$lang->project->changeProgramTip = '修改项目集后,该项目关联的产品也会同时修改所属项目集,请确认是否修改。';
$lang->project->linkedProjectsTip = '关联的项目如下';
$lang->project->multiLinkedProductsTip = '该项目关联的如下产品还关联了其他项目,请取消关联后再操作';
$lang->program->tenThousand = '万';
$lang->project->tenThousand = '万';
$lang->program->unitList['CNY'] = '人民币';
$lang->program->unitList['USD'] = '美元';
$lang->program->unitList['HKD'] = '港元';
$lang->program->unitList['NTD'] = '台元';
$lang->program->unitList['EUR'] = '欧元';
$lang->program->unitList['DEM'] = '马克';
$lang->program->unitList['CHF'] = '瑞士法郎';
$lang->program->unitList['FRF'] = '法国法郎';
$lang->program->unitList['GBP'] = '英镑';
$lang->program->unitList['NLG'] = '荷兰盾';
$lang->program->unitList['CAD'] = '加拿大元';
$lang->program->unitList['RUR'] = '卢布';
$lang->program->unitList['INR'] = '卢比';
$lang->program->unitList['AUD'] = '澳大利亚元';
$lang->program->unitList['NZD'] = '新西兰元';
$lang->program->unitList['THB'] = '泰国铢';
$lang->program->unitList['SGD'] = '新加坡元';
$lang->project->unitList['CNY'] = '人民币';
$lang->project->unitList['USD'] = '美元';
$lang->project->unitList['HKD'] = '港元';
$lang->project->unitList['NTD'] = '台元';
$lang->project->unitList['EUR'] = '欧元';
$lang->project->unitList['DEM'] = '马克';
$lang->project->unitList['CHF'] = '瑞士法郎';
$lang->project->unitList['FRF'] = '法国法郎';
$lang->project->unitList['GBP'] = '英镑';
$lang->project->unitList['NLG'] = '荷兰盾';
$lang->project->unitList['CAD'] = '加拿大元';
$lang->project->unitList['RUR'] = '卢布';
$lang->project->unitList['INR'] = '卢比';
$lang->project->unitList['AUD'] = '澳大利亚元';
$lang->project->unitList['NZD'] = '新西兰元';
$lang->project->unitList['THB'] = '泰国铢';
$lang->project->unitList['SGD'] = '新加坡元';
$lang->program->currencySymbol['CNY'] = '¥';
$lang->program->currencySymbol['USD'] = '$';
$lang->program->currencySymbol['HKD'] = 'HK$';
$lang->program->currencySymbol['NTD'] = 'NT$';
$lang->program->currencySymbol['EUR'] = '€';
$lang->program->currencySymbol['DEM'] = 'DEM';
$lang->program->currencySymbol['CHF'] = '₣';
$lang->program->currencySymbol['FRF'] = '₣';
$lang->program->currencySymbol['GBP'] = '£';
$lang->program->currencySymbol['NLG'] = 'ƒ';
$lang->program->currencySymbol['CAD'] = '$';
$lang->program->currencySymbol['RUR'] = '₽';
$lang->program->currencySymbol['INR'] = '₹';
$lang->program->currencySymbol['AUD'] = 'A$';
$lang->program->currencySymbol['NZD'] = 'NZ$';
$lang->program->currencySymbol['THB'] = '฿';
$lang->program->currencySymbol['SGD'] = 'S$';
$lang->project->currencySymbol['CNY'] = '¥';
$lang->project->currencySymbol['USD'] = '$';
$lang->project->currencySymbol['HKD'] = 'HK$';
$lang->project->currencySymbol['NTD'] = 'NT$';
$lang->project->currencySymbol['EUR'] = '€';
$lang->project->currencySymbol['DEM'] = 'DEM';
$lang->project->currencySymbol['CHF'] = '₣';
$lang->project->currencySymbol['FRF'] = '₣';
$lang->project->currencySymbol['GBP'] = '£';
$lang->project->currencySymbol['NLG'] = 'ƒ';
$lang->project->currencySymbol['CAD'] = '$';
$lang->project->currencySymbol['RUR'] = '₽';
$lang->project->currencySymbol['INR'] = '₹';
$lang->project->currencySymbol['AUD'] = 'A$';
$lang->project->currencySymbol['NZD'] = 'NZ$';
$lang->project->currencySymbol['THB'] = '฿';
$lang->project->currencySymbol['SGD'] = 'S$';
$lang->program->modelList['scrum'] = "Scrum";
$lang->program->modelList['waterfall'] = "瀑布";
$lang->project->modelList['scrum'] = "Scrum";
$lang->project->modelList['waterfall'] = "瀑布";
$lang->program->PRJCategoryList['single'] = "单产品项目";
$lang->program->PRJCategoryList['multiple'] = "多产品项目";
$lang->project->categoryList['single'] = "单产品项目";
$lang->project->categoryList['multiple'] = "多产品项目";
$lang->program->PRJLifeTimeList['short'] = "短期";
$lang->program->PRJLifeTimeList['long'] = "长期";
$lang->program->PRJLifeTimeList['ops'] = "运维";
$lang->project->lifeTimeList['short'] = "短期";
$lang->project->lifeTimeList['long'] = "长期";
$lang->project->lifeTimeList['ops'] = "运维";
$lang->program->featureBar['all'] = '所有';
$lang->program->featureBar['doing'] = '进行中';
$lang->program->featureBar['wait'] = '未开始';
$lang->program->featureBar['suspended'] = '已挂起';
$lang->program->featureBar['closed'] = '已关闭';
$lang->project->featureBar['all'] = '所有';
$lang->project->featureBar['doing'] = '进行中';
$lang->project->featureBar['wait'] = '未开始';
$lang->project->featureBar['suspended'] = '已挂起';
$lang->project->featureBar['closed'] = '已关闭';
$lang->program->PRJAclList['private'] = "私有(只有项目团队成员和干系人可访问)";
$lang->program->PRJAclList['open'] = "公开(有项目视图权限即可访问)";
$lang->project->aclList['private'] = "私有(只有项目团队成员和干系人可访问)";
$lang->project->aclList['open'] = "公开(有项目视图权限即可访问)";
$lang->program->PRJAcls['private'] = "私有";
$lang->program->PRJAcls['open'] = "公开";
$lang->project->acls['private'] = '私有';
$lang->project->acls['open'] = '公开';
$lang->program->PGMPRJAclList['private'] = "私有(只有项目团队成员和干系人可访问)";
$lang->program->PGMPRJAclList['program'] = "项目集内公开(所有上级项目集负责人和干系人,本项目团队成员和干系人可访问)";
$lang->program->PGMPRJAclList['open'] = "全部公开(有项目视图权限即可访问)";
$lang->project->authList['extend'] = '继承(取系统权限与项目权限的合集)';
$lang->project->authList['reset'] = '重新定义(只取项目权限)';
$lang->program->PGMPRJAcls['private'] = "私有";
$lang->program->PGMPRJAcls['program'] = "项目集内公开";
$lang->program->PGMPRJAcls['open'] = "全部公开";
$lang->project->statusList['wait'] = '未开始';
$lang->project->statusList['doing'] = '进行中';
$lang->project->statusList['suspended'] = '已挂起';
$lang->project->statusList['closed'] = '已关闭';
$lang->program->PRJAuthList['extend'] = '继承(取系统权限与项目权限的合集)';
$lang->program->PRJAuthList['reset'] = '重新定义(只取项目权限)';
$lang->project->endList[31] = '一个月';
$lang->project->endList[93] = '三个月';
$lang->project->endList[186] = '半年';
$lang->project->endList[365] = '一年';
$lang->project->endList[999] = '长期';
$lang->program->statusList['wait'] = '未开始';
$lang->program->statusList['doing'] = '进行中';
$lang->program->statusList['suspended'] = '已挂起';
$lang->program->statusList['closed'] = '已关闭';
$lang->project->empty = '暂时没有项目';
$lang->project->accessDenied = '您无权访问该项目!';
$lang->project->chooseProgramType = '选中项目管理模型';
$lang->project->nextStep = '下一步';
$lang->project->hoursUnit = '%s 工时';
$lang->project->membersUnit = '%s人';
$lang->project->lastIteration = '近期迭代';
$lang->project->ongoingStage = '进行中的阶段';
$lang->project->scrum = 'Scrum';
$lang->project->waterfall = '瀑布';
$lang->project->waterfallTitle = '瀑布式项目管理';
$lang->project->cannotCreateChild = '该项目已经有实际的内容,无法直接添加子项目。您可以为当前项目创建一个父项目,然后在新的父项目下面添加子项目。';
$lang->project->hasChildren = '该项目集有子项目集或项目存在,不能删除。';
$lang->project->confirmDelete = "您确定要删除吗?";
$lang->project->emptyPM = '暂无';
$lang->project->cannotChangeToCat = "该项目已经有实际的内容,无法修改为父项目";
$lang->project->cannotCancelCat = "该项目下已经有子项目,无法取消父项目标记";
$lang->project->parentBeginEnd = "父项目起止时间:%s ~ %s";
$lang->project->childLongTime = "子项目中有长期项目,父项目也应该是长期项目";
$lang->project->readjustTime = '重新调整项目起止时间';
$lang->project->notAllowRemoveProducts = '该产品中的需求已与项目进行了关联,请取消关联后再操作。';
$lang->program->endList[31] = '一个月';
$lang->program->endList[93] = '三个月';
$lang->program->endList[186] = '半年';
$lang->program->endList[365] = '一年';
$lang->program->endList[999] = '长期';
$lang->project->programTitle['0'] = '不显示';
$lang->project->programTitle['base'] = '只显示一级项目集';
$lang->project->programTitle['end'] = '只显示最后一级项目集';
$lang->program->noPRJ = '暂时没有项目';
$lang->program->accessDenied = '您无权访问该项目!';
$lang->program->chooseProgramType = '选中项目管理模型';
$lang->program->nextStep = '下一步';
$lang->program->hoursUnit = "%s 工时";
$lang->program->membersUnit = '%s人';
$lang->program->lastIteration = '近期迭代';
$lang->program->ongoingStage = '进行中的阶段';
$lang->program->scrum = 'Scrum';
$lang->program->waterfall = '瀑布';
$lang->program->waterfallTitle = '瀑布式项目管理';
$lang->program->cannotCreateChild = '该项目已经有实际的内容,无法直接添加子项目。您可以为当前项目创建一个父项目,然后在新的父项目下面添加子项目。';
$lang->program->hasChildren = '该项目集有子项目集或项目存在,不能删除。';
$lang->program->confirmDelete = "您确定要删除吗?";
$lang->program->emptyPM = '暂无';
$lang->program->cannotChangeToCat = "该项目已经有实际的内容,无法修改为父项目";
$lang->program->cannotCancelCat = "该项目下已经有子项目,无法取消父项目标记";
$lang->program->parentBeginEnd = "父项目起止时间:%s ~ %s";
$lang->program->childLongTime = "子项目中有长期项目,父项目也应该是长期项目";
$lang->program->readjustTime = '重新调整项目起止时间';
$lang->program->notAllowRemoveProducts = '该产品中的需求已与项目进行了关联,请取消关联后再操作。';
$lang->program->PRJProgramTitle['0'] = '不显示';
$lang->program->PRJProgramTitle['base'] = '只显示一级项目集';
$lang->program->PRJProgramTitle['end'] = '只显示最后一级项目集';
$lang->program->PRJAccessDenied = '您无权访问该项目!';
$lang->program->PRJChooseProgramType = '选择项目管理方式';
$lang->program->scrumTitle = '敏捷开发全流程项目管理';
$lang->program->PRJCannotCreateChild = '该项目已经有实际的内容,无法直接添加子项目。您可以为当前项目创建一个父项目,然后在新的父项目下面添加子项目。';
$lang->program->PRJHasChildren = '该项目有子项目存在,不能删除。';
$lang->program->PRJConfirmDelete = "您确定删除项目[%s]吗?";
$lang->program->PRJCannotChangeToCat = "该项目已经有实际的内容,无法修改为父项目";
$lang->program->PRJCannotCancelCat = "该项目下已经有子项目,无法取消父项目标记";
$lang->program->PRJParentBeginEnd = "父项目起止时间:%s ~ %s";
$lang->program->PRJParentBudget = "父项目预算:%s";
$lang->program->PRJBeginLetterParent = "父项目的开始日期:%s,开始日期不能小于父项目的开始日期";
$lang->program->PRJEndGreaterParent = "父项目的完成日期:%s,完成日期不能大于父项目的完成日期";
$lang->program->PRJBeginGreateChild = "项目集的最小开始日期:%s,项目的开始日期不能小于项目集的最小开始日期";
$lang->program->PRJEndLetterChild = "项目集的最大完成日期:%s,项目的完成日期不能大于项目集的最大完成日期";
$lang->program->PRJChildLongTime = "子项目中有长期项目,父项目也应该是长期项目";
/* Actions. */
$lang->program->PGMCommon = '项目集';
$lang->program->PGMIndex = '项目集主页';
$lang->program->PGMCreate = '添加项目集';
$lang->program->PGMCreateGuide = '选择项目模板';
$lang->program->PGMEdit = '编辑项目集';
$lang->program->PGMBrowse = '项目集列表';
$lang->program->PGMProduct = '产品列表';
$lang->program->PGMProject = '项目集项目列表';
$lang->program->PGMAll = '所有项目集';
$lang->program->PGMStart = '启动项目集';
$lang->program->PGMFinish = '完成项目集';
$lang->program->PGMSuspend = '挂起项目集';
$lang->program->PGMDelete = '删除项目集';
$lang->program->PGMClose = '关闭项目集';
$lang->program->PGMActivate = '激活项目集';
$lang->program->PGMExport = '导出';
$lang->program->PGMStakeholder = '干系人列表';
$lang->program->createStakeholder = '添加干系人';
$lang->program->unlinkStakeholder = '移除干系人';
$lang->program->batchUnlinkStakeholders = '批量移除干系人';
$lang->program->unlink = '移除';
$lang->program->morePGM = '更多项目集';
$lang->program->confirmBatchUnlink = "您确定要批量移除这些干系人吗?";
$lang->program->stakeholderType = '干系人类型';
$lang->program->isStakeholderKey = '关键干系人';
$lang->program->importStakeholder = '从父项目集导入';
$lang->program->PGMManageMembers = '项目集团队';
$lang->program->PGMParentBudget = '所属项目集剩余预算:';
$lang->program->beyondParentBudget = '已超出所属项目集的剩余预算';
$lang->program->PGMBeginLetterParent = "父项目集的开始日期:%s,开始日期不能小于父项目集的开始日期";
$lang->program->PGMEndGreaterParent = "父项目集的完成日期:%s,完成日期不能大于父项目集的完成日期";
$lang->program->PGMBeginGreateChild = "子项目集的最小开始日期:%s,父项目集的开始日期不能大于子项目集的最小开始日期";
$lang->program->PGMEndLetterChild = "子项目的最大完成日期:%s,父项目的完成日期不能小于子项目的最大完成日期";
$lang->program->PGMCloseErrorMessage = '存在子项目集或项目为未关闭状态';
$lang->program->stakeholderTypeList['inside'] = '内部';
$lang->program->stakeholderTypeList['outside'] = '外部';
/* Fields. */
$lang->program->PGMName = '项目集名称';
$lang->program->PGMTemplate = '项目集模板';
$lang->program->PGMCategory = '项目集类型';
$lang->program->PGMDesc = '项目集描述';
$lang->program->PGMCopy = '复制项目集';
$lang->program->PGMStatus = '状态';
$lang->program->PGMPM = '负责人';
$lang->program->PGMBudget = '预算';
$lang->program->PGMProgress = '项目进度';
$lang->program->PGMChildren = '子项目集';
$lang->program->PGMParent = '父项目集';
$lang->program->PGMAllInput = '项目集总投入';
$lang->program->PGMTeamCount = '项目集成员';
$lang->program->PGMLongTime = '长期项目';
$lang->program->noPGM = '暂时没有项目集';
$lang->program->PGMShowClosed = '显示已关闭';
$lang->program->PGMTips = '选择了父项目集,则可关联该父项目集下的产品。如果项目未选择任何项目集,则系统会默认创建一个和该项目同名的产品并关联该项目。';
$lang->program->PGMAclList['private'] = "私有(项目集负责人和干系人可访问,干系人可后续维护)";
$lang->program->PGMAclList['open'] = "公开(有项目集视图权限,即可访问)";
$lang->program->subPGMAclList['private'] = "私有(本项目集负责人和干系人可访问,干系人可后续维护)";
$lang->program->subPGMAclList['open'] = "全部公开(有项目集视图权限,即可访问)";
$lang->program->subPGMAclList['program'] = "项目集内公开 (所有上级项目集负责人和干系人、本项目集负责人和干系人可访问)";
$lang->program->PGMAuthList['extend'] = '继承(取项目权限与组织权限的并集)';
$lang->program->PGMAuthList['reset'] = '重新定义(只取项目权限)';
$lang->program->PGMFeatureBar['all'] = '所有';
$lang->project->accessDenied = '您无权访问该项目!';
$lang->project->chooseProgramType = '选择项目管理方式';
$lang->project->scrumTitle = '敏捷开发全流程项目管理';
$lang->project->cannotCreateChild = '该项目已经有实际的内容,无法直接添加子项目。您可以为当前项目创建一个父项目,然后在新的父项目下面添加子项目。';
$lang->project->hasChildren = '该项目有子项目存在,不能删除。';
$lang->project->confirmDelete = "您确定删除项目[%s]吗?";
$lang->project->cannotChangeToCat = "该项目已经有实际的内容,无法修改为父项目";
$lang->project->cannotCancelCat = "该项目下已经有子项目,无法取消父项目标记";
$lang->project->parentBeginEnd = "父项目起止时间:%s ~ %s";
$lang->project->parentBudget = "父项目预算:%s";
$lang->project->beginLetterParent = "父项目的开始日期:%s,开始日期不能小于父项目的开始日期";
$lang->project->endGreaterParent = "父项目的完成日期:%s,完成日期不能大于父项目的完成日期";
$lang->project->beginGreateChild = "项目集的最小开始日期:%s,项目的开始日期不能小于项目集的最小开始日期";
$lang->project->endLetterChild = "项目集的最大完成日期:%s,项目的完成日期不能大于项目集的最大完成日期";
$lang->project->childLongTime = "子项目中有长期项目,父项目也应该是长期项目";
+251 -251
View File
@@ -1,282 +1,282 @@
<?php
/* Actions. */
$lang->program->createGuide = '選擇項目模板';
$lang->program->PRJIndex = '項目儀表盤';
$lang->program->PRJHome = '項目主頁';
$lang->program->PRJCreate = '創建項目';
$lang->program->PRJEdit = '編輯項目';
$lang->program->PRJView = '項目概況';
$lang->program->batchEdit = '批量編輯';
$lang->program->PRJBrowse = '項目列表';
$lang->program->PRJAll = '所有項目';
$lang->program->PRJStart = '啟動項目';
$lang->program->PRJFinish = '完成項目';
$lang->program->PRJSuspend = '掛起項目';
$lang->program->PRJDelete = '刪除項目';
$lang->program->PRJClose = '關閉項目';
$lang->program->PRJActivate = '激活項目';
$lang->program->PRJGroup = '項目權限分組';
$lang->program->PRJCreateGroup = '項目創建分組';
$lang->program->PRJEditGroup = '項目編輯分組';
$lang->program->PRJCopyGroup = '項目複製分組';
$lang->program->PRJManageView = '項目維護視野';
$lang->program->PRJManagePriv = '項目維護權限';
$lang->program->PRJManageMembers = '項目團隊';
$lang->program->export = '導出';
$lang->program->addProduct = '新建產品';
$lang->program->PRJManageGroupMember = '維護分組用戶';
$lang->program->PRJModuleSetting = '列表設置';
$lang->program->PRJModuleOpen = '顯示項目集名';
$lang->program->PRJUpdateOrder = '排序';
$lang->program->PRJSort = '項目排序';
$lang->program->PRJWhitelist = '項目白名單';
$lang->program->PRJAddWhitelist = '項目添加白名單';
$lang->program->unbindWhielist = '項目刪除白名單';
$lang->program->PRJManageProducts = '關聯產品';
$lang->program->view = '項目集詳情';
$lang->program->copyTitle = '請選擇要複製的項目';
$lang->program->errorSameProducts = '項目不能關聯多個相同的產品。';
$lang->program->errorNoProducts = '最少關聯一個產品';
$lang->program->copyNoProject = '沒有可用的項目來複制';
$lang->project->createGuide = '選擇項目模板';
$lang->project->PRJIndex = '項目儀表盤';
$lang->project->PRJHome = '項目主頁';
$lang->project->PRJCreate = '創建項目';
$lang->project->PRJEdit = '編輯項目';
$lang->project->PRJView = '項目概況';
$lang->project->batchEdit = '批量編輯';
$lang->project->PRJBrowse = '項目列表';
$lang->project->PRJAll = '所有項目';
$lang->project->PRJStart = '啟動項目';
$lang->project->PRJFinish = '完成項目';
$lang->project->PRJSuspend = '掛起項目';
$lang->project->PRJDelete = '刪除項目';
$lang->project->PRJClose = '關閉項目';
$lang->project->PRJActivate = '激活項目';
$lang->project->PRJGroup = '項目權限分組';
$lang->project->PRJCreateGroup = '項目創建分組';
$lang->project->PRJEditGroup = '項目編輯分組';
$lang->project->PRJCopyGroup = '項目複製分組';
$lang->project->PRJManageView = '項目維護視野';
$lang->project->PRJManagePriv = '項目維護權限';
$lang->project->PRJManageMembers = '項目團隊';
$lang->project->export = '導出';
$lang->project->addProduct = '新建產品';
$lang->project->PRJManageGroupMember = '維護分組用戶';
$lang->project->PRJModuleSetting = '列表設置';
$lang->project->PRJModuleOpen = '顯示項目集名';
$lang->project->PRJUpdateOrder = '排序';
$lang->project->PRJSort = '項目排序';
$lang->project->PRJWhitelist = '項目白名單';
$lang->project->PRJAddWhitelist = '項目添加白名單';
$lang->project->unbindWhielist = '項目刪除白名單';
$lang->project->PRJManageProducts = '關聯產品';
$lang->project->view = '項目集詳情';
$lang->project->copyTitle = '請選擇要複製的項目';
$lang->project->errorSameProducts = '項目不能關聯多個相同的產品。';
$lang->project->errorNoProducts = '最少關聯一個產品';
$lang->project->copyNoProject = '沒有可用的項目來複制';
$lang->project->searchByName = '輸入項目名稱進行檢索';
/* Fields. */
$lang->program->common = '項目集';
$lang->program->project = '項目';
$lang->program->stage = '階段';
$lang->program->PM = '負責人';
$lang->program->PRJName = '項目名稱';
$lang->program->PRJCategory = '項目類型';
$lang->program->PRJDesc = '項目描述';
$lang->program->PRJCode = '項目代號';
$lang->program->PRJCopy = '複製項目';
$lang->program->begin = '計劃開始';
$lang->program->end = '計劃完成';
$lang->program->PRJStatus = '項目狀態';
$lang->program->PRJPM = '項目負責人';
$lang->program->PRJBudget = '項目預算';
$lang->program->PRJTemplate = '項目模板';
$lang->program->PRJEstimate = '預計';
$lang->program->PRJConsume = '消耗';
$lang->program->PRJSurplus = '剩餘';
$lang->program->PRJProgress = '進度';
$lang->program->dateRange = '起止日期';
$lang->program->to = '至';
$lang->program->realEnd = '實際完成日期';
$lang->program->realBegan = '實際開始日期';
$lang->program->bygrid = '看板';
$lang->program->bylist = '列表';
$lang->program->mine = '我參與的';
$lang->program->setPlanduration = '設置工期';
$lang->program->auth = '權限控制';
$lang->program->durationEstimation = '工作量估算';
$lang->program->teamCount = '人數';
$lang->program->leftStories = '剩餘需求';
$lang->program->leftTasks = '剩餘任務';
$lang->program->leftBugs = '剩餘Bug';
$lang->program->PRJChildren = '子項目';
$lang->program->PRJParent = '父項目';
$lang->program->allStories = '總需求';
$lang->program->doneStories = '已完成';
$lang->program->allInput = '項目總投入';
$lang->program->weekly = '項目周報';
$lang->program->pv = 'PV';
$lang->program->ev = 'EV';
$lang->program->sv = 'SV%';
$lang->program->ac = 'AC';
$lang->program->cv = 'CV%';
$lang->program->PRJTeamCount = '項目成員';
$lang->program->PRJLongTime = '長期';
$lang->program->future = '待定';
$lang->program->morePRJ = '更多項目';
$lang->project->common = '項目集';
$lang->project->project = '項目';
$lang->project->stage = '階段';
$lang->project->PM = '負責人';
$lang->project->PRJName = '項目名稱';
$lang->project->PRJCategory = '項目類型';
$lang->project->PRJDesc = '項目描述';
$lang->project->PRJCode = '項目代號';
$lang->project->PRJCopy = '複製項目';
$lang->project->begin = '計劃開始';
$lang->project->end = '計劃完成';
$lang->project->PRJStatus = '項目狀態';
$lang->project->PRJPM = '項目負責人';
$lang->project->PRJBudget = '項目預算';
$lang->project->PRJTemplate = '項目模板';
$lang->project->PRJEstimate = '預計';
$lang->project->PRJConsume = '消耗';
$lang->project->PRJSurplus = '剩餘';
$lang->project->PRJProgress = '進度';
$lang->project->dateRange = '起止日期';
$lang->project->to = '至';
$lang->project->realEnd = '實際完成日期';
$lang->project->realBegan = '實際開始日期';
$lang->project->bygrid = '看板';
$lang->project->bylist = '列表';
$lang->project->mine = '我參與的';
$lang->project->setPlanduration = '設置工期';
$lang->project->auth = '權限控制';
$lang->project->durationEstimation = '工作量估算';
$lang->project->teamCount = '人數';
$lang->project->leftStories = '剩餘需求';
$lang->project->leftTasks = '剩餘任務';
$lang->project->leftBugs = '剩餘Bug';
$lang->project->PRJChildren = '子項目';
$lang->project->PRJParent = '父項目';
$lang->project->allStories = '總需求';
$lang->project->doneStories = '已完成';
$lang->project->allInput = '項目總投入';
$lang->project->weekly = '項目周報';
$lang->project->pv = 'PV';
$lang->project->ev = 'EV';
$lang->project->sv = 'SV%';
$lang->project->ac = 'AC';
$lang->project->cv = 'CV%';
$lang->project->PRJTeamCount = '項目成員';
$lang->project->PRJLongTime = '長期';
$lang->project->future = '待定';
$lang->project->morePRJ = '更多項目';
$lang->program->productNotEmpty = '請關聯產品或創建產品。';
$lang->program->existProductName = '產品名稱已存在。';
$lang->project->productNotEmpty = '請關聯產品或創建產品。';
$lang->project->existProductName = '產品名稱已存在。';
$lang->program->tenThousand = '萬';
$lang->project->tenThousand = '萬';
$lang->program->unitList['CNY'] = '人民幣';
$lang->program->unitList['USD'] = '美元';
$lang->program->unitList['HKD'] = '港元';
$lang->program->unitList['NTD'] = '台元';
$lang->program->unitList['EUR'] = '歐元';
$lang->program->unitList['DEM'] = '馬克';
$lang->program->unitList['CHF'] = '瑞士法郎';
$lang->program->unitList['FRF'] = '法國法郎';
$lang->program->unitList['GBP'] = '英鎊';
$lang->program->unitList['NLG'] = '荷蘭盾';
$lang->program->unitList['CAD'] = '加拿大元';
$lang->program->unitList['RUR'] = '盧布';
$lang->program->unitList['INR'] = '盧比';
$lang->program->unitList['AUD'] = '澳大利亞元';
$lang->program->unitList['NZD'] = '新西蘭元';
$lang->program->unitList['THB'] = '泰國銖';
$lang->program->unitList['SGD'] = '新加坡元';
$lang->project->unitList['CNY'] = '人民幣';
$lang->project->unitList['USD'] = '美元';
$lang->project->unitList['HKD'] = '港元';
$lang->project->unitList['NTD'] = '台元';
$lang->project->unitList['EUR'] = '歐元';
$lang->project->unitList['DEM'] = '馬克';
$lang->project->unitList['CHF'] = '瑞士法郎';
$lang->project->unitList['FRF'] = '法國法郎';
$lang->project->unitList['GBP'] = '英鎊';
$lang->project->unitList['NLG'] = '荷蘭盾';
$lang->project->unitList['CAD'] = '加拿大元';
$lang->project->unitList['RUR'] = '盧布';
$lang->project->unitList['INR'] = '盧比';
$lang->project->unitList['AUD'] = '澳大利亞元';
$lang->project->unitList['NZD'] = '新西蘭元';
$lang->project->unitList['THB'] = '泰國銖';
$lang->project->unitList['SGD'] = '新加坡元';
$lang->program->currencySymbol['CNY'] = '¥';
$lang->program->currencySymbol['USD'] = '$';
$lang->program->currencySymbol['HKD'] = 'HK$';
$lang->program->currencySymbol['NTD'] = 'NT$';
$lang->program->currencySymbol['EUR'] = '€';
$lang->program->currencySymbol['DEM'] = 'DEM';
$lang->program->currencySymbol['CHF'] = '₣';
$lang->program->currencySymbol['FRF'] = '₣';
$lang->program->currencySymbol['GBP'] = '£';
$lang->program->currencySymbol['NLG'] = 'ƒ';
$lang->program->currencySymbol['CAD'] = '$';
$lang->program->currencySymbol['RUR'] = '₽';
$lang->program->currencySymbol['INR'] = '₹';
$lang->program->currencySymbol['AUD'] = 'A$';
$lang->program->currencySymbol['NZD'] = 'NZ$';
$lang->program->currencySymbol['THB'] = '฿';
$lang->program->currencySymbol['SGD'] = 'S$';
$lang->project->currencySymbol['CNY'] = '¥';
$lang->project->currencySymbol['USD'] = '$';
$lang->project->currencySymbol['HKD'] = 'HK$';
$lang->project->currencySymbol['NTD'] = 'NT$';
$lang->project->currencySymbol['EUR'] = '€';
$lang->project->currencySymbol['DEM'] = 'DEM';
$lang->project->currencySymbol['CHF'] = '₣';
$lang->project->currencySymbol['FRF'] = '₣';
$lang->project->currencySymbol['GBP'] = '£';
$lang->project->currencySymbol['NLG'] = 'ƒ';
$lang->project->currencySymbol['CAD'] = '$';
$lang->project->currencySymbol['RUR'] = '₽';
$lang->project->currencySymbol['INR'] = '₹';
$lang->project->currencySymbol['AUD'] = 'A$';
$lang->project->currencySymbol['NZD'] = 'NZ$';
$lang->project->currencySymbol['THB'] = '฿';
$lang->project->currencySymbol['SGD'] = 'S$';
$lang->program->modelList['scrum'] = "Scrum";
$lang->program->modelList['waterfall'] = "瀑布";
$lang->project->modelList['scrum'] = "Scrum";
$lang->project->modelList['waterfall'] = "瀑布";
$lang->program->PRJCategoryList['single'] = "單產品項目";
$lang->program->PRJCategoryList['multiple'] = "多產品項目";
$lang->project->PRJCategoryList['single'] = "單產品項目";
$lang->project->PRJCategoryList['multiple'] = "多產品項目";
$lang->program->PRJLifeTimeList['short'] = "短期";
$lang->program->PRJLifeTimeList['long'] = "長期";
$lang->program->PRJLifeTimeList['ops'] = "運維";
$lang->project->PRJLifeTimeList['short'] = "短期";
$lang->project->PRJLifeTimeList['long'] = "長期";
$lang->project->PRJLifeTimeList['ops'] = "運維";
$lang->program->featureBar['all'] = '所有';
$lang->program->featureBar['doing'] = '進行中';
$lang->program->featureBar['wait'] = '未開始';
$lang->program->featureBar['suspended'] = '已掛起';
$lang->program->featureBar['closed'] = '已關閉';
$lang->project->featureBar['all'] = '所有';
$lang->project->featureBar['doing'] = '進行中';
$lang->project->featureBar['wait'] = '未開始';
$lang->project->featureBar['suspended'] = '已掛起';
$lang->project->featureBar['closed'] = '已關閉';
$lang->program->PRJAclList['private'] = "私有(只有項目團隊成員和干係人可訪問)";
$lang->program->PRJAclList['open'] = "公開(有項目視圖權限即可訪問)";
$lang->project->PRJAclList['private'] = "私有(只有項目團隊成員和干係人可訪問)";
$lang->project->PRJAclList['open'] = "公開(有項目視圖權限即可訪問)";
$lang->program->PGMPRJAclList['private'] = "私有(只有項目團隊成員和干係人可訪問)";
$lang->program->PGMPRJAclList['program'] = "項目集內公開(所有上級項目集負責人和干係人,本項目團隊成員和干係人可訪問)";
$lang->program->PGMPRJAclList['open'] = "全部公開(有項目視圖權限即可訪問)";
$lang->project->PGMPRJAclList['private'] = "私有(只有項目團隊成員和干係人可訪問)";
$lang->project->PGMPRJAclList['project'] = "項目集內公開(所有上級項目集負責人和干係人,本項目團隊成員和干係人可訪問)";
$lang->project->PGMPRJAclList['open'] = "全部公開(有項目視圖權限即可訪問)";
$lang->program->PRJAuthList['extend'] = '繼承(取系統權限與項目權限的合集)';
$lang->program->PRJAuthList['reset'] = '重新定義(只取項目權限)';
$lang->project->PRJAuthList['extend'] = '繼承(取系統權限與項目權限的合集)';
$lang->project->PRJAuthList['reset'] = '重新定義(只取項目權限)';
$lang->program->statusList['wait'] = '未開始';
$lang->program->statusList['doing'] = '進行中';
$lang->program->statusList['suspended'] = '已掛起';
$lang->program->statusList['closed'] = '已關閉';
$lang->project->statusList['wait'] = '未開始';
$lang->project->statusList['doing'] = '進行中';
$lang->project->statusList['suspended'] = '已掛起';
$lang->project->statusList['closed'] = '已關閉';
$lang->program->endList[31] = '一個月';
$lang->program->endList[93] = '三個月';
$lang->program->endList[186] = '半年';
$lang->program->endList[365] = '一年';
$lang->program->endList[999] = '長期';
$lang->project->endList[31] = '一個月';
$lang->project->endList[93] = '三個月';
$lang->project->endList[186] = '半年';
$lang->project->endList[365] = '一年';
$lang->project->endList[999] = '長期';
$lang->program->noPRJ = '暫時沒有項目';
$lang->program->accessDenied = '您無權訪問該項目!';
$lang->program->chooseProgramType = '選中項目管理模型';
$lang->program->nextStep = '下一步';
$lang->program->hoursUnit = "%s 工時";
$lang->program->membersUnit = '%s人';
$lang->program->lastIteration = '近期迭代';
$lang->program->ongoingStage = '進行中的階段';
$lang->program->scrum = 'Scrum';
$lang->program->waterfall = '瀑布';
$lang->program->waterfallTitle = '瀑布式項目管理';
$lang->program->cannotCreateChild = '該項目已經有實際的內容,無法直接添加子項目。您可以為當前項目創建一個父項目,然後在新的父項目下面添加子項目。';
$lang->program->hasChildren = '該項目集有子項目集或項目存在,不能刪除。';
$lang->program->confirmDelete = "您確定要刪除嗎?";
$lang->program->emptyPM = '暫無';
$lang->program->cannotChangeToCat = "該項目已經有實際的內容,無法修改為父項目";
$lang->program->cannotCancelCat = "該項目下已經有子項目,無法取消父項目標記";
$lang->program->parentBeginEnd = "父項目起止時間:%s ~ %s";
$lang->program->childLongTime = "子項目中有長期項目,父項目也應該是長期項目";
$lang->program->readjustTime = '重新調整項目起止時間';
$lang->program->notAllowRemoveProducts = '該產品中的需求已與項目進行了關聯,請取消關聯後再操作。';
$lang->project->noPRJ = '暫時沒有項目';
$lang->project->accessDenied = '您無權訪問該項目!';
$lang->project->chooseProgramType = '選中項目管理模型';
$lang->project->nextStep = '下一步';
$lang->project->hoursUnit = "%s 工時";
$lang->project->membersUnit = '%s人';
$lang->project->lastIteration = '近期迭代';
$lang->project->ongoingStage = '進行中的階段';
$lang->project->scrum = 'Scrum';
$lang->project->waterfall = '瀑布';
$lang->project->waterfallTitle = '瀑布式項目管理';
$lang->project->cannotCreateChild = '該項目已經有實際的內容,無法直接添加子項目。您可以為當前項目創建一個父項目,然後在新的父項目下面添加子項目。';
$lang->project->hasChildren = '該項目集有子項目集或項目存在,不能刪除。';
$lang->project->confirmDelete = "您確定要刪除嗎?";
$lang->project->emptyPM = '暫無';
$lang->project->cannotChangeToCat = "該項目已經有實際的內容,無法修改為父項目";
$lang->project->cannotCancelCat = "該項目下已經有子項目,無法取消父項目標記";
$lang->project->parentBeginEnd = "父項目起止時間:%s ~ %s";
$lang->project->childLongTime = "子項目中有長期項目,父項目也應該是長期項目";
$lang->project->readjustTime = '重新調整項目起止時間';
$lang->project->notAllowRemoveProducts = '該產品中的需求已與項目進行了關聯,請取消關聯後再操作。';
$lang->program->PRJProgramTitle['0'] = '不顯示';
$lang->program->PRJProgramTitle['base'] = '只顯示一級項目集';
$lang->program->PRJProgramTitle['end'] = '只顯示最後一級項目集';
$lang->project->PRJProgramTitle['0'] = '不顯示';
$lang->project->PRJProgramTitle['base'] = '只顯示一級項目集';
$lang->project->PRJProgramTitle['end'] = '只顯示最後一級項目集';
$lang->program->PRJAccessDenied = '您無權訪問該項目!';
$lang->program->PRJChooseProgramType = '選擇項目管理方式';
$lang->program->scrumTitle = '敏捷開發全流程項目管理';
$lang->program->PRJCannotCreateChild = '該項目已經有實際的內容,無法直接添加子項目。您可以為當前項目創建一個父項目,然後在新的父項目下面添加子項目。';
$lang->program->PRJHasChildren = '該項目有子項目存在,不能刪除。';
$lang->program->PRJConfirmDelete = "您確定刪除項目[%s]嗎?";
$lang->program->PRJCannotChangeToCat = "該項目已經有實際的內容,無法修改為父項目";
$lang->program->PRJCannotCancelCat = "該項目下已經有子項目,無法取消父項目標記";
$lang->program->PRJParentBeginEnd = "父項目起止時間:%s ~ %s";
$lang->program->PRJParentBudget = "父項目預算:%s";
$lang->program->PRJBeginLetterParent = "父項目的開始日期:%s,開始日期不能小於父項目的開始日期";
$lang->program->PRJEndGreaterParent = "父項目的完成日期:%s,完成日期不能大於父項目的完成日期";
$lang->program->PRJBeginGreateChild = "項目集的最小開始日期:%s,項目的開始日期不能小於項目集的最小開始日期";
$lang->program->PRJEndLetterChild = "項目集的最大完成日期:%s,項目的完成日期不能大於項目集的最大完成日期";
$lang->program->PRJChildLongTime = "子項目中有長期項目,父項目也應該是長期項目";
$lang->project->PRJAccessDenied = '您無權訪問該項目!';
$lang->project->PRJChooseProgramType = '選擇項目管理方式';
$lang->project->scrumTitle = '敏捷開發全流程項目管理';
$lang->project->PRJCannotCreateChild = '該項目已經有實際的內容,無法直接添加子項目。您可以為當前項目創建一個父項目,然後在新的父項目下面添加子項目。';
$lang->project->PRJHasChildren = '該項目有子項目存在,不能刪除。';
$lang->project->PRJConfirmDelete = "您確定刪除項目[%s]嗎?";
$lang->project->PRJCannotChangeToCat = "該項目已經有實際的內容,無法修改為父項目";
$lang->project->PRJCannotCancelCat = "該項目下已經有子項目,無法取消父項目標記";
$lang->project->PRJParentBeginEnd = "父項目起止時間:%s ~ %s";
$lang->project->PRJParentBudget = "父項目預算:%s";
$lang->project->PRJBeginLetterParent = "父項目的開始日期:%s,開始日期不能小於父項目的開始日期";
$lang->project->PRJEndGreaterParent = "父項目的完成日期:%s,完成日期不能大於父項目的完成日期";
$lang->project->PRJBeginGreateChild = "項目集的最小開始日期:%s,項目的開始日期不能小於項目集的最小開始日期";
$lang->project->PRJEndLetterChild = "項目集的最大完成日期:%s,項目的完成日期不能大於項目集的最大完成日期";
$lang->project->PRJChildLongTime = "子項目中有長期項目,父項目也應該是長期項目";
/* Actions. */
$lang->program->PGMCommon = '項目集';
$lang->program->PGMIndex = '項目集主頁';
$lang->program->PGMCreate = '添加項目集';
$lang->program->PGMCreateGuide = '選擇項目模板';
$lang->program->PGMEdit = '編輯項目集';
$lang->program->PGMBrowse = '項目集列表';
$lang->program->PGMProduct = '產品列表';
$lang->program->PGMProject = '項目集項目列表';
$lang->program->PGMAll = '所有項目集';
$lang->program->PGMStart = '啟動項目集';
$lang->program->PGMFinish = '完成項目集';
$lang->program->PGMSuspend = '掛起項目集';
$lang->program->PGMDelete = '刪除項目集';
$lang->program->PGMClose = '關閉項目集';
$lang->program->PGMActivate = '激活項目集';
$lang->program->PGMExport = '導出';
$lang->program->PGMStakeholder = '干係人列表';
$lang->program->createStakeholder = '添加干係人';
$lang->program->unlinkStakeholder = '移除干係人';
$lang->program->batchUnlinkStakeholders = '批量移除干係人';
$lang->program->unlink = '移除';
$lang->program->morePGM = '更多項目集';
$lang->program->confirmBatchUnlink = "您確定要批量移除這些干係人嗎?";
$lang->program->stakeholderType = '干係人類型';
$lang->program->isStakeholderKey = '關鍵干係人';
$lang->program->importStakeholder = '從父項目集導入';
$lang->program->PGMManageMembers = '項目集團隊';
$lang->program->PGMParentBudget = '所屬項目集剩餘預算:';
$lang->program->beyondParentBudget = '已超出所屬項目集的剩餘預算';
$lang->program->PGMBeginLetterParent = "父項目集的開始日期:%s,開始日期不能小於父項目集的開始日期";
$lang->program->PGMEndGreaterParent = "父項目集的完成日期:%s,完成日期不能大於父項目集的完成日期";
$lang->program->PGMBeginGreateChild = "子項目集的最小開始日期:%s,父項目集的開始日期不能大於子項目集的最小開始日期";
$lang->program->PGMEndLetterChild = "子項目的最大完成日期:%s,父項目的完成日期不能小於子項目的最大完成日期";
$lang->program->PGMCloseErrorMessage = '存在子項目集或項目為未關閉狀態';
$lang->project->PGMCommon = '項目集';
$lang->project->PGMIndex = '項目集主頁';
$lang->project->PGMCreate = '添加項目集';
$lang->project->PGMCreateGuide = '選擇項目模板';
$lang->project->PGMEdit = '編輯項目集';
$lang->project->PGMBrowse = '項目集列表';
$lang->project->PGMProduct = '產品列表';
$lang->project->PGMProject = '項目集項目列表';
$lang->project->PGMAll = '所有項目集';
$lang->project->PGMStart = '啟動項目集';
$lang->project->PGMFinish = '完成項目集';
$lang->project->PGMSuspend = '掛起項目集';
$lang->project->PGMDelete = '刪除項目集';
$lang->project->PGMClose = '關閉項目集';
$lang->project->PGMActivate = '激活項目集';
$lang->project->PGMExport = '導出';
$lang->project->PGMStakeholder = '干係人列表';
$lang->project->createStakeholder = '添加干係人';
$lang->project->unlinkStakeholder = '移除干係人';
$lang->project->batchUnlinkStakeholders = '批量移除干係人';
$lang->project->unlink = '移除';
$lang->project->morePGM = '更多項目集';
$lang->project->confirmBatchUnlink = "您確定要批量移除這些干係人嗎?";
$lang->project->stakeholderType = '干係人類型';
$lang->project->isStakeholderKey = '關鍵干係人';
$lang->project->importStakeholder = '從父項目集導入';
$lang->project->PGMManageMembers = '項目集團隊';
$lang->project->PGMParentBudget = '所屬項目集剩餘預算:';
$lang->project->beyondParentBudget = '已超出所屬項目集的剩餘預算';
$lang->project->PGMBeginLetterParent = "父項目集的開始日期:%s,開始日期不能小於父項目集的開始日期";
$lang->project->PGMEndGreaterParent = "父項目集的完成日期:%s,完成日期不能大於父項目集的完成日期";
$lang->project->PGMBeginGreateChild = "子項目集的最小開始日期:%s,父項目集的開始日期不能大於子項目集的最小開始日期";
$lang->project->PGMEndLetterChild = "子項目的最大完成日期:%s,父項目的完成日期不能小於子項目的最大完成日期";
$lang->project->PGMCloseErrorMessage = '存在子項目集或項目為未關閉狀態';
$lang->program->stakeholderTypeList['inside'] = '內部';
$lang->program->stakeholderTypeList['outside'] = '外部';
$lang->project->stakeholderTypeList['inside'] = '內部';
$lang->project->stakeholderTypeList['outside'] = '外部';
/* Fields. */
$lang->program->PGMName = '項目集名稱';
$lang->program->PGMTemplate = '項目集模板';
$lang->program->PGMCategory = '項目集類型';
$lang->program->PGMDesc = '項目集描述';
$lang->program->PGMCopy = '複製項目集';
$lang->program->PGMStatus = '狀態';
$lang->program->PGMPM = '負責人';
$lang->program->PGMBudget = '預算';
$lang->program->PGMProgress = '項目進度';
$lang->program->PGMChildren = '子項目集';
$lang->program->PGMParent = '父項目集';
$lang->program->PGMAllInput = '項目集總投入';
$lang->program->PGMTeamCount = '項目整合員';
$lang->program->PGMLongTime = '長期項目';
$lang->project->PGMName = '項目集名稱';
$lang->project->PGMTemplate = '項目集模板';
$lang->project->PGMCategory = '項目集類型';
$lang->project->PGMDesc = '項目集描述';
$lang->project->PGMCopy = '複製項目集';
$lang->project->PGMStatus = '狀態';
$lang->project->PGMPM = '負責人';
$lang->project->PGMBudget = '預算';
$lang->project->PGMProgress = '項目進度';
$lang->project->PGMChildren = '子項目集';
$lang->project->PGMParent = '父項目集';
$lang->project->PGMAllInput = '項目集總投入';
$lang->project->PGMTeamCount = '項目整合員';
$lang->project->PGMLongTime = '長期項目';
$lang->program->noPGM = '暫時沒有項目集';
$lang->program->PGMShowClosed = '顯示已關閉';
$lang->program->PGMTips = '選擇了父項目集,則可關聯該父項目集下的產品。如果項目未選擇任何項目集,則系統會預設創建一個和該項目同名的產品並關聯該項目。';
$lang->project->noPGM = '暫時沒有項目集';
$lang->project->PGMShowClosed = '顯示已關閉';
$lang->project->PGMTips = '選擇了父項目集,則可關聯該父項目集下的產品。如果項目未選擇任何項目集,則系統會預設創建一個和該項目同名的產品並關聯該項目。';
$lang->program->PGMAclList['private'] = "私有(項目集負責人和干係人可訪問,干係人可後續維護)";
$lang->program->PGMAclList['open'] = "公開(有項目集視圖權限,即可訪問)";
$lang->project->PGMAclList['private'] = "私有(項目集負責人和干係人可訪問,干係人可後續維護)";
$lang->project->PGMAclList['open'] = "公開(有項目集視圖權限,即可訪問)";
$lang->program->subPGMAclList['private'] = "私有(本項目集負責人和干係人可訪問,干係人可後續維護)";
$lang->program->subPGMAclList['open'] = "全部公開(有項目集視圖權限,即可訪問)";
$lang->program->subPGMAclList['program'] = "項目集內公開 (所有上級項目集負責人和干係人、本項目集負責人和干係人可訪問)";
$lang->project->subPGMAclList['private'] = "私有(本項目集負責人和干係人可訪問,干係人可後續維護)";
$lang->project->subPGMAclList['open'] = "全部公開(有項目集視圖權限,即可訪問)";
$lang->project->subPGMAclList['project'] = "項目集內公開 (所有上級項目集負責人和干係人、本項目集負責人和干係人可訪問)";
$lang->program->PGMAuthList['extend'] = '繼承(取項目權限與組織權限的並集)';
$lang->program->PGMAuthList['reset'] = '重新定義(只取項目權限)';
$lang->project->PGMAuthList['extend'] = '繼承(取項目權限與組織權限的並集)';
$lang->project->PGMAuthList['reset'] = '重新定義(只取項目權限)';
$lang->program->PGMFeatureBar['all'] = '所有';
$lang->project->PGMFeatureBar['all'] = '所有';
+80 -761
View File
File diff suppressed because it is too large Load Diff
+34 -34
View File
@@ -1,61 +1,61 @@
<?php js::set('programID', $programID);?>
<?php js::set('projectID', $projectID);?>
<?php js::set('module', $module);?>
<?php js::set('method', $method);?>
<?php
foreach($programs as $program) $programNames[] = $program->name;
$programsPinYin = common::convert2Pinyin($programNames);
foreach($projects as $project) $projectNames[] = $project->name;
$projectsPinYin = common::convert2Pinyin($projectNames);
?>
<div class="table-row">
<div class="table-col col-left">
<div class='list-group'>
<?php
echo $this->program->getPGMTreeMenu();
echo $this->project->getPGMTreeMenu();
?>
</div>
<div class="col-footer">
<div class='pull-right'>
<?php echo html::checkbox('showClosed', array('1' => $lang->program->PGMShowClosed), '', $this->cookie->showClosed ? 'checked=checked' : '');?>
<?php echo html::checkbox('showClosed', array('1' => $lang->project->PGMShowClosed), '', $this->cookie->showClosed ? 'checked=checked' : '');?>
</div>
</div>
</div>
</div>
<style>
.tree li.has-list.open:before {border-left: none;}
#programTree li {padding: 0 0 0 8px;}
#programTree li.has-list {padding-left: 20px;}
#programTree li > a {display: block; padding: 5px 0; border-radius: 2px; padding-left: 6px; height: 30px;}
#programTree li > a > span {display: inline-block;}
#programTree li > a > span + span {margin-left: 8px;}
#programTree li.selected > a {background-color: #E8F3FC;}
#programTree li.selected > a > span.title {color: #006AF1;}
#programTree .label-id {border-color: #cbd0db; color: #7d8599}
#programTree .label.label-type {background: #fff; border: 1px solid #7d8599; color:#7d8599}
#projectTree li {padding: 0 0 0 8px;}
#projectTree li.has-list {padding-left: 20px;}
#projectTree li > a {display: block; padding: 5px 0; border-radius: 2px; padding-left: 6px; height: 30px;}
#projectTree li > a > span {display: inline-block;}
#projectTree li > a > span + span {margin-left: 8px;}
#projectTree li.selected > a {background-color: #E8F3FC;}
#projectTree li.selected > a > span.title {color: #006AF1;}
#projectTree .label-id {border-color: #cbd0db; color: #7d8599}
#projectTree .label.label-type {background: #fff; border: 1px solid #7d8599; color:#7d8599}
#programTree li > a > span.title {color: #3C4353; white-space: nowrap; max-width: 60%; overflow: hidden; text-overflow: ellipsis; vertical-align: middle;}
#programTree li > a > span.user {color: #838a9d;}
#programTree li > a > span.user > .icon-person {font-size: 14px; position: relative; top: -1px; color: #a6aab8}
#projectTree li > a > span.title {color: #3C4353; white-space: nowrap; max-width: 60%; overflow: hidden; text-overflow: ellipsis; vertical-align: middle;}
#projectTree li > a > span.user {color: #838a9d;}
#projectTree li > a > span.user > .icon-person {font-size: 14px; position: relative; top: -1px; color: #a6aab8}
#programTree li > .list-toggle {transform: rotate(0deg); width: 16px; height: 16px; border: 4px solid #a6aab8; border-radius: 2px; top: 7px;}
#programTree li > .list-toggle:before {content: ' '; display: block; position: absolute; border: 1px solid #a6aab8; top: 2px; left: -3px; right: -3px; bottom: 2px; min-width: 0; transition: all .2s;}
#programTree li > .list-toggle:hover:before,
#programTree li > .list-toggle:hover {border-color: #006AF1;}
#programTree li.open > .list-toggle {width: 12px; height: 12px; top: 9px; background-color: #a6aab8; border-width: 3px; left: 3px;}
#programTree li.open > .list-toggle:before {border: none; height: 2px; width: 6px; left: 0; top: 2px; background: #fff;}
#programTree li.open > .list-toggle:hover {background: #006AF1;}
#projectTree li > .list-toggle {transform: rotate(0deg); width: 16px; height: 16px; border: 4px solid #a6aab8; border-radius: 2px; top: 7px;}
#projectTree li > .list-toggle:before {content: ' '; display: block; position: absolute; border: 1px solid #a6aab8; top: 2px; left: -3px; right: -3px; bottom: 2px; min-width: 0; transition: all .2s;}
#projectTree li > .list-toggle:hover:before,
#projectTree li > .list-toggle:hover {border-color: #006AF1;}
#projectTree li.open > .list-toggle {width: 12px; height: 12px; top: 9px; background-color: #a6aab8; border-width: 3px; left: 3px;}
#projectTree li.open > .list-toggle:before {border: none; height: 2px; width: 6px; left: 0; top: 2px; background: #fff;}
#projectTree li.open > .list-toggle:hover {background: #006AF1;}
#programTree ul > li:after {display: block; position: absolute; content: ' '; border-top: 1px dashed #cbd0db; top: 14px; left: -12px; z-index: 1; width: 10px;}
#programTree ul > li:before,
#programTree ul > li.has-list:before {background: none; content: ' '; display: block; position: absolute; width: auto; height: auto; border: none; border-left: 1px dashed #cbd0db; top: -13px; bottom: 12px; left: -12px;}
#programTree ul > li:last-child:before {bottom: auto; height: 29px;}
#programTree ul > li:first-child:before {top: -9px;}
#programTree ul > li.has-list:first-child:before {top: -13px;}
#programTree ul > li.tree-single-item:before {height: 23px;}
#programTree ul > li.has-list:after {width: 14px;}
#programTree ul > li.item-meas a.selected{color: #0c64eb;}
#projectTree ul > li:after {display: block; position: absolute; content: ' '; border-top: 1px dashed #cbd0db; top: 14px; left: -12px; z-index: 1; width: 10px;}
#projectTree ul > li:before,
#projectTree ul > li.has-list:before {background: none; content: ' '; display: block; position: absolute; width: auto; height: auto; border: none; border-left: 1px dashed #cbd0db; top: -13px; bottom: 12px; left: -12px;}
#projectTree ul > li:last-child:before {bottom: auto; height: 29px;}
#projectTree ul > li:first-child:before {top: -9px;}
#projectTree ul > li.has-list:first-child:before {top: -13px;}
#projectTree ul > li.tree-single-item:before {height: 23px;}
#projectTree ul > li.has-list:after {width: 14px;}
#projectTree ul > li.item-meas a.selected{color: #0c64eb;}
#showClosed1 + label{color: #3c4353}
</style>
<script>
$('#programTree').tree();
$('#projectTree').tree();
$(function()
{
$('input[name^="showClosed"]').click(function()
@@ -1,4 +1,4 @@
<?php js::set('programID', $projectID);?>
<?php js::set('projectID', $projectID);?>
<?php js::set('module', $module);?>
<?php js::set('method', $method);?>
<div class="table-row">
@@ -7,7 +7,7 @@
<?php echo $normalProjectsHtml;?>
</div>
<div class="col-footer">
<?php echo html::a(helper::createLink('program', 'PRJBrowse', 'programID=0&status=all'), '<i class="icon icon-cards-view muted"></i> ' . $lang->project->all, '', 'class="not-list-item"'); ?>
<?php echo html::a(helper::createLink('project', 'PRJBrowse', 'projectID=0&status=all'), '<i class="icon icon-cards-view muted"></i> ' . $lang->project->all, '', 'class="not-list-item"'); ?>
<a class='pull-right toggle-right-col not-list-item'><?php echo $lang->project->doneProjects;?><i class='icon icon-angle-right'></i></a>
</div>
</div>
+14 -14
View File
@@ -5,29 +5,29 @@
#guideDialog h3 {margin: 5px 0; font-size: 20px;}
#guideDialog .modal-footer {border-top: none; text-align: center; padding-top: 10px; padding-bottom: 40px;}
#guideDialog .modal-footer .btn + .btn {margin-left: 20px}
#guideDialog .program-type {padding: 0 40px}
#guideDialog .program-type-img {width: 280px; border: 1px solid #CBD0DB; border-radius: 2px; margin-bottom: 10px; cursor: pointer; margin-top: 1px}
#guideDialog .program-type-img:hover {border-color: #006AF1; box-shadow: 0 0 10px 0 rgba(0,0,0,.25);}
#guideDialog .program-type.active img {border-color: #006AF1; border-width: 2px; margin-top: 0}
#guideDialog .project-type {padding: 0 40px}
#guideDialog .project-type-img {width: 280px; border: 1px solid #CBD0DB; border-radius: 2px; margin-bottom: 10px; cursor: pointer; margin-top: 1px}
#guideDialog .project-type-img:hover {border-color: #006AF1; box-shadow: 0 0 10px 0 rgba(0,0,0,.25);}
#guideDialog .project-type.active img {border-color: #006AF1; border-width: 2px; margin-top: 0}
</style>
<?php $group = $from == 'PGM' ? "data-group='program'" : "data-group='project'";?>
<?php $group = $from == 'PGM' ? "data-group='project'" : "data-group='project'";?>
<div class='modal-content'>
<div class='modal-body'>
<button class="close" data-dismiss="modal">x</button>
<h2 class='text-center'><?php echo $lang->program->chooseProgramType; ?></h2>
<h2 class='text-center'><?php echo $lang->project->chooseProgramType; ?></h2>
<div class='row'>
<div class='col-xs-6'>
<div class='program-type text-center'>
<?php echo html::a($this->createLink("program", "PRJCreate", "model=scrum&programID=$programID&from=$from"), "<img class='program-type-img' data-type='scrum' src='{$config->webRoot}theme/default/images/main/scrum.png'>", '', $group)?>
<h3><?php echo $lang->program->scrum; ?></h3>
<p><?php echo $lang->program->scrumTitle; ?></p>
<div class='project-type text-center'>
<?php echo html::a($this->createLink("project", "PRJCreate", "model=scrum&projectID=$projectID&from=$from"), "<img class='project-type-img' data-type='scrum' src='{$config->webRoot}theme/default/images/main/scrum.png'>", '', $group)?>
<h3><?php echo $lang->project->scrum; ?></h3>
<p><?php echo $lang->project->scrumTitle; ?></p>
</div>
</div>
<div class='col-xs-6'>
<div class='program-type text-center'>
<?php echo html::a($this->createLink("program", "PRJCreate", "model=waterfall&programID=$programID&from=$from"), "<img class='program-type-img' data-type='waterfall' src='{$config->webRoot}theme/default/images/main/waterfall.png'>", '', $group)?>
<h3><?php echo $lang->program->waterfall; ?></h3>
<p><?php echo $lang->program->waterfallTitle; ?></p>
<div class='project-type text-center'>
<?php echo html::a($this->createLink("project", "PRJCreate", "model=waterfall&projectID=$projectID&from=$from"), "<img class='project-type-img' data-type='waterfall' src='{$config->webRoot}theme/default/images/main/waterfall.png'>", '', $group)?>
<h3><?php echo $lang->project->waterfall; ?></h3>
<p><?php echo $lang->project->waterfallTitle; ?></p>
</div>
</div>
</div>
@@ -1,6 +1,6 @@
<?php
/**
* The create stakeholder view of program module of ZenTaoPMS.
* The create stakeholder view of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
@@ -11,19 +11,19 @@
*/
?>
<?php include '../../common/view/header.html.php';?>
<?php js::set('programID', $programID);?>
<?php $path = str_replace(",{$programID},", ',', "{$program->path}");?>
<?php js::set('projectID', $projectID);?>
<?php $path = str_replace(",{$projectID},", ',', "{$project->path}");?>
<div id='mainMenu' class='clearfix'>
<div class='btn-toolbar pull-left'>
<span class='btn btn-link btn-active-text'>
<?php echo html::a($this->createLink('program', 'craetestakeholder', "programID={$programID}"), "<span class='text'> {$lang->program->createStakeholder}</span>");?>
<?php echo html::a($this->createLink('project', 'craetestakeholder', "projectID={$projectID}"), "<span class='text'> {$lang->project->createStakeholder}</span>");?>
</span>
<div class='input-group space w-200px'>
<span class='input-group-addon'><?php echo $lang->project->selectDept?></span>
<?php echo html::select('dept', $depts, $dept, "class='form-control chosen' onchange='setDeptUsers(this)' data-placeholder='{$lang->project->selectDeptTitle}'");?>
</div>
<?php if($program->parent):?>
<?php echo html::a($this->createLink('program', 'createStakeholder', "programID=$programID&dept=&parent=$path"), $lang->program->importStakeholder, '', 'class="btn btn-primary"');?>
<?php if($project->parent):?>
<?php echo html::a($this->createLink('project', 'createStakeholder', "projectID=$projectID&dept=&parent=$path"), $lang->project->importStakeholder, '', 'class="btn btn-primary"');?>
<?php endif;?>
</div>
</div>
+1 -1
View File
@@ -10,5 +10,5 @@
*/
?>
<?php include '../../common/view/header.html.php';?>
<?php echo $this->fetch('block', 'dashboard', "module=program&type={$project->model}");?>
<?php echo $this->fetch('block', 'dashboard', "module=project&type={$project->model}");?>
<?php include '../../common/view/footer.html.php';?>
+9 -9
View File
@@ -1,11 +1,11 @@
<?php
/**
* The suspend file of program module of ZenTaoPMS.
* The suspend file of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang<wwccss@gmail.com>
* @package program
* @package project
* @version $Id: suspend.html.php 935 2013-01-16 07:49:24Z wwccss@gmail.com $
* @link http://www.zentao.net
*/
@@ -17,8 +17,8 @@
<div id='mainContent' class='main-content'>
<div class='main-header'>
<h2>
<span class='prefix label-id'><strong><?php echo $program->id;?></strong></span>
<?php echo isonlybody() ? ("<span title='$program->name'>" . $program->name . '</span>') : html::a($this->createLink('program', 'view', 'program=' . $program->id), $program->name, '_blank');?>
<span class='prefix label-id'><strong><?php echo $project->id;?></strong></span>
<?php echo isonlybody() ? ("<span title='$project->name'>" . $project->name . '</span>') : html::a($this->createLink('project', 'view', 'project=' . $project->id), $project->name, '_blank');?>
<?php if(!isonlybody()):?>
<small><?php echo $lang->arrow . $lang->project->activate;?></small>
<?php endif;?>
@@ -27,9 +27,9 @@
<form class='load-indicator main-form' method='post' target='hiddenwin'>
<table class='table table-form'>
<tr style='height:50px;'>
<th class='w-70px'><?php echo $lang->program->dateRange;?></th>
<th class='w-70px'><?php echo $lang->project->dateRange;?></th>
<td class='muted' colspan='2'>
<div id='sourceTimeBox'><?php echo $program->begin . ' ~ ' . $program->end;?></div>
<div id='sourceTimeBox'><?php echo $project->begin . ' ~ ' . $project->end;?></div>
<div id='readjustTimeBox' class='hide'>
<div class='input-group'>
<?php echo html::input('begin', $newBegin, "class='form-control form-date'")?>
@@ -41,16 +41,16 @@
<td colspan='3'>
<div class='clearfix row'>
<div class='col-md-6 pull-left'>
<div class="checkbox-primary"><input name="readjustTime" value="1" id="readjustTime" type="checkbox"><label for="readjustTime" class="no-margin"><?php echo $lang->program->readjustTime;?></label></div>
<div class="checkbox-primary"><input name="readjustTime" value="1" id="readjustTime" type="checkbox"><label for="readjustTime" class="no-margin"><?php echo $lang->project->readjustTime;?></label></div>
</div>
</div>
</td>
</tr>
<tr class='hide'>
<th><?php echo $lang->program->status;?></th>
<th><?php echo $lang->project->status;?></th>
<td><?php echo html::hidden('status', 'doing');?></td>
</tr>
<?php $this->printExtendFields($program, 'table', 'columns=5');?>
<?php $this->printExtendFields($project, 'table', 'columns=5');?>
<tr>
<th><?php echo $lang->comment;?></th>
<td colspan='5'><?php echo html::textarea('comment', '', "rows='6' class='form-control kindeditor' hidefocus='true'");?></td>
+11 -11
View File
@@ -1,6 +1,6 @@
<?php
/**
* The html template file of PGMBrowse method of program module of ZenTaoPMS.
* The html template file of PGMBrowse method of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
@@ -13,41 +13,41 @@
<?php include '../../common/view/sortable.html.php';?>
<?php js::set('status', $status);?>
<?php js::set('orderBy', $orderBy);?>
<?php if($programType == 'bygrid'):?>
<?php if($projectType == 'bygrid'):?>
<style> #mainMenu{padding-left: 10px; padding-right: 10px;} </style>
<?php endif;?>
<div id='mainMenu' class='clearfix'>
<div class="btn-toolBar pull-left">
<?php foreach($lang->program->PGMFeatureBar as $key => $label):?>
<?php foreach($lang->project->PGMFeatureBar as $key => $label):?>
<?php $active = $status == $key ? 'btn-active-text' : '';?>
<?php $label = "<span class='text'>$label</span>";?>
<?php echo html::a(inlink('pgmbrowse', "status=$key&orderBy=$orderBy"), $label, '', "class='btn btn-link $active'");?>
<?php endforeach;?>
<?php echo html::checkbox('showClosed', array('1' => $lang->program->PGMShowClosed), '', $this->cookie->showClosed ? 'checked=checked' : '');?>
<?php echo html::checkbox('showClosed', array('1' => $lang->project->PGMShowClosed), '', $this->cookie->showClosed ? 'checked=checked' : '');?>
</div>
<div class='pull-right'>
<?php if(isset($lang->pageActions)) echo $lang->pageActions;?>
<?php if(isset($this->config->maxVersion)):?>
<?php common::printLink('program', 'createGuide', "programID=0&from=PGM", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary" data-toggle="modal" data-target="#guideDialog"');?>
<?php common::printLink('project', 'createGuide', "projectID=0&from=PGM", '<i class="icon icon-plus"></i>' . $lang->project->PRJCreate, '', 'class="btn btn-primary" data-toggle="modal" data-target="#guideDialog"');?>
<?php elseif($this->config->systemMode == 'new'):?>
<?php common::printLink('program', 'prjcreate', "mode=scrum&programID=0&from=PGM", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary"');?>
<?php common::printLink('project', 'prjcreate', "mode=scrum&projectID=0&from=PGM", '<i class="icon icon-plus"></i>' . $lang->project->PRJCreate, '', 'class="btn btn-primary"');?>
<?php else:?>
<?php common::printLink('project', 'create', '', '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary"');?>
<?php common::printLink('project', 'create', '', '<i class="icon icon-plus"></i>' . $lang->project->PRJCreate, '', 'class="btn btn-primary"');?>
<?php endif;?>
</div>
</div>
<div id='mainContent' class='main-row'>
<?php if(empty($programs)):?>
<?php if(empty($projects)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->program->noPGM;?></span>
<?php common::printLink('program', 'pgmcreate', '', "<i class='icon icon-plus'></i> " . $lang->program->PGMCreate, '', "class='btn btn-info'");?>
<span class="text-muted"><?php echo $lang->project->noPGM;?></span>
<?php common::printLink('project', 'pgmcreate', '', "<i class='icon icon-plus'></i> " . $lang->project->PGMCreate, '', "class='btn btn-info'");?>
</p>
</div>
<?php else:?>
<div class='main-col'>
<?php
if($programType == 'bygrid')
if($projectType == 'bygrid')
{
include 'pgmbrowsebygrid.html.php';
}
+54 -54
View File
@@ -1,53 +1,53 @@
<div class='row cell' id='cards'>
<?php foreach ($programs as $programID => $program):?>
<div class='col' data-id='<?php echo $programID?>'>
<div class='panel' data-url='<?php echo $this->createLink('program', 'index', "programID=$program->id", '', '', $program->id);?>'>
<?php foreach ($projects as $projectID => $project):?>
<div class='col' data-id='<?php echo $projectID?>'>
<div class='panel' data-url='<?php echo $this->createLink('project', 'index', "projectID=$project->id", '', '', $project->id);?>'>
<div class='panel-heading'>
<strong class='program-name' title='<?php echo $program->name;?>'><?php echo $program->name;?></strong>
<?php if($program->model === 'waterfall'): ?>
<span class='program-type-label label label-warning label-outline'><?php echo $lang->program->waterfall; ?></span>
<strong class='project-name' title='<?php echo $project->name;?>'><?php echo $project->name;?></strong>
<?php if($project->model === 'waterfall'): ?>
<span class='project-type-label label label-warning label-outline'><?php echo $lang->project->waterfall; ?></span>
<?php else: ?>
<span class='program-type-label label label-info label-outline'><?php echo $lang->program->scrum; ?></span>
<span class='project-type-label label label-info label-outline'><?php echo $lang->project->scrum; ?></span>
<?php endif; ?>
<nav class='panel-actions nav nav-default'>
<li class='dropdown'>
<a href='javascript:;' data-toggle='dropdown' class='panel-action'><i class='icon icon-ellipsis-v'></i></a>
<ul class='dropdown-menu pull-right'>
<li><?php common::printIcon('program', 'group', "programID=$program->id", $program, 'button', 'group');?></li>
<li><?php common::printIcon('program', 'manageMembers', "programID=$program->id", $program, 'button', 'persons');?></li>
<li><?php common::printicon('program', 'activate', "programid=$program->id", $program, 'button', '', '', 'iframe', true);?></li>
<li><?php if(common::hasPriv('program', 'edit')) echo html::a($this->createLink("program", "edit", "programID=$program->id"), "<i class='icon-edit'></i> " . $lang->edit, '', "");?></li>
<li><?php common::printIcon('program', 'start', "programID=$program->id", $program, 'button', '', '', 'iframe', true);?></li>
<li><?php common::printIcon('program', 'suspend', "programID=$program->id", $program, 'button', '', '', 'iframe', true);?></li>
<li><?php common::printIcon('program', 'close', "programID=$program->id", $program, 'button', '', '', 'iframe', true);?></li>
<li><?php if(common::hasPriv('program', 'delete')) echo html::a($this->createLink("program", "delete", "programID=$program->id"), "<i class='icon-trash'></i> " . $lang->delete, 'hiddenwin', "");?></li>
<li><?php common::printIcon('project', 'group', "projectID=$project->id", $project, 'button', 'group');?></li>
<li><?php common::printIcon('project', 'manageMembers', "projectID=$project->id", $project, 'button', 'persons');?></li>
<li><?php common::printicon('project', 'activate', "projectid=$project->id", $project, 'button', '', '', 'iframe', true);?></li>
<li><?php if(common::hasPriv('project', 'edit')) echo html::a($this->createLink("project", "edit", "projectID=$project->id"), "<i class='icon-edit'></i> " . $lang->edit, '', "");?></li>
<li><?php common::printIcon('project', 'start', "projectID=$project->id", $project, 'button', '', '', 'iframe', true);?></li>
<li><?php common::printIcon('project', 'suspend', "projectID=$project->id", $project, 'button', '', '', 'iframe', true);?></li>
<li><?php common::printIcon('project', 'close', "projectID=$project->id", $project, 'button', '', '', 'iframe', true);?></li>
<li><?php if(common::hasPriv('project', 'delete')) echo html::a($this->createLink("project", "delete", "projectID=$project->id"), "<i class='icon-trash'></i> " . $lang->delete, 'hiddenwin', "");?></li>
</ul>
</li>
</nav>
</div>
<div class='panel-body'>
<div class='program-infos'>
<span><i class='icon icon-group'></i> <?php printf($lang->program->membersUnit, $program->teamCount); ?></span>
<span><i class='icon icon-clock'></i> <?php printf($lang->program->hoursUnit, $program->estimate); ?></span>
<span><i class='icon icon-cost'></i> <?php echo $program->budget . '' . zget($lang->program->unitList, $program->budgetUnit);?></span>
<div class='project-infos'>
<span><i class='icon icon-group'></i> <?php printf($lang->project->membersUnit, $project->teamCount); ?></span>
<span><i class='icon icon-clock'></i> <?php printf($lang->project->hoursUnit, $project->estimate); ?></span>
<span><i class='icon icon-cost'></i> <?php echo $project->budget . '' . zget($lang->project->unitList, $project->budgetUnit);?></span>
</div>
<?php if($program->model === 'waterfall'): ?>
<div class='program-detail program-stages'>
<p class='text-muted'><?php echo $lang->program->ongoingStage; ?></p>
<?php if($project->model === 'waterfall'): ?>
<div class='project-detail project-stages'>
<p class='text-muted'><?php echo $lang->project->ongoingStage; ?></p>
<?php
$programProjects = array();
foreach($program->projects as $project)
$projectProjects = array();
foreach($project->projects as $project)
{
if(!$project->parent) $programProjects[] = $project;
if(!$project->parent) $projectProjects[] = $project;
}
?>
<?php if(empty($programProjects)): ?>
<div class='label label-outline'><?php echo zget($lang->project->statusList, $program->status);?></div>
<?php if(empty($projectProjects)): ?>
<div class='label label-outline'><?php echo zget($lang->project->statusList, $project->status);?></div>
<?php else: ?>
<div class='program-stages-container scrollbar-hover'>
<div class='program-stages-row'>
<?php foreach ($programProjects as $project): ?>
<div class='program-stage-item is-<?php echo $project->status;?><?php if($project->status !== 'wait') echo ' is-going'; ?>'>
<div class='project-stages-container scrollbar-hover'>
<div class='project-stages-row'>
<?php foreach ($projectProjects as $project): ?>
<div class='project-stage-item is-<?php echo $project->status;?><?php if($project->status !== 'wait') echo ' is-going'; ?>'>
<div><?php echo $project->name; ?></div>
</div>
<?php endforeach; ?>
@@ -56,9 +56,9 @@
<?php endif; ?>
</div>
<?php else: ?>
<?php $project = $program->projects ? current($program->projects) : '';?>
<div class='program-detail program-iteration'>
<p class='text-muted'><?php echo $lang->program->lastIteration; ?></p>
<?php $project = $project->projects ? current($project->projects) : '';?>
<div class='project-detail project-iteration'>
<p class='text-muted'><?php echo $lang->project->lastIteration; ?></p>
<?php if($project):?>
<div class='row'>
<div class='col-xs-5'><?php echo $project->name; ?></div>
@@ -95,27 +95,27 @@
#cards .panel-actions .dropdown-menu > li > a {padding-left: 5px; text-align: left;}
#cards .panel-actions .dropdown-menu > li > a > i {opacity: .5; display: inline-block; margin-right: 4px; width: 18px; text-align: center;}
#cards .panel-actions .dropdown-menu > li > a:hover > i {opacity: 1;}
#cards .program-type-label {padding: 1px 2px;}
#cards .program-name {font-size: 16px; font-weight: normal; display: inline-block; max-width: 80%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle;}
#cards .program-infos {font-size: 12px;}
#cards .program-infos > span {display: inline-block; line-height: 12px;}
#cards .program-infos > span > .icon {font-size: 12px; display: inline-block; position: relative; top: -1px}
#cards .program-infos > span + span {margin-left: 15px;}
#cards .program-detail {position: absolute; bottom: 16px; left: 16px; right: 16px; font-size: 12px;}
#cards .program-detail > p {margin-bottom: 8px;}
#cards .program-detail .progress {height: 4px;}
#cards .program-detail .progress-text-left .progress-text {width: 50px; left: -50px;}
#cards .project-type-label {padding: 1px 2px;}
#cards .project-name {font-size: 16px; font-weight: normal; display: inline-block; max-width: 80%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle;}
#cards .project-infos {font-size: 12px;}
#cards .project-infos > span {display: inline-block; line-height: 12px;}
#cards .project-infos > span > .icon {font-size: 12px; display: inline-block; position: relative; top: -1px}
#cards .project-infos > span + span {margin-left: 15px;}
#cards .project-detail {position: absolute; bottom: 16px; left: 16px; right: 16px; font-size: 12px;}
#cards .project-detail > p {margin-bottom: 8px;}
#cards .project-detail .progress {height: 4px;}
#cards .project-detail .progress-text-left .progress-text {width: 50px; left: -50px;}
#cards .pager {margin: 0; float: right;}
#cards .pager .btn {border: none}
#cards .program-stages-container {margin: 0 -16px -16px -16px; padding: 0 4px; height: 46px; overflow-x: auto; position: relative;}
#cards .program-stages:after {content: ' '; width: 30px; display: block; right: -16px; top: 16px; bottom: -6px; z-index: 1; background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%); position: absolute;}
#cards .program-stages-row {position: relative; height: 30px; z-index: 0;}
#cards .program-stage-item {white-space: nowrap; position: absolute; top: 0; min-width: 48px; padding-top: 13px; color: #838A9D;}
#cards .program-stage-item > div {white-space: nowrap; overflow: visible; text-align: center; text-overflow: ellipsis;}
#cards .program-stage-item:before {content: ' '; display: block; width: 8px; height: 8px; border-radius: 50%; background: #D1D1D1; position: absolute; left: 50%; margin-left: -4px; top: 0; z-index: 1;}
#cards .program-stage-item + .program-stage-item:after {content: ' '; display: block; left: -50%; right: 50%; height: 2px; background-color: #D1D1D1; top: 3px; position: absolute; z-index: 0;}
#cards .program-stage-item.is-going {color: #333;}
#cards .program-stage-item.is-going::before {background-color: #0C64EB;}
#cards .project-stages-container {margin: 0 -16px -16px -16px; padding: 0 4px; height: 46px; overflow-x: auto; position: relative;}
#cards .project-stages:after {content: ' '; width: 30px; display: block; right: -16px; top: 16px; bottom: -6px; z-index: 1; background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%); position: absolute;}
#cards .project-stages-row {position: relative; height: 30px; z-index: 0;}
#cards .project-stage-item {white-space: nowrap; position: absolute; top: 0; min-width: 48px; padding-top: 13px; color: #838A9D;}
#cards .project-stage-item > div {white-space: nowrap; overflow: visible; text-align: center; text-overflow: ellipsis;}
#cards .project-stage-item:before {content: ' '; display: block; width: 8px; height: 8px; border-radius: 50%; background: #D1D1D1; position: absolute; left: 50%; margin-left: -4px; top: 0; z-index: 1;}
#cards .project-stage-item + .project-stage-item:after {content: ' '; display: block; left: -50%; right: 50%; height: 2px; background-color: #D1D1D1; top: 3px; position: absolute; z-index: 0;}
#cards .project-stage-item.is-going {color: #333;}
#cards .project-stage-item.is-going::before {background-color: #0C64EB;}
</style>
<script>
$(function()
@@ -137,7 +137,7 @@ $(function()
$(window).on('resize', resizeCards);
/* Auto resize stages */
$cards.find('.program-stages-container').each(function()
$cards.find('.project-stages-container').each(function()
{
var $container = $(this);
var $row = $container.children();
+67 -67
View File
@@ -1,110 +1,110 @@
<?php $canOrder = (common::hasPriv('program', 'updateOrder') and strpos($orderBy, 'order') !== false)?>
<form class='main-table' id='programForm' method='post' data-ride='table' data-nested='true' data-expand-nest-child='false' data-checkable='false'>
<table class='table has-sort-head table-fixed table-nested' id='programList'>
<?php $canOrder = (common::hasPriv('project', 'updateOrder') and strpos($orderBy, 'order') !== false)?>
<form class='main-table' id='projectForm' method='post' data-ride='table' data-nested='true' data-expand-nest-child='false' data-checkable='false'>
<table class='table has-sort-head table-fixed table-nested' id='projectList'>
<?php $vars = "status=$status&orderBy=%s";?>
<thead>
<tr>
<th class='table-nest-title'>
<a class='table-nest-toggle table-nest-toggle-global' data-expand-text='<?php echo $lang->expand; ?>' data-collapse-text='<?php echo $lang->collapse; ?>'></a>
<?php echo $lang->program->PGMName;?>
<?php echo $lang->project->PGMName;?>
</th>
<th class='w-100px'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->program->PGMPM);?></th>
<th class='text-right w-100px'><?php common::printOrderLink('budget', $orderBy, $vars, $lang->program->PGMBudget);?></th>
<th class='w-90px'> <?php common::printOrderLink('status', $orderBy, $vars, $lang->program->PGMStatus);?></th>
<th class='w-100px'><?php common::printOrderLink('begin', $orderBy, $vars, $lang->program->begin);?></th>
<th class='w-100px'><?php common::printOrderLink('end', $orderBy, $vars, $lang->program->end);?></th>
<th class='w-100px'><?php common::printOrderLink('PM', $orderBy, $vars, $lang->project->PGMPM);?></th>
<th class='text-right w-100px'><?php common::printOrderLink('budget', $orderBy, $vars, $lang->project->PGMBudget);?></th>
<th class='w-90px'> <?php common::printOrderLink('status', $orderBy, $vars, $lang->project->PGMStatus);?></th>
<th class='w-100px'><?php common::printOrderLink('begin', $orderBy, $vars, $lang->project->begin);?></th>
<th class='w-100px'><?php common::printOrderLink('end', $orderBy, $vars, $lang->project->end);?></th>
<th class='text-center w-180px'><?php echo $lang->actions;?></th>
</tr>
</thead>
<tbody id='programTableList'>
<tbody id='projectTableList'>
<?php $originOrders = array(); ?>
<?php foreach($programs as $program):?>
<?php foreach($projects as $project):?>
<?php
$trClass = '';
$trAttrs = "data-id='$program->id' data-order='$program->order' data-parent='$program->parent'";
if($program->type == 'program')
$trAttrs = "data-id='$project->id' data-order='$project->order' data-parent='$project->parent'";
if($project->type == 'project')
{
$trAttrs .= " data-nested='true'";
$trClass .= $program->parent == '0' ? ' is-top-level table-nest-child-hide' : ' table-nest-hide';
$trClass .= $project->parent == '0' ? ' is-top-level table-nest-child-hide' : ' table-nest-hide';
}
if($program->parent and isset($programs[$program->parent]))
if($project->parent and isset($projects[$project->parent]))
{
if($program->type != 'program') $trClass .= ' is-nest-child';
if(empty($program->path)) $program->path = $programs[$program->parent]->path . "$program->id,";
if($project->type != 'project') $trClass .= ' is-nest-child';
if(empty($project->path)) $project->path = $projects[$project->parent]->path . "$project->id,";
$trClass .= ' table-nest-hide';
$trAttrs .= " data-nest-parent='$program->parent' data-nest-path='$program->path'";
$trAttrs .= " data-nest-parent='$project->parent' data-nest-path='$project->path'";
}
elseif($program->type != 'program')
elseif($project->type != 'project')
{
$trClass .= ' no-nest';
}
$trAttrs .= " class='$trClass'";
$originOrders[] = $program->order;
$originOrders[] = $project->order;
?>
<tr <?php echo $trAttrs;?>>
<td class='c-name text-left <?php if($canOrder) echo 'sort-handler';?>' title='<?php echo $program->name?>'>
<span class="table-nest-icon icon icon-<?php echo $program->type; ?>"></span>
<?php if($program->type == 'program'):?>
<?php echo html::a($this->createLink('program', 'pgmproduct', "programID=$program->id"), $program->name);?>
<td class='c-name text-left <?php if($canOrder) echo 'sort-handler';?>' title='<?php echo $project->name?>'>
<span class="table-nest-icon icon icon-<?php echo $project->type; ?>"></span>
<?php if($project->type == 'project'):?>
<?php echo html::a($this->createLink('project', 'pgmproduct', "projectID=$project->id"), $project->name);?>
<?php else:?>
<?php echo html::a($this->createLink('program', 'index', "programID=$program->id", '', '', $program->id), $program->name);?>
<?php echo html::a($this->createLink('project', 'index', "projectID=$project->id", '', '', $project->id), $project->name);?>
<?php endif;?>
</td>
<td>
<?php $userID = isset($PMList[$program->PM]) ? $PMList[$program->PM]->id : ''?>
<?php if(!empty($program->PM)) echo html::a($this->createLink('user', 'profile', "userID=$userID", '', true), zget($users, $program->PM), '', "data-toggle='modal' data-type='iframe' data-width='600'");?>
<?php $userID = isset($PMList[$project->PM]) ? $PMList[$project->PM]->id : ''?>
<?php if(!empty($project->PM)) echo html::a($this->createLink('user', 'profile', "userID=$userID", '', true), zget($users, $project->PM), '', "data-toggle='modal' data-type='iframe' data-width='600'");?>
</td>
<?php $programBudget = in_array($this->app->getClientLang(), ['zh-cn','zh-tw']) && $program->budget >= 10000 ? number_format($program->budget / 10000, 1) . $lang->program->tenThousand : number_format((float)$program->budget, 1);?>
<td class='text-right'><?php echo $program->budget != 0 ? zget($lang->program->currencySymbol, $program->budgetUnit) . ' ' . $programBudget : $lang->program->future;?></td>
<td class='c-status'><span class="status-program status-<?php echo $program->status?>"><?php echo zget($lang->project->statusList, $program->status, '');?></span></td>
<td><?php echo $program->begin;?></td>
<td><?php echo $program->end == LONG_TIME ? $lang->program->PRJLongTime : $program->end;?></td>
<?php $projectBudget = in_array($this->app->getClientLang(), ['zh-cn','zh-tw']) && $project->budget >= 10000 ? number_format($project->budget / 10000, 1) . $lang->project->tenThousand : number_format((float)$project->budget, 1);?>
<td class='text-right'><?php echo $project->budget != 0 ? zget($lang->project->currencySymbol, $project->budgetUnit) . ' ' . $projectBudget : $lang->project->future;?></td>
<td class='c-status'><span class="status-project status-<?php echo $project->status?>"><?php echo zget($lang->project->statusList, $project->status, '');?></span></td>
<td><?php echo $project->begin;?></td>
<td><?php echo $project->end == LONG_TIME ? $lang->project->PRJLongTime : $project->end;?></td>
<td class='c-actions'>
<?php if($program->type == 'program'):?>
<?php if($program->status == 'wait' || $program->status == 'suspended') common::printIcon('program', 'PGMStart', "programID=$program->id", $program, 'list', 'play', '', 'iframe', true, '', $this->lang->program->PGMStart);?>
<?php if($program->status == 'doing') common::printIcon('program', 'PGMClose', "programID=$program->id", $program, 'list', 'off', '', 'iframe', true);?>
<?php if($program->status == 'closed') common::printIcon('program', 'PGMActivate', "programID=$program->id", $program, 'list', 'magic', '', 'iframe', true);?>
<?php if($project->type == 'project'):?>
<?php if($project->status == 'wait' || $project->status == 'suspended') common::printIcon('project', 'PGMStart', "projectID=$project->id", $project, 'list', 'play', '', 'iframe', true, '', $this->lang->project->PGMStart);?>
<?php if($project->status == 'doing') common::printIcon('project', 'PGMClose', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true);?>
<?php if($project->status == 'closed') common::printIcon('project', 'PGMActivate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe', true);?>
<?php if(common::hasPriv('program', 'PGMSuspend') || (common::hasPriv('program', 'PGMClose') && $program->status != 'doing') || (common::hasPriv('program', 'PGMActivate') && $program->status != 'closed')):?>
<?php if(common::hasPriv('project', 'PGMSuspend') || (common::hasPriv('project', 'PGMClose') && $project->status != 'doing') || (common::hasPriv('project', 'PGMActivate') && $project->status != 'closed')):?>
<div class='btn-group'>
<button type='button' class='btn icon-caret-down dropdown-toggle' data-toggle='dropdown' title="<?php echo $this->lang->more;?>" style="width: 16px; padding-left: 0px;"></button>
<ul class='dropdown-menu pull-right text-center' role='menu' style="min-width:auto; padding: 5px 10px;">
<?php common::printIcon('program', 'PGMSuspend', "programID=$program->id", $program, 'list', 'pause', '', 'iframe', true, '', $this->lang->program->PGMSuspend);?>
<?php if($program->status != 'doing') common::printIcon('program', 'PGMClose', "programID=$program->id", $program, 'list', 'off', '', 'iframe', true);?>
<?php if($program->status != 'closed') common::printIcon('program', 'PGMActivate', "programID=$program->id", $program, 'list', 'magic', '', 'iframe', true);?>
<?php common::printIcon('project', 'PGMSuspend', "projectID=$project->id", $project, 'list', 'pause', '', 'iframe', true, '', $this->lang->project->PGMSuspend);?>
<?php if($project->status != 'doing') common::printIcon('project', 'PGMClose', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true);?>
<?php if($project->status != 'closed') common::printIcon('project', 'PGMActivate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe', true);?>
</ul>
</div>
<?php endif;?>
<?php common::printIcon('program', 'PGMEdit', "programID=$program->id", '', 'list', 'edit');?>
<?php common::printIcon('program', 'PGMCreate', "programID=$program->id", '', 'list', 'split', '', '', '', '', $this->lang->program->PGMChildren);?>
<?php if(common::hasPriv('program', 'PGMDelete')) echo html::a($this->createLink("program", "PGMDelete", "programID=$program->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn' title='{$this->lang->program->PGMDelete}'");?>
<?php common::printIcon('project', 'PGMEdit', "projectID=$project->id", '', 'list', 'edit');?>
<?php common::printIcon('project', 'PGMCreate', "projectID=$project->id", '', 'list', 'split', '', '', '', '', $this->lang->project->PGMChildren);?>
<?php if(common::hasPriv('project', 'PGMDelete')) echo html::a($this->createLink("project", "PGMDelete", "projectID=$project->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn' title='{$this->lang->project->PGMDelete}'");?>
<?php else:?>
<?php if($program->status == 'wait' || $program->status == 'suspended') common::printIcon('program', 'PRJStart', "projectID=$program->id", $program, 'list', 'play', '', 'iframe', true);?>
<?php if($program->status == 'doing') common::printIcon('program', 'PRJClose', "projectID=$program->id", $program, 'list', 'off', '', 'iframe', true);?>
<?php if($program->status == 'closed') common::printIcon('program', 'PRJActivate', "projectID=$program->id", $program, 'list', 'magic', '', 'iframe', true);?>
<?php if(common::hasPriv('program', 'PRJSuspend') || (common::hasPriv('program', 'PRJClose') && $program->status != 'doing') || (common::hasPriv('program', 'PRJActivate') && $program->status != 'closed')):?>
<?php if($project->status == 'wait' || $project->status == 'suspended') common::printIcon('project', 'PRJStart', "projectID=$project->id", $project, 'list', 'play', '', 'iframe', true);?>
<?php if($project->status == 'doing') common::printIcon('project', 'PRJClose', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true);?>
<?php if($project->status == 'closed') common::printIcon('project', 'PRJActivate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe', true);?>
<?php if(common::hasPriv('project', 'PRJSuspend') || (common::hasPriv('project', 'PRJClose') && $project->status != 'doing') || (common::hasPriv('project', 'PRJActivate') && $project->status != 'closed')):?>
<div class='btn-group'>
<button type='button' class='btn icon-caret-down dropdown-toggle' data-toggle='dropdown' title="<?php echo $this->lang->more;?>" style="width: 16px; padding-left: 0px;"></button>
<ul class='dropdown-menu pull-right text-center' role='menu' style="min-width:auto; padding: 5px 10px;">
<?php common::printIcon('program', 'PRJSuspend', "projectID=$program->id", $program, 'list', 'pause', '', 'iframe', true);?>
<?php if($program->status != 'doing') common::printIcon('program', 'PRJClose', "projectID=$program->id", $program, 'list', 'off', '', 'iframe', true);?>
<?php if($program->status != 'closed') common::printIcon('program', 'PRJActivate', "projectID=$program->id", $program, 'list', 'magic', '', 'iframe', true);?>
<?php common::printIcon('project', 'PRJSuspend', "projectID=$project->id", $project, 'list', 'pause', '', 'iframe', true);?>
<?php if($project->status != 'doing') common::printIcon('project', 'PRJClose', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true);?>
<?php if($project->status != 'closed') common::printIcon('project', 'PRJActivate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe', true);?>
</ul>
</div>
<?php endif;?>
<?php common::printIcon('program', 'PRJEdit', "projectID=$program->id&from=pgmbrowse", $program, 'list', 'edit', '', '', '', "data-group='program'", '', $program->id);?>
<?php common::printIcon('program', 'PRJManageMembers', "projectID=$program->id", $program, 'list', 'group', '', '', '', 'data-group="program"', '', $program->id);?>
<?php common::printIcon('program', 'PRJGroup', "projectID=$program->id", $program, 'list', 'lock', '', '', '', 'data-group="program"', '', $program->id);?>
<?php if(common::hasPriv('program', 'PRJManageProducts') || common::hasPriv('program', 'PRJWhitelist') || common::hasPriv('program', 'PRJDelete')):?>
<?php common::printIcon('project', 'PRJEdit', "projectID=$project->id&from=pgmbrowse", $project, 'list', 'edit', '', '', '', "data-group='project'", '', $project->id);?>
<?php common::printIcon('project', 'PRJManageMembers', "projectID=$project->id", $project, 'list', 'group', '', '', '', 'data-group="project"', '', $project->id);?>
<?php common::printIcon('project', 'PRJGroup', "projectID=$project->id", $project, 'list', 'lock', '', '', '', 'data-group="project"', '', $project->id);?>
<?php if(common::hasPriv('project', 'PRJManageProducts') || common::hasPriv('project', 'PRJWhitelist') || common::hasPriv('project', 'PRJDelete')):?>
<div class='btn-group'>
<button type='button' class='btn dropdown-toggle' data-toggle='dropdown' title="<?php echo $this->lang->more;?>"><i class='icon-more-alt'></i></button>
<ul class='dropdown-menu pull-right text-center' role='menu'>
<?php common::printIcon('program', 'PRJManageProducts', "projectID=$program->id&programID=0&from=pgmbrowse", $program, 'list', 'link', '', '', '', "data-group='program'", '', $program->id);?>
<?php common::printIcon('program', 'PRJWhitelist', "projectID=$program->id&programID=0&module=program&from=pgmbrowse", $program, 'list', 'shield-check', '', '', '', "data-group='program'", '', $program->id);?>
<?php if(common::hasPriv('program','PRJDelete')) echo html::a($this->createLink("program", "PRJDelete", "projectID=$program->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn' title='{$this->lang->program->PRJDelete}' data-group='program'");?>
<?php common::printIcon('project', 'PRJManageProducts', "projectID=$project->id&projectID=0&from=pgmbrowse", $project, 'list', 'link', '', '', '', "data-group='project'", '', $project->id);?>
<?php common::printIcon('project', 'PRJWhitelist', "projectID=$project->id&projectID=0&module=project&from=pgmbrowse", $project, 'list', 'shield-check', '', '', '', "data-group='project'", '', $project->id);?>
<?php if(common::hasPriv('project','PRJDelete')) echo html::a($this->createLink("project", "PRJDelete", "projectID=$project->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn' title='{$this->lang->project->PRJDelete}' data-group='project'");?>
</ul>
</div>
<?php endif;?>
@@ -116,13 +116,13 @@
</table>
</form>
<style>
#programTableList.sortable-sorting > tr {opacity: 0.7}
#programTableList.sortable-sorting > tr.drag-row {opacity: 1;}
#programTableList > tr.drop-not-allowed {opacity: 0.1!important}
#programList .c-actions {overflow: visible;}
#programTableList > tr:last-child .c-actions .dropdown-menu {top: auto; bottom: 100%; margin-bottom: -5px;}
#programTableList .icon-project:before, #programTableList .no-nest .icon-program:before, #programTableList .is-nest-child .icon-program:before {content: '\e99c'; width: 22px; height: 22px; background: none; color: #16a8f8; top: 0; line-height: 22px; margin-right: 2px; font-size: 14px}
#programTableList .no-nest .icon-program:before, #programTableList .is-nest-child .icon-program:before {content: '\e944'; color: #ffe066; font-size: 16px;}
#projectTableList.sortable-sorting > tr {opacity: 0.7}
#projectTableList.sortable-sorting > tr.drag-row {opacity: 1;}
#projectTableList > tr.drop-not-allowed {opacity: 0.1!important}
#projectList .c-actions {overflow: visible;}
#projectTableList > tr:last-child .c-actions .dropdown-menu {top: auto; bottom: 100%; margin-bottom: -5px;}
#projectTableList .icon-project:before, #projectTableList .no-nest .icon-project:before, #projectTableList .is-nest-child .icon-project:before {content: '\e99c'; width: 22px; height: 22px; background: none; color: #16a8f8; top: 0; line-height: 22px; margin-right: 2px; font-size: 14px}
#projectTableList .no-nest .icon-project:before, #projectTableList .is-nest-child .icon-project:before {content: '\e944'; color: #ffe066; font-size: 16px;}
</style>
<?php js::set('originOrders', $originOrders);?>
<script>
@@ -133,7 +133,7 @@ $(function()
for(var i = 0; i < originOrders.length; ++i) ordersList.push(parseInt(originOrders[i]));
ordersList.sort(function(x, y){return x - y;});
var $list = $('#programTableList');
var $list = $('#projectTableList');
$list.addClass('sortable').sortable(
{
reverse: orderBy === 'order_desc',
@@ -155,7 +155,7 @@ $(function()
{
projects += $(this.item).data('id') + ',' ;
});
$.post(createLink('program', 'PRJUpdateOrder'), {'projects' : projects, 'orderBy' : orderBy});
$.post(createLink('project', 'PRJUpdateOrder'), {'projects' : projects, 'orderBy' : orderBy});
var $thead = $list.closest('table').children('thead');
$thead.find('.headerSortDown, .headerSortUp').removeClass('headerSortDown headerSortUp').addClass('header');
@@ -164,7 +164,7 @@ $(function()
e.element.addClass('drop-success');
setTimeout(function(){e.element.removeClass('drop-success');}, 800);
$list.children('.drop-not-allowed').removeClass('drop-not-allowed');
$('#programForm').table('initNestedList')
$('#projectForm').table('initNestedList')
}
});
});
+24 -24
View File
@@ -34,65 +34,65 @@
<?php js::set('weekend', $config->project->weekend);?>
<?php js::set('holders', $lang->project->placeholder);?>
<?php js::set('errorSameProducts', $lang->project->errorSameProducts);?>
<?php js::set('longTime', $lang->program->PRJLongTime);?>
<?php js::set('currencySymbol', $lang->program->currencySymbol);?>
<?php js::set('PGMParentBudget', $lang->program->PGMParentBudget);?>
<?php js::set('future', $lang->program->future);?>
<?php js::set('longTime', $lang->project->PRJLongTime);?>
<?php js::set('currencySymbol', $lang->project->currencySymbol);?>
<?php js::set('PGMParentBudget', $lang->project->PGMParentBudget);?>
<?php js::set('future', $lang->project->future);?>
<?php js::set('PGMList', $PGMList);?>
<?php $aclList = $parentProgram ? $lang->program->subPGMAclList : $lang->program->PGMAclList;?>
<?php $requiredFields = $config->program->PGMCreate->requiredFields;?>
<?php $aclList = $parentProgram ? $lang->project->subPGMAclList : $lang->project->PGMAclList;?>
<?php $requiredFields = $config->project->PGMCreate->requiredFields;?>
<div id='mainContent' class='main-content'>
<div class='center-block'>
<div class='main-header'>
<h2><?php echo $lang->program->PGMCreate;?></h2>
<h2><?php echo $lang->project->PGMCreate;?></h2>
</div>
<form class='form-indicator main-form form-ajax' method='post' target='hiddenwin' id='dataform'>
<table class='table table-form'>
<tr>
<th><?php echo $lang->program->PGMParent;?></th>
<th><?php echo $lang->project->PGMParent;?></th>
<td><?php echo html::select('parent', $parents, isset($parentProgram->id) ? $parentProgram->id : 0, "class='form-control chosen' onchange=setBudgetTipsAndAclList(this.value)");?>
<td></td>
</tr>
<tr>
<th class='w-120px'><?php echo $lang->program->PGMName;?></th>
<th class='w-120px'><?php echo $lang->project->PGMName;?></th>
<td class="col-main"><?php echo html::input('name', '', "class='form-control' required");?></td>
<td></td>
</tr>
<tr>
<th><?php echo $lang->program->PGMPM;?></th>
<th><?php echo $lang->project->PGMPM;?></th>
<td><?php echo html::select('PM', $pmUsers, '', "class='form-control chosen'" . (strpos($requiredFields, 'PM') !== false ? ' required' : ''));?></td>
</tr>
<tr>
<th><?php echo $lang->program->PGMBudget;?></th>
<th><?php echo $lang->project->PGMBudget;?></th>
<td>
<div class='input-group'>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->project->PGMParentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?>
<?php echo html::input('budget', '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . $placeholder);?>
<?php if($parentProgram):?>
<span class='input-group-addon fix-border'><?php echo zget($budgetUnitList, $parentProgram->budgetUnit);?></span>
<?php else:?>
<span class='input-group-addon fix-border'></span>
<?php echo html::select('budgetUnit', $budgetUnitList, $config->program->defaultCurrency, "class='form-control'");?>
<?php echo html::select('budgetUnit', $budgetUnitList, $config->project->defaultCurrency, "class='form-control'");?>
<?php endif;?>
</div>
</td>
<td>
<div class='checkbox-primary future w-70px'>
<input type='checkbox' id='future' name='future' value='1' />
<label for='future'><?php echo $lang->program->future;?></label>
<label for='future'><?php echo $lang->project->future;?></label>
</div>
</td>
</tr>
<tr>
<th><?php echo $lang->program->dateRange;?></th>
<th><?php echo $lang->project->dateRange;?></th>
<td>
<div class='input-group'>
<?php echo html::input('begin', date('Y-m-d'), "class='form-control form-date' placeholder='" . $lang->program->begin . "' required");?>
<span class='input-group-addon'><?php echo $lang->program->to;?></span>
<?php echo html::input('end', '', "class='form-control form-date' placeholder='" . $lang->program->end . "' required");?>
<?php echo html::input('begin', date('Y-m-d'), "class='form-control form-date' placeholder='" . $lang->project->begin . "' required");?>
<span class='input-group-addon'><?php echo $lang->project->to;?></span>
<?php echo html::input('end', '', "class='form-control form-date' placeholder='" . $lang->project->end . "' required");?>
</div>
</td>
<td colspan='2'><?php echo html::radio('delta', $lang->program->endList , '', "onclick='computeEndDate(this.value)'");?></td>
<td colspan='2'><?php echo html::radio('delta', $lang->project->endList , '', "onclick='computeEndDate(this.value)'");?></td>
</tr>
<tr class='hide'>
<th><?php echo $lang->project->status;?></th>
@@ -103,7 +103,7 @@
</tr>
<?php $this->printExtendFields('', 'table');?>
<tr>
<th><?php echo $lang->program->PGMDesc;?></th>
<th><?php echo $lang->project->PGMDesc;?></th>
<td colspan='3'>
<?php echo html::textarea('desc', '', "rows='6' class='form-control kindeditor' hidefocus='true'" . (strpos($requiredFields, 'desc') !== false ? ' required' : ''));?>
</td>
@@ -135,14 +135,14 @@
<h4 class='modal-title' id='myModalLabel'><?php echo $lang->project->copyTitle;?></h4>
</div>
<div class='modal-body'>
<?php if(count($programs) == 1):?>
<?php if(count($projects) == 1):?>
<div class='alert with-icon'>
<i class='icon-exclamation-sign'></i>
<div class='content'><?php echo $lang->project->copyNoProject;?></div>
</div>
<?php else:?>
<div id='copyProjects' class='row'>
<?php foreach ($programs as $id => $name):?>
<?php foreach ($projects as $id => $name):?>
<?php if(empty($id)):?>
<?php if($copyProgramID != 0):?>
<div class='col-md-4 col-sm-6'><a href='javascript:;' data-id='' class='cancel'><?php echo html::icon($lang->icons['cancel']) . ' ' . $lang->project->cancelCopy;?></a></div>
@@ -157,10 +157,10 @@
</div>
</div>
<div id='PGMAcl' class='hidden'>
<?php echo nl2br(html::radio('acl', $lang->program->PGMAclList, 'private', "onclick='setWhite(this.value);'", 'block'));?>
<?php echo nl2br(html::radio('acl', $lang->project->PGMAclList, 'private', "onclick='setWhite(this.value);'", 'block'));?>
</div>
<div id='subPGMAcl' class='hidden'>
<?php echo nl2br(html::radio('acl', $lang->program->subPGMAclList, 'private', "onclick='setWhite(this.value);'", 'block'));?>
<?php echo nl2br(html::radio('acl', $lang->project->subPGMAclList, 'private', "onclick='setWhite(this.value);'", 'block'));?>
</div>
<?php js::set('parentProgramID', isset($parentProgram->id) ? $parentProgram->id : 0);?>
<?php include '../../common/view/footer.html.php';?>
+38 -38
View File
@@ -1,11 +1,11 @@
<?php
/**
* The edit view of program module of ZenTaoPMS.
* The edit view of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package program
* @package project
* @version $Id: create.html.php 4728 2013-05-03 06:14:34Z chencongzhi520@gmail.com $
* @link http://www.zentao.net
*/
@@ -13,87 +13,87 @@
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/kindeditor.html.php';?>
<?php js::set('weekend', $config->project->weekend);?>
<?php js::set('longTime', $lang->program->PRJLongTime);?>
<?php js::set('currencySymbol', $lang->program->currencySymbol);?>
<?php js::set('PGMParentBudget', $lang->program->PGMParentBudget);?>
<?php js::set('future', $lang->program->future);?>
<?php js::set('longTime', $lang->project->PRJLongTime);?>
<?php js::set('currencySymbol', $lang->project->currencySymbol);?>
<?php js::set('PGMParentBudget', $lang->project->PGMParentBudget);?>
<?php js::set('future', $lang->project->future);?>
<?php js::set('PGMList', $PGMList);?>
<?php $aclList = $program->parent ? $lang->program->subPGMAclList : $lang->program->PGMAclList;?>
<?php $requiredFields = $config->program->PGMEdit->requiredFields;?>
<?php $aclList = $project->parent ? $lang->project->subPGMAclList : $lang->project->PGMAclList;?>
<?php $requiredFields = $config->project->PGMEdit->requiredFields;?>
<div id='mainContent' class='main-content'>
<div class='center-block'>
<div class='main-header'>
<h2><?php echo $lang->program->PGMEdit;?></h2>
<h2><?php echo $lang->project->PGMEdit;?></h2>
</div>
<form class='form-indicator main-form form-ajax' method='post' target='hiddenwin' id='dataform'>
<table class='table table-form'>
<tr>
<th class='w-120px'><?php echo $lang->program->PGMParent;?></th>
<td class="col-main"><?php echo html::select('parent', $parents, $program->parent, "class='form-control chosen' onchange=setBudgetTipsAndAclList(this.value)");?></td>
<th class='w-120px'><?php echo $lang->project->PGMParent;?></th>
<td class="col-main"><?php echo html::select('parent', $parents, $project->parent, "class='form-control chosen' onchange=setBudgetTipsAndAclList(this.value)");?></td>
<td></td><td></td>
</tr>
<tr>
<th class='w-120px'><?php echo $lang->program->PGMName;?></th>
<td class="col-main"><?php echo html::input('name', $program->name, "class='form-control' required");?></td>
<th class='w-120px'><?php echo $lang->project->PGMName;?></th>
<td class="col-main"><?php echo html::input('name', $project->name, "class='form-control' required");?></td>
</tr>
<tr>
<th><?php echo $lang->program->PGMPM;?></th>
<td><?php echo html::select('PM', $pmUsers, $program->PM, "class='form-control chosen'" . (strpos($requiredFields, 'PM') !== false ? ' required' : ''));?></td>
<th><?php echo $lang->project->PGMPM;?></th>
<td><?php echo html::select('PM', $pmUsers, $project->PM, "class='form-control chosen'" . (strpos($requiredFields, 'PM') !== false ? ' required' : ''));?></td>
</tr>
<tr>
<th><?php echo $lang->program->PGMBudget;?></th>
<th><?php echo $lang->project->PGMBudget;?></th>
<td>
<div class='input-group'>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?>
<?php echo html::input('budget', $program->budget != 0 ? $program->budget : '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($program->budget == 0 ? 'disabled ' : '') . $placeholder);?>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->project->PGMParentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?>
<?php echo html::input('budget', $project->budget != 0 ? $project->budget : '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($project->budget == 0 ? 'disabled ' : '') . $placeholder);?>
<?php if($parentProgram):?>
<span class='input-group-addon'><?php echo zget($budgetUnitList, $parentProgram->budgetUnit);?></span>
<?php else:?>
<span class='input-group-addon'></span>
<?php echo html::select('budgetUnit', $budgetUnitList, $program->budgetUnit, "class='form-control'");?>
<?php echo html::select('budgetUnit', $budgetUnitList, $project->budgetUnit, "class='form-control'");?>
<?php endif;?>
</div>
</td>
<td>
<div class='checkbox-primary future w-70px'>
<input type='checkbox' id='future' name='future' value='1' <?php if($program->budget == 0) echo 'checked';?> />
<label for='future'><?php echo $lang->program->future;?></label>
<input type='checkbox' id='future' name='future' value='1' <?php if($project->budget == 0) echo 'checked';?> />
<label for='future'><?php echo $lang->project->future;?></label>
</div>
</td>
</tr>
<tr>
<th><?php echo $lang->program->dateRange;?></th>
<th><?php echo $lang->project->dateRange;?></th>
<td>
<div class='input-group'>
<?php echo html::input('begin', $program->begin, "class='form-control form-date' placeholder='" . $lang->program->begin . "' required");?>
<span class='input-group-addon'><?php echo $lang->program->to;?></span>
<?php echo html::input('begin', $project->begin, "class='form-control form-date' placeholder='" . $lang->project->begin . "' required");?>
<span class='input-group-addon'><?php echo $lang->project->to;?></span>
<?php
$disabledEnd = $program->end == LONG_TIME ? 'disabled' : '';
$end = $program->end == LONG_TIME ? $lang->program->PRJLongTime : $program->end;
echo html::input('end', $end, "class='form-control form-date' $disabledEnd placeholder='" . $lang->program->end . "' required");
$disabledEnd = $project->end == LONG_TIME ? 'disabled' : '';
$end = $project->end == LONG_TIME ? $lang->project->PRJLongTime : $project->end;
echo html::input('end', $end, "class='form-control form-date' $disabledEnd placeholder='" . $lang->project->end . "' required");
?>
</div>
</td>
<?php $endValue = $program->end == LONG_TIME ? 999 : (strtotime($program->end) - strtotime($program->begin)) / 3600 / 24 + 1;?>
<td colspan='2'><?php echo html::radio('delta', $lang->program->endList , $endValue, "onclick='computeEndDate(this.value)'");?></td>
<?php $endValue = $project->end == LONG_TIME ? 999 : (strtotime($project->end) - strtotime($project->begin)) / 3600 / 24 + 1;?>
<td colspan='2'><?php echo html::radio('delta', $lang->project->endList , $endValue, "onclick='computeEndDate(this.value)'");?></td>
</tr>
<tr>
<th><?php echo $lang->program->realBegan;?></th>
<td><?php echo html::input('realBegan', $program->realBegan, "class='form-control form-date'");?></td><td></td><td></td>
<th><?php echo $lang->project->realBegan;?></th>
<td><?php echo html::input('realBegan', $project->realBegan, "class='form-control form-date'");?></td><td></td><td></td>
</tr>
<tr>
<th><?php echo $lang->program->PGMDesc;?></th>
<th><?php echo $lang->project->PGMDesc;?></th>
<td colspan='3'>
<?php echo html::textarea('desc', $program->desc, "rows='6' class='form-control kindeditor' hidefocus='true'" . (strpos($requiredFields, 'desc') !== false ? ' required' : ''));?>
<?php echo html::textarea('desc', $project->desc, "rows='6' class='form-control kindeditor' hidefocus='true'" . (strpos($requiredFields, 'desc') !== false ? ' required' : ''));?>
</td>
</tr>
<tr>
<th><?php echo $lang->project->acl;?></th>
<td colspan='3' class='aclBox'><?php echo nl2br(html::radio('acl', $aclList, $program->acl, "onclick='setWhite(this.value);'", 'block'));?></td>
<td colspan='3' class='aclBox'><?php echo nl2br(html::radio('acl', $aclList, $project->acl, "onclick='setWhite(this.value);'", 'block'));?></td>
</tr>
<tr class="<?php if($program->acl == 'open') echo 'hidden';?>" id="whitelistBox">
<tr class="<?php if($project->acl == 'open') echo 'hidden';?>" id="whitelistBox">
<th><?php echo $lang->whitelist;?></th>
<td><?php echo html::select('whitelist[]', $users, $program->whitelist, 'class="form-control chosen" multiple');?></td>
<td><?php echo html::select('whitelist[]', $users, $project->whitelist, 'class="form-control chosen" multiple');?></td>
<td></td>
<td></td>
</tr>
@@ -108,9 +108,9 @@
</div>
</div>
<div id='PGMAcl' class='hidden'>
<?php echo nl2br(html::radio('acl', $lang->program->PGMAclList, $program->acl == 'program' ? 'private' : 'open', "onclick='setWhite(this.value);'", 'block'));?>
<?php echo nl2br(html::radio('acl', $lang->project->PGMAclList, $project->acl == 'project' ? 'private' : 'open', "onclick='setWhite(this.value);'", 'block'));?>
</div>
<div id='subPGMAcl' class='hidden'>
<?php echo nl2br(html::radio('acl', $lang->program->subPGMAclList, $program->acl, "onclick='setWhite(this.value);'", 'block'));?>
<?php echo nl2br(html::radio('acl', $lang->project->subPGMAclList, $project->acl, "onclick='setWhite(this.value);'", 'block'));?>
</div>
<?php include '../../common/view/footer.html.php';?>
+7 -7
View File
@@ -1,6 +1,6 @@
<?php
/**
* The html product list file of pgmproduct method of program module of ZenTaoPMS.
* The html product list file of pgmproduct method of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
@@ -17,11 +17,11 @@
<?php foreach($lang->product->featureBar['all'] as $key => $label):?>
<?php $active = $key == $browseType ? 'btn-active-text' : '';?>
<?php if($key == $browseType) $label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";?>
<?php echo html::a(inlink("pgmproduct", "programID=$program->id&browseType=$key&orderBy=$orderBy"), "<span class='text'>{$label}</span>", '', "class='btn btn-link $active'");?>
<?php echo html::a(inlink("pgmproduct", "projectID=$project->id&browseType=$key&orderBy=$orderBy"), "<span class='text'>{$label}</span>", '', "class='btn btn-link $active'");?>
<?php endforeach;?>
</div>
<div class="btn-toolbar pull-right">
<?php common::printLink('product', 'create', "programID=$program->id", '<i class="icon icon-plus"></i>' . $lang->product->create, '', 'class="btn btn-primary"');?>
<?php common::printLink('product', 'create', "projectID=$project->id", '<i class="icon icon-plus"></i>' . $lang->product->create, '', 'class="btn btn-primary"');?>
</div>
<?php endif;?>
</div>
@@ -32,11 +32,11 @@
</div>
<?php else:?>
<div class="main-col">
<form class="main-table table-product" data-ride="table" id="productListForm" method="post" action='<?php echo $this->createLink('product', 'batchEdit', "programID=$program->id");?>'>
<form class="main-table table-product" data-ride="table" id="productListForm" method="post" action='<?php echo $this->createLink('product', 'batchEdit', "projectID=$project->id");?>'>
<?php $canOrder = common::hasPriv('product', 'updateOrder');?>
<?php $canBatchEdit = common::hasPriv('product', 'batchEdit');?>
<table id="productList" class="table has-sort-head table-bordered table-fixed">
<?php $vars = "programID=$program->id&browseType=$browseType&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";?>
<?php $vars = "projectID=$project->id&browseType=$browseType&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";?>
<thead>
<tr class="text-center">
<th class='c-id text-left' rowspan='2'>
@@ -96,7 +96,7 @@
<td><?php echo $product->releases;?></td>
<td><?php echo $product->plans;?></td>
<td class='c-actions'>
<?php common::printIcon('product', 'edit', "product=$product->id&action=edit&extra=&programID=$program->id", $product, 'list', 'edit');?>
<?php common::printIcon('product', 'edit', "product=$product->id&action=edit&extra=&projectID=$project->id", $product, 'list', 'edit');?>
<?php if($canOrder):?>
<span class='c-actions sort-handler'><i class="icon icon-move"></i></span>
<?php endif;?>
@@ -121,7 +121,7 @@
<?php endif;?>
</div>
<?php js::set('orderBy', $orderBy)?>
<?php js::set('programID', $program->id)?>
<?php js::set('projectID', $project->id)?>
<script>
$(function()
{
+16 -16
View File
@@ -1,37 +1,37 @@
<?php
/**
* The pgmproject view file of program module of ZenTaoPMS.
* The pgmproject view file of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package program
* @package project
* @version $Id: pgmproject.html.php 4769 2013-05-05 07:24:21Z wwccss $
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/header.html.php';?>
<?php
js::set('programID', $programID);
js::set('projectID', $projectID);
js::set('browseType', $browseType);
?>
<div id="mainMenu" class="clearfix">
<div class="btn-toolBar pull-left">
<?php foreach($lang->program->featureBar as $key => $label):?>
<?php foreach($lang->project->featureBar as $key => $label):?>
<?php $active = $browseType == $key ? 'btn-active-text' : '';?>
<?php $label = "<span class='text'>$label</span>";?>
<?php if($browseType == $key) $label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";?>
<?php echo html::a(inlink('PGMProject', "programID=$programID&browseType=$key"), $label, '', "class='btn btn-link $active'");?>
<?php echo html::a(inlink('PGMProject', "projectID=$projectID&browseType=$key"), $label, '', "class='btn btn-link $active'");?>
<?php endforeach;?>
<?php echo html::checkbox('PRJMine', array('1' => $lang->program->mine), '', $this->cookie->PRJMine ? 'checked=checked' : '');?>
<?php echo html::checkbox('PRJMine', array('1' => $lang->project->mine), '', $this->cookie->PRJMine ? 'checked=checked' : '');?>
</div>
<div class="btn-toolbar pull-right">
<?php if(isset($this->config->maxVersion)):?>
<?php common::printLink('program', 'createGuide', "programID=$programID&from=PGM", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary" data-toggle="modal" data-target="#guideDialog"');?>
<?php common::printLink('project', 'createGuide', "projectID=$projectID&from=PGM", '<i class="icon icon-plus"></i>' . $lang->project->PRJCreate, '', 'class="btn btn-primary" data-toggle="modal" data-target="#guideDialog"');?>
<?php elseif($this->config->systemMode == 'new'):?>
<?php common::printLink('program', 'prjcreate', "mode=scrum&programID=$programID&from=PGM", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary"');?>
<?php common::printLink('project', 'prjcreate', "mode=scrum&projectID=$projectID&from=PGM", '<i class="icon icon-plus"></i>' . $lang->project->PRJCreate, '', 'class="btn btn-primary"');?>
<?php else:?>
<?php common::printLink('project', 'create', '', '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary"');?>
<?php common::printLink('project', 'create', '', '<i class="icon icon-plus"></i>' . $lang->project->PRJCreate, '', 'class="btn btn-primary"');?>
<?php endif;?>
</div>
</div>
@@ -40,18 +40,18 @@ js::set('browseType', $browseType);
<?php if(empty($projectStats)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->program->noPRJ;?></span>
<?php common::printLink('program', 'createGuide', "programID=$programID", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-info btn-wide " data-toggle="modal" data-target="#guideDialog"');?>
<span class="text-muted"><?php echo $lang->project->noPRJ;?></span>
<?php common::printLink('project', 'createGuide', "projectID=$projectID", '<i class="icon icon-plus"></i>' . $lang->project->PRJCreate, '', 'class="btn btn-info btn-wide " data-toggle="modal" data-target="#guideDialog"');?>
</p>
</div>
<?php else:?>
<form class='main-table' id='projectsForm' method='post' data-ride="table">
<?php
$vars = "programID=$programID&browseType=$browseType&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";
$setting = $this->datatable->getSetting('program');
$vars = "projectID=$projectID&browseType=$browseType&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";
$setting = $this->datatable->getSetting('project');
?>
<table class='table has-sort-head'>
<?php $canBatchEdit = common::hasPriv('program', 'PRJBatchEdit');?>
<?php $canBatchEdit = common::hasPriv('project', 'PRJBatchEdit');?>
<thead>
<tr>
<?php
@@ -67,7 +67,7 @@ js::set('browseType', $browseType);
<?php foreach($projectStats as $project):?>
<tr data-id="<?php echo $project->id;?>">
<?php $project->from = 'pgmproject';?>
<?php foreach($setting as $value) $this->program->printCell($value, $project, $users, $programID);?>
<?php foreach($setting as $value) $this->project->printCell($value, $project, $users, $projectID);?>
</tr>
<?php endforeach;?>
</tbody>
@@ -80,7 +80,7 @@ js::set('browseType', $browseType);
<?php
if($canBatchEdit)
{
$actionLink = $this->createLink('program', 'PRJBatchEdit', "from=pgmproject&programID=$programID");
$actionLink = $this->createLink('project', 'PRJBatchEdit', "from=pgmproject&projectID=$projectID");
$misc = "data-form-action='$actionLink'";
echo html::commonButton($lang->edit, $misc);
}
+11 -11
View File
@@ -1,6 +1,6 @@
<?php
/**
* The stakeholder view of program module of ZenTaoPMS.
* The stakeholder view of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
@@ -11,13 +11,13 @@
*/
?>
<?php include '../../common/view/header.html.php';?>
<?php js::set('confirmDelete', $lang->program->confirmDelete);?>
<?php js::set('confirmDelete', $lang->project->confirmDelete);?>
<div id="mainMenu" class="clearfix">
<div class="btn-toolbar pull-left">
<?php echo html::a($this->createLink('program', 'pgmstakeholder', "programID=$programID"), '<span class="text">' . $lang->program->PGMStakeholder . '</span>', '', 'class="btn btn-link btn-active-text"');?>
<?php echo html::a($this->createLink('project', 'pgmstakeholder', "projectID=$projectID"), '<span class="text">' . $lang->project->PGMStakeholder . '</span>', '', 'class="btn btn-link btn-active-text"');?>
</div>
<div class="btn-toolbar pull-right">
<?php common::printLink('stakeholder', 'create', "programID=$programID", "<i class='icon icon-plus'></i>" . $lang->program->createStakeholder, '', "class='btn btn-primary'");?>
<?php common::printLink('stakeholder', 'create', "projectID=$projectID", "<i class='icon icon-plus'></i>" . $lang->project->createStakeholder, '', "class='btn btn-primary'");?>
</div>
</div>
<div id='mainContent' class='main-row fade'>
@@ -32,7 +32,7 @@
<?php echo $lang->idAB;?>
</th>
<th><?php echo $lang->user->realname;?></th>
<th class="w-100px"><?php echo $lang->program->stakeholderType;?></th>
<th class="w-100px"><?php echo $lang->project->stakeholderType;?></th>
<th class="w-120px"><?php echo $lang->user->role;?></th>
<th class="w-120px"><?php echo $lang->user->phone;?></th>
<th class="w-120px"><?php echo $lang->user->qq;?></th>
@@ -49,9 +49,9 @@
<?php printf('%03d', $stakeholder->id);?>
</td>
<?php $isKey = $stakeholder->key ? " <i class='icon icon-star-empty'></i>" : '';?>
<?php $title = $stakeholder->key ? $lang->program->isStakeholderKey : '';?>
<?php $title = $stakeholder->key ? $lang->project->isStakeholderKey : '';?>
<td title="<?php echo $title;?>"><?php echo $stakeholder->realname . $isKey;?></td>
<td title='<?php echo zget($lang->program->stakeholderTypeList, $stakeholder->type, '');?>'><?php echo zget($lang->program->stakeholderTypeList, $stakeholder->type, '');?></td>
<td title='<?php echo zget($lang->project->stakeholderTypeList, $stakeholder->type, '');?>'><?php echo zget($lang->project->stakeholderTypeList, $stakeholder->type, '');?></td>
<td><?php echo zget($lang->user->roleList, $stakeholder->role, '');?></td>
<td title="<?php echo $stakeholder->phone;?>"><?php echo $stakeholder->phone;?></td>
<td title="<?php echo $stakeholder->qq;?>"><?php echo $stakeholder->qq;?></td>
@@ -59,8 +59,8 @@
<td title="<?php echo $stakeholder->email;?>"><?php echo $stakeholder->email;?></td>
<td class='c-actions'>
<?php
$deleteClass = common::hasPriv('program', 'unlinkStakeholder') ? 'btn' : 'btn disabled';
echo html::a($this->createLink('program', 'unlinkStakeholder', "id=$stakeholder->id&programID=$programID&confirm=no"), '<i class="icon-unlink"></i>', 'hiddenwin', "title='{$lang->program->unlinkStakeholder}' class='{$deleteClass}'");
$deleteClass = common::hasPriv('project', 'unlinkStakeholder') ? 'btn' : 'btn disabled';
echo html::a($this->createLink('project', 'unlinkStakeholder', "id=$stakeholder->id&projectID=$projectID&confirm=no"), '<i class="icon-unlink"></i>', 'hiddenwin', "title='{$lang->project->unlinkStakeholder}' class='{$deleteClass}'");
?>
</td>
</tr>
@@ -71,8 +71,8 @@
<div class='table-footer'>
<div class="checkbox-primary check-all"><label><?php echo $lang->selectAll?></label></div>
<div class="table-actions">
<?php $actionLink = $this->createLink('program', 'batchUnlinkStakeholders', "programID=$programID");?>
<?php echo html::commonButton($lang->program->unlink, "onclick=\"setFormAction('$actionLink', 'hiddenwin')\"");?>
<?php $actionLink = $this->createLink('project', 'batchUnlinkStakeholders', "projectID=$projectID");?>
<?php echo html::commonButton($lang->project->unlink, "onclick=\"setFormAction('$actionLink', 'hiddenwin')\"");?>
</div>
<?php $pager->show('right', 'pagerjs');?>
</div>
+5 -5
View File
@@ -1,11 +1,11 @@
<?php
/**
* The prjstart view file of program module of ZenTaoPMS.
* The prjstart view file of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package program
* @package project
* @version $Id: prjstart.html.php 4769 2013-05-05 07:24:21Z wwccss $
* @link http://www.zentao.net
*/
@@ -15,8 +15,8 @@
<div id='mainContent' class='main-content'>
<div class='main-header'>
<h2>
<span class='prefix label-id'><strong><?php echo $program->id;?></strong></span>
<?php echo isonlybody() ? ("<span title='$program->name'>" . $program->name . '</span>') : html::a($this->createLink('project', 'view', 'project=' . $program->id), $program->name, '_blank');?>
<span class='prefix label-id'><strong><?php echo $project->id;?></strong></span>
<?php echo isonlybody() ? ("<span title='$project->name'>" . $project->name . '</span>') : html::a($this->createLink('project', 'view', 'project=' . $project->id), $project->name, '_blank');?>
<?php if(!isonlybody()):?>
<small><?php echo $lang->arrow . $lang->project->start;?></small>
<?php endif;?>
@@ -26,7 +26,7 @@
<table class='table table-form'>
<tbody>
<tr>
<th class='w-100px'><?php echo $lang->program->realBegan;?></th>
<th class='w-100px'><?php echo $lang->project->realBegan;?></th>
<td><?php echo html::input('realBegan', helper::today(), "class='form-control form-date'");?></td>
<td></td>
</tr>
+17 -17
View File
@@ -1,53 +1,53 @@
<?php
/**
* The prjbatchedit view file of program module of ZenTaoPMS.
* The prjbatchedit view file of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2021 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Shujie Tian <tianshujie@easycorp.ltd>
* @package program
* @package project
* @version $Id: prjbatchedit.html.php 4769 2021-02-020 11:13:21Z $
* @link https://www.zentao.net
*/
?>
<?php include '../../common/view/header.html.php';?>
<?php js::set('weekend', $config->project->weekend);?>
<?php js::set('linkedProjectsTip', $lang->program->linkedProjectsTip);?>
<?php js::set('changeProgram', $lang->program->changeProgram);?>
<?php $requiredFields = $config->program->PRJEdit->requiredFields;?>
<?php js::set('linkedProjectsTip', $lang->project->linkedProjectsTip);?>
<?php js::set('changeProgram', $lang->project->changeProgram);?>
<?php $requiredFields = $config->project->PRJEdit->requiredFields;?>
<div id="mainContent" class="main-content">
<div class="main-header">
<h2><?php echo $lang->program->PRJBatchEdit;?></h2>
<h2><?php echo $lang->project->PRJBatchEdit;?></h2>
</div>
<form method='post' class='load-indicator main-form' enctype='multipart/form-data' target='hiddenwin' id="batchEditForm">
<table class="table table-form">
<thead>
<tr>
<th class='w-40px'><?php echo $lang->idAB;?></th>
<th class='w-200px'><?php echo $lang->program->PGMParent;?></th>
<th class='c-name required'><?php echo $lang->program->PRJName;?></th>
<th class="w-150px <?php echo strpos($requiredFields, 'PM') !== false ? 'required' : '';?>"> <?php echo $lang->program->PRJPM;?></th>
<th class='w-120px required'><?php echo $lang->program->begin;?></th>
<th class='w-120px required'><?php echo $lang->program->end;?></th>
<th class='w-200px'><?php echo $lang->project->PGMParent;?></th>
<th class='c-name required'><?php echo $lang->project->PRJName;?></th>
<th class="w-150px <?php echo strpos($requiredFields, 'PM') !== false ? 'required' : '';?>"> <?php echo $lang->project->PRJPM;?></th>
<th class='w-120px required'><?php echo $lang->project->begin;?></th>
<th class='w-120px required'><?php echo $lang->project->end;?></th>
<th class='w-250px'><?php echo $lang->project->acl;?></th>
</tr>
</thead>
<tbody>
<?php foreach($projects as $projectID => $project):?>
<?php $aclList = $project->parent ? $lang->program->PGMPRJAcls : $lang->program->PRJAcls;?>
<?php $aclList = $project->parent ? $lang->project->PGMPRJAcls : $lang->project->PRJAcls;?>
<tr>
<td><?php echo sprintf('%03d', $projectID) . html::hidden("projectIdList[$projectID]", $projectID);?></td>
<td><?php echo html::select("parents[$projectID]", $programList, $project->parent, "class='form-control chosen' data-id='$projectID' data-name='{$project->name}' data-parent='{$project->parent}'");?></td>
<td><?php echo html::select("parents[$projectID]", $projectList, $project->parent, "class='form-control chosen' data-id='$projectID' data-name='{$project->name}' data-parent='{$project->parent}'");?></td>
<td title='<?php echo $project->name;?>'><?php echo html::input("names[$projectID]", $project->name, "class='form-control'");?></td>
<td><?php echo html::select("PMs[$projectID]", $PMUsers, $project->PM, "class='form-control chosen'");?></td>
<td>
<?php echo html::input("begins[$projectID]", $project->begin, "class='form-control form-date' onchange='computeWorkDays(this.id);' placeholder='" . $lang->program->begin . "'");?>
<?php echo html::input("begins[$projectID]", $project->begin, "class='form-control form-date' onchange='computeWorkDays(this.id);' placeholder='" . $lang->project->begin . "'");?>
</td>
<td>
<?php
$disabledEnd = $project->end == LONG_TIME ? 'disabled' : '';
$end = $project->end == LONG_TIME ? $lang->program->PRJLongTime : $project->end;
echo html::input("ends[$projectID]", $end, "class='form-control form-date' $disabledEnd onchange='computeWorkDays(this.id);' placeholder='" . $lang->program->end . "'");
$end = $project->end == LONG_TIME ? $lang->project->PRJLongTime : $project->end;
echo html::input("ends[$projectID]", $end, "class='form-control form-date' $disabledEnd onchange='computeWorkDays(this.id);' placeholder='" . $lang->project->end . "'");
echo html::hidden("dayses[$projectID]", $project->days);
?>
</td>
@@ -76,7 +76,7 @@
<table class='table table-form' id='promptTable'>
<thead>
<tr>
<th class='text-left'><?php echo $lang->program->multiLinkedProductsTip;?></th>
<th class='text-left'><?php echo $lang->project->multiLinkedProductsTip;?></th>
</tr>
</thead>
<tbody></tbody>
+20 -20
View File
@@ -1,11 +1,11 @@
<?php
/**
* The prjbrowse view file of program module of ZenTaoPMS.
* The prjbrowse view file of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package program
* @package project
* @version $Id: prjbrowse.html.php 4769 2013-05-05 07:24:21Z wwccss $
* @link http://www.zentao.net
*/
@@ -13,34 +13,34 @@
<?php include '../../common/view/header.html.php';?>
<?php
js::set('orderBy', $orderBy);
js::set('programID', $programID);
js::set('projectID', $projectID);
js::set('browseType', $browseType);
?>
<div id="mainMenu" class="clearfix">
<?php if($this->config->systemMode == 'new'):?>
<div id="sidebarHeader">
<div class="title">
<?php echo empty($program) ? $lang->program->project : $program->name;?>
<?php if($programID) echo html::a(inLink('PRJBrowse', 'programID=0'), "<i class='icon icon-sm icon-close'></i>", '', 'class="text-muted"');?>
<?php echo empty($project) ? $lang->project->project : $project->name;?>
<?php if($projectID) echo html::a(inLink('PRJBrowse', 'projectID=0'), "<i class='icon icon-sm icon-close'></i>", '', 'class="text-muted"');?>
</div>
</div>
<?php endif;?>
<div class="btn-toolBar pull-left">
<?php foreach($lang->program->featureBar as $key => $label):?>
<?php foreach($lang->project->featureBar as $key => $label):?>
<?php $active = $browseType == $key ? 'btn-active-text' : '';?>
<?php $label = "<span class='text'>$label</span>";?>
<?php if($browseType == $key) $label .= " <span class='label label-light label-badge'>{$pager->recTotal}</span>";?>
<?php echo html::a(inlink('PRJBrowse', "programID=$programID&browseType=$key"), $label, '', "class='btn btn-link $active'");?>
<?php echo html::a(inlink('PRJBrowse', "projectID=$projectID&browseType=$key"), $label, '', "class='btn btn-link $active'");?>
<?php endforeach;?>
<?php echo html::checkbox('PRJMine', array('1' => $lang->program->mine), '', $this->cookie->PRJMine ? 'checked=checked' : '');?>
<?php echo html::checkbox('PRJMine', array('1' => $lang->project->mine), '', $this->cookie->PRJMine ? 'checked=checked' : '');?>
</div>
<div class="btn-toolbar pull-right">
<?php if(isset($this->config->maxVersion)):?>
<?php common::printLink('program', 'createGuide', "programID=$programID", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary" data-toggle="modal" data-target="#guideDialog"');?>
<?php common::printLink('project', 'createGuide', "projectID=$projectID", '<i class="icon icon-plus"></i>' . $lang->project->PRJCreate, '', 'class="btn btn-primary" data-toggle="modal" data-target="#guideDialog"');?>
<?php elseif($this->config->systemMode == 'new'):?>
<?php common::printLink('program', 'prjcreate', 'mode=scrum', '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary"');?>
<?php common::printLink('project', 'prjcreate', 'mode=scrum', '<i class="icon icon-plus"></i>' . $lang->project->PRJCreate, '', 'class="btn btn-primary"');?>
<?php else:?>
<?php common::printLink('project', 'create', '', '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-primary"');?>
<?php common::printLink('project', 'create', '', '<i class="icon icon-plus"></i>' . $lang->project->PRJCreate, '', 'class="btn btn-primary"');?>
<?php endif;?>
</div>
</div>
@@ -51,7 +51,7 @@ js::set('browseType', $browseType);
<div class="cell">
<?php echo $PRJTree;?>
<div class="text-center">
<?php common::printLink('program', 'PRJProgramTitle', '', $lang->program->PRJModuleSetting, '', "class='btn btn-info btn-wide iframe'", true, true);?>
<?php common::printLink('project', 'PRJProgramTitle', '', $lang->project->PRJModuleSetting, '', "class='btn btn-info btn-wide iframe'", true, true);?>
</div>
</div>
</div>
@@ -60,11 +60,11 @@ js::set('browseType', $browseType);
<?php if(empty($projectStats)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->program->noPRJ;?></span>
<span class="text-muted"><?php echo $lang->project->noPRJ;?></span>
<?php if($this->config->systemMode == 'new'):?>
<?php common::printLink('program', 'createGuide', "programID=$programID", '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-info btn-wide " data-toggle="modal" data-target="#guideDialog"');?>
<?php common::printLink('project', 'createGuide', "projectID=$projectID", '<i class="icon icon-plus"></i>' . $lang->project->PRJCreate, '', 'class="btn btn-info btn-wide " data-toggle="modal" data-target="#guideDialog"');?>
<?php else:?>
<?php common::printLink('project', 'create', '', '<i class="icon icon-plus"></i>' . $lang->program->PRJCreate, '', 'class="btn btn-info btn-wide"');?>
<?php common::printLink('project', 'create', '', '<i class="icon icon-plus"></i>' . $lang->project->PRJCreate, '', 'class="btn btn-info btn-wide"');?>
<?php endif;?>
</p>
</div>
@@ -74,11 +74,11 @@ js::set('browseType', $browseType);
<nav class="btn-toolbar pull-right"></nav>
</div>
<?php
$vars = "programID=$programID&browseType=$browseType&param=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";
$setting = $this->datatable->getSetting('program');
$vars = "projectID=$projectID&browseType=$browseType&param=$param&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}&pageID={$pager->pageID}";
$setting = $this->datatable->getSetting('project');
?>
<table class='table has-sort-head'>
<?php $canBatchEdit = $this->config->systemMode == 'new' ? common::hasPriv('program', 'PRJBatchEdit') : common::hasPriv('project', 'batchEdit');?>
<?php $canBatchEdit = $this->config->systemMode == 'new' ? common::hasPriv('project', 'PRJBatchEdit') : common::hasPriv('project', 'batchEdit');?>
<thead>
<tr>
<?php
@@ -94,7 +94,7 @@ js::set('browseType', $browseType);
<?php foreach($projectStats as $project):?>
<?php $project->from = 'PRJ';?>
<tr data-id="<?php echo $project->id;?>">
<?php foreach($setting as $value) $this->program->printCell($value, $project, $users, $programID);?>
<?php foreach($setting as $value) $this->project->printCell($value, $project, $users, $projectID);?>
</tr>
<?php endforeach;?>
</tbody>
@@ -107,7 +107,7 @@ js::set('browseType', $browseType);
<?php
if($canBatchEdit)
{
$actionLink = $this->config->systemMode == 'new' ? $this->createLink('program', 'PRJBatchEdit', 'from=prjbrowse') : $this->createLink('project', 'batchEdit');
$actionLink = $this->config->systemMode == 'new' ? $this->createLink('project', 'PRJBatchEdit', 'from=prjbrowse') : $this->createLink('project', 'batchEdit');
$misc = "data-form-action='$actionLink'";
echo html::commonButton($lang->edit, $misc);
}
+32 -32
View File
@@ -1,11 +1,11 @@
<?php
/**
* The prjcreate view file of program module of ZenTaoPMS.
* The prjcreate view file of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package program
* @package project
* @version $Id: prjcreate.html.php 4769 2013-05-05 07:24:21Z wwccss $
* @link http://www.zentao.net
*/
@@ -14,70 +14,70 @@
<?php include '../../common/view/kindeditor.html.php';?>
<?php js::import($jsRoot . 'misc/date.js');?>
<?php js::set('model', $model);?>
<?php js::set('programID', $programID);?>
<?php js::set('projectID', $projectID);?>
<?php js::set('copyProjectID', $copyProjectID);?>
<?php js::set('from', $from);?>
<?php js::set('weekend', $config->project->weekend);?>
<?php js::set('errorSameProducts', $lang->program->errorSameProducts);?>
<?php js::set('longTime', $lang->program->PRJLongTime);?>
<?php $requiredFields = $config->program->PRJCreate->requiredFields;?>
<?php js::set('errorSameProducts', $lang->project->errorSameProducts);?>
<?php js::set('longTime', $lang->project->PRJLongTime);?>
<?php $requiredFields = $config->project->PRJCreate->requiredFields;?>
<div id='mainContent' class='main-content'>
<div class='center-block'>
<div class='main-header'>
<h2><?php echo $lang->program->PRJCreate . ' - ' . zget($lang->program->modelList, $model, '');?></h2>
<h2><?php echo $lang->project->PRJCreate . ' - ' . zget($lang->project->modelList, $model, '');?></h2>
<div class="pull-right btn-toolbar">
<button type='button' class='btn btn-link' data-toggle='modal' data-target='#copyProjectModal'><?php echo html::icon($lang->icons['copy'], 'muted') . ' ' . $lang->program->PRJCopy;?></button>
<button type='button' class='btn btn-link' data-toggle='modal' data-target='#copyProjectModal'><?php echo html::icon($lang->icons['copy'], 'muted') . ' ' . $lang->project->PRJCopy;?></button>
</div>
</div>
<form class='form-indicator main-form form-ajax' method='post' target='hiddenwin' id='dataform'>
<table class='table table-form'>
<tr>
<th class='w-120px'><?php echo $lang->program->PGMParent;?></th>
<td><?php echo html::select('parent', $programList, $programID, "class='form-control chosen' onchange='setParentProgram(this.value)'");?></td>
<th class='w-120px'><?php echo $lang->project->PGMParent;?></th>
<td><?php echo html::select('parent', $projectList, $projectID, "class='form-control chosen' onchange='setParentProgram(this.value)'");?></td>
<td>
<icon class='icon icon-help' data-toggle='popover' data-trigger='focus hover' data-placement='right' data-tip-class='text-muted popover-sm' data-content="<?php echo $lang->program->PGMTips;?>"></icon>
<icon class='icon icon-help' data-toggle='popover' data-trigger='focus hover' data-placement='right' data-tip-class='text-muted popover-sm' data-content="<?php echo $lang->project->PGMTips;?>"></icon>
</td>
<td></td>
</tr>
<tr>
<th><?php echo $lang->program->PRJName;?></th>
<th><?php echo $lang->project->PRJName;?></th>
<td class="col-main"><?php echo html::input('name', $name, "class='form-control' required");?></td><td></td><td></td>
</tr>
<tr>
<th><?php echo $lang->program->PRJPM;?></th>
<th><?php echo $lang->project->PRJPM;?></th>
<td><?php echo html::select('PM', $pmUsers, '', "class='form-control chosen'" . (strpos($requiredFields, 'PM') !== false ? ' required' : ''));?></td>
</tr>
<tr>
<th><?php echo $lang->program->PRJBudget;?></th>
<th><?php echo $lang->project->PRJBudget;?></th>
<td>
<div class='input-group'>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->project->PGMParentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?>
<?php echo html::input('budget', '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . $placeholder);?>
<?php if($parentProgram):?>
<span class='input-group-addon'><?php echo zget($budgetUnitList, $parentProgram->budgetUnit);?></span>
<?php else:?>
<span class='input-group-addon'></span>
<?php echo html::select('budgetUnit', $budgetUnitList, $config->program->defaultCurrency, "class='form-control'");?>
<?php echo html::select('budgetUnit', $budgetUnitList, $config->project->defaultCurrency, "class='form-control'");?>
<?php endif;?>
</div>
</td>
<td>
<div class='checkbox-primary'>
<input type='checkbox' id='future' name='future' value='1' />
<label for='future'><?php echo $lang->program->future;?></label>
<label for='future'><?php echo $lang->project->future;?></label>
</div>
</td>
</tr>
<tr>
<th><?php echo $lang->program->dateRange;?></th>
<th><?php echo $lang->project->dateRange;?></th>
<td>
<div class='input-group'>
<?php echo html::input('begin', date('Y-m-d'), "class='form-control form-date' onchange='computeWorkDays();' placeholder='" . $lang->program->begin . "' required");?>
<span class='input-group-addon'><?php echo $lang->program->to;?></span>
<?php echo html::input('end', '', "class='form-control form-date' onchange='computeWorkDays();' placeholder='" . $lang->program->end . "' required");?>
<?php echo html::input('begin', date('Y-m-d'), "class='form-control form-date' onchange='computeWorkDays();' placeholder='" . $lang->project->begin . "' required");?>
<span class='input-group-addon'><?php echo $lang->project->to;?></span>
<?php echo html::input('end', '', "class='form-control form-date' onchange='computeWorkDays();' placeholder='" . $lang->project->end . "' required");?>
</div>
</td>
<td colspan='2'><?php echo html::radio('delta', $lang->program->endList , '', "onclick='computeEndDate(this.value)'");?></td>
<td colspan='2'><?php echo html::radio('delta', $lang->project->endList , '', "onclick='computeEndDate(this.value)'");?></td>
</tr>
<?php if($model == 'scrum'):?>
<tr>
@@ -106,10 +106,10 @@
</div>
<?php $i++;?>
<?php endforeach;?>
<div class='col-sm-4 <?php if($programID) echo 'required';?>' style="padding-right: 6px;">
<div class='col-sm-4 <?php if($projectID) echo 'required';?>' style="padding-right: 6px;">
<div class='input-group'>
<?php echo html::select("products[$i]", $allProducts, '', "class='form-control chosen' onchange='loadBranches(this)'");?>
<span class='input-group-addon'><?php echo html::checkBox('newProduct', $lang->program->addProduct, '', "onchange=addNewProduct(this);");?></span>
<span class='input-group-addon'><?php echo html::checkBox('newProduct', $lang->project->addProduct, '', "onchange=addNewProduct(this);");?></span>
</div>
</div>
</div>
@@ -138,14 +138,14 @@
</tr>
<?php $this->printExtendFields('', 'table');?>
<tr>
<th><?php echo $lang->program->PRJDesc;?></th>
<th><?php echo $lang->project->PRJDesc;?></th>
<td colspan='3'>
<?php echo html::textarea('desc', '', "rows='6' class='form-control kindeditor' hidefocus='true'" . (strpos($requiredFields, 'desc') !== false ? ' required' : ''));?>
</td>
</tr>
<tr>
<th><?php echo $lang->project->acl;?></th>
<td colspan='3' class='aclBox'><?php echo nl2br(html::radio('acl', $lang->program->PRJAclList, $acl, "onclick='setWhite(this.value);'", 'block'));?></td>
<td colspan='3' class='aclBox'><?php echo nl2br(html::radio('acl', $lang->project->PRJAclList, $acl, "onclick='setWhite(this.value);'", 'block'));?></td>
</tr>
<tr class="hidden" id="whitelistBox">
<th><?php echo $lang->whitelist;?></th>
@@ -154,8 +154,8 @@
<td></td>
</tr>
<tr>
<th><?php echo $lang->program->auth;?></th>
<td colspan='3'><?php echo html::radio('auth', $lang->program->PRJAuthList, $auth, '', 'block');?></td>
<th><?php echo $lang->project->auth;?></th>
<td colspan='3'><?php echo html::radio('auth', $lang->project->PRJAuthList, $auth, '', 'block');?></td>
</tr>
<tr>
<td colspan='4' class='text-center form-actions'>
@@ -175,7 +175,7 @@
<div class='modal-header'>
<button type='button' class='close' data-dismiss='modal'><i class="icon icon-close"></i></button>
<h4 class='modal-title' id='myModalLabel'>
<?php echo $lang->program->copyTitle;?>
<?php echo $lang->project->copyTitle;?>
<?php echo html::input('projectName', '', "class='form-control' placeholder={$lang->project->searchByName}");?>
</h4>
</div>
@@ -183,7 +183,7 @@
<?php if(empty($copyProjects)):?>
<div class='alert with-icon'>
<i class='icon-exclamation-sign'></i>
<div class='content'><?php echo $lang->program->copyNoProject;?></div>
<div class='content'><?php echo $lang->project->copyNoProject;?></div>
</div>
<?php else:?>
<div id='copyProjects' class='row'>
@@ -197,9 +197,9 @@
</div>
</div>
<div id='PRJAcl' class='hidden'>
<?php echo nl2br(html::radio('acl', $lang->program->PRJAclList, $acl, "onclick='setWhite(this.value);'", 'block'));?>
<?php echo nl2br(html::radio('acl', $lang->project->PRJAclList, $acl, "onclick='setWhite(this.value);'", 'block'));?>
</div>
<div id='PGMAcl' class='hidden'>
<?php echo nl2br(html::radio('acl', $lang->program->PGMPRJAclList, $acl, "onclick='setWhite(this.value);'", 'block'));?>
<?php echo nl2br(html::radio('acl', $lang->project->PGMPRJAclList, $acl, "onclick='setWhite(this.value);'", 'block'));?>
</div>
<?php include '../../common/view/footer.html.php';?>
+15 -15
View File
@@ -1,11 +1,11 @@
<?php
/**
* The prjcreateguide view file of program module of ZenTaoPMS.
* The prjcreateguide view file of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package program
* @package project
* @version $Id: prjcreateguide.html.php 4769 2013-05-05 07:24:21Z wwccss $
* @link http://www.zentao.net
*/
@@ -14,25 +14,25 @@
<div class="modal-dialog">
<div class='modal-content'>
<div class='modal-body'>
<h2 class='text-center'><?php echo $lang->program->chooseProgramType; ?></h2>
<h2 class='text-center'><?php echo $lang->project->chooseProgramType; ?></h2>
<div class='row'>
<div class='col-xs-6'>
<div class='program-type text-center'>
<img class='program-type-img' data-type='scrum' src='<?php echo $config->webRoot . 'theme/default/images/main/scrum.png'?>'>
<h3><?php echo $lang->program->scrum; ?></h3>
<p><?php echo $lang->program->scrumTitle; ?></p>
<div class='project-type text-center'>
<img class='project-type-img' data-type='scrum' src='<?php echo $config->webRoot . 'theme/default/images/main/scrum.png'?>'>
<h3><?php echo $lang->project->scrum; ?></h3>
<p><?php echo $lang->project->scrumTitle; ?></p>
</div>
</div>
<div class='col-xs-6'>
<div class='program-type text-center'>
<img class='program-type-img' data-type='waterfall' src='<?php echo $config->webRoot . 'theme/default/images/main/waterfall.png'?>'>
<h3><?php echo $lang->program->waterfall; ?></h3>
<p><?php echo $lang->program->waterfallTitle; ?></p>
<div class='project-type text-center'>
<img class='project-type-img' data-type='waterfall' src='<?php echo $config->webRoot . 'theme/default/images/main/waterfall.png'?>'>
<h3><?php echo $lang->project->waterfall; ?></h3>
<p><?php echo $lang->project->waterfallTitle; ?></p>
</div>
</div>
</div>
<div class='modal-footer text-center'>
<a class='btn btn-primary btn-wide disabled' id='guideBtn'><?php echo $lang->program->nextStep; ?></a>
<a class='btn btn-primary btn-wide disabled' id='guideBtn'><?php echo $lang->project->nextStep; ?></a>
<button type='button' class='btn btn-default btn-wide' data-dismiss='modal'><?php echo $lang->cancel; ?></button>
</div>
</div>
@@ -40,11 +40,11 @@
</div>
</div>
<script>
$('#guideDialog').on('click', '.program-type-img', function()
$('#guideDialog').on('click', '.project-type-img', function()
{
var $this = $(this);
$('#guideDialog .program-type.active').removeClass('active');
$('#guideDialog .project-type.active').removeClass('active');
$this.parent().addClass('active');
$('#guideBtn').removeClass('disabled').attr('href', createLink('program', 'PRJCreate', 'template=' + $this.data('type') + "&programID=" + programID));
$('#guideBtn').removeClass('disabled').attr('href', createLink('project', 'PRJCreate', 'template=' + $this.data('type') + "&projectID=" + projectID));
});
</script>
+31 -31
View File
@@ -1,11 +1,11 @@
<?php
/**
* The prjedit view file of program module of ZenTaoPMS.
* The prjedit view file of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package program
* @package project
* @version $Id
* @link http://www.zentao.net
*/
@@ -14,42 +14,42 @@
<?php include '../../common/view/kindeditor.html.php';?>
<?php js::import($jsRoot . 'misc/date.js');?>
<?php js::set('weekend', $config->project->weekend);?>
<?php js::set('errorSameProducts', $lang->program->errorSameProducts);?>
<?php js::set('errorSameProducts', $lang->project->errorSameProducts);?>
<?php js::set('oldParent', $project->parent);?>
<?php js::set('projectID', $project->id);?>
<?php js::set('longTime', $lang->program->PRJLongTime);?>
<?php js::set('longTime', $lang->project->PRJLongTime);?>
<?php js::set('from', $from);?>
<?php js::set('unmodifiableProducts', $unmodifiableProducts)?>
<?php js::set('tip', $lang->program->notAllowRemoveProducts);?>
<?php js::set('linkedProjectsTip', $lang->program->linkedProjectsTip);?>
<?php $aclList = $project->parent ? $lang->program->PGMPRJAclList : $lang->program->PRJAclList;?>
<?php $requiredFields = $config->program->PRJEdit->requiredFields;?>
<?php js::set('tip', $lang->project->notAllowRemoveProducts);?>
<?php js::set('linkedProjectsTip', $lang->project->linkedProjectsTip);?>
<?php $aclList = $project->parent ? $lang->project->PGMPRJAclList : $lang->project->PRJAclList;?>
<?php $requiredFields = $config->project->PRJEdit->requiredFields;?>
<div id='mainContent' class='main-content'>
<div class='center-block'>
<div class='main-header'>
<h2><?php echo $lang->program->PRJEdit;?></h2>
<h2><?php echo $lang->project->PRJEdit;?></h2>
</div>
<form class='form-indicator main-form form-ajax' method='post' target='hiddenwin' id='dataform'>
<table class='table table-form'>
<tr>
<th class='w-120px'><?php echo $lang->program->PGMParent;?></th>
<td><?php echo html::select('parent', $programList, $project->parent, "class='form-control chosen'");?></td>
<th class='w-120px'><?php echo $lang->project->PGMParent;?></th>
<td><?php echo html::select('parent', $projectList, $project->parent, "class='form-control chosen'");?></td>
<td></td>
<td></td>
</tr>
<tr>
<th><?php echo $lang->program->PRJName;?></th>
<th><?php echo $lang->project->PRJName;?></th>
<td class="col-main"><?php echo html::input('name', $project->name, "class='form-control' required");?></td><td></td><td></td>
</tr>
<tr>
<th><?php echo $lang->program->PRJPM;?></th>
<th><?php echo $lang->project->PRJPM;?></th>
<td><?php echo html::select('PM', $PMUsers, $project->PM, "class='form-control chosen'" . (strpos($requiredFields, 'PM') !== false ? ' required' : ''));?></td>
</tr>
<tr>
<th><?php echo $lang->program->PRJBudget;?></th>
<th><?php echo $lang->project->PRJBudget;?></th>
<td>
<div class='input-group'>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->program->PGMParentBudget . zget($lang->program->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?>
<?php $placeholder = ($parentProgram and $parentProgram->budget != 0) ? 'placeholder=' . $lang->project->PGMParentBudget . zget($lang->project->currencySymbol, $parentProgram->budgetUnit) . $availableBudget : '';?>
<?php echo html::input('budget', $project->budget != 0 ? $project->budget : '', "class='form-control' " . (strpos($requiredFields, 'budget') !== false ? 'required ' : '') . ($project->budget == 0 ? 'disabled ' : '') . $placeholder);?>
<?php if($parentProgram):?>
<span class='input-group-addon'><?php echo zget($budgetUnitList, $parentProgram->budgetUnit);?></span>
@@ -62,25 +62,25 @@
<td>
<div class='checkbox-primary'>
<input type='checkbox' id='future' name='future' value='1' <?php if($project->budget == 0) echo 'checked';?> />
<label for='future'><?php echo $lang->program->future;?></label>
<label for='future'><?php echo $lang->project->future;?></label>
</div>
</td>
</tr>
<tr>
<th><?php echo $lang->program->dateRange;?></th>
<th><?php echo $lang->project->dateRange;?></th>
<td>
<div class='input-group'>
<?php echo html::input('begin', $project->begin, "class='form-control form-date' onchange='computeWorkDays();' placeholder='" . $lang->program->begin . "' required");?>
<span class='input-group-addon'><?php echo $lang->program->to;?></span>
<?php echo html::input('begin', $project->begin, "class='form-control form-date' onchange='computeWorkDays();' placeholder='" . $lang->project->begin . "' required");?>
<span class='input-group-addon'><?php echo $lang->project->to;?></span>
<?php
$disabledEnd = $project->end == LONG_TIME ? 'disabled' : '';
$end = $project->end == LONG_TIME ? $lang->program->PRJLongTime : $project->end;
echo html::input('end', $end, "class='form-control form-date' onchange='computeWorkDays();' $disabledEnd placeholder='" . $lang->program->end . "' required");
$end = $project->end == LONG_TIME ? $lang->project->PRJLongTime : $project->end;
echo html::input('end', $end, "class='form-control form-date' onchange='computeWorkDays();' $disabledEnd placeholder='" . $lang->project->end . "' required");
?>
</div>
</td>
<?php $deltaValue = $project->end == LONG_TIME ? 999 : (strtotime($project->end) - strtotime($project->begin)) / 3600 / 24 + 1;?>
<td colspan='2'><?php echo html::radio('delta', $lang->program->endList , $deltaValue, "onclick='computeEndDate(this.value)'");?></td>
<td colspan='2'><?php echo html::radio('delta', $lang->project->endList , $deltaValue, "onclick='computeEndDate(this.value)'");?></td>
</tr>
<?php if($project->model == 'scrum'):?>
<tr>
@@ -104,7 +104,7 @@
<div class='col-sm-4' style="padding-right: 6px;">
<?php $hasBranch = $product->type != 'normal' and isset($branchGroups[$product->id]);?>
<div class="input-group<?php if($hasBranch) echo ' has-branch';?>">
<?php echo html::select("products[$i]", $allProducts, $product->id, "class='form-control chosen' data-placeholder={$lang->program->errorNoProducts} onchange='loadBranches(this)' data-last='" . $product->id . "'");?>
<?php echo html::select("products[$i]", $allProducts, $product->id, "class='form-control chosen' data-placeholder={$lang->project->errorNoProducts} onchange='loadBranches(this)' data-last='" . $product->id . "'");?>
<span class='input-group-addon fix-border'></span>
<?php if($hasBranch) echo html::select("branch[$i]", $branchGroups[$product->id], $product->branch, "class='form-control chosen' onchange=\"loadPlans('#products{$i}', this.value)\"");?>
</div>
@@ -112,7 +112,7 @@
<?php if(in_array($product->id, $unmodifiableProducts)) echo html::hidden("products[$i]", $product->id);?>
<?php $i++;?>
<?php endforeach;?>
<div class='col-sm-4 <?php if($programID) echo 'required';?>' style="padding-right: 6px;">
<div class='col-sm-4 <?php if($projectID) echo 'required';?>' style="padding-right: 6px;">
<div class='input-group'>
<?php echo html::select("products[$i]", $allProducts, '', "class='form-control chosen' onchange='loadBranches(this)'");?>
<span class='input-group-addon fix-border'></span>
@@ -136,7 +136,7 @@
</td>
</tr>
<tr>
<th><?php echo $lang->program->PRJDesc;?></th>
<th><?php echo $lang->project->PRJDesc;?></th>
<td colspan='3'>
<?php echo html::textarea('desc', $project->desc, "rows='6' class='form-control kindeditor' hidefocus='true'" . (strpos($requiredFields, 'desc') !== false ? ' required' : ''));?>
</td>
@@ -152,8 +152,8 @@
<td></td>
</tr>
<tr>
<th><?php echo $lang->program->auth;?></th>
<td colspan='3'><?php echo html::radio('auth', $lang->program->PRJAuthList, $project->auth, '', 'block');?></td>
<th><?php echo $lang->project->auth;?></th>
<td colspan='3'><?php echo html::radio('auth', $lang->project->PRJAuthList, $project->auth, '', 'block');?></td>
</tr>
<tr>
<td colspan='4' class='text-center form-actions'>
@@ -169,23 +169,23 @@
</div>
</div>
<div id='PRJAcl' class='hidden'>
<?php echo nl2br(html::radio('acl', $lang->program->PRJAclList, $project->acl == 'program' ? 'private' : 'open', "onclick='setWhite(this.value);'", 'block'));?>
<?php echo nl2br(html::radio('acl', $lang->project->PRJAclList, $project->acl == 'project' ? 'private' : 'open', "onclick='setWhite(this.value);'", 'block'));?>
</div>
<div id='PGMAcl' class='hidden'>
<?php echo nl2br(html::radio('acl', $lang->program->PGMPRJAclList, $project->acl, "onclick='setWhite(this.value);'", 'block'));?>
<?php echo nl2br(html::radio('acl', $lang->project->PGMPRJAclList, $project->acl, "onclick='setWhite(this.value);'", 'block'));?>
</div>
<div class="modal fade" id="promptBox">
<div class="modal-dialog mw-600px">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="icon icon-close"></i></button>
<h4 class="modal-title"><?php printf($lang->program->changeProgram, $project->name);?></h4>
<h4 class="modal-title"><?php printf($lang->project->changeProgram, $project->name);?></h4>
</div>
<div class="modal-body">
<table class='table table-form' id='promptTable'>
<thead>
<tr>
<th class='text-left'><?php echo $lang->program->multiLinkedProductsTip;?></th>
<th class='text-left'><?php echo $lang->project->multiLinkedProductsTip;?></th>
</tr>
</thead>
<tbody></tbody>
+8 -8
View File
@@ -1,11 +1,11 @@
<?php
/**
* The prigroup view file of program module of ZenTaoPMS.
* The prigroup view file of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package program
* @package project
* @version $Id: prigroup.html.php 4769 2013-05-05 07:24:21Z wwccss $
* @link http://www.zentao.net
*/
@@ -19,7 +19,7 @@
<span class='btn btn-link btn-active-text'><span class='text'><?php echo $lang->group->browse;?></span></span>
</div>
<div class='btn-toolbar pull-right'>
<?php if(common::hasPriv('program', 'PRJCreateGroup')) echo html::a($this->createLink('program', 'PRJCreateGroup', "projectID=$projectID&programID=$programID", '', true), '<i class="icon-plus"></i> ' . $lang->group->create, '', 'class="btn btn-primary iframe" data-width="550"');?>
<?php if(common::hasPriv('project', 'PRJCreateGroup')) echo html::a($this->createLink('project', 'PRJCreateGroup', "projectID=$projectID&projectID=$projectID", '', true), '<i class="icon-plus"></i> ' . $lang->group->create, '', 'class="btn btn-primary iframe" data-width="550"');?>
</div>
</div>
<div id='mainContent' class='main-table'>
@@ -44,12 +44,12 @@
<td class='c-actions'>
<?php $lang->group->managepriv = $lang->group->managePrivByGroup;?>
<?php $disabled = $group->role == 'limited' ? 'disabled' : '';?>
<?php common::printIcon('program', 'PRJManageView', "groupID=$group->id&projectID=$projectID&programID=$programID", $group, 'list', 'eye', '', $disabled);?>
<?php common::printIcon('program', 'PRJManagePriv', "type=byGroup&param=$group->id", $group, 'list', 'lock');?>
<?php common::printIcon('project', 'PRJManageView', "groupID=$group->id&projectID=$projectID&projectID=$projectID", $group, 'list', 'eye', '', $disabled);?>
<?php common::printIcon('project', 'PRJManagePriv', "type=byGroup&param=$group->id", $group, 'list', 'lock');?>
<?php $lang->group->managemember = $lang->group->manageMember;?>
<?php common::printIcon('program', 'PRJManageGroupMember', "groupID=$group->id", $group, 'list', 'persons', '', 'iframe', 'yes', "data-width='90%'");?>
<?php common::printIcon('program', 'PRJEditGroup', "groupID=$group->id", $group, 'list', 'edit', '', 'iframe', 'yes', "data-width='550'");?>
<?php common::printIcon('program', 'PRJCopyGroup', "groupID=$group->id", $group, 'list', 'copy', '', "iframe $disabled", 'yes', "data-width='550'");?>
<?php common::printIcon('project', 'PRJManageGroupMember', "groupID=$group->id", $group, 'list', 'persons', '', 'iframe', 'yes', "data-width='90%'");?>
<?php common::printIcon('project', 'PRJEditGroup', "groupID=$group->id", $group, 'list', 'edit', '', 'iframe', 'yes', "data-width='550'");?>
<?php common::printIcon('project', 'PRJCopyGroup', "groupID=$group->id", $group, 'list', 'copy', '', "iframe $disabled", 'yes', "data-width='550'");?>
<?php
if(common::hasPriv('group', 'delete') and $group->role != 'limited')
{
@@ -4,7 +4,7 @@
<div id='mainMenu' class='clearfix'>
<div class='btn-toolbar pull-left'>
<span class='btn btn-link btn-active-text'>
<?php echo html::a($this->createLink('program', 'prjmanagemembers', "projectID={$project->id}"), "<span class='text'> {$lang->project->manageMembers}</span>");?>
<?php echo html::a($this->createLink('project', 'prjmanagemembers', "projectID={$project->id}"), "<span class='text'> {$lang->project->manageMembers}</span>");?>
</span>
<div class='input-group space w-200px'>
<span class='input-group-addon'><?php echo $lang->project->selectDept?></span>
@@ -1,11 +1,11 @@
<?php
/**
* The manage prjmanageproducts view of program module of ZenTaoPMS.
* The manage prjmanageproducts view of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package program
* @package project
* @version $Id
* @link http://www.zentao.net
*/
@@ -25,7 +25,7 @@
<?php foreach($allProducts as $productID => $productName):?>
<?php if(isset($linkedProducts[$productID])):?>
<?php $isDisabled = in_array($productID, $unmodifiableProducts) ? "disabled='disabled'" : '';?>
<?php $title = in_array($productID, $unmodifiableProducts) ? $lang->program->notAllowRemoveProducts : $productName;?>
<?php $title = in_array($productID, $unmodifiableProducts) ? $lang->project->notAllowRemoveProducts : $productName;?>
<?php $checked = 'checked';?>
<div class='col-sm-4'>
<div class='product <?php echo $checked . (isset($branchGroups[$productID]) ? ' has-branch' : '')?>'>
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
/**
* The manage view by program view of group module of ZenTaoPMS.
* The manage view by project view of group module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
+6 -6
View File
@@ -1,26 +1,26 @@
<?php
/**
* The prjprogramtitle view file of program module of ZenTaoPMS.
* The prjprojecttitle view file of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package program
* @version $Id: prjprogramtitle.html.php 4769 2013-05-05 07:24:21Z wwccss $
* @package project
* @version $Id: prjprojecttitle.html.php 4769 2013-05-05 07:24:21Z wwccss $
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/header.lite.html.php';?>
<div class="modal-header">
<h4 class="modal-title"><i class="icon-cog"></i><?php echo $lang->program->PRJModuleSetting;?></h4>
<h4 class="modal-title"><i class="icon-cog"></i><?php echo $lang->project->PRJModuleSetting;?></h4>
</div>
<div class="modal-body" style="max-height: 564px; overflow: visible;">
<form class="form-condensed" method="post" target="hiddenwin">
<table class="table table-form">
<tbody>
<tr>
<td class="w-180px"><?php echo $lang->program->PRJModuleOpen;?></td>
<td><?php echo html::radio('PRJProgramTitle', $lang->program->PRJProgramTitle, $status);?></td>
<td class="w-180px"><?php echo $lang->project->PRJModuleOpen;?></td>
<td><?php echo html::radio('PRJProgramTitle', $lang->project->PRJProgramTitle, $status);?></td>
</tr>
<tr>
<td colspan="2" class="text-center"><?php echo html::submitButton();?></td>
+3 -3
View File
@@ -1,11 +1,11 @@
<?php
/**
* The prjstart view file of program module of ZenTaoPMS.
* The prjstart view file of project module of ZenTaoPMS.
*
* @copyright Copyright 2009-2015 青岛易软天创网络科技有限公司(QingDao Nature Easy Soft Network Technology Co,LTD, www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package program
* @package project
* @version $Id: prjstart.html.php 4769 2013-05-05 07:24:21Z wwccss $
* @link http://www.zentao.net
*/
@@ -26,7 +26,7 @@
<table class='table table-form'>
<tbody>
<tr>
<th class='w-100px'><?php echo $lang->program->realBegan;?></th>
<th class='w-100px'><?php echo $lang->project->realBegan;?></th>
<td><?php echo html::input('realBegan', helper::today(), "class='form-control form-date'");?></td>
<td></td>
</tr>
+11 -11
View File
@@ -42,7 +42,7 @@
<div class="panel-heading">
<div class="panel-title"><?php echo $lang->project->relatedMember;?></div>
<nav class="panel-actions nav nav-default">
<li><?php common::printLink('program', 'PRJManageMembers', "projectID=$project->id", '<i class="icon icon-more icon-sm"></i>', '', "title=$lang->more");?></li>
<li><?php common::printLink('project', 'PRJManageMembers', "projectID=$project->id", '<i class="icon icon-more icon-sm"></i>', '', "title=$lang->more");?></li>
</nav>
</div>
<div class="panel-body">
@@ -51,7 +51,7 @@
<?php if($project->PM):?>
<?php $i--;?>
<?php unset($teamMembers[$project->PM]);?>
<div class="col-xs-6"><i class="icon icon-person icon-sm text-muted"></i> <?php echo zget($users, $project->PM);?> <span class="text-muted">(<?php echo $lang->program->PRJPM;?>)</span></div>
<div class="col-xs-6"><i class="icon icon-person icon-sm text-muted"></i> <?php echo zget($users, $project->PM);?> <span class="text-muted">(<?php echo $lang->project->PRJPM;?>)</span></div>
<?php endif;?>
<?php if($project->PO):?>
<?php $i--;?>
@@ -75,7 +75,7 @@
<?php $j++;?>
<?php endforeach;?>
<div class="col-xs-6">
<?php common::printLink('program', 'PRJManageMembers', "projectID=$project->id", "<i class='icon icon-plus hl-primary text-primary'></i> &nbsp;" . $lang->project->manageMembers, '', "class='text-muted'");?>
<?php common::printLink('project', 'PRJManageMembers', "projectID=$project->id", "<i class='icon icon-plus hl-primary text-primary'></i> &nbsp;" . $lang->project->manageMembers, '', "class='text-muted'");?>
</div>
</div>
</div>
@@ -95,16 +95,16 @@
if(!$project->deleted)
{
echo "<div class='divider'></div>";
common::printIcon('program', 'PRJStart', "projectID=$project->id", $project, 'button', 'play', '', 'iframe', true, '', $lang->project->start);
common::printIcon('program', 'PRJActivate', "projectID=$project->id", $project, 'button', 'magic', '', 'iframe', true, '', $lang->project->activate);
common::printIcon('program', 'PRJSuspend', "projectID=$project->id", $project, 'button', 'pause', '', 'iframe', true, '', $lang->project->suspend);
common::printIcon('program', 'PRJClose', "projectID=$project->id", $project, 'button', 'off', '', 'iframe', true, '', $lang->close);
common::printIcon('project', 'PRJStart', "projectID=$project->id", $project, 'button', 'play', '', 'iframe', true, '', $lang->project->start);
common::printIcon('project', 'PRJActivate', "projectID=$project->id", $project, 'button', 'magic', '', 'iframe', true, '', $lang->project->activate);
common::printIcon('project', 'PRJSuspend', "projectID=$project->id", $project, 'button', 'pause', '', 'iframe', true, '', $lang->project->suspend);
common::printIcon('project', 'PRJClose', "projectID=$project->id", $project, 'button', 'off', '', 'iframe', true, '', $lang->close);
echo $this->buildOperateMenu($project, 'view');
echo "<div class='divider'></div>";
common::printIcon('program', 'PRJEdit', $params, $project, 'button', 'edit', '', '', '', '', $lang->edit);
common::printIcon('program', 'PRJDelete', $params, $project, 'button', 'trash', 'hiddenwin', '', '', '', $lang->delete);
common::printIcon('project', 'PRJEdit', $params, $project, 'button', 'edit', '', '', '', '', $lang->edit);
common::printIcon('project', 'PRJDelete', $params, $project, 'button', 'trash', 'hiddenwin', '', '', '', $lang->delete);
}
?>
</div>
@@ -122,7 +122,7 @@
<?php if($project->deleted):?>
<span class='label label-danger label-outline'><?php echo $lang->project->deleted;?></span>
<?php endif; ?>
<span class="label label-primary label-outline"><?php echo zget($lang->program->PRJLifeTimeList, $project->lifetime);?></span>
<span class="label label-primary label-outline"><?php echo zget($lang->project->PRJLifeTimeList, $project->lifetime);?></span>
<?php if(isset($project->delay)):?>
<span class="label label-danger label-outline"><?php echo $lang->project->delayed;?></span>
<?php else:?>
@@ -220,7 +220,7 @@
<div class="detail">
<div class="detail-title"><strong><?php echo $lang->project->acl;?></strong></div>
<div class="detail-content">
<p><?php echo $lang->program->PGMPRJAclList[$project->acl];?></p>
<p><?php echo $lang->project->PGMPRJAclList[$project->acl];?></p>
</div>
</div>
<?php $this->printExtendFields($project, 'div', "position=right&inForm=0&inCell=1");?>
+2 -2
View File
@@ -198,7 +198,7 @@
<?php if(empty($projects)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->project->noProject;?></span>
<span class="text-muted"><?php echo $lang->project->empty;?></span>
<?php echo html::a("javascript:createProject()", "<i class='icon icon-plus'></i> " . $lang->project->create, '', "class='btn btn-info'");?>
</p>
</div>
@@ -258,7 +258,7 @@
<?php if(empty($projects)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->project->noProject;?></span>
<span class="text-muted"><?php echo $lang->project->empty;?></span>
<?php echo html::a("javascript:createProject()", "<i class='icon icon-plus'></i> " . $lang->project->create, '', "class='btn btn-info'");?>
</p>
</div>