Merge branch '15.0.beta3' of https://gitlab.zcorp.cc/easycorp/zentaopms into 15.0.beta3

This commit is contained in:
wangyidong
2021-04-26 17:32:31 +08:00
34 changed files with 179 additions and 41 deletions
+2 -2
View File
@@ -54,8 +54,8 @@
$methodName = 'view';
if($module == 'caselib')
{
$methodName = 'libview';
$module = 'testsuite';
$methodName = 'view';
$module = 'caselib';
}
if(isset($config->action->customFlows[$action->objectType]))
{
+2 -1
View File
@@ -15,7 +15,8 @@ $(function()
}
else
{
var lang = config.clientLang;
var lang = config.clientLang;
blockTitle = $blockParams.find('#title').val();
if(lang.indexOf('zh') >= 0)
{
if(blockTitle.indexOf(preValue) >= 0)
+1 -1
View File
@@ -544,7 +544,7 @@ function notice()
if($('#openedBuild').find('option').length <= 1)
{
var html = '';
if($('#execution').length == 0 || $('#execution').val() == '')
if($('#execution').length == 0 || $('#execution').val() == 0)
{
var branch = $('#branch').val();
if(typeof(branch) == 'undefined') branch = 0;
+1 -1
View File
@@ -117,7 +117,7 @@
</tr>
<?php if($product->type != 'normal'):?>
<tr>
<th><?php echo sprintf($lang->product->branch, $lang->product->branchName[$product->name]);?></th>
<th><?php echo sprintf($lang->product->branch, $lang->product->branchName[$product->type]);?></th>
<td><?php if(!common::printLink('bug', 'browse', "productID=$bug->product&branch=$bug->branch", $branchName)) echo $branchName;?></td>
</tr>
<?php endif;?>
+11
View File
@@ -2044,6 +2044,13 @@ class execution extends control
if($unresolvedBugs->count) $tips .= sprintf($this->lang->execution->unresolvedBug, $unresolvedBugs->count);
if($tips) $tips = $this->lang->execution->unfinishedExecution . $tips;
$type = $this->dao->select('type')->from(TABLE_EXECUTION)->where('id')->eq($executionID)->fetch('type');
if($type == 'stage')
{
if($tips) $tips = str_replace($this->lang->executionCommon, $this->lang->project->stage, $tips);
$this->lang->execution->confirmDelete = str_replace($this->lang->executionCommon, $this->lang->project->stage, $this->lang->execution->confirmDelete);
}
echo js::confirm($tips . sprintf($this->lang->execution->confirmDelete, $this->executions[$executionID]), $this->createLink('execution', 'delete', "executionID=$executionID&confirm=yes"));
exit;
}
@@ -2817,6 +2824,10 @@ class execution extends control
$this->fetch('file', 'export2' . $this->post->fileType, $_POST);
}
$this->loadModel('project');
$project = $this->project->getByID($this->session->project);
if($project->model == 'waterfall') $this->lang->executionCommon = $this->lang->project->stage;
$this->view->fileName = (in_array($status, array('all', 'undone')) ? $this->lang->execution->$status : $this->lang->execution->statusList[$status]) . $this->lang->executionCommon;
$this->display();
+12 -4
View File
@@ -69,6 +69,14 @@ class executionModel extends model
/* Unset story, bug, build and testtask if type is ops. */
$execution = $this->getByID($executionID);
if($execution->type == 'stage')
{
global $lang;
$this->loadModel('execution');
$lang->executionCommon = $lang->project->stage;
include $this->app->getModulePath('execution') . 'lang/' . $this->app->getClientLang() . '.php';
}
if($execution and $execution->lifetime == 'ops')
{
unset($this->lang->execution->menu->story);
@@ -387,10 +395,10 @@ class executionModel extends model
$this->app->loadLang('doc');
$lib = new stdclass();
$lib->execution = $executionID;
$lib->name = $this->lang->doclib->main['execution'];
$lib->type = 'execution';
$lib->main = '1';
$lib->acl = 'default';
$lib->name = $type == 'stage' ? str_replace($this->lang->executionCommon, $this->lang->project->stage, $this->lang->doclib->main['execution']) : $this->lang->doclib->main['execution'];
$lib->type = 'execution';
$lib->main = '1';
$lib->acl = 'default';
$this->dao->insert(TABLE_DOCLIB)->data($lib)->exec();
$whitelist = explode(',', $sprint->whitelist);
+1 -1
View File
@@ -91,7 +91,7 @@
<div class='btn-group'>
<button type='button' class='btn dropdown-toggle' data-toggle='dropdown' title="<?php echo $this->lang->more;?>"><i class='icon-more-alt'></i></button>
<ul class='dropdown-menu pull-right text-center' role='menu'>
<?php common::printIcon('project', 'manageProducts', "projectID=$project->id&projectID=$project->parent", $project, 'list', 'link', '', '', false, "data-group='project'", '', $project->id);?>
<?php common::printIcon('project', 'manageProducts', "projectID=$project->id", $project, 'list', 'link', '', '', false, "data-group='project'", '', $project->id);?>
<?php common::printIcon('project', 'whitelist', "projectID=$project->id&projectID=$project->parent&module=project", $project, 'list', 'shield-check', '', '', false, "data-group='project'", '', $project->id);?>
<?php if(common::hasPriv('project','delete')) echo html::a($this->createLink("project", "delete", "projectID=$project->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn' title='{$this->lang->project->delete}' data-group='my'");?>
</ul>
+2 -3
View File
@@ -81,9 +81,7 @@ $projectIDParam = $isProjectStory ? "projectID=$projectID&" : '';
</div>
<?php endif;?>
<?php
$this->moduleName = $this->app->rawModule;
$this->methodName = $this->app->rawMethod;
foreach(customModel::getFeatureMenu($this->moduleName, $this->methodName) as $menuItem)
foreach(customModel::getFeatureMenu($this->app->rawModule, $this->app->rawMethod) as $menuItem)
{
if(isset($menuItem->hidden)) continue;
if($menuItem->name == 'emptysr' && $storyType == 'story') continue;
@@ -341,6 +339,7 @@ $projectIDParam = $isProjectStory ? "projectID=$projectID&" : '';
<ul class='dropdown-menu'>
<?php
$class = $canBatchClose ? '' : "class='disabled'";
$productID = $this->app->openApp == 'project' ? 0 : $productID;
$actionLink = $this->createLink('story', 'batchClose', "productID=$productID&projectID=0&storyType=$storyType");
$misc = $canBatchClose ? "onclick=\"setFormAction('$actionLink')\"" : '';
echo "<li $class>" . html::a('#', $lang->close, '', $misc) . "</li>";
+1 -1
View File
@@ -26,7 +26,7 @@
</div>
<?php if($product->type == 'platform'):?>
<div class="detail">
<div class="detail-title"><strong><?php echo $lang->product->branchName['platform'];?></strong><a class="btn btn-link pull-right muted"><i class="icon icon-more icon-sm"></i></a></div>
<div class="detail-title"><strong><?php echo $lang->product->branchName['platform'];?></strong><a class="btn btn-link pull-right muted" href="<?php echo $this->createLink('branch', 'manage', "productID={$product->id}")?>"><i class="icon icon-more icon-sm"></i></a></div>
<div class="detail-content">
<ul class="clearfix branch-list">
<?php foreach($branches as $branchName):?>
+11
View File
@@ -25,6 +25,17 @@ $(function()
$('#end').removeAttr('disabled');
}
});
$('#end').change(function()
{
var beginDate = $('#begin').val();
var endDate = $('#end').val();
var begin = new Date(beginDate.replace(/-/g,"/"));
var end = new Date(endDate.replace(/-/g,"/"));
var time = end.getTime() - begin.getTime();
var days = parseInt(time / (1000 * 60 * 60 * 24)) + 1;
if(days != $("input:radio[name='delta']:checked").val()) $("input:radio[name='delta']:checked").attr('checked',false);
})
});
function setCopyProject(copiedProgramID)
+11
View File
@@ -27,5 +27,16 @@ $(function()
}
});
$('#end').change(function()
{
var beginDate = $('#begin').val();
var endDate = $('#end').val();
var begin = new Date(beginDate.replace(/-/g,"/"));
var end = new Date(endDate.replace(/-/g,"/"));
var time = end.getTime() - begin.getTime();
var days = parseInt(time / (1000 * 60 * 60 * 24)) + 1;
if(days != $("input:radio[name='delta']:checked").val()) $("input:radio[name='delta']:checked").attr('checked',false);
})
$('#isCat').change();
});
+1 -1
View File
@@ -103,7 +103,7 @@
<div class='btn-group'>
<button type='button' class='btn dropdown-toggle' data-toggle='dropdown' title="<?php echo $this->lang->more;?>"><i class='icon-more-alt'></i></button>
<ul class='dropdown-menu pull-right text-center' role='menu'>
<?php common::printIcon('project', 'manageProducts', "projectID=$program->id&programID=$program->parent&from=browse", $program, 'list', 'link', '', '', '', "data-app='project'", '', $program->id);?>
<?php common::printIcon('project', 'manageProducts', "projectID=$program->id&from=browse", $program, 'list', 'link', '', '', '', "data-app='project'", '', $program->id);?>
<?php common::printIcon('project', 'whitelist', "projectID=$program->id&module=project&from=browse", $program, 'list', 'shield-check', '', '', '', "data-app='project'", '', $program->id);?>
<?php if(common::hasPriv('project','delete')) echo html::a($this->createLink("project", "delete", "projectID=$program->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn' title='{$this->lang->delete}' data-group='program'");?>
</ul>
+63 -6
View File
@@ -272,6 +272,30 @@ class project extends control
$this->loadModel('action')->create('project', $projectID, 'opened');
/* Link the plan stories. */
if(!empty($_POST['plans']))
{
foreach($_POST['plans'] as $planID)
{
$planStories = $planProducts = array();
$planStory = $this->loadModel('story')->getPlanStories($planID);
if(!empty($planStory))
{
foreach($planStory as $id => $story)
{
if($story->status == 'draft')
{
unset($planStory[$id]);
continue;
}
$planProducts[$story->id] = $story->product;
}
$planStories = array_keys($planStory);
$this->execution->linkStory($projectID, $planStories, $planProducts);
}
}
}
if($this->app->openApp == 'program')
{
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $this->createLink('program', 'browse')));
@@ -376,6 +400,14 @@ class project extends control
if($_POST)
{
$oldPlans = $this->dao->select('plan')->from(TABLE_PROJECTPRODUCT)->where('project')->eq($projectID)->fetchPairs('plan');
$oldPlanStories = $this->dao->select('t1.story')->from(TABLE_PROJECTSTORY)->alias('t1')
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.project=t2.project')
->where('t1.project')->eq($projectID)
->andWhere('t2.plan')->in(array_keys($oldPlans))
->fetchAll('story');
$diffResult = array_diff($oldPlans, $_POST['plans']);
$changes = $this->project->update($projectID);
if(dao::isError()) $this->send(array('result' => 'fail', 'message' => dao::getError()));
@@ -385,7 +417,33 @@ class project extends control
$this->action->logHistory($actionID, $changes);
}
/* Link the plan stories. */
if(!empty($_POST['plans']) and !empty($diffResult))
{
$this->dao->delete()->from(TABLE_PROJECTSTORY)->where('project')->eq($projectID)->andWhere('story')->in(array_keys($oldPlanStories))->exec();
foreach($_POST['plans'] as $planID)
{
$planStories = $planProducts = array();
$planStory = $this->loadModel('story')->getPlanStories($planID);
if(!empty($planStory))
{
foreach($planStory as $id => $story)
{
if($story->status == 'draft')
{
unset($planStory[$id]);
continue;
}
$planProducts[$story->id] = $story->product;
}
$planStories = array_keys($planStory);
$this->execution->linkStory($projectID, $planStories, $planProducts);
}
}
}
$locateLink = $this->session->projectList ? $this->session->projectList : inLink('view', "projectID=$projectID");
if($from == 'projectView') $locateLink = $this->createLink('project', 'view', "projectID=$projectID");
if($from == 'program') $locateLink = $this->createLink('program', 'browse');
if($from == 'programProject') $locateLink = $this->session->programProject ? $this->session->programProject : $this->createLink('program', 'project', "projectID=$projectID");
$this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $locateLink));
@@ -1441,13 +1499,12 @@ class project extends control
/**
* Manage products.
*
* @param int $projectID
* @param int $programID
* @param int $projectID
* @param string $from project|program|programproject
* @access public
* @return void
*/
public function manageProducts($projectID, $programID = 0, $from = 'project')
public function manageProducts($projectID, $from = 'project')
{
$this->loadModel('product');
$this->loadModel('program');
@@ -1486,9 +1543,9 @@ class project extends control
$this->project->setMenu($projectID);
}
$allProducts = $this->program->getProductPairs($project->parent, 'assign', 'noclosed');
$linkedProducts = $this->product->getProducts($project->id);
$linkedBranches = array();
$allProducts = $this->program->getProductPairs($project->parent, 'assign', 'noclosed');
$linkedProducts = $this->product->getProducts($project->id);
$linkedBranches = array();
/* If the story of the product which linked the project, you don't allow to remove the product. */
$unmodifiableProducts = array();
+6
View File
@@ -75,6 +75,12 @@ function computeWorkDays(currentID)
{
beginDate = $('#begin').val();
endDate = $('#end').val();
var begin = new Date(beginDate.replace(/-/g,"/"));
var end = new Date(endDate.replace(/-/g,"/"));
var time = end.getTime() - begin.getTime();
var days = parseInt(time / (1000 * 60 * 60 * 24)) + 1;
if(days != $("input:radio[name='delta']:checked").val()) $("input:radio[name='delta']:checked").attr('checked',false);
}
if(beginDate && endDate)
+1 -1
View File
@@ -1381,7 +1381,7 @@ class projectModel extends model
echo "<div class='btn-group'>";
echo "<button type='button' class='btn dropdown-toggle' data-toggle='context-dropdown' title='{$this->lang->more}'><i class='icon-more-alt'></i></button>";
echo "<ul class='dropdown-menu pull-right text-center' role='menu'>";
common::printIcon('project', 'manageProducts', "projectID=$project->id&programID=$programID", $project, 'list', 'link', '', 'btn-action', '', "data-app=project", $this->lang->project->manageProducts, $project->id);
common::printIcon('project', 'manageProducts', "projectID=$project->id", $project, 'list', 'link', '', 'btn-action', '', "data-app=project", $this->lang->project->manageProducts, $project->id);
if($this->config->systemMode == 'new') common::printIcon('project', 'whitelist', "projectID=$project->id&module=project&from=$from", $project, 'list', 'shield-check', '', 'btn-action', '', "data-app=project", '', $project->id);
if(common::hasPriv('project','delete')) echo html::a(inLink("delete", "projectID=$project->id"), "<i class='icon-trash'></i>", 'hiddenwin', "class='btn btn-action' title='{$this->lang->project->delete}'");
echo "</ul>";
+1 -1
View File
@@ -104,7 +104,7 @@
echo $this->buildOperateMenu($project, 'view');
echo "<div class='divider'></div>";
common::printIcon('project', 'edit', $params, $project, 'button', 'edit', '', '', '', '', $lang->edit);
common::printIcon('project', 'edit', $params . '&from=projectView', $project, 'button', 'edit', '', '', '', '', $lang->edit);
common::printIcon('project', 'delete', $params, $project, 'button', 'trash', 'hiddenwin', '', '', '', $lang->delete);
}
?>
+1
View File
@@ -193,6 +193,7 @@ class projectrelease extends control
public function view($releaseID, $type = 'story', $link = 'false', $param = '', $orderBy = 'id_desc', $recTotal = 0, $recPerPage = 100, $pageID = 1)
{
$this->session->set('buildList', $this->app->getURI(true), 'execution');
$this->session->set('storyList', $this->app->getURI(true), $this->app->openApp);
$this->loadModel('story');
$this->loadModel('bug');
+1 -1
View File
@@ -146,7 +146,7 @@
if(common::hasPriv('story', 'batchClose'))
{
$closeURL = $this->createLink('story', 'batchClose', "productID=$release->product");
$closeURL = $this->createLink('story', 'batchClose');
echo html::a("###", $lang->story->batchClose, '', "onclick='setFormAction(\"$closeURL\", \"\", this)' class='btn'");
}
?>
+1
View File
@@ -3,6 +3,7 @@ $lang->repo->common = 'Repo';
$lang->repo->browse = 'View';
$lang->repo->viewRevision = 'View Revision';
$lang->repo->product = 'Product';
$lang->repo->execution = $lang->execution->common;
$lang->repo->create = 'Create';
$lang->repo->createAction = 'Create Repo';
$lang->repo->maintain = 'Repo List';
+1
View File
@@ -3,6 +3,7 @@ $lang->repo->common = 'Repo';
$lang->repo->browse = 'View';
$lang->repo->viewRevision = 'View Revision';
$lang->repo->product = 'Product';
$lang->repo->execution = $lang->execution->common;
$lang->repo->create = 'Create';
$lang->repo->maintain = 'Repo List';
$lang->repo->edit = 'Edit';
+1
View File
@@ -3,6 +3,7 @@ $lang->repo->common = 'Référentiel';
$lang->repo->browse = 'Aff';
$lang->repo->viewRevision = 'Aff Modifs';
$lang->repo->product = 'Product';
$lang->repo->execution = $lang->execution->common;
$lang->repo->create = 'Créer';
$lang->repo->createAction = 'Créer Ref';
$lang->repo->maintain = 'Liste Ref';
+1
View File
@@ -3,6 +3,7 @@ $lang->repo->common = 'Repo';
$lang->repo->browse = 'Xem';
$lang->repo->viewRevision = 'Xem Revision';
$lang->repo->product = 'Product';
$lang->repo->execution = $lang->execution->common;
$lang->repo->create = 'Tạo';
$lang->repo->createAction = 'Tạo Repo';
$lang->repo->maintain = 'Repo danh sách';
+1 -1
View File
@@ -3,7 +3,7 @@ $lang->repo->common = '代码';
$lang->repo->browse = '浏览';
$lang->repo->viewRevision = '查看修订';
$lang->repo->product = '所属产品';
$lang->repo->execution = '所属' . $lang->executionCommon;
$lang->repo->execution = '所属' . $lang->execution->common;
$lang->repo->create = '创建';
$lang->repo->maintain = '版本库列表';
$lang->repo->edit = '编辑';
+1
View File
@@ -237,6 +237,7 @@ class repoModel extends model
$data = fixer::input('post')
->setIf($this->post->SCM == 'Gitlab', 'password', $this->post->gitlabToken)
->setIf($this->post->SCM == 'Gitlab', 'client', $this->post->gitlabHost)
->setIf($this->post->SCM == 'Gitlab', 'extra', $this->post->gitlabProject)
->skipSpecial('path,client,account,password')
->setDefault('product', '')
->join('product', ',')
+1 -1
View File
@@ -48,7 +48,7 @@
</tr>
<tr class='gitlab hide'>
<th><?php echo $lang->repo->gitlabProject;?></th>
<td><?php echo html::select('gitlabProject', $projects, '', "class='form-control chosen'");?>
<td><?php echo html::select('gitlabProject', $projects, $repo->extra, "class='form-control chosen'");?>
</tr>
<tr>
<th><?php echo $lang->repo->name; ?></th>
+15 -8
View File
@@ -1195,18 +1195,25 @@ class story extends control
$this->view->position[] = html::a($this->createLink('execution', 'story', "executionID=$execution->id"), $execution->name);
$this->view->title = $execution->name . $this->lang->colon . $this->lang->story->batchClose;
}
/* The stories of my. */
else
{
$this->lang->story->menu = $this->lang->my->menu;
$this->lang->story->menuOrder = $this->lang->my->menuOrder;
$this->loadModel('my')->setMenu();
if($this->app->openApp == 'project')
{
$this->project->setMenu($this->session->project);
$this->view->title = $this->lang->story->batchEdit;
}
else
{
$this->lang->story->menu = $this->lang->my->menu;
$this->lang->story->menuOrder = $this->lang->my->menuOrder;
$this->loadModel('my')->setMenu();
if($from == 'work') $this->lang->my->menu->work['subModule'] = 'story';
if($from == 'contribute') $this->lang->my->menu->contribute['subModule'] = 'story';
if($from == 'work') $this->lang->my->menu->work['subModule'] = 'story';
if($from == 'contribute') $this->lang->my->menu->contribute['subModule'] = 'story';
$this->view->position[] = html::a($this->createLink('my', 'story'), $this->lang->my->story);
$this->view->title = $this->lang->story->batchEdit;
$this->view->position[] = html::a($this->createLink('my', 'story'), $this->lang->my->story);
$this->view->title = $this->lang->story->batchEdit;
}
}
/* Judge whether the editedStories is too large and set session. */
+1 -1
View File
@@ -677,7 +677,7 @@ class task extends control
/* Set menu. */
$execution = $this->execution->getById($task->execution);
$this->execution->setMenu($execution->id);
if($this->app->openApp == 'execution') $this->execution->setMenu($execution->id);
$this->executeHooks($taskID);
+1 -1
View File
@@ -541,7 +541,7 @@ class testcaseModel extends model
->andWhere('t2.deleted')->eq(0)
->beginIF($auto != 'skip' and $auto != 'unit')->andWhere('t2.auto')->ne('unit')->fi()
->beginIF($auto == 'unit')->andWhere('t2.auto')->eq('unit')->fi()
->orderBy($orderBy)->page($pager)->fetchAll();
->orderBy($orderBy)->page($pager)->fetchAll('id');
}
/**
+2 -1
View File
@@ -202,7 +202,8 @@
<td>
<?php
$class = isonlybody() ? 'showinonlybody' : 'iframe';
if(isset($case->storyTitle)) echo html::a($this->createLink('story', 'view', "storyID=$case->story", '', true), "#$case->story:$case->storyTitle", '', "class=$class data-width='80%'");
$param = $this->app->openApp == 'project' ? "&version=0&projectID={$this->session->project}" : '';
if(isset($case->storyTitle)) echo html::a($this->createLink('story', 'view', "storyID=$case->story" . $param, '', true), "#$case->story:$case->storyTitle", '', "class=$class data-width='80%'");
if($case->story and $case->storyStatus == 'active' and $case->latestStoryVersion > $case->storyVersion)
{
echo "(<span class='warning'>{$lang->story->changed}</span> ";
+1 -1
View File
@@ -100,7 +100,7 @@ class testtask extends control
/* Set menu. */
$productID = $this->product->saveState($productID, $this->products);
if($branch === '') $branch = (int)$this->cookie->preBranch;
$this->loadModel('qa')->setMenu($this->products, $productID, $branch);
$this->loadModel('qa')->setMenu($this->products, $productID, $branch, $type);
/* Load pager. */
$this->app->loadClass('pager', $static = true);
+5 -1
View File
@@ -53,8 +53,12 @@ function loadList(type, id)
{
link = createLink('review', 'ajaxGetUserReviews', param);
}
else if(type == 'feedback')
{
link = createLink('feedback', 'ajaxGetUserFeedback', param);
}
if(type == 'bug' || type == 'task' || type == 'story' || type == 'issue' || type == 'risk' || type == 'testtask' || type == 'review' )
if(type == 'bug' || type == 'task' || type == 'story' || type == 'issue' || type == 'risk' || type == 'testtask' || type == 'review' || type == 'feedback')
{
$.get(link, function(data, status)
{
+15 -2
View File
@@ -765,12 +765,25 @@ class user extends control
*/
public function login($referer = '', $from = '')
{
/* Check if you can operating on the folder. */
$canModifyDIR = true;
if($this->user->checkTmp() === false)
{
$canModifyDIR = false;
$floderPath = $this->app->tmpRoot;
}
elseif(!is_dir($this->app->dataRoot) or substr(base_convert(@fileperms($this->app->dataRoot),10,8),-4) != '0777')
{
$canModifyDIR = false;
$floderPath = $this->app->dataRoot;
}
if(!$canModifyDIR)
{
echo "<html><head><meta charset='utf-8'></head>";
echo "<body><table align='center' style='width:700px; margin-top:100px; border:1px solid gray; font-size:14px;'><tr><td style='padding:8px'>";
echo "<div style='margin-bottom:8px;'>不能创建临时目录,请确认目录<strong style='color:#ed980f'>{$this->app->tmpRoot}</strong>是否存在并有操作权限。</div>";
echo "<div>Can't create tmp directory, make sure the directory <strong style='color:#ed980f'>{$this->app->tmpRoot}</strong> exists and has permission to operate.</div>";
echo "<div style='margin-bottom:8px;'>不能创建临时目录,请确认目录<strong style='color:#ed980f'>{$floderPath}</strong>是否存在并有操作权限。</div>";
echo "<div>Can't create tmp directory, make sure the directory <strong style='color:#ed980f'>{$floderPath}</strong> exists and has permission to operate.</div>";
die("</td></tr></table></body></html>");
}
$this->setReferer($referer);