From b99383b16be91ad2d2dbbcf3a75b6924fdc512cb Mon Sep 17 00:00:00 2001 From: Philippe Perrin Date: Wed, 17 Nov 2021 16:17:38 +0100 Subject: [PATCH] SONAR-15614 Drop the About page --- .../main/js/app/components/GlobalFooter.tsx | 5 - .../src/main/js/app/components/Landing.tsx | 35 +-- .../components/__tests__/Landing-test.tsx} | 29 ++- .../__snapshots__/GlobalFooter-test.tsx.snap | 22 -- .../components/nav/global/GlobalNavUser.tsx | 11 +- .../src/main/js/app/utils/startReactApp.tsx | 2 - .../src/main/js/apps/about/actions.ts | 31 --- .../js/apps/about/components/AboutApp.tsx | 209 ------------------ .../apps/about/components/AboutCleanCode.tsx | 36 --- .../apps/about/components/AboutLanguages.tsx | 69 ------ .../apps/about/components/AboutLeakPeriod.tsx | 36 --- .../apps/about/components/AboutProjects.tsx | 47 ---- .../about/components/AboutQualityGates.tsx | 36 --- .../about/components/AboutQualityModel.tsx | 78 ------- .../apps/about/components/AboutScanners.tsx | 76 ------- .../apps/about/components/AboutStandards.tsx | 79 ------- .../apps/about/components/EntryIssueTypes.tsx | 103 --------- .../js/apps/about/components/ReadMore.tsx | 36 --- .../components/__tests__/AboutApp-test.tsx | 111 ---------- .../__tests__/AboutScanners-test.tsx | 31 --- .../__snapshots__/AboutApp-test.tsx.snap | 181 --------------- .../__snapshots__/AboutScanners-test.tsx.snap | 108 --------- .../EntryIssueTypes-test.tsx.snap | 117 ---------- .../src/main/js/apps/about/routes.ts | 26 --- .../src/main/js/apps/about/styles.css | 177 --------------- .../resources/org/sonar/l10n/core.properties | 40 ---- 26 files changed, 31 insertions(+), 1700 deletions(-) rename server/sonar-web/src/main/js/{apps/about/components/__tests__/EntryIssueTypes-test.tsx => app/components/__tests__/Landing-test.tsx} (56%) delete mode 100644 server/sonar-web/src/main/js/apps/about/actions.ts delete mode 100644 server/sonar-web/src/main/js/apps/about/components/AboutApp.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/AboutCleanCode.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/AboutLanguages.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/AboutLeakPeriod.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/AboutProjects.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/AboutQualityGates.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/AboutQualityModel.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/AboutScanners.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/AboutStandards.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/EntryIssueTypes.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/ReadMore.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/__tests__/AboutApp-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/__tests__/AboutScanners-test.tsx delete mode 100644 server/sonar-web/src/main/js/apps/about/components/__tests__/__snapshots__/AboutApp-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/about/components/__tests__/__snapshots__/AboutScanners-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/about/components/__tests__/__snapshots__/EntryIssueTypes-test.tsx.snap delete mode 100644 server/sonar-web/src/main/js/apps/about/routes.ts delete mode 100644 server/sonar-web/src/main/js/apps/about/styles.css diff --git a/server/sonar-web/src/main/js/app/components/GlobalFooter.tsx b/server/sonar-web/src/main/js/app/components/GlobalFooter.tsx index 12bf494a218..bfc13b67018 100644 --- a/server/sonar-web/src/main/js/app/components/GlobalFooter.tsx +++ b/server/sonar-web/src/main/js/app/components/GlobalFooter.tsx @@ -95,11 +95,6 @@ export default function GlobalFooter({ {translate('footer.web_api')} )} - {!hideLoggedInInfo && ( -
  • - {translate('footer.about')} -
  • - )} ); diff --git a/server/sonar-web/src/main/js/app/components/Landing.tsx b/server/sonar-web/src/main/js/app/components/Landing.tsx index f9bbee068dd..cf30a1dc2a2 100644 --- a/server/sonar-web/src/main/js/app/components/Landing.tsx +++ b/server/sonar-web/src/main/js/app/components/Landing.tsx @@ -17,34 +17,25 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import { Location } from 'history'; import * as React from 'react'; -import { connect } from 'react-redux'; -import { withRouter, WithRouterProps } from 'react-router'; +import { withCurrentUser } from '../../components/hoc/withCurrentUser'; +import { Router, withRouter } from '../../components/hoc/withRouter'; import { getHomePageUrl } from '../../helpers/urls'; import { isLoggedIn } from '../../helpers/users'; -import { getCurrentUser, Store } from '../../store/rootReducer'; -interface StateProps { - currentUser: T.CurrentUser | undefined; +export interface LandingProps { + currentUser: T.CurrentUser; + router: Router; } -interface OwnProps { - location: Location; -} - -class Landing extends React.PureComponent { +export class Landing extends React.PureComponent { componentDidMount() { const { currentUser } = this.props; - if (currentUser && isLoggedIn(currentUser)) { - if (currentUser.homepage) { - const homepage = getHomePageUrl(currentUser.homepage); - this.props.router.replace(homepage); - } else { - this.props.router.replace('/projects'); - } + if (isLoggedIn(currentUser) && currentUser.homepage) { + const homepage = getHomePageUrl(currentUser.homepage); + this.props.router.replace(homepage); } else { - this.props.router.replace('/about'); + this.props.router.replace('/projects'); } } @@ -53,8 +44,4 @@ class Landing extends React.PureComponent ({ - currentUser: getCurrentUser(state) -}); - -export default withRouter(connect(mapStateToProps)(Landing)); +export default withRouter(withCurrentUser(Landing)); diff --git a/server/sonar-web/src/main/js/apps/about/components/__tests__/EntryIssueTypes-test.tsx b/server/sonar-web/src/main/js/app/components/__tests__/Landing-test.tsx similarity index 56% rename from server/sonar-web/src/main/js/apps/about/components/__tests__/EntryIssueTypes-test.tsx rename to server/sonar-web/src/main/js/app/components/__tests__/Landing-test.tsx index e5d73754746..afb7e647292 100644 --- a/server/sonar-web/src/main/js/apps/about/components/__tests__/EntryIssueTypes-test.tsx +++ b/server/sonar-web/src/main/js/app/components/__tests__/Landing-test.tsx @@ -17,22 +17,27 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + import { shallow } from 'enzyme'; import * as React from 'react'; -import EntryIssueTypes, { EntryIssueTypesProps } from '../EntryIssueTypes'; - -it('should render correctly', () => { - const wrapper = shallowRender(); - - expect(wrapper).toMatchSnapshot('loading'); - - wrapper.setProps({ loading: false }); +import { mockCurrentUser, mockLoggedInUser, mockRouter } from '../../../helpers/testMocks'; +import { Landing } from '../Landing'; - expect(wrapper).toMatchSnapshot('loading'); +it.each([ + [mockCurrentUser(), '/projects'], + [mockLoggedInUser(), '/projects'], + [ + mockLoggedInUser({ homepage: { type: 'ISSUES' } }), + expect.objectContaining({ pathname: '/issues' }) + ] +])('should render correctly', (currentUser: T.CurrentUser, homepageUrl: string) => { + const router = mockRouter(); + shallowRender({ router, currentUser }); + expect(router.replace).toHaveBeenCalledWith(homepageUrl); }); -function shallowRender(props: Partial = {}) { - return shallow( - +function shallowRender(props: Partial = {}) { + return shallow( + ); } diff --git a/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/GlobalFooter-test.tsx.snap b/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/GlobalFooter-test.tsx.snap index d0526336fd9..61e974fab75 100644 --- a/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/GlobalFooter-test.tsx.snap +++ b/server/sonar-web/src/main/js/app/components/__tests__/__snapshots__/GlobalFooter-test.tsx.snap @@ -74,17 +74,6 @@ exports[`should display the sq version 1`] = ` footer.web_api -
  • - - footer.about - -
  • `; @@ -215,17 +204,6 @@ exports[`should render the only logged in information 1`] = ` footer.web_api -
  • - - footer.about - -
  • `; diff --git a/server/sonar-web/src/main/js/app/components/nav/global/GlobalNavUser.tsx b/server/sonar-web/src/main/js/app/components/nav/global/GlobalNavUser.tsx index 8d808a68ac4..f1a1d0a989b 100644 --- a/server/sonar-web/src/main/js/app/components/nav/global/GlobalNavUser.tsx +++ b/server/sonar-web/src/main/js/app/components/nav/global/GlobalNavUser.tsx @@ -35,14 +35,9 @@ interface Props { export class GlobalNavUser extends React.PureComponent { handleLogin = (event: React.SyntheticEvent) => { event.preventDefault(); - const shouldReturnToCurrentPage = window.location.pathname !== `${getBaseUrl()}/about`; - if (shouldReturnToCurrentPage) { - const returnTo = encodeURIComponent(window.location.pathname + window.location.search); - window.location.href = - getBaseUrl() + `/sessions/new?return_to=${returnTo}${window.location.hash}`; - } else { - window.location.href = `${getBaseUrl()}/sessions/new`; - } + const returnTo = encodeURIComponent(window.location.pathname + window.location.search); + window.location.href = + getBaseUrl() + `/sessions/new?return_to=${returnTo}${window.location.hash}`; }; handleLogout = (event: React.SyntheticEvent) => { diff --git a/server/sonar-web/src/main/js/app/utils/startReactApp.tsx b/server/sonar-web/src/main/js/app/utils/startReactApp.tsx index 6a195e67229..e5eaed2b30a 100644 --- a/server/sonar-web/src/main/js/app/utils/startReactApp.tsx +++ b/server/sonar-web/src/main/js/app/utils/startReactApp.tsx @@ -26,7 +26,6 @@ import { HelmetProvider } from 'react-helmet-async'; import { IntlProvider } from 'react-intl'; import { Provider } from 'react-redux'; import { IndexRoute, Redirect, Route, RouteConfig, RouteProps, Router } from 'react-router'; -import aboutRoutes from '../../apps/about/routes'; import accountRoutes from '../../apps/account/routes'; import applicationConsoleRoutes from '../../apps/application-console/routes'; import applicationSettingsRoutes from '../../apps/application-settings/routes'; @@ -295,7 +294,6 @@ export default function startReactApp( import('../components/Landing'))} /> - diff --git a/server/sonar-web/src/main/js/apps/about/actions.ts b/server/sonar-web/src/main/js/apps/about/actions.ts deleted file mode 100644 index b1cd8ec733f..00000000000 --- a/server/sonar-web/src/main/js/apps/about/actions.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 { Dispatch } from 'redux'; -import { getValues } from '../../api/settings'; -import { receiveValues } from '../settings/store/values'; - -export function fetchAboutPageSettings() { - return (dispatch: Dispatch) => { - const keys = ['sonar.lf.aboutText']; - return getValues({ keys: keys.join() }).then(values => { - dispatch(receiveValues(keys, values)); - }); - }; -} diff --git a/server/sonar-web/src/main/js/apps/about/components/AboutApp.tsx b/server/sonar-web/src/main/js/apps/about/components/AboutApp.tsx deleted file mode 100644 index 56096b2673d..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/AboutApp.tsx +++ /dev/null @@ -1,209 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 { Location } from 'history'; -import { keyBy } from 'lodash'; -import * as React from 'react'; -import { connect } from 'react-redux'; -import { Link } from 'react-router'; -import { searchProjects } from '../../../api/components'; -import { getFacet } from '../../../api/issues'; -import A11ySkipTarget from '../../../app/components/a11y/A11ySkipTarget'; -import withIndexationContext, { - WithIndexationContextProps -} from '../../../components/hoc/withIndexationContext'; -import { translate } from '../../../helpers/l10n'; -import { addWhitePageClass, removeWhitePageClass } from '../../../helpers/pages'; -import { sanitizeString } from '../../../helpers/sanitize'; -import { - getAppState, - getCurrentUser, - getGlobalSettingValue, - Store -} from '../../../store/rootReducer'; -import { fetchAboutPageSettings } from '../actions'; -import '../styles.css'; -import AboutCleanCode from './AboutCleanCode'; -import AboutLanguages from './AboutLanguages'; -import AboutLeakPeriod from './AboutLeakPeriod'; -import AboutProjects from './AboutProjects'; -import AboutQualityGates from './AboutQualityGates'; -import AboutQualityModel from './AboutQualityModel'; -import AboutScanners from './AboutScanners'; -import AboutStandards from './AboutStandards'; -import EntryIssueTypes from './EntryIssueTypes'; - -interface Props extends WithIndexationContextProps { - currentUser: T.CurrentUser; - customText?: string; - fetchAboutPageSettings: () => Promise; - location: Location; -} - -interface State { - issueTypes?: T.Dict<{ count: number }>; - loading: boolean; - projectsCount: number; -} - -export class AboutApp extends React.PureComponent { - mounted = false; - - state: State = { - loading: true, - projectsCount: 0 - }; - - componentDidMount() { - this.mounted = true; - this.loadData(); - addWhitePageClass(); - } - - componentWillUnmount() { - this.mounted = false; - removeWhitePageClass(); - } - - loadProjects() { - return searchProjects({ ps: 1 }).then(r => r.paging.total); - } - - loadIssues() { - return getFacet({ resolved: false }, 'types'); - } - - loadCustomText() { - return this.props.fetchAboutPageSettings(); - } - - loadData() { - Promise.all([ - this.loadProjects(), - this.props.indexationContext.status.isCompleted - ? this.loadIssues().catch(() => undefined) - : Promise.resolve(undefined), - this.loadCustomText() - ]).then( - responses => { - if (this.mounted) { - const [projectsCount = 0, issues] = responses; - const issueTypes = issues && keyBy(issues.facet, 'val'); - this.setState({ projectsCount, issueTypes, loading: false }); - } - }, - () => { - if (this.mounted) { - this.setState({ loading: false }); - } - } - ); - } - - render() { - const { customText } = this.props; - const { loading, issueTypes, projectsCount } = this.state; - - let bugs; - let vulnerabilities; - let codeSmells; - if (!loading && issueTypes) { - bugs = issueTypes['BUG'] && issueTypes['BUG'].count; - vulnerabilities = issueTypes['VULNERABILITY'] && issueTypes['VULNERABILITY'].count; - codeSmells = issueTypes['CODE_SMELL'] && issueTypes['CODE_SMELL'].count; - } - - return ( -
    - - -
    -
    -

    {translate('layout.sonar.slogan')}

    - {!this.props.currentUser.isLoggedIn && ( - - {translate('layout.login')} - - )} - - {translate('about_page.read_documentation')} - -
    - -
    - - {issueTypes && ( - - )} -
    -
    - - {customText && ( -
    - )} - - - - - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - -
    -
    - - -
    - ); - } -} - -const mapStateToProps = (state: Store) => { - const customText = getGlobalSettingValue(state, 'sonar.lf.aboutText'); - return { - appState: getAppState(state), - currentUser: getCurrentUser(state), - customText: customText && customText.value - }; -}; - -const mapDispatchToProps = { fetchAboutPageSettings } as any; - -export default withIndexationContext(connect(mapStateToProps, mapDispatchToProps)(AboutApp)); diff --git a/server/sonar-web/src/main/js/apps/about/components/AboutCleanCode.tsx b/server/sonar-web/src/main/js/apps/about/components/AboutCleanCode.tsx deleted file mode 100644 index 06c3895fda8..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/AboutCleanCode.tsx +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 React from 'react'; -import { translate } from '../../../helpers/l10n'; -import ReadMore from './ReadMore'; - -const link = '/documentation/user-guide/issues/'; - -export default function AboutCleanCode() { - return ( -
    -

    {translate('about_page.clean_code')}

    -
    -

    {translate('about_page.clean_code.text')}

    - -
    -
    - ); -} diff --git a/server/sonar-web/src/main/js/apps/about/components/AboutLanguages.tsx b/server/sonar-web/src/main/js/apps/about/components/AboutLanguages.tsx deleted file mode 100644 index dec68ff5227..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/AboutLanguages.tsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 React from 'react'; -import { translate } from '../../../helpers/l10n'; - -const languages = [ - { name: 'Java', url: 'https://redirect.sonarsource.com/plugins/java.html' }, - { name: 'C/C++', url: 'https://redirect.sonarsource.com/plugins/cpp.html' }, - { name: 'C#', url: 'https://redirect.sonarsource.com/plugins/csharp.html' }, - { name: 'COBOL', url: 'https://redirect.sonarsource.com/plugins/cobol.html' }, - { name: 'ABAP', url: 'https://redirect.sonarsource.com/plugins/abap.html' }, - { name: 'HTML', url: 'https://redirect.sonarsource.com/plugins/web.html' }, - { name: 'RPG', url: 'https://redirect.sonarsource.com/plugins/rpg.html' }, - { name: 'JavaScript', url: 'https://redirect.sonarsource.com/plugins/javascript.html' }, - { name: 'TypeScript', url: 'https://redirect.sonarsource.com/plugins/typescript.html' }, - { name: 'Objective C', url: 'https://redirect.sonarsource.com/plugins/objectivec.html' }, - { name: 'XML', url: 'https://redirect.sonarsource.com/plugins/xml.html' }, - { name: 'VB.NET', url: 'https://redirect.sonarsource.com/plugins/vbnet.html' }, - { name: 'PL/SQL', url: 'https://redirect.sonarsource.com/plugins/plsql.html' }, - { name: 'T-SQL', url: 'https://redirect.sonarsource.com/plugins/tsql.html' }, - { name: 'Flex', url: 'https://redirect.sonarsource.com/plugins/flex.html' }, - { name: 'Python', url: 'https://redirect.sonarsource.com/plugins/python.html' }, - { name: 'Groovy', url: 'https://redirect.sonarsource.com/plugins/groovy.html' }, - { name: 'PHP', url: 'https://redirect.sonarsource.com/plugins/php.html' }, - { name: 'Swift', url: 'https://redirect.sonarsource.com/plugins/swift.html' }, - { name: 'Visual Basic', url: 'https://redirect.sonarsource.com/plugins/vb.html' }, - { name: 'PL/I', url: 'https://redirect.sonarsource.com/plugins/pli.html' } -]; - -const half = (languages.length + 1) / 2; - -export default function AboutLanguages() { - return ( -
    -

    {translate('about_page.languages')}

    -
    -

    {translate('about_page.languages.text')}

    - -
    -
    - ); -} diff --git a/server/sonar-web/src/main/js/apps/about/components/AboutLeakPeriod.tsx b/server/sonar-web/src/main/js/apps/about/components/AboutLeakPeriod.tsx deleted file mode 100644 index 5866a83a6db..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/AboutLeakPeriod.tsx +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 React from 'react'; -import { translate } from '../../../helpers/l10n'; -import ReadMore from './ReadMore'; - -const link = '/documentation/user-guide/clean-as-you-code/'; - -export default function AboutLeakPeriod() { - return ( -
    -

    {translate('about_page.fix_the_leak')}

    -
    -

    {translate('about_page.fix_the_leak_on_new_code.text')}

    - -
    -
    - ); -} diff --git a/server/sonar-web/src/main/js/apps/about/components/AboutProjects.tsx b/server/sonar-web/src/main/js/apps/about/components/AboutProjects.tsx deleted file mode 100644 index c9d745e20f1..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/AboutProjects.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 React from 'react'; -import { Link } from 'react-router'; -import { translate } from '../../../helpers/l10n'; -import { formatMeasure } from '../../../helpers/measures'; - -interface Props { - count: number; - loading: boolean; -} - -export default function AboutProjects({ count, loading }: Props) { - return ( -
    - {loading ? ( - - ) : ( -
    -
    - - {formatMeasure(count, 'INT')} - -
    -
    {translate('about_page.projects_analyzed')}
    -
    - )} -
    - ); -} diff --git a/server/sonar-web/src/main/js/apps/about/components/AboutQualityGates.tsx b/server/sonar-web/src/main/js/apps/about/components/AboutQualityGates.tsx deleted file mode 100644 index f97c42ab4b0..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/AboutQualityGates.tsx +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 React from 'react'; -import { translate } from '../../../helpers/l10n'; -import ReadMore from './ReadMore'; - -const link = '/documentation/user-guide/quality-gates/'; - -export default function AboutQualityGates() { - return ( -
    -

    {translate('about_page.quality_gates')}

    -
    -

    {translate('about_page.quality_gates.text')}

    - -
    -
    - ); -} diff --git a/server/sonar-web/src/main/js/apps/about/components/AboutQualityModel.tsx b/server/sonar-web/src/main/js/apps/about/components/AboutQualityModel.tsx deleted file mode 100644 index d2a97c43087..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/AboutQualityModel.tsx +++ /dev/null @@ -1,78 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 React from 'react'; -import BugIcon from '../../../components/icons/BugIcon'; -import CodeSmellIcon from '../../../components/icons/CodeSmellIcon'; -import SecurityHotspotIcon from '../../../components/icons/SecurityHotspotIcon'; -import VulnerabilityIcon from '../../../components/icons/VulnerabilityIcon'; -import { translate } from '../../../helpers/l10n'; - -export default function AboutQualityModel() { - return ( -
    -

    {translate('about_page.quality_model')}

    - -
    -
    -
    -

    {translate('metric_domain.Reliability')}

    -
    - -
    -

    - {translate('issue.type.BUG.plural')}{' '} - {translate('about_page.quality_model.bugs')} -

    -
    - -
    -

    {translate('metric_domain.Security')}

    -
    - -
    -

    - {translate('issue.type.VULNERABILITY.plural')}{' '} - {translate('about_page.quality_model.vulnerabilities')} -

    -
    -
    - -
    -

    - {translate('issue.type.SECURITY_HOTSPOT.plural')}{' '} - {translate('about_page.quality_model.security_hotspots')} -

    -
    - -
    -

    {translate('metric_domain.Maintainability')}

    -
    - -
    -

    - {translate('issue.type.CODE_SMELL.plural')}{' '} - {translate('about_page.quality_model.code_smells')} -

    -
    -
    -
    -
    - ); -} diff --git a/server/sonar-web/src/main/js/apps/about/components/AboutScanners.tsx b/server/sonar-web/src/main/js/apps/about/components/AboutScanners.tsx deleted file mode 100644 index f557b7966e3..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/AboutScanners.tsx +++ /dev/null @@ -1,76 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 React from 'react'; -import { Link } from 'react-router'; -import { translate } from '../../../helpers/l10n'; -import { getBaseUrl } from '../../../helpers/system'; - -const scanners = [ - { - key: 'sonarqube', - link: '/documentation/analysis/scan/sonarscanner/' - }, - { - key: 'msbuild', - link: '/documentation/analysis/scan/sonarscanner-for-msbuild/' - }, - { - key: 'maven', - link: '/documentation/analysis/scan/sonarscanner-for-maven/' - }, - { - key: 'gradle', - link: '/documentation/analysis/scan/sonarscanner-for-gradle/' - }, - { - key: 'jenkins', - link: '/documentation/analysis/scan/sonarscanner-for-jenkins/' - }, - { - key: 'ant', - link: '/documentation/analysis/scan/sonarscanner-for-ant/' - } -]; - -export default function AboutScanners() { - return ( -
    -

    {translate('about_page.scanners')}

    -
    -

    {translate('about_page.scanners.text')}

    -
    - {scanners.map(scanner => ( - - {translate('about_page.scanners', - - ))} -
    -
    -
    - ); -} diff --git a/server/sonar-web/src/main/js/apps/about/components/AboutStandards.tsx b/server/sonar-web/src/main/js/apps/about/components/AboutStandards.tsx deleted file mode 100644 index b756bdbf0d4..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/AboutStandards.tsx +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 React from 'react'; -import { Link } from 'react-router'; -import TagsIcon from '../../../components/icons/TagsIcon'; -import { translate } from '../../../helpers/l10n'; -import { getRulesUrl } from '../../../helpers/urls'; -import ReadMore from './ReadMore'; - -const link = '/documentation/user-guide/rules/'; - -const owaspTags = - 'owasp-a1,owasp-a2,owasp-a3,owasp-a4,owasp-a5,owasp-a6,owasp-a7,owasp-a8,owasp-a9,owasp-a10'; -const sans25Tags = 'sans-top25-porous,sans-top25-risky,sans-top25-insecure'; - -export default function AboutStandards() { - return ( -
    -

    {translate('about_page.standards')}

    -
    -

    {translate('about_page.standards.text')}

    - -
    -
      -
    • - - - MISRA - -
    • -
    • - - - CERT - -
    • -
    • - - - CWE - -
    • -
    • - - - OWASP Top 10 - -
    • -
    • - - - SANS Top 25 - -
    • -
    -
    - - -
    -
    - ); -} diff --git a/server/sonar-web/src/main/js/apps/about/components/EntryIssueTypes.tsx b/server/sonar-web/src/main/js/apps/about/components/EntryIssueTypes.tsx deleted file mode 100644 index 7f3e3f06d03..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/EntryIssueTypes.tsx +++ /dev/null @@ -1,103 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 React from 'react'; -import { Link } from 'react-router'; -import BugIcon from '../../../components/icons/BugIcon'; -import CodeSmellIcon from '../../../components/icons/CodeSmellIcon'; -import VulnerabilityIcon from '../../../components/icons/VulnerabilityIcon'; -import { translate } from '../../../helpers/l10n'; -import { formatMeasure } from '../../../helpers/measures'; -import { getIssuesUrl } from '../../../helpers/urls'; - -export interface EntryIssueTypesProps { - bugs?: number; - codeSmells?: number; - loading: boolean; - vulnerabilities?: number; -} - -export default function EntryIssueTypes({ - bugs, - codeSmells, - loading, - vulnerabilities -}: EntryIssueTypesProps) { - return ( -
    - {loading ? ( - - ) : ( - - - - - - - - - - - - - - - -
    - - {formatMeasure(bugs, 'SHORT_INT')} - - - - - - {translate('issue.type.BUG.plural')} -
    - - {formatMeasure(vulnerabilities, 'SHORT_INT')} - - - - - - {translate('issue.type.VULNERABILITY.plural')} -
    - - {formatMeasure(codeSmells, 'SHORT_INT')} - - - - - - {translate('issue.type.CODE_SMELL.plural')} -
    - )} -
    - ); -} diff --git a/server/sonar-web/src/main/js/apps/about/components/ReadMore.tsx b/server/sonar-web/src/main/js/apps/about/components/ReadMore.tsx deleted file mode 100644 index 9cd05e74d7c..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/ReadMore.tsx +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 React from 'react'; -import { Link } from 'react-router'; -import { translate } from '../../../helpers/l10n'; - -interface Props { - link: string; -} - -export default function ReadMore({ link }: Props) { - return ( -
    - - {translate('about_page.read_more')} - -
    - ); -} diff --git a/server/sonar-web/src/main/js/apps/about/components/__tests__/AboutApp-test.tsx b/server/sonar-web/src/main/js/apps/about/components/__tests__/AboutApp-test.tsx deleted file mode 100644 index 4d814ae0698..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/__tests__/AboutApp-test.tsx +++ /dev/null @@ -1,111 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 { shallow } from 'enzyme'; -import * as React from 'react'; -import { searchProjects } from '../../../../api/components'; -import { getFacet } from '../../../../api/issues'; -import { addWhitePageClass, removeWhitePageClass } from '../../../../helpers/pages'; -import { mockCurrentUser, mockLocation } from '../../../../helpers/testMocks'; -import { waitAndUpdate } from '../../../../helpers/testUtils'; -import { AboutApp } from '../AboutApp'; -import EntryIssueTypes from '../EntryIssueTypes'; - -jest.mock('../../../../helpers/pages', () => ({ - addWhitePageClass: jest.fn(), - removeWhitePageClass: jest.fn() -})); - -jest.mock('../../../../api/components', () => ({ - searchProjects: jest.fn().mockResolvedValue({ paging: { total: 5 } }) -})); - -jest.mock('../../../../api/issues', () => ({ - getFacet: jest.fn().mockResolvedValue({ - facet: [ - { count: 5, val: 'CODE_SMELL' }, - { count: 10, val: 'BUG' }, - { count: 0, val: 'VULNERABILITY' }, - { count: 5, val: 'SECURITY_HOTSPOT' } - ] - }) -})); - -jest.mock( - '../../../../app/components/GlobalContainer', - () => - class GlobalContainer extends React.Component { - static displayName = 'GlobalContainer'; - render() { - return this.props.children; - } - } -); - -it('should render correctly', async () => { - const wrapper = shallowRender(); - await waitAndUpdate(wrapper); - - expect(wrapper).toMatchSnapshot(); - expect(addWhitePageClass).toBeCalled(); - - wrapper.unmount(); - expect(removeWhitePageClass).toBeCalled(); - - expect( - shallowRender({ - indexationContext: { - status: { isCompleted: false, percentCompleted: 10, hasFailures: false } - } - }) - ).toMatchSnapshot('when indexation not complete'); -}); - -it('should load issues, projects, and custom text upon shallowing', () => { - const fetchAboutPageSettings = jest.fn(); - shallowRender({ fetchAboutPageSettings }); - expect(fetchAboutPageSettings).toBeCalled(); - expect(searchProjects).toBeCalled(); - expect(getFacet).toBeCalled(); -}); - -it('should not display issues if the WS return an http error', async () => { - (getFacet as jest.Mock).mockRejectedValueOnce(undefined); - - const wrapper = shallowRender(); - - await waitAndUpdate(wrapper); - - expect(wrapper.find(EntryIssueTypes).exists()).toBe(false); -}); - -function shallowRender(props: Partial = {}) { - return shallow( - - ); -} diff --git a/server/sonar-web/src/main/js/apps/about/components/__tests__/AboutScanners-test.tsx b/server/sonar-web/src/main/js/apps/about/components/__tests__/AboutScanners-test.tsx deleted file mode 100644 index 5f1e0e03ad4..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/__tests__/AboutScanners-test.tsx +++ /dev/null @@ -1,31 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 { shallow } from 'enzyme'; -import * as React from 'react'; -import AboutScanners from '../AboutScanners'; - -it('should render correctly', () => { - const wrapper = shallowRender(); - expect(wrapper).toMatchSnapshot(); -}); - -function shallowRender() { - return shallow(); -} diff --git a/server/sonar-web/src/main/js/apps/about/components/__tests__/__snapshots__/AboutApp-test.tsx.snap b/server/sonar-web/src/main/js/apps/about/components/__tests__/__snapshots__/AboutApp-test.tsx.snap deleted file mode 100644 index 881203c89cd..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/__tests__/__snapshots__/AboutApp-test.tsx.snap +++ /dev/null @@ -1,181 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`should render correctly 1`] = ` -
    - -
    -
    -

    - layout.sonar.slogan -

    - - layout.login - - - about_page.read_documentation - -
    -
    - - -
    -
    -
    - - -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    - -
    -`; - -exports[`should render correctly: when indexation not complete 1`] = ` -
    - -
    -
    -

    - layout.sonar.slogan -

    - - layout.login - - - about_page.read_documentation - -
    -
    - -
    -
    -
    - - -
    -
    - -
    -
    - -
    -
    -
    -
    - -
    -
    - -
    -
    - -
    -`; diff --git a/server/sonar-web/src/main/js/apps/about/components/__tests__/__snapshots__/AboutScanners-test.tsx.snap b/server/sonar-web/src/main/js/apps/about/components/__tests__/__snapshots__/AboutScanners-test.tsx.snap deleted file mode 100644 index ad4dd1080e0..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/__tests__/__snapshots__/AboutScanners-test.tsx.snap +++ /dev/null @@ -1,108 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`should render correctly 1`] = ` -
    -

    - about_page.scanners -

    -
    -

    - about_page.scanners.text -

    -
    - - about_page.scanners.sonarqube - - - about_page.scanners.msbuild - - - about_page.scanners.maven - - - about_page.scanners.gradle - - - about_page.scanners.jenkins - - - about_page.scanners.ant - -
    -
    -
    -`; diff --git a/server/sonar-web/src/main/js/apps/about/components/__tests__/__snapshots__/EntryIssueTypes-test.tsx.snap b/server/sonar-web/src/main/js/apps/about/components/__tests__/__snapshots__/EntryIssueTypes-test.tsx.snap deleted file mode 100644 index fe7b11d60ce..00000000000 --- a/server/sonar-web/src/main/js/apps/about/components/__tests__/__snapshots__/EntryIssueTypes-test.tsx.snap +++ /dev/null @@ -1,117 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`should render correctly: loading 1`] = ` -
    - -
    -`; - -exports[`should render correctly: loading 2`] = ` -
    - - - - - - - - - - - - - - - -
    - - 10 - - - - - - issue.type.BUG.plural -
    - - 1short_number_suffix.k - - - - - - issue.type.VULNERABILITY.plural -
    - - 100 - - - - - - issue.type.CODE_SMELL.plural -
    -
    -`; diff --git a/server/sonar-web/src/main/js/apps/about/routes.ts b/server/sonar-web/src/main/js/apps/about/routes.ts deleted file mode 100644 index 78799c787b0..00000000000 --- a/server/sonar-web/src/main/js/apps/about/routes.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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 { lazyLoadComponent } from '../../components/lazyLoadComponent'; - -const routes = [ - { indexRoute: { component: lazyLoadComponent(() => import('./components/AboutApp')) } } -]; - -export default routes; diff --git a/server/sonar-web/src/main/js/apps/about/styles.css b/server/sonar-web/src/main/js/apps/about/styles.css deleted file mode 100644 index 7b0552b1de3..00000000000 --- a/server/sonar-web/src/main/js/apps/about/styles.css +++ /dev/null @@ -1,177 +0,0 @@ -/* - * SonarQube - * Copyright (C) 2009-2021 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. - */ -.about-page { - font-size: var(--mediumFontSize); -} - -.about-page .boxed-group { - border: none; -} - -.about-page .boxed-group h2 { - padding-left: 0; - padding-right: 0; - font-size: 18px; -} - -.about-page .boxed-group > h2 { - padding-top: 25px; -} - -.about-page .boxed-group h3 { - font-weight: normal; - font-size: var(--bigFontSize); - padding-bottom: calc(1.5 * var(--gridSize)); -} - -.about-page .boxed-group-inner { - padding-left: 0; - padding-right: 0; - padding-bottom: 25px; -} - -.about-page-entry { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 45px; - padding: 65px 0 65px; - border-bottom: 1px solid var(--barBorderColor); -} - -.about-page-intro { - padding-right: 65px; - border-right: 1px solid var(--barBorderColor); -} - -.about-page-intro > h1 { - line-height: 40px; - font-size: 26px; - font-weight: 300; -} - -.about-page-intro > .button { - height: 32px; - line-height: 30px; - padding-left: 15px; - padding-right: 15px; - border-radius: 3px; - font-size: var(--baseFontSize); - font-weight: 400; -} - -.about-page-instance { - display: flex; - align-items: center; -} - -.about-page-projects { - margin-left: 65px; - line-height: 1.4; - font-size: var(--bigFontSize); - text-align: center; - min-width: 128px; -} - -.about-page-projects-link { - display: inline-block; - line-height: 1; - margin-bottom: 12px; - font-size: 32px; -} - -.about-page-issue-types { - text-align: left; -} - -.about-page-issue-types tr + tr td { - padding-top: 12px; -} - -.about-page-issue-types svg { - vertical-align: middle; - transform: translateY(-1px); -} - -.about-page-issue-type-number { - padding-right: 16px; - text-align: right; -} - -.about-page-issue-type-link { - font-size: var(--bigFontSize); - font-weight: bold; -} - -.about-page-section { - padding-top: 20px; - padding-bottom: 10px; -} - -.about-page-text { - line-height: 1.4; -} - -.about-page-link-more { - border: none; -} - -.about-page-link-more > span { - border-bottom: 1px solid var(--lightBlue); -} - -.about-page-languages { - display: flex; - justify-content: space-between; - margin-top: 10px; -} - -.about-page-languages > li { - line-height: 2; -} - -.about-quality-model .flex-column + .flex-column { - margin-left: 30px; - padding-left: 30px; - border-left: 1px solid var(--barBorderColor); -} - -.about-quality-model svg { - transform: translateY(2px); -} - -.about-page-analyzers { - display: flex; - justify-content: space-between; - margin-top: 15px; -} - -.about-page-analyzer-box { - border: none; -} - -.about-page-group-boxes { - display: flex; - flex-direction: column; -} - -.about-page-group-boxes > .boxed-group { - flex-grow: 1; -} diff --git a/sonar-core/src/main/resources/org/sonar/l10n/core.properties b/sonar-core/src/main/resources/org/sonar/l10n/core.properties index b0bbf1a5d66..0755a72533a 100644 --- a/sonar-core/src/main/resources/org/sonar/l10n/core.properties +++ b/sonar-core/src/main/resources/org/sonar/l10n/core.properties @@ -3272,45 +3272,6 @@ component_measures.facet_category.overall_category.estimated=Estimated after mer component_measures.facet_category.tests_category=Tests component_measures.bubble_chart.zoom_level=Current zoom level. Scroll on the chart to zoom or unzoom, click here to reset. -#------------------------------------------------------------------------------ -# -# ABOUT PAGE -# -#------------------------------------------------------------------------------ -about_page.projects_analyzed=Projects -about_page.read_more=Read More -about_page.read_documentation=Read documentation - -about_page.languages=Multi-Language -about_page.languages.text=20+ programming languages are supported by SonarQube, including: - -about_page.quality_model=Quality Model -about_page.quality_model.bugs=track code that is demonstrably wrong or highly likely to yield unexpected behavior. -about_page.quality_model.vulnerabilities=are raised on code that can be exploited by hackers. -about_page.quality_model.code_smells=will confuse maintainers or give them pause. They are measured primarily in terms of the time they will take to fix. -about_page.quality_model.security_hotspots=are raised on security-sensitive code that requires manual review to assess whether or not a vulnerability exists. - -about_page.clean_code=Write Clean Code -about_page.clean_code.text=By fixing new issues as they appear in code, you create and maintain a clean code base. Even on legacy projects, focusing on keeping new code clean will eventually yield a code base you can be proud of. - -about_page.fix_the_leak=Clean as You Code -about_page.fix_the_leak_on_new_code.text=The Clean as You Code approach and the default Quality Gate are based on the new code period - the recent period against which you're tracking issues. For some previous_version makes the most sense, for others the last 30 days is a good option. - -about_page.quality_gates=Enforce Quality Gate -about_page.quality_gates.text=Your project's Quality Gate is the set of conditions the project must meet before it can be released into production. The Quality Gate is designed to ensure that the next version's quality will be better than the last. - -about_page.standards=Follow Standards -about_page.standards.text=SonarQube offers rules that support industry standards. Configure your Quality Profile with standard-related rules to ensure adherence. - -about_page.scanners=Run Analysis With A SonarQube Scanner -about_page.scanners.text=For a good user experience, choose the scanner that matches your environment best. If you don't know which one suits you best, SonarQube Scanner CLI is the way to go. -about_page.scanners.sonarqube=SonarQube Scanner -about_page.scanners.msbuild=SonarQube Scanner for MSBuild -about_page.scanners.maven=SonarQube Scanner for Maven -about_page.scanners.gradle=SonarQube Scanner for Gradle -about_page.scanners.jenkins=SonarQube Scanner for Jenkins -about_page.scanners.ant=SonarQube Scanner for Ant - #------------------------------------------------------------------------------ # # EMBEDED DOCS @@ -3330,7 +3291,6 @@ embed_docs.whats_new=What's new on SonarCloud? # GLOBAL FOOTER # #------------------------------------------------------------------------------ -footer.about=About footer.community=Community footer.contact_us=Contact us footer.documentation=Documentation -- 2.39.5