From 9159c9023740761e5c2be04d9b4814540bfa3edb Mon Sep 17 00:00:00 2001 From: liugang Date: Fri, 14 Jul 2023 15:38:35 +0800 Subject: [PATCH] * admin: refactor the index page. --- module/admin/css/index.ui.css | 2 +- module/admin/ui/index.html.php | 319 +++++++++++++++++++++++++++++---- 2 files changed, 286 insertions(+), 35 deletions(-) diff --git a/module/admin/css/index.ui.css b/module/admin/css/index.ui.css index 39e39414cd..267709e43f 100644 --- a/module/admin/css/index.ui.css +++ b/module/admin/css/index.ui.css @@ -1,2 +1,2 @@ #mainContent {display: flex;} -#mainContent .setting-box:hover > button {border-color: var(--color-primary-500)} +.border-hover:hover {border-color: var(--color-primary-500)} diff --git a/module/admin/ui/index.html.php b/module/admin/ui/index.html.php index 69e20d16ab..650c2aad4a 100755 --- a/module/admin/ui/index.html.php +++ b/module/admin/ui/index.html.php @@ -12,6 +12,72 @@ declare(strict_types=1); namespace zin; jsVar('hasInternet', $zentaoData->hasData); +jsVar('isIntranet', $isIntranet); + +$buildHeader = function(string $title, string $actionUrl = '', string $titleIcon = '', string $actionLang = '', string $actionIcon = ''): h +{ + global $lang; + + return div + ( + setClass('flex justify-between items-center pl-4 h-10'), + div + ( + setClass('panel-title'), + $titleIcon ? icon + ( + setClass('text-lg text-primary pr-1'), + $titleIcon + ) : null, + $title + ), + $actionUrl ? a + ( + setClass('text-gray pr-3'), + set::target('_blank'), + set::href($actionUrl), + $actionLang ? $actionLang : $lang->more, + icon($actionIcon ? $actionIcon : 'caret-right') + ) : null + ); +}; + +$buildPluginHeader = function($name, $url): h +{ + return div + ( + setClass('flex justify-between items-center'), + div + ( + setClass('panel-title py-2.5'), + $name, + ), + a + ( + //setClass('flex items-center'), + set::href($url), + set::target('_blank'), + icon + ( + setClass('text-primary bg-primary-100 p-1'), + 'download-alt' + ) + ) + ); +}; + +$buildUsed = function(int $amount, string $unit = ''): array +{ + return array + ( + $amount ? span + ( + setClass('bg-lighter rounded-md text-lg mx-1 px-1 py-0.5'), + $amount + ) : null, + $amount ? $unit : '' + ); +}; $settingItems = array(); foreach($lang->admin->menuList as $menuKey => $menu) @@ -40,23 +106,18 @@ foreach($lang->admin->menuList as $menuKey => $menu) $settingItems[] = div ( - setClass('setting-box p-2 w-1/5 h-32'), - set(array('data-id' => $menuKey)), - button + setClass('pb-4 pr-4 w-1/5 h-32'), + set(array('data-id' => $menuKey, 'data-url' => $url)), + col ( - setClass('flex col border rounded-md px-2.5 py-1 w-full h-full'), - set(array - ( - 'data-on' => $url ? 'click' : '', - 'data-call' => $url ? "window.location.href='{$url}'" : '', - 'title' => $menu['disabled'] ? $lang->admin->noPriv : '', - )), + setClass('border border-hover rounded-md px-2 py-1 h-full'), + $menu['disabled'] ? set::title($lang->admin->noPriv) : null, h4 ( - setClass('flex align-center my-2.5 w-full'), + setClass('flex my-2.5 w-full'), div ( - setClass('flex align-center gap-1 font-bold text-md'), + setClass('flex gap-1 font-bold text-md'), img(set::src("static/svg/admin-{$menuKey}.svg")), $menu['name'], a @@ -71,7 +132,7 @@ foreach($lang->admin->menuList as $menuKey => $menu) ), p ( - setClass('text-left text-gray pb-4 h-12 leading-6'), + setClass('overflow-hidden text-left text-gray pb-4 h-12 leading-6'), set::title($menu['desc']), $menu['desc'] ) @@ -79,50 +140,240 @@ foreach($lang->admin->menuList as $menuKey => $menu) ); } +$pluginItems = array(); +if($zentaoData->plugins) +{ + foreach($zentaoData->plugins as $plugin) + { + $pluginDesc = preg_replace('/[[:cntrl:]]/mu', '', strip_tags($plugin->abstract)); + + $pluginItems[] = div + ( + setClass('pr-4 pb-4 w-1/3 h-32'), + div + ( + setClass('border rounded-md px-3 py-2'), + $buildPluginHeader($plugin->name, $plugin->viewLink), + div + ( + setClass('overflow-hidden text-gray h-12 leading-6'), + set::title($pluginDesc), + $pluginDesc + ) + ) + ); + } +} + +$classItems = array(); +if($zentaoData->classes) +{ + foreach($zentaoData->classes as $class) + { + $classItems[] = a + ( + setClass('border border-hover rounded-md mr-4 mb-4 p-1 w-1/3'), + set::href($class->viewLink), + set::target('_blank'), + img + ( + set::src($class->image) + ), + div + ( + setClass('overflow-hidden text-md text-center font-bold text-black mb-1.5 p-1 h-6'), + $class->name + ) + ); + } +} + +$dynamicItems = array(); +foreach($zentaoData->dynamics as $dynamic) +{ + $dynamicItems[] = div + ( + setClass('relative flex justify-between border-t px-4 py-3 h-18'), + div + ( + setClass('overflow-hidden h-12 leading-normal'), + set::title($dynamic->title), + icon + ( + setClass('text-lg text-primary pr-1'), + 'horn' + ), + a + ( + setClass('text-black'), + set::href($dynamic->link), + set::target('_blank'), + $dynamic->title + ) + ), + div + ( + setClass('absolute nowrap right-3 bottom-3 pl-2.5 pr-3'), + substr($dynamic->addedDate, 0, 10) + ) + ); +} + +$patchItems = array(); +foreach($zentaoData->patches as $patch) +{ + $patchItems[] = div + ( + setClass('border-t pt-2.5 pb-3 px-4'), + $buildPluginHeader($patch->name, $patch->viewLink), + div + ( + setClass('overflow-hidden h-10'), + $patch->desc + ) + ); +} + +$upgradeItems = array(); +foreach(array('biz', 'max') as $edition) +{ + $featureItems = array(); + foreach($lang->admin->productFeature[$edition] as $feature) + { + $featureItems[] = div + ( + setClass('flex items-center my-1 pl-5 h-5'), + div + ( + setClass('rounded-full light mr-2 w-2 h-2') + ), + $feature + ); + } + + $upgradeItems[] = div + ( + setClass('border-t py-1.5'), + $buildHeader($lang->admin->{$edition . 'Tag'} , $config->admin->apiRoot, 'zentao', $lang->admin->productDetail), + $featureItems + ); +} + div ( set::style(array('width' => '70%')), - panel + div ( setID('settings'), - setClass('mb-4 px-2'), - set::title($lang->admin->setting), - set::bodyClass('flex flex-wrap'), - $settingItems + setClass('bg-white rounded-md cursor-pointer mb-4'), + $buildHeader($lang->admin->setting), + div + ( + setClass('flex flex-wrap pl-4'), + $settingItems + ) ), - panel + $pluginItems ? div ( setID('plugin'), - setClass('mb-4 px-2'), - set::title($lang->admin->pluginRecommendation), - ), + setClass('bg-white rounded-md mb-4'), + $buildHeader($lang->admin->pluginRecommendation, $config->admin->extensionURL), + div + ( + setClass('flex flex-wrap pl-4'), + $pluginItems + ) + ) : null, div ( setClass('flex'), - panel + div ( - setClass('mr-4 '), - set::style(array('width' => '30%')), - set::title($lang->admin->officialAccount), + setClass('bg-white rounded-md mb-4 w-1/3'), + $buildHeader($lang->admin->officialAccount), + div + ( + setClass('flex px-4'), + img + ( + setClass('w-1/3'), + set::src('static/images/wechat.jpg') + ), + div + ( + setClass('pl-2 w-2/3'), + $lang->admin->followUs, + div + ( + setClass('text-gray'), + $lang->admin->followUsContent + ) + ) + ), + div + ( + setClass('px-4 pb-4'), + substr($lang->admin->notice->register, 0, strpos($lang->admin->notice->register, '%s')), + a + ( + set::href(inlink('register')), + $lang->admin->registerNotice->submitHere + ), + substr($lang->admin->notice->register, strpos($lang->admin->notice->register, '%s') + 2), + ) ), - panel + div ( - set::style(array('width' => '70%')), - set::title($lang->admin->publicClass), + setClass('bg-white rounded-md ml-4 mb-4 w-2/3'), + $buildHeader($lang->admin->publicClass, $config->admin->classURL), + div + ( + setClass('flex pl-4'), + $classItems + ) ) ) ); -panel +div ( - setClass('ml-4'), + setClass('bg-white rounded-md ml-4 px-4'), set::style(array('width' => '30%')), - set::title($lang->admin->zentaoInfo), div ( - setClass('h-56px'), + setClass('flex justify-between items-center h-14'), + div + ( + setClass('panel-title text-md py-2.5'), + $lang->admin->zentaoInfo + ), + div + ( + setStyle(array('letter-spacing' => '1px')), + $lang->admin->zentaoUsed, + $buildUsed((int)$dateUsed->year, $lang->year), + $buildUsed((int)$dateUsed->month, $lang->admin->mon), + $buildUsed((int)$dateUsed->day, $lang->admin->day) + ) + ), + div + ( + setClass('border rounded-md mb-4'), + $buildHeader($lang->admin->updateDynamics, $config->admin->dynamicURL), + $dynamicItems, + ), + div + ( + setClass('border rounded-md mb-4'), + $buildHeader($lang->admin->updatePatch, $config->admin->patchURL), + $patchItems + ), + div + ( + setClass('border rounded-md mb-4'), + $buildHeader($lang->admin->upgradeRecommend), + $upgradeItems ) ); - render();