Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms into release/zentaopms_18.3

This commit is contained in:
caoyanyi
2023-03-17 13:22:59 +08:00
373 changed files with 1758 additions and 895 deletions
+4
View File
@@ -0,0 +1,4 @@
./.git
./build
./Jenkinsfile
./Makefile
-68
View File
@@ -1,68 +0,0 @@
stages:
- sonarqube
- unit-test
- ui-test
- package
- cleanup-packages
- notify
program-static-analysis:
stage: sonarqube
image:
name: sonarsource/sonar-scanner-cli:latest
entrypoint: [""]
variables:
SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defines the location of the analysis task cache
GIT_DEPTH: "0" # Tells git to fetch all the branches of the project, required by the analysis task
cache:
key: "${CI_JOB_NAME}"
paths:
- .sonar/cache
script:
- sonar-scanner -Dsonar.inclusions=$(git diff --name-only HEAD~1|tr '\n' ',') -Dsonar.analysis.user=${GITLAB_USER_LOGIN}
allow_failure: true
only:
- master # or the name of your main branch
unit-test:
stage: unit-test
script:
- "/home/gitlab-runner/bin/zentao-unittest.sh ${CI_PROJECT_DIR}"
allow_failure: true
only:
- master
- merge_requests
ui-test:
stage: ui-test
script:
- "/home/gitlab-runner/bin/zentao-uitest.sh ${CI_PROJECT_DIR}"
allow_failure: true
only:
- master
- merge_requests
package:
stage: package
script:
- make cizip
allow_failure: true
only:
- master
cleanup-packages:
stage: cleanup-packages
script:
- make clean
when: on_failure
only:
- master
notify:
stage: notify
script:
- "/home/gitlab-runner/bin/ci-notify.php"
when: on_success
only:
- master
- merge_requests
+15
View File
@@ -0,0 +1,15 @@
FROM hub.qucheng.com/ci/zentao-ztf:latest
# Install zentao
ARG VERSION
ENV ZENTAO_VER=${VERSION}
ENV EASYSOFT_APP_NAME="ZenTao $ZENTAO_VER"
ARG MYSQL_HOST
ARG MYSQL_PASSWORD
ENV MYSQL_HOST=${MYSQL_HOST}
ENV MYSQL_PASSWORD=${MYSQL_PASSWORD}
SHELL ["/bin/bash", "-c"]
# Copy ZenTao
COPY --chown=33:33 . /apps/zentao/
Vendored Executable
+300
View File
@@ -0,0 +1,300 @@
pipeline {
agent {
kubernetes {
inheritFrom "build-docker code-scan xuanim mysql-server"
}
}
environment {
ZENTAO_VERSION = """${sh(
returnStdout: true,
script: 'cat VERSION'
).trim()}"""
MYSQL_SERVER_HOST = """${sh(
returnStdout: true,
script: 'hostname -I'
).trim()}"""
MYSQL_ROOT_PASSWORD = 'pass4ci'
MIDDLE_IMAGE_REPO = "hub.qc.oop.cc/zentao-ztf"
MIDDLE_IMAGE_TAG = """${sh(
returnStdout: true,
script: 'echo $BUILD_ID'
).trim()}"""
}
stages {
stage("checkout code") {
steps {
echo "checkout code success"
}
}
stage('Sonar Scanner') {
parallel {
stage('SonarQube') {
steps {
container('sonar') {
withSonarQubeEnv('sonarqube') {
sh 'git config --global --add safe.directory $(pwd)'
sh 'sonar-scanner -Dsonar.inclusions=$(git diff --name-only HEAD~1|tr "\\n" ",") -Dsonar.analysis.user=$(git show -s --format=%an)'
}
}
}
post {
success {
container('xuanimbot') {
sh 'git config --global --add safe.directory $(pwd)'
sh '/usr/local/bin/xuanimbot --users "$(git show -s --format=%cn)" --title "sonar scanner" --url "https://sonar.qc.oop.cc/dashboard?id=zentaopms&branch=${GIT_BRANCH}" --content "sonar scanner success" --debug --custom'
}
}
failure {
container('xuanimbot') {
sh 'git config --global --add safe.directory $(pwd)'
sh '/usr/local/bin/xuanimbot --users "$(git show -s --format=%cn)" --title "sonar scanner" --url "https://sonar.qc.oop.cc/dashboard?id=zentaopms&branch=${GIT_BRANCH}" --content "sonar scanner failure" --debug --custom'
}
}
}
}
stage('Build Image') {
steps {
container('docker') {
sh 'docker build --pull . -f Dockerfile.test --build-arg VERSION=${ZENTAO_VERSION} --build-arg MIRROR=true --build-arg MYSQL_HOST=${MYSQL_SERVER_HOST} --build-arg MYSQL_PASSWORD=${MYSQL_ROOT_PASSWORD} -t ${MIDDLE_IMAGE_REPO}:${MIDDLE_IMAGE_TAG}'
sh 'docker push ${MIDDLE_IMAGE_REPO}:${MIDDLE_IMAGE_TAG}'
}
}
post {
success {
echo 'build image success'
}
failure {
container('xuanimbot') {
sh 'git config --global --add safe.directory $(pwd)'
sh '/usr/local/bin/xuanimbot --users "$(git show -s --format=%cn)" --title "build image" --url "${RUN_DISPLAY_URL}" --content "Build unit test image failure" --debug --custom'
}
}
}
}
}
}
stage('Unit Test'){
stages{
stage('Init') {
agent {
kubernetes {
inheritFrom "xuanim"
containerTemplate {
name "zentao"
image "${MIDDLE_IMAGE_REPO}:${MIDDLE_IMAGE_TAG}"
command "sleep"
args "99d"
}
}
}
options { skipDefaultCheckout() }
steps {
container('zentao') {
sh 'initdb.php ; /apps/zentao/test/ztest init'
}
}
post {
success {
sh 'echo "stage unit init success"'
}
failure {
container('xuanimbot') {
sh 'git config --global --add safe.directory $(pwd)'
sh '/usr/local/bin/xuanimbot --users "$(git show -s --format=%cn)" --title "unittest init" --url "${RUN_DISPLAY_URL}" --content "Unit test database initialization failed" --debug --custom'
}
}
}
}
stage('Run') {
parallel {
stage('UnitTest P1') {
agent {
kubernetes {
inheritFrom "xuanim"
containerTemplate {
name "zentao1"
image "${MIDDLE_IMAGE_REPO}:${MIDDLE_IMAGE_TAG}"
command "sleep"
args "99d"
}
}
}
options { skipDefaultCheckout() }
steps {
container('zentao1') {
sh 'initdb.php config'
sh '/apps/zentao/test/ztest extract ; /apps/zentao/test/ztest P1 | tee /apps/zentao/test/p1.log'
sh 'pipeline-unittest.sh /apps/zentao/test/p1.log'
}
}
}
stage('UnitTest P2') {
agent {
kubernetes {
inheritFrom "xuanim"
containerTemplate {
name "zentao2"
image "${MIDDLE_IMAGE_REPO}:${MIDDLE_IMAGE_TAG}"
command "sleep"
args "99d"
}
}
}
options { skipDefaultCheckout() }
steps {
container('zentao2') {
sh 'initdb.php config'
sh '/apps/zentao/test/ztest extract ; /apps/zentao/test/ztest P2 | tee /apps/zentao/test/p2.log'
sh 'pipeline-unittest.sh /apps/zentao/test/p2.log'
}
}
}
stage('UnitTest P3') {
agent {
kubernetes {
inheritFrom "xuanim"
containerTemplate {
name "zentao3"
image "${MIDDLE_IMAGE_REPO}:${MIDDLE_IMAGE_TAG}"
command "sleep"
args "99d"
}
}
}
options { skipDefaultCheckout() }
steps {
container('zentao3') {
sh 'initdb.php config'
sh '/apps/zentao/test/ztest extract ; /apps/zentao/test/ztest P3 | tee /apps/zentao/test/p3.log'
sh 'pipeline-unittest.sh /apps/zentao/test/p3.log'
}
}
}
stage('UnitTest P4') {
agent {
kubernetes {
inheritFrom "xuanim"
containerTemplate {
name "zentao4"
image "${MIDDLE_IMAGE_REPO}:${MIDDLE_IMAGE_TAG}"
command "sleep"
args "99d"
}
}
}
options { skipDefaultCheckout() }
steps {
container('zentao4') {
sh 'initdb.php config'
sh '/apps/zentao/test/ztest extract ; /apps/zentao/test/ztest P4 | tee /apps/zentao/test/p4.log '
sh 'pipeline-unittest.sh /apps/zentao/test/p4.log'
}
}
}
stage('UnitTest P5') {
agent {
kubernetes {
inheritFrom "xuanim"
containerTemplate {
name "zentao5"
image "${MIDDLE_IMAGE_REPO}:${MIDDLE_IMAGE_TAG}"
command "sleep"
args "99d"
}
}
}
options { skipDefaultCheckout() }
steps {
container('zentao5') {
sh 'initdb.php config'
sh '/apps/zentao/test/ztest extract ; /apps/zentao/test/ztest P5 | tee /apps/zentao/test/p5.log'
sh 'pipeline-unittest.sh /apps/zentao/test/p5.log'
}
}
}
stage('UnitTest P6') {
agent {
kubernetes {
inheritFrom "xuanim"
containerTemplate {
name "zentao6"
image "${MIDDLE_IMAGE_REPO}:${MIDDLE_IMAGE_TAG}"
command "sleep"
args "99d"
}
}
}
options { skipDefaultCheckout() }
steps {
container('zentao6') {
sh 'initdb.php config'
sh '/apps/zentao/test/ztest extract ; /apps/zentao/test/ztest P6 | tee /apps/zentao/test/p6.log'
sh 'pipeline-unittest.sh /apps/zentao/test/p6.log'
}
}
}
stage('UnitTest P7') {
agent {
kubernetes {
inheritFrom "xuanim"
containerTemplate {
name "zentao7"
image "${MIDDLE_IMAGE_REPO}:${MIDDLE_IMAGE_TAG}"
command "sleep"
args "99d"
}
}
}
options { skipDefaultCheckout() }
steps {
container('zentao7') {
sh 'initdb.php config'
sh '/apps/zentao/test/ztest extract ; /apps/zentao/test/ztest P7 | tee /apps/zentao/test/p7.log'
sh 'pipeline-unittest.sh /apps/zentao/test/p7.log'
}
}
}
} // End Parallel
}
}
post{
success{
container('xuanimbot') {
sh 'git config --global --add safe.directory /home/jenkins/agent/workspace/pangu_pangu_xuanimbot_master'
sh '/usr/local/bin/xuanimbot --users "$(git show -s --format=%cn)" --title "unittest" --url "${RUN_DISPLAY_URL}" --content "Unit test passed" --debug --custom'
}
}
failure{
container('xuanimbot') {
sh 'git config --global --add safe.directory $(pwd)'
sh '/usr/local/bin/xuanimbot --users "$(git show -s --format=%cn)" --title "unittest" --url "${RUN_DISPLAY_URL}" --content "Unit test failed" --debug --custom'
}
}
}
}//End unittest
} // End Root Stages
} // End pipeline
-1
View File
@@ -1,5 +1,4 @@
<?php
$config->task->customBatchCreateFields .= ',lane,region';
$config->task->custom->batchCreateFields .= ',lane,region';
$config->task->datatable->defaultField = array('id', 'pri', 'name', 'status', 'assignedTo', 'lane', 'finishedBy', 'estimate', 'consumed', 'left', 'progress', 'deadline', 'actions');
@@ -16,6 +16,7 @@
<?php js::set('addChildTask', $lang->task->addChildTask);?>
<?php js::set('isonlybody', isonlybody())?>
<?php js::set('regionID', $regionID);?>
<?php js::set('requiredFields', $config->task->create->requiredFields);?>
<style>.c-lane,.c-region{width:150px;}</style>
<div id="mainContent" class="main-content fade">
<div class="main-header clearfix">
@@ -48,11 +49,7 @@
}
foreach(explode(',', $config->task->create->requiredFields) as $field)
{
if($field)
{
$requiredFields[$field] = '';
if(strpos(",{$config->task->customBatchCreateFields},", ",{$field},") !== false) $visibleFields[$field] = '';
}
if($field) $requiredFields[$field] = '';
}
$colspan = count($visibleFields) + 3;
?>
@@ -62,20 +59,20 @@
<thead>
<tr>
<th class='c-id'><?php echo $lang->idAB;?></th>
<th class='c-module<?php echo zget($visibleFields, 'module', ' hidden') . zget($requiredFields, 'module', '', ' required');?>'><?php echo $lang->task->module?></th>
<th class='c-module<?php echo zget($visibleFields, 'module', ' hidden') . zget($requiredFields, 'module', '', ' required');?> moduleBox'><?php echo $lang->task->module?></th>
<?php if($execution->type != 'ops'):?>
<th class='c-story<?php echo zget($visibleFields, 'story', ' hidden') . zget($requiredFields, 'story', '', ' required');?>'><?php echo $lang->task->story;?></th>
<th class='c-story<?php echo zget($visibleFields, 'story', ' hidden') . zget($requiredFields, 'story', '', ' required');?> storyBox'><?php echo $lang->task->story;?></th>
<?php endif;?>
<th class='c-name required has-btn'><?php echo $lang->task->name;?></span></th>
<th class='c-region required<?php echo zget($visibleFields, 'region', ' hidden');?>'><?php echo $lang->task->region;?></th>
<th class='c-lane required<?php echo zget($visibleFields, 'lane', ' hidden');?>'><?php echo $lang->task->lane;?></th>
<th class='c-region required<?php echo zget($visibleFields, 'region', ' hidden');?> regionBox'><?php echo $lang->task->region;?></th>
<th class='c-lane required<?php echo zget($visibleFields, 'lane', ' hidden');?> laneBox'><?php echo $lang->task->lane;?></th>
<th class='c-type required'><?php echo $lang->typeAB;?></span></th>
<th class='c-assigned<?php echo zget($visibleFields, 'assignedTo', ' hidden') . zget($requiredFields, 'assignedTo', '', ' required');?>'><?php echo $lang->task->assignedTo;?></th>
<th class='c-estimate<?php echo zget($visibleFields, 'estimate', ' hidden') . zget($requiredFields, 'estimate', '', ' required');?>'><?php echo $lang->task->estimateAB;?></th>
<th class='c-date<?php echo zget($visibleFields, 'estStarted', ' hidden') . zget($requiredFields, 'estStarted', '', ' required');?>'><?php echo $lang->task->estStarted;?></th>
<th class='c-date<?php echo zget($visibleFields, 'deadline', ' hidden') . zget($requiredFields, 'deadline', '', ' required');?>'><?php echo $lang->task->deadline;?></th>
<th class='c-desc<?php echo zget($visibleFields, 'desc', ' hidden') . zget($requiredFields, 'desc', '', ' required');?>'><?php echo $lang->task->desc;?></th>
<th class='c-pri<?php echo zget($visibleFields, 'pri', ' hidden') . zget($requiredFields, 'pri', '', ' required');?>'><?php echo $lang->task->pri;?></th>
<th class='c-estimate<?php echo zget($visibleFields, 'estimate', ' hidden') . zget($requiredFields, 'estimate', '', ' required');?> estimateBox'><?php echo $lang->task->estimateAB;?></th>
<th class='c-date<?php echo zget($visibleFields, 'estStarted', ' hidden') . zget($requiredFields, 'estStarted', '', ' required');?> estStartedBox'><?php echo $lang->task->estStarted;?></th>
<th class='c-date<?php echo zget($visibleFields, 'deadline', ' hidden') . zget($requiredFields, 'deadline', '', ' required');?> deadlineBox'><?php echo $lang->task->deadline;?></th>
<th class='c-desc<?php echo zget($visibleFields, 'desc', ' hidden') . zget($requiredFields, 'desc', '', ' required');?> descBox'><?php echo $lang->task->desc;?></th>
<th class='c-pri<?php echo zget($visibleFields, 'pri', ' hidden') . zget($requiredFields, 'pri', '', ' required');?> priBox'><?php echo $lang->task->pri;?></th>
<?php
$extendFields = $this->task->getFlowExtendFields();
foreach($extendFields as $extendField) echo "<th class='w-100px'>{$extendField->name}</th>";
@@ -106,12 +103,12 @@
<?php $pri = 3;?>
<tr>
<td class='text-center'><?php echo $i;?></td>
<td <?php echo zget($visibleFields, 'module', "class='hidden'")?> style='overflow:visible'>
<td class="<?php echo zget($visibleFields, 'module', 'hidden')?> moduleBox" style='overflow:visible'>
<?php echo html::select("module[$i]", $modules, $moduleID, "class='form-control chosen' onchange='setStories(this.value, $execution->id, $i)'")?>
<?php echo html::hidden("parent[$i]", $parent);?>
</td>
<?php if($execution->type != 'ops'):?>
<td <?php echo zget($visibleFields, 'story', "class='hidden'");?> style='overflow: visible'>
<td class="<?php echo zget($visibleFields, 'story', 'hidden');?> storyBox" style='overflow: visible'>
<div class='input-group'>
<?php echo html::select("story[$i]", $stories, $currentStory, "class='form-control chosen' onchange='setStoryRelated($i)'");?>
<span class='input-group-btn'>
@@ -134,12 +131,12 @@
</div>
</div>
</td>
<td <?php echo zget($visibleFields, 'region', "class='hidden'")?> style='overflow:visible'><?php echo html::select("region[$i]", $regionList, isset($regionID) ? $regionID : '', "class='form-control chosen' onchange='loadLaneGroup(this.value, $i)'");?></td>
<td <?php echo zget($visibleFields, 'lane', "class='hidden'")?> style='overflow:visible'><?php echo html::select("lane[$i]", $lanes, '', "class='form-control chosen'");?></td>
<td class="<?php echo zget($visibleFields, 'region', 'hidden');?> regionBox" style='overflow:visible'><?php echo html::select("region[$i]", $regionList, isset($regionID) ? $regionID : '', "class='form-control chosen' onchange='loadLaneGroup(this.value, $i)'");?></td>
<td class="<?php echo zget($visibleFields, 'lane', 'hidden');?> laneBox" style='overflow:visible'><?php echo html::select("lane[$i]", $lanes, '', "class='form-control chosen'");?></td>
<td><?php echo html::select("type[$i]", $lang->task->typeList, $type, "class='form-control chosen'");?></td>
<td <?php echo zget($visibleFields, 'assignedTo', "class='hidden'")?> style='overflow:visible'><?php echo html::select("assignedTo[$i]", $members, $member, "class='form-control chosen'");?></td>
<td <?php echo zget($visibleFields, 'estimate', "class='hidden'")?>><?php echo html::input("estimate[$i]", '', "class='form-control text-center'");?></td>
<td <?php echo zget($visibleFields, 'estStarted', "class='hidden'")?>>
<td class="<?php echo zget($visibleFields, 'assignedTo', 'hidden')?> assignedToBox" style='overflow:visible'><?php echo html::select("assignedTo[$i]", $members, $member, "class='form-control chosen'");?></td>
<td class="<?php echo zget($visibleFields, 'estimate', 'hidden')?> estimateBox"><?php echo html::input("estimate[$i]", '', "class='form-control text-center'");?></td>
<td class="<?php echo zget($visibleFields, 'estStarted', 'hidden')?> estStartedBox">
<div class='input-group'>
<?php
echo html::input("estStarted[$i]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
@@ -147,7 +144,7 @@
?>
</div>
</td>
<td <?php echo zget($visibleFields, 'deadline', "class='hidden'")?>>
<td class="<?php echo zget($visibleFields, 'deadline', 'hidden')?> deadlineBox">
<div class='input-group'>
<?php
echo html::input("deadline[$i]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
@@ -155,8 +152,8 @@
?>
</div>
</td>
<td <?php echo zget($visibleFields, 'desc', "class='hidden'")?>><?php echo html::textarea("desc[$i]", '', "rows='1' class='form-control autosize'");?></td>
<td <?php echo zget($visibleFields, 'pri', "class='hidden'")?>><?php echo html::select("pri[$i]", (array)$lang->task->priList, $pri, 'class=form-control');?></td>
<td class="<?php echo zget($visibleFields, 'desc', 'hidden')?> descBox"><?php echo html::textarea("desc[$i]", '', "rows='1' class='form-control autosize'");?></td>
<td class="<?php echo zget($visibleFields, 'pri', 'hidden')?> priBox"><?php echo html::select("pri[$i]", (array)$lang->task->priList, $pri, 'class=form-control');?></td>
<?php foreach($extendFields as $extendField) echo "<td" . (($extendField->control == 'select' or $extendField->control == 'multi-select') ? " style='overflow:visible'" : '') . ">" . $this->loadModel('flow')->getFieldControl($extendField, '', $extendField->field . "[$i]") . "</td>";?>
</tr>
<?php endfor;?>
@@ -177,11 +174,11 @@
<tbody>
<tr>
<td class='text-center'>%s</td>
<td <?php echo zget($visibleFields, 'module', "class='hidden'")?> style='overflow:visible'>
<td class="<?php echo zget($visibleFields, 'module', 'hidden')?> moduleBox" style='overflow:visible'>
<?php echo html::select("module[%s]", $modules, $moduleID, "class='form-control chosen' onchange='setStories(this.value, $execution->id, \"%s\")'")?>
<?php echo html::hidden("parent[%s]", $parent);?>
</td>
<td <?php echo zget($visibleFields, 'story', "class='hidden'");?> style='overflow: visible'>
<td class="<?php echo zget($visibleFields, 'story', 'hidden');?> storyBox" style='overflow: visible'>
<div class='input-group'>
<?php echo html::select("story[%s]", $stories, $currentStory, "class='form-control chosen' onchange='setStoryRelated(\"%s\")'");?>
<span class='input-group-btn'>
@@ -203,12 +200,12 @@
</div>
</div>
</td>
<td <?php echo zget($visibleFields, 'region', "class='hidden'")?> style='overflow:visible'><?php echo html::select("region[%s]", $regionList, isset($regionID) ? $regionID : '', "class='form-control chosen' onchange='loadLaneGroup(this.value, $i)'");?></td>
<td <?php echo zget($visibleFields, 'lane', "class='hidden'")?> style='overflow:visible'><?php echo html::select("lane[%s]", $lanes, '', "class='form-control chosen'");?></td>
<td class="<?php echo zget($visibleFields, 'region', 'hidden');?> regionBox" style='overflow:visible'><?php echo html::select("region[%s]", $regionList, isset($regionID) ? $regionID : '', "class='form-control chosen' onchange='loadLaneGroup(this.value, $i)'");?></td>
<td class="<?php echo zget($visibleFields, 'lane', 'hidden');?> laneBox" style='overflow:visible'><?php echo html::select("lane[%s]", $lanes, '', "class='form-control chosen'");?></td>
<td><?php echo html::select("type[%s]", $lang->task->typeList, $type, 'class="form-control"');?></td>
<td <?php echo zget($visibleFields, 'assignedTo', "class='hidden'")?> style='overflow:visible'><?php echo html::select("assignedTo[%s]", $members, $member, "class='form-control chosen'");?></td>
<td <?php echo zget($visibleFields, 'estimate', "class='hidden'")?>><?php echo html::input("estimate[%s]", '', "class='form-control text-center'");?></td>
<td <?php echo zget($visibleFields, 'estStarted', "class='hidden'")?>>
<td class="<?php echo zget($visibleFields, 'assignedTo', 'hidden');?> assignedToBox" style='overflow:visible'><?php echo html::select("assignedTo[%s]", $members, $member, "class='form-control chosen'");?></td>
<td class="<?php echo zget($visibleFields, 'estimate', 'hidden');?> estimateBox"><?php echo html::input("estimate[%s]", '', "class='form-control text-center'");?></td>
<td class="<?php echo zget($visibleFields, 'estStarted', 'hidden');?> estStartedBox">
<div class='input-group'>
<?php
echo html::input("estStarted[%s]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
@@ -216,15 +213,15 @@
?>
</div>
</td>
<td <?php echo zget($visibleFields, 'deadline', "class='hidden'")?>>
<td class="<?php echo zget($visibleFields, 'deadline', 'hidden')?> deadlineBox">
<div class='input-group'>
<?php
echo html::input("deadline[%s]", '', "class='form-control text-center form-date' onkeyup='toggleCheck(this)'");
echo "<span class='input-group-addon deadlineBox'><input type='checkbox' name='deadlineDitto[%s]' id='deadlineDitto%s' checked/>{$lang->task->ditto}</span>";
?>
</div>
<td <?php echo zget($visibleFields, 'desc', "class='hidden'")?>><?php echo html::textarea("desc[%s]", '', "rows='1' class='form-control autosize'");?></td>
<td <?php echo zget($visibleFields, 'pri', "class='hidden'")?>><?php echo html::select("pri[%s]", (array)$lang->task->priList, $pri, 'class=form-control');?></td>
<td class="<?php echo zget($visibleFields, 'desc', 'hidden')?> descBox"><?php echo html::textarea("desc[%s]", '', "rows='1' class='form-control autosize'");?></td>
<td class="<?php echo zget($visibleFields, 'pri', 'hidden')?> priBox"><?php echo html::select("pri[%s]", (array)$lang->task->priList, $pri, 'class=form-control');?></td>
<?php foreach($extendFields as $extendField) echo "<td" . (($extendField->control == 'select' or $extendField->control == 'multi-select') ? " style='overflow:visible'" : '') . ">" . $this->loadModel('flow')->getFieldControl($extendField, '', $extendField->field . "[%s]") . "</td>";?>
</tr>
</tbody>
+1 -1
View File
@@ -65,7 +65,7 @@ $config->action->majorList['project'] = array('opened', 'edited');
$config->action->majorList['execution'] = array('opened', 'edited');
$config->action->needGetProjectType = 'build,task,bug,case,testcase,caselib,testtask,testsuite,testreport,doc,issue,release,risk,design,opportunity,trainplan,gapanalysis,researchplan,researchreport,';
$config->action->needGetRelateField = ',story,productplan,release,task,build,bug,testcase,case,testtask,testreport,doc,doclib,issue,risk,opportunity,trainplan,gapanalysis,team,whitelist,researchplan,researchreport,meeting,kanbanlane,kanbancolumn,module,review,';
$config->action->needGetRelateField = ',branch,story,productplan,release,task,build,bug,testcase,case,testtask,testreport,doc,doclib,issue,risk,opportunity,trainplan,gapanalysis,team,whitelist,researchplan,researchreport,meeting,kanbanlane,kanbancolumn,module,review,';
$config->action->noLinkModules = ',doclib,module,webhook,gitlab,gitea,gogs,sonarqube,pipeline,jenkins,kanban,kanbanspace,kanbancolumn,kanbanlane,kanbanregion,kanbancard,execution,project,traincategory,apistruct,program,product,user,entry,repo,';
$config->action->ignoreObjectType4Dynamic = 'kanbanregion,kanbanlane,kanbancolumn';
+1 -2
View File
@@ -236,8 +236,7 @@ class doc extends control
$response['message'] = $this->lang->saveSuccess;
$response['result'] = 'success';
$response['closeModal'] = true;
$response['callback'] = "redirectParentWindow($hasLibPriv, $libID, $objectID)";
$response['locate'] = 'parent';
return $this->send($response);
}
+8
View File
@@ -47,4 +47,12 @@ function initModuleTree()
$(this).parent().addClass('active');
$(this).parent().parent().parent().addClass('active');
})
$firstModule = $('#moduleTree li a:not([data-has-children="true"])');
if($firstModule.length)
{
$firstModule = $firstModule.eq(0);
$firstModule.closest('li.has-list').addClass('open in');
$firstModule.trigger('click');
}
}
+8
View File
@@ -51,6 +51,14 @@ $(function()
{
if(!$(this).hasClass('active')) $(this).removeClass('text-primary');
});
var $firstBtn = $('a[target="editWin"]');
if($firstBtn.length)
{
$firstBtn = $firstBtn.eq(0);
$firstBtn.trigger('click');
$(parent.document).find('#editWin').attr('src', $firstBtn.attr('href'));
}
});
</script>
<iframe frameborder='0' name='hiddenwin' id='hiddenwin' scrolling='no' class='hidden'></iframe>
+21
View File
@@ -1311,6 +1311,27 @@ class executionModel extends model
unset($execution->end);
}
if($this->post->readjustTime && $oldExecution->grade > 1)
{
$parent = $this->getByID($oldExecution->parent);
$begin = $execution->begin;
$end = $execution->end;
$parentBegin = $parent->begin;
$parentEnd = $parent->end;
if($begin < $parentBegin)
{
dao::$errors["message"][] = sprintf($this->lang->execution->errorLetterParent, $parentBegin);
}
if($end > $parentEnd)
{
dao::$errors["message"][] = sprintf($this->lang->execution->errorGreaterParent, $parentEnd);
}
}
if(dao::isError()) return false;
$execution = $this->loadModel('file')->processImgURL($execution, $this->config->execution->editor->activate['id'], $this->post->uid);
$this->dao->update(TABLE_EXECUTION)->data($execution)
->autoCheck()
+1 -1
View File
@@ -733,7 +733,7 @@ class fileModel extends model
$line = str_replace('""', '"', $line);
/* if only one column then line is the data. */
if(strpos($line, ',') === false and $line[0] != '"' and $col == -1)
if(strpos($line, ',') === false and isset($line[0]) and $line[0] != '"' and $col == -1)
{
$data[$row][0] = trim($line, '"');
}
+7 -5
View File
@@ -1112,11 +1112,12 @@ class myModel extends model
{
if($checkExists) return true;
$story = new stdclass();
$story->id = $data->id;
$story->title = $data->title;
$story->type = 'story';
$story->time = $data->openedDate;
$story->status = $data->status;
$story->id = $data->id;
$story->title = $data->title;
$story->type = 'story';
$story->storyType = $data->type;
$story->time = $data->openedDate;
$story->status = $data->status;
$stories[$story->id] = $story;
}
@@ -1435,6 +1436,7 @@ class myModel extends model
$review->status = $objectType == 'attend' ? $object->reviewStatus : ((isset($object->status) and !isset($flows[$objectType])) ? $object->status : 'done');
if(strpos($review->result, ',') !== false) list($review->result) = explode(',', $review->result);
if($objectType == 'story') $review->storyType = $object->type;
if($review->type == 'review') $review->type = 'projectreview';
if($review->type == 'case') $review->type = 'testcase';
$review->title = '';
+1 -1
View File
@@ -57,7 +57,7 @@
$typeName = '';
if(isset($lang->{$review->type}->common)) $typeName = $lang->{$review->type}->common;
if($type == 'story') $typeName = $lang->SRCommon;
if($type == 'story') $typeName = $review->storyType == 'story' ? $lang->SRCommon : $lang->URCommon;
if($review->type == 'projectreview') $typeName = $lang->project->common;
if(isset($flows[$review->type])) $typeName = $flows[$review->type];
+1
View File
@@ -1275,6 +1275,7 @@ class productModel extends model
public function getProjectPairsByProduct($productID, $branch = 0, $appendProject = 0, $status = '', $param = '')
{
$product = $this->getById($productID);
if(empty($product)) return array();
return $this->dao->select('t2.id, t2.name')->from(TABLE_PROJECTPRODUCT)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
+3 -3
View File
@@ -3626,7 +3626,7 @@ class storyModel extends model
}
$this->dao->sqlobj->sql = $query;
return $this->mergePlanTitle($productID, $stories, $branch, $type);
return $this->mergePlanTitle($productID, $stories, $branch, $storyType);
}
/**
@@ -4996,7 +4996,7 @@ class storyModel extends model
}
else
{
$storyLink = helper::createLink('story', 'view', "storyID=$story->id&version=0&param={$this->session->project}&storyType=$story->type");
$storyLink = helper::createLink('story', 'view', "storyID=$story->id&version=0&param={$this->session->execution}&storyType=$story->type");
}
}
elseif($tab == 'execution')
@@ -5168,7 +5168,7 @@ class storyModel extends model
{
$showBranch = isset($this->config->product->browse->showBranch) ? $this->config->product->browse->showBranch : 1;
}
$titleHtml = $story->title;
$titleHtml = '';
if($storyType == 'requirement' and $story->type == 'story') $titleHtml = '<span class="label label-badge label-light">SR</span> ';
if($story->parent > 0 and isset($story->parentName)) $titleHtml = "{$story->parentName} / ";
if(isset($branches[$story->branch]) and $showBranch and $this->config->vision == 'rnd') $titleHtml = "<span class='label label-outline label-badge' title={$branches[$story->branch]}>{$branches[$story->branch]}</span> ";
+3 -3
View File
@@ -104,9 +104,9 @@ function copyStoryTitle(num)
endPosition = storyTitle.lastIndexOf('[');
storyTitle = storyTitle.substr(startPosition, endPosition - startPosition);
$('#name\\[' + num + '\\]').val(storyTitle);
$('#estimate\\[' + num + '\\]').val($('#storyEstimate' + num).val());
$('#desc\\[' + num + '\\]').val(($('#storyDesc' + num).val()).replace(/<[^>]+>/g,'').replace(/(\n)+\n/g, "\n").replace(/^\n/g, '').replace(/\t/g, ''));
$('#name' + num).val(storyTitle);
$('#estimate' + num).val($('#storyEstimate' + num).val());
$('#desc' + num).val(($('#storyDesc' + num).val()).replace(/<[^>]+>/g,'').replace(/(\n)+\n/g, "\n").replace(/^\n/g, '').replace(/\t/g, ''));
var storyPri = $('#storyPri' + num).val();
if(storyPri == 0) $('#pri' + num ).val('3');
+10 -3
View File
@@ -7622,12 +7622,19 @@ class upgradeModel extends model
if($project->status == 'closed') $this->action->create('project', $projectID, 'closedbysystem');
$project->id = $projectID;
$this->createProjectDocLib($project);
if($fromMode == 'classic')
{
$this->dao->update(TABLE_PROJECT)->set('multiple')->eq('0')->where('id')->eq($sprint->id)->exec();
$this->dao->update(TABLE_DOCLIB)->set('project')->eq($projectID)->set('type')->eq('project')->set('execution')->eq(0)->where('execution')->eq($sprint->id)->andWhere('type')->eq('execution')->exec();
$this->dao->update(TABLE_DOC)->set('project')->eq($projectID)->set('execution')->eq(0)->where('execution')->eq($sprint->id)->exec();
}
else
{
$this->createProjectDocLib($project);
}
$productIdList = $this->dao->select('product')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($sprint->id)->fetchPairs();
$this->processMergedData($programID, $projectID, '', $productIdList, array($sprint->id));
if($fromMode == 'classic') $this->dao->update(TABLE_PROJECT)->set('multiple')->eq('0')->where('id')->eq($sprint->id)->exec();
}
$this->fixProjectPath($programID);
+3
View File
@@ -1,3 +1,6 @@
sonar.projectKey=zentaopms
sonar.sourceEncoding=UTF-8
sonar.qualitygate.wait=true
sonar.coverage.exclusions=**/*.*
sonar.inclusions=**/**.php
sonar.exclusions=**/*.bak,**/*.sql,**/*.js,**/*.css,**/*.yaml,**/*.zip,**/*.out
+120 -109
View File
@@ -3,119 +3,130 @@ $builder = new stdclass();
$builder->company = array('rows' => 2, 'extends' => array('company'));
$builder->user = array('rows' => 1000, 'extends' => array('user'));
$builder->todo = array('rows' => 2000, 'extends' => array('todo'));
$builder->todocycle = array('rows' => 5, 'extends' => array('todo','todocycle'));
$builder->effort = array('rows' => 100, 'extends' => array('effort'));
$builder->usergroup = array('rows' => 600, 'extends' => array('usergroup'));
$builder->usercontact = array('rows' => 61, 'extends' => array('usercontact'));
$builder->userview = array('rows' => 400, 'extends' => array('userview'));
$builder->dept = array('rows' => 100, 'extends' => array('dept'));
$builder->action = array('rows' => 100, 'extends' => array('action'));
$builder->history = array('rows' => 100, 'extends' => array('history'));
$builder->file = array('rows' => 100, 'extends' => array('file'));
$builder->score = array('rows' => 100, 'extends' => array('score'));
$builder->extension = array('rows' => 10, 'extends' => array('extension'));
//$builder->todo = array('rows' => 2000, 'extends' => array('todo'));
//$builder->todocycle = array('rows' => 5, 'extends' => array('todo','todocycle'));
//$builder->effort = array('rows' => 100, 'extends' => array('effort'));
//$builder->usergroup = array('rows' => 600, 'extends' => array('usergroup'));
//$builder->usercontact = array('rows' => 61, 'extends' => array('usercontact'));
//$builder->userview = array('rows' => 400, 'extends' => array('userview'));
//$builder->action = array('rows' => 100, 'extends' => array('action'));
//$builder->history = array('rows' => 100, 'extends' => array('history'));
//$builder->file = array('rows' => 100, 'extends' => array('file'));
//$builder->score = array('rows' => 100, 'extends' => array('score'));
//$builder->extension = array('rows' => 10, 'extends' => array('extension'));
$builder->program = array('rows' => 10, 'extends' => array('project', 'program'));
$builder->project = array('rows' => 90, 'extends' => array('project', 'project'));
$builder->sprint = array('rows' => 600, 'extends' => array('project', 'execution'));
$builder->projectalone = array('rows' => 20, 'extends' => array('project', 'projectalone'));
$builder->pipeline = array('rows' => 5, 'extends' => array('pipeline'));
$builder->repo = array('rows' => 1, 'extends' => array('repo'));
$builder->job = array('rows' => 2, 'extends' => array('job'));
$builder->mr = array('rows' => 1, 'extends' => array('mr'));
$builder->story = array('rows' => 400, 'extends' => array('story'));
$builder->childstory = array('rows' => 50, 'extends' => array('story','childstory'));
$builder->storyreview = array('rows' => 100, 'extends' => array('storyreview'));
$builder->storymodule = array('rows' => 800, 'extends' => array('module','storymodule'));
$builder->storymoduleson = array('rows' => 400, 'extends' => array('module','storymoduleson'));
$builder->storyplan = array('rows' => 400, 'extends' => array('planstory'));
$builder->storystage = array('rows' => 450, 'extends' => array('storystage'));
$builder->storyspec = array('rows' => 570, 'extends' => array('storyspec'));
$builder->storyestimate = array('rows' => 6, 'extends' => array('storyestimate'));
$builder->relation = array('rows' => 12, 'extends' => array('relation'));
$builder->task = array('rows' => 600, 'extends' => array('task','task'));
$builder->taskmore = array('rows' => 300, 'extends' => array('task','moretask'));
$builder->taskspec = array('rows' => 600, 'extends' => array('taskspec'));
$builder->taskmodule = array('rows' => 1800, 'extends' => array('module','taskmodule'));
$builder->taskmoduleson = array('rows' => 600, 'extends' => array('module','taskmoduleson'));
$builder->taskestimate = array('rows' => 600, 'extends' => array('taskestimate'));
$builder->taskson = array('rows' => 10, 'extends' => array('task', 'taskson'));
$builder->case = array('rows' => 400, 'extends' => array('case'));
$builder->libcase = array('rows' => 10, 'extends' => array('case','libcase'));
$builder->unitcase = array('rows' => 150, 'extends' => array('case','unitcase'));
$builder->casestep = array('rows' => 400, 'extends' => array('casestep'));
$builder->casemodule = array('rows' => 100, 'extends' => array('module', 'casemodule'));
$builder->casemoduleson = array('rows' => 200, 'extends' => array('module', 'casemoduleson'));
$builder->bug = array('rows' => 300, 'extends' => array('bug'));
$builder->morebug = array('rows' => 15, 'extends' => array('bug','morebug'));
$builder->bugmodule = array('rows' => 100, 'extends' => array('module','bugmodule'));
$builder->bugmoduleson = array('rows' => 200, 'extends' => array('module','bugmoduleson'));
$builder->feedback = array('rows' => 100, 'extends' => array('feedback'));
$builder->feedbackmodule = array('rows' => 100, 'extends' => array('module','feedbackmodule'));
$builder->feedbackmoduleson = array('rows' => 200, 'extends' => array('module','feedbackmoduleson'));
$builder->testtask = array('rows' => 100, 'extends' => array('testtask'));
$builder->testresult = array('rows' => 70, 'extends' => array('testresult'));
$builder->testrun = array('rows' => 70, 'extends' => array('testrun'));
$builder->testreport = array('rows' => 10, 'extends' => array('testreport'));
$builder->testsuite = array('rows' => 201, 'extends' => array('testsuite'));
$builder->suitecase = array('rows' => 400, 'extends' => array('suitecase'));
$builder->product = array('rows' => 100, 'extends' => array('product'));
$builder->productalone = array('rows' => 20, 'extends' => array('product','productalone'));
$builder->productline = array('rows' => 20, 'extends' => array('module', 'productline'));
$builder->productplan = array('rows' => 70, 'extends' => array('productplan'));
$builder->productsonplan = array('rows' => 10, 'extends' => array('productplan', 'productsonplan'));
$builder->branch = array('rows' => 240, 'extends' => array('branch'));
$builder->projectproduct = array('rows' => 200, 'extends' => array('projectproduct'));
$builder->projectproductalone = array('rows' => 28, 'extends' => array('projectproduct','projectproductalone'));
$builder->projectstory = array('rows' => 200, 'extends' => array('projectstory'));
$builder->projectcase = array('rows' => 400, 'extends' => array('projectcase'));
$builder->executionstory = array('rows' => 180, 'extends' => array('projectstory','executionstory'));
$builder->kanbanspace = array('rows' => 50, 'extends' => array('kanbanspace'));
$builder->kanban = array('rows' => 100, 'extends' => array('kanban'));
$builder->kanbanregion = array('rows' => 100, 'extends' => array('kanbanregion','kanbanregion'));
$builder->kanbangroup = array('rows' => 100, 'extends' => array('kanbangroup','kanbangroup'));
$builder->kanbanlane = array('rows' => 100, 'extends' => array('kanbanlane','kanbanlane'));
$builder->kanbancolumn = array('rows' => 400, 'extends' => array('kanbancolumn','kanbancolumn'));
$builder->kanbancard = array('rows' => 1000, 'extends' => array('kanbancard','kanbancard'));
$builder->kanbancell = array('rows' => 400, 'extends' => array('kanbancell','kanbancell'));
$builder->kanbanregionproject = array('rows' => 180, 'extends' => array('kanbanregion','kanbanregionproject'));
$builder->kanbangroupproject = array('rows' => 540, 'extends' => array('kanbangroup','kanbangroupproject'));
$builder->kanbanlaneproject = array('rows' => 540, 'extends' => array('kanbanlane','kanbanlaneproject'));
$builder->kanbancolumnproject = array('rows' => 4860, 'extends' => array('kanbancolumn','kanbancolumnproject'));
$builder->kanbancellproject = array('rows' => 4860, 'extends' => array('kanbancell','kanbancellproject'));
$builder->team = array('rows' => 400, 'extends' => array('team'));
$builder->teamtask = array('rows' => 20, 'extends' => array('team', 'teamtask'));
$builder->stakeholder = array('rows' => 1, 'extends' => array('stakeholder'));
$builder->expect = array('rows' => 270, 'extends' => array('expect'));
$builder->stageson = array('rows' => 30, 'extends' => array('project', 'executionson'));
$builder->doclib = array('rows' => 910, 'extends' => array('doclib'));
$builder->doc = array('rows' => 900, 'extends' => array('doc'));
$builder->doccontent = array('rows' => 910, 'extends' => array('doccontent'));
$builder->docmodule = array('rows' => 100, 'extends' => array('module','docmodule'));
$builder->docmoduleon = array('rows' => 200, 'extends' => array('module','docmoduleson'));
$builder->build = array('rows' => 20, 'extends' => array('build'));
$builder->release = array('rows' => 10, 'extends' => array('release'));
$builder->design = array('rows' => 120, 'extends' => array('design'));
$builder->designspec = array('rows' => 120, 'extends' => array('designspec'));
$builder->stage = array('rows' => 6, 'extends' => array('stage'));
$builder->webhook = array('rows' => 7, 'extends' => array('webhook'));
$builder->entry = array('rows' => 1, 'extends' => array('entry'));
$builder->log = array('rows' => 10, 'extends' => array('log'));
$builder->weeklyreport = array('rows' => 10, 'extends' => array('weeklyreport'));
$builder->metting = array('rows' => 10, 'extends' => array('meeting'));
$builder->usertpl = array('rows' => 10, 'extends' => array('usertpl'));
$builder->pipeline = array('rows' => 5, 'extends' => array('pipeline'));
$builder->holiday = array('rows' => 100, 'extends' => array('holiday'));
$builder->repo = array('rows' => 1, 'extends' => array('repo'));
$builder->job = array('rows' => 2, 'extends' => array('job'));
$builder->mr = array('rows' => 1, 'extends' => array('mr'));
$builder->oauth = array('rows' => 100, 'extends' => array('oauth'));
$builder->notify = array('rows' => 10, 'extends' => array('notify'));
//$builder->todo = array('rows' => 2000, 'extends' => array('todo'));
//$builder->todocycle = array('rows' => 5, 'extends' => array('todo','todocycle'));
//$builder->effort = array('rows' => 100, 'extends' => array('effort'));
//$builder->usergroup = array('rows' => 600, 'extends' => array('usergroup'));
//$builder->usercontact = array('rows' => 61, 'extends' => array('usercontact'));
//$builder->userview = array('rows' => 400, 'extends' => array('userview'));
//$builder->action = array('rows' => 100, 'extends' => array('action'));
//$builder->history = array('rows' => 100, 'extends' => array('history'));
//$builder->file = array('rows' => 100, 'extends' => array('file'));
//$builder->score = array('rows' => 100, 'extends' => array('score'));
//$builder->extension = array('rows' => 10, 'extends' => array('extension'));
//$builder->story = array('rows' => 400, 'extends' => array('story'));
//$builder->childstory = array('rows' => 50, 'extends' => array('story','childstory'));
//$builder->storyreview = array('rows' => 100, 'extends' => array('storyreview'));
//$builder->storymodule = array('rows' => 800, 'extends' => array('module','storymodule'));
//$builder->storymoduleson = array('rows' => 400, 'extends' => array('module','storymoduleson'));
//$builder->storyplan = array('rows' => 400, 'extends' => array('planstory'));
//$builder->storystage = array('rows' => 450, 'extends' => array('storystage'));
//$builder->storyspec = array('rows' => 570, 'extends' => array('storyspec'));
//$builder->storyestimate = array('rows' => 6, 'extends' => array('storyestimate'));
//$builder->relation = array('rows' => 12, 'extends' => array('relation'));
//$builder->task = array('rows' => 600, 'extends' => array('task','task'));
//$builder->taskmore = array('rows' => 300, 'extends' => array('task','moretask'));
//$builder->taskspec = array('rows' => 600, 'extends' => array('taskspec'));
//$builder->taskmodule = array('rows' => 1800, 'extends' => array('module','taskmodule'));
//$builder->taskmoduleson = array('rows' => 600, 'extends' => array('module','taskmoduleson'));
//$builder->taskestimate = array('rows' => 600, 'extends' => array('taskestimate'));
//$builder->taskson = array('rows' => 10, 'extends' => array('task', 'taskson'));
//$builder->case = array('rows' => 400, 'extends' => array('case'));
//$builder->libcase = array('rows' => 10, 'extends' => array('case','libcase'));
//$builder->unitcase = array('rows' => 150, 'extends' => array('case','unitcase'));
//$builder->casestep = array('rows' => 400, 'extends' => array('casestep'));
//$builder->casemodule = array('rows' => 100, 'extends' => array('module', 'casemodule'));
//$builder->casemoduleson = array('rows' => 200, 'extends' => array('module', 'casemoduleson'));
//$builder->bug = array('rows' => 300, 'extends' => array('bug'));
//$builder->morebug = array('rows' => 15, 'extends' => array('bug','morebug'));
//$builder->bugmodule = array('rows' => 100, 'extends' => array('module','bugmodule'));
//$builder->bugmoduleson = array('rows' => 200, 'extends' => array('module','bugmoduleson'));
//$builder->feedback = array('rows' => 100, 'extends' => array('feedback'));
//$builder->feedbackmodule = array('rows' => 100, 'extends' => array('module','feedbackmodule'));
//$builder->feedbackmoduleson = array('rows' => 200, 'extends' => array('module','feedbackmoduleson'));
//
//$builder->testtask = array('rows' => 100, 'extends' => array('testtask'));
//$builder->testresult = array('rows' => 70, 'extends' => array('testresult'));
//$builder->testrun = array('rows' => 70, 'extends' => array('testrun'));
//$builder->testreport = array('rows' => 10, 'extends' => array('testreport'));
//$builder->testsuite = array('rows' => 201, 'extends' => array('testsuite'));
//$builder->suitecase = array('rows' => 400, 'extends' => array('suitecase'));
//
//$builder->product = array('rows' => 100, 'extends' => array('product'));
//$builder->productalone = array('rows' => 20, 'extends' => array('product','productalone'));
//$builder->productline = array('rows' => 20, 'extends' => array('module', 'productline'));
//$builder->productplan = array('rows' => 70, 'extends' => array('productplan'));
//$builder->productsonplan = array('rows' => 10, 'extends' => array('productplan', 'productsonplan'));
//$builder->branch = array('rows' => 240, 'extends' => array('branch'));
//$builder->projectproduct = array('rows' => 200, 'extends' => array('projectproduct'));
//$builder->projectproductalone = array('rows' => 28, 'extends' => array('projectproduct','projectproductalone'));
//$builder->projectstory = array('rows' => 200, 'extends' => array('projectstory'));
//$builder->projectcase = array('rows' => 400, 'extends' => array('projectcase'));
//$builder->executionstory = array('rows' => 180, 'extends' => array('projectstory','executionstory'));
//
//$builder->kanbanspace = array('rows' => 50, 'extends' => array('kanbanspace'));
//$builder->kanban = array('rows' => 100, 'extends' => array('kanban'));
//$builder->kanbanregion = array('rows' => 100, 'extends' => array('kanbanregion','kanbanregion'));
//$builder->kanbangroup = array('rows' => 100, 'extends' => array('kanbangroup','kanbangroup'));
//$builder->kanbanlane = array('rows' => 100, 'extends' => array('kanbanlane','kanbanlane'));
//$builder->kanbancolumn = array('rows' => 400, 'extends' => array('kanbancolumn','kanbancolumn'));
//$builder->kanbancard = array('rows' => 1000, 'extends' => array('kanbancard','kanbancard'));
//$builder->kanbancell = array('rows' => 400, 'extends' => array('kanbancell','kanbancell'));
//
//$builder->kanbanregionproject = array('rows' => 180, 'extends' => array('kanbanregion','kanbanregionproject'));
//$builder->kanbangroupproject = array('rows' => 540, 'extends' => array('kanbangroup','kanbangroupproject'));
//$builder->kanbanlaneproject = array('rows' => 540, 'extends' => array('kanbanlane','kanbanlaneproject'));
//$builder->kanbancolumnproject = array('rows' => 4860, 'extends' => array('kanbancolumn','kanbancolumnproject'));
//$builder->kanbancellproject = array('rows' => 4860, 'extends' => array('kanbancell','kanbancellproject'));
//
//
//$builder->team = array('rows' => 400, 'extends' => array('team'));
//$builder->teamtask = array('rows' => 20, 'extends' => array('team', 'teamtask'));
//$builder->stakeholder = array('rows' => 1, 'extends' => array('stakeholder'));
//$builder->expect = array('rows' => 270, 'extends' => array('expect'));
//$builder->stageson = array('rows' => 30, 'extends' => array('project', 'executionson'));
//
//$builder->doclib = array('rows' => 910, 'extends' => array('doclib'));
//$builder->doc = array('rows' => 900, 'extends' => array('doc'));
//$builder->doccontent = array('rows' => 910, 'extends' => array('doccontent'));
//$builder->docmodule = array('rows' => 100, 'extends' => array('module','docmodule'));
//$builder->docmoduleon = array('rows' => 200, 'extends' => array('module','docmoduleson'));
//
//$builder->build = array('rows' => 20, 'extends' => array('build'));
//$builder->release = array('rows' => 10, 'extends' => array('release'));
//$builder->design = array('rows' => 120, 'extends' => array('design'));
//$builder->designspec = array('rows' => 120, 'extends' => array('designspec'));
//
//$builder->stage = array('rows' => 6, 'extends' => array('stage'));
//$builder->webhook = array('rows' => 7, 'extends' => array('webhook'));
//$builder->entry = array('rows' => 1, 'extends' => array('entry'));
//$builder->log = array('rows' => 10, 'extends' => array('log'));
//$builder->weeklyreport = array('rows' => 10, 'extends' => array('weeklyreport'));
//$builder->metting = array('rows' => 10, 'extends' => array('meeting'));
//$builder->usertpl = array('rows' => 10, 'extends' => array('usertpl'));
//
//$builder->holiday = array('rows' => 100, 'extends' => array('holiday'));
//$builder->oauth = array('rows' => 100, 'extends' => array('oauth'));
//$builder->notify = array('rows' => 10, 'extends' => array('notify'));
+15 -15
View File
@@ -32,26 +32,26 @@ class Processor
{
$this->dao->begin();
$this->initBassicSql();
//$this->initBassicSql();
$this->initDept();
$this->initUser();
$this->initProgram();
$this->initProduct();
$this->initPlan();
//$this->initProduct();
//$this->initPlan();
$this->initProject();
$this->initBuild();
$this->initTask();
//$this->initBuild();
//$this->initTask();
$this->initExecution();
$this->initRelease();
$this->initStakeholder();
$this->initUserquery();
$this->initMessage();
$this->initUpdateKanban();
$this->initStory();
$this->initBug();
$this->initTest();
$this->initTodo();
$this->initSonPlan();
//$this->initRelease();
//$this->initStakeholder();
//$this->initUserquery();
//$this->initMessage();
//$this->initUpdateKanban();
//$this->initStory();
//$this->initBug();
//$this->initTest();
//$this->initTodo();
//$this->initSonPlan();
$this->dao->commit();
}
+11 -1
View File
@@ -46,6 +46,15 @@ function ztfRun($dir)
global $config;
$ztfPath = RUNTIME_ROOT . 'ztf';
$modelPath = TEST_BASEHPATH . '/model';
$runTestPath = '';
if(is_array($dir))
{
foreach($dir as $model) $runTestPath .= " $modelPath/$model";
}
if($runTestPath) $dir = $runTestPath;
$command = "$ztfPath $dir";
system($command);
}
@@ -62,7 +71,8 @@ function ztfExtract($dir)
global $config;
$ztfPath = RUNTIME_ROOT . 'ztf';
$command = "$ztfPath extract $dir";
$testPath = TEST_BASEHPATH;
$command = "$ztfPath extract $testPath/$dir";
system($command);
}
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/action.class.php';
$db->switchDB();
su('admin');
/**
@@ -34,4 +33,3 @@ r($action->createTest($objectTypeList[2], $objectIDList[0], $actionTypeList[2]))
r($action->createTest($objectTypeList[3], $objectIDList[0], $actionTypeList[3])) && p('objectType,objectId,action,comment') && e('bug,,closed,'); // 测试创建bug 1 closed动态
r($action->createTest($objectTypeList[4], $objectIDList[0], $actionTypeList[4], $comment)) && p('objectType,objectId,action,comment') && e('story,,comments,测试备注'); // 测试创建story 1 comment动态
r($action->createTest($objectTypeList[2], $objectIDList[0], $actionTypeList[5], '', '', $actor)) && p() && e('0'); // 测试创建游客 logout动态
$db->restoreDB();
@@ -0,0 +1,15 @@
---
title: zt_action
author: auto_getbyid
version: "1.0"
fields:
- field: id
range: 101-105
- field: objectType
range: product,story,productplan,release,project
- field: action
range: common,extra,opened,created,changed
- field: comment
range: 1-5
prefix: 这是一个系统日志测试备注
...
+68
View File
@@ -0,0 +1,68 @@
-- MySQL dump 10.19 Distrib 10.3.34-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: 127.0.0.1 Database: zentao1243
-- ------------------------------------------------------
-- Server version 5.7.36
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `zt_action`
--
DROP TABLE IF EXISTS `zt_action`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `zt_action` (
`id` int(9) unsigned NOT NULL AUTO_INCREMENT,
`objectType` varchar(30) NOT NULL DEFAULT '',
`objectID` mediumint(8) unsigned NOT NULL DEFAULT '0',
`product` text NOT NULL,
`project` mediumint(8) unsigned NOT NULL,
`execution` mediumint(8) unsigned NOT NULL,
`actor` varchar(100) NOT NULL DEFAULT '',
`action` varchar(80) NOT NULL DEFAULT '',
`date` datetime NOT NULL,
`comment` text NOT NULL,
`extra` text,
`read` enum('0','1') NOT NULL DEFAULT '0',
`vision` varchar(10) NOT NULL DEFAULT 'rnd',
`efforted` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `date` (`date`),
KEY `actor` (`actor`),
KEY `project` (`execution`),
KEY `objectID` (`objectID`),
KEY `action` (`action`)
) ENGINE=MyISAM AUTO_INCREMENT=420 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `zt_action`
--
LOCK TABLES `zt_action` WRITE;
/*!40000 ALTER TABLE `zt_action` DISABLE KEYS */;
INSERT INTO `zt_action` VALUES (101,'product',0,'',0,0,'','common','0000-00-00 00:00:00','这是一个系统日志测试备注1',NULL,'0','rnd',0),(102,'story',0,'',0,0,'','extra','0000-00-00 00:00:00','这是一个系统日志测试备注2',NULL,'0','rnd',0),(103,'productplan',0,'',0,0,'','opened','0000-00-00 00:00:00','这是一个系统日志测试备注3',NULL,'0','rnd',0),(104,'release',0,'',0,0,'','created','0000-00-00 00:00:00','这是一个系统日志测试备注4',NULL,'0','rnd',0),(105,'project',0,'',0,0,'','changed','0000-00-00 00:00:00','这是一个系统日志测试备注5',NULL,'0','rnd',0);
/*!40000 ALTER TABLE `zt_action` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2022-11-17 8:52:10
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/action.class.php';
$db->switchDB();
su('admin');
/**
@@ -22,4 +21,3 @@ $action = new actionTest();
r($action->deleteByTypeTest('')) && p() && e('1'); // 测试删除object为空动态
r($action->deleteByTypeTest('story')) && p() && e('1'); // 测试删除objectType为story的动态
r($action->deleteByTypeTest('test')) && p() && e('1'); // 测试删除objectType为不存在的test的动态
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/action.class.php';
$db->switchDB();
su('admin');
/**
@@ -18,4 +17,3 @@ pid=1
$action = new actionTest();
r($action->hideAllTest()) && p('0:extra;1:extra;2:extra') && e('2;2;2'); // 隐藏回收站全部信息
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/action.class.php';
$db->switchDB();
su('admin');
/**
@@ -25,4 +24,3 @@ r($action->hideOneTest($actionIDList[0])) && p('extra') && e('2'); // 隐藏acti
r($action->hideOneTest($actionIDList[1])) && p('extra') && e('2'); // 隐藏action 87
r($action->hideOneTest($actionIDList[2])) && p('extra') && e('2'); // 隐藏已隐藏action 9
r($action->hideOneTest($actionIDList[3])) && p('extra') && e('1'); // 隐藏非删除action 1
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/action.class.php';
$db->switchDB();
su('admin');
/**
@@ -35,4 +34,3 @@ r($action->logHistoryTest($actionIDList[1], $changes2)) && p('0:field,old,new')
r($action->logHistoryTest($actionIDList[2], $changes3)) && p('0:field,old,new') && e('name,name1,name2'); // 测试新增actionID 10003 历史记录
r($action->logHistoryTest($actionIDList[3], $changes4)) && p('0:field,old,new') && e('code,code1,code2'); // 测试新增actionID 10004 历史记录
r($action->logHistoryTest($actionIDList[4], $changes5)) && p('0:field,old,new') && e('assignedTo,test2,test1'); // 测试新增actionID 10005 历史记录
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/action.class.php';
$db->switchDB();
su('admin');
/**
@@ -29,4 +28,3 @@ r($action->readTest($objectType[1], $objectID[1])) && p('0:objectType,objectID,r
r($action->readTest($objectType[2], $objectID[2])) && p('0:objectType,objectID,read') && e('productplan,3,1'); // 测试对action 3 进行阅读操作
r($action->readTest($objectType[3], $objectID[3])) && p('0:objectType,objectID,read') && e('release,4,1'); // 测试对action 4 进行阅读操作
r($action->readTest($objectType[4], $objectID[4])) && p('0:objectType,objectID,read') && e('project,5,1'); // 测试对action 5 进行阅读操作
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/action.class.php';
$db->switchDB();
su('admin');
/**
@@ -36,4 +35,3 @@ r($action->saveIndexTest($objectTypeList[1], $objectIdList[0], $actionTypeList[1
r($action->saveIndexTest($objectTypeList[1], $objectIdList[1], $actionTypeList[1])) && p() && e('1'); // 测试保存stroyId为1, action为created的数据
r($action->saveIndexTest($objectTypeList[1], $objectIdList[2], $actionTypeList[1])) && p() && e('1'); // 测试保存stroyId为100000, action为created的数据
r($action->saveIndexTest($objectTypeList[2], $objectIdList[2], $actionTypeList[2])) && p() && e('1'); // 测试保存不存在类型的数据
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/action.class.php';
$db->switchDB();
su('admin');
/**
@@ -25,4 +24,3 @@ r($action->undeleteTest($actionIDList[0])) && p('extra') && e('0'); // 测试还
r($action->undeleteTest($actionIDList[1])) && p('extra') && e('0'); // 测试还原action 87
r($action->undeleteTest($actionIDList[2])) && p('extra') && e('0'); // 测试还原action 9
r($action->undeleteTest($actionIDList[3])) && p('extra') && e('1'); // 测试还原未删除action 1
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/action.class.php';
$db->switchDB();
su('admin');
/**
@@ -28,4 +27,3 @@ r($action->updateCommentTest($actionIDList[1], $commentList[1])) && p('comment')
r($action->updateCommentTest($actionIDList[2], $commentList[2])) && p('comment') && e('备注3'); // 测试更新action 3的备注
r($action->updateCommentTest($actionIDList[3], $commentList[3])) && p('comment') && e('备注4'); // 测试更新action 4的备注
r($action->updateCommentTest($actionIDList[4], $commentList[4])) && p('comment') && e('备注5'); // 测试更新action 5的备注
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/api.class.php';
$db->switchDB();
su('admin');
/**
@@ -53,4 +52,3 @@ r($api->createTest($normalApi)) && p('lib') && e('920');
r($api->createTest($emptyLibApi)) && p('lib:0') && e('『所属接口库』不能为空。'); //测试没有lib创建api
r($api->createTest($emptyTitleApi)) && p('title:0') && e('『接口名称』不能为空。'); //测试没有title创建api
r($api->createTest($emptyPathApi)) && p('path:0') && e('『请求路径』不能为空。'); //测试没有path创建api
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/api.class.php';
$db->switchDB();
su('admin');
/**
@@ -37,4 +36,3 @@ $normalStruct->addedDate = helper::now();
r($api->createStructTest($normalStruct)) && p('name') && e('struct'); //创建数据结构
r($api->createStructTest($emptyNameStruct)) && p('name:0') && e('『结构名』不能为空。'); //创建没有结构名的数据结构
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/api.class.php';
$db->switchDB();
su('admin');
/**
@@ -17,4 +16,3 @@ pid=1
global $tester;
r($api->deleteReleaseTest(1, 1)) && p('id') && e('1'); //删除一个发布
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/api.class.php';
$db->switchDB();
su('admin');
/**
@@ -59,4 +58,3 @@ $editApi = $editData;
$apiInfo = $api->createTest($normalApi, false);
r($api->updateTest($apiInfo->id, $editApi)) && p('0:new') && e('edittestapi'); //修改一个刚创建的api
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/api.class.php';
$db->switchDB();
su('admin');
/**
@@ -42,4 +41,3 @@ $emptyNameEditStruct['name'] = '';
$struct = $api->createStructTest($normalStruct, false);
r($api->updateStructTest($struct->id, $normalEditStruct, false)) && p('0:new') && e('editStruct'); //正常的修改
r($api->updateStructTest($struct->id, $emptyNameEditStruct)) && p('name:0') && e('『结构名』不能为空。'); //没有名称的修改
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/block.class.php';
$db->switchDB();
su('admin');
/**
@@ -59,4 +58,3 @@ r($dataList[6]) && p("blockData:module;blockData:type") && e('qa;');
r($dataList[7]) && p("blockInited;blockversion") && e('1;2'); // 获取空区块版本
r($dataList[7]) && p("blockData") && e('0'); // 获取空区块数据
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/block.class.php';
$db->switchDB();
su('admin');
/**
@@ -55,4 +54,3 @@ r($block->saveTest($changeTitle, $blockID[0], $source, $changeTitle->modules))
r($block->saveTest($changeModules, $blockID[0], $source, $changeModules->modules)) && p('title,module,grid,block') && e('我的贡献,my,8,dynamic'); // 测试修改block 模块
r($block->saveTest($changeBlock, $blockID[1], $source, $changeBlock->modules, $changeBlock->moduleBlock)) && p('title,module,grid,block') && e('项目统计,projectteam,8,projectteam'); // 测试修改block 区块
r($block->saveTest($changeParams, $blockID[2], $source, $changeParams->modules, $changeParams->moduleBlock)) && p('title,module,grid,block') && e('未关闭的产品,statistic,8,statistic'); // 测试修改block 变量
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/branch.class.php';
$db->switchDB();
su('admin');
/**
@@ -30,4 +29,3 @@ r($branch->activateTest($branchID[2])) && p('id,status') && e('6,active'); //
r($branch->activateTest($branchID[3])) && p('id,status') && e('8,active'); // 测试激活分支 8
r($branch->activateTest($branchID[4])) && p('id,status') && e('10,active'); // 测试激活分支 10
r($branch->activateTest($branchID[5])) && p('id,status') && e('1,active'); // 测试激活分支 1
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/branch.class.php';
$db->switchDB();
su('admin');
/**
@@ -26,4 +25,3 @@ $branch = new branchTest();
r($branch->batchUpdateTest($changeName)) && p('field,old,new') && e('name,分支9,修改分支9的名称'); // 测试批量更新名称
r($branch->batchUpdateTest($changeDesc)) && p('field,old,new') && e('desc,,修改分支9的描述'); // 测试批量更新描述
r($branch->batchUpdateTest($changeStatus)) && p('field,old,new') && e('status,active,closed'); // 测试批量更新状态
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/branch.class.php';
$db->switchDB();
su('admin');
/**
@@ -31,4 +30,3 @@ r($branch->closeTest($branchID[3])) && p('id,status') && e('4,closed'); // 测
r($branch->closeTest($branchID[4])) && p('id,status') && e('5,closed'); // 测试关闭branchID 5
r($branch->closeTest($branchID[5])) && p('id,status') && e('6,closed'); // 测试关闭branchID 6
r($branch->closeTest($branchID[0])) && p('id,status') && e('1,closed'); // 测试重复关闭branchID 1
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/branch.class.php';
$db->switchDB();
su('admin');
/**
@@ -34,4 +33,3 @@ r($branch->createTest($productID, $branch2)) && p('name,desc') && e('新建
r($branch->createTest($productID, $repeatName1)) && p() && e('分支名称已存在'); // 测试新建 重名新建分支1
r($branch->createTest($productID, $repeatName2)) && p() && e('分支名称已存在'); // 测试新建 重名分支1
r($branch->createTest($productID, $emptyName)) && p() && e('『名称』不能为空。'); // 测试新建 名称为空的分支
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/branch.class.php';
$db->switchDB();
su('admin');
/**
@@ -28,4 +27,3 @@ r($branch->linkBranch4ProjectTest($productID[1])) && p() && e('4'); // 测试关
r($branch->linkBranch4ProjectTest($productID[2])) && p() && e('4'); // 测试关联产品 43 的分支到项目
r($branch->linkBranch4ProjectTest($productID[3])) && p() && e('4'); // 测试关联产品 44 的分支到项目
r($branch->linkBranch4ProjectTest($productID[4])) && p() && e('4'); // 测试关联产品 45 的分支到项目
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/branch.class.php';
$db->switchDB();
su('admin');
/**
@@ -41,4 +40,3 @@ $branch = new branchTest();
r($branch->mergeBranchTest($productID[0], $mergedBranches[0], $mergeBranch1)) && p() && e('2'); // 测试合并分支 1 到 分支 2
r($branch->mergeBranchTest($productID[0], $mergedBranches[1], $mergeBranch2)) && p() && e('2'); // 测试合并分支 2 到 新建分支
r($branch->mergeBranchTest($productID[1], $mergedBranches[2], $mergeBranch3)) && p() && e('12'); // 测试合并分支 3 4 到 主干
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/branch.class.php';
$db->switchDB();
su('admin');
/**
@@ -27,4 +26,3 @@ r($branch->setDefaultTest($productIdList[0], $branchIdList[0])) && p()
r($branch->setDefaultTest($productIdList[0], $branchIdList[1])) && p('name,default') && e('分支1,1'); // 测试将productID 0, branchID 1的分支设为默认分支
r($branch->setDefaultTest($productIdList[1], $branchIdList[0])) && p() && e('主干'); // 测试将productID 41, branchID 0的分支设为默认分支
r($branch->setDefaultTest($productIdList[1], $branchIdList[1])) && p('name,default') && e('分支1,1'); // 测试将productID 41, branchID 0的分支设为默认分支
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/branch.class.php';
$db->switchDB();
su('admin');
/**
@@ -34,4 +33,3 @@ r($branch->sortTest($branches[0], $order)) && p() && e('2,1'); // 测试产品 4
r($branch->sortTest($branches[1], $order)) && p() && e('4,3'); // 测试产品 42 order 排序
r($branch->sortTest($branches[2], $order)) && p() && e('6,5'); // 测试产品 43 order 排序
r($branch->sortTest($branches[3], $order)) && p() && e('8,7'); // 测试产品 44 order 排序
$db->restoreDB();
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/branch.class.php';
$db->switchDB();
su('admin');
/**
@@ -25,4 +24,3 @@ r($branch->unlinkBranch4ProjectTest($productIDList[0])) && p() && e('0'); // 测
r($branch->unlinkBranch4ProjectTest($productIDList[1])) && p() && e('0'); // 测试产品 42 转为普通产品接触分支关联
r($branch->unlinkBranch4ProjectTest($productIDList[2])) && p() && e('0'); // 测试产品 43 转为普通产品接触分支关联
r($branch->unlinkBranch4ProjectTest($productIDList[3])) && p() && e('0'); // 测试产品 44 45 转为普通产品接触分支关联
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/branch.class.php';
$db->switchDB();
su('admin');
/**
@@ -31,4 +30,3 @@ r($branch->updateTest($changeStatus)) && p('0:field,old,new') && e('status,activ
r($branch->updateTest($changeDesc)) && p('0:field,old,new') && e('desc,,修改后的分支1描述'); // 测试修改分支描述
r($branch->updateTest($emptyName)) && p('name:0') && e('『名称』不能为空。'); // 测试修改分支名称
r($branch->updateTest($repeatName)) && p('name:0') && e('分支名称已存在'); // 测试修改分支名称
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php'; su('admin');
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
/**
@@ -28,4 +27,3 @@ r($bug->activateObject($bugIDList[2])) && p('field,old,new') && e('activatedCoun
r($bug->activateObject($bugIDList[3])) && p('field,old,new') && e('activatedCount,0,1'); // 测试激活状态为resolved的bug52
r($bug->activateObject($bugIDList[4])) && p('field,old,new') && e('activatedCount,0,1'); // 测试激活状态为closed的bug81
r($bug->activateObject($bugIDList[5])) && p('field,old,new') && e('activatedCount,0,1'); // 测试激活状态为closed的bug82
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -36,4 +35,3 @@ r($bug->assignTest($bugIDlist[2],$bug3)) && p('0:field,old,new') && e('assigned
r($bug->assignTest($bugIDlist[3],$bug4)) && p('0:field,old,new') && e('assignedTo,admin,user95'); // 指派bugID为4的bug
r($bug->assignTest($bugIDlist[4],$bug51)) && p('0:field,old,new') && e('assignedTo,dev1,user96'); // 指派bugID为51的bug
r($bug->assignTest($bugIDlist[5],$bug81)) && p() && e('0'); // 指派人不发生变化的bug
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -19,4 +18,3 @@ $bugIDList = array('1' => '1', '52' => '53', '82' => '82');
$bug = new bugTest();
r($bug->batchActivateObject($bugIDList)) && p('53:status;82:status') && e('active;active'); // 测试批量激活bug
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -49,4 +48,3 @@ r($bug->batchChangeBranchTest($bugIDList3, $branchList3[2], $bugIDList3[2])) &&
r($bug->batchChangeBranchTest($bugIDList4, $branchList4[0], $bugIDList4[0])) && p() && e('0'); // 修改分支为主干 未发生变化
r($bug->batchChangeBranchTest($bugIDList4, $branchList4[1], $bugIDList4[1])) && p('0:field,old,new') && e('branch,0,37'); // 修改分支为分支37
r($bug->batchChangeBranchTest($bugIDList4, $branchList4[2], $bugIDList4[2])) && p('0:field,old,new') && e('branch,37,38'); // 修改分支为分支38
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -70,4 +69,3 @@ r($bug->batchChangeModuleTest($bugIDList4, $moduleList[2], $bugIDList4[0])) && p
r($bug->batchChangeModuleTest($bugIDList4, $moduleList[3], $bugIDList4[1])) && p('0:field,old,new') && e('module,9,10'); // 修改bug2 3模块为10
r($bug->batchChangeModuleTest($bugIDList4, $moduleList[4], $bugIDList4[0])) && p('0:field,old,new') && e('module,10,11'); // 修改bug2 3模块为11
r($bug->batchChangeModuleTest($bugIDList4, $moduleList[4], $bugIDList4[1])) && p() && e('0'); // 修改bug2 3模块为11 未发生变化
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -46,4 +45,3 @@ r($bug->batchChangePlanTest($bugIDList3, $planList[2], $bugIDList3[2])) && p('0:
r($bug->batchChangePlanTest($bugIDList4, $planList[0], $bugIDList4[0])) && p() && e('0'); // 修改计划为0 未发生变化
r($bug->batchChangePlanTest($bugIDList4, $planList[1], $bugIDList4[1])) && p('0:field,old,new') && e('plan,0,1'); // 修改计划为计划1
r($bug->batchChangePlanTest($bugIDList4, $planList[2], $bugIDList4[2])) && p('0:field,old,new') && e('plan,1,2'); // 修改计划为计划2
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -23,4 +22,3 @@ $bugIDlist2 = array('2', '7');
$bug = new bugTest();
r($bug->batchConfirmTest($bugIDlist1)) && p() && e(',1,1,1,1,1'); // 批量确认1 3 4 51 81
r($bug->batchConfirmTest($bugIDlist2)) && p() && e(',1,1'); // 批量确认2 7
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -44,4 +43,3 @@ r($bug->batchCreateObject($productID, $normal_create3)) && p('2:title,openedBu
r($bug->batchCreateObject($productID, $normal_create1)) && p() && e('0'); // 测试短时间内重复批量创建bug
r($bug->batchCreateObject($productID, $exception_create)) && p('message:0') && e("『影响版本』不能为空。"); // 测试异常创建bug
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -44,4 +43,3 @@ r($bug->batchResolveTest($bugIDList6, $resolutionList[5], $bugIDList6[0])) && p(
r($bug->batchResolveTest($bugIDList7, $resolutionList[6], $bugIDList7[0])) && p('0:field,old,new;3:field,old,new') && e('resolution,,willnotfix;status,active,resolved'); // 解决bug19 20 21,解决方式为willnotfix
r($bug->batchResolveTest($bugIDList8, $resolutionList[7], $bugIDList8[0])) && p('0:field,old,new;3:field,old,new') && e('resolution,,tostory;status,active,resolved'); // 解决bug22 23 24,解决方式为tostory
r($bug->batchResolveTest($bugIDList8, $resolutionList[7], $bugIDList8[0])) && p('0:field,old,new;3:field,old,new') && e('0'); // 解决bug状态为resolve的bug
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -26,4 +25,3 @@ $bug = new bugTest();
r($bug->batchUpdateObject($bugIDList, $title[$bugIDList[0]], $type[$bugIDList[0]], $bugIDList[0])) && p('0:field,old,new;1:field,old,new') && e('type,codeerror,config;title,BUG1,批量修改bug一'); // 测试批量修改bug1
r($bug->batchUpdateObject($bugIDList, $title[$bugIDList[1]], $type[$bugIDList[1]], $bugIDList[1])) && p('0:field,old,new;1:field,old,new') && e('type,config,install;title,BUG2,批量修改bug二'); // 测试批量修改bug2
r($bug->batchUpdateObject($bugIDList, $title[$bugIDList[2]], $type[$bugIDList[2]], $bugIDList[2])) && p('0:field,old,new;1:field,old,new') && e('type,install,security;title,BUG3,批量修改bug三'); // 测试批量修改bug3
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php'; su('admin');
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
/**
@@ -28,4 +27,3 @@ r($bug->closeObject($bugIDList[2])) && p('0:field,old,new;1:field,old,new') && e
r($bug->closeObject($bugIDList[3])) && p('0:field,old,new;1:field,old,new') && e('assignedTo,dev1,closed;status,resolved,closed'); // 测试关闭状态为resolved的bug52
r($bug->closeObject($bugIDList[4])) && p('0:field,old,new;1:field,old,new') && e('assignedTo,dev1,closed;status,active,closed'); // 测试关闭状态为closed的bug81
r($bug->closeObject($bugIDList[5])) && p('0:field,old,new;1:field,old,new') && e('assignedTo,dev1,closed;status,active,closed'); // 测试关闭状态为closed的bug82
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -33,4 +32,3 @@ r($bug->confirmTest($bugIDlist[1],$bug3)) && p('0:field,old,new;1:field,old,new'
r($bug->confirmTest($bugIDlist[2],$bug4)) && p('0:field,old,new') && e('assignedTo,admin,user95'); // 确认已确认的bug
r($bug->confirmTest($bugIDlist[3],$bug5)) && p('0:field,old,new;1:field,old,new') && e('status,resolved,active;pri,3,2'); // 确认优先级变化的bug
r($bug->confirmTest($bugIDlist[4],$bug8)) && p('0:field,old,new') && e('status,closed,active'); // 确认bug
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -53,4 +52,3 @@ r($bug->createObject($b_notitle)) && p('title:0') && e('『Bug标题
r($bug->createObject($b_nobuild)) && p('openedBuild:0') && e('『影响版本』不能为空。'); // 测试不输入影响版本创建bug
r($bug->createObject($b_assign)) && p('assignedTo') && e('user92'); // 测试指派人bug
$db->restoreDB();
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -50,4 +49,3 @@ r($bug->createBugFromGitlabIssueTest($bug4, $executionID)) && p('severity')
r($bug->createBugFromGitlabIssueTest($bug5, $executionID)) && p('title:0') && e('『Bug标题』不能为空。'); // 测试创建没有标题 来源于gitlab issue的异常bug
r($bug->createBugFromGitlabIssueTest($bug1, $executionID)) && p('task') && e('0'); // 测试短时间内重复创建来源于gitlab issue的bug
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -33,4 +32,3 @@ r($bug->linkBugToBuildTest($bugIDList2, $buildList[1])) && p('bugs') && e('3,4'
r($bug->linkBugToBuildTest($bugIDList3, $buildList[2])) && p('bugs') && e('5,6'); // 把bug 5 6关联到build 5
r($bug->linkBugToBuildTest($bugIDList4, $buildList[0])) && p('bugs') && e('1,2,7,8'); // 把bug 5 6关联到build 1
r($bug->linkBugToBuildTest($bugIDList5, $buildList[0])) && p('bugs') && e('1,2,7,8,9,10'); // 把bug 5 6关联到build 1
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
su('admin');
/**
@@ -47,4 +46,3 @@ r($bug->resolveTest($bugIDList[4],$bug5)) && p('0:field,old,new;3:field,old,n
r($bug->resolveTest($bugIDList[5],$bug6)) && p('0:field,old,new;3:field,old,new') && e('resolvedBuild,,trunk;resolution,,postponed'); // 解决原因为延期处理的bug
r($bug->resolveTest($bugIDList[6],$bug7)) && p('0:field,old,new;3:field,old,new') && e('resolvedBuild,,trunk;resolution,,willnotfix'); // 解决原因为不予解决的bug
r($bug->resolveTest($bugIDList[7],$bug51)) && p('0:field,old,new;3:field,old,new') && e('resolvedBuild,,trunk;confirmed,0,1'); // 解决已解决的bug
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php'; su('admin');
include dirname(dirname(dirname(__FILE__))) . '/class/bug.class.php';
$db->switchDB();
/**
@@ -32,4 +31,3 @@ r($bug->updateObject($projectIdList[0], $t_uptype)) && p('0:field,old,new')
r($bug->updateObject($projectIdList[0], $t_typetitle)) && p('0:field,old,new;1:field,old,new') && e('title,john,jack;type,config,install'); // 测试更新bug名称和类型
r($bug->updateObject($projectIdList[0], $t_untitle)) && p() && e('没有数据更新'); // 测试不更改bug名称
r($bug->updateObject($projectIdList[0], $t_untype)) && p() && e('没有数据更新'); // 测试不更改bug类型
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/build.class.php';
$db->switchDB();
su('admin');
/**
@@ -24,4 +23,3 @@ $build = new buildTest();
r($build->batchUnlinkBugTest($buildIDList[0],$bugs)) && p('1:bugs,project') && e(',11');//批量解除项目版本bug
r($build->batchUnlinkBugTest($buildIDList[1],$bugs)) && p('11:bugs,execution') && e(',101');//批量解除执行版本bug
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/build.class.php';
$db->switchDB();
su('admin');
/**
@@ -23,4 +22,3 @@ $build = new buildTest();
r($build->batchUnlinkStoryTest($buildIDList[0],$stories)) && p('1:stories,project') && e(',11'); //批量解除项目版本需求
r($build->batchUnlinkStoryTest($buildIDList[1],$stories)) && p('11:stories,execution') && e(',101'); //批量解除执行版本需求
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/build.class.php';
$db->switchDB();
su('admin');
/**
@@ -43,4 +42,3 @@ r($build->createTest($executionIDList[0], $noName)) && p('name:0') &
r($build->createTest($executionIDList[0], $noProduct)) && p('product:0') && e('『产品』不能为空。'); //产品为空测试
r($build->createTest($executionIDList[0], $noBuilder)) && p('builder:0') && e('『构建者』不能为空。'); //构建者为空测试
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/build.class.php';
$db->switchDB();
su('admin');
/**
@@ -30,4 +29,3 @@ r($build->linkBugTest($buildIDList[0], $nomalBuglink)) && p('1:bugs,project')
r($build->linkBugTest($buildIDList[1], $nomalBuglink)) && p('11:bugs,execution') && e(',311,301,101');//执行版本链接bug
r($build->linkBugTest($buildIDList[0], $noBuglink)) && p('1:bugs') && e(',311,301,'); //不传bugID
//
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/build.class.php';
$db->switchDB();
su('admin');
/**
@@ -28,4 +27,3 @@ r($build->linkStoryTest($buildIDList[0], $nomalStorylink)) && p('1:stories,proje
r($build->linkStoryTest($buildIDList[1], $nomalStorylink)) && p('11:stories,execution') && e(',2,4,101');
r($build->linkStoryTest($buildIDList[0], $noStorylink)) && p('1:stories') && e('');
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/build.class.php';
$db->switchDB();
su('admin');
/**
@@ -24,4 +23,3 @@ $build = new buildTest();
r($build->unlinkBugTest($buildIDList[0],$bugs,$bugs[0])) && p('1:bugs,project') && e(',311,11'); //项目版本解除bug
r($build->unlinkBugTest($buildIDList[1],$bugs,$bugs[1])) && p('11:bugs,execution') && e(',301,101'); //执行版本解除bug
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/build.class.php';
$db->switchDB();
su('admin');
/**
@@ -23,4 +22,3 @@ $build = new buildTest();
r($build->unlinkStoryTest($buildIDList[0],$stories,$stories[0])) && p('1:stories,project') && e(',4,11'); //解除项目版本需求
r($build->unlinkStoryTest($buildIDList[1],$stories,$stories[1])) && p('11:stories,execution') && e(',2,101'); //解除执行版本需求
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/build.class.php';
$db->switchDB();
su('admin');
/**
@@ -35,4 +34,3 @@ r($build->updateTest($buildIDList[0], $pathBuild)) && p('1:field,old,new')
r($build->updateTest($buildIDList[0], $noName)) && p('name:0') && e('『名称编号』不能为空。'); //名称为空测试
r($build->updateTest($buildIDList[0], $noBuilder)) && p('builder:0') && e('『构建者』不能为空。'); //构建者为空测试
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/build.class.php';
$db->switchDB();
su('admin');
/**
@@ -37,4 +36,3 @@ r($executionLink) && p('311:resolvedBuild') && e('1'); //执行版本修
r($noResolvedByLink) && p('302:resolvedBy') && e(''); //不设置解决人
r($noBugs) && p() && e('0'); //不设置bugID
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
$db->switchDB();
su('admin');
/**
@@ -37,4 +36,3 @@ r($total) && p() && e('12'); // 添加两
r($cases) && p('561:title,type') && e('测试导入添加1,performance'); // 添加数据之后查询新加用例的名称,用例类型
r($cases) && p('562:title,type') && e('测试导入添加2,unit'); // 添加数据之后查询新加用例的名称,用例类型
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
$db->switchDB();
su('admin');
/**
@@ -38,4 +37,3 @@ r($result2) && p('name') && e('测试用例库名称'); //测试添加的
r($result2) && p('desc') && e('测试用例库描述'); //测试添加的描述信息
r($result3) && p('name:0') && e('『名称』已经有『测试用例库名称』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); //测试名称是空时候添加
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
$db->switchDB();
su('admin');
/**
@@ -42,4 +41,3 @@ r($total) && p() && e('12'); //添加
r($cases) && p('561:title,keywords') && e('测试导入添加1,keywords1'); //添加数据之后查询新加用例的名称,关键字
r($cases) && p('562:title,keywords') && e('测试导入添加2,keywords2'); //添加数据之后查询新加用例的名称,关键字
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
$db->switchDB();
su('admin');
/**
@@ -20,4 +19,3 @@ $lib = $caselib->deleteTest(201);
r($lib) && p('deleted') && e('1'); //测试删除之后deleted值是否为1
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/caselib.class.php';
$db->switchDB();
su('admin');
/**
@@ -31,4 +30,3 @@ r($lib1) && p('name:0') && e('『name』不能为空。'); //测试更新名称
r($lib2) && p('name') && e('测试修改名称'); //测试更新之后名称信息
r($lib2) && p('desc') && e('测试修改描述'); //测试更新之后描述信息
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/company.class.php';
$db->switchDB();
su('admin');
/**
@@ -40,4 +39,3 @@ r($company->updateObject($companyID, $changeWebsite)) && p('website') && e('ww
r($company->updateObject($companyID, $changeBackyard)) && p('backyard') && e('https://'); // 修改公司网址前缀
r($company->updateObject($companyID, $changeGuest)) && p('guest') && e('1'); // 修改公司游客访问控制
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/compile.class.php';
$db->switchDB();
su('admin');
/**
@@ -19,4 +18,3 @@ pid=1
$compile = new compileTest();
r($compile->createByJobTest('1', '123')) && p('0:name') && e('这是一个Job1'); //检查是否可以拿到通过id为1的job数据创建的compile
r($compile->createByJobTest('3', '123')) && p('0:name') && e('0'); //检查是否可以拿到通过不存在的job数据创建的compile
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/cron.class.php';
$db->switchDB();
su('admin');
/**
@@ -25,4 +24,3 @@ $cronInfo = $tester->cron->getById($cronID);
r($result) && p() && e('1'); //更新定时任务状态之后查看返回值
r($cronInfo) && p('status') && e('stop'); //更新定时任务状态之后查看状态值
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/cron.class.php';
$db->switchDB();
su('admin');
/**
@@ -24,4 +23,3 @@ $cronInfo = $tester->cron->getById($cronID);
r($result) && p() && e('1'); // 更新之后查看返回值是否是1
r($cronInfo) && p('status') && e('running'); // 更新之后查看状态值是否是running
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/cron.class.php';
$db->switchDB();
su('admin');
/**
@@ -36,4 +35,3 @@ r($result1[0]) && p() && e('『命令』不能为空'); //命
r($result2) && p('command,type') && e('test comand,zentao');//添加之后对比添加数据信息
r($result2) && p('m,h,dom,mon,dow') && e('55,23,30,12,6'); //添加之后对比添加数据信息
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/cron.class.php';
$db->switchDB();
su('admin');
/**
@@ -30,4 +29,3 @@ $tester->dao->update(TABLE_CONFIG)->set('id')->eq($id)->where( 'id')->eq($config
r($config1) && p('value') && e('stop'); //修改配置项之后查看更新信息
r($config2) && p('value') && e('run'); //修改配置项之后查看更新信息
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/cron.class.php';
$db->switchDB();
su('admin');
/**
@@ -23,4 +22,3 @@ $parse = $cron->parseCronTest($crons);
r($parse) && p('19:command') && e('moduleName=measurement&methodName=execCrontabQueue');//获取id为19的定时任务的定时信息和命令信息
r($parse) && p('15:command') && e('moduleName=execution&methodName=computeTaskEffort'); //获取id为15的定时任务的定时信息和命令信息
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/cron.class.php';
$db->switchDB();
su('admin');
/**
@@ -37,4 +36,3 @@ r($result1[0]) && p() && e('『命令』不能为空'); //命
r($result2) && p('command,type') && e('test comand,zentao');//更新之后对比更新数据信息
r($result2) && p('m,h,dom,mon,dow') && e('55,23,30,12,6'); //更新之后对比更新数据信息
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/custom.class.php';
$db->switchDB();
su('admin');
/**
@@ -35,4 +34,3 @@ r($custom->deleteItemsTest($paramString[2])) && p() && e('0'); //测试参数
r($custom->deleteItemsTest($paramString[3])) && p() && e('0'); //测试参数为lang,key,section
r($custom->deleteItemsTest($paramString[4])) && p() && e('0'); //测试参数为lang,key,section,module
r($custom->deleteItemsTest($paramString[5])) && p() && e('0'); //测试参数为lang,key,section,module,vision
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/custom.class.php';
$db->switchDB();
su('admin');
/**
@@ -48,4 +47,3 @@ r($custom->prepareSQLTest($paramString[2], $method[1])) && p() &&
r($custom->prepareSQLTest($paramString[3], $method[1])) && p() && e('0'); //测试method为delete,paramString参数为lang,key,section
r($custom->prepareSQLTest($paramString[4], $method[1])) && p() && e('0'); //测试method为delete,paramString参数为lang,key,section,module
r($custom->prepareSQLTest($paramString[5], $method[1])) && p() && e('0'); //测试method为delete,paramString参数为lang,key,section,module,vision
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/custom.class.php';
$db->switchDB();
su('admin');
/**
@@ -147,4 +146,3 @@ r($custom->saveRequiredFieldsTest($moduleName[5], $requiredFields['testcaseField
r($custom->saveRequiredFieldsTest($moduleName[5], $requiredFields['testcaseFields6'], $fieldsType[0])) && p('value') && e('stage,story,title,type'); //测试moduleName为testcase,requiredFields中的create,edit各存在多个值
r($custom->saveRequiredFieldsTest($moduleName[3], $requiredFields['taskFields6'], $fieldsType[2])) && p('value') && e('comment,realStarted,finishedDate,currentConsumed');//测试moduleName为task,requiredFields中的finish存在一个值
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/custom.class.php';
$db->switchDB();
su('admin');
/**
@@ -23,4 +22,3 @@ $custom = new customTest();
r($custom->setConceptTest($sprintConcept[0])) && p('id') && e('45'); //测试sprintConcept值为0,编辑为产品 - 项目
r($custom->setConceptTest($sprintConcept[1])) && p('id') && e('45'); //测试sprintConcept值为1,编辑为产品 - 迭代
r($custom->setConceptTest($sprintConcept[2])) && p('id') && e('45'); //测试sprintConcept值为2,编辑为产品 - 冲刺
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/custom.class.php';
$db->switchDB();
su('admin');
/**
@@ -34,4 +33,3 @@ r($custom->setItemTest($path[3], $value[0])) && p('lang,module,key,value') && e(
r($custom->setItemTest($path[3], $value[1])) && p('lang,module,key,value') && e('zh-cn,story,feature,'); //测试path中.出现的个数为3,value为空,能保存
r($custom->setItemTest($path[4], $value[0])) && p('lang,module,key,value') && e('zh-cn,story,feature,功能'); //测试path中.出现的个数为4,value正常存在,能保存
r($custom->setItemTest($path[4], $value[1])) && p('lang,module,key,value') && e('zh-cn,story,feature,'); //测试path中.出现的个数为5,value为空,能保存
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/custom.class.php';
$db->switchDB();
su('admin');
/**
@@ -27,4 +26,3 @@ $custom = new customTest();
r($custom->setURAndSRTest($SRName[0])) && p() && e('1'); //测试SRName值为空
r($custom->setURAndSRTest($SRName[1])) && p() && e('1'); //测试SRName值有一个
r($custom->setURAndSRTest($SRName[2])) && p() && e('1'); //测试SRName值有多个
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/custom.class.php';
$db->switchDB();
su('admin');
/**
@@ -31,4 +30,3 @@ r($custom->updateURAndSRTest($key[1], $SRName[0])) && p() && e('0');
r($custom->updateURAndSRTest($key[1], $SRName[1])) && p() && e('0'); //测试修改key为0,SRName值更改为软件需求
r($custom->updateURAndSRTest($key[1], $SRName[2])) && p() && e('0'); //测试修改key为0,SRName值更改为软件需求1
$db->restoreDB();
@@ -0,0 +1,30 @@
---
title: zt_project
author: auto_getbyid
version: "1.0"
fields:
- field: id
range: 1-5
- field: name
range: 项目1,项目2,迭代1,迭代2,迭代3
- field: type
range: project{2},sprint,waterfall,kanban
- field: status
range: doing{3},closed,doing
- field: parent
range: 0,0,1,1,2
- field: grade
range: 2{2},1{3}
- field: path
range: 1,2,`1,3`,`1,4`,`2,5`
prefix: ','
postfix: ','
- field: begin
range: 20230102 000000:0
type: timestamp
format: YY/MM/DD
- field: end
range: 20230212 000000:0
type: timestamp
format: YY/MM/DD
...
+113
View File
@@ -0,0 +1,113 @@
-- MySQL dump 10.19 Distrib 10.3.38-MariaDB, for debian-linux-gnu (x86_64)
--
-- Host: 127.0.0.1 Database: zentaopms01
-- ------------------------------------------------------
-- Server version 10.3.37-MariaDB-0ubuntu0.20.04.1
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `zt_project`
--
DROP TABLE IF EXISTS `zt_project`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `zt_project` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`project` mediumint(8) NOT NULL DEFAULT 0,
`model` char(30) NOT NULL,
`type` char(30) NOT NULL DEFAULT 'sprint',
`lifetime` char(30) NOT NULL DEFAULT '',
`budget` varchar(30) NOT NULL DEFAULT '0',
`budgetUnit` char(30) NOT NULL DEFAULT 'CNY',
`attribute` varchar(30) NOT NULL DEFAULT '',
`percent` float unsigned NOT NULL DEFAULT 0,
`milestone` enum('0','1') NOT NULL DEFAULT '0',
`output` text NOT NULL,
`auth` char(30) NOT NULL,
`parent` mediumint(8) unsigned NOT NULL DEFAULT 0,
`path` varchar(255) NOT NULL,
`grade` tinyint(3) unsigned NOT NULL,
`name` varchar(90) NOT NULL,
`code` varchar(45) NOT NULL,
`hasProduct` tinyint(1) unsigned NOT NULL DEFAULT 1,
`begin` date NOT NULL,
`end` date NOT NULL,
`realBegan` date NOT NULL,
`realEnd` date NOT NULL,
`days` smallint(5) unsigned NOT NULL,
`status` varchar(10) NOT NULL,
`subStatus` varchar(30) NOT NULL DEFAULT '',
`pri` enum('1','2','3','4') NOT NULL DEFAULT '1',
`desc` mediumtext NOT NULL,
`version` smallint(6) NOT NULL,
`parentVersion` smallint(6) NOT NULL,
`planDuration` int(11) NOT NULL,
`realDuration` int(11) NOT NULL,
`openedBy` varchar(30) NOT NULL DEFAULT '',
`openedDate` datetime NOT NULL,
`openedVersion` varchar(20) NOT NULL,
`lastEditedBy` varchar(30) NOT NULL DEFAULT '',
`lastEditedDate` datetime NOT NULL,
`closedBy` varchar(30) NOT NULL DEFAULT '',
`closedDate` datetime NOT NULL,
`canceledBy` varchar(30) NOT NULL DEFAULT '',
`canceledDate` datetime NOT NULL,
`suspendedDate` date NOT NULL,
`PO` varchar(30) NOT NULL DEFAULT '',
`PM` varchar(30) NOT NULL DEFAULT '',
`QD` varchar(30) NOT NULL DEFAULT '',
`RD` varchar(30) NOT NULL DEFAULT '',
`team` varchar(90) NOT NULL,
`acl` char(30) NOT NULL DEFAULT 'open',
`whitelist` text NOT NULL,
`order` mediumint(8) unsigned NOT NULL,
`vision` varchar(10) NOT NULL DEFAULT 'rnd',
`division` enum('0','1') NOT NULL DEFAULT '1',
`displayCards` smallint(6) NOT NULL DEFAULT 0,
`fluidBoard` enum('0','1') NOT NULL DEFAULT '0',
`multiple` enum('0','1') NOT NULL DEFAULT '1',
`colWidth` smallint(4) NOT NULL DEFAULT 264,
`minColWidth` smallint(4) NOT NULL DEFAULT 200,
`maxColWidth` smallint(4) NOT NULL DEFAULT 384,
`deleted` enum('0','1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `parent` (`parent`),
KEY `begin` (`begin`),
KEY `end` (`end`),
KEY `status` (`status`),
KEY `acl` (`acl`),
KEY `order` (`order`)
) ENGINE=InnoDB AUTO_INCREMENT=751 DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `zt_project`
--
LOCK TABLES `zt_project` WRITE;
/*!40000 ALTER TABLE `zt_project` DISABLE KEYS */;
INSERT INTO `zt_project` VALUES (1,0,'','project','','0','CNY','',0,'0','','',0,',1,',2,'项目1','',1,'2023-01-02','2023-02-12','0000-00-00','0000-00-00',0,'doing','','1','',0,0,0,0,'','0000-00-00 00:00:00','','','0000-00-00 00:00:00','','0000-00-00 00:00:00','','0000-00-00 00:00:00','0000-00-00','','','','','','open','',0,'rnd','1',0,'0','1',264,200,384,'0'),(2,0,'','project','','0','CNY','',0,'0','','',0,',2,',2,'项目2','',1,'2023-01-02','2023-02-12','0000-00-00','0000-00-00',0,'doing','','1','',0,0,0,0,'','0000-00-00 00:00:00','','','0000-00-00 00:00:00','','0000-00-00 00:00:00','','0000-00-00 00:00:00','0000-00-00','','','','','','open','',0,'rnd','1',0,'0','1',264,200,384,'0'),(3,0,'','sprint','','0','CNY','',0,'0','','',1,',1,3,',1,'迭代1','',1,'2023-01-02','2023-02-12','0000-00-00','0000-00-00',0,'doing','','1','',0,0,0,0,'','0000-00-00 00:00:00','','','0000-00-00 00:00:00','','0000-00-00 00:00:00','','0000-00-00 00:00:00','0000-00-00','','','','','','open','',0,'rnd','1',0,'0','1',264,200,384,'0'),(4,0,'','waterfall','','0','CNY','',0,'0','','',1,',1,4,',1,'迭代2','',1,'2023-01-02','2023-02-12','0000-00-00','0000-00-00',0,'closed','','1','',0,0,0,0,'','0000-00-00 00:00:00','','','0000-00-00 00:00:00','','0000-00-00 00:00:00','','0000-00-00 00:00:00','0000-00-00','','','','','','open','',0,'rnd','1',0,'0','1',264,200,384,'0'),(5,0,'','kanban','','0','CNY','',0,'0','','',2,',2,5,',1,'迭代3','',1,'2023-01-02','2023-02-12','0000-00-00','0000-00-00',0,'doing','','1','',0,0,0,0,'','0000-00-00 00:00:00','','','0000-00-00 00:00:00','','0000-00-00 00:00:00','','0000-00-00 00:00:00','0000-00-00','','','','','','open','',0,'rnd','1',0,'0','1',264,200,384,'0');
/*!40000 ALTER TABLE `zt_project` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2023-02-23 15:18:07
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/dept.class.php';
$db->switchDB();
su('admin');
/**
@@ -20,4 +19,3 @@ $deptID = '11';
$dept = new deptTest();
r($dept->deleteTest($deptID)) && p() && e('99'); //删除后统计数量
$db->restoreDB();
-2
View File
@@ -2,7 +2,6 @@
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/dept.class.php';
$db->switchDB();
su('admin');
/**
@@ -29,4 +28,3 @@ r($dept->manageChildTest('', $depts, $count[0])) && p('1')
r($dept->manageChildTest('', $depts, $count[1])) && p() && e('3'); //无父级部门下添加子级部门统计
r($dept->manageChildTest($parentDeptID, $depts = array(), $count[0])) && p() && e('0'); //无部门名称
$db->restoreDB();

Some files were not shown because too many files have changed in this diff Show More