docusaurus/lib/core/BlogPostLayout.js

94 lines
2.7 KiB
JavaScript
Raw Normal View History

2017-07-07 13:28:29 -04:00
/**
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
2017-07-10 19:38:35 -04:00
const React = require("react");
const BlogPost = require("./BlogPost.js");
const BlogSidebar = require("./BlogSidebar.js");
const Container = require("./Container.js");
const Site = require("./Site.js");
2017-07-07 13:28:29 -04:00
2017-08-15 19:55:38 -04:00
// used for entire blog posts, i.e., each written blog article with sidebar with site header/footer
2017-07-07 13:28:29 -04:00
class BlogPostLayout extends React.Component {
renderSocialButtons() {
const post = this.props.metadata;
const fbLike = this.props.config.facebookAppId ?
<div
className="fb-like"
data-layout="standard"
data-share="true"
data-width="225"
data-show-faces="false">
</div>
: null;
const twitterShare = this.props.config.twitter ?
<a href="https://twitter.com/share" className="twitter-share-button" data-text={post.title} data-url={this.props.config.url + this.props.config.baseUrl + "blog/" + post.path} data-related={this.props.config.twitter} data-via={post.authorTwitter} data-show-count="false">Tweet</a>
: null;
if (!fbLike && !twitterShare) {
return;
}
return (
<div>
<aside className="entry-share">
<div className="social-buttons">
{fbLike}
{twitterShare}
</div>
</aside>
</div>
);
}
2017-07-07 13:28:29 -04:00
render() {
return (
<Site
className="sideNavVisible"
2017-07-10 19:38:35 -04:00
url={"blog/" + this.props.metadata.path}
2017-07-07 13:28:29 -04:00
title={this.props.metadata.title}
2017-07-10 19:38:35 -04:00
language={"en"}
description={this.props.children.trim().split("\n")[0]}
2017-07-07 13:28:29 -04:00
config={this.props.config}
>
<div className="docMainWrapper wrapper">
2017-07-10 19:38:35 -04:00
<BlogSidebar
language={"en"}
current={this.props.metadata}
config={this.props.config}
/>
2017-07-07 13:28:29 -04:00
<Container className="mainContainer documentContainer postContainer blogContainer">
<div className="lonePost">
<BlogPost
post={this.props.metadata}
content={this.props.children}
2017-07-10 19:38:35 -04:00
language={"en"}
2017-07-07 13:28:29 -04:00
config={this.props.config}
/>
{this.renderSocialButtons()}
2017-07-07 13:28:29 -04:00
</div>
2017-07-17 19:18:14 -04:00
<div className="blog-recent">
<a
2017-07-17 19:18:14 -04:00
className="button"
href={this.props.config.baseUrl + "blog"}
>
Recent Posts
</a>
</div>
2017-07-07 13:28:29 -04:00
</Container>
</div>
</Site>
);
}
}
module.exports = BlogPostLayout;