| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395 |
- <?php
- /**
- * The index view file of admin 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 Gang Liu <liugang@easycorp.ltd>
- * @package admin
- * @link https://www.zentao.net
- */
- namespace zin;
- /* Get latest data from zentao.net if ZenTaoPMS has internet and the user is admin. */
- jsVar('hasInternet', $zentaoData->hasData || $hasInternet);
- jsVar('isAdminUser', $this->app->user->admin);
- $isEn = $app->getClientLang() == 'en';
- $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-gray-100 rounded-md text-lg mx-1 px-1 py-0.5'),
- $amount
- ) : null,
- $amount ? $unit : ''
- );
- };
- $settingItems = array();
- $flowItems = array();
- foreach($lang->admin->menuList as $menuKey => $menu)
- {
- if($config->vision == 'lite' and !in_array($menuKey, $config->admin->liteMenuList)) continue;
- $items = div
- (
- setClass('pb-4 pr-4 h-32 w-1/' . ($config->vision == 'lite' || $isEn ? 3 : 5)),
- col
- (
- setClass('setting-box cursor-pointer border border-hover rounded-md px-2 py-1 h-full'),
- set('data-id', $menuKey),
- empty($menu['disabled']) ? set('data-url', zget($menu, 'link', '')) : null,
- !empty($menu['disabled']) ? setClass('disabled') : null,
- !empty($menu['disabled']) ? set::title($lang->admin->noPriv) : null,
- h4
- (
- setClass('flex my-2.5 w-full'),
- div(setClass('flex gap-1 font-bold text-md'), !empty($menu['icon']) ? icon(setClass("svg-icon rounded-lg content-center bg-{$menu['bg']} text-white"), $menu['icon']) : img(set::src("static/svg/admin-{$menuKey}.svg")), $menu['name'], !empty($config->admin->helpURL[$menuKey]) ?
- a
- (
- setClass('text-gray'),
- set::href($config->admin->helpURL[$menuKey]),
- set::title($lang->help),
- set::target('_blank'),
- icon('help')
- ) : '')
- ),
- p
- (
- setClass('overflow-hidden text-left text-gray pb-4 h-12 leading-6'),
- set::title($menu['desc']),
- $menu['desc']
- )
- )
- );
- if(!empty($menu['group']) && $menu['group'] == 'flow')
- {
- $flowItems[] = $items;
- }
- else
- {
- $settingItems[] = $items;
- }
- }
- $pluginItems = array();
- if($zentaoData->plugins)
- {
- foreach($zentaoData->plugins as $plugin)
- {
- if(!$plugin) continue;
- $pluginDesc = empty($plugin->abstract) ? '' : 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 oeverflow-hidden flex justify-between border-t px-4 py-3 h-18'),
- div
- (
- setClass('flex-1 overflow-hidden h-11 leading-normal'),
- set::title($dynamic->title),
- icon
- (
- setClass('text-lg text-primary pr-1'),
- 'horn'
- ),
- span(substr($dynamic->addedDate, 0, 10)),
- a
- (
- setClass('text-black ml-1'),
- set::href($dynamic->link),
- set::target('_blank'),
- $dynamic->title
- )
- )
- );
- }
- $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
- )
- );
- }
- if($config->edition != 'ipd')
- {
- $upgradeEditions = array('biz', 'max', 'ipd');
- if($config->edition == 'biz') $upgradeEditions = array('max', 'ipd');
- if($config->edition == 'max') $upgradeEditions = array('ipd');
- $upgradeItems = array();
- foreach($upgradeEditions as $edition)
- {
- $featureItems = array();
- foreach($lang->admin->productFeature[$edition] as $feature)
- {
- $featureItems[] = div(
- setClass('flex items-center my-1 pl-5' . ($isEn ? '' : ' 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
- );
- }
- }
- $isZeroDay = empty($dateUsed->year) && empty($dateUsed->month) && empty($dateUsed->day);
- div
- (
- setClass('flex w-full'),
- div
- (
- setClass('flex-1'),
- $settingItems ? div
- (
- setID('settings'),
- setClass('bg-white rounded-md mb-4'),
- $buildHeader($lang->admin->setting),
- div
- (
- setClass('flex flex-wrap pl-4'),
- on::click('redirectSetting'),
- $settingItems
- )
- ) : null,
- $flowItems ? div
- (
- setID('flows'),
- setClass('bg-white rounded-md mb-4'),
- $buildHeader($lang->admin->setFlow),
- div
- (
- setClass('flex flex-wrap pl-4'),
- on::click('redirectSetting'),
- $flowItems
- )
- ) : null,
- $pluginItems ? div
- (
- setID('plugin'),
- setClass('bg-white rounded-md mb-4'),
- $buildHeader($lang->admin->pluginRecommendation, $config->admin->extensionURL),
- div
- (
- setClass('flex flex-wrap pl-4'),
- $pluginItems
- )
- ) : null,
- div
- (
- setID('official'),
- setClass('flex'),
- div
- (
- 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
- )
- )
- ),
- !$bind && !$ignore && $hasInternet && common::hasPriv('admin', 'register') ? 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)
- ) : null
- ),
- div
- (
- setID('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
- )
- )
- )
- ),
- div
- (
- setID('zentaoinfo'),
- setClass('bg-white rounded-md ml-4 px-4 w-1/3'),
- div
- (
- 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),
- $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
- (
- 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
- ),
- $config->edition != 'ipd' ? div
- (
- setClass('border rounded-md mb-4'),
- $buildHeader($lang->admin->upgradeRecommend),
- $upgradeItems
- ) : null
- )
- );
- render();
|