* add square page.
This commit is contained in:
@@ -135,6 +135,45 @@ class ai extends control
|
||||
$this->display();
|
||||
}
|
||||
|
||||
public function square($category = 'discovery', $recTotal = 0, $recPerPage = 15, $pageID = 1)
|
||||
{
|
||||
$this->app->loadClass('pager', true);
|
||||
$pager = new pager($recTotal, $recPerPage, $pageID);
|
||||
$collectedIDs = null;
|
||||
|
||||
if($category === 'collection')
|
||||
{
|
||||
$collectedIDs = $this->ai->getCollectedMiniProgramIDs($this->app->user->id, $pager);
|
||||
$miniPrograms = $this->ai->getMiniProgramsByID($collectedIDs);
|
||||
}
|
||||
else if($category === 'discovery')
|
||||
{
|
||||
|
||||
}
|
||||
else if($category === 'latest')
|
||||
{
|
||||
$miniPrograms = $this->ai->getMiniPrograms('', 'active', 'createdDate_desc', $pager);
|
||||
}
|
||||
else
|
||||
{
|
||||
$miniPrograms = $this->ai->getMiniPrograms($category, 'active', 'createdDate_desc', $pager);
|
||||
}
|
||||
|
||||
$this->view->collectedIDs = empty($collectedIDs) ? $this->ai->getCollectedMiniProgramIDs($this->app->user->id) : $collectedIDs;
|
||||
$this->view->category = $category;
|
||||
$this->view->categoryList = array_merge($this->lang->ai->miniPrograms->squareCategories, $this->lang->ai->miniPrograms->categoryList, $this->ai->getCustomCategory());
|
||||
$this->view->pager = $pager;
|
||||
$this->view->miniPrograms = $miniPrograms ?: array();
|
||||
$this->view->title = $this->lang->ai->miniPrograms->common;
|
||||
$this->display();
|
||||
}
|
||||
|
||||
public function collectMiniProgram($appID, $delete = 'false')
|
||||
{
|
||||
$this->ai->collectMiniProgram($this->app->user->id, $appID, $delete);
|
||||
return $this->send(array('status' => ($delete === 'true' ? '0' : '1')));
|
||||
}
|
||||
|
||||
/**
|
||||
* List mini programs.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,89 @@
|
||||
.miniprogram-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
|
||||
gap: 8px;
|
||||
background: #FCFDFE;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.miniprogram-card {
|
||||
position: relative;
|
||||
border-radius: 2px;
|
||||
border: 1px solid #EEE;
|
||||
background-color: #FCFDFE;
|
||||
height: 140px;
|
||||
padding: 16px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.program-content {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.program-text {
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
flex: auto;
|
||||
}
|
||||
|
||||
.program-text .title {
|
||||
margin-bottom: 16px;
|
||||
font-size: 13px;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.program-text .desc {
|
||||
font-size: 12px;
|
||||
color: #838A9D;
|
||||
display: -webkit-box;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
|
||||
.program-avatar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex: none;
|
||||
}
|
||||
|
||||
.program-actions {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex: none;
|
||||
}
|
||||
|
||||
.program-actions .badge {
|
||||
font-size: 12px;
|
||||
color: #313C52;
|
||||
border: 1px solid #DEDEDE;
|
||||
padding: 4px;
|
||||
border-radius: 3px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 20px;
|
||||
max-width: 120px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.table-footer {
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.btn-star {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 2px;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
$(function()
|
||||
{
|
||||
$('.btn-star').on('click', function()
|
||||
{
|
||||
const $btn = $(this);
|
||||
const url = $btn.data('url');
|
||||
$.get(url, function(response)
|
||||
{
|
||||
if(response.status == '1')
|
||||
{
|
||||
$btn.children('img').attr('src', 'static/svg/star.svg');
|
||||
$btn.data('url', $btn.data('url').replace('false', 'true'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$btn.children('img').attr('src', 'static/svg/star-empty.svg');
|
||||
$btn.data('url', $btn.data('url').replace('true', 'false'));
|
||||
}
|
||||
}, 'json');
|
||||
});
|
||||
});
|
||||
@@ -415,9 +415,12 @@ $lang->ai->miniPrograms->download = 'Download Zentao Client';
|
||||
$lang->ai->miniPrograms->category = 'Category';
|
||||
$lang->ai->miniPrograms->icon = 'Icon';
|
||||
$lang->ai->miniPrograms->desc = 'Introduction';
|
||||
$lang->ai->miniPrograms->categoryList = array('writing' => 'writing', 'statistics' => 'statistics', 'creative' => 'creative', 'raiders' => 'Guideline ', 'schedule' => 'schedule');
|
||||
$lang->ai->miniPrograms->categoryList = array('writing' => 'Writing', 'statistics' => 'Statistics', 'creative' => 'Creative', 'raiders' => 'Guideline ', 'schedule' => 'Schedule');
|
||||
$lang->ai->miniPrograms->modelList = array('openai-GPT35 ' => 'openai/GPT-3.5');
|
||||
$lang->ai->miniPrograms->allCategories = array('' => 'All categories');
|
||||
$lang->ai->miniPrograms->squareCategories = array('collection' => 'My collection', 'discovery' => 'Discovery', 'latest' => 'Latest');
|
||||
$lang->ai->miniPrograms->collect = 'Collect';
|
||||
$lang->ai->miniPrograms->more = 'More';
|
||||
$lang->ai->miniPrograms->iconModification = 'Icon modification';
|
||||
$lang->ai->miniPrograms->customBackground = 'Custom background Color';
|
||||
$lang->ai->miniPrograms->customIcon = 'Custom icon';
|
||||
|
||||
@@ -415,9 +415,12 @@ $lang->ai->miniPrograms->download = 'Download Zentao Client';
|
||||
$lang->ai->miniPrograms->category = 'Category';
|
||||
$lang->ai->miniPrograms->icon = 'Icon';
|
||||
$lang->ai->miniPrograms->desc = 'Introduction';
|
||||
$lang->ai->miniPrograms->categoryList = array('writing' => 'writing', 'statistics' => 'statistics', 'creative' => 'creative', 'raiders' => 'Guideline ', 'schedule' => 'schedule');
|
||||
$lang->ai->miniPrograms->categoryList = array('writing' => 'Writing', 'statistics' => 'Statistics', 'creative' => 'Creative', 'raiders' => 'Guideline ', 'schedule' => 'Schedule');
|
||||
$lang->ai->miniPrograms->modelList = array('openai-GPT35 ' => 'openai/GPT-3.5');
|
||||
$lang->ai->miniPrograms->allCategories = array('' => 'All categories');
|
||||
$lang->ai->miniPrograms->squareCategories = array('collection' => 'My collection', 'discovery' => 'Discovery', 'latest' => 'Latest');
|
||||
$lang->ai->miniPrograms->collect = 'Collect';
|
||||
$lang->ai->miniPrograms->more = 'More';
|
||||
$lang->ai->miniPrograms->iconModification = 'Icon modification';
|
||||
$lang->ai->miniPrograms->customBackground = 'Custom background Color';
|
||||
$lang->ai->miniPrograms->customIcon = 'Custom icon';
|
||||
|
||||
@@ -415,9 +415,12 @@ $lang->ai->miniPrograms->download = 'Download Zentao Client';
|
||||
$lang->ai->miniPrograms->category = 'Category';
|
||||
$lang->ai->miniPrograms->icon = 'Icon';
|
||||
$lang->ai->miniPrograms->desc = 'Introduction';
|
||||
$lang->ai->miniPrograms->categoryList = array('writing' => 'writing', 'statistics' => 'statistics', 'creative' => 'creative', 'raiders' => 'Guideline ', 'schedule' => 'schedule');
|
||||
$lang->ai->miniPrograms->categoryList = array('writing' => 'Writing', 'statistics' => 'Statistics', 'creative' => 'Creative', 'raiders' => 'Guideline ', 'schedule' => 'Schedule');
|
||||
$lang->ai->miniPrograms->modelList = array('openai-GPT35 ' => 'openai/GPT-3.5');
|
||||
$lang->ai->miniPrograms->allCategories = array('' => 'All categories');
|
||||
$lang->ai->miniPrograms->squareCategories = array('collection' => 'My collection', 'discovery' => 'Discovery', 'latest' => 'Latest');
|
||||
$lang->ai->miniPrograms->collect = 'Collect';
|
||||
$lang->ai->miniPrograms->more = 'More';
|
||||
$lang->ai->miniPrograms->iconModification = 'Icon modification';
|
||||
$lang->ai->miniPrograms->customBackground = 'Custom background Color';
|
||||
$lang->ai->miniPrograms->customIcon = 'Custom icon';
|
||||
|
||||
@@ -417,6 +417,9 @@ $lang->ai->miniPrograms->icon = '图标';
|
||||
$lang->ai->miniPrograms->desc = '简介';
|
||||
$lang->ai->miniPrograms->categoryList = array('writing' => '写作', 'statistics' => '统计', 'creative' => '创意', 'raiders' => '攻略', 'schedule' => '日程');
|
||||
$lang->ai->miniPrograms->allCategories = array('' => '所有分组');
|
||||
$lang->ai->miniPrograms->squareCategories = array('collection' => '我的收藏', 'discovery' => '发现', 'latest' => '最新');
|
||||
$lang->ai->miniPrograms->collect = '收藏';
|
||||
$lang->ai->miniPrograms->more = '更多';
|
||||
$lang->ai->miniPrograms->modelList = array('openai-gpt35' => 'OpenAI / GPT-3.5');
|
||||
$lang->ai->miniPrograms->iconModification = '图标修改';
|
||||
$lang->ai->miniPrograms->customBackground = '自定义背景色';
|
||||
|
||||
+51
-2
@@ -310,7 +310,22 @@ class aiModel extends model
|
||||
}
|
||||
|
||||
/**
|
||||
* Get mini program by app id.
|
||||
* Get mini programs by appid.
|
||||
*
|
||||
* @param array $id
|
||||
* @access public
|
||||
* @return object
|
||||
*/
|
||||
public function getMiniProgramsByID($ids)
|
||||
{
|
||||
return $this->dao->select('*')
|
||||
->from(TABLE_MINIPROGRAM)
|
||||
->where('id')->in($ids)
|
||||
->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get mini program by appid.
|
||||
*
|
||||
* @param string $id
|
||||
* @access public
|
||||
@@ -324,6 +339,40 @@ class aiModel extends model
|
||||
->fetch();
|
||||
}
|
||||
|
||||
public function getCollectedMiniProgramIDs($userID, $pager = null)
|
||||
{
|
||||
$programs = $this->dao->select('*')
|
||||
->from(TABLE_MINIPROGRAMSTAR)
|
||||
->where('userID')->eq($userID)
|
||||
->orderBy('createdDate_desc')
|
||||
->page($pager)
|
||||
->fetchAll('appID');
|
||||
return array_keys($programs);
|
||||
}
|
||||
|
||||
public function collectMiniProgram($userID, $appID, $delete = 'false')
|
||||
{
|
||||
if($delete === 'true')
|
||||
{
|
||||
$this->dao->delete()
|
||||
->from(TABLE_MINIPROGRAMSTAR)
|
||||
->where('userID')->eq($userID)
|
||||
->andWhere('appID')->eq($appID)
|
||||
->exec();
|
||||
return !dao::isError();
|
||||
}
|
||||
|
||||
$data = new stdClass();
|
||||
$data->appID = $appID;
|
||||
$data->userID = $userID;
|
||||
$data->createdDate = helper::now();
|
||||
|
||||
$this->dao->insert(TABLE_MINIPROGRAMSTAR)
|
||||
->data($data)
|
||||
->exec();
|
||||
return !dao::isError();
|
||||
}
|
||||
|
||||
public function getCustomCategory()
|
||||
{
|
||||
return $this->dao->select('`key`,`value`')
|
||||
@@ -401,7 +450,7 @@ class aiModel extends model
|
||||
->orderBy($order)
|
||||
->page($pager)
|
||||
->fetchAll();
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'miniProgram');
|
||||
$this->loadModel('common')->saveQueryCondition($this->dao->get(), 'miniprogram');
|
||||
return $progarms;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The ai mini programs view file of ai module of ZenTaoPMS.
|
||||
*
|
||||
@@ -11,7 +12,7 @@
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php'; ?>
|
||||
<?php
|
||||
$finalList = array_merge($categoryList, $lang->ai->miniPrograms->allCategories);
|
||||
$finalList = array_merge($categoryList, $lang->ai->miniPrograms->allCategories);
|
||||
?>
|
||||
<div id="mainMenu" class="clearfix">
|
||||
<div id="sidebarHeader">
|
||||
@@ -103,8 +104,8 @@
|
||||
<table class="main-table table has-sort-head table-fixed">
|
||||
<thead>
|
||||
<tr>
|
||||
<?php $vars = "category=$category&status=$status&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}";?>
|
||||
<th class="c-id" style="width: 70px;"><?php common::printOrderLink('id', $orderBy, $vars, 'ID');?></th>
|
||||
<?php $vars = "category=$category&status=$status&orderBy=%s&recTotal={$pager->recTotal}&recPerPage={$pager->recPerPage}"; ?>
|
||||
<th class="c-id" style="width: 70px;"><?php common::printOrderLink('id', $orderBy, $vars, 'ID'); ?></th>
|
||||
<th class="c-name" style="width: 30%;"><?= $lang->prompt->name; ?></th>
|
||||
<th class="c-status"><?= $lang->prompt->status; ?></th>
|
||||
<th class="c-category"><?= $lang->prompt->module; ?></th>
|
||||
@@ -127,9 +128,9 @@
|
||||
<td class="c-actions">
|
||||
<?php $isPublished = $miniProgram->published === '1'; ?>
|
||||
<?php
|
||||
echo $isPublished
|
||||
? "<button class='btn' disabled title='{$lang->ai->prompts->action->edit}'><i class='icon-edit text-primary'></i></button>"
|
||||
: "<a class='btn' title='{$lang->ai->prompts->action->edit}' href='{$this->createLink('ai', 'createMiniProgram', "appID=$miniProgram->id")}'><i class='icon-edit text-primary'></i></a>";
|
||||
echo $isPublished
|
||||
? "<button class='btn' disabled title='{$lang->ai->prompts->action->edit}'><i class='icon-edit text-primary'></i></button>"
|
||||
: "<a class='btn' title='{$lang->ai->prompts->action->edit}' href='{$this->createLink('ai', 'createMiniProgram', "appID=$miniProgram->id")}'><i class='icon-edit text-primary'></i></a>";
|
||||
?>
|
||||
<button
|
||||
class="btn iframe"
|
||||
@@ -156,9 +157,9 @@
|
||||
</tbody>
|
||||
</table>
|
||||
<div class='table-footer'>
|
||||
<div class="table-statistic"><?= sprintf($lang->ai->miniPrograms->summary, count($miniPrograms));?></div>
|
||||
<?php $pager->show('right', 'pagerjs');?>
|
||||
</div>
|
||||
<div class="table-statistic"><?= sprintf($lang->ai->miniPrograms->summary, count($miniPrograms)); ?></div>
|
||||
<?php $pager->show('right', 'pagerjs'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* The ai mini programs view file of ai module of ZenTaoPMS.
|
||||
*
|
||||
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
|
||||
* @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
|
||||
* @author Wenrui LI <liwenrui@easycorp.ltd>
|
||||
* @package ai
|
||||
* @link https://www.zentao.net
|
||||
*/
|
||||
?>
|
||||
<?php include '../../common/view/header.html.php'; ?>
|
||||
<div id="mainMenu">
|
||||
<div class="btn-toolbar pull-left">
|
||||
<?php if(count($categoryList) <= 9): ?>
|
||||
<?php foreach($categoryList as $key => $value): ?>
|
||||
<a href="<?= $this->createLink('ai', 'square', "category=$key"); ?>" class="btn btn-link<?php if($category === $key) echo ' btn-active-text'; ?>">
|
||||
<span class="text"><?= $value; ?></span>
|
||||
<?= $category === $key ? '<span class="label label-light label-badge" style="margin-left: 4px;">' . $pager->recTotal . '</span>' : ''; ?>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
<?php else : ?>
|
||||
<?php foreach(array_slice($categoryList, 0, 8) as $key => $value): ?>
|
||||
<a href="<?= $this->createLink('ai', 'square', "category=$key"); ?>" class="btn btn-link<?php if($category === $key) echo ' btn-active-text'; ?>">
|
||||
<span class="text"><?= $value; ?></span>
|
||||
<?= $category === $key ? '<span class="label label-light label-badge" style="margin-left: 4px;">' . $pager->recTotal . '</span>' : ''; ?>
|
||||
</a>
|
||||
<?php endforeach; ?>
|
||||
<div class="btn-group">
|
||||
<?php $moreCategoryList = array_slice($categoryList, 8); ?>
|
||||
<a class="btn btn-link" data-toggle="dropdown"><?= array_key_exists($category, $moreCategoryList) ? ($moreCategoryList[$category] . '<span class="label label-light label-badge" style="margin-left: 4px;">' . $pager->recTotal . '</span>') : $lang->ai->miniPrograms->more; ?><span class="caret"></span></a>
|
||||
<ul class="dropdown-menu">
|
||||
<?php foreach($moreCategoryList as $key => $value): ?>
|
||||
<li <?php if($category === $key) echo 'class="active"'; ?>><a href="<?= $this->createLink('ai', 'square', "category=$key"); ?>"><?= $value; ?></a></li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<div id="mainContent" class="main-row fade">
|
||||
<div class="miniprogram-container">
|
||||
<?php foreach($miniPrograms as $miniProgram) : ?>
|
||||
<div class="miniprogram-card">
|
||||
<div class="program-content">
|
||||
<div class="program-text">
|
||||
<header class="title">
|
||||
<?= $miniProgram->name; ?>
|
||||
</header>
|
||||
<div class="desc">
|
||||
<?= $miniProgram->desc; ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="program-avatar">
|
||||
<?php list($iconName, $iconTheme) = explode('-', $miniProgram->icon); ?>
|
||||
<button class="btn btn-icon" style="width: 46px; height: 46px; border-radius: 50%; display: flex; justify-content: center; align-items: center; border: 1px solid <?= $config->ai->miniPrograms->themeList[$iconTheme][1]; ?>; background-color: <?= $config->ai->miniPrograms->themeList[$iconTheme][0]; ?>">
|
||||
<?= $config->ai->miniPrograms->iconList[$iconName]; ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="program-actions">
|
||||
<div class="badge"><?= $categoryList[$miniProgram->category]; ?></div>
|
||||
<?php
|
||||
$star = in_array($miniProgram->id, $collectedIDs) ? 'star' : 'star-empty';
|
||||
$delete = $star === 'star' ? 'true' : 'false';
|
||||
?>
|
||||
<button class="btn btn-link btn-star" data-url="<?= $this->createLink('ai', 'collectMiniProgram', "appID={$miniProgram->id}&delete={$delete}"); ?>">
|
||||
<?= html::image("static/svg/{$star}.svg", "class='$star'");?>
|
||||
<?= $lang->ai->miniPrograms->collect; ?>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<div class='table-footer'>
|
||||
<div class="table-statistic"><?= sprintf($lang->ai->miniPrograms->summary, count($miniPrograms)); ?></div>
|
||||
<?php $pager->show('right', 'pagerjs'); ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php include '../../common/view/footer.html.php'; ?>
|
||||
@@ -24,6 +24,7 @@ $lang->review = new stdclass();
|
||||
$lang->milestone = new stdclass();
|
||||
$lang->qa = new stdclass();
|
||||
$lang->doc = new stdclass();
|
||||
$lang->ai = new stdclass();
|
||||
$lang->system = new stdclass();
|
||||
$lang->testcase = new stdclass();
|
||||
$lang->testtask = new stdclass();
|
||||
|
||||
@@ -181,6 +181,7 @@ $lang->kanban->common = 'Kanban';
|
||||
$lang->qa->common = 'QA';
|
||||
$lang->devops->common = 'DevOps';
|
||||
$lang->doc->common = 'Doc';
|
||||
$lang->ai->miniProgram = 'mini program';
|
||||
$lang->repo->common = 'Code Repo';
|
||||
$lang->repo->codeRepo = 'Code Repo';
|
||||
$lang->bi->common = 'BI';
|
||||
|
||||
@@ -181,6 +181,7 @@ $lang->kanban->common = 'Kanban';
|
||||
$lang->qa->common = 'QA';
|
||||
$lang->devops->common = 'DevOps';
|
||||
$lang->doc->common = 'Doc';
|
||||
$lang->ai->miniProgram = 'mini program';
|
||||
$lang->repo->common = 'Code Repo';
|
||||
$lang->repo->codeRepo = 'Code Repo';
|
||||
$lang->bi->common = 'BI';
|
||||
|
||||
@@ -181,6 +181,7 @@ $lang->kanban->common = 'Kanban';
|
||||
$lang->qa->common = 'QA';
|
||||
$lang->devops->common = 'DevOps';
|
||||
$lang->doc->common = 'Doc';
|
||||
$lang->ai->miniProgram = 'mini program';
|
||||
$lang->repo->common = 'Code Repo';
|
||||
$lang->repo->codeRepo = 'Code Repo';
|
||||
$lang->bi->common = 'BI';
|
||||
|
||||
@@ -9,6 +9,7 @@ $lang->navIcons['qa'] = "<i class='icon icon-test'></i>";
|
||||
$lang->navIcons['devops'] = "<i class='icon icon-devops'></i>";
|
||||
$lang->navIcons['kanban'] = "<i class='icon icon-kanban'></i>";
|
||||
$lang->navIcons['doc'] = "<i class='icon icon-doc'></i>";
|
||||
$lang->navIcons['ai'] = "<i class='icon icon-ztf'></i>";
|
||||
$lang->navIcons['bi'] = "<i class='icon icon-statistic'></i>";
|
||||
$lang->navIcons['system'] = "<i class='icon icon-group'></i>";
|
||||
$lang->navIcons['admin'] = "<i class='icon icon-cog-outline'></i>";
|
||||
@@ -23,6 +24,7 @@ $lang->navIconNames['qa'] = 'test';
|
||||
$lang->navIconNames['devops'] = 'devops';
|
||||
$lang->navIconNames['kanban'] = 'kanban';
|
||||
$lang->navIconNames['doc'] = 'doc';
|
||||
$lang->navIconNames['ai'] = 'ztf';
|
||||
$lang->navIconNames['bi'] = 'statistic';
|
||||
$lang->navIconNames['system'] = 'group';
|
||||
$lang->navIconNames['admin'] = 'cog-outline';
|
||||
@@ -56,6 +58,7 @@ $lang->mainNav->qa = "{$lang->navIcons['qa']} {$lang->qa->common}|qa|inde
|
||||
$lang->mainNav->devops = "{$lang->navIcons['devops']} DevOps|repo|maintain|";
|
||||
$lang->mainNav->kanban = "{$lang->navIcons['kanban']} {$lang->kanban->common}|kanban|space|";
|
||||
$lang->mainNav->doc = "{$lang->navIcons['doc']} {$lang->doc->common}|doc|index|";
|
||||
$lang->mainNav->ai = "{$lang->navIcons['ai']} {$lang->ai->miniProgram}|ai|square|";
|
||||
$lang->mainNav->bi = "{$lang->navIcons['bi']} {$lang->bi->common}|screen|browse|";
|
||||
$lang->mainNav->system = "{$lang->navIcons['system']} {$lang->system->common}|my|team|";
|
||||
$lang->mainNav->admin = "{$lang->navIcons['admin']} {$lang->admin->common}|admin|index|";
|
||||
@@ -71,6 +74,7 @@ $lang->mainNav->menuOrder[30] = 'qa';
|
||||
$lang->mainNav->menuOrder[35] = 'devops';
|
||||
$lang->mainNav->menuOrder[40] = 'kanban';
|
||||
$lang->mainNav->menuOrder[45] = 'doc';
|
||||
$lang->mainNav->menuOrder[47] = 'ai';
|
||||
$lang->mainNav->menuOrder[50] = 'bi';
|
||||
$lang->mainNav->menuOrder[55] = 'system';
|
||||
$lang->mainNav->menuOrder[60] = 'admin';
|
||||
|
||||
@@ -181,6 +181,7 @@ $lang->kanban->common = '看板';
|
||||
$lang->qa->common = '测试';
|
||||
$lang->devops->common = 'DevOps';
|
||||
$lang->doc->common = '文档';
|
||||
$lang->ai->miniProgram = '小程序';
|
||||
$lang->repo->common = '代码库';
|
||||
$lang->repo->codeRepo = '代码库';
|
||||
$lang->bi->common = 'BI';
|
||||
|
||||
@@ -155,6 +155,7 @@ $lang->kanban->common = '看板';
|
||||
$lang->qa->common = '測試';
|
||||
$lang->devops->common = 'DevOps';
|
||||
$lang->doc->common = '文檔';
|
||||
$lang->ai->miniProgram = '小程式';
|
||||
$lang->repo->common = '代碼庫';
|
||||
$lang->repo->codeRepo = '代碼庫';
|
||||
$lang->report->common = '统计';
|
||||
|
||||
Reference in New Issue
Block a user