* Adjust code of my, project, user module.

This commit is contained in:
zhujinyong
2021-03-04 17:34:15 +08:00
parent 48f926f1c1
commit 7cb63e2f13
7 changed files with 70 additions and 89 deletions
+5 -5
View File
@@ -203,7 +203,7 @@ class my extends control
$this->view->position[] = $this->lang->my->story;
$this->view->stories = $this->loadModel('story')->getUserStories($this->app->user->account, $type, $sort, $pager, 'story');
$this->view->users = $this->user->getPairs('noletter');
$this->view->projects = $this->loadModel('program')->getPRJPairs();
$this->view->projects = $this->loadModel('project')->getPairsByProgram();
$this->view->type = $type;
$this->view->recTotal = $recTotal;
$this->view->recPerPage = $recPerPage;
@@ -244,7 +244,7 @@ class my extends control
$this->view->position[] = $this->lang->my->story;
$this->view->stories = $this->loadModel('story')->getUserStories($this->app->user->account, $type, $sort, $pager, 'requirement');
$this->view->users = $this->user->getPairs('noletter');
$this->view->projects = $this->loadModel('program')->getPRJPairs();
$this->view->projects = $this->loadModel('project')->getPairsByProgram();
$this->view->type = $type;
$this->view->recTotal = $recTotal;
$this->view->recPerPage = $recPerPage;
@@ -319,13 +319,13 @@ class my extends control
$this->view->position[] = $this->lang->my->task;
$this->view->tabID = 'task';
$this->view->tasks = $tasks;
$this->view->summary = $this->loadModel('project')->summary($tasks);
$this->view->summary = $this->loadModel('execution')->summary($tasks);
$this->view->type = $type;
$this->view->recTotal = $recTotal;
$this->view->recPerPage = $recPerPage;
$this->view->pageID = $pageID;
$this->view->orderBy = $orderBy;
$this->view->projects = $this->loadModel('program')->getPRJPairs();
$this->view->projects = $this->loadModel('project')->getPairsByProgram();
$this->view->users = $this->loadModel('user')->getPairs('noletter');
$this->view->pager = $pager;
$this->view->mode = 'task';
@@ -491,7 +491,7 @@ class my extends control
$this->app->loadLang('project');
$this->app->session->set('programList', $this->app->getURI(true));
$this->app->session->set('PRJBrowse', $this->app->getURI(true));
$this->app->session->set('projectBrowse', $this->app->getURI(true));
/* Set the pager. */
$this->app->loadClass('pager', $static = true);
-10
View File
@@ -70,16 +70,6 @@ $lang->my->projectMenu->suspended = 'Suspended';
$lang->my->projectMenu->closed = 'Closed';
$lang->my->projectMenu->openedbyme = 'CreatedByMe';
$lang->my->home = new stdclass();
$lang->my->home->latest = 'Dynamics';
$lang->my->home->action = "%s, %s <em>%s</em> %s <a href='%s'>%s</a>.";
$lang->my->home->projects = $lang->executionCommon;
$lang->my->home->products = $lang->productCommon;
$lang->my->home->createProject = "Create {$lang->executionCommon}";
$lang->my->home->createProduct = "Create {$lang->productCommon}";
$lang->my->home->help = "<a href='https://www.zentao.pm/book/zentaomanual/free-open-source-project-management-software-workflow-46.html' target='_blank'>Help</a>";
$lang->my->home->noProductsTip = "No {$lang->productCommon} found here.";
$lang->my->form = new stdclass();
$lang->my->form->lblBasic = 'Basic Info';
$lang->my->form->lblContact = 'Contact Info';
-10
View File
@@ -70,16 +70,6 @@ $lang->my->projectMenu->suspended = '已挂起';
$lang->my->projectMenu->closed = '已关闭';
$lang->my->projectMenu->openedbyme = '由我创建';
$lang->my->home = new stdclass();
$lang->my->home->latest = '最新动态';
$lang->my->home->action = "%s, %s <em>%s</em> %s <a href='%s'>%s</a>。";
$lang->my->home->projects = $lang->executionCommon;
$lang->my->home->products = $lang->productCommon;
$lang->my->home->createProject = "添加{$lang->executionCommon}";
$lang->my->home->createProduct = "添加{$lang->productCommon}";
$lang->my->home->help = "<a href='https://www.zentao.net/help-read-79236.html' target='_blank'>帮助文档</a>";
$lang->my->home->noProductsTip = "这里还没有{$lang->productCommon}。";
$lang->my->form = new stdclass();
$lang->my->form->lblBasic = '基本信息';
$lang->my->form->lblContact = '联系信息';
+6 -6
View File
@@ -29,20 +29,20 @@
</p>
</div>
<?php else:?>
<table class="table has-sort-head table-fixed" id='projectList'>
<table class="table has-sort-head table-fixed" id='executionList'>
<thead>
<tr class='text-left'>
<th class='w-id'><?php echo $lang->idAB;?></th>
<th class='c-name text-left'><?php echo $lang->my->name;?></th>
<th class='c-name text-left'><?php echo $lang->my->projects;?></th>
<th class='c-date'><?php echo $lang->project->begin;?></th>
<th class='c-date'><?php echo $lang->project->end;?></th>
<th class='c-name text-left'><?php echo $lang->my->execution;?></th>
<th class='c-date'><?php echo $lang->execution->begin;?></th>
<th class='c-date'><?php echo $lang->execution->end;?></th>
<th class='c-status'><?php echo $lang->statusAB;?></th>
<th class='c-user'><?php echo $lang->team->role;?></th>
<th class='c-date'><?php echo $lang->team->join;?></th>
<th class='w-70px'><?php echo $lang->my->hours;?></th>
<th class='w-90px'><?php echo $lang->project->assignedToMe;?></th>
<th class='w-60px'><?php echo $lang->project->progress;?></th>
<th class='w-90px'><?php echo $lang->execution->assignedToMe;?></th>
<th class='w-60px'><?php echo $lang->execution->progress;?></th>
</tr>
</thead>
<tbody>
+30 -30
View File
@@ -25,71 +25,71 @@
<?php if(empty($projects)):?>
<div class="table-empty-tip">
<p>
<span class="text-muted"><?php echo $lang->program->noPRJ;?></span>
<?php if(common::hasPriv('program', 'createGuide')):?>
<?php echo html::a($this->createLink('program', 'createGuide'), "<i class='icon icon-plus'></i> " . $lang->my->createProgram, '', "class='btn btn-info' data-toggle=modal");?>
<span class="text-muted"><?php echo $lang->project->empty;?></span>
<?php if(common::hasPriv('project', 'createGuide')):?>
<?php echo html::a($this->createLink('project', 'createGuide'), "<i class='icon icon-plus'></i> " . $lang->my->createProgram, '', "class='btn btn-info' data-toggle=modal");?>
<?php endif;?>
</p>
</div>
<?php else:?>
<form class='main-table' id='programForm' method='post' data-ride='table' data-nested='true' data-checkable='false'>
<table class='table table-fixed' id='programList'>
<form class='main-table' id='projectForm' method='post' data-ride='table' data-nested='true' data-checkable='false'>
<table class='table table-fixed' id='projectList'>
<thead>
<tr>
<th class='c-id w-50px'><?php echo $lang->idAB;?></th>
<th><?php echo $lang->program->PRJName;?></th>
<th><?php echo $lang->project->name;?></th>
<?php if($status == 'openedbyme'):?>
<th class='w-80px'> <?php echo $lang->program->PRJStatus;?></th>
<th class='w-80px'> <?php echo $lang->project->status;?></th>
<?php endif;?>
<th class='w-100px'><?php echo $lang->program->begin;?></th>
<th class='w-100px'><?php echo $lang->program->end;?></th>
<th class='text-right w-100px'><?php echo $lang->program->PRJBudget;?></th>
<th class='w-100px'><?php echo $lang->program->PRJPM;?></th>
<th class='w-100px'><?php echo $lang->project->begin;?></th>
<th class='w-100px'><?php echo $lang->project->end;?></th>
<th class='text-right w-100px'><?php echo $lang->project->budget;?></th>
<th class='w-100px'><?php echo $lang->project->PM;?></th>
<th class='text-center w-180px'><?php echo $lang->actions;?></th>
</tr>
</thead>
<tbody id='programTableList'>
<tbody id='projectTableList'>
<?php foreach($projects as $project):?>
<tr>
<td class='c-id'><?php printf('%03d', $project->id);?></td>
<td class='c-name text-left' title='<?php echo $project->name?>'>
<?php echo html::a($this->createLink('program', 'index', "projectID=$project->id", '', '', $project->id), $project->name, '', "data-group='project'");?>
<?php echo html::a($this->createLink('project', 'index', "projectID=$project->id", '', '', $project->id), $project->name, '', "data-group='project'");?>
</td>
<?php if($status == 'openedbyme'):?>
<td class='c-status'><span class="status-program status-<?php echo $project->status?>"><?php echo zget($lang->project->statusList, $project->status, '');?></span></td>
<td class='c-status'><span class="status-project status-<?php echo $project->status?>"><?php echo zget($lang->project->statusList, $project->status, '');?></span></td>
<?php endif;?>
<td class='text-left'><?php echo $project->begin;?></td>
<td class='text-left'><?php echo $project->end == '0000-00-00' ? '' : $project->end;?></td>
<?php $programBudget = in_array($this->app->getClientLang(), ['zh-cn','zh-tw']) && $project->budget >= 10000 ? number_format($project->budget / 10000, 1) . $this->lang->program->tenThousand : number_format((float)$project->budget, 1);?>
<td class='text-right'><?php echo $project->budget != 0 ? zget($lang->program->currencySymbol, $project->budgetUnit) . ' ' . $programBudget : $lang->program->future;?></td>
<?php $projectBudget = in_array($this->app->getClientLang(), ['zh-cn','zh-tw']) && $project->budget >= 10000 ? number_format($project->budget / 10000, 1) . $this->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>
<?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>
<td class='c-actions'>
<?php if($project->status == 'wait' || $project->status == 'suspended') common::printIcon('program', 'PRJStart', "projectID=$project->id", $project, 'list', 'play', '', 'iframe', true);?>
<?php if($project->status == 'doing') common::printIcon('program', 'PRJClose', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true);?>
<?php if($project->status == 'closed') common::printIcon('program', 'PRJActivate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe', true);?>
<?php if(common::hasPriv('program','PRJSuspend') || (common::hasPriv('program','PRJClose') && $project->status != 'doing') || (common::hasPriv('program','PRJActivate') && $project->status != 'closed')):?>
<?php if($project->status == 'wait' || $project->status == 'suspended') common::printIcon('project', 'start', "projectID=$project->id", $project, 'list', 'play', '', 'iframe', true);?>
<?php if($project->status == 'doing') common::printIcon('project', 'close', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true);?>
<?php if($project->status == 'closed') common::printIcon('project', 'activate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe', true);?>
<?php if(common::hasPriv('project','suspend') || (common::hasPriv('project','close') && $project->status != 'doing') || (common::hasPriv('project','activate') && $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=$project->id", $project, 'list', 'pause', '', 'iframe', true);?>
<?php if($project->status != 'doing') common::printIcon('program', 'PRJClose', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true);?>
<?php if($project->status != 'closed') common::printIcon('program', 'PRJActivate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe', true);?>
<?php common::printIcon('project', 'suspend', "projectID=$project->id", $project, 'list', 'pause', '', 'iframe', true);?>
<?php if($project->status != 'doing') common::printIcon('project', 'close', "projectID=$project->id", $project, 'list', 'off', '', 'iframe', true);?>
<?php if($project->status != 'closed') common::printIcon('project', 'activate', "projectID=$project->id", $project, 'list', 'magic', '', 'iframe', true);?>
</ul>
</div>
<?php endif;?>
<?php common::printIcon('program', 'PRJEdit', "projectID=$project->id&from=PRJ", $project, 'list', 'edit', '', '', false, "data-group='project'", '', $project->id);?>
<?php common::printIcon('program', 'PRJManageMembers', "projectID=$project->id", $project, 'list', 'group', '', '', false, "data-group='project'", '', $project->id);?>
<?php common::printIcon('program', 'PRJGroup', "projectID=$project->id", $project, 'list', 'lock', '', '', false, "data-group='project'", '', $project->id);?>
<?php if(common::hasPriv('program','PRJManageProducts') || common::hasPriv('program','PRJWhitelist') || common::hasPriv('program','PRJDelete')):?>
<?php common::printIcon('project', 'edit', "projectID=$project->id", $project, 'list', 'edit', '', '', false, "data-group='project'", '', $project->id);?>
<?php common::printIcon('project', 'manageMembers', "projectID=$project->id", $project, 'list', 'group', '', '', false, "data-group='project'", '', $project->id);?>
<?php common::printIcon('project', 'group', "projectID=$project->id", $project, 'list', 'lock', '', '', false, "data-group='project'", '', $project->id);?>
<?php if(common::hasPriv('project','manageProducts') || common::hasPriv('project','whitelist') || common::hasPriv('project','delete')):?>
<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=$project->id&programID=$project->parent&from=PRJ", $project, 'list', 'link', '', '', false, "data-group='project'", '', $project->id);?>
<?php common::printIcon('program', 'PRJWhitelist', "projectID=$project->id&programID=$project->parent&module=program&from=PRJ", $project, 'list', 'shield-check', '', '', false, "data-group='project'", '', $project->id);?>
<?php if(common::hasPriv('program','PRJDelete')) echo html::a($this->createLink("program", "PRJDelete", "projectID=$project->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn' title='{$this->lang->program->PRJDelete}' data-group='my'");?>
<?php common::printIcon('project', 'manageProducts', "projectID=$project->id&projectID=$project->parent", $project, 'list', 'link', '', '', false, "data-group='project'", '', $project->id);?>
<?php common::printIcon('project', 'whitelist', "projectID=$project->id&projectID=$project->parent&module=project", $project, 'list', 'shield-check', '', '', false, "data-group='project'", '', $project->id);?>
<?php if(common::hasPriv('project','delete')) echo html::a($this->createLink("project", "delete", "projectID=$project->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn' title='{$this->lang->project->delete}' data-group='my'");?>
</ul>
</div>
<?php endif;?>
+26 -25
View File
@@ -77,7 +77,7 @@ class projectModel extends model
{
$count = 0;
$count += (int)$this->dao->select('count(*) as count')->from(TABLE_PROJECT)->where('parent')->eq($projectID)->fetch('count');
$count += (int)$this->dao->select('count(*) as count')->from(TABLE_TASK)->where('PRJ')->eq($projectID)->fetch('count');
$count += (int)$this->dao->select('count(*) as count')->from(TABLE_TASK)->where('project')->eq($projectID)->fetch('count');
return $count > 0;
}
@@ -213,12 +213,12 @@ class projectModel extends model
->groupBy('root')
->fetchAll('root');
$estimates = $this->dao->select('PRJ, sum(estimate) as estimate')->from(TABLE_TASK)
->where('PRJ')->in($projectIdList)
$estimates = $this->dao->select('project, sum(estimate) as estimate')->from(TABLE_TASK)
->where('project')->in($projectIdList)
->andWhere('deleted')->eq(0)
->andWhere('parent')->lt(1)
->groupBy('PRJ')
->fetchAll('PRJ');
->groupBy('project')
->fetchAll('project');
$this->app->loadClass('pager', $static = true);
$this->loadModel('execution');
@@ -280,21 +280,21 @@ class projectModel extends model
$teams = $this->dao->select('root, count(*) as teams')->from(TABLE_TEAM)->where('root')->in($projectIdList)->groupBy('root')->fetchPairs();
$hours = $this->dao->select('PRJ,
$hours = $this->dao->select('project,
cast(sum(consumed) as decimal(10,2)) as consumed,
cast(sum(estimate) as decimal(10,2)) as estimate')
->from(TABLE_TASK)
->where('PRJ')->in($projectIdList)
->where('project')->in($projectIdList)
->andWhere('deleted')->eq(0)
->andWhere('parent')->lt(1)
->groupBy('PRJ')
->fetchAll('PRJ');
->groupBy('project')
->fetchAll('project');
$leftTasks = $this->dao->select('PRJ, count(*) as tasks')->from(TABLE_TASK)
->where('PRJ')->in($projectIdList)
$leftTasks = $this->dao->select('project, count(*) as tasks')->from(TABLE_TASK)
->where('project')->in($projectIdList)
->andWhere('deleted')->eq(0)
->andWhere('status')->in('wait,doing,pause')
->groupBy('PRJ')
->groupBy('project')
->fetchPairs();
foreach($projectIdList as $projectID)
@@ -483,12 +483,12 @@ class projectModel extends model
*/
public function getTotalBugByProject($projectIdList, $status)
{
return $this->dao->select('PRJ, count(*) as bugs')->from(TABLE_BUG)
->where('PRJ')->in($projectIdList)
return $this->dao->select('project, count(*) as bugs')->from(TABLE_BUG)
->where('project')->in($projectIdList)
->andWhere('deleted')->eq(0)
->beginIF($status != 'all')->andWhere('status')->eq($status)->fi()
->groupBy('PRJ')
->fetchPairs('PRJ');
->groupBy('project')
->fetchPairs('project');
}
/**
@@ -763,21 +763,22 @@ class projectModel extends model
$groupPriv = $this->dao->select('t1.*')->from(TABLE_USERGROUP)->alias('t1')
->leftJoin(TABLE_GROUP)->alias('t2')->on('t1.group = t2.id')
->where('t1.account')->eq($this->app->user->account)
->andWhere('t2.role')->eq('PRJAdmin')
->andWhere('t2.role')->eq('projectAdmin')
->fetch();
if(!empty($groupPriv))
{
$newProject = $groupPriv->PRJ . ",$projectID";
$this->dao->update(TABLE_USERGROUP)->set('PRJ')->eq($newProject)->where('account')->eq($groupPriv->account)->andWhere('`group`')->eq($groupPriv->group)->exec();
$newProject = $groupPriv->project . ",$projectID";
$this->dao->update(TABLE_USERGROUP)->set('project')->eq($newProject)->where('account')->eq($groupPriv->account)->andWhere('`group`')->eq($groupPriv->group)->exec();
}
else
{
$PRJAdminID = $this->dao->select('id')->from(TABLE_GROUP)->where('role')->eq('PRJAdmin')->fetch('id');
$groupPriv = new stdclass();
$projectAdminID = $this->dao->select('id')->from(TABLE_GROUP)->where('role')->eq('projectAdmin')->fetch('id');
$groupPriv = new stdclass();
$groupPriv->account = $this->app->user->account;
$groupPriv->group = $PRJAdminID;
$groupPriv->PRJ = $projectID;
$groupPriv->group = $projectAdminID;
$groupPriv->project = $projectID;
$this->dao->insert(TABLE_USERGROUP)->data($groupPriv)->exec();
}
@@ -1106,8 +1107,8 @@ class projectModel extends model
echo "</div>";
}
$from = $project->from == 'PRJ' ? 'PRJ' : 'pgmproject';
$openApp = $project->from == 'PRJ' ? 'project' : 'project';
$from = $project->from == 'project' ? 'project' : 'pgmproject';
$openApp = $project->from == 'project' ? 'project' : 'project';
common::printIcon('project', 'edit', "projectID=$project->id&from=$from", $project, 'list', 'edit', '', '', '', "data-app=$openApp", '', $project->id);
common::printIcon('project', 'manageMembers', "projectID=$project->id", $project, 'list', 'group', '', '', '', '', $this->lang->execution->team, $project->id);
if($this->config->systemMode == 'new') common::printIcon('project', 'group', "projectID=$project->id&projectID=$projectID", $project, 'list', 'lock', '', '', '', '', '', $project->id);
+3 -3
View File
@@ -1048,8 +1048,8 @@ class userModel extends model
/* Get all tasks and compute totalConsumed, totalLeft, totalWait, progress according to them. */
$hours = array();
$emptyHour = array('totalConsumed' => 0, 'totalLeft' => 0, 'progress' => 0, 'waitTasks' => 0, 'assignedToMeTasks' => 0);
$searchField = $type == 'project' ? 'PRJ' : 'project';
$tasks = $this->dao->select('id, PRJ, project, consumed, `left`, status, assignedTo')
$searchField = $type == 'project' ? 'project' : 'execution';
$tasks = $this->dao->select('id, project, project, consumed, `left`, status, assignedTo')
->from(TABLE_TASK)
->where('parent')->lt(1)
->andWhere($searchField)->in($projectIdList)->fi()
@@ -1080,7 +1080,7 @@ class userModel extends model
}
$projectIdList = array_keys($myProjectsList);
$projectList = $this->loadModel('program')->getPRJByIdList($projectIdList);
$projectList = $this->loadModel('project')->getByIdList($projectIdList);
$myProjects = array();
foreach($myProjectsList as $projects)