Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms
This commit is contained in:
@@ -544,7 +544,7 @@ class customModel extends model
|
||||
$this->app->loadLang('custom');
|
||||
$lang = $this->app->getClientLang();
|
||||
|
||||
$langData = $this->dao->select('`key`, `value`, system')->from(TABLE_LANG)
|
||||
$langData = $this->dao->select('`key`, `value`, `system`')->from(TABLE_LANG)
|
||||
->where('lang')->eq($lang)
|
||||
->andWhere('module')->eq('custom')
|
||||
->andWhere('section')->eq('URSRList')
|
||||
|
||||
@@ -26,7 +26,7 @@ $lang->group->confirmDelete = 'Möchten Sie die Gruppe löschen?';
|
||||
$lang->group->successSaved = 'Gespeichert!';
|
||||
$lang->group->errorNotSaved = 'Fehlgeschlagen. Bitte aktion und Gruppe wählen.';
|
||||
$lang->group->viewList = 'Anzeige ist zulässig.';
|
||||
$lang->group->PRJ = 'Manage Project';
|
||||
$lang->group->manageProject = 'Manage Project';
|
||||
$lang->group->programList = 'Access Program';
|
||||
$lang->group->productList = 'Produkte sind zugänglich.';
|
||||
$lang->group->projectList = 'Projekte sind zugänglich.';
|
||||
|
||||
@@ -26,7 +26,7 @@ $lang->group->confirmDelete = 'Do you want to delete this user group?';
|
||||
$lang->group->successSaved = 'Saved.';
|
||||
$lang->group->errorNotSaved = 'Failed. Please select actions and groups.';
|
||||
$lang->group->viewList = 'Access Sight';
|
||||
$lang->group->PRJ = 'Manage Project';
|
||||
$lang->group->manageProject = 'Manage Project';
|
||||
$lang->group->programList = 'Access Program';
|
||||
$lang->group->productList = 'Access Product';
|
||||
$lang->group->projectList = 'Access Project';
|
||||
|
||||
@@ -26,7 +26,7 @@ $lang->group->confirmDelete = "Voulez-vous supprimer ce groupe d'utilisateu
|
||||
$lang->group->successSaved = 'Sauvé.';
|
||||
$lang->group->errorNotSaved = 'Echec. Veuillez sélectionner actions et groupes.';
|
||||
$lang->group->viewList = 'Accès Consultation';
|
||||
$lang->group->PRJ = 'Manage Project';
|
||||
$lang->group->manageProject = 'Manage Project';
|
||||
$lang->group->programList = 'Accè Programs';
|
||||
$lang->group->productList = 'Accès ' . $lang->productCommon . 's';
|
||||
$lang->group->projectList = 'Accès ' . $lang->executionCommon . 's';
|
||||
|
||||
@@ -989,8 +989,8 @@ $lang->job->methodOrder[25] = 'exec';
|
||||
$lang->resource->doc = new stdclass();
|
||||
$lang->resource->doc->index = 'index';
|
||||
$lang->resource->doc->browse = 'browse';
|
||||
$lang->resource->doc->createlib = 'createLib';
|
||||
$lang->resource->doc->editlib = 'editLib';
|
||||
$lang->resource->doc->createlib = 'createlib';
|
||||
$lang->resource->doc->editlib = 'editlib';
|
||||
$lang->resource->doc->deleteLib = 'deleteLib';
|
||||
$lang->resource->doc->create = 'create';
|
||||
$lang->resource->doc->view = 'view';
|
||||
@@ -1006,9 +1006,9 @@ $lang->resource->doc->collect = 'collect';
|
||||
|
||||
$lang->doc->methodOrder[0] = 'index';
|
||||
$lang->doc->methodOrder[5] = 'browse';
|
||||
$lang->doc->methodOrder[10] = 'createLib';
|
||||
$lang->doc->methodOrder[10] = 'createlib';
|
||||
$lang->doc->methodOrder[15] = 'editLib';
|
||||
$lang->doc->methodOrder[20] = 'deleteLib';
|
||||
$lang->doc->methodOrder[20] = 'deletelib';
|
||||
$lang->doc->methodOrder[25] = 'create';
|
||||
$lang->doc->methodOrder[30] = 'view';
|
||||
$lang->doc->methodOrder[35] = 'edit';
|
||||
|
||||
@@ -26,7 +26,7 @@ $lang->group->confirmDelete = 'Bạn có muốn xóa người dùng này gr
|
||||
$lang->group->successSaved = 'Đã lưu.';
|
||||
$lang->group->errorNotSaved = 'Thất bại. Vui lòng select actions and groups.';
|
||||
$lang->group->viewList = 'Truy cập Sight';
|
||||
$lang->group->PRJ = 'Manage Project';
|
||||
$lang->group->manageProject = 'Manage Project';
|
||||
$lang->group->programList = 'Truy cập Program';
|
||||
$lang->group->productList = 'Truy cập Product';
|
||||
$lang->group->projectList = 'Truy cập Project';
|
||||
|
||||
@@ -26,7 +26,7 @@ $lang->group->confirmDelete = '您确定删除该用户分组吗?';
|
||||
$lang->group->successSaved = '成功保存';
|
||||
$lang->group->errorNotSaved = '没有保存,请确认选择了权限数据。';
|
||||
$lang->group->viewList = '可访问视图';
|
||||
$lang->group->PRJ = '可管理项目';
|
||||
$lang->group->manageProject = '可管理项目';
|
||||
$lang->group->programList = '可访问项目集';
|
||||
$lang->group->productList = '可访问' . $lang->productCommon;
|
||||
$lang->group->projectList = '可访问项目';
|
||||
|
||||
@@ -26,7 +26,7 @@ $lang->group->confirmDelete = '您確定刪除該用戶分組嗎?';
|
||||
$lang->group->successSaved = '成功保存';
|
||||
$lang->group->errorNotSaved = '沒有保存,請確認選擇了權限數據。';
|
||||
$lang->group->viewList = '可訪問視圖';
|
||||
$lang->group->PRJ = '可管理項目';
|
||||
$lang->group->manageProject = '可管理项目';
|
||||
$lang->group->programList = '可訪問項目集';
|
||||
$lang->group->productList = '可訪問' . $lang->productCommon;
|
||||
$lang->group->projectList = '可訪問項目';
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
</td>
|
||||
<td class='pv-10px' colspan='2'>
|
||||
<div class='input-group'>
|
||||
<span class='input-group-addon'> <?php echo $lang->group->PRJ;?></span>
|
||||
<span class='input-group-addon'> <?php echo $lang->group->manageProject;?></span>
|
||||
<?php echo html::select("program[$account][]", $programs, $program, "class='form-control chosen' multiple");?>
|
||||
</div>
|
||||
</td>
|
||||
@@ -58,7 +58,7 @@
|
||||
</td>
|
||||
<td class='pv-10px' colspan='2'>
|
||||
<div class='input-group'>
|
||||
<span class='input-group-addon'> <?php echo $lang->group->PRJ;?></span>
|
||||
<span class='input-group-addon'> <?php echo $lang->group->manageProject;?></span>
|
||||
<?php echo html::select('program[0][]', $programs, '', "class='form-control chosen' multiple");?>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
@@ -110,6 +110,9 @@ class program extends control
|
||||
*/
|
||||
public function PGMProduct($programID = 0, $browseType = 'noclosed', $orderBy = 'order_desc', $recTotal = 0, $recPerPage = 15, $pageID = 1)
|
||||
{
|
||||
$programID = $this->program->savePGMState($programID, $this->program->getPGMPairs());
|
||||
setCookie("lastPGM", $programID, $this->config->cookieLife, $this->config->webRoot, '', false, true);
|
||||
|
||||
$program = $this->program->getPGMByID($programID);
|
||||
if(empty($program) || $program->type != 'program') die(js::error($this->lang->notFound) . js::locate('back'));
|
||||
|
||||
@@ -958,6 +961,7 @@ class program extends control
|
||||
$this->app->loadLang('custom');
|
||||
$this->app->loadLang('project');
|
||||
$this->loadModel('productplan');
|
||||
$this->loadModel('action');
|
||||
|
||||
$project = $this->program->getPRJByID($projectID);
|
||||
$programID = $project->parent;
|
||||
@@ -988,7 +992,7 @@ class program extends control
|
||||
|
||||
if($changes)
|
||||
{
|
||||
$actionID = $this->loadModel('action')->create('project', $projectID, 'edited');
|
||||
$actionID = $this->action->create('project', $projectID, 'edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
|
||||
@@ -1056,6 +1060,8 @@ class program extends control
|
||||
*/
|
||||
public function PRJBatchEdit($from = 'prjbrowse', $programID = 0)
|
||||
{
|
||||
$this->loadModel('action');
|
||||
|
||||
/* Navigation stay in program when enter from program list. */
|
||||
if($from == 'pgmproject')
|
||||
{
|
||||
@@ -1078,7 +1084,7 @@ class program extends control
|
||||
{
|
||||
if(empty($changes)) continue;
|
||||
|
||||
$actionID = $this->loadModel('action')->create('project', $projectID, 'Edited');
|
||||
$actionID = $this->action->create('project', $projectID, 'Edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
}
|
||||
|
||||
+32
-21
@@ -1744,17 +1744,7 @@ class programModel extends model
|
||||
|
||||
if(!dao::isError())
|
||||
{
|
||||
/* Product belonging program set processing. */
|
||||
$oldTopPGM = $this->getTopPGMByID($oldProject->parent);
|
||||
$newTopPGM = $this->getTopPGMByID($project->parent);
|
||||
if($oldTopPGM != $newTopPGM)
|
||||
{
|
||||
foreach($_POST['products'] as $productID => $product)
|
||||
{
|
||||
$this->dao->update(TABLE_PRODUCT)->set('program')->eq((int)$newTopPGM)->where('id')->eq((int)$productID)->exec();
|
||||
}
|
||||
}
|
||||
|
||||
$this->updateProductPGM($oldProject->parent, $project->parent, $_POST['products']);
|
||||
$this->loadModel('project')->updateProducts($projectID, $_POST['products']);
|
||||
$this->file->updateObjectID($this->post->uid, $projectID, 'project');
|
||||
|
||||
@@ -1814,17 +1804,9 @@ class programModel extends model
|
||||
if(dao::isError()) die(js::error('project#' . $projectID . dao::getError(true)));
|
||||
if(!dao::isError())
|
||||
{
|
||||
/* Product belonging program set processing. */
|
||||
$oldTopPGM = $this->getTopPGMByID($oldProject->parent);
|
||||
$newTopPGM = $this->getTopPGMByID($project->parent);
|
||||
$linkedProducts = $this->dao->select('product')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($projectID)->fetchPairs();
|
||||
if($oldTopPGM != $newTopPGM)
|
||||
{
|
||||
foreach($linkedProducts as $productID => $product)
|
||||
{
|
||||
$this->dao->update(TABLE_PRODUCT)->set('program')->eq($newTopPGM)->where('id')->eq((int)$productID)->exec();
|
||||
}
|
||||
}
|
||||
$this->updateProductPGM($oldProject->parent, $project->parent, $linkedProducts);
|
||||
|
||||
if($oldProject->parent != $project->parent) $this->processNode($projectID, $project->parent, $oldProject->path, $oldProject->grade);
|
||||
}
|
||||
$allChanges[$projectID] = common::createChanges($oldProject, $project);
|
||||
@@ -1832,6 +1814,35 @@ class programModel extends model
|
||||
return $allChanges;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the program set of the product.
|
||||
*
|
||||
* @param int $oldProgram
|
||||
* @param int $newProgram
|
||||
* @param array $products
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function updateProductPGM($oldProgram, $newProgram, $products)
|
||||
{
|
||||
$this->loadModel('action');
|
||||
/* Product belonging program set processing. */
|
||||
$oldTopPGM = $this->getTopPGMByID($oldProgram);
|
||||
$newTopPGM = $this->getTopPGMByID($newProgram);
|
||||
if($oldTopPGM != $newTopPGM)
|
||||
{
|
||||
foreach($products as $productID => $product)
|
||||
{
|
||||
$oldProduct = $this->dao->findById($productID)->from(TABLE_PRODUCT)->fetch();
|
||||
$this->dao->update(TABLE_PRODUCT)->set('program')->eq((int)$newTopPGM)->where('id')->eq((int)$productID)->exec();
|
||||
$newProduct = $this->dao->findById($productID)->from(TABLE_PRODUCT)->fetch();
|
||||
$changes = common::createChanges($oldProduct, $newProduct);
|
||||
$actionID = $this->action->create('product', $productID, 'edited');
|
||||
$this->action->logHistory($actionID, $changes);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Print datatable cell.
|
||||
*
|
||||
|
||||
@@ -178,23 +178,23 @@
|
||||
<th><?php echo $lang->project->begin;?></th>
|
||||
<td><?php echo $project->begin;?></td>
|
||||
<th><?php echo $lang->project->totalEstimate;?></th>
|
||||
<td><em><?php echo (float)$workhour->totalEstimate;?></em></td>
|
||||
<td><em><?php echo (float)$workhour->totalEstimate . $lang->project->workHour;?></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->end;?></th>
|
||||
<td><?php echo $project->end;?></td>
|
||||
<th><?php echo $lang->project->totalConsumed;?></th>
|
||||
<td><em><?php echo (float)$workhour->totalConsumed;?></em></td>
|
||||
<td><em><?php echo (float)$workhour->totalConsumed . $lang->project->workHour;?></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->totalDays;?></th>
|
||||
<td><?php echo $project->days;?></td>
|
||||
<th><?php echo $lang->project->totalLeft;?></th>
|
||||
<td><em><?php echo (float)$workhour->totalLeft;?></em></td>
|
||||
<td><em><?php echo (float)$workhour->totalLeft . $lang->project->workHour;?></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->project->totalHours;?></th>
|
||||
<td><em><?php echo (float)$workhour->totalHours;?></em></td>
|
||||
<td><em><?php echo (float)$workhour->totalHours . $lang->project->workHour;?></em></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<?php
|
||||
$lang->projectstory->common = 'Anforderungen an Projekte';
|
||||
$lang->projectstory->index = 'Fordern Sie Homepage';
|
||||
$lang->projectstory->view = 'Story Detail';
|
||||
$lang->projectstory->track = 'Matrix der Verfolgung';
|
||||
$lang->projectstory->common = "Project {$lang->SRCommon}";
|
||||
$lang->projectstory->index = "{$lang->SRCommon} Home";
|
||||
$lang->projectstory->view = "{$lang->SRCommon} Detail";
|
||||
$lang->projectstory->story = "{$lang->SRCommon} List";
|
||||
$lang->projectstory->track = 'Tracking Matrix';
|
||||
$lang->projectstory->linkStory = 'Linked' . $lang->SRCommon;
|
||||
$lang->projectstory->unlinkStory = 'Unlinked' . $lang->SRCommon;
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<?php
|
||||
$lang->projectstory->common = 'Project Requirements';
|
||||
$lang->projectstory->index = 'Request Home';
|
||||
$lang->projectstory->view = 'Story Detail';
|
||||
$lang->projectstory->common = "Project {$lang->SRCommon}";
|
||||
$lang->projectstory->index = "{$lang->SRCommon} Home";
|
||||
$lang->projectstory->view = "{$lang->SRCommon} Detail";
|
||||
$lang->projectstory->story = "{$lang->SRCommon} List";
|
||||
$lang->projectstory->track = 'Tracking Matrix';
|
||||
$lang->projectstory->linkStory = 'Linked' . $lang->SRCommon;
|
||||
$lang->projectstory->unlinkStory = 'Unlinked' . $lang->SRCommon;
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<?php
|
||||
$lang->projectstory->common = 'Exigences du projet';
|
||||
$lang->projectstory->index = 'Exigences Accueil';
|
||||
$lang->projectstory->view = 'Story Detail';
|
||||
$lang->projectstory->track = 'Matrice de suivi';
|
||||
$lang->projectstory->common = "Project {$lang->SRCommon}";
|
||||
$lang->projectstory->index = "{$lang->SRCommon} Home";
|
||||
$lang->projectstory->view = "{$lang->SRCommon} Detail";
|
||||
$lang->projectstory->story = "{$lang->SRCommon} List";
|
||||
$lang->projectstory->track = 'Tracking Matrix';
|
||||
$lang->projectstory->linkStory = 'Linked' . $lang->SRCommon;
|
||||
$lang->projectstory->unlinkStory = 'Unlinked' . $lang->SRCommon;
|
||||
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<?php
|
||||
$lang->projectstory->common = 'Yêu cầu dự án';
|
||||
$lang->projectstory->index = 'Yêu cầu trang nhà';
|
||||
$lang->projectstory->view = 'Story Detail';
|
||||
$lang->projectstory->track = 'Theo dõi ma trận';
|
||||
$lang->projectstory->common = "Project {$lang->SRCommon}";
|
||||
$lang->projectstory->index = "{$lang->SRCommon} Home";
|
||||
$lang->projectstory->view = "{$lang->SRCommon} Detail";
|
||||
$lang->projectstory->story = "{$lang->SRCommon} List";
|
||||
$lang->projectstory->track = 'Tracking Matrix';
|
||||
$lang->projectstory->linkStory = 'Linked' . $lang->SRCommon;
|
||||
$lang->projectstory->unlinkStory = 'Unlinked' . $lang->SRCommon;
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<?php
|
||||
$lang->projectstory->common = '项目需求';
|
||||
$lang->projectstory->index = '需求主页';
|
||||
$lang->projectstory->view = '需求详情';
|
||||
$lang->projectstory->common = "项目{$lang->SRCommon}";
|
||||
$lang->projectstory->index = "{$lang->SRCommon}主页";
|
||||
$lang->projectstory->view = "{$lang->SRCommon}详情";
|
||||
$lang->projectstory->story = "{$lang->SRCommon}列表";
|
||||
$lang->projectstory->track = '矩阵';
|
||||
$lang->projectstory->linkStory = '关联' . $lang->SRCommon;
|
||||
$lang->projectstory->unlinkStory = '移除' . $lang->SRCommon;
|
||||
|
||||
@@ -3993,7 +3993,7 @@ class upgradeModel extends model
|
||||
$data = fixer::input('post')->get();
|
||||
$account = isset($this->app->user->account) ? $this->app->user->account : '';
|
||||
|
||||
if(!isset($data->programs) && $data->programID == '')
|
||||
if(isset($data->newProgram))
|
||||
{
|
||||
/* Insert program. */
|
||||
$program = new stdclass();
|
||||
@@ -4009,7 +4009,7 @@ class upgradeModel extends model
|
||||
|
||||
$this->app->loadLang('program');
|
||||
$this->app->loadLang('project');
|
||||
$this->lang->project->name = $this->lang->program->PGMName;
|
||||
$this->lang->project->name = $this->lang->program->PGMName;
|
||||
|
||||
$this->dao->insert(TABLE_PROJECT)->data($program)
|
||||
->batchcheck('name,begin', 'notempty')
|
||||
@@ -4066,7 +4066,7 @@ class upgradeModel extends model
|
||||
|
||||
if(!isset($data->sprints)) return array($programID, 0, $lineID);
|
||||
|
||||
if(!isset($data->projects))
|
||||
if(isset($data->newProject))
|
||||
{
|
||||
if(!$this->post->longTime and !$this->post->end) die(js::alert(sprintf($this->lang->error->notempty, $this->lang->program->end)));
|
||||
|
||||
@@ -4201,7 +4201,6 @@ class upgradeModel extends model
|
||||
|
||||
$data = new stdClass();
|
||||
$data->realBegan = $minRealBegan ? substr($minRealBegan, 0, 10) : '0000-00-00';
|
||||
$data->status = $PRJStatus;
|
||||
|
||||
$PRJStatus = $this->dao->select('status')->from(TABLE_PROJECT)->where('id')->eq($projectID)->fetch('status');
|
||||
if($PRJStatus == 'closed')
|
||||
|
||||
@@ -9,14 +9,12 @@
|
||||
<div class='input-group'>
|
||||
<?php echo html::select("programs", $programs, $programID, "class='form-control hidden pgm-exist' onchange='getProjectByProgram(this)'");?>
|
||||
<?php echo html::input("PGMName", isset($programName) ? $programName : '', "class='form-control pgm-no-exist'");?>
|
||||
<?php if(count($programs)):?>
|
||||
<span class='input-group-addon'>
|
||||
<div class="checkbox-primary">
|
||||
<input type="checkbox" name="newProgram" value="0" checked onchange="toggleProgram(this)" id="newProgram0" />
|
||||
<label for="newProgram0"><?php echo $lang->upgrade->newProgram;?></label>
|
||||
</div>
|
||||
</span>
|
||||
<?php endif;?>
|
||||
</div>
|
||||
<?php echo html::hidden('programID', '');?>
|
||||
</td>
|
||||
|
||||
Reference in New Issue
Block a user