From 87b5832a5191030e5cbad0f1963b627b47fc6003 Mon Sep 17 00:00:00 2001 From: soupette Date: Thu, 12 Apr 2018 23:45:17 +0200 Subject: [PATCH] Fixes #810 --- .../src/components/LeftMenuFooter/index.js | 26 ++++++++++++------- .../admin/src/containers/AdminPage/actions.js | 8 ++++++ .../src/containers/AdminPage/constants.js | 1 + .../admin/src/containers/AdminPage/index.js | 10 +++++-- .../admin/src/containers/AdminPage/reducer.js | 9 ++++++- .../admin/src/containers/AdminPage/saga.js | 14 +++++++--- .../admin/src/containers/LeftMenu/index.js | 11 +++++--- packages/strapi-admin/config/routes.json | 6 +++++ packages/strapi-admin/controllers/Admin.js | 9 +++++++ 9 files changed, 76 insertions(+), 18 deletions(-) diff --git a/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js b/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js index a9ad2b2a1b..d01eca7acb 100755 --- a/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js +++ b/packages/strapi-admin/admin/src/components/LeftMenuFooter/index.js @@ -6,6 +6,8 @@ import React from 'react'; import { defineMessages, FormattedMessage } from 'react-intl'; +import { PropTypes } from 'prop-types'; +import { take } from 'lodash'; import LocaleToggle from 'containers/LocaleToggle'; @@ -13,15 +15,21 @@ import styles from './styles.scss'; import messages from './messages.json'; defineMessages(messages); -class LeftMenuFooter extends React.Component { // eslint-disable-line react/prefer-stateless-function - render() { - return ( -
- Strapi - -
- ); - } +function LeftMenuFooter({ version }) { // eslint-disable-line react/prefer-stateless-function + const strapiV = take(`${version.split('.')[0]}${version.split('alpha')[1]}`, 4).join(''); + + return ( +
+ + Strapi +  (v{strapiV}) + +
+ ); } +LeftMenuFooter.propTypes = { + version: PropTypes.string.isRequired, +}; + export default LeftMenuFooter; diff --git a/packages/strapi-admin/admin/src/containers/AdminPage/actions.js b/packages/strapi-admin/admin/src/containers/AdminPage/actions.js index 6a0017710c..da53d9b68e 100644 --- a/packages/strapi-admin/admin/src/containers/AdminPage/actions.js +++ b/packages/strapi-admin/admin/src/containers/AdminPage/actions.js @@ -8,6 +8,7 @@ import { GET_GA_STATUS_SUCCEEDED, GET_LAYOUT, GET_LAYOUT_SUCCEEDED, + GET_STRAPI_VERSION_SUCCEEDED, } from './constants'; export function getGaStatus() { @@ -35,3 +36,10 @@ export function getLayoutSucceeded(layout) { layout, }; } + +export function getStrapiVersionSucceeded(strapiVersion) { + return { + type: GET_STRAPI_VERSION_SUCCEEDED, + strapiVersion, + }; +} diff --git a/packages/strapi-admin/admin/src/containers/AdminPage/constants.js b/packages/strapi-admin/admin/src/containers/AdminPage/constants.js index 031f070b62..51a2a10216 100644 --- a/packages/strapi-admin/admin/src/containers/AdminPage/constants.js +++ b/packages/strapi-admin/admin/src/containers/AdminPage/constants.js @@ -8,3 +8,4 @@ export const GET_GA_STATUS = 'app/Admin/GET_GA_STATUS'; export const GET_GA_STATUS_SUCCEEDED = 'app/Admin/GET_GA_STATUS_SUCCEEDED'; export const GET_LAYOUT = 'app/Admin/GET_LAYOUT'; export const GET_LAYOUT_SUCCEEDED = 'app/Admin/GET_LAYOUT_SUCCEEDED'; +export const GET_STRAPI_VERSION_SUCCEEDED = 'app/Admin/GET_STRAPI_VERSION_SUCCEEDED'; diff --git a/packages/strapi-admin/admin/src/containers/AdminPage/index.js b/packages/strapi-admin/admin/src/containers/AdminPage/index.js index f910307311..e511b05481 100644 --- a/packages/strapi-admin/admin/src/containers/AdminPage/index.js +++ b/packages/strapi-admin/admin/src/containers/AdminPage/index.js @@ -137,13 +137,19 @@ export class AdminPage extends React.Component { // eslint-disable-line react/pr showLeftMenu = () => !includes(this.props.location.pathname, 'users-permissions/auth/'); render() { - const leftMenu = this.showLeftMenu() ? : ''; + const { adminPage } = this.props; const header = this.showLeftMenu() ?
: ''; const style = this.showLeftMenu() ? {} : { width: '100%' }; return (
- {leftMenu} + {this.showLeftMenu() && ( + + )} { auth.getToken() && this.props.hasUserPlugin && this.isUrlProtected(this.props) ? ( ) : ''} diff --git a/packages/strapi-admin/admin/src/containers/AdminPage/reducer.js b/packages/strapi-admin/admin/src/containers/AdminPage/reducer.js index 97cdd505e1..8662d5cf9d 100644 --- a/packages/strapi-admin/admin/src/containers/AdminPage/reducer.js +++ b/packages/strapi-admin/admin/src/containers/AdminPage/reducer.js @@ -6,11 +6,16 @@ import { fromJS, Map } from 'immutable'; -import { GET_GA_STATUS_SUCCEEDED, GET_LAYOUT_SUCCEEDED } from './constants'; +import { + GET_GA_STATUS_SUCCEEDED, + GET_LAYOUT_SUCCEEDED, + GET_STRAPI_VERSION_SUCCEEDED, +} from './constants'; const initialState = fromJS({ allowGa: true, layout: Map({}), + strapiVersion: '3.0.0-alpha', }); function adminPageReducer(state = initialState, action) { @@ -19,6 +24,8 @@ function adminPageReducer(state = initialState, action) { return state.update('allowGa', () => action.allowGa); case GET_LAYOUT_SUCCEEDED: return state.update('layout', () => Map(action.layout)); + case GET_STRAPI_VERSION_SUCCEEDED: + return state.update('strapiVersion', () => action.strapiVersion); default: return state; } diff --git a/packages/strapi-admin/admin/src/containers/AdminPage/saga.js b/packages/strapi-admin/admin/src/containers/AdminPage/saga.js index b9a85a761b..48b295ebba 100644 --- a/packages/strapi-admin/admin/src/containers/AdminPage/saga.js +++ b/packages/strapi-admin/admin/src/containers/AdminPage/saga.js @@ -1,13 +1,21 @@ import { fork, call, put, takeLatest } from 'redux-saga/effects'; import request from 'utils/request'; -import { getGaStatusSucceeded, getLayoutSucceeded } from './actions'; +import { + getGaStatusSucceeded, + getLayoutSucceeded, + getStrapiVersionSucceeded, +} from './actions'; import { GET_GA_STATUS, GET_LAYOUT } from './constants'; function* getGaStatus() { try { - const response = yield call(request, '/admin/gaConfig', { method: 'GET' }); - yield put(getGaStatusSucceeded(response.allowGa)); + const [allowGa, strapiVersion] = yield [ + call(request, '/admin/gaConfig', { method: 'GET' }), + call(request, '/admin/strapiVersion', { method: 'GET' }), + ]; + yield put(getGaStatusSucceeded(allowGa)); + yield put(getStrapiVersionSucceeded(strapiVersion.strapiVersion)); } catch(err) { strapi.notification.error('notification.error'); } diff --git a/packages/strapi-admin/admin/src/containers/LeftMenu/index.js b/packages/strapi-admin/admin/src/containers/LeftMenu/index.js index 202412b49b..d3cb5afa7d 100755 --- a/packages/strapi-admin/admin/src/containers/LeftMenu/index.js +++ b/packages/strapi-admin/admin/src/containers/LeftMenu/index.js @@ -18,16 +18,21 @@ export class LeftMenu extends React.Component { // eslint-disable-line react/pre render() { return (
- - - + + +
); } } +LeftMenu.defaultProps = { + version: '3.0.0-alpha', +}; + LeftMenu.propTypes = { plugins: PropTypes.object.isRequired, + version: PropTypes.string, }; function mapDispatchToProps(dispatch) { diff --git a/packages/strapi-admin/config/routes.json b/packages/strapi-admin/config/routes.json index 043c8b36a7..c05b8b5ce8 100755 --- a/packages/strapi-admin/config/routes.json +++ b/packages/strapi-admin/config/routes.json @@ -20,6 +20,12 @@ "handler": "Admin.getGaConfig", "policies": [] }, + { + "method": "GET", + "path": "/strapiVersion", + "handler": "Admin.getStrapiVersion", + "policies": [] + }, { "method": "GET", "path": "/layout", diff --git a/packages/strapi-admin/controllers/Admin.js b/packages/strapi-admin/controllers/Admin.js index 6742aff51a..18fbfc9c37 100755 --- a/packages/strapi-admin/controllers/Admin.js +++ b/packages/strapi-admin/controllers/Admin.js @@ -17,6 +17,15 @@ module.exports = { } }, + getStrapiVersion: async ctx => { + try { + const strapiVersion = _.get(strapi.config, 'info.strapi', null); + return ctx.send({ strapiVersion }); + } catch(err) { + return ctx.badRequest(null, [{ messages: [{ id: 'The version is not available' }] }]); + } + }, + getGaConfig: async ctx => { try { const allowGa = _.get(strapi.config, 'info.customs.allowGa', true);