* finish task #2356.

This commit is contained in:
wangyidong
2015-10-16 15:46:03 +08:00
parent 86deb93acd
commit c20745f87d
12 changed files with 91 additions and 14 deletions

View File

@@ -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`;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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...';

View File

@@ -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';

View File

@@ -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'));
}
}

View File

@@ -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');

View File

@@ -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');

View File

@@ -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();
}
}

View File

@@ -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'))
{

View File

@@ -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>

View File

@@ -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>