This commit is contained in:
Yagami
2018-07-13 10:48:29 +08:00
35 changed files with 186 additions and 169 deletions
+24 -27
View File
@@ -11,34 +11,31 @@
*/
?>
<?php include 'header.html.php';?>
<div id='mainContent' class='main-row'>
<div class='side-col' id='sidebar'></div>
<div class='main-col main-content'>
<form class="load-indicator main-form form-ajax" method='post'>
<div class='main-header'>
<div class='heading'>
<strong><?php echo $lang->custom->flow?></strong>
</div>
<div id='mainContent' class='main-content'>
<form class="load-indicator main-form form-ajax" method='post'>
<div class='main-header'>
<div class='heading'>
<strong><?php echo $lang->custom->flow?></strong>
</div>
<table class='table table-form'>
<tr>
<th class='w-120px text-top'><?php echo $lang->custom->select;?></th>
<?php $checkedKey = isset($config->custom->productProject) ? $config->custom->productProject : '0_0' ?>
<td>
<?php foreach($lang->custom->productProject->relation as $key => $value):?>
<p><label class="radio-inline"><input type="radio" name="productProject" value="<?php echo $key?>"<?php echo $key == $checkedKey ? " checked='checked'" : ''?> id="productProject<?php echo $key;?>"><?php echo $value;?></label></p>
<?php endforeach;?>
</td>
</tr>
<tr><td></td><td><?php echo html::submitButton('', '', 'btn btn-primary btn-wide')?></td></tr>
<tr>
<td colspan='2' class='pd-0'>
<div class='alert alert-info alert-block'><strong><?php echo $lang->custom->productProject->notice?></strong></div>
</td>
</tr>
</table>
</form>
</div>
</div>
<table class='table table-form'>
<tr>
<th class='w-120px text-top'><?php echo $lang->custom->select;?></th>
<?php $checkedKey = isset($config->custom->productProject) ? $config->custom->productProject : '0_0' ?>
<td>
<?php foreach($lang->custom->productProject->relation as $key => $value):?>
<p><label class="radio-inline"><input type="radio" name="productProject" value="<?php echo $key?>"<?php echo $key == $checkedKey ? " checked='checked'" : ''?> id="productProject<?php echo $key;?>"><?php echo $value;?></label></p>
<?php endforeach;?>
</td>
</tr>
<tr><td></td><td><?php echo html::submitButton('', '', 'btn btn-primary btn-wide')?></td></tr>
<tr>
<td colspan='2' class='pd-0'>
<div class='alert alert-info alert-block'><strong><?php echo $lang->custom->productProject->notice?></strong></div>
</td>
</tr>
</table>
</form>
</div>
<script>
$(function()
+25 -28
View File
@@ -10,35 +10,32 @@
*/
?>
<?php include 'header.html.php';?>
<div id='mainContent' class='main-row'>
<div class='side-col' id='sidebar'></div>
<div class='main-col main-content'>
<form class="load-indicator main-form form-ajax" method='post'>
<div class='main-header'>
<div class='heading'>
<strong><?php echo $lang->custom->score?></strong>
</div>
<div id='mainContent' class='main-content'>
<form class="load-indicator main-form form-ajax" method='post'>
<div class='main-header'>
<div class='heading'>
<strong><?php echo $lang->custom->score?></strong>
</div>
<table class='table table-form'>
<tr>
<th class='w-100px text-top'><?php echo $lang->custom->score;?></th>
<td>
<?php $checkedKey = isset($config->global->scoreStatus) ? $config->global->scoreStatus : 0;?>
<?php foreach($lang->custom->scoreStatus as $key => $value):?>
<p><label class="radio-inline"><input type="radio" name="score" value="<?php echo $key?>"<?php echo $key == $checkedKey ? " checked='checked'" : ''?> id="score<?php echo $key;?>"><?php echo $value;?></label></p>
<?php endforeach;?>
</td>
</tr>
<tr>
<th></th>
<td class='form-actions'>
<?php echo html::submitButton('', '', 'btn btn-primary btn-wide');?>
<?php common::printLink('score', 'reset', '', "<i class='icon-refresh'></i> " . $lang->custom->scoreReset, '', ' id="scoreRefresh" class="btn btn-wide iframe" data-width="480"', true, true);?>
</td>
</tr>
</table>
</form>
</div>
</div>
<table class='table table-form'>
<tr>
<th class='w-100px text-top'><?php echo $lang->custom->score;?></th>
<td>
<?php $checkedKey = isset($config->global->scoreStatus) ? $config->global->scoreStatus : 0;?>
<?php foreach($lang->custom->scoreStatus as $key => $value):?>
<p><label class="radio-inline"><input type="radio" name="score" value="<?php echo $key?>"<?php echo $key == $checkedKey ? " checked='checked'" : ''?> id="score<?php echo $key;?>"><?php echo $value;?></label></p>
<?php endforeach;?>
</td>
</tr>
<tr>
<th></th>
<td class='form-actions'>
<?php echo html::submitButton('', '', 'btn btn-primary btn-wide');?>
<?php common::printLink('score', 'reset', '', "<i class='icon-refresh'></i> " . $lang->custom->scoreReset, '', ' id="scoreRefresh" class="btn btn-wide iframe" data-width="480"', true, true);?>
</td>
</tr>
</table>
</form>
</div>
<script>
$(function()
+19 -22
View File
@@ -11,28 +11,25 @@
*/
?>
<?php include 'header.html.php';?>
<div id='mainContent' class='main-row'>
<div class='side-col' id='sidebar'></div>
<div class='main-col main-content'>
<form class="load-indicator main-form form-ajax" method='post'>
<div class='main-header'>
<div class='heading'>
<strong><?php echo $lang->custom->working?></strong>
</div>
<div id='mainContent' class='main-content'>
<form class="load-indicator main-form form-ajax" method='post'>
<div class='main-header'>
<div class='heading'>
<strong><?php echo $lang->custom->working?></strong>
</div>
<table class='table table-form'>
<tr>
<th class='text-top'><?php echo $lang->custom->working;?></th>
<td>
<?php $checkedKey = isset($config->global->flow) ? $config->global->flow : 'full';?>
<?php foreach($lang->custom->workingList as $key => $value):?>
<p><label class="radio-inline"><input type="radio" name="flow" value="<?php echo $key?>"<?php echo $key == $checkedKey ? " checked='checked'" : ''?> id="flow<?php echo $key;?>"><?php echo $value;?></label></p>
<?php endforeach;?>
</td>
</tr>
<tr><td></td><td><?php echo html::submitButton('', '', 'btn btn-primary btn-wide')?></td></tr>
</table>
</form>
</div>
</div>
<table class='table table-form'>
<tr>
<th class='text-top'><?php echo $lang->custom->working;?></th>
<td>
<?php $checkedKey = isset($config->global->flow) ? $config->global->flow : 'full';?>
<?php foreach($lang->custom->workingList as $key => $value):?>
<p><label class="radio-inline"><input type="radio" name="flow" value="<?php echo $key?>"<?php echo $key == $checkedKey ? " checked='checked'" : ''?> id="flow<?php echo $key;?>"><?php echo $value;?></label></p>
<?php endforeach;?>
</td>
</tr>
<tr><td></td><td><?php echo html::submitButton('', '', 'btn btn-primary btn-wide')?></td></tr>
</table>
</form>
</div>
<?php include '../../common/view/footer.html.php';?>
-9
View File
@@ -191,7 +191,6 @@ $lang->resource->story->create = 'create';
$lang->resource->story->batchCreate = 'batchCreate';
$lang->resource->story->edit = 'edit';
$lang->resource->story->linkStory = 'linkStory';
$lang->resource->story->unlinkStory = 'unlinkStory';
$lang->resource->story->batchEdit = 'batchEdit';
$lang->resource->story->export = 'export';
$lang->resource->story->delete = 'delete';
@@ -234,7 +233,6 @@ $lang->story->methodOrder[90] = 'cases';
$lang->story->methodOrder[95] = 'zeroCase';
$lang->story->methodOrder[100] = 'report';
$lang->story->methodOrder[105] = 'linkStory';
$lang->story->methodOrder[110] = 'unlinkStory';
$lang->story->methodOrder[115] = 'batchChangeBranch';
$lang->story->methodOrder[120] = 'batchChangeModule';
@@ -485,7 +483,6 @@ $lang->resource->bug->batchConfirm = 'batchConfirm';
$lang->resource->bug->view = 'view';
$lang->resource->bug->edit = 'edit';
$lang->resource->bug->linkBugs = 'linkBugs';
$lang->resource->bug->unlinkBug = 'unlinkBug';
$lang->resource->bug->batchEdit = 'batchEdit';
$lang->resource->bug->batchClose = 'batchClose';
$lang->resource->bug->assignTo = 'assignTo';
@@ -530,7 +527,6 @@ $lang->bug->methodOrder[100] = 'saveTemplate';
$lang->bug->methodOrder[105] = 'deleteTemplate';
$lang->bug->methodOrder[110] = 'setPublic';
$lang->bug->methodOrder[115] = 'linkBugs';
$lang->bug->methodOrder[120] = 'unlinkBug';
$lang->bug->methodOrder[125] = 'batchChangeModule';
$lang->bug->methodOrder[130] = 'batchChangeBranch';
@@ -545,7 +541,6 @@ $lang->resource->testcase->createBug = 'createBug';
$lang->resource->testcase->view = 'view';
$lang->resource->testcase->edit = 'edit';
$lang->resource->testcase->linkCases = 'linkCases';
$lang->resource->testcase->unlinkCase = 'unlinkCase';
$lang->resource->testcase->batchEdit = 'batchEdit';
$lang->resource->testcase->delete = 'delete';
$lang->resource->testcase->batchDelete = 'batchDelete';
@@ -581,7 +576,6 @@ $lang->testcase->methodOrder[65] = 'batchDelete';
$lang->testcase->methodOrder[70] = 'batchChangeModule';
$lang->testcase->methodOrder[75] = 'batchChangeBranch';
$lang->testcase->methodOrder[80] = 'linkCases';
$lang->testcase->methodOrder[85] = 'unlinkCase';
$lang->testcase->methodOrder[90] = 'bugs';
$lang->testcase->methodOrder[95] = 'review';
$lang->testcase->methodOrder[100] = 'batchReview';
@@ -1311,11 +1305,8 @@ $lang->changelog['7.4.beta'][] = 'my-unbind';
$lang->changelog['8.0'][] = 'story-batchChangeBranch';
$lang->changelog['8.0.1'][] = 'bug-linkBugs';
$lang->changelog['8.0.1'][] = 'bug-unlinkBug';
$lang->changelog['8.0.1'][] = 'story-linkStory';
$lang->changelog['8.0.1'][] = 'story-unlinkStory';
$lang->changelog['8.0.1'][] = 'testcase-linkCases';
$lang->changelog['8.0.1'][] = 'testcase-unlinkCase';
$lang->changelog['8.1.3'][] = 'story-batchChangeModule';
$lang->changelog['8.1.3'][] = 'task-batchChangeModule';
+1 -1
View File
@@ -73,7 +73,7 @@ $lang->mail->secureList['tls'] = 'tls';
$lang->mail->more = 'More';
$lang->mail->noticeResend = 'Sent it again!';
$lang->mail->inputFromEmail = 'Enter Sender Email';
$lang->mail->inputFromEmail = 'Sender Email';
$lang->mail->nextStep = 'Next';
$lang->mail->successSaved = 'Configuration has been saved.';
$lang->mail->testSubject = 'Testing Email';
+1 -1
View File
@@ -21,7 +21,7 @@
</div>
<form class='pdt-20' method='post' target='hiddenwin'>
<table class='table table-form'>
<tr><th style='width:130px'><?php echo $lang->mail->inputFromEmail; ?></th><td class='w-p50'><?php echo html::input('fromAddress', $fromAddress, "class='form-control' autocomplete='off'");?></td><td><?php echo html::submitButton($lang->mail->nextStep);?></td></tr>
<tr><th style='width:140px'><?php echo $lang->mail->inputFromEmail; ?></th><td class='w-p50'><?php echo html::input('fromAddress', $fromAddress, "class='form-control' autocomplete='off'");?></td><td><?php echo html::submitButton($lang->mail->nextStep);?></td></tr>
</table>
</form>
</div>
+4 -1
View File
@@ -1,3 +1,6 @@
.checkbox-primary + .checkbox-primary {margin:0px;}
.checkbox-primary {margin:0px; margin-right:10px !important; width:100px;display:inline-block}
.checkbox-primary {margin:0px; margin-right:10px !important; width:120px;display:inline-block}
.checkbox-primary label{white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
div.chosen-container + select + div.chosen-container > .chosen-choices {border-top:0px;}
.table-bordered thead .checkbox-primary{width:200px;}
+1 -1
View File
@@ -13,7 +13,7 @@ $(function()
if(hash.indexOf('#todo-') === 0)
{
var todoId = hash.substr(6);
var url = createLink('todo', 'view', 'id=' + todoId + '&from=my&onlybody=yes');
var url = createLink('todo', 'view', 'id=' + todoId + '&from=my', '', 'yes');
var $a = $('<a/>');
$a.attr({href: url}).modalTrigger(
{
+3 -2
View File
@@ -270,8 +270,9 @@
echo "<li class='dropdown-submenu'>";
echo html::a('javascript:;', $lang->story->stageAB, '', "id='stageItem'");
echo "<ul class='dropdown-menu'>";
$lang->story->stageList[''] = $lang->null;
foreach($lang->story->stageList as $key => $stage)
$stageList['verified'] = $lang->story->stageList['verified'];
$stageList['closed'] = $lang->story->stageList['closed'];
foreach($stageList as $key => $stage)
{
$actionLink = $this->createLink('story', 'batchChangeStage', "stage=$key");
echo "<li>" . html::a('#', $stage, '', "onclick=\"setFormAction('$actionLink','hiddenwin')\"") . "</li>";
+2 -1
View File
@@ -98,7 +98,8 @@
if(common::hasPriv('productplan', 'delete', $plan))
{
common::printIcon('productplan', 'delete', "planID=$plan->id", $plan, '<i class="icon-link"></i>', '', 'hiddenwin');
$deleteURL = $this->createLink('productplan', 'delete', "planID=$plan->id&confirm=yes");
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"productplanList\",confirmDelete)", '<i class="icon-trash"></i>', '', "class='btn btn-icon' title='{$lang->productplan->delete}'");
}
?>
</td>
+3 -5
View File
@@ -2030,11 +2030,9 @@ class projectModel extends model
foreach($tasks as $task)
{
if($task->status != 'cancel')
{
$totalEstimate += $task->estimate;
$totalConsumed += $task->consumed;
}
$totalEstimate += $task->estimate;
$totalConsumed += $task->consumed;
if($task->status != 'cancel' and $task->status != 'closed') $totalLeft += $task->left;
$statusVar = 'status' . ucfirst($task->status);
+2 -1
View File
@@ -87,7 +87,8 @@
common::printIcon('build', 'edit', "buildID=$build->id", $build, 'list');
if(common::hasPriv('build', 'delete', $build))
{
common::printIcon('build', 'delete', "buildID=$build->id", $build, '<i class="icon-trash"></i>', '', 'hiddenwin');
$deleteURL = $this->createLink('build', 'delete', "buildID=$build->id&confirm=yes");
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"buildList\",confirmDelete)", '<i class="icon-trash"></i>', '', "class='btn' title='{$lang->build->delete}'");
}
?>
</td>
+14 -4
View File
@@ -142,11 +142,21 @@
$groupSum = 0;
foreach($groupTasks as $taskKey => $task)
{
if(!$task->parent && $task->status != 'cancel')
if($groupBy == 'story')
{
$groupEstimate += $task->estimate;
$groupConsumed += $task->consumed;
$groupLeft += ($task->status == 'cancel' ? 0 : $task->left);
if(!$task->parent)
{
$groupEstimate += $task->estimate;
$groupConsumed += $task->consumed;
if($task->status != 'cancel' && $task->status != 'closed') $groupLeft += $task->left;
}
}
else
{
$groupEstimate += $task->estimate;
$groupConsumed += $task->consumed;
if($groupBy == 'status' || ($task->status != 'cancel' && $task->status != 'closed')) $groupLeft += $task->left;
}
if($task->status == 'wait') $groupWait++;
+2 -1
View File
@@ -77,7 +77,8 @@
common::printIcon('release', 'edit', "release=$release->id", $release, 'list');
if(common::hasPriv('release', 'delete', $release))
{
common::printIcon('release', 'delete', "releaseID=$release->id", $release, '<i class="icon-link"></i>', '', 'hiddenwin');
$deleteURL = $this->createLink('release', 'delete', "releaseID=$release->id&confirm=yes");
echo html::a("javascript:ajaxDelete(\"$deleteURL\",\"releaseList\",confirmDelete)", '<i class="icon-trash"></i>', '', "class='btn' title='{$lang->release->delete}'");
}
?>
</td>
+2 -1
View File
@@ -99,4 +99,5 @@ $lang->report->mailTitle->task = " Task (%s),";
$lang->report->mailTitle->todo = " Todo (%s),";
$lang->report->mailTitle->testTask = " Test Task (%s),";
$lang->report->proVersion = '<a href="http://api.zentao.net/goto.php?item=proversion&from=reportpage" target="_blank">Try ZenTao Pro for more!</a>';
$lang->report->proVersion = '<a href="http://api.zentao.net/goto.php?item=proversion&from=reportpage" target="_blank">Try ZenTao Pro for more!</a>';
$lang->report->proVersionEn = '<a href="http://api.zentao.pm/goto.php?item=proversion&from=reportpage" target="_blank">Try ZenTao Pro for more!</a>';
+1
View File
@@ -100,3 +100,4 @@ $lang->report->mailTitle->todo = " 待办(%s),";
$lang->report->mailTitle->testTask = " 测试版本(%s),";
$lang->report->proVersion = '<a href="http://api.zentao.net/goto.php?item=proversion&from=reportpage" target="_blank">更多精彩,尽在专业版!</a>';
$lang->report->proVersionEn = '<a href="http://api.zentao.pm/goto.php?item=proversion&from=reportpage" target="_blank">Try ZenTao Pro for more!</a>';
+1
View File
@@ -100,3 +100,4 @@ $lang->report->mailTitle->todo = " 待辦(%s),";
$lang->report->mailTitle->testTask = " 測試版本(%s),";
$lang->report->proVersion = '<a href="http://api.zentao.net/goto.php?item=proversion&from=reportpage" target="_blank">更多精彩,盡在專業版!</a>';
$lang->report->proVersionEn = '<a href="http://api.zentao.pm/goto.php?item=proversion&from=reportpage" target="_blank">Try ZenTao Pro for more!</a>';
+1 -1
View File
@@ -4,7 +4,7 @@
<?php include 'blockreportlist.html.php';?>
<div class='panel panel-body' style='padding: 10px 6px'>
<div class='text proversion'>
<strong class='text-danger small text-latin'>PRO</strong> &nbsp;<span class='text-important'><?php echo $lang->report->proVersion;?></span>
<strong class='text-danger small text-latin'>PRO</strong> &nbsp;<span class='text-important'><?php echo $this->app->getClientLang() == 'en'? $lang->report->proVersionEn : $lang->report->proVersion; ?></span>
</div>
</div>
</div>
+1 -1
View File
@@ -5,7 +5,7 @@
<?php include 'blockreportlist.html.php';?>
<div class='panel panel-body' style='padding: 10px 6px'>
<div class='text proversion'>
<strong class='text-danger small text-latin'>PRO</strong> &nbsp;<span class='text-important'><?php echo $lang->report->proVersion;?></span>
<strong class='text-danger small text-latin'>PRO</strong> &nbsp;<span class='text-important'><?php echo $this->app->getClientLang() == 'en'? $lang->report->proVersionEn : $lang->report->proVersion; ?></span>
</div>
</div>
</div>
+1 -1
View File
@@ -4,7 +4,7 @@
<?php include 'blockreportlist.html.php';?>
<div class='panel panel-body' style='padding: 10px 6px'>
<div class='text proversion'>
<strong class='text-danger small text-latin'>PRO</strong> &nbsp;<span class='text-important'><?php echo $lang->report->proVersion;?></span>
<strong class='text-danger small text-latin'>PRO</strong> &nbsp;<span class='text-important'><?php echo $this->app->getClientLang() == 'en'? $lang->report->proVersionEn : $lang->report->proVersion; ?></span>
</div>
</div>
</div>
+1 -1
View File
@@ -6,7 +6,7 @@
<?php include 'blockreportlist.html.php';?>
<div class='panel panel-body' style='padding: 10px 6px'>
<div class='text proversion'>
<strong class='text-danger small text-latin'>PRO</strong> &nbsp;<span class='text-important'><?php echo $lang->report->proVersion;?></span>
<strong class='text-danger small text-latin'>PRO</strong> &nbsp;<span class='text-important'><?php echo $this->app->getClientLang() == 'en'? $lang->report->proVersionEn : $lang->report->proVersion; ?></span>
</div>
</div>
</div>
+1 -1
View File
@@ -5,7 +5,7 @@
<?php include 'blockreportlist.html.php';?>
<div class='panel panel-body' style='padding: 10px 6px'>
<div class='text proversion'>
<strong class='text-danger small text-latin'>PRO</strong> &nbsp;<span class='text-important'><?php echo $lang->report->proVersion;?></span>
<strong class='text-danger small text-latin'>PRO</strong> &nbsp;<span class='text-important'><?php echo $this->app->getClientLang() == 'en'? $lang->report->proVersionEn : $lang->report->proVersion; ?></span>
</div>
</div>
</div>
+2 -4
View File
@@ -1040,12 +1040,10 @@ class storyModel extends model
$story->lastEditedDate = $now;
$story->stage = $stage;
/* When stage is verified then only change to released. */
if($oldStory->stage == 'verified' and $story->stage != 'released')
if($stage == 'verified' or $stage == 'closed')
{
$story->stage = 'verified';
$this->dao->update(TABLE_STORY)->data($story)->autoCheck()->where('id')->eq((int)$storyID)->exec();
$this->dao->update(TABLE_STORYSTAGE)->set('stage')->eq('verified')->where('story')->eq((int)$storyID)->exec();
$this->dao->update(TABLE_STORYSTAGE)->set('stage')->eq($stage)->where('story')->eq((int)$storyID)->exec();
if(!dao::isError()) $allChanges[$storyID] = common::createChanges($oldStory, $story);
}
}
+2 -2
View File
@@ -246,7 +246,7 @@
$linkStories = explode(',', $story->linkStories) ;
foreach($linkStories as $linkStoryID)
{
if(isset($story->extraStories[$linkStoryID])) echo '<li>' . html::a(inlink('view', "storyID=$linkStoryID", '', true), "#$linkStoryID " . $story->extraStories[$linkStoryID], '', "class='iframe' data-width='80%'") . '</li>';
if(isset($story->extraStories[$linkStoryID])) echo '<li>' . html::a($this->createLink('story', 'view', "storyID=$linkStoryID", '', true), "#$linkStoryID " . $story->extraStories[$linkStoryID], '', "class='iframe' data-width='80%'") . '</li>';
}
?>
</ul>
@@ -260,7 +260,7 @@
$childStories = explode(',', $story->childStories) ;
foreach($childStories as $childStoryID)
{
if(isset($story->extraStories[$childStoryID])) echo '<li>' . html::a(inlink('view', "storyID=$childStoryID", '', true), "#$childStoryID " . $story->extraStories[$childStoryID], '', "class='iframe' data-width='80%'") . '</li>';
if(isset($story->extraStories[$childStoryID])) echo '<li>' . html::a($this->createLink('story', 'view', "storyID=$childStoryID", '', true), "#$childStoryID " . $story->extraStories[$childStoryID], '', "class='iframe' data-width='80%'") . '</li>';
}
?>
</ul>
+16
View File
@@ -45,6 +45,14 @@ class task extends control
*/
public function create($projectID = 0, $storyID = 0, $moduleID = 0, $taskID = 0, $todoID = 0)
{
$this->project->getLimitedProject();
$limitedProjects = !empty($_SESSION['limitedProjects']) ? $_SESSION['limitedProjects'] : '';
if(strpos(",{$limitedProjects},", ",$projectID,") !== false)
{
echo js::alert($this->lang->task->createDenied);
die(js::locate($this->createLink('project', 'task', "projectID=$projectID")));
}
$task = new stdClass();
$task->module = $moduleID;
$task->assignedTo = '';
@@ -195,6 +203,14 @@ class task extends control
*/
public function batchCreate($projectID = 0, $storyID = 0, $moduleID = 0, $taskID = 0, $iframe = 0)
{
$this->project->getLimitedProject();
$limitedProjects = !empty($_SESSION['limitedProjects']) ? $_SESSION['limitedProjects'] : '';
if(strpos(",{$limitedProjects},", ",$projectID,") !== false)
{
echo js::alert($this->lang->task->createDenied);
die(js::locate($this->createLink('project', 'task', "projectID=$projectID")));
}
$project = $this->project->getById($projectID);
$taskLink = $this->createLink('project', 'browse', "projectID=$projectID&tab=task");
$storyLink = $this->session->storyList ? $this->session->storyList : $this->createLink('project', 'story', "projectID=$projectID");
-51
View File
@@ -1,51 +0,0 @@
function adjustSortBtn()
{
$('.btn-move-up:first').addClass('disabled').attr('disabled', 'disabled');
$('.btn-move-down:last').addClass('disabled').attr('disabled', 'disabled');
}
$('.btn-move-up, .btn-move-down').click(function()
{
var $this = $(this);
if($this.hasClass('btn-move-up'))
{
$(this).parents('tr').prev().before($(this).parents('tr'));
}
else
{
$this.parents('tr').next().after($(this).parents('tr'));
}
$('.btn-move-up, .btn-move-down').removeClass('disabled').removeAttr('disabled');
adjustSortBtn();
});
function adjustSortBtn()
{
$('.btn-move-up:first').addClass('disabled').attr('disabled', 'disabled');
$('.btn-move-down:last').addClass('disabled').attr('disabled', 'disabled');
}
$('#modalTeam .btn').click(function()
{
var team = '';
var time = 0;
$('[name*=team]').each(function()
{
if($(this).find('option:selected').text() != '')
{
team += ' ' + $(this).find('option:selected').text();
}
estimate = parseFloat($(this).parents('td').next('td').find('[name*=teamEstimate]').val());
if(!isNaN(estimate))
{
time += estimate;
}
$('#teamMember').val(team);
$('#estimate').val(time);
})
});
//end
+22
View File
@@ -234,3 +234,25 @@ $(document).ready(function()
adjustButtons();
});
$('#modalTeam .btn').click(function()
{
var team = '';
var time = 0;
$('[name*=team]').each(function()
{
if($(this).find('option:selected').text() != '')
{
team += ' ' + $(this).find('option:selected').text();
}
estimate = parseFloat($(this).parents('td').next('td').find('[name*=teamEstimate]').val());
if(!isNaN(estimate))
{
time += estimate;
}
$('#teamMember').val(team);
$('#estimate').val(time);
})
});
+1
View File
@@ -173,6 +173,7 @@ $lang->task->noticeSaveRecord = 'Your Hour is not saved. Please save it fir
$lang->task->commentActions = '%s. %s, commented by <strong>%s</strong>.';
$lang->task->deniedNotice = 'Only the %s can %s the task.';
$lang->task->noTask = 'No tasks. ';
$lang->task->createDenied = 'Create task is denied in this project';
$lang->task->error = new stdclass();
$lang->task->error->consumedNumber = '"Consumed" must be numbers.';
+1
View File
@@ -173,6 +173,7 @@ $lang->task->noticeSaveRecord = '您有尚未保存的工时记录,请先
$lang->task->commentActions = '%s. %s, 由 <strong>%s</strong> 添加备注。';
$lang->task->deniedNotice = '当前任务只有%s才可以%s。';
$lang->task->noTask = '暂时没有任务。';
$lang->task->createDenied = '你不能在该项目添加任务';
$lang->task->error = new stdclass();
$lang->task->error->consumedNumber = '"已经消耗"必须为数字';
+2
View File
@@ -498,6 +498,8 @@ class taskModel extends model
if(isset($task))
{
if($this->post->status) return $currentTask;
if($currentTask->consumed == 0)
{
$currentTask->status = 'wait';
+1 -1
View File
@@ -22,7 +22,7 @@
</a>
<div class="divider"></div>
<div class="page-title">
<?php $rootName = $viewType == 'line' ? '' : $root->name;?>
<?php $rootName = $viewType == 'line' ? '' : $root->name;?>
<span class="text" title='<?php echo $rootName;?>'>
<?php
if($viewType == 'doc')
+24
View File
@@ -227,6 +227,7 @@ class upgradeModel extends model
case '10_0':
$this->execSQL($this->getUpgradeFile('10.0'));
$this->fixStorySpecTitle();
$this->removeUnlinkPriv();//Remove unlink privilege for story, bug and testcase module.
}
$this->deletePatch();
@@ -2366,4 +2367,27 @@ class upgradeModel extends model
return !dao::isError();
}
/**
* Remove unlink privilege for story, bug and testcase module.
*
* @access public
* @return bool
*/
public function removeUnlinkPriv()
{
$this->dao->delete()->from(TABLE_GROUPPRIV)
->where('((module')->eq('story')
->andWhere('method')->eq('unlinkStory')
->markRight(1)
->orWhere('(module')->eq('bug')
->andWhere('method')->eq('unlinkBug')
->markRight(1)
->orWhere('(module')->eq('testcase')
->andWhere('method')->eq('unlinkCase')
->markRight(2)
->exec();
return !dao::isError();
}
}
+1
View File
@@ -334,6 +334,7 @@ function ajaxDelete(url, replaceID, notice)
{
$.get(document.location.href, function(data)
{
if(!($(data).find('#' + replaceID).length))location.reload();
$('#' + replaceID).html($(data).find('#' + replaceID).html());
if(typeof sortTable == 'function') sortTable();
$('#' + replaceID).find('[data-toggle=modal], a.iframe').modalTrigger();
+1 -1
View File
File diff suppressed because one or more lines are too long
+3
View File
@@ -6,3 +6,6 @@ body{padding-bottom:0px;}
.datatable .scroll-wrapper .scroll-slide {bottom:-55px;}
.table-footer.fixed-footer{bottom:0px !important;}
#footer{display:none;}
#header #mainHeader #navbar li[data-id='oa']{display:none;}
#subNavbar li[data-id='review']{display:none;}