Files
leocrm/app/plugins/builtins/wiki/plugin.py
T
2026-08-22 07:25:48 +02:00

43 lines
2.0 KiB
Python

"""Wiki plugin - knowledge articles, categories, versioning."""
from __future__ import annotations
import logging
from app.plugins.base import BasePlugin
from app.plugins.manifest import FrontendMenuItem, FrontendPageRoute, PluginManifest, PluginRouteDef
logger = logging.getLogger(__name__)
class WikiPlugin(BasePlugin):
manifest = PluginManifest(
name="wiki",
version="1.0.0",
display_name="Wiki",
description="Knowledge articles with Markdown, categories, tags, versioning, entity links.",
dependencies=["permissions"],
routes=[
PluginRouteDef(path="/api/v1/wiki", module="app.plugins.builtins.wiki.routes", router_attr="router"),
],
permissions=["wiki:read", "wiki:write", "wiki:delete", "wiki:admin"],
menu_items=[FrontendMenuItem(label_key="wiki.menu.wiki", label="Wiki", path="/wiki", icon="BookOpen")],
page_routes=[FrontendPageRoute(path="/wiki", component="@/pages/Wiki")],
)
async def on_activate(self, db, service_container, event_bus) -> None:
await super().on_activate(db, service_container, event_bus)
try:
from app.plugins.builtins.contracts import get_contract
search_contract = get_contract("unified_search")
if search_contract and hasattr(search_contract, "register_provider"):
from app.plugins.builtins.unified_search.providers.wiki_provider import WikiSearchProvider
search_contract.register_provider(WikiSearchProvider())
logger.info("Registered WikiSearchProvider via contract")
else:
logger.warning("unified_search contract not available, skipping WikiSearchProvider registration")
except Exception:
logger.exception("Failed to register WikiSearchProvider")
async def on_deactivate(self, db, service_container, event_bus) -> None:
from app.core.hooks import unregister_actions_by_owner
unregister_actions_by_owner("wiki")
await super().on_deactivate(db, service_container, event_bus)