| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257 |
- <?php
- /**
- * The obtain view file of extension 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 Tingting Dai <daitingting@easycorp.ltd>
- * @package extension
- * @link https://www.zentao.net
- */
- namespace zin;
- $searchForm = div
- (
- setClass('mb-5'),
- inputGroup
- (
- input
- (
- set::name('key'),
- set::value($this->post->key ? $this->post->key : ''),
- set::placeholder($lang->extension->bySearch)
- ),
- span
- (
- setClass('input-group-btn'),
- btn
- (
- icon('search'),
- on::click('searchExtension')
- )
- )
- )
- );
- $menuItems = array();
- foreach(array('byUpdatedTime', 'byAddedTime', 'byDownloads') as $listType)
- {
- $active = (strtolower($listType) == $type) ? 'active' : '';
- $menuItems[] = li
- (
- setClass('menu-item'),
- a
- (
- setClass($active),
- set::href(createLink('extension', 'obtain', "type=$listType")),
- $lang->extension->$listType
- )
- );
- }
- $featureItems = array();
- foreach($lang->extension->featureBar['browse'] as $browseType => $browseLabel)
- {
- $featureItems[] = li
- (
- setClass('nav-item'),
- a
- (
- set('href', createLink('extension', 'browse', "type=$browseType")),
- set('data-id', $browseType),
- $browseLabel
- )
- );
- }
- featurebar($featureItems);
- toolbar
- (
- hasPriv('extension', 'upload') ? item(set(array
- (
- 'icon' => 'cog',
- 'text' => $lang->extension->upload,
- 'class' => 'ghost',
- 'url' => createLink('extension', 'upload'),
- 'data-toggle' => 'modal'
- ))) : null,
- hasPriv('extension', 'obtain') ? item(set(array
- (
- 'icon' => 'download-alt',
- 'text' => $lang->extension->obtain,
- 'class' => 'primary',
- 'url' => createLink('extension', 'obtain')
- ))) : null
- );
- foreach($moduleTree as $module) $module->url = createLink('extension', 'obtain', "type=bymodule¶m=" . base64_encode($module->id));
- sidebar
- (
- setClass('pb-5'),
- div
- (
- setClass('fast-menu bg-white p-4 shadow-sm rounded rounded-sm'),
- $searchForm,
- menu
- (
- setClass('p-0'),
- $menuItems
- )
- ),
- moduleMenu
- (
- setClass('module-menu'),
- set::title($lang->extension->byCategory),
- set::modules($moduleTree),
- set::activeKey($moduleID),
- set::closeLink(createLink('extension', 'obtain')),
- set::showDisplay(false)
- )
- );
- $extensionItems = array();
- $extensionCount = count($extensions);
- $i = 1;
- foreach($extensions as $extension)
- {
- $currentRelease = $extension->currentRelease;
- $latestRelease = isset($extension->latestRelease) ? $extension->latestRelease : '';
- $labelClass = $extension->offcial ? 'secondary' : 'warning';
- $extensionInfo = array();
- $extensionInfo[] = $lang->extension->author . ': ';
- $extensionInfo[] = html($extension->author);
- $extensionInfo[] = ' ' . $lang->extension->downloads . ': ' . $extension->downloads;
- $extensionInfo[] = ' ' . $lang->extension->compatible . ': ' . $lang->extension->compatibleList[$currentRelease->compatible];
- if(!empty($currentRelease->depends))
- {
- $extensionInfo[] = ' ' . $lang->extension->depends . ': ';
- foreach(json_decode($currentRelease->depends, true) as $code => $limit)
- {
- $extensionInfo[] .= $code;
- if($limit != 'all')
- {
- $extensionInfo[] .= '(' . !empty($limit['min']) . '>= v' . $limit['min'];
- $extensionInfo[] .= !empty($limit['max']) . '<= v' . $limit['max'] . ') ';
- }
- }
- }
- $btnItems = array();
- $viewLink = $extension->site . "/extension-viewExt-{$extension->id}.html";
- $btnItems[] = array('text' => $lang->extension->view, 'url' => $viewLink, 'target' => '_blank');
- if($currentRelease->public)
- {
- if($extension->type != 'computer' && $extension->type != 'mobile')
- {
- if(isset($installeds[$extension->code]))
- {
- if($installeds[$extension->code]->version != $extension->latestRelease->releaseVersion && $this->extension->checkVersion($extension->latestRelease->zentaoCompatible))
- {
- $upgradeLink = inlink('upgrade', "extension=$extension->code&downLink=" . helper::safe64Encode($currentRelease->downLink) . "&md5=$currentRelease->md5&type=$extension->type");
- $btnItems[] = array('url' => $upgradeLink, 'text' => $lang->extension->upgrade, 'data-toggle' => 'modal');
- }
- else
- {
- $btnItems[] = array('url' => 'javascript', 'text' => $lang->extension->upgrade, 'disabled' => 'disabled', 'class' => 'text-success');
- }
- }
- }
- }
- $btnItems[] = array('text' => $lang->extension->downloadAB, 'url' => $currentRelease->downLink, 'target' => '_blank');
- $btnItems[] = array('text' => $lang->extension->site, 'url' => $extension->site, 'target' => '_blank');
- $stars = html::printStars($extension->stars, false);
- $extensionItems[] = div
- (
- setClass('pb-2' . ($i < $extensionCount ? ' border-b' : '') . ($i > 1 ? ' mt-5' : '')),
- div
- (
- setClass('font-bold mb-2'),
- $extension->name . "($currentRelease->releaseVersion)",
- span
- (
- setClass("label $labelClass size-sm font-medium ml-2"),
- $lang->extension->obtainOfficial[$extension->offcial]
- ),
- $latestRelease && $latestRelease->releaseVersion != $currentRelease->releaseVersion ? div
- (
- setClass('pull-right text-sm text-warning'),
- html(sprintf($lang->extension->latest, $latestRelease->viewLink, $latestRelease->releaseVersion, $latestRelease->zentaoCompatible))
- ) : null
- ),
- div
- (
- setClass('mb-2'),
- $extension->abstract
- ),
- div
- (
- div
- (
- setclass('mb-2'),
- $extensionInfo
- ),
- span
- (
- $lang->extension->grade . ': ',
- html($stars)
- ),
- div
- (
- setClass('pull-right'),
- btnGroup
- (
- set::items($btnItems)
- )
- )
- )
- );
- $i ++;
- }
- if($pager->recTotal)
- {
- $extensionItems[] = pager
- (
- set::style(array('float' => 'right')),
- set::type('full'),
- set::page($pager->pageID),
- set::recTotal($pager->recTotal),
- set::recPerPage($pager->recPerPage)
- );
- }
- div
- (
- setClass('flex col gap-y-1 p-5 bg-white'),
- $extensions ? $extensionItems : div
- (
- setClass('alert ghost text-danger flex items-center'),
- icon
- (
- 'exclamation-sign',
- set::size('2x'),
- set('class', 'alert-icon')
- ),
- div
- (
- div
- (
- setClass('font-bold text-lg'),
- $lang->extension->errorOccurs
- ),
- p
- (
- html($lang->extension->errorGetExtensions)
- )
- )
- )
- );
- render();
|