/* * SonarQube * Copyright (C) 2009-2019 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import * as navigationTreeSonarCloud from 'Docs/../static/SonarCloudNavigationTree.json'; import * as navigationTreeSonarQube from 'Docs/../static/SonarQubeNavigationTree.json'; import { DocNavigationItem } from 'Docs/@types/types'; import * as React from 'react'; import Helmet from 'react-helmet'; import { Link } from 'react-router'; import { translate } from 'sonar-ui-common/helpers/l10n'; import { addSideBarClass, removeSideBarClass } from 'sonar-ui-common/helpers/pages'; import A11ySkipTarget from '../../../app/components/a11y/A11ySkipTarget'; import NotFound from '../../../app/components/NotFound'; import ScreenPositionHelper from '../../../components/common/ScreenPositionHelper'; import DocMarkdownBlock from '../../../components/docs/DocMarkdownBlock'; import { isSonarCloud } from '../../../helpers/system'; import getPages from '../pages'; import '../styles.css'; import Sidebar from './Sidebar'; interface Props { params: { splat?: string }; } export default class App extends React.PureComponent { mounted = false; pages = getPages(); componentDidMount() { addSideBarClass(); } componentWillUnmount() { removeSideBarClass(); } render() { const tree = isSonarCloud() ? ((navigationTreeSonarCloud as any).default as DocNavigationItem[]) : ((navigationTreeSonarQube as any).default as DocNavigationItem[]); const { splat = '' } = this.props.params; const page = this.pages.find(p => p.url === '/' + splat); const mainTitle = translate( 'documentation.page_title', isSonarCloud() ? 'sonarcloud' : 'sonarqube' ); if (!page) { return ( <> ); } const isIndex = splat === 'index'; return (
{!isSonarCloud() && } {({ top }) => (

{translate('documentation.page')}

)}
); } }