mirror of
				https://github.com/strapi/strapi.git
				synced 2025-11-04 11:54:10 +00:00 
			
		
		
		
	Fixes #810
This commit is contained in:
		
							parent
							
								
									d3a82618b3
								
							
						
					
					
						commit
						87b5832a51
					
				@ -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 (
 | 
			
		||||
      <div className={styles.leftMenuFooter}>
 | 
			
		||||
        <FormattedMessage {...messages.poweredBy} /> <a href="http://strapi.io" target="_blank">Strapi</a>
 | 
			
		||||
        <LocaleToggle />
 | 
			
		||||
      </div>
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
function LeftMenuFooter({ version }) { // eslint-disable-line react/prefer-stateless-function
 | 
			
		||||
  const strapiV = take(`${version.split('.')[0]}${version.split('alpha')[1]}`, 4).join('');
 | 
			
		||||
 | 
			
		||||
  return (
 | 
			
		||||
    <div className={styles.leftMenuFooter}>
 | 
			
		||||
      <FormattedMessage {...messages.poweredBy} />
 | 
			
		||||
      <a href="http://strapi.io" target="_blank"> Strapi</a>
 | 
			
		||||
      <span> (v{strapiV})</span>
 | 
			
		||||
      <LocaleToggle />
 | 
			
		||||
    </div>
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
LeftMenuFooter.propTypes = {
 | 
			
		||||
  version: PropTypes.string.isRequired,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export default LeftMenuFooter;
 | 
			
		||||
 | 
			
		||||
@ -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,
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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';
 | 
			
		||||
 | 
			
		||||
@ -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() ? <LeftMenu plugins={this.props.plugins} layout={this.props.adminPage.layout} /> : '';
 | 
			
		||||
    const { adminPage } = this.props;
 | 
			
		||||
    const header = this.showLeftMenu() ? <Header /> : '';
 | 
			
		||||
    const style = this.showLeftMenu() ? {} : { width: '100%' };
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
      <div className={styles.adminPage}>
 | 
			
		||||
        {leftMenu}
 | 
			
		||||
        {this.showLeftMenu() && (
 | 
			
		||||
          <LeftMenu
 | 
			
		||||
            plugins={this.props.plugins}
 | 
			
		||||
            layout={adminPage.layout}
 | 
			
		||||
            version={adminPage.strapiVersion}
 | 
			
		||||
          />
 | 
			
		||||
        )}
 | 
			
		||||
        { auth.getToken() && this.props.hasUserPlugin && this.isUrlProtected(this.props) ? (
 | 
			
		||||
          <Logout />
 | 
			
		||||
        ) : ''}
 | 
			
		||||
 | 
			
		||||
@ -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;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -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');
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -18,16 +18,21 @@ export class LeftMenu extends React.Component { // eslint-disable-line react/pre
 | 
			
		||||
  render() {
 | 
			
		||||
    return (
 | 
			
		||||
      <div className={styles.leftMenu}>
 | 
			
		||||
        <LeftMenuHeader></LeftMenuHeader>
 | 
			
		||||
        <LeftMenuLinkContainer {...this.props}></LeftMenuLinkContainer>
 | 
			
		||||
        <LeftMenuFooter plugins={this.props.plugins}></LeftMenuFooter>
 | 
			
		||||
        <LeftMenuHeader />
 | 
			
		||||
        <LeftMenuLinkContainer {...this.props} />
 | 
			
		||||
        <LeftMenuFooter plugins={this.props.plugins} version={this.props.version} />
 | 
			
		||||
      </div>
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
LeftMenu.defaultProps = {
 | 
			
		||||
  version: '3.0.0-alpha',
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
LeftMenu.propTypes = {
 | 
			
		||||
  plugins: PropTypes.object.isRequired,
 | 
			
		||||
  version: PropTypes.string,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
function mapDispatchToProps(dispatch) {
 | 
			
		||||
 | 
			
		||||
@ -20,6 +20,12 @@
 | 
			
		||||
      "handler": "Admin.getGaConfig",
 | 
			
		||||
      "policies": []
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "method": "GET",
 | 
			
		||||
      "path": "/strapiVersion",
 | 
			
		||||
      "handler": "Admin.getStrapiVersion",
 | 
			
		||||
      "policies": []
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "method": "GET",
 | 
			
		||||
      "path": "/layout",
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user