discourse-docs/assets/javascripts/discourse/initializers/setup-docs.js
2025-10-09 13:48:42 +01:00

73 lines
1.8 KiB
JavaScript

import { withPluginApi } from "discourse/lib/plugin-api";
import { i18n } from "discourse-i18n";
import { getDocs } from "../../lib/get-docs";
function initialize(api, container) {
const siteSettings = container.lookup("service:site-settings");
const docsPath = getDocs();
api.addKeyboardShortcut("g e", "", {
path: "/" + docsPath,
});
if (siteSettings.docs_add_to_top_menu) {
api.addNavigationBarItem({
name: "docs",
displayName: i18n("docs.title"),
href: "/" + docsPath,
});
}
api.registerValueTransformer("topic-list-columns", ({ value: columns }) => {
if (container.lookup("service:router").currentRouteName === "docs.index") {
columns.delete("posters");
columns.delete("replies");
columns.delete("views");
}
return columns;
});
api.registerValueTransformer("topic-list-item-expand-pinned", ({ value }) => {
if (container.lookup("service:router").currentRouteName === "docs.index") {
return true;
}
return value;
});
}
export default {
name: "setup-docs",
initialize(container) {
const siteSettings = container.lookup("service:site-settings");
if (!siteSettings.docs_enabled) {
return;
}
withPluginApi((api) => initialize(api, container));
if (siteSettings.docs_add_search_menu_tip) {
withPluginApi((api) => {
api.addSearchSuggestion("in:docs");
const tip = {
label: "in:docs",
description: i18n("docs.search.tip_description"),
clickable: true,
searchTopics: true,
};
api.addQuickSearchRandomTip(tip);
});
}
withPluginApi((api) => {
api.addCommunitySectionLink({
name: "docs",
route: "docs.index",
title: i18n("sidebar.docs_link_title"),
text: i18n("sidebar.docs_link_text"),
});
});
},
};