Merge branch 'master' of https://github.com/easysoft/zentaopms
This commit is contained in:
@@ -140,13 +140,13 @@ package:
|
||||
rm -rf zentaopms/tools
|
||||
pms:
|
||||
make common
|
||||
make zentaoxx
|
||||
unzip zentaoxx.*.zip
|
||||
cp zentaoxx/* zentaopms/ -r
|
||||
cat zentaoxx/db/xuanxuan.sql >> zentaopms/db/zentao.sql
|
||||
#make zentaoxx
|
||||
#unzip zentaoxx.*.zip
|
||||
#cp zentaoxx/* zentaopms/ -r
|
||||
#cat zentaoxx/db/xuanxuan.sql >> zentaopms/db/zentao.sql
|
||||
make package
|
||||
zip -rq -9 ZenTaoPMS.$(VERSION).zip zentaopms
|
||||
rm -fr zentaopms zentaoxx zentaoxx.*.zip
|
||||
rm -fr zentaopms #zentaoxx zentaoxx.*.zip
|
||||
deb:
|
||||
mkdir buildroot
|
||||
cp -r build/debian/DEBIAN buildroot
|
||||
|
||||
@@ -784,7 +784,17 @@ class block extends control
|
||||
$type = isset($this->params->type) ? $this->params->type : '';
|
||||
$pager = pager::init(0, $count , 1);
|
||||
|
||||
$productStats = $this->loadModel('product')->getStats('order_desc', $pager, $type);
|
||||
$productStats = $this->loadModel('product')->getStats('order_desc', $this->viewType != 'json' ? $pager : '', $type);
|
||||
$productIdList = array();
|
||||
foreach($productStats as $product) $productIdList[] = $product->id;
|
||||
|
||||
$this->view->executions = $this->dao->select('t1.product,t2.name')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project=t2.id')
|
||||
->where('t1.product')->in($productIdList)
|
||||
->andWhere('t2.type')->in('stage,sprint')
|
||||
->andWhere('t2.deleted')->eq(0)
|
||||
->orderBy('t1.project')
|
||||
->fetchPairs('product', 'name');
|
||||
$this->view->productStats = $productStats;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
<thead>
|
||||
<tr>
|
||||
<th class='c-name'><?php echo $lang->product->name;?></th>
|
||||
<?php if($longBlock):?>
|
||||
<th class='c-name c-project'><?php echo $lang->product->currentExecution;?></th>
|
||||
<?php endif;?>
|
||||
<th title='<?php echo $lang->product->plans?>' class='c-num w-120px'><?php echo $lang->product->plans;?></th>
|
||||
<th title='<?php echo $lang->product->releases?>' class='c-num w-100px'><?php echo $lang->product->releases;?></th>
|
||||
<th title='<?php echo $lang->product->activeStoriesTitle?>' class='c-num w-120px'><?php echo $lang->product->activeStories;?></th>
|
||||
@@ -35,6 +38,10 @@
|
||||
?>
|
||||
<tr class='text-center' data-url='<?php echo empty($sso) ? $viewLink : $sso . $sign . 'referer=' . base64_encode($viewLink); ?>' <?php echo $appid?>>
|
||||
<td class='c-name text-left' title='<?php echo $product->name?>'><?php echo $product->name?></td>
|
||||
<?php if($longBlock):?>
|
||||
<?php $projectName = zget($executions, $product->id, '');?>
|
||||
<td class='c-name c-project text-left' title='<?php echo $projectName;?>'><?php echo $projectName;?></td>
|
||||
<?php endif;?>
|
||||
<td class="c-num"><?php echo $product->plans?></td>
|
||||
<td class="c-num"><?php echo $product->releases?></td>
|
||||
<td class="c-num"><?php echo $product->stories['active']?></td>
|
||||
|
||||
@@ -162,7 +162,7 @@ class budgetModel extends model
|
||||
/* Count the costs incurred by a stage corresponding to a subject. */
|
||||
foreach($budgets as $budget)
|
||||
{
|
||||
$summary['stages'][$budget->stage][$budget->subject] = $budget->amount;
|
||||
$summary['stages'][$budget->stage][$budget->subject] += $budget->amount;
|
||||
$summary['subjects'][$budget->subject] += $budget->amount;
|
||||
}
|
||||
|
||||
|
||||
@@ -141,6 +141,7 @@ class design extends control
|
||||
|
||||
$this->send($response);
|
||||
}
|
||||
$this->design->setProductMenu($productID);
|
||||
|
||||
$this->view->title = $this->lang->design->common . $this->lang->colon . $this->lang->design->batchCreate;
|
||||
$this->view->position[] = $this->lang->design->batchCreate;
|
||||
|
||||
@@ -772,7 +772,7 @@ class doc extends control
|
||||
}
|
||||
elseif($this->from == 'project')
|
||||
{
|
||||
$this->lang->navGroup->doc = 'program';
|
||||
$this->lang->navGroup->doc = 'project';
|
||||
$this->lang->doc->menu = $this->lang->project->menu;
|
||||
$this->lang->doc->menuOrder = $this->lang->project->menuOrder;
|
||||
$this->project->setMenu($this->project->getExecutionsByProject($this->session->PRJ, 'all', 0, true), $objectID);
|
||||
|
||||
@@ -1199,6 +1199,7 @@ class docModel extends model
|
||||
{
|
||||
if($type != 'product' and $type != 'project') return false;
|
||||
$objectLibs = $this->dao->select('*')->from(TABLE_DOCLIB)->where('deleted')->eq(0)->andWhere($type)->eq($objectID)->orderBy('`order`, id')->fetchAll('id');
|
||||
|
||||
if($type == 'product')
|
||||
{
|
||||
$hasProject = $this->dao->select('DISTINCT t1.product, count(t1.project) as projectCount')->from(TABLE_PROJECTPRODUCT)->alias('t1')
|
||||
@@ -1219,6 +1220,13 @@ class docModel extends model
|
||||
$itemCounts = $this->statLibCounts(array_keys($libs));
|
||||
foreach($libs as $libID => $lib) $libs[$libID]->allCount = $itemCounts[$libID];
|
||||
|
||||
if(common::hasPriv('doc', 'showFiles'))
|
||||
{
|
||||
$libs['files'] = new stdclass();
|
||||
$libs['files']->name = $this->lang->doclib->files;
|
||||
$libs['files']->allCount = count($this->getLibFiles($type, $objectID, 'id_desc'));
|
||||
}
|
||||
|
||||
return $libs;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,5 +7,5 @@
|
||||
.divider{border-left:1px solid #e5e5e5;}
|
||||
|
||||
.tiles{padding-top:15px;}
|
||||
.tile{margin-bottom:30px; text-align:left !important; padding-left:60px;}
|
||||
.tile{text-align:left !important; padding-left:60px;}
|
||||
.tile-title{color:#999; padding-bottom:5px !important;}
|
||||
|
||||
@@ -689,7 +689,7 @@ class product extends control
|
||||
*/
|
||||
public function ajaxGetDropMenu($productID, $module, $method, $extra)
|
||||
{
|
||||
$inProduct = zget($this->lang->navGroup, $this->app->rawModule) == 'product';
|
||||
$inProduct = zget($this->lang->navGroup, $module) == 'product';
|
||||
$products = $inProduct ? $this->product->getList() : $this->product->getProductsByProject($this->session->PRJ);
|
||||
|
||||
$this->view->link = $this->product->getProductLink($module, $method, $extra);
|
||||
|
||||
@@ -47,6 +47,7 @@ $lang->product->project = $lang->projectCommon . 'Liste';
|
||||
$lang->product->build = 'Build';
|
||||
$lang->product->projectInfo = "{$lang->projectCommon}s that are linked to this {$lang->productCommon} are listed below.";
|
||||
|
||||
$lang->product->currentExecution = 'Aktuelle Iteration/Phase';
|
||||
$lang->product->activeStories = 'Aktivierte [S]';
|
||||
$lang->product->activeStoriesTitle = 'Active Stories';
|
||||
$lang->product->changedStories = 'Geänderte [S]';
|
||||
|
||||
@@ -47,6 +47,7 @@ $lang->product->project = $lang->projectCommon . ' List';
|
||||
$lang->product->build = 'Build List';
|
||||
$lang->product->projectInfo = "{$lang->projectCommon}s that are linked to this {$lang->productCommon} are listed below.";
|
||||
|
||||
$lang->product->currentExecution = 'Current iteration/phase';
|
||||
$lang->product->activeStories = 'Active [S]';
|
||||
$lang->product->activeStoriesTitle = 'Active Stories';
|
||||
$lang->product->changedStories = 'Changed [S]';
|
||||
|
||||
@@ -47,6 +47,7 @@ $lang->product->project = ' Liste ' . $lang->projectCommon;
|
||||
$lang->product->build = 'Liste Builds';
|
||||
$lang->product->projectInfo = "Les {$lang->projectCommon}s qui sont associés à ce {$lang->productCommon} sont listés ci-dessous.";
|
||||
|
||||
$lang->product->currentExecution = 'Current iteration/phase';
|
||||
$lang->product->activeStories = 'Actives [S]';
|
||||
$lang->product->activeStoriesTitle = 'Stories Actives';
|
||||
$lang->product->changedStories = 'Changées [S]';
|
||||
|
||||
@@ -47,6 +47,7 @@ $lang->product->project = 'Danh sách '.$lang->projectCommon;
|
||||
$lang->product->build = 'Danh sách bản dựng';
|
||||
$lang->product->projectInfo = "{$lang->projectCommon} đã liên kết tới {$lang->productCommon} này được liệt kê bên dưới.";
|
||||
|
||||
$lang->product->currentExecution = 'Chế độ lặp hiện thời';
|
||||
$lang->product->activeStories = 'Kích hoạt [S]';
|
||||
$lang->product->activeStoriesTitle = 'Kích hoạt câu chuyện';
|
||||
$lang->product->changedStories = 'Đã thay đổi [S]';
|
||||
|
||||
@@ -47,6 +47,7 @@ $lang->product->project = $lang->projectCommon . '列表';
|
||||
$lang->product->build = '版本列表';
|
||||
$lang->product->projectInfo = "所有与此产品关联的{$lang->projectCommon}";
|
||||
|
||||
$lang->product->currentExecution = '当前迭代/阶段';
|
||||
$lang->product->activeStories = "激活{$lang->productSRCommon}";
|
||||
$lang->product->activeStoriesTitle = "激活{$lang->productSRCommon}";
|
||||
$lang->product->changedStories = "已变更{$lang->productSRCommon}";
|
||||
|
||||
@@ -47,6 +47,7 @@ $lang->product->project = $lang->projectCommon . '列表';
|
||||
$lang->product->build = '版本列表';
|
||||
$lang->product->projectInfo = "所有與此產品關聯的{$lang->projectCommon}";
|
||||
|
||||
$lang->product->currentExecution = '當前迭代/階段';
|
||||
$lang->product->activeStories = "激活{$lang->productSRCommon}";
|
||||
$lang->product->activeStoriesTitle = "激活{$lang->productSRCommon}";
|
||||
$lang->product->changedStories = "已變更{$lang->productSRCommon}";
|
||||
|
||||
@@ -363,7 +363,7 @@ class programModel extends model
|
||||
|
||||
while($program = $stmt->fetch())
|
||||
{
|
||||
$link = $from == 'program' ? helper::createLink('program', 'pgmview', "programID=$program->id") : helper::createLink('product', 'all', "programID=$program->id" . $vars);
|
||||
$link = $from == 'program' ? helper::createLink('program', 'pgmproject', "programID=$program->id") : helper::createLink('product', 'all', "programID=$program->id" . $vars);
|
||||
$linkHtml = html::a($link, "<i class='icon-folder-open-o'></i> " . $program->name, '', "id='program$program->id' class='text-ellipsis' title=$program->name");
|
||||
|
||||
if(isset($programMenu[$program->id]) and !empty($programMenu[$program->id]))
|
||||
|
||||
@@ -62,7 +62,7 @@ $config->story->datatable->fieldList['pri']['required'] = 'no';
|
||||
|
||||
$config->story->datatable->fieldList['title']['title'] = 'title';
|
||||
$config->story->datatable->fieldList['title']['fixed'] = 'left';
|
||||
$config->story->datatable->fieldList['title']['width'] = 'auto';
|
||||
$config->story->datatable->fieldList['title']['width'] = '170';
|
||||
$config->story->datatable->fieldList['title']['required'] = 'yes';
|
||||
|
||||
$config->story->datatable->fieldList['branch']['title'] = 'branch';
|
||||
@@ -97,7 +97,7 @@ $config->story->datatable->fieldList['status']['required'] = 'no';
|
||||
|
||||
$config->story->datatable->fieldList['estimate']['title'] = 'estimateAB';
|
||||
$config->story->datatable->fieldList['estimate']['fixed'] = 'no';
|
||||
$config->story->datatable->fieldList['estimate']['width'] = '65';
|
||||
$config->story->datatable->fieldList['estimate']['width'] = '60';
|
||||
$config->story->datatable->fieldList['estimate']['required'] = 'no';
|
||||
|
||||
$config->story->datatable->fieldList['stage']['title'] = 'stageAB';
|
||||
|
||||
+12
-5
@@ -144,11 +144,18 @@ $lang->user->passwordStrengthList[2] = "<span style='color:green'>Stark</span>";
|
||||
$lang->user->statusList['active'] = 'Aktiviert';
|
||||
$lang->user->statusList['delete'] = 'Gelöscht';
|
||||
|
||||
$lang->user->personalData['createdTodos'] = 'Todos Created';
|
||||
$lang->user->personalData['createdStories'] = 'Stories Created';
|
||||
$lang->user->personalData['finishedTasks'] = 'Tasks Finished';
|
||||
$lang->user->personalData['resolvedBugs'] = 'Bugs Resolved';
|
||||
$lang->user->personalData['createdCases'] = 'Cases Created';
|
||||
$lang->user->personalData['createdTodos'] = 'Todos Created';
|
||||
$lang->user->personalData['createdRequirements'] = "Requirements Created";
|
||||
$lang->user->personalData['createdStories'] = "Stories Created";
|
||||
$lang->user->personalData['finishedTasks'] = 'Tasks Finished';
|
||||
$lang->user->personalData['createdBugs'] = 'Bugs Created';
|
||||
$lang->user->personalData['resolvedBugs'] = 'Bugs Resolved';
|
||||
$lang->user->personalData['createdCases'] = 'Cases Created';
|
||||
$lang->user->personalData['createdRisks'] = 'Risks Created';
|
||||
$lang->user->personalData['resolvedRisks'] = 'Risks Resolved';
|
||||
$lang->user->personalData['createdIssues'] = 'Issues Created';
|
||||
$lang->user->personalData['resolvedIssues'] = 'Issues Resolved';
|
||||
$lang->user->personalData['createdDocs'] = 'Docs Created';
|
||||
|
||||
$lang->user->keepLogin['on'] = 'Angemeldet bleiben';
|
||||
$lang->user->loginWithDemoUser = 'Login als Demo User:';
|
||||
|
||||
+12
-5
@@ -144,11 +144,18 @@ $lang->user->passwordStrengthList[2] = "<span style='color:green'>Strong</span>"
|
||||
$lang->user->statusList['active'] = 'Active';
|
||||
$lang->user->statusList['delete'] = 'Deleted';
|
||||
|
||||
$lang->user->personalData['createdTodos'] = 'Todos Created';
|
||||
$lang->user->personalData['createdStories'] = 'Stories Created';
|
||||
$lang->user->personalData['finishedTasks'] = 'Tasks Finished';
|
||||
$lang->user->personalData['resolvedBugs'] = 'Bugs Resolved';
|
||||
$lang->user->personalData['createdCases'] = 'Cases Created';
|
||||
$lang->user->personalData['createdTodos'] = 'Todos Created';
|
||||
$lang->user->personalData['createdRequirements'] = "Requirements Created";
|
||||
$lang->user->personalData['createdStories'] = "Stories Created";
|
||||
$lang->user->personalData['finishedTasks'] = 'Tasks Finished';
|
||||
$lang->user->personalData['createdBugs'] = 'Bugs Created';
|
||||
$lang->user->personalData['resolvedBugs'] = 'Bugs Resolved';
|
||||
$lang->user->personalData['createdCases'] = 'Cases Created';
|
||||
$lang->user->personalData['createdRisks'] = 'Risks Created';
|
||||
$lang->user->personalData['resolvedRisks'] = 'Risks Resolved';
|
||||
$lang->user->personalData['createdIssues'] = 'Issues Created';
|
||||
$lang->user->personalData['resolvedIssues'] = 'Issues Resolved';
|
||||
$lang->user->personalData['createdDocs'] = 'Docs Created';
|
||||
|
||||
$lang->user->keepLogin['on'] = 'Keep Login';
|
||||
$lang->user->loginWithDemoUser = 'Login as Demo User:';
|
||||
|
||||
+12
-5
@@ -144,11 +144,18 @@ $lang->user->passwordStrengthList[2] = "<span style='color:green'>Fort</span>";
|
||||
$lang->user->statusList['active'] = 'Actif';
|
||||
$lang->user->statusList['delete'] = 'Supprimé';
|
||||
|
||||
$lang->user->personalData['createdTodos'] = 'Entrées Agenda Créées';
|
||||
$lang->user->personalData['createdStories'] = 'Stories Créées';
|
||||
$lang->user->personalData['finishedTasks'] = 'Tâches Terminées';
|
||||
$lang->user->personalData['resolvedBugs'] = 'Bugs Résolus';
|
||||
$lang->user->personalData['createdCases'] = 'CasTests Créés';
|
||||
$lang->user->personalData['createdTodos'] = 'Todos Created';
|
||||
$lang->user->personalData['createdRequirements'] = "Requirements Created";
|
||||
$lang->user->personalData['createdStories'] = "Stories Created";
|
||||
$lang->user->personalData['finishedTasks'] = 'Tasks Finished';
|
||||
$lang->user->personalData['createdBugs'] = 'Bugs Created';
|
||||
$lang->user->personalData['resolvedBugs'] = 'Bugs Resolved';
|
||||
$lang->user->personalData['createdCases'] = 'Cases Created';
|
||||
$lang->user->personalData['createdRisks'] = 'Risks Created';
|
||||
$lang->user->personalData['resolvedRisks'] = 'Risks Resolved';
|
||||
$lang->user->personalData['createdIssues'] = 'Issues Created';
|
||||
$lang->user->personalData['resolvedIssues'] = 'Issues Resolved';
|
||||
$lang->user->personalData['createdDocs'] = 'Docs Created';
|
||||
|
||||
$lang->user->keepLogin['on'] = 'Rester connecté';
|
||||
$lang->user->loginWithDemoUser = "Se connecté en tant qu'invité :";
|
||||
|
||||
+12
-5
@@ -144,11 +144,18 @@ $lang->user->passwordStrengthList[2] = "<span style='color:green'>Mạnh</span>"
|
||||
$lang->user->statusList['active'] = 'Kích hoạt';
|
||||
$lang->user->statusList['delete'] = 'Đã xóa';
|
||||
|
||||
$lang->user->personalData['createdTodos'] = 'Việc đã tạo';
|
||||
$lang->user->personalData['createdStories'] = 'Chuyện đã tạo';
|
||||
$lang->user->personalData['finishedTasks'] = 'Nhiệm vụ đã kết thúc';
|
||||
$lang->user->personalData['resolvedBugs'] = 'Bugs đã giải quyết';
|
||||
$lang->user->personalData['createdCases'] = 'Tình huống đã tạo';
|
||||
$lang->user->personalData['createdTodos'] = 'Todos Created';
|
||||
$lang->user->personalData['createdRequirements'] = "Requirements Created";
|
||||
$lang->user->personalData['createdStories'] = "Stories Created";
|
||||
$lang->user->personalData['finishedTasks'] = 'Tasks Finished';
|
||||
$lang->user->personalData['createdBugs'] = 'Bugs Created';
|
||||
$lang->user->personalData['resolvedBugs'] = 'Bugs Resolved';
|
||||
$lang->user->personalData['createdCases'] = 'Cases Created';
|
||||
$lang->user->personalData['createdRisks'] = 'Risks Created';
|
||||
$lang->user->personalData['resolvedRisks'] = 'Risks Resolved';
|
||||
$lang->user->personalData['createdIssues'] = 'Issues Created';
|
||||
$lang->user->personalData['resolvedIssues'] = 'Issues Resolved';
|
||||
$lang->user->personalData['createdDocs'] = 'Docs Created';
|
||||
|
||||
$lang->user->keepLogin['on'] = 'Duy trì đăng nhập';
|
||||
$lang->user->loginWithDemoUser = 'Đăng nhập Demo:';
|
||||
|
||||
@@ -144,11 +144,18 @@ $lang->user->passwordStrengthList[2] = "<span style='color:green'>强</span>";
|
||||
$lang->user->statusList['active'] = '正常';
|
||||
$lang->user->statusList['delete'] = '删除';
|
||||
|
||||
$lang->user->personalData['createdTodos'] = '创建的待办数';
|
||||
$lang->user->personalData['createdStories'] = "创建的{$lang->productSRCommon}数";
|
||||
$lang->user->personalData['finishedTasks'] = '完成的任务数';
|
||||
$lang->user->personalData['resolvedBugs'] = '解决的Bug数';
|
||||
$lang->user->personalData['createdCases'] = '创建的用例数';
|
||||
$lang->user->personalData['createdTodos'] = '创建的待办数';
|
||||
$lang->user->personalData['createdRequirements'] = "创建的用需/史诗数";
|
||||
$lang->user->personalData['createdStories'] = "创建的软需/故事数";
|
||||
$lang->user->personalData['finishedTasks'] = '完成的任务数';
|
||||
$lang->user->personalData['createdBugs'] = '提交的Bug数';
|
||||
$lang->user->personalData['resolvedBugs'] = '解决的Bug数';
|
||||
$lang->user->personalData['createdCases'] = '创建的用例数';
|
||||
$lang->user->personalData['createdRisks'] = '创建的风险数';
|
||||
$lang->user->personalData['resolvedRisks'] = '解决的风险数';
|
||||
$lang->user->personalData['createdIssues'] = '创建的问题数';
|
||||
$lang->user->personalData['resolvedIssues'] = '解决的问题数';
|
||||
$lang->user->personalData['createdDocs'] = '创建的文档数';
|
||||
|
||||
$lang->user->keepLogin['on'] = '保持登录';
|
||||
$lang->user->loginWithDemoUser = '使用demo帐号登录:';
|
||||
|
||||
Reference in New Issue
Block a user