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,16 @@
@if($plugin->type !== "system")
<div style="padding-top:10px; padding-left:0px;">
@if (!$plugin->enabled)
<a href="{{ BASE_URL }}/plugins/myapps?enable={{ $plugin->id }}" class=""><i class="fa-solid fa-plug-circle-check"></i> {{ __('buttons.enable') }}</a> |
<a href="{{ BASE_URL }}/plugins/myapps?remove={{ $plugin->id }}" class="delete"><i class="fa fa-trash"></i> {{ __('buttons.remove') }}</a>
@else
<a href="{{ BASE_URL }}/plugins/myapps?disable={{ $plugin->id }}" class="delete"><i class="fa-solid fa-plug-circle-xmark"></i> {{ __('buttons.disable') }}</a>
@endif
@if ($plugin->enabled && file_exists(APP_ROOT . '/app/Plugins/' . $plugin->foldername . '/Controllers/Settings.php'))
<a href="{{ BASE_URL }}/{{ $plugin->foldername }}/settings"><i class="fa fa-cog"></i> Settings</a>
@endif
</div>
@else
<p>System Plugin, cannot be disabled or removed</p>
@endif

View File

@@ -0,0 +1,41 @@
<h1>Latest Plugin Updates</h1>
<p>Extend Leantime using our latest plugins.<br /><a href="{{ BASE_URL }}/plugins/marketplace"><i class="fa fa-cogs"></i> Manage Your Apps</a></p><br />
<br />
<div>
<ul>
@foreach($plugins as $plugin)
<li onclick="window.location='#/plugins/details/{{ $plugin->identifier }}'">
<img src="{{ $plugin->getPluginImageData() }}" width="75" height="75" class="tw-rounded tw-float-left tw-mr-m"/>
@if (! empty($plugin->name))
<a href="#/plugins/details/{{ $plugin->identifier }}"> <strong>{!! $plugin->name !!}</strong> {{ $plugin->version ? "(v".$plugin->version.")" : "" }}</a><br />
<x-global::inlineLinks :links="$plugin->getMetadataLinks()" />
@endif
@if (! empty($desc = $plugin->getCardDesc()))
<p>{!! $desc !!}</p>
@endif
<div class="clearall"></div>
<hr />
{{-- <div class="row tw-mb-base">--}}
{{-- <div class="col tw-flex tw-flex-col tw-gap-base">--}}
{{-- <div class="tw-flex tw-flex-row tw-gap-base">--}}
{{-- <div class="plugin-price tw-flex-1 tw-content-center" >--}}
{{-- <strong>{!! $plugin->getPrice() !!}</strong><br />--}}
{{-- </div>--}}
{{-- <div class="tw-border-t tw-border-[var(--main-border-color)] tw-px-base tw-text-right tw-flex-1 tw-justify-items-end">--}}
{{-- @include($plugin->getControlsView(), ["plugin" => $plugin])--}}
{{-- </div>--}}
{{-- </div>--}}
{{-- </div>--}}
{{-- </div>--}}
</li>
@endforeach
</ul>

View File

@@ -0,0 +1,5 @@
<div class="tw-flex tw-justify-between tw-items-center tw-gap-base">
<x-global::button type="primary" link="#/plugins/details/{{ $plugin->identifier }}">
{{ __('marketplace.details_link') }}
</x-global::button>
</div>

View File

@@ -0,0 +1,47 @@
@props([
'plugin'
])
<div class="col-md-4">
<div class="ticketBox fixed" style="padding-top:0px; overflow: hidden; margin-bottom: 25px;">
<div class="row">
<div class="col-md-12 tw-overflow-hidden tw-mb-m">
<img src="{{ $plugin->getPluginImageData() }}" width="75" height="75" class="tw-rounded tw-mt-base"/>
@if($plugin instanceof \Leantime\Domain\Plugins\Models\MarketplacePlugin)
<div
class="certififed label-default tw-absolute tw-top-[10px] tw-right-[10px] tw-text-primary tw-rounded-full tw-text-sm"
data-tippy-content="{{ __('marketplace.certified_tooltip') }}"
>
<i class="fa fa-certificate"></i>
Certified
</div>
@endif
<div class="clearall"></div>
<div style="margin-top:10px;">
@if (! empty($plugin->name))
<strong style="font-size:var(--font-size-l);">{!! $plugin->name !!}</strong> {{ $plugin->version ? "(v".$plugin->version.")" : "" }}<br />
<x-global::inlineLinks :links="$plugin->getMetadataLinks()" />
@endif
</div>
</div>
</div>
<div class="row tw-mb-base">
<div class="col tw-flex tw-flex-col tw-gap-base">
@if (! empty($desc = $plugin->getCardDesc()))
<p>{!! $desc !!}</p>
@endif
<div class="tw-flex tw-flex-row tw-gap-base">
<div class="plugin-price tw-flex-1 tw-content-center" >
<strong>{!! $plugin->getPrice() !!}</strong><br />
</div>
<div class="tw-border-t tw-border-[var(--main-border-color)] tw-px-base tw-text-right tw-flex-1 tw-justify-items-end">
@include($plugin->getControlsView(), ["plugin" => $plugin])
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,33 @@
@props([
'plugins'
])
<div class="tw-w-full row">
<div class="col-lg-12">
<div class="row sortableTicketList">
@if (count($plugins) == 0)
<div class="tw-w-full htmx-loaded-content">
<x-global::undrawSvg image="undraw_empty_cart_co35.svg" headline="Out of Stock">
Due to a global bit shortage our plugins are currently out of stock. We are working hard to get more stock in as soon as possible.
</x-global::undrawSvg>
</div>
@else
@foreach($plugins as $key => $pluginCategory)
@if($key !== 'plugins')
<div class="col-md-12">
<h1 style="border-bottom:1px solid rgba(0, 0, 0, 0.3); margin-bottom:10px; padding-bottom:10px;"><strong>{!! $pluginCategory['name'] !!}</strong></h1>
<p style="">{!! $pluginCategory['description'] !!}</p> <br />
</div>
@each('plugins::partials.plugin', $pluginCategory['plugins'], 'plugin')
<div class="col-md-12" style="margin-bottom:20px;">
</div>
@endif
@endforeach
@endif
</div>
</div>
</div>

View File

@@ -0,0 +1,19 @@
{{-- Standard floating tab nav (design call 2026-08-03) the old
.maincontentinner.tabs band CSS is gone, so this partial rides the
shared lt-tabs structure like the ticket board tabs. --}}
<div class="lt-tabs lt-tabs--floating lt-tabs--links hideOnPrint">
<nav class="lt-tabs-group" aria-label="Apps">
<ul>
<li class="{{ $currentUrl == 'marketplace' ? "active" : "" }}">
<a href="<?=BASE_URL ?>/plugins/marketplace">
<i class="fa-solid fa-store"></i> Explore Apps
</a>
</li>
<li class="{{ $currentUrl == 'installed' ? "active" : "" }}">
<a href="<?=BASE_URL ?>/plugins/myapps">
<i class="fa-solid fa-puzzle-piece"></i> My Apps
</a>
</li>
</ul>
</nav>
</div>