Merge branch 'master' into story

This commit is contained in:
sunguangming
2024-05-09 15:04:07 +08:00
5881 changed files with 215209 additions and 408159 deletions
+14 -14
View File
@@ -9,14 +9,14 @@ $config->admin->menuGroup['system'] = array('custom|mode', 'backup', 'cron',
$config->admin->menuGroup['company'] = array('dept', 'company', 'user', 'group', 'tutorial');
$config->admin->menuGroup['switch'] = array('admin|setmodule');
$config->admin->menuGroup['model'] = array('auditcl', 'stage', 'design', 'cmcl', 'reviewcl', 'custom|required', 'custom|set', 'custom|flow', 'custom|code', 'custom|percent','custom|estimate', 'custom|hours', 'subject', 'process', 'activity', 'zoutput', 'classify', 'holiday', 'reviewsetting');
$config->admin->menuGroup['feature'] = array('custom|set', 'custom|product', 'custom|execution', 'custom|required', 'custom|kanban', 'approvalflow', 'meetingroom', 'custom|browsestoryconcept', 'custom|kanban', 'sqlbuilder', 'report', 'custom|limittaskdate');
$config->admin->menuGroup['feature'] = array('custom|set', 'custom|product', 'custom|execution', 'custom|required', 'custom|kanban', 'approvalflow', 'measurement', 'meetingroom', 'custom|browsestoryconcept', 'custom|kanban', 'sqlbuilder', 'report', 'custom|limittaskdate', 'measurement');
$config->admin->menuGroup['template'] = array('custom|set', 'baseline');
$config->admin->menuGroup['message'] = array('mail', 'webhook', 'sms', 'message');
$config->admin->menuGroup['dev'] = array('dev', 'entry', 'editor');
$config->admin->menuGroup['extension'] = array('extension');
$config->admin->menuGroup['convert'] = array('convert');
$config->admin->menuGroup['platform'] = array('system', 'repo', 'account', 'host', 'serverroom', 'ops', 'tree', 'domain', 'deploy', 'service');
$config->admin->menuGroup['ai'] = array('ai|adminindex', 'ai|prompts', 'ai|promptview', 'ai|conversations', 'ai|models', 'ai|modelcreate', 'ai|modelview', 'ai|modeledit', 'ai|editmodel', 'ai|promptassignrole', 'ai|promptselectdatasource', 'ai|promptsetpurpose', 'ai|promptsettargetform', 'ai|promptfinalize', 'ai|promptedit', 'ai|miniprograms', 'ai|createminiprogram', 'ai|editminiprogram', 'ai|configuredminiprogram', 'ai|editminiprogramcategory', 'ai|miniprogramview');
$config->admin->menuGroup['ai'] = array('ai|adminindex', 'ai|prompts', 'ai|promptview', 'ai|conversations', 'ai|models', 'ai|modelcreate', 'ai|modelview', 'ai|modeledit', 'ai|editmodel', 'ai|promptassignrole', 'ai|promptselectdatasource', 'ai|promptsetpurpose', 'ai|promptsettargetform', 'ai|promptfinalize', 'ai|promptedit', 'ai|miniprograms', 'ai|createminiprogram', 'ai|editminiprogram', 'ai|configuredminiprogram', 'ai|editminiprogramcategory', 'ai|miniprogramview', 'ai|assistants', 'ai|assistantcreate', 'ai|assistantview', 'ai|assistantedit');
$config->admin->menuModuleGroup['model']['custom|set'] = array('project', 'issue', 'risk', 'opportunity', 'nc');
$config->admin->menuModuleGroup['model']['custom|required'] = array('project', 'build');
@@ -41,20 +41,20 @@ $config->admin->plugins[198]->name = '需求池插件';
$config->admin->plugins[198]->abstract = '本插件为禅道需求池管理插件,包括:创建需求池 需求池权限管理 收集需求并向需求池录入需求 记录需求提出人信息 评审需求 拆分用户需求、研发需求 需求跟踪矩阵';
$config->admin->plugins[198]->viewLink = 'https://www.zentao.net/extension-viewExt-198.html';
$config->admin->plugins[27] = new stdClass();
$config->admin->plugins[27]->name = 'Excel导出/导入';
$config->admin->plugins[27]->abstract = '安装该插件可以支持Excel导出和任务、需求、Bug、用例导入功能。更新提示:新增任务、需求、Bug的excel导入功能。';
$config->admin->plugins[27]->viewLink = 'https://www.zentao.net/extension-viewExt-27.html';
$config->admin->plugins[191] = new stdClass();
$config->admin->plugins[191]->name = 'Bug归因';
$config->admin->plugins[191]->abstract = '通过Bug归因功能,可以确定Bug产生的根本原因,并追溯产生人员的责任比例,然后从根本上来解决问题。';
$config->admin->plugins[191]->viewLink = 'https://www.zentao.net/extension-viewExt-191.html';
$config->admin->plugins[26] = new stdClass();
$config->admin->plugins[26]->name = '甘特图';
$config->admin->plugins[26]->abstract = '禅道甘特图插件 运用此插件可以查看甘特图,维护任务关系。';
$config->admin->plugins[26]->viewLink = 'https://www.zentao.net/extension-viewExt-26.html';
$config->admin->plugins[250] = new stdClass();
$config->admin->plugins[250]->name = '项目集甘特图';
$config->admin->plugins[250]->abstract = '禅道甘特图插件 运用此插件可以查看甘特图,维护任务关系。';
$config->admin->plugins[250]->viewLink = 'https://www.zentao.net/extension-viewExt-250.html';
$config->admin->plugins[30] = new stdClass();
$config->admin->plugins[30]->name = '日志日历';
$config->admin->plugins[30]->abstract = '运用此插件可以实现工作日志的添加、编辑、查看、删除、导出等功能,方便用户管理工作日志。';
$config->admin->plugins[30]->viewLink = 'https://www.zentao.net/extension-viewExt-30.html';
$config->admin->plugins[196] = new stdClass();
$config->admin->plugins[196]->name = '限制每天每人最大任务工时';
$config->admin->plugins[196]->abstract = '限制每天录入录入工时上限。';
$config->admin->plugins[196]->viewLink = 'https://www.zentao.net/extension-viewExt-196.html';
$config->admin->plugins[194] = new stdClass();
$config->admin->plugins[194]->name = '应用巡检报告';
+22 -20
View File
@@ -55,6 +55,7 @@ class admin extends control
*/
public function ajaxSetZentaoData()
{
session_write_close();
if(helper::isIntranet()) return $this->send(array('result' => 'ignore'));
if($this->admin->checkInternet())
@@ -62,15 +63,15 @@ class admin extends control
$lastSyncDate = !empty($this->config->zentaoWebsite->lastSyncDate) ? $this->config->zentaoWebsite->lastSyncDate : '';
$nextWeek = date('Y-m-d', strtotime('-7 days'));
if(empty($lastSyncDate) || $lastSyncDate <= $nextWeek)
{
$this->adminZen->syncExtensions('plugin', 6);
$this->adminZen->syncExtensions('patch', 5);
$this->adminZen->syncDynamics(3);
$this->adminZen->syncPublicClasses(3);
$needSync = empty($lastSyncDate) || $lastSyncDate <= $nextWeek;
$zentaoData = $this->adminZen->getZentaoData();
$this->loadModel('setting')->setItem('system.common.zentaoWebsite.lastSyncDate', date('Y-m-d'));
}
if($needSync || empty($zentaoData->plugins)) $this->adminZen->syncExtensions('plugin', 6);
if($needSync || empty($zentaoData->patches)) $this->adminZen->syncExtensions('patch', 5);
if($needSync || empty($zentaoData->dynamics)) $this->adminZen->syncDynamics(3);
if($needSync || empty($zentaoData->classes)) $this->adminZen->syncPublicClasses(3);
if($needSync) $this->loadModel('setting')->setItem('system.common.zentaoWebsite.lastSyncDate', date('Y-m-d'));
}
return $this->send(array('result' => 'success'));
@@ -187,7 +188,7 @@ class admin extends control
return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'load' => true));
}
$this->view->title = $this->lang->admin->safe->common . $this->lang->colon . $this->lang->admin->safe->set;
$this->view->title = $this->lang->admin->safe->common . $this->lang->hyphen . $this->lang->admin->safe->set;
$this->view->gdInfo = function_exists('gd_info') ? gd_info() : array();
$this->display();
}
@@ -201,7 +202,7 @@ class admin extends control
*/
public function checkWeak()
{
$this->view->title = $this->lang->admin->safe->common . $this->lang->colon . $this->lang->admin->safe->checkWeak;
$this->view->title = $this->lang->admin->safe->common . $this->lang->hyphen . $this->lang->admin->safe->checkWeak;
$this->view->weakUsers = $this->loadModel('user')->getWeakUsers();
$this->display();
}
@@ -534,16 +535,17 @@ class admin extends control
{
if($this->config->vision == 'lite' && !in_array($menuKey, $this->config->admin->liteMenuList)) continue;
$data[] = array(
'id' => $menuKey,
'name' => $menuKey,
'content' => array('html' => "<div class='flex items-center my-1.5'><img class='mr-2' src='static/svg/admin-{$menuKey}.svg'/> {$menuGroup['name']}</div>"),
'text' => '',
'type' => 'item',
'disabled' => $menuGroup['disabled'],
'url' => $menuGroup['disabled'] || $currentMenuKey == $menuKey ? '' : $menuGroup['link'],
'active' => $currentMenuKey == $menuKey,
'rootClass' => 'admin-menu-item',
'attrs' => array('disabled' => $menuGroup['disabled'])
'id' => $menuKey,
'name' => $menuKey,
'content' => array('html' => "<div class='flex items-center my-1.5'><img class='mr-2' src='static/svg/admin-{$menuKey}.svg'/> {$menuGroup['name']}</div>"),
'text' => $menuGroup['name'],
'titleClass' => 'hidden',
'type' => 'item',
'disabled' => $menuGroup['disabled'],
'url' => $menuGroup['disabled'] || $currentMenuKey == $menuKey ? '' : $menuGroup['link'],
'active' => $currentMenuKey == $menuKey,
'rootClass' => 'admin-menu-item',
'attrs' => array('disabled' => $menuGroup['disabled'])
);
}
+1 -1
View File
@@ -6,7 +6,7 @@ function redirectSetting(event)
const $box = $target.closest('.setting-box');
if($box.length == 0) return false;
if(!$box.hasClass('disabled') && $box.data('url') != undefined) openUrl($box.data('url'));
if(!$box.hasClass('disabled') && $box.data('url') != undefined) loadPage($box.data('url'));
}
$(function()
+1 -1
View File
@@ -11,7 +11,7 @@ function changeModule($target)
}
};
function checkModule()
function checkModule(event)
{
changeModule($(event.target));
}
+5 -3
View File
@@ -123,6 +123,7 @@ $lang->admin->setModule->OA = 'OA';
$lang->admin->setModule->deploy = 'Deploy';
$lang->admin->setModule->traincourse = 'Traincourse';
$lang->admin->setModule->setCode = 'Code';
$lang->admin->setModule->measrecord = 'Measrecord';
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = 'Sicherheits-Regeln';
@@ -213,8 +214,9 @@ $lang->admin->productFeature['max'][] = 'Opportunity/Risk/Issues Management';
$lang->admin->ai = new stdclass();
$lang->admin->ai->model = 'Language Models';
$lang->admin->ai->conversation = 'Conversations';
$lang->admin->ai->miniPrograms = 'Mini Programs';
$lang->admin->ai->prompt = 'Prompts';
$lang->admin->ai->conversation = 'AI Conversations';
$lang->admin->ai->miniPrograms = 'AI Mini Programs';
$lang->admin->ai->prompt = 'AI Prompts';
$lang->admin->ai->assistant = 'AI Assistant';
include dirname(__FILE__) . '/menu.php';
+5 -3
View File
@@ -123,6 +123,7 @@ $lang->admin->setModule->OA = 'OA';
$lang->admin->setModule->deploy = 'Deploy';
$lang->admin->setModule->traincourse = 'Traincourse';
$lang->admin->setModule->setCode = 'Code';
$lang->admin->setModule->measrecord = 'Measrecord';
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = 'Security Policy';
@@ -213,8 +214,9 @@ $lang->admin->productFeature['max'][] = 'Opportunity/Risk/Issues Management';
$lang->admin->ai = new stdclass();
$lang->admin->ai->model = 'Language Models';
$lang->admin->ai->conversation = 'Conversations';
$lang->admin->ai->miniPrograms = 'Mini Programs';
$lang->admin->ai->prompt = 'Prompts';
$lang->admin->ai->conversation = 'AI Conversations';
$lang->admin->ai->miniPrograms = 'AI Mini Programs';
$lang->admin->ai->prompt = 'AI Prompts';
$lang->admin->ai->assistant = 'AI Assistant';
include dirname(__FILE__) . '/menu.php';
+5 -3
View File
@@ -123,6 +123,7 @@ $lang->admin->setModule->OA = 'OA';
$lang->admin->setModule->deploy = 'Deploy';
$lang->admin->setModule->traincourse = 'Traincourse';
$lang->admin->setModule->setCode = 'Code';
$lang->admin->setModule->measrecord = 'Measrecord';
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = 'Politique de sécurité';
@@ -213,8 +214,9 @@ $lang->admin->productFeature['max'][] = 'Opportunity/Risk/Issues Management';
$lang->admin->ai = new stdclass();
$lang->admin->ai->model = 'Language Models';
$lang->admin->ai->conversation = 'Conversations';
$lang->admin->ai->miniPrograms = 'Mini Programs';
$lang->admin->ai->prompt = 'Prompts';
$lang->admin->ai->conversation = 'AI Conversations';
$lang->admin->ai->miniPrograms = 'AI Mini Programs';
$lang->admin->ai->prompt = 'AI Prompts';
$lang->admin->ai->assistant = 'AI Assistant';
include dirname(__FILE__) . '/menu.php';
+10 -3
View File
@@ -234,15 +234,22 @@ $lang->admin->menuList->ai['link'] = 'ai|adminindex';
$lang->admin->menuList->ai['order'] = 60;
$lang->admin->menuList->ai['subMenu']['models'] = array('link' => "{$lang->admin->ai->model}|ai|models|", 'alias' => 'editmodel,modelcreate,modelview,modeledit');
$lang->admin->menuList->ai['menuOrder']['15'] = 'models';
$lang->admin->menuList->ai['menuOrder']['5'] = 'models';
if($config->vision != 'or')
{
$lang->admin->menuList->ai['subMenu']['prompts'] = array('link' => "{$lang->admin->ai->prompt}|ai|prompts|", 'alias' => 'promptview,promptassignrole,promptselectdatasource,promptsetpurpose,promptsettargetform,promptfinalize,promptedit');
$lang->admin->menuList->ai['subMenu']['miniPrograms'] = array('link' => "{$lang->admin->ai->miniPrograms}|ai|miniPrograms|", 'alias' => 'miniprograms,createminiprogram,editminiprogram,configuredminiprogram,editminiprogramcategory,miniprogramview');
$lang->admin->menuList->ai['menuOrder']['5'] = 'prompts';
$lang->admin->menuList->ai['menuOrder']['10'] = 'miniPrograms';
$lang->admin->menuList->ai['menuOrder']['10'] = 'prompts';
$lang->admin->menuList->ai['menuOrder']['15'] = 'miniPrograms';
$lang->admin->menuList->ai['dividerMenu'] = ',prompts,';
}
if($config->edition != 'open') {
$lang->admin->menuList->ai['subMenu']['assistants'] = array('link' => "{$lang->admin->ai->assistant}|ai|assistants|", 'alias' => 'assistantview,assistantcreate,assistantedit');
$lang->admin->menuList->ai['menuOrder']['20'] = 'assistants';
}
if($config->edition != 'max' and $config->edition != 'ipd')
-104
View File
@@ -1,104 +0,0 @@
<?php
/**
* The admin module English file of ZenTaoPMS.
*
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
* @license ZPL (http://zpl.pub/page/zplv12.html)
* @author Nguyễn Quốc Nho <quocnho@gmail.com>
* @package admin
* @version $Id: vi.php 4460 2013-02-26 02:28:02Z quocnho@gmail.com $
* @link https://www.zentao.net
*/
$lang->admin->index = 'Trang quản trị';
$lang->admin->checkDB = 'Kiểm tra CSDL';
$lang->admin->sso = 'Zdoo';
$lang->admin->ssoAction = 'Liên kết Zdoo';
$lang->admin->safeIndex = 'Bảo mật';
$lang->admin->checkWeak = 'Kiểm tra độ yếu mật khẩu';
$lang->admin->certifyMobile = 'Xác thực di động của bạn';
$lang->admin->certifyEmail = 'Xác thực email của bạn';
$lang->admin->ztCompany = 'Xác thực doanh nghiệp của bạn';
$lang->admin->captcha = 'Mã xác thực';
$lang->admin->getCaptcha = 'Gửi Mã xác thực';
$lang->admin->register = 'Register';
$lang->admin->api = 'API';
$lang->admin->log = 'Nhật ký';
$lang->admin->setting = 'Thiết lập';
$lang->admin->pluginRecommendation = 'Recommended plug-ins';
$lang->admin->zentaoInfo = 'ZenTao information';
$lang->admin->officialAccount = 'WeChat Official Account';
$lang->admin->publicClass = 'Public class';
$lang->admin->days = 'Ngày hợp lệ';
$lang->admin->resetPWDByMail = 'Reset the password via the email';
$lang->admin->followUs = 'Follow Us';
$lang->admin->followUsContent = 'Check out ZenTao news, events, and support at any time';
$lang->admin->info = new stdclass();
$lang->admin->info->version = 'Phiên bản hiện tại là %s. ';
$lang->admin->info->links = ' Bạn có thể ghé thăm liên kết sau';
$lang->admin->info->account = 'Tài khoản ZenTao của bạn là %s.';
$lang->admin->info->log = 'Nhật ký vượt quá ngày hợp lệ sẽ bị xóa và bạn phải chay Cron.';
$lang->admin->notice = new stdclass();
$lang->admin->notice->register = "Chú ý: Bạn chưa đăng ký trên trang web chính thức của ZenTao (www.zentao.pm). %s sau đó nhận Bản tin và nâng cấp mới nhất của ZenTao.";
$lang->admin->notice->ignore = "Bỏ qua";
$lang->admin->notice->int = "『%s』 nên là số nguyên dương.";
$lang->admin->registerNotice = new stdclass();
$lang->admin->registerNotice->common = 'Kết nối tài khoản';
$lang->admin->registerNotice->caption = 'Đăng ký cộng đồng ZenTao';
$lang->admin->registerNotice->click = 'Đăng ký';
$lang->admin->registerNotice->lblAccount = '>= 3 chữ và số';
$lang->admin->registerNotice->lblPasswd = '>= 6 chữ và số';
$lang->admin->registerNotice->submit = 'Gửi';
$lang->admin->registerNotice->submitHere = 'submitHere';
$lang->admin->registerNotice->bind = "Kết nối với tài khoản đang tồn tại";
$lang->admin->registerNotice->success = "Bạn đã đăng ký!";
$lang->admin->bind = new stdclass();
$lang->admin->bind->caption = 'Liên kết tài khoản';
$lang->admin->bind->success = "Tài khoản đã được kết nối!";
$lang->admin->bind->submit = "Trói buộc";
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = 'Chính sách bảo mật';
$lang->admin->safe->set = 'Thiết lập mật khẩu';
$lang->admin->safe->password = 'Độ mạnh mật khẩu';
$lang->admin->safe->weak = 'Mật khẩu yếu thường dùng';
$lang->admin->safe->reason = 'Loại';
$lang->admin->safe->checkWeak = 'Quét mật khẩu yếu';
$lang->admin->safe->changeWeak = 'Chủ động thay đổi mật khẩu yếu';
$lang->admin->safe->loginCaptcha = 'Login using CAPTCHA';
$lang->admin->safe->modifyPasswordFirstLogin = 'Chủ động thay đổi mật khẩu sau lần đăng nhập đầu tiên';
$lang->admin->safe->modeList[0] = 'Yếu';
$lang->admin->safe->modeList[1] = 'Trung bình';
$lang->admin->safe->modeList[2] = 'Mạnh';
$lang->admin->safe->modeRuleList[1] = ' >= 6 chữ hoa, chữ thường và số';
$lang->admin->safe->modeRuleList[2] = ' >= 10 chữ hoa, chữ thường, số và ký tự đặc biệt.';
$lang->admin->safe->reasonList['weak'] = 'Mật khẩu yếu thường dùng';
$lang->admin->safe->reasonList['account'] = 'Giống tài khoản';
$lang->admin->safe->reasonList['mobile'] = 'Giống số di động';
$lang->admin->safe->reasonList['phone'] = 'Giống số điện thoại';
$lang->admin->safe->reasonList['birthday'] = 'Giống ngày sinh';
$lang->admin->safe->modifyPasswordList[1] = 'Có';
$lang->admin->safe->modifyPasswordList[0] = 'Không';
$lang->admin->safe->loginCaptchaList[1] = 'Yes';
$lang->admin->safe->loginCaptchaList[0] = 'No';
$lang->admin->safe->noticeMode = 'Mật khẩu sẽ được kiểm tra khi người dùng đăng nhập hoặc người dùng thêm hoặc sửa.';
$lang->admin->safe->noticeStrong = '';
$lang->admin->safe->noticeGd = 'Your server does not have GD module installed, you cannot use the Captcha function, Please use it after installation.';
$lang->admin->mon = 'month';
$lang->admin->day = 'day';
$lang->admin->updateDynamics = 'updateDynamics';
$lang->admin->updatePatch = 'updatePatch';
$lang->admin->upgradeRecommend = 'upgradeRecommend';
include dirname(__FILE__) . '/menu.php';
+5 -3
View File
@@ -123,6 +123,7 @@ $lang->admin->setModule->OA = '办公';
$lang->admin->setModule->deploy = '运维';
$lang->admin->setModule->traincourse = '学堂';
$lang->admin->setModule->setCode = '代号';
$lang->admin->setModule->measrecord = '度量';
$lang->admin->safe = new stdclass();
$lang->admin->safe->common = '安全策略';
@@ -213,8 +214,9 @@ $lang->admin->productFeature['max'][] = '严格权限控制,方式灵活安全
$lang->admin->ai = new stdclass();
$lang->admin->ai->model = '语言模型';
$lang->admin->ai->conversation = '会话';
$lang->admin->ai->miniPrograms = '小程序';
$lang->admin->ai->prompt = '提词';
$lang->admin->ai->conversation = 'AI 会话';
$lang->admin->ai->miniPrograms = 'AI 小程序';
$lang->admin->ai->prompt = 'AI 提词';
$lang->admin->ai->assistant = 'AI 助手';
include dirname(__FILE__) . '/menu.php';
+35 -3
View File
@@ -111,6 +111,7 @@ class adminModel extends model
$menuKey = $this->getMenuKey();
if(empty($menuKey)) return;
$this->setSwitcher($menuKey);
if(isset($this->lang->admin->menuList->$menuKey))
{
if(isset($this->lang->admin->menuList->{$menuKey}['subMenu']))
@@ -377,15 +378,16 @@ class adminModel extends model
* 检查网络。
* Check internet.
*
* @param string $url
* @param int $timeout
* @access public
* @return bool
*/
public function checkInternet($url = ''): bool
public function checkInternet(string $url = '', int $timeout = 1): bool
{
if(empty($url)) $url = $this->config->admin->apiSite;
$timeout = 1;
$curl = curl_init();
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
@@ -417,4 +419,34 @@ class adminModel extends model
if($firstUseDate) $firstUseDate = substr($firstUseDate, 0, 10);
return helper::getDateInterval($firstUseDate);
}
/**
* 获取1.5级下拉菜单。
* Set switcher.
*
* @param string $currentMenuKey
* @access public
* @return void
*/
public function setSwitcher(string $currentMenuKey = 'system')
{
if(empty($currentMenuKey)) return null;
$currentMenu = $this->lang->admin->menuList->$currentMenuKey;
$output = "<div class='btn-group header-btn'>";
$output .= "<button class='btn pull-right btn-link' data-toggle='dropdown'>";
$output .= "<span class='text'>{$currentMenu['name']}</span> ";
$output .= "<span class='caret'></span></button>";
$output .= "<ul class='dropdown-menu menu-hover-primary menu-active-primary' id='adminMenu'>";
foreach($this->lang->admin->menuList as $menuKey => $menuGroup)
{
if($this->config->vision == 'lite' and !in_array($menuKey, $this->config->admin->liteMenuList)) continue;
$class = $menuKey == $currentMenuKey ? "active" : '';
if($menuGroup['disabled']) $class .= ' disabled not-clear-menu';
$output .= "<li class='$class'>" . html::a($menuGroup['disabled'] ? '###' : $menuGroup['link'], "<img src='{$this->config->webRoot}static/svg/admin-{$menuKey}.svg'/>" . $menuGroup['name']) . "</li>";
}
$output .= "</ul></div>";
$this->lang->switcherMenu = $output;
}
}
+1 -1
View File
@@ -12,7 +12,7 @@ cid=1
include dirname(__FILE__, 5) . '/test/lib/init.php';
zdTable('user')->gen(5);
zenData('user')->gen(5);
su('admin');
global $tester;
+2 -2
View File
@@ -15,9 +15,9 @@ cid=1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/admin.class.php';
include dirname(__FILE__, 2) . '/lib/admin.unittest.class.php';
zdTable('user')->config('user')->gen(6);
zenData('user')->loadYaml('user')->gen(6);
global $config;
unset($config->safe->weak); // 防止数据库中设置的弱密码对单元测试造成影响,重置为空。
+2 -2
View File
@@ -11,9 +11,9 @@ cid=1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/admin.class.php';
include dirname(__FILE__, 2) . '/lib/admin.unittest.class.php';
zdTable('user')->gen(5);
zenData('user')->gen(5);
su('admin');
$admin = new adminTest();
+2 -2
View File
@@ -27,9 +27,9 @@ cid=1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/admin.class.php';
include dirname(__FILE__, 2) . '/lib/admin.unittest.class.php';
zdTable('user')->gen(5);
zenData('user')->gen(5);
su('admin');
$adminTester = new adminTest();
+2 -2
View File
@@ -37,9 +37,9 @@ cid=1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/admin.class.php';
include dirname(__FILE__, 2) . '/lib/admin.unittest.class.php';
zdTable('user')->gen(5);
zenData('user')->gen(5);
su('admin');
$admin = new adminTest();
+12 -2
View File
@@ -128,7 +128,9 @@ if($zentaoData->plugins)
{
foreach($zentaoData->plugins as $plugin)
{
$pluginDesc = preg_replace('/[[:cntrl:]]/mu', '', strip_tags($plugin->abstract));
if(!$plugin) continue;
$pluginDesc = empty($plugin->abstract) ? '' : preg_replace('/[[:cntrl:]]/mu', '', strip_tags($plugin->abstract));
$pluginItems[] = div
(
@@ -319,6 +321,7 @@ div
)
);
$isZeroDay = empty($dateUsed->year) && empty($dateUsed->month) && empty($dateUsed->day);
div
(
setClass('bg-white rounded-md ml-4 px-4'),
@@ -337,7 +340,14 @@ div
$lang->admin->zentaoUsed,
$buildUsed((int)$dateUsed->year, $lang->year),
$buildUsed((int)$dateUsed->month, $lang->admin->mon),
$buildUsed((int)$dateUsed->day, $lang->admin->day)
$buildUsed((int)$dateUsed->day, $lang->admin->day),
$isZeroDay ? span
(
setClass('bg-gray-100 rounded-md text-lg mx-1 px-1 py-0.5'),
0
) : null,
$isZeroDay ? $lang->admin->day : null
)
),
div
+6 -6
View File
@@ -277,17 +277,17 @@ class adminZen extends admin
if($this->config->edition == 'open')
{
$data->plugins = array(
$this->config->admin->plugins[27],
$this->config->admin->plugins[26],
$this->config->admin->plugins[30]
zget($this->config->admin->plugins, '27', ''),
zget($this->config->admin->plugins, '26', ''),
zget($this->config->admin->plugins, '30', '')
);
}
else
{
$data->plugins = array(
$this->config->admin->plugins[198],
$this->config->admin->plugins[194],
$this->config->admin->plugins[203]
zget($this->config->admin->plugins, '198', ''),
zget($this->config->admin->plugins, '194', ''),
zget($this->config->admin->plugins, '203', '')
);
}
}