mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-01 19:27:48 +02:00
Google Chrome guesses the language if this is not present. Large quantities of source code can confuse it and lead to it selecting completely the wrong language.
138 lines
5.3 KiB
JavaScript
138 lines
5.3 KiB
JavaScript
/**
|
|
* Copyright (c) 2017-present, Facebook, Inc.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
const React = require('react');
|
|
const fs = require('fs');
|
|
const HeaderNav = require('./nav/HeaderNav.js');
|
|
const Head = require('./Head.js');
|
|
const Footer = require(process.cwd() + '/core/Footer.js');
|
|
const translation = require('../server/translation.js');
|
|
|
|
const CWD = process.cwd();
|
|
|
|
// Component used to provide same head, header, footer, other scripts to all pages
|
|
class Site extends React.Component {
|
|
render() {
|
|
const tagline = translation[this.props.language]
|
|
? translation[this.props.language]['localized-strings'].tagline
|
|
: this.props.config.tagline;
|
|
const title = this.props.title
|
|
? this.props.title + ' · ' + this.props.config.title
|
|
: (!this.props.config.disableTitleTagline &&
|
|
this.props.config.title + ' · ' + tagline) ||
|
|
this.props.config.title;
|
|
const description = this.props.description || tagline;
|
|
const url =
|
|
this.props.config.url +
|
|
this.props.config.baseUrl +
|
|
(this.props.url || 'index.html');
|
|
let latestVersion;
|
|
|
|
const highlightDefaultVersion = '9.12.0';
|
|
const highlightConfig = this.props.config.highlight || {
|
|
version: highlightDefaultVersion,
|
|
theme: 'default',
|
|
};
|
|
const highlightVersion = highlightConfig.version || highlightDefaultVersion;
|
|
if (fs.existsSync(CWD + '/versions.json')) {
|
|
latestVersion = require(CWD + '/versions.json')[0];
|
|
}
|
|
return (
|
|
<html lang={this.props.language}>
|
|
<Head
|
|
config={this.props.config}
|
|
description={description}
|
|
title={title}
|
|
url={url}
|
|
/>
|
|
<body className={this.props.className}>
|
|
<HeaderNav
|
|
config={this.props.config}
|
|
baseUrl={this.props.config.baseUrl}
|
|
title={this.props.config.title}
|
|
language={this.props.language}
|
|
version={this.props.version}
|
|
/>
|
|
<div className="navPusher">
|
|
{this.props.children}
|
|
<Footer config={this.props.config} language={this.props.language} />
|
|
</div>
|
|
{this.props.config.algolia && (
|
|
<script
|
|
type="text/javascript"
|
|
src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"
|
|
/>
|
|
)}
|
|
{this.props.config.gaTrackingId && (
|
|
<script
|
|
dangerouslySetInnerHTML={{
|
|
__html: `
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
|
|
|
ga('create', '${this.props.config.gaTrackingId}', 'auto');
|
|
ga('send', 'pageview');
|
|
`,
|
|
}}
|
|
/>
|
|
)}
|
|
{this.props.config.facebookAppId && (
|
|
<script
|
|
dangerouslySetInnerHTML={{
|
|
__html: `window.fbAsyncInit = function() {FB.init({appId:'${
|
|
this.props.config.facebookAppId
|
|
}',xfbml:true,version:'v2.7'});};(function(d, s, id){var js, fjs = d.getElementsByTagName(s)[0];if (d.getElementById(id)) {return;}js = d.createElement(s); js.id = id;js.src = '//connect.facebook.net/en_US/sdk.js';fjs.parentNode.insertBefore(js, fjs);}(document, 'script','facebook-jssdk'));
|
|
`,
|
|
}}
|
|
/>
|
|
)}
|
|
{this.props.config.twitter && (
|
|
<script
|
|
dangerouslySetInnerHTML={{
|
|
__html: `window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));`,
|
|
}}
|
|
/>
|
|
)}
|
|
{this.props.config.algolia &&
|
|
(this.props.config.algolia.algoliaOptions ? (
|
|
<script
|
|
dangerouslySetInnerHTML={{
|
|
__html: `
|
|
var search = docsearch({
|
|
apiKey: '${this.props.config.algolia.apiKey}',
|
|
indexName: '${this.props.config.algolia.indexName}',
|
|
inputSelector: '#search_input_react',
|
|
algoliaOptions: ${JSON.stringify(
|
|
this.props.config.algolia.algoliaOptions
|
|
)
|
|
.replace('VERSION', this.props.version || latestVersion)
|
|
.replace('LANGUAGE', this.props.language)}
|
|
});
|
|
`,
|
|
}}
|
|
/>
|
|
) : (
|
|
<script
|
|
dangerouslySetInnerHTML={{
|
|
__html: `
|
|
var search = docsearch({
|
|
apiKey: '${this.props.config.algolia.apiKey}',
|
|
indexName: '${this.props.config.algolia.indexName}',
|
|
inputSelector: '#search_input_react'
|
|
});
|
|
`,
|
|
}}
|
|
/>
|
|
))}
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|
|
}
|
|
module.exports = Site;
|