* finish task #2356.
This commit is contained in:
@@ -1,2 +1,3 @@
|
||||
ALTER TABLE `zt_action` CHANGE `extra` `extra` text COLLATE 'utf8_general_ci' NOT NULL AFTER `comment`;
|
||||
ALTER TABLE `zt_release` ADD `leftBugs` text COLLATE 'utf8_general_ci' NOT NULL AFTER `bugs`;
|
||||
ALTER TABLE `zt_release` ADD `status` varchar(20) COLLATE 'utf8_general_ci' NOT NULL DEFAULT 'normal' AFTER `desc`;
|
||||
|
||||
@@ -126,6 +126,7 @@ $lang->action->label->svncommited = 'commited code';
|
||||
$lang->action->label->gitcommited = 'commited code';
|
||||
$lang->action->label->linked2plan = 'link to plan';
|
||||
$lang->action->label->unlinkedfromplan = 'unlink from plan';
|
||||
$lang->action->label->changestatus = 'change status';
|
||||
$lang->action->label->marked = 'edited';
|
||||
$lang->action->label->linked2project = "link to {$lang->projectCommon}";
|
||||
$lang->action->label->unlinkedfromproject = "unlik from {$lang->projectCommon}";
|
||||
@@ -204,6 +205,7 @@ $lang->action->search->label['svncommited'] = $lang->action->label->svnc
|
||||
$lang->action->search->label['gitcommited'] = $lang->action->label->gitcommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['changestatus'] = $lang->action->label->changestatus;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
|
||||
@@ -126,6 +126,7 @@ $lang->action->label->svncommited = '提交代码';
|
||||
$lang->action->label->gitcommited = '提交代码';
|
||||
$lang->action->label->linked2plan = '关联计划';
|
||||
$lang->action->label->unlinkedfromplan = '移除计划';
|
||||
$lang->action->label->changestatus = '修改状态';
|
||||
$lang->action->label->marked = '编辑了';
|
||||
$lang->action->label->linked2project = "关联{$lang->projectCommon}";
|
||||
$lang->action->label->unlinkedfromproject = "移除{$lang->projectCommon}";
|
||||
@@ -204,6 +205,7 @@ $lang->action->search->label['svncommited'] = $lang->action->label->svnc
|
||||
$lang->action->search->label['gitcommited'] = $lang->action->label->gitcommited;
|
||||
$lang->action->search->label['linked2plan'] = $lang->action->label->linked2plan;
|
||||
$lang->action->search->label['unlinkedfromplan'] = $lang->action->label->unlinkedfromplan;
|
||||
$lang->action->search->label['changestatus'] = $lang->action->label->changestatus;
|
||||
$lang->action->search->label['marked'] = $lang->action->label->marked;
|
||||
$lang->action->search->label['linked2project'] = $lang->action->label->linked2project;
|
||||
$lang->action->search->label['unlinkedfromproject'] = $lang->action->label->unlinkedfromproject;
|
||||
|
||||
@@ -355,8 +355,8 @@ $lang->bug->action = new stdclass();
|
||||
$lang->bug->action->resolved = array('main' => '$date, Resolved by <strong>$actor</strong>, resolution is <strong>$extra</strong>.', 'extra' => 'resolutionList');
|
||||
$lang->bug->action->tostory = array('main' => '$date, To story by <strong>$actor</strong>, ID is <strong>$extra</strong>.');
|
||||
$lang->bug->action->totask = array('main' => '$date, To task by <strong>$actor</strong>, ID is <strong>$extra</strong>.');
|
||||
$lang->bug->action->linked2plan = array('main' => '$date, 由 <strong>$actor</strong> 关联到计划 <strong>$extra</strong>。');
|
||||
$lang->bug->action->unlinkedfromplan = array('main' => '$date, 由 <strong>$actor</strong> 从计划 <strong>$extra</strong> 移除。');
|
||||
$lang->bug->action->linked2plan = array('main' => '$date, Link to plan by <strong>$actor</strong>,ID is <strong>$extra</strong>。');
|
||||
$lang->bug->action->unlinkedfromplan = array('main' => '$date, Unlink from plan <strong>$extra</strong> by <strong>$actor</strong>.');
|
||||
|
||||
$lang->bug->placeholder = new stdclass();
|
||||
$lang->bug->placeholder->chooseBuilds = 'Choose builds...';
|
||||
|
||||
@@ -229,6 +229,7 @@ $lang->resource->release->batchUnlinkStory = 'batchUnlinkStory';
|
||||
$lang->resource->release->linkBug = 'linkBug';
|
||||
$lang->resource->release->unlinkBug = 'unlinkBug';
|
||||
$lang->resource->release->batchUnlinkBug = 'batchUnlinkBug';
|
||||
$lang->resource->release->changeStatus = 'changeStatus';
|
||||
|
||||
$lang->release->methodOrder[5] = 'browse';
|
||||
$lang->release->methodOrder[10] = 'create';
|
||||
@@ -242,6 +243,7 @@ $lang->release->methodOrder[50] = 'batchUnlinkStory';
|
||||
$lang->release->methodOrder[55] = 'linkBug';
|
||||
$lang->release->methodOrder[60] = 'unlinkBug';
|
||||
$lang->release->methodOrder[65] = 'batchUnlinkBug';
|
||||
$lang->release->methodOrder[70] = 'changeStatus';
|
||||
|
||||
/* Project. */
|
||||
$lang->resource->project = new stdclass();
|
||||
@@ -1094,3 +1096,5 @@ $lang->changelog['7.3'][] = 'admin-sso';
|
||||
$lang->changelog['7.3'][] = 'cron-openProcess';
|
||||
$lang->changelog['7.3'][] = 'mail-sendCloud';
|
||||
$lang->changelog['7.3'][] = 'mail-sendcloudUser';
|
||||
|
||||
$lang->changelog['7.4'][] = 'release-changeStatus';
|
||||
|
||||
@@ -141,7 +141,7 @@ class release extends control
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'linkedBug');
|
||||
|
||||
$leftBugs = $this->dao->select('*')->from(TABLE_BUG)->where('id')->in($release->leftBugs)->andWhere('deleted')->eq(0)->fetchAll();
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'newBugs');
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'leftBugs');
|
||||
|
||||
$this->commonAction($release->product);
|
||||
$products = $this->product->getPairs();
|
||||
@@ -271,11 +271,11 @@ class release extends control
|
||||
$html .= '</table>';
|
||||
}
|
||||
|
||||
if($type == 'newbug' or $type == 'all')
|
||||
if($type == 'leftbug' or $type == 'all')
|
||||
{
|
||||
$html .= "<h3>{$this->lang->release->generatedBugs}</h3>";
|
||||
|
||||
$bugs = $this->dao->select('id, title')->from(TABLE_BUG)->where($this->session->newBugsQueryCondition)
|
||||
$bugs = $this->dao->select('id, title')->from(TABLE_BUG)->where($this->session->leftBugsQueryCondition)
|
||||
->beginIF($this->session->bugOrderBy != false)->orderBy($this->session->bugOrderBy)->fi()
|
||||
->fetchAll('id');
|
||||
|
||||
@@ -510,4 +510,20 @@ class release extends control
|
||||
$this->release->batchUnlinkBug($releaseID, $type);
|
||||
die(js::locate($this->createLink('release', 'view', "releaseID=$releaseID&type=$type"), 'parent'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Change status.
|
||||
*
|
||||
* @param int $releaseID
|
||||
* @param string $status
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function changeStatus($releaseID, $status)
|
||||
{
|
||||
$this->release->changeStatus($releaseID, $status);
|
||||
if(dao::isError()) die(js::error(dao::getError()));
|
||||
$actionID = $this->loadModel('action')->create('release', $releaseID, 'changestatus', '', $status);
|
||||
die(js::reload('parent'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ $lang->release->delete = "Delete";
|
||||
$lang->release->deleted = 'Deleted';
|
||||
$lang->release->view = "Info";
|
||||
$lang->release->browse = "Browse";
|
||||
$lang->release->changeStatus = "Change status";
|
||||
$lang->release->batchUnlink = "Batch unlink";
|
||||
$lang->release->batchUnlinkStory = "Batch unlink story";
|
||||
$lang->release->batchUnlinkBug = "Batch unlink bug";
|
||||
@@ -34,6 +35,7 @@ $lang->release->build = 'Build';
|
||||
$lang->release->name = 'Name';
|
||||
$lang->release->date = 'Date';
|
||||
$lang->release->desc = 'Desc';
|
||||
$lang->release->status = 'Status';
|
||||
$lang->release->last = 'Last release';
|
||||
$lang->release->linkStoriesAndBugs = 'Stories and bugs';
|
||||
$lang->release->linkStories = 'Stories';
|
||||
@@ -51,7 +53,14 @@ $lang->release->export = 'Export as HTML';
|
||||
$lang->release->filePath = 'Download : ';
|
||||
$lang->release->scmPath = 'SCM Path : ';
|
||||
|
||||
$lang->release->exportTypeList['all'] = 'All';
|
||||
$lang->release->exportTypeList['story'] = 'Resolved Stories';
|
||||
$lang->release->exportTypeList['bug'] = 'Resolved bugs';
|
||||
$lang->release->exportTypeList['newbug'] = 'Generated bugs';
|
||||
$lang->release->exportTypeList['all'] = 'All';
|
||||
$lang->release->exportTypeList['story'] = 'Resolved Stories';
|
||||
$lang->release->exportTypeList['bug'] = 'Resolved bugs';
|
||||
$lang->release->exportTypeList['leftbug'] = 'Generated bugs';
|
||||
|
||||
$lang->release->statusList[''] = '';
|
||||
$lang->release->statusList['normal'] = 'Normal';
|
||||
$lang->release->statusList['terminate'] = 'Terminate';
|
||||
|
||||
$lang->release->action = new stdclass();
|
||||
$lang->release->action->changestatus = array('main' => '$date, $extra By <strong>$actor</strong>.', 'extra' => 'statusList');
|
||||
|
||||
@@ -18,6 +18,7 @@ $lang->release->delete = "删除发布";
|
||||
$lang->release->deleted = '已删除';
|
||||
$lang->release->view = "发布详情";
|
||||
$lang->release->browse = "浏览发布";
|
||||
$lang->release->changeStatus = "修改状态";
|
||||
$lang->release->batchUnlink = "批量移除";
|
||||
$lang->release->batchUnlinkStory = "批量移除需求";
|
||||
$lang->release->batchUnlinkBug = "批量移除Bug";
|
||||
@@ -34,6 +35,7 @@ $lang->release->build = '版本';
|
||||
$lang->release->name = '发布名称';
|
||||
$lang->release->date = '发布日期';
|
||||
$lang->release->desc = '描述';
|
||||
$lang->release->status = '状态';
|
||||
$lang->release->last = '上次发布';
|
||||
$lang->release->linkStoriesAndBugs = '需求和Bug';
|
||||
$lang->release->linkStories = '相关需求';
|
||||
@@ -51,7 +53,14 @@ $lang->release->export = '导出HTML';
|
||||
$lang->release->filePath = '下载地址:';
|
||||
$lang->release->scmPath = '版本库地址:';
|
||||
|
||||
$lang->release->exportTypeList['all'] = '所有';
|
||||
$lang->release->exportTypeList['story'] = '需求';
|
||||
$lang->release->exportTypeList['bug'] = 'Bug';
|
||||
$lang->release->exportTypeList['newbug'] = '遗留Bug';
|
||||
$lang->release->exportTypeList['all'] = '所有';
|
||||
$lang->release->exportTypeList['story'] = '需求';
|
||||
$lang->release->exportTypeList['bug'] = 'Bug';
|
||||
$lang->release->exportTypeList['leftbug'] = '遗留Bug';
|
||||
|
||||
$lang->release->statusList[''] = '';
|
||||
$lang->release->statusList['normal'] = '正常维护';
|
||||
$lang->release->statusList['terminate'] = '停止维护';
|
||||
|
||||
$lang->release->action = new stdclass();
|
||||
$lang->release->action->changestatus = array('main' => '$date, 由 <strong>$actor</strong> $extra。', 'extra' => 'statusList');
|
||||
|
||||
@@ -257,4 +257,18 @@ class releaseModel extends model
|
||||
$release->$field = trim($release->$field, ',');
|
||||
$this->dao->update(TABLE_RELEASE)->set($field)->eq($release->$field)->where('id')->eq((int)$releaseID)->exec();
|
||||
}
|
||||
|
||||
/**
|
||||
* Change status.
|
||||
*
|
||||
* @param int $releaseID
|
||||
* @param string $status
|
||||
* @access public
|
||||
* @return bool
|
||||
*/
|
||||
public function changeStatus($releaseID, $status)
|
||||
{
|
||||
$this->dao->update(TABLE_RELEASE)->set('status')->eq($status)->where('id')->eq($releaseID)->exec();
|
||||
return dao::isError();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,8 @@
|
||||
<th><?php echo $lang->release->name;?></th>
|
||||
<th><?php echo $lang->release->build;?></th>
|
||||
<th class='w-100px'><?php echo $lang->release->date;?></th>
|
||||
<th class='w-110px'><?php echo $lang->actions;?></th>
|
||||
<th class='w-100px'><?php echo $lang->release->status;?></th>
|
||||
<th class='w-150px'><?php echo $lang->actions;?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -37,10 +38,16 @@
|
||||
<td><?php echo html::a(inlink('view', "release=$release->id"), $release->name);?></td>
|
||||
<td><?php echo $release->buildName;?></td>
|
||||
<td class='text-center'><?php echo $release->date;?></td>
|
||||
<td class='text-center'><?php echo $lang->release->statusList[$release->status];?></td>
|
||||
<td class='text-center'>
|
||||
<?php
|
||||
if(common::hasPriv('release', 'linkStory')) echo html::a(inlink('view', "releaseID=$release->id&type=story&link=true"), '<i class="icon-link"></i> ', '', "class='btn-icon' title='{$lang->release->linkStory}'");
|
||||
if(common::hasPriv('release', 'linkBug')) echo html::a(inlink('view', "releaseID=$release->id&type=bug&link=true"), '<i class="icon-bug"></i> ', '', "class='btn-icon' title='{$lang->release->linkBug}'");
|
||||
if(common::hasPriv('release', 'changeStatus'))
|
||||
{
|
||||
$changedStatus = $release->status == 'normal' ? 'terminate' : 'normal';
|
||||
echo html::a(inlink('changeStatus', "releaseID=$release->id&status=$changedStatus"), '<i class="icon-toggle-' . ($release->status == 'normal' ? 'off' : 'on') . '"></i> ', 'hiddenwin', "class='btn-icon' title='{$lang->release->statusList[$changedStatus]}'");
|
||||
}
|
||||
common::printIcon('release', 'edit', "release=$release->id", '', 'list');
|
||||
if(common::hasPriv('release', 'delete'))
|
||||
{
|
||||
|
||||
@@ -35,6 +35,10 @@
|
||||
<th><?php echo $lang->release->date;?></th>
|
||||
<td><?php echo html::input('date', $release->date, "class='form-control form-date'");?></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->release->status;?></th>
|
||||
<td><?php echo html::select('status', $lang->release->statusList, $release->status, "class='form-control'");?></td><td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->release->desc;?></th>
|
||||
<td colspan='2'><?php echo html::textarea('desc', htmlspecialchars($release->desc), "rows=10 class='form-control'");?></td>
|
||||
|
||||
@@ -29,6 +29,11 @@
|
||||
ob_start();
|
||||
|
||||
echo "<div class='btn-group'>";
|
||||
if(common::hasPriv('release', 'changeStatus'))
|
||||
{
|
||||
$changedStatus = $release->status == 'normal' ? 'terminate' : 'normal';
|
||||
echo html::a(inlink('changeStatus', "releaseID=$release->id&type=$changedStatus"), '<i class="icon-toggle-' . ($release->status == 'normal' ? 'off' : 'on') . '"></i> ' . $lang->release->statusList[$changedStatus], 'hiddenwin', "class='btn'");
|
||||
}
|
||||
if(common::hasPriv('release', 'linkStory')) echo html::a(inlink('view', "releaseID=$release->id&type=story&link=true"), '<i class="icon-link"></i> ' . $lang->release->linkStory, '', "class='btn'");
|
||||
if(common::hasPriv('release', 'linkBug')) echo html::a(inlink('view', "releaseID=$release->id&type=bug&link=true"), '<i class="icon-bug"></i> ' . $lang->release->linkBug, '', "class='btn'");
|
||||
echo '</div>';
|
||||
@@ -269,6 +274,10 @@
|
||||
<th><?php echo $lang->release->build;?></th>
|
||||
<td><?php echo $release->buildName;?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->release->status;?></th>
|
||||
<td><?php echo $lang->release->statusList[$release->status];?></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th><?php echo $lang->release->date;?></th>
|
||||
<td><?php echo $release->date;?></td>
|
||||
|
||||
Reference in New Issue
Block a user