OneBot: Leantime 改造版源码(BOM/Univer 表格/AI 接管/品牌替换等)

This commit is contained in:
wangruiguo
2026-09-03 18:49:20 +08:00
commit d647428529
3501 changed files with 1988906 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
<?php
namespace Leantime\Domain\Plugins\Hxcontrollers;
use Illuminate\Contracts\Container\BindingResolutionException;
use Illuminate\Http\Client\RequestException;
use Leantime\Core\Auth\Permissions\RequiresPermission;
use Leantime\Core\Controller\HtmxController;
use Leantime\Domain\Plugins\Permissions\PluginsPermissions;
use Leantime\Domain\Plugins\Services\Plugins as PluginService;
class Details extends HtmxController
{
protected static string $view = 'plugins::plugindetails';
private PluginService $pluginService;
public function init(
PluginService $pluginService,
): void {
$this->pluginService = $pluginService;
}
/**
* @throws BindingResolutionException
*/
#[RequiresPermission(PluginsPermissions::MANAGE, global: true)]
public function install(): string
{
$pluginProps = $this->incomingRequest->request->all()['plugin'];
$version = $pluginProps['version'];
unset($pluginProps['version']);
$pluginModel = $this->pluginService->buildMarketplacePluginFromRequest($pluginProps);
$this->tpl->assign('plugin', $pluginModel);
$this->tpl->assign('isBundle', $this->pluginService->isBundle($pluginModel));
try {
$this->pluginService->installMarketplacePlugin($pluginModel, $version);
} catch (RequestException $e) {
report($e);
$this->tpl->assign('formError', $this->pluginService->parseMarketplaceError($e));
return 'plugin-installation';
}
if ($this->pluginService->isEnabled($pluginModel->identifier)) {
$this->tpl->assign('formNotification', __('marketplace.updated'));
return 'plugin-installation';
}
$this->tpl->assign('formNotification', sprintf(__('marketplace.installed'), '/plugins/myapps'));
return 'plugin-installation';
}
}

View File

@@ -0,0 +1,50 @@
<?php
namespace Leantime\Domain\Plugins\Hxcontrollers;
use Illuminate\Contracts\Container\BindingResolutionException;
use Leantime\Core\Controller\HtmxController;
use Leantime\Domain\Plugins\Models\MarketplacePlugin;
use Leantime\Domain\Plugins\Services\Plugins as PluginService;
class Marketplaceplugins extends HtmxController
{
protected static string $view = 'plugins::partials.pluginlist';
private PluginService $pluginService;
public function init(
PluginService $pluginService,
): void {
$this->pluginService = $pluginService;
}
/**
* @throws BindingResolutionException
*/
public function getlist(): void
{
/** @var MarketplacePlugin[] $plugins */
$plugins = $this->pluginService->getMarketplacePlugins(
$this->incomingRequest->query->get('page', 1),
$this->incomingRequest->query->get('search', ''),
);
$this->tpl->assign('plugins', $plugins);
}
public function getLatest()
{
/** @var MarketplacePlugin[] $plugins */
$plugins = $this->pluginService->getLatestPluginUpdates(
$this->incomingRequest->query->get('page', 1),
$this->incomingRequest->query->get('search', ''),
);
$this->tpl->assign('plugins', $plugins);
return $this->tpl->displayPartial('plugins::partials.latestPlugins');
}
public function search(): void {}
}