Merge branch 'master_xieqiyu_66955' into 'master'

Master xieqiyu 66955

See merge request easycorp/zentaopms!5219
This commit is contained in:
王怡栋
2022-09-01 03:05:12 +00:00
13 changed files with 83 additions and 12 deletions
@@ -80,6 +80,8 @@
<?php echo strpos('draft,changing', $story->status) !== false ? html::textarea('spec', htmlSpecialString($story->spec), "rows='5' class='form-control'") : $story->spec;?>
</div>
</div>
<?php $showFile = strpos('draft,changing', $story->status) === false and empty($files) ? false : true;?>
<?php if($showFile):?>
<div class='detail'>
<div class='detail-title'><?php echo $lang->attatch;?></div>
<div class='form-group'>
@@ -88,6 +90,7 @@
<?php echo $canChangeFile ? $this->fetch('file', 'buildform') : '';?>
</div>
</div>
<?php endif;?>
<?php $this->printExtendFields($story, 'div', 'position=left');?>
<div class='detail'>
<div class='detail-title'><?php echo $lang->story->comment;?></div>
+2
View File
@@ -56,6 +56,8 @@ $config->bug->custom->createFields = $config->bug->list->customCreateFields
$config->bug->custom->batchCreateFields = 'project,execution,deadline,steps,type,severity,os,browser,%s';
$config->bug->custom->batchEditFields = 'type,severity,pri,assignedTo,deadline,status,resolvedBy,resolution';
$config->bug->excludeCheckFileds = ',severities,';
$config->bug->editor = new stdclass();
$config->bug->editor->create = array('id' => 'steps', 'tools' => 'bugTools');
$config->bug->editor->edit = array('id' => 'steps,comment', 'tools' => 'bugTools');
+11 -2
View File
@@ -192,7 +192,16 @@ class bugModel extends model
foreach($data->title as $i => $title)
{
$title = trim($title);
if(empty($title)) continue;
if(empty($title))
{
if($this->common->checkValidRow('bug', $data, $i))
{
dao::$errors['message'][] = sprintf($this->lang->error->notempty, $this->lang->bug->title);
return false;
}
continue;
}
$bug = new stdClass();
$bug->openedBy = $this->app->user->account;
@@ -202,7 +211,7 @@ class bugModel extends model
$bug->module = (int)$data->modules[$i];
$bug->project = (int)$data->projects[$i];
$bug->execution = (int)$data->executions[$i];
$bug->openedBuild = implode(',', $data->openedBuilds[$i]);
$bug->openedBuild = isset($data->openedBuilds) ? implode(',', $data->openedBuilds[$i]) : '';
$bug->color = $data->color[$i];
$bug->title = $title;
$bug->deadline = $data->deadlines[$i];
+22
View File
@@ -3481,6 +3481,28 @@ EOD;
return true;
}
/**
* Check valid row.
*
* @param string $objectType
* @param array $postData
* @param int $index
* @access public
* @return bool
*/
public function checkValidRow($objectType, $postData = array(), $index = 0)
{
if(empty($postData)) return false;
foreach($postData as $key => $value)
{
if(!is_array($value) or strpos($this->config->$objectType->excludeCheckFileds, ",$key,") !== false) continue;
if(isset($value[$index]) and !empty($value[$index]) and $value[$index] != 'ditto') return true;
}
return false;
}
}
class common extends commonModel
+6 -6
View File
@@ -46,8 +46,8 @@ class fileModel extends model
->where('objectType')->eq($objectType)
->andWhere('objectID')->eq((int)$objectID)
->andWhere('extra')->ne('editor')
->beginIF($objectType == 'story' and $extra)->andWhere('extra')->like("%,$extra,%")->fi()
->beginIF($objectType != 'story' and $extra)->andWhere('extra')->eq($extra)->fi()
->beginIF(strpos('story,requirement', $objectType) !== false and $extra)->andWhere('extra')->like("%,$extra,%")->fi()
->beginIF(strpos('story,requirement', $objectType) === false and $extra)->andWhere('extra')->eq($extra)->fi()
->andWhere('deleted')->eq('0')
->orderBy('id')
->fetchAll('id');
@@ -1132,8 +1132,8 @@ class fileModel extends model
public function updateStoryFileVersion($storyID, $storyVersion, $deleteFiles = array())
{
$oldStoryVersion = $storyVersion - 1;
$this->dao->dbh($this->dbh)->update(TABLE_FILE)->set("extra = CONCAT(extra, '$storyVersion,')")
->where('objectType')->eq('story')
$this->dao->update(TABLE_FILE)->set("extra = CONCAT(extra, '$storyVersion,')")
->where('objectType')->in('story,requirement')
->andWhere('objectID')->eq($storyID)
->andWhere('extra')->like("%,$oldStoryVersion,%")
->beginIF(!empty($deleteFiles))->andWhere('id')->notin($deleteFiles)->fi()
@@ -1152,7 +1152,7 @@ class fileModel extends model
public function deleteStoryFile($storyID, $storyVersion, $deleteFiles = array())
{
$deleteFileList = $this->dao->select('*')->from(TABLE_FILE)
->where('objectType')->eq('story')
->where('objectType')->in('story,requirement')
->andWhere('objectID')->eq($storyID)
->andWhere('extra')->eq(",$storyVersion,")
->beginIF(!empty($deleteFiles))->andWhere('id')->in($deleteFiles)->fi()
@@ -1171,7 +1171,7 @@ class fileModel extends model
/* When the file is in multiple story versions, 'extra' need delete the version to be deleted. */
$this->dao->update(TABLE_FILE)->set("extra = REPLACE(extra, '$storyVersion,', '')")
->where('objectType')->eq('story')
->where('objectType')->in('story,requirement')
->andWhere('objectID')->eq($storyID)
->andWhere('extra')->like("%,$storyVersion,%")
->beginIF(!empty($deleteFiles))->andWhere('id')->in($deleteFiles)->fi()
+2
View File
@@ -50,6 +50,8 @@ $config->story->custom->createFields = $config->story->list->customCreateFi
$config->story->custom->batchCreateFields = 'module,plan,spec,pri,estimate,review,%s';
$config->story->custom->batchEditFields = 'branch,module,plan,estimate,pri,source,stage,closedBy,closedReason';
$config->story->excludeCheckFileds = ',uploadImage,category,reviewer,reviewDitto,';
global $lang, $app;
$config->story->datatable = new stdclass();
if($app->tab == 'execution')
+10 -1
View File
@@ -501,7 +501,16 @@ class storyModel extends model
$data = array();
foreach($stories->title as $i => $title)
{
if(empty($title)) continue;
if(empty($title))
{
if($this->common->checkValidRow('story', $stories, $i))
{
dao::$errors['message'][] = sprintf($this->lang->error->notempty, $this->lang->story->title);
return false;
}
continue;
}
if(empty($stories->reviewer[$i]) and empty($stories->reviewerDitto[$i])) $stories->reviewer[$i] = array();
+3
View File
@@ -85,6 +85,8 @@
<?php echo strpos('draft,changing', $story->status) !== false ? html::textarea('verify', htmlSpecialString($story->verify), "rows='5' class='form-control'") : $story->verify;?>
</div>
</div>
<?php $showFile = strpos('draft,changing', $story->status) === false and empty($files) ? false : true;?>
<?php if($showFile):?>
<div class='detail'>
<div class='detail-title'><?php echo $lang->attatch;?></div>
<div class='form-group'>
@@ -93,6 +95,7 @@
<?php echo $canChangeFile ? $this->fetch('file', 'buildform') : '';?>
</div>
</div>
<?php endif;?>
<?php $this->printExtendFields($story, 'div', 'position=left');?>
<div class='detail'>
<div class='detail-title'><?php echo $lang->story->comment;?></div>
+2
View File
@@ -48,6 +48,8 @@ $config->task->custom->createFields = $config->task->customCreateFields;
$config->task->custom->batchCreateFields = 'module,story,assignedTo,estimate,desc,pri';
$config->task->custom->batchEditFields = 'module,assignedTo,status,pri,estimate,record,left';
$config->task->excludeCheckFileds = ',pri,estStartedDitto,deadlineDitto,';
$config->task->datatable = new stdclass();
$config->task->datatable->defaultField = array('id', 'pri', 'name', 'status', 'assignedTo', 'finishedBy', 'estimate', 'consumed', 'left', 'progress', 'deadline', 'actions');
+9 -1
View File
@@ -353,7 +353,15 @@ class taskModel extends model
$estStarted = (!isset($tasks->estStarted[$i]) or isset($tasks->estStartedDitto[$i])) ? $estStarted : $tasks->estStarted[$i];
$deadline = (!isset($tasks->deadline[$i]) or isset($tasks->deadlineDitto[$i])) ? $deadline : $tasks->deadline[$i];
if(empty($tasks->name[$i])) continue;
if(empty($tasks->name[$i]))
{
if($this->common->checkValidRow('task', $tasks, $i))
{
dao::$errors['message'][] = sprintf($this->lang->error->notempty, $this->lang->task->name);
return false;
}
continue;
}
$data[$i] = new stdclass();
$data[$i]->story = (int)$story;
+2
View File
@@ -32,6 +32,8 @@ $config->testcase->custom->createFields = $config->testcase->customCreateFi
$config->testcase->custom->batchCreateFields = 'module,story,%s';
$config->testcase->custom->batchEditFields = 'branch,module,stage,status,pri,story';
$config->testcase->excludeCheckFileds = ',pri,type,stage,';
global $lang;
$config->testcase->search['module'] = 'testcase';
$config->testcase->search['fields']['title'] = $lang->testcase->title;
+10 -1
View File
@@ -155,7 +155,16 @@ class testcaseModel extends model
$data = array();
foreach($cases->title as $i => $title)
{
if(empty($title)) continue;
if(empty($title))
{
if($this->common->checkValidRow('testcase', $cases, $i))
{
dao::$errors['message'][] = sprintf($this->lang->error->notempty, $this->lang->testcase->title);
return false;
}
continue;
}
$data[$i] = new stdclass();
$data[$i]->product = $productID;
+1 -1
View File
@@ -7216,7 +7216,7 @@ class upgradeModel extends model
*/
public function updateStoryFile()
{
$storyFileList = $this->dao->select('*')->from(TABLE_FILE)->where('objectType')->eq('story')->andWhere('extra')->ne('editor')->fetchAll('id');
$storyFileList = $this->dao->select('*')->from(TABLE_FILE)->where('objectType')->in('story,requirement')->andWhere('extra')->ne('editor')->fetchAll('id');
/* Get story version. */
$storyIDList = array();