2015-02-12 04:26:43 +00:00
|
|
|
/**
|
2015-03-23 17:55:49 +00:00
|
|
|
* Copyright (c) 2015-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.
|
|
|
|
*
|
2015-02-12 04:26:43 +00:00
|
|
|
* @providesModule Site
|
|
|
|
*/
|
|
|
|
|
|
|
|
var React = require('React');
|
|
|
|
var HeaderLinks = require('HeaderLinks');
|
2016-02-11 14:16:34 +00:00
|
|
|
var Metadata = require('Metadata');
|
2015-02-12 04:26:43 +00:00
|
|
|
|
|
|
|
var Site = React.createClass({
|
|
|
|
render: function() {
|
2016-02-11 14:16:34 +00:00
|
|
|
const path = Metadata.config.RN_DEPLOYMENT_PATH;
|
2016-02-12 19:57:01 +00:00
|
|
|
const version = Metadata.config.RN_VERSION;
|
2016-03-09 21:57:54 +00:00
|
|
|
const algoliaVersion = version === 'next' ? 'master' : version;
|
2016-02-11 14:16:34 +00:00
|
|
|
var basePath = '/react-native/' + (path ? path + '/' : '');
|
2016-02-10 00:21:52 +00:00
|
|
|
var currentYear = (new Date()).getFullYear();
|
2016-08-30 06:08:50 +00:00
|
|
|
|
|
|
|
var title = this.props.title ? this.props.title : 'React Native | A framework for building native apps using React';
|
|
|
|
|
|
|
|
var twitterCardType = this.props.image? 'summary_large_image' : 'summary';
|
|
|
|
|
|
|
|
var metaTags = [
|
|
|
|
{ charSet: "utf-8" },
|
|
|
|
{
|
|
|
|
httpEquiv: "X-UA-Compatible",
|
|
|
|
content: "IE=edge,chrome=1",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "viewport",
|
|
|
|
content: "width=device-width",
|
|
|
|
},
|
|
|
|
// Facebook
|
|
|
|
{ property: "fb:app_id", content: "1677033832619985", },
|
|
|
|
{ property: "fb:admins", content: "121800083", },
|
|
|
|
// Open Graph
|
|
|
|
{
|
|
|
|
property: "og:site_name",
|
|
|
|
content: "React Native",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
property: "og:title",
|
|
|
|
content: title,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
property: "og:url",
|
|
|
|
content: "https://facebook.github.io/react-native/" + (this.props.path ? this.props.path : "index.html"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
property: "og:image",
|
|
|
|
content: this.props.image ? this.props.image : "http://facebook.github.io/react-native/img/opengraph.png",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
property: "og:description",
|
|
|
|
content: this.props.description ? this.props.description : "A framework for building native apps using React",
|
|
|
|
},
|
|
|
|
// Twitter Cards
|
|
|
|
{
|
|
|
|
name: "twitter:site",
|
|
|
|
content: "@reactnative",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "twitter:card",
|
|
|
|
content: twitterCardType,
|
|
|
|
},
|
|
|
|
];
|
|
|
|
|
|
|
|
var typeTags = [{
|
|
|
|
property: "og:type",
|
|
|
|
content: "website",
|
|
|
|
}];
|
|
|
|
if (this.props.author) {
|
|
|
|
typeTags = [{
|
|
|
|
property: "og:type",
|
|
|
|
content: "article",
|
|
|
|
}, {
|
|
|
|
property: "article:author",
|
|
|
|
content: this.props.author,
|
|
|
|
}];
|
|
|
|
}
|
|
|
|
metaTags.push(...typeTags);
|
|
|
|
|
|
|
|
if (this.props.authorTwitter) {
|
|
|
|
metaTags.push({
|
|
|
|
name: "twitter:creator",
|
|
|
|
content: "@" + this.props.authorTwitter,
|
|
|
|
});
|
|
|
|
}
|
2016-08-25 18:02:27 +00:00
|
|
|
|
2015-02-12 04:26:43 +00:00
|
|
|
return (
|
|
|
|
<html>
|
|
|
|
<head>
|
2015-08-02 11:45:40 +00:00
|
|
|
<title>{title}</title>
|
2016-08-30 06:08:50 +00:00
|
|
|
{
|
|
|
|
metaTags.map((tag) =>
|
|
|
|
<meta {...tag} />)
|
|
|
|
}
|
2015-02-12 04:26:43 +00:00
|
|
|
|
2016-02-11 14:16:34 +00:00
|
|
|
<base href={basePath} />
|
|
|
|
|
2015-12-29 17:43:40 +00:00
|
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css" />
|
|
|
|
|
2016-02-11 14:16:34 +00:00
|
|
|
<link rel="shortcut icon" href="img/favicon.png?2" />
|
|
|
|
<link rel="stylesheet" href="css/react-native.css" />
|
2015-02-12 04:26:43 +00:00
|
|
|
|
|
|
|
<script type="text/javascript" src="//use.typekit.net/vqa1hcx.js"></script>
|
|
|
|
<script type="text/javascript">{'try{Typekit.load();}catch(e){}'}</script>
|
|
|
|
</head>
|
|
|
|
<body>
|
2016-08-23 18:59:26 +00:00
|
|
|
<script dangerouslySetInnerHTML={{__html: `window.fbAsyncInit = function() {FB.init({appId:'1677033832619985',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'));`}} />
|
|
|
|
<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"));`}} />
|
2015-02-12 04:26:43 +00:00
|
|
|
<div className="container">
|
|
|
|
<div className="nav-main">
|
|
|
|
<div className="wrap">
|
2016-02-11 14:16:34 +00:00
|
|
|
<a className="nav-home" href="">
|
|
|
|
<img src="img/header_logo.png" />
|
2015-02-12 04:26:43 +00:00
|
|
|
React Native
|
|
|
|
</a>
|
2016-02-12 19:57:01 +00:00
|
|
|
<a className="nav-version" href="/react-native/versions.html">
|
|
|
|
{version}
|
|
|
|
</a>
|
2015-02-12 04:26:43 +00:00
|
|
|
<HeaderLinks section={this.props.section} />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
{this.props.children}
|
|
|
|
|
|
|
|
<footer className="wrap">
|
2016-02-10 00:21:52 +00:00
|
|
|
<div className="center">© {currentYear} Facebook Inc.</div>
|
2015-02-12 04:26:43 +00:00
|
|
|
</footer>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div id="fb-root" />
|
2016-03-09 21:57:54 +00:00
|
|
|
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script>
|
2015-02-12 04:26:43 +00:00
|
|
|
<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','//www.google-analytics.com/analytics.js','ga');
|
2015-02-12 19:52:23 +00:00
|
|
|
ga('create', 'UA-41298772-2', 'facebook.github.io');
|
2015-02-12 04:26:43 +00:00
|
|
|
ga('send', 'pageview');
|
|
|
|
|
|
|
|
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)
|
|
|
|
){js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";
|
|
|
|
fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
|
2016-03-09 21:57:54 +00:00
|
|
|
|
|
|
|
docsearch({
|
|
|
|
apiKey: '2c98749b4a1e588efec53b2acec13025',
|
|
|
|
indexName: 'react-native-versions',
|
|
|
|
inputSelector: '#algolia-doc-search',
|
2016-03-10 03:35:37 +00:00
|
|
|
algoliaOptions: { facetFilters: [ "tags:${algoliaVersion}" ], hitsPerPage: 5 }
|
2016-03-09 21:57:54 +00:00
|
|
|
});
|
2015-02-12 04:26:43 +00:00
|
|
|
`}} />
|
2016-02-11 14:16:34 +00:00
|
|
|
<script src="js/scripts.js" />
|
2015-02-12 04:26:43 +00:00
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
module.exports = Site;
|