77 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import React from "react";
 | 
						|
import clsx from "clsx";
 | 
						|
import {
 | 
						|
    HtmlClassNameProvider,
 | 
						|
    ThemeClassNames,
 | 
						|
} from "@docusaurus/theme-common";
 | 
						|
import {
 | 
						|
    BlogPostProvider,
 | 
						|
    useBlogPost,
 | 
						|
} from "@docusaurus/theme-common/internal";
 | 
						|
import BlogLayout from "@theme/BlogLayout";
 | 
						|
import BlogPostItem from "@theme/BlogPostItem";
 | 
						|
import BlogPostPaginator from "@theme/BlogPostPaginator";
 | 
						|
import BlogPostPageMetadata from "@theme/BlogPostPage/Metadata";
 | 
						|
import TOC from "@theme/TOC";
 | 
						|
import { DiscussionEmbed } from "disqus-react";
 | 
						|
 | 
						|
function BlogPostPageContent({ sidebar, children }) {
 | 
						|
    const { metadata, toc } = useBlogPost();
 | 
						|
    const { nextItem, prevItem, frontMatter } = metadata;
 | 
						|
    const {
 | 
						|
        hide_table_of_contents: hideTableOfContents,
 | 
						|
        toc_min_heading_level: tocMinHeadingLevel,
 | 
						|
        toc_max_heading_level: tocMaxHeadingLevel,
 | 
						|
    } = frontMatter;
 | 
						|
    return (
 | 
						|
        <BlogLayout
 | 
						|
            sidebar={sidebar}
 | 
						|
            toc={
 | 
						|
                !hideTableOfContents && toc.length > 0 ? (
 | 
						|
                    <TOC
 | 
						|
                        toc={toc}
 | 
						|
                        minHeadingLevel={tocMinHeadingLevel}
 | 
						|
                        maxHeadingLevel={tocMaxHeadingLevel}
 | 
						|
                    />
 | 
						|
                ) : undefined
 | 
						|
            }
 | 
						|
        >
 | 
						|
            <BlogPostItem>{children}</BlogPostItem>
 | 
						|
 | 
						|
            {(nextItem || prevItem) && (
 | 
						|
                <BlogPostPaginator nextItem={nextItem} prevItem={prevItem} />
 | 
						|
            )}
 | 
						|
        </BlogLayout>
 | 
						|
    );
 | 
						|
}
 | 
						|
export default function BlogPostPage(props) {
 | 
						|
    const BlogPostContent = props.content;
 | 
						|
    const title = props.content.frontMatter.title.substring(0, 200);
 | 
						|
    const fmtId = title.replace(/^\//, "").replaceAll(/[\s\/]/gi, "-");
 | 
						|
    const disqusId = fmtId == "" ? "main" : fmtId;
 | 
						|
    return (
 | 
						|
        <BlogPostProvider content={props.content} isBlogPostPage>
 | 
						|
            <HtmlClassNameProvider
 | 
						|
                className={clsx(
 | 
						|
                    ThemeClassNames.wrapper.blogPages,
 | 
						|
                    ThemeClassNames.page.blogPostPage
 | 
						|
                )}
 | 
						|
            >
 | 
						|
                <BlogPostPageMetadata />
 | 
						|
                <BlogPostPageContent sidebar={props.sidebar}>
 | 
						|
                    <BlogPostContent />
 | 
						|
 | 
						|
                    <DiscussionEmbed
 | 
						|
                        shortname="goauthentik-io"
 | 
						|
                        config={{
 | 
						|
                            url: "https://goauthentik.io" + props.route.path,
 | 
						|
                            identifier: disqusId,
 | 
						|
                            title: title,
 | 
						|
                        }}
 | 
						|
                    />
 | 
						|
                </BlogPostPageContent>
 | 
						|
            </HtmlClassNameProvider>
 | 
						|
        </BlogPostProvider>
 | 
						|
    );
 | 
						|
}
 |