This commit is contained in:
王怡栋
2022-03-03 16:11:31 +08:00
14 changed files with 56 additions and 148 deletions
+10 -129
View File
@@ -304,6 +304,7 @@ $lang->resource->kanban->close = 'close';
$lang->resource->kanban->delete = 'delete';
$lang->resource->kanban->createRegion = 'createRegion';
$lang->resource->kanban->editRegion = 'editRegion';
$lang->resource->kanban->performable = 'performable';
$lang->resource->kanban->sortRegion = 'sortRegion';
$lang->resource->kanban->sortGroup = 'sortGroup';
$lang->resource->kanban->deleteRegion = 'deleteRegion';
@@ -330,12 +331,14 @@ $lang->resource->kanban->deleteCard = 'deleteCard';
$lang->resource->kanban->moveCard = 'moveCard';
$lang->resource->kanban->setCardColor = 'setCardColor';
$lang->resource->kanban->laneMove = 'laneMove';
$lang->resource->kanban->cardsSort = 'cardsSort';
$lang->resource->kanban->viewArchivedColumn = 'viewArchivedColumn';
$lang->resource->kanban->viewArchivedCard = 'viewArchivedCard';
$lang->resource->kanban->restoreCard = 'restoreCard';
$lang->resource->kanban->setLaneHeight = 'setLaneHeight';
$lang->resource->kanban->setColumnWidth = 'setColumnWidth';
$lang->resource->kanban->batchCreateCard = 'batchCreateCard';
$lang->resource->kanban->import = 'import';
$lang->resource->kanban->enableArchived = 'enableArchived';
$lang->kanban->methodOrder[5] = 'space';
$lang->kanban->methodOrder[10] = 'createSpace';
@@ -381,6 +384,10 @@ $lang->kanban->methodorder[200] = 'viewArchivedCard';
$lang->kanban->methodorder[205] = 'archiveColumn';
$lang->kanban->methodorder[210] = 'restoreCard';
$lang->kanban->methodorder[215] = 'setLaneHeight';
$lang->kanban->methodorder[220] = 'setColumnWidth';
$lang->kanban->methodOrder[225] = 'batchCreateCard';
$lang->kanban->methodorder[230] = 'import';
$lang->kanban->methodorder[235] = 'enableArchived';
/* Execution. */
$lang->resource->execution = new stdclass();
@@ -710,8 +717,8 @@ $lang->resource->user->todo = 'todo';
$lang->resource->user->story = 'story';
$lang->resource->user->task = 'task';
//$lang->resource->user->bug = 'bug';
$lang->resource->user->testTask = 'testTask';
$lang->resource->user->testCase = 'testCase';
//$lang->resource->user->testTask = 'testTask';
//$lang->resource->user->testCase = 'testCase';
$lang->resource->user->execution = 'execution';
$lang->resource->user->dynamic = 'dynamic';
$lang->resource->user->cropAvatar = 'cropAvatar';
@@ -1115,132 +1122,6 @@ if($config->edition == 'biz' or $config->edition == 'max')
$lang->tree->methodOrder[35] = 'editHost';
$lang->host->methodOrder[40] = 'groupMaintenance';
$lang->resource->ops = new stdclass();
$lang->resource->ops->index = 'index';
$lang->resource->ops->setting = 'setting';
$lang->ops->methodOrder[5] = 'index';
$lang->ops->methodOrder[10] = 'setting';
$lang->resource->host = new stdclass();
$lang->resource->host->browse = 'browse';
$lang->resource->host->create = 'create';
$lang->resource->host->edit = 'editAction';
$lang->resource->host->view = 'view';
$lang->resource->host->delete = 'deleteAction';
$lang->resource->host->changeStatus = 'changeStatus';
$lang->resource->host->treemap = 'treemap';
$lang->host->methodOrder[5] = 'browse';
$lang->host->methodOrder[10] = 'create';
$lang->host->methodOrder[15] = 'edit';
$lang->host->methodOrder[20] = 'view';
$lang->host->methodOrder[25] = 'delete';
$lang->host->methodOrder[30] = 'changeStatus';
$lang->host->methodOrder[35] = 'treemap';
$lang->resource->serverroom = new stdclass();
$lang->resource->serverroom->browse = 'browse';
$lang->resource->serverroom->create = 'create';
$lang->resource->serverroom->edit = 'editAction';
$lang->resource->serverroom->view = 'view';
$lang->resource->serverroom->delete = 'delete';
$lang->serverroom->methodOrder[5] = 'browse';
$lang->serverroom->methodOrder[10] = 'create';
$lang->serverroom->methodOrder[15] = 'edit';
$lang->serverroom->methodOrder[20] = 'view';
$lang->serverroom->methodOrder[25] = 'delete';
$lang->resource->account = new stdclass();
$lang->resource->account->browse = 'browse';
$lang->resource->account->create = 'create';
$lang->resource->account->edit = 'editAction';
$lang->resource->account->view = 'view';
$lang->resource->account->delete = 'deleteAction';
$lang->account = new stdclass();
$lang->account->methodOrder[5] = 'browse';
$lang->account->methodOrder[10] = 'create';
$lang->account->methodOrder[15] = 'edit';
$lang->account->methodOrder[20] = 'view';
$lang->account->methodOrder[25] = 'delete';
$lang->resource->domain = new stdclass();
$lang->resource->domain->browse = 'browse';
$lang->resource->domain->create = 'create';
$lang->resource->domain->edit = 'editAction';
$lang->resource->domain->view = 'view';
$lang->resource->domain->delete = 'deleteAction';
$lang->domain = new stdclass();
$lang->domain->methodOrder[5] = 'browse';
$lang->domain->methodOrder[10] = 'create';
$lang->domain->methodOrder[15] = 'edit';
$lang->domain->methodOrder[20] = 'view';
$lang->domain->methodOrder[25] = 'delete';
$lang->resource->service = new stdclass();
$lang->resource->service->index = 'index';
$lang->resource->service->create = 'create';
$lang->resource->service->edit = 'edit';
$lang->resource->service->view = 'view';
$lang->resource->service->delete = 'delete';
$lang->resource->service->manage = 'manage';
$lang->resource->service->browse = 'browse';
$lang->service->methodOrder[5] = 'index';
$lang->service->methodOrder[10] = 'create';
$lang->service->methodOrder[15] = 'edit';
$lang->service->methodOrder[20] = 'view';
$lang->service->methodOrder[25] = 'delete';
$lang->service->methodOrder[30] = 'manage';
$lang->service->methodOrder[35] = 'browse';
$lang->resource->deploy = new stdclass();
$lang->resource->deploy->browse = 'browse';
$lang->resource->deploy->create = 'create';
$lang->resource->deploy->edit = 'editAction';
$lang->resource->deploy->delete = 'deleteAction';
$lang->resource->deploy->activate = 'activateAction';
$lang->resource->deploy->finish = 'finishAction';
$lang->resource->deploy->scope = 'scope';
$lang->resource->deploy->manageScope = 'manageScope';
$lang->resource->deploy->view = 'view';
$lang->resource->deploy->cases = 'casesAction';
$lang->resource->deploy->linkCases = 'linkCases';
$lang->resource->deploy->unlinkCase = 'unlinkCase';
$lang->resource->deploy->batchUnlinkCases = 'batchUnlinkCases';
$lang->resource->deploy->steps = 'steps';
$lang->resource->deploy->manageStep = 'manageStep';
$lang->resource->deploy->finishStep = 'finishStep';
$lang->resource->deploy->assignTo = 'assignAction';
$lang->resource->deploy->viewStep = 'viewStep';
$lang->resource->deploy->editStep = 'editStep';
$lang->resource->deploy->deleteStep = 'deleteStep';
$lang->service->methodOrder[5] = 'browse';
$lang->service->methodOrder[10] = 'create';
$lang->service->methodOrder[15] = 'edit';
$lang->service->methodOrder[20] = 'delete';
$lang->service->methodOrder[25] = 'activate';
$lang->service->methodOrder[30] = 'finish';
$lang->service->methodOrder[35] = 'scope';
$lang->service->methodOrder[40] = 'manageScope';
$lang->service->methodOrder[45] = 'view';
$lang->service->methodOrder[50] = 'cases';
$lang->service->methodOrder[55] = 'linkCases';
$lang->service->methodOrder[60] = 'unlinkCase';
$lang->service->methodOrder[65] = 'batchUnlinkCases';
$lang->service->methodOrder[70] = 'steps';
$lang->service->methodOrder[75] = 'manageStep';
$lang->service->methodOrder[80] = 'finishStep';
$lang->service->methodOrder[85] = 'assignTo';
$lang->service->methodOrder[90] = 'viewStep';
$lang->service->methodOrder[95] = 'editStep';
$lang->service->methodOrder[100] = 'deleteStep';
$lang->resource->doc->diff = 'diffAction';
$lang->resource->doc->catalog = 'catalogAction';
@@ -112,7 +112,7 @@ $projectIDParam = $isProjectStory ? "projectID=$projectID&" : '';
$tab = $isProjectStory ? 'project' : 'product';
$class = common::hasPriv('story', 'export') ? '' : "class=disabled";
$misc = common::hasPriv('story', 'export') ? "data-toggle='modal' data-type='iframe' class='export' data-app='$tab'" : "class=disabled";
$link = common::hasPriv('story', 'export') ? $this->createLink('story', 'export', "productID=$productID&orderBy=$orderBy&projectID=0&browseType=$browseType&type=$storyType") : '#';
$link = common::hasPriv('story', 'export') ? $this->createLink('story', 'export', "productID=$productID&orderBy=$orderBy&executionID=$projectID&browseType=$browseType&type=$storyType") : '#';
echo "<li $class>" . html::a($link, $lang->story->export, '', $misc) . "</li>";
?>
</ul>
@@ -191,7 +191,7 @@ $projectIDParam = $isProjectStory ? "projectID=$projectID&" : '';
<?php endif;?>
<?php echo $moduleTree;?>
<div class="text-center">
<?php if($productID) common::printLink('tree', 'browse', "rootID=$productID&view=story&currentModuleID=0&branch=$branchID", $lang->tree->manageMenu, '', "class='btn btn-info btn-wide'");?>
<?php if($productID) common::printLink('tree', 'browse', "rootID=$productID&view=story&currentModuleID=0&branch=$branchID&from=&projectID=$projectID", $lang->tree->manageMenu, '', "class='btn btn-info btn-wide'");?>
<hr class="space-sm" />
</div>
</div>
@@ -0,0 +1,23 @@
<?php
helper::importControl('tree');
class myTree extends tree
{
/**
* Module browse.
*
* @param int $rootID
* @param string $view story|bug|case|doc
* @param int $currentModuleID
* @param int $branch
* @param string $from
* @param int $projectID
* @access public
* @return void
*/
public function browse($rootID, $view, $currentModuleID = 0, $branch = 0, $from = '', $projectID = 0)
{
$this->view->projectID = $projectID;
$this->view->projectName = $this->dao->findById($projectID)->from(TABLE_PROJECT)->fetch('name');
return parent::browse($rootID, $view, $currentModuleID, $branch, $from);
}
}
+1 -1
View File
@@ -3,11 +3,11 @@
$lang->tree->all = '所有目录';
$lang->tree->allMenu = $lang->tree->all;
$lang->tree->manageMenu = '维护目录';
$lang->tree->manage = '维护目录';
global $app;
if ($app->rawModule == 'tree' and $app->rawMethod == 'browsetask')
{
$lang->tree->manage = '维护目录';
$lang->tree->common = '目录维护';
$lang->tree->manageExecution = "维护{$lang->executionCommon}视图目录";
$lang->tree->manageTaskChild = "维护{$lang->executionCommon}子目录";
@@ -0,0 +1,3 @@
<script>
$("#childrenForm a:first").text('<?php echo $projectName; ?>');
</script>
+1 -1
View File
@@ -619,7 +619,7 @@ function notice()
if($('#openedBuild').find('option').length <= 1)
{
var html = '';
if(($('#execution').length == 0 || $('#execution').val() == 0) && ($('#project').length == 0 || $('#project').val() == 0))
if($('#execution').length == 0 || $('#execution').val() == 0)
{
var branch = $('#branch').val();
if(typeof(branch) == 'undefined') branch = 0;
+2 -2
View File
@@ -392,7 +392,7 @@ class build extends control
$isJsonView = $this->app->getViewType() == 'json';
if($varName == 'openedBuild')
{
if(empty($projectID)) $this->ajaxGetProductBuilds($productID, $varName, $build, $branch, $index, $type);
if(empty($projectID)) return $this->ajaxGetProductBuilds($productID, $varName, $build, $branch, $index, $type);
$params = ($type == 'all') ? 'noempty, withbranch' : 'noempty, noterminate, nodone, withbranch';
$builds = $this->build->getBuildPairs($productID, $branch, $params, $projectID, 'project', $build);
@@ -401,7 +401,7 @@ class build extends control
}
if($varName == 'resolvedBuild')
{
if(empty($projectID)) $this->ajaxGetProductBuilds($productID, $varName, $build, $branch, $index, $type);
if(empty($projectID)) return $this->ajaxGetProductBuilds($productID, $varName, $build, $branch, $index, $type);
$params = ($type == 'all') ? 'withbranch' : 'noterminate, nodone, withbranch';
$builds = $this->build->getBuildPairs($productID, $branch, $params, $projectID, 'project', $build);
+1
View File
@@ -1072,6 +1072,7 @@ function createTaskMenu(options)
if(priv.canRestartTask && task.$col.type == 'pause') items.push({label: taskLang.restart, icon: 'play', url: createLink('task', 'restart', 'taskID=' + task.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canPauseTask && task.$col.type == 'developing') items.push({label: taskLang.pause, icon: 'pause', url: createLink('task', 'pause', 'taskID=' + task.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canRecordEstimateTask) items.push({label: executionLang.effort, icon: 'time', url: createLink('task', 'recordEstimate', 'taskID=' + task.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canBatchCreateTask && vision == 'lite') items.push({label: taskLang.children, icon:'split', url: $.createLink('task', 'batchcreate', 'executionID=' + executionID + '&storyID=0&moduleID=0&taskID=' + task.id, '', true), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canActivateTask && (task.$col.type == 'developed' || task.$col.type == 'canceled' || task.$col.type == 'closed')) items.push({label: executionLang.activate, icon: 'magic', url: createLink('task', 'activate', 'taskID=' + task.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canCreateTask) items.push({label: taskLang.copy, icon: 'copy', url: createLink('task', 'create', 'executionID=' + executionID + '&storyID=' + '0' + '&moduleID=' + '0' + '&taskID=' + task.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canCancelTask && (task.$col.type == 'wait' || task.$col.type == 'developing' || task.$col.type == 'pause')) items.push({label: taskLang.cancel, icon: 'cancel', url: createLink('task', 'cancel', 'taskID=' + task.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
+4 -4
View File
@@ -178,7 +178,7 @@
<div class="detail">
<h2 class="detail-title"><span class="label-id"><?php echo $execution->id;?></span> <span class="label label-light label-outline"><?php echo $execution->code;?></span> <?php echo $execution->name;?></h2>
<div class="detail-content article-content">
<p><span class="text-limit" data-limit-size="40"><?php echo $execution->desc;?></span><a class="text-primary text-limit-toggle small" data-text-expand="<?php echo $lang->expand;?>" data-text-collapse="<?php echo $lang->collapse;?>"></a></p>
<div><span class="text-limit" data-limit-size="40"><?php echo $execution->desc;?></span><a class="text-primary text-limit-toggle small" data-text-expand="<?php echo $lang->expand;?>" data-text-collapse="<?php echo $lang->collapse;?>"></a></div>
<p>
<?php if($execution->deleted):?>
<span class='label label-danger label-outline'><?php echo $lang->execution->deleted;?></span>
@@ -253,7 +253,7 @@
</tr>
<tr>
<th><?php echo $lang->execution->totalEstimate;?></th>
<td><?php echo (float)$execution->totalEstimate . $lang->execution->workHour;?></td>
<td><?php echo (float)$execution->totalEstimate . $lang->execution->workHour;?></td>
<th><?php echo $lang->execution->totalDays;?></th>
<td><?php echo $execution->days;?></td>
</tr>
@@ -261,11 +261,11 @@
<th><?php echo $lang->execution->totalConsumed;?></th>
<td><?php echo (float)$execution->totalConsumed . $lang->execution->workHour;?></td>
<th><?php echo $lang->execution->totalHours;?></th>
<td><?php echo (float)$execution->totalHours . $lang->execution->workHour;?></td>
<td><?php echo (float)$execution->totalHours . $lang->execution->workHour;?></td>
</tr>
<tr>
<th><?php echo $lang->execution->totalLeft;?></th>
<td><?php echo (float)$execution->totalLeft . $lang->execution->workHour;?></td>
<td><?php echo (float)$execution->totalLeft . $lang->execution->workHour;?></td>
</tr>
</tbody>
</table>
+2 -2
View File
@@ -1014,14 +1014,14 @@ EOF;
}
$listID = $this->user->createContactList($data->newList, $data->users);
$this->user->setGlobalContacts($listID, isset($data->share));
if(isonlybody()) return print(js::closeModal('parent.parent', '', ' function(){parent.parent.ajaxGetContacts(\'#mailto\')}'));
if(isonlybody()) return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'closeModal' => true, 'callback' => "parent.parent.ajaxGetContacts('#mailto')"));
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('manageContacts', "listID=$listID")));
}
elseif($data->mode == 'edit')
{
$this->user->updateContactList($data->listID, $data->listName, $data->users);
$this->user->setGlobalContacts($data->listID, isset($data->share));
return print(js::locate(inlink('manageContacts', "listID={$data->listID}"), 'parent'));
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('manageContacts', "listID=$listID")));
}
}
+1 -1
View File
@@ -138,7 +138,7 @@ $projectIDParam = $isProjectStory ? "projectID=$projectID&" : '';
$tab = $isProjectStory ? 'project' : 'product';
$class = common::hasPriv('story', 'export') ? '' : "class=disabled";
$misc = common::hasPriv('story', 'export') ? "data-toggle='modal' data-type='iframe' class='export' data-app='$tab'" : "class=disabled";
$link = common::hasPriv('story', 'export') ? $this->createLink('story', 'export', "productID=$productID&orderBy=$orderBy&projectID=0&browseType=$browseType&type=$storyType") : '#';
$link = common::hasPriv('story', 'export') ? $this->createLink('story', 'export', "productID=$productID&orderBy=$orderBy&projectID=0&executionID=0&browseType=$browseType&type=$storyType") : '#';
echo "<li $class>" . html::a($link, $lang->story->export, '', $misc) . "</li>";
?>
</ul>
+1 -1
View File
@@ -118,7 +118,7 @@
<div class="detail">
<h2 class="detail-title"><span class="label-id"><?php echo $project->id;?></span> <span class="label label-light label-outline"><?php echo $project->code;?></span> <?php echo $project->name;?></h2>
<div class="detail-content article-content">
<p><span class="text-limit" data-limit-size="40"><?php echo $project->desc;?></span><a class="text-primary text-limit-toggle small" data-text-expand="<?php echo $lang->expand;?>" data-text-collapse="<?php echo $lang->collapse;?>"></a></p>
<div><span class="text-limit" data-limit-size="40"><?php echo $project->desc;?></span><a class="text-primary text-limit-toggle small" data-text-expand="<?php echo $lang->expand;?>" data-text-collapse="<?php echo $lang->collapse;?>"></a></div>
<p>
<?php if($project->deleted):?>
<span class='label label-danger label-outline'><?php echo $lang->project->deleted;?></span>
+1 -1
View File
@@ -221,7 +221,7 @@ $(function()
},
itemCreator: function($li, item)
{
var link = (item.id !== undefined && item.type != 'line') ? ('<a href="' + createLink('tree', 'browse', 'rootID=<?php echo $rootID ?>&viewType=<?php echo $viewType ?>&moduleID={0}&branch={1}&from=<?php echo $from;?>'.format(item.id, branch)) + '" data-app="' + tab + '">' + item.name + '</a>') : ('<span class="tree-toggle">' + item.name + '</span>');
var link = (item.id !== undefined && item.type != 'line') ? ('<a href="' + createLink('tree', 'browse', 'rootID=<?php echo $rootID ?>&viewType=<?php echo $viewType ?>&moduleID={0}&branch={1}&from=<?php echo $from;?>&projectID=<?php echo $projectID; ?>'.format(item.id, branch)) + '" data-app="' + tab + '">' + item.name + '</a>') : ('<span class="tree-toggle">' + item.name + '</span>');
var $toggle = $('<span class="module-name" data-id="' + item.id + '">' + link + '</span>');
if(item.type === 'bug') $toggle.append('&nbsp; <span class="text-muted">[B]</span>');
if(item.type === 'case') $toggle.append('&nbsp; <span class="text-muted">[C]</span>');
+4 -4
View File
@@ -3023,13 +3023,13 @@ class upgradeModel extends model
if(strpos($fromVersion, 'max') === false and strpos($fromVersion, 'biz') === false and (strpos($fromVersion, 'pro') === false ? version_compare($fromVersion, '8.3', '<') : version_compare($fromVersion, 'pro5.4', '<'))) $needProcess['updateFile'] = true;
if(strpos($fromVersion, 'max') === false and $this->config->systemMode == 'new')
{
if(strpos($fromVersion, 'pro') !== false and version_compare($fromVersion, 'pro10.0', '<'))
if(strpos($fromVersion, 'pro') !== false)
{
$needProcess['search'] = true;
if(version_compare($fromVersion, 'pro10.0', '<')) $needProcess['search'] = true;
}
elseif(strpos($fromVersion, 'biz') !== false and version_compare($fromVersion, 'biz5.0', '<'))
elseif(strpos($fromVersion, 'biz') !== false)
{
$needProcess['search'] = true;
if(version_compare($fromVersion, 'biz5.0', '<')) $needProcess['search'] = true;
}
elseif(version_compare($fromVersion, '15.0.rc1', '<'))
{