added legacy plugins section

This commit is contained in:
Almeida 2021-05-07 21:21:51 +01:00 committed by almeidx
parent 0ec5e37286
commit 5b1a2ca7a3
No known key found for this signature in database
GPG key ID: 8558FBFF849BD664
6 changed files with 137 additions and 112 deletions

View file

@ -37,7 +37,7 @@ export function initDocs(app: express.Express) {
app.get("/docs/plugins", (req: express.Request, res: express.Response) => { app.get("/docs/plugins", (req: express.Request, res: express.Response) => {
res.json( res.json(
docsPlugins.map(plugin => { docsPlugins.map(plugin => {
const thinInfo = plugin.info ? { prettyName: plugin.info.prettyName } : {}; const thinInfo = plugin.info ? { prettyName: plugin.info.prettyName, legacy: plugin.info.legacy ?? false } : {};
return { return {
name: plugin.name, name: plugin.name,
info: thinInfo, info: thinInfo,

View file

@ -52,6 +52,7 @@ export const CensorPlugin = zeppelinGuildPlugin<CensorPluginType>()({
Censor words, tokens, links, regex, etc. Censor words, tokens, links, regex, etc.
For more advanced filtering, check out the Automod plugin! For more advanced filtering, check out the Automod plugin!
`), `),
legacy: true,
}, },
dependencies: [LogsPlugin], dependencies: [LogsPlugin],

View file

@ -51,6 +51,7 @@ export const SpamPlugin = zeppelinGuildPlugin<SpamPluginType>()({
Basic spam detection and auto-muting. Basic spam detection and auto-muting.
For more advanced spam filtering, check out the Automod plugin! For more advanced spam filtering, check out the Automod plugin!
`), `),
legacy: true,
}, },
dependencies: [LogsPlugin], dependencies: [LogsPlugin],

View file

@ -27,6 +27,7 @@ export interface ZeppelinGuildPluginBlueprint<TPluginData extends GuildPluginDat
description?: TMarkdown; description?: TMarkdown;
usageGuide?: TMarkdown; usageGuide?: TMarkdown;
configurationGuide?: TMarkdown; configurationGuide?: TMarkdown;
legacy?: boolean;
}; };
configPreprocessor?: ( configPreprocessor?: (

View file

@ -49,6 +49,7 @@ export interface ZeppelinPluginInfo {
description?: TMarkdown; description?: TMarkdown;
usageGuide?: TMarkdown; usageGuide?: TMarkdown;
configurationGuide?: TMarkdown; configurationGuide?: TMarkdown;
legacy?: boolean;
} }
export interface CommandInfo { export interface CommandInfo {

View file

@ -5,17 +5,14 @@
<!-- Top bar --> <!-- Top bar -->
<nav class="flex items-stretch pl-4 pr-2 py-1 border border-gray-700 rounded bg-gray-800 shadow-xl"> <nav class="flex items-stretch pl-4 pr-2 py-1 border border-gray-700 rounded bg-gray-800 shadow-xl">
<div class="flex-initial flex items-center"> <div class="flex-initial flex items-center">
<img class="flex-auto w-10 mr-5" src="../../img/logo.png" alt="" aria-hidden="true"> <img class="flex-auto w-10 mr-5" src="../../img/logo.png" alt="" aria-hidden="true" />
<router-link to="/docs"> <router-link to="/docs">
<h1 class="flex-auto font-semibold">Zeppelin Documentation</h1> <h1 class="flex-auto font-semibold">Zeppelin Documentation</h1>
</router-link> </router-link>
</div> </div>
<div class="flex-1 flex items-center justify-end"> <div class="flex-1 flex items-center justify-end">
<router-link <router-link to="/dashboard" role="menuitem" class="py-1 px-2 rounded hover:bg-gray-700 hidden lg:block">
to="/dashboard"
role="menuitem"
class="py-1 px-2 rounded hover:bg-gray-700 hidden lg:block">
Go to dashboard Go to dashboard
</router-link> </router-link>
<button class="link-button text-2xl leading-zero lg:hidden" v-on:click="toggleMobileMenu()" aria-hidden="true"> <button class="link-button text-2xl leading-zero lg:hidden" v-on:click="toggleMobileMenu()" aria-hidden="true">
@ -29,12 +26,23 @@
<!-- Content wrapper --> <!-- Content wrapper -->
<div class="flex flex-wrap items-start mt-8"> <div class="flex flex-wrap items-start mt-8">
<!-- Sidebar --> <!-- Sidebar -->
<nav class="docs-sidebar px-4 pt-2 pb-3 mr-8 mb-4 border border-gray-700 rounded bg-gray-800 shadow-md flex-full lg:flex-none lg:block" v-bind:class="{ closed: !mobileMenuOpen }"> <nav
class="docs-sidebar px-4 pt-2 pb-3 mr-8 mb-4 border border-gray-700 rounded bg-gray-800 shadow-md flex-full lg:flex-none lg:block"
v-bind:class="{ closed: !mobileMenuOpen }"
>
<div role="none" v-for="(group, index) in menu"> <div role="none" v-for="(group, index) in menu">
<h1 class="font-bold" :aria-owns="'menu-group-' + index" :class="{'mt-4': index !== 0}">{{ group.label }}</h1> <h1 class="font-bold" :aria-owns="'menu-group-' + index" :class="{ 'mt-4': index !== 0 }">
{{ group.label }}
</h1>
<ul v-bind:id="'menu-group-' + index" role="group" class="list-none pl-2"> <ul v-bind:id="'menu-group-' + index" role="group" class="list-none pl-2">
<li role="none" v-for="item in group.items"> <li role="none" v-for="item in group.items">
<router-link role="menuitem" :to="item.to" class="text-gray-300 hover:text-gray-500" v-on:click.native="onChooseMenuItem()">{{ item.label }}</router-link> <router-link
role="menuitem"
:to="item.to"
class="text-gray-300 hover:text-gray-500"
v-on:click.native="onChooseMenuItem()"
>{{ item.label }}</router-link
>
</li> </li>
</ul> </ul>
</div> </div>
@ -50,118 +58,131 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import Vue from "vue"; import Vue from "vue";
import {mapState} from "vuex"; import { mapState } from "vuex";
import Menu from 'vue-material-design-icons/Menu.vue'; import Menu from "vue-material-design-icons/Menu.vue";
import Title from "../Title.vue"; import Title from "../Title.vue";
type TMenuItem = { type TMenuItem = {
to: string; to: string;
label: string; label: string;
}; };
type TMenuGroup = { type TMenuGroup = {
label: string; label: string;
items: TMenuItem[]; items: TMenuItem[];
}; };
type TMenu = TMenuGroup[]; type TMenu = TMenuGroup[];
const menu: TMenu = [ const menu: TMenu = [
{ {
label: 'General', label: "General",
items: [ items: [
{ {
to: '/docs/introduction', to: "/docs/introduction",
label: 'Introduction', label: "Introduction",
},
],
},
{
label: 'Configuration',
items: [
{
to: '/docs/configuration/configuration-format',
label: 'Configuration format',
},
{
to: '/docs/configuration/plugin-configuration',
label: 'Plugin configuration',
},
{
to: '/docs/configuration/permissions',
label: 'Permissions',
},
],
},
{
label: 'Reference',
items: [
{
to: '/docs/reference/argument-types',
label: 'Argument types',
},
],
},
{
label: 'Setup guides',
items: [
{
to: '/docs/setup-guides/logs',
label: 'Logs',
},
{
to: '/docs/setup-guides/moderation',
label: 'Moderation',
},
{
to: '/docs/setup-guides/counters',
label: 'Counters',
},
],
},
];
export default {
components: { Menu, Title },
async mounted() {
await this.$store.dispatch("docs/loadAllPlugins");
},
data() {
return {
mobileMenuOpen: false
};
},
methods: {
toggleMobileMenu() {
this.mobileMenuOpen = !this.mobileMenuOpen;
}, },
],
},
onChooseMenuItem() { {
this.mobileMenuOpen = false; label: "Configuration",
this.$refs['main-anchor'].focus(); items: [
{
to: "/docs/configuration/configuration-format",
label: "Configuration format",
}, },
{
to: "/docs/configuration/plugin-configuration",
label: "Plugin configuration",
},
{
to: "/docs/configuration/permissions",
label: "Permissions",
},
],
},
{
label: "Reference",
items: [
{
to: "/docs/reference/argument-types",
label: "Argument types",
},
],
},
{
label: "Setup guides",
items: [
{
to: "/docs/setup-guides/logs",
label: "Logs",
},
{
to: "/docs/setup-guides/moderation",
label: "Moderation",
},
{
to: "/docs/setup-guides/counters",
label: "Counters",
},
],
},
];
export default {
components: { Menu, Title },
async mounted() {
await this.$store.dispatch("docs/loadAllPlugins");
},
data() {
return {
mobileMenuOpen: false,
};
},
methods: {
toggleMobileMenu() {
this.mobileMenuOpen = !this.mobileMenuOpen;
}, },
computed: { onChooseMenuItem() {
...mapState('docs', { this.mobileMenuOpen = false;
plugins: 'allPlugins', this.$refs["main-anchor"].focus();
}), },
menu() { },
return [
...menu, computed: {
{ ...mapState("docs", {
label: 'Plugins', plugins: "allPlugins",
items: this.plugins.map(plugin => ({ }),
menu() {
console.log(this.plugins);
return [
...menu,
{
label: "Plugins",
items: this.plugins
.filter(plugin => !plugin.info.legacy)
.map(plugin => ({
label: plugin.info.prettyName || plugin.name, label: plugin.info.prettyName || plugin.name,
to: `/docs/plugins/${plugin.name}`, to: `/docs/plugins/${plugin.name}`,
})), })),
} },
]; {
}, label: "Legacy Plugins",
items: this.plugins
.filter(plugin => plugin.info.legacy)
.map(plugin => ({
label: plugin.info.prettyName || plugin.name,
to: `/docs/plugins/${plugin.name}`,
})),
},
];
}, },
}; },
};
</script> </script>