* Finish zentaodynamic block.
This commit is contained in:
@@ -64,13 +64,15 @@ $config->admin->plugins[194]->viewLink = 'https://www.zentao.net/extension-viewE
|
||||
$config->admin->apiRoot = 'https://www.zentao.net';
|
||||
$config->admin->cdnRoot = 'https://cdn.easycorp.cn/web';
|
||||
$config->admin->classURL = 'https://www.zentao.net/publicclass.html';
|
||||
$config->admin->dynamicURL = 'https://www.zentao.net/download.html';
|
||||
$config->admin->dynamicURL = 'https://www.zentao.net/dynamic.html';
|
||||
$config->admin->downloadURL = 'https://www.zentao.net/download.html';
|
||||
$config->admin->extensionURL = 'https://www.zentao.net/extension-browse.html';
|
||||
$config->admin->patchURL = 'https://www.zentao.net/extension-browse-byModule-1218.html';
|
||||
$config->admin->apiSite = 'https://api.zentao.net/';
|
||||
$config->admin->extAPIURL = $config->admin->apiSite . 'extension-apiGetExtensions-';
|
||||
$config->admin->patchAPIURL = $config->admin->apiSite . 'extension-apiGetExtensions-bymodule-MTIxOA==-0-100-1.json';
|
||||
$config->admin->downloadAPIURL = $config->admin->apiSite . 'download.json';
|
||||
$config->admin->dynamicAPIURL = $config->admin->apiSite . 'dynamic-activities.json';
|
||||
$config->admin->videoAPIURL = $config->admin->apiSite . 'publicclass.json';
|
||||
$config->admin->liteMenuList = array('system', 'company', 'feature', 'message', 'extension', 'dev');
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
<div class="border-gray mb-16 radius-4">
|
||||
<div class="h-40 pl-16 flex align-center justify-between">
|
||||
<div class="panel-title"><?php echo $lang->admin->updateDynamics?></div>
|
||||
<?php echo html::a($config->admin->dynamicURL, "{$lang->more} <i class='icon icon-caret-right pb-3'></i>", '_blank', 'class="more text-muted flex align-center"');?>
|
||||
<?php echo html::a($config->admin->downloadURL, "{$lang->more} <i class='icon icon-caret-right pb-3'></i>", '_blank', 'class="more text-muted flex align-center"');?>
|
||||
</div>
|
||||
<?php foreach($zentaoData->dynamics as $dynamic):?>
|
||||
<div class="dynamic-block">
|
||||
|
||||
@@ -327,7 +327,8 @@ $config->block->size['qa']['testtask'] = array('2' => '6', '1' => '6');
|
||||
$config->block->size['qa']['bug'] = array('2' => '6', '1' => '6');
|
||||
$config->block->size['qa']['case'] = array('2' => '6', '1' => '6');
|
||||
|
||||
$config->block->size['welcome']['welcome'] = array('2' => '3');
|
||||
$config->block->size['guide']['guide'] = array('2' => '6');
|
||||
$config->block->size['assigntome']['assigntome'] = array('2' => '6');
|
||||
$config->block->size['dynamic']['dynamic'] = array('1' => '8');
|
||||
$config->block->size['welcome']['welcome'] = array('2' => '3');
|
||||
$config->block->size['guide']['guide'] = array('2' => '6');
|
||||
$config->block->size['assigntome']['assigntome'] = array('2' => '6');
|
||||
$config->block->size['dynamic']['dynamic'] = array('1' => '8');
|
||||
$config->block->size['zentaoDynamic']['zentaoDynamic'] = array('1' => '3');
|
||||
|
||||
@@ -37,6 +37,7 @@ $lang->block->lblNum = '条数';
|
||||
$lang->block->lblHtml = 'HTML内容';
|
||||
$lang->block->html = 'HTML';
|
||||
$lang->block->dynamic = '最新动态';
|
||||
$lang->block->zentaoDynamic = '禅道动态';
|
||||
$lang->block->assignToMe = '待处理';
|
||||
$lang->block->wait = '未开始';
|
||||
$lang->block->doing = '进行中';
|
||||
@@ -587,6 +588,13 @@ $lang->block->productlist->activatedStory = '激活需求';
|
||||
$lang->block->productlist->storyCompleteRate = '需求完成率';
|
||||
$lang->block->productlist->activatedBug = '激活Bug';
|
||||
|
||||
$lang->block->zentaodynamic = new stdclass();
|
||||
$lang->block->zentaodynamic->zentaosalon = '禅道中国行';
|
||||
$lang->block->zentaodynamic->publicclass = '禅道公开课';
|
||||
$lang->block->zentaodynamic->release = '最新发布';
|
||||
$lang->block->zentaodynamic->registration = '立即报名';
|
||||
$lang->block->zentaodynamic->reservation = '立即预约';
|
||||
|
||||
$lang->block->moduleList['product'] = $lang->productCommon;
|
||||
$lang->block->moduleList['project'] = $lang->projectCommon;
|
||||
$lang->block->moduleList['execution'] = $lang->execution->common;
|
||||
@@ -597,4 +605,5 @@ $lang->block->moduleList['teamDynamic'] = $lang->zentaoPMS . $lang->dynamic;
|
||||
$lang->block->moduleList['teamAchievement'] = $lang->block->teamAchievement;
|
||||
$lang->block->moduleList['assigntome'] = $lang->block->assignToMe;
|
||||
$lang->block->moduleList['dynamic'] = $lang->block->dynamic;
|
||||
$lang->block->moduleList['zentaoDynamic'] = $lang->block->zentaoDynamic;
|
||||
$lang->block->moduleList['html'] = $lang->block->html;
|
||||
|
||||
@@ -364,14 +364,7 @@ panel
|
||||
on::click('.nav-prev,.nav-next', 'switchNav'),
|
||||
set('class', 'productstatistic-block ' . ($longBlock ? 'block-long' : 'block-sm')),
|
||||
set('headingClass', 'border-b'),
|
||||
to::heading
|
||||
(
|
||||
div
|
||||
(
|
||||
set('class', 'panel-title'),
|
||||
span($block->title),
|
||||
)
|
||||
),
|
||||
set::title($block->title),
|
||||
to::headingActions
|
||||
(
|
||||
a
|
||||
|
||||
@@ -28,14 +28,7 @@ panel
|
||||
(
|
||||
set('class', 'project-block list-block ' . ($longBlock ? 'block-long' : 'block-sm')),
|
||||
set('headingClass', 'border-b'),
|
||||
to::heading
|
||||
(
|
||||
div
|
||||
(
|
||||
set('class', 'panel-title'),
|
||||
span($block->title),
|
||||
)
|
||||
),
|
||||
set::title($block->title),
|
||||
to::headingActions
|
||||
(
|
||||
a
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* The zenatoDynamic block view file of block 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 Yuting Wang <wangyuting@easycorp.ltd>
|
||||
* @package block
|
||||
* @link https://www.zentao.net
|
||||
*/
|
||||
|
||||
namespace zin;
|
||||
|
||||
$app->loadModuleConfig('admin');
|
||||
$dynamicCards = array();
|
||||
foreach($dynamics as $key => $dynamic)
|
||||
{
|
||||
if($key >= 2) break;
|
||||
$dynamicCards[] = a
|
||||
(
|
||||
set('href', $dynamic->link),
|
||||
set('target', '_blank'),
|
||||
div
|
||||
(
|
||||
set('class', 'shadow-sm p-3 ' . ($key > 0 ? 'mt-4' : '')),
|
||||
div
|
||||
(
|
||||
label(set('class', $key > 0 ? 'special' : 'secondary'), $dynamic->title),
|
||||
label(set('class', 'text-black font-bold ml-1 ' . ($key > 0 ? 'special-pale' : 'secondary-pale')), $dynamic->label),
|
||||
$dynamic->linklabel ? span
|
||||
(
|
||||
set('style', array('float' => 'right')),
|
||||
$dynamic->linklabel,
|
||||
icon('arrow-right')
|
||||
) : null
|
||||
),
|
||||
div
|
||||
(
|
||||
set('class', 'ellipsis text-black mt-4'),
|
||||
$dynamic->content
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
panel
|
||||
(
|
||||
set::class('zentaoDynamic-block'),
|
||||
set::bodyClass('p-0 px-4'),
|
||||
set::title($block->title),
|
||||
to::headingActions
|
||||
(
|
||||
a
|
||||
(
|
||||
set('class', 'text-gray'),
|
||||
set('href', $config->admin->dynamicURL),
|
||||
set('target', '__blank'),
|
||||
$lang->more,
|
||||
icon('caret-right')
|
||||
)
|
||||
),
|
||||
div($dynamicCards)
|
||||
);
|
||||
|
||||
render();
|
||||
@@ -309,6 +309,48 @@ class blockZen extends block
|
||||
$this->view->users = $this->loadModel('user')->getPairs('nodeleted|noletter|all');
|
||||
}
|
||||
|
||||
/**
|
||||
* Latest dynamic by zentao official.
|
||||
*
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
protected function printZentaoDynamicBlock(): void
|
||||
{
|
||||
$this->app->loadModuleConfig('admin');
|
||||
|
||||
$dynamics = array();
|
||||
$result = json_decode(preg_replace('/[[:cntrl:]]/mu', '', common::http($this->config->admin->dynamicAPIURL)));
|
||||
if(!empty($result->data))
|
||||
{
|
||||
$data = $result->data;
|
||||
if(!empty($data->zentaosalon))
|
||||
{
|
||||
$data->zentaosalon->title = $this->lang->block->zentaodynamic->zentaosalon;
|
||||
$data->zentaosalon->label = formatTime($data->zentaosalon->time, DT_DATE4) . ' ' . $data->zentaosalon->name;
|
||||
$data->zentaosalon->linklabel = $this->lang->block->zentaodynamic->registration;
|
||||
$dynamics[] = $data->zentaosalon;
|
||||
}
|
||||
if(!empty($data->publicclass))
|
||||
{
|
||||
$data->publicclass->title = $this->lang->block->zentaodynamic->publicclass;
|
||||
$data->publicclass->label = formatTime($data->publicclass->time, DT_DATE4) . $this->lang->datepicker->dayNames[date('w', strtotime($data->publicclass->time))] . ' ' . formatTime($data->publicclass->time, 'H:i');
|
||||
$data->publicclass->linklabel = $this->lang->block->zentaodynamic->reservation;
|
||||
$dynamics[] = $data->publicclass;
|
||||
}
|
||||
if(!empty($data->release))
|
||||
{
|
||||
foreach($data->release as $release)
|
||||
{
|
||||
$release->title = $this->lang->block->zentaodynamic->release;
|
||||
$release->label = formatTime($data->publicclass->time, DT_DATE4) . $this->lang->datepicker->dayNames[date('w', strtotime($data->publicclass->time))];
|
||||
$dynamics[] = $release;
|
||||
}
|
||||
}
|
||||
}
|
||||
$this->view->dynamics = $dynamics;
|
||||
}
|
||||
|
||||
/**
|
||||
* Welcome block.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user