diff --git a/packages/strapi-plugin-content-manager/admin/src/components/Container/index.js b/packages/strapi-plugin-content-manager/admin/src/components/Container/index.js index 1b6de98333..74a5fae189 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/Container/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/Container/index.js @@ -2,9 +2,6 @@ import styled from 'styled-components'; const Container = styled.div` padding: 18px 30px 18px 30px; - > div:first-child { - margin-bottom: 12px; - } `; export default Container; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/LayoutTitle/index.js b/packages/strapi-plugin-content-manager/admin/src/components/LayoutTitle/index.js index d2bca10ce9..a61718c586 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/LayoutTitle/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/LayoutTitle/index.js @@ -6,7 +6,7 @@ const LayoutTitle = styled.div` font-weight: 500; line-height: 18px; - > p { + p { margin-bottom: 29px; color: #787e8f; font-weight: 400; diff --git a/packages/strapi-plugin-content-manager/admin/src/components/SettingsViewWrapper/index.js b/packages/strapi-plugin-content-manager/admin/src/components/SettingsViewWrapper/index.js index ef860b8926..01632c79b4 100644 --- a/packages/strapi-plugin-content-manager/admin/src/components/SettingsViewWrapper/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/components/SettingsViewWrapper/index.js @@ -3,10 +3,9 @@ import PropTypes from 'prop-types'; import { get, isEqual, upperFirst } from 'lodash'; import { withRouter } from 'react-router-dom'; import { FormattedMessage } from 'react-intl'; -import { Inputs as Input } from '@buffetjs/custom'; +import { Inputs as Input, Header } from '@buffetjs/custom'; import { BackHeader, - PluginHeader, LoadingIndicatorPage, PopUpWarning, // contexts @@ -32,7 +31,7 @@ const SettingsViewWrapper = ({ onConfirmSubmit, slug, }) => { - const { emitEvent } = useGlobalContext(); + const { emitEvent, formatMessage } = useGlobalContext(); const [showWarningCancel, setWarningCancel] = useState(false); const [showWarningSubmit, setWarningSubmit] = useState(false); @@ -50,30 +49,38 @@ const SettingsViewWrapper = ({ return [ { - label: `${pluginId}.popUpWarning.button.cancel`, - kind: 'secondary', + color: 'cancel', onClick: toggleWarningCancel, + title: formatMessage({ + id: `${pluginId}.popUpWarning.button.cancel`, + }), type: 'button', }, { - kind: 'primary', - label: `${pluginId}.containers.Edit.submit`, + color: 'success', + title: formatMessage({ + id: `${pluginId}.containers.Edit.submit`, + }), type: 'submit', }, ]; }; - const pluginHeaderProps = { + const headerProps = { actions: getPluginHeaderActions(), title: { - id: `${pluginId}.components.SettingsViewWrapper.pluginHeader.title`, - values: { name: upperFirst(slug) }, + label: formatMessage( + { + id: `${pluginId}.components.SettingsViewWrapper.pluginHeader.title`, + }, + { name: upperFirst(slug) } + ), }, - description: { + content: formatMessage({ id: `${pluginId}.components.SettingsViewWrapper.pluginHeader.description.${ isEditSettings ? 'edit' : 'list' }-settings`, - }, + }), }; const getSelectOptions = input => { @@ -129,8 +136,13 @@ const SettingsViewWrapper = ({
- -
+
+
{ const { componentSlug, type } = useParams(); @@ -379,10 +382,34 @@ const EditSettingsView = ({ >
- +
+
+ +
+
+ {getInjectedComponents( + 'left.links', + plugins, + currentEnvironment, + slug, + source, + emitEvent, + push + )} +
+
{type !== 'components' && ( @@ -445,6 +472,7 @@ EditSettingsView.defaultProps = { }; EditSettingsView.propTypes = { + currentEnvironment: PropTypes.string, deleteLayout: PropTypes.func.isRequired, deleteLayouts: PropTypes.func, componentsAndModelsMainPossibleMainFields: PropTypes.object.isRequired, @@ -454,6 +482,7 @@ EditSettingsView.propTypes = { location: PropTypes.shape({ search: PropTypes.string.isRequired, }).isRequired, + plugins: PropTypes.object, slug: PropTypes.string, }; diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/Header.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/Header.js index d47e66a16c..e1c4216045 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/Header.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/Header.js @@ -57,7 +57,7 @@ const Header = () => { type: 'button', }, { - color: 'primary', + color: 'success', title: formatMessage({ id: `${pluginId}.containers.Edit.submit`, }), diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js index 2b690e707c..44438a0e91 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditView/index.js @@ -20,9 +20,9 @@ import SelectWrapper from '../../components/SelectWrapper'; import EditViewDataManagerProvider from '../EditViewDataManagerProvider'; import EditViewProvider from '../EditViewProvider'; import Header from './Header'; -import getInjectedComponents from './utils/getComponents'; import createAttributesLayout from './utils/createAttributesLayout'; import { LinkWrapper, SubWrapper } from './components'; +import getInjectedComponents from '../../utils/getComponents'; import init from './init'; import reducer, { initialState } from './reducer'; @@ -152,7 +152,7 @@ const EditView = ({ redirectToPreviousPage()} />
-
+
{formattedContentTypeLayout.map((block, blockIndex) => { if (isDynamicZone(block)) { @@ -285,7 +285,8 @@ const EditView = ({ currentEnvironment, slug, source, - emitEvent + emitEvent, + true )} diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/ListView/components.js b/packages/strapi-plugin-content-manager/admin/src/containers/ListView/components.js index 4fc82a4385..b327bd5fef 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/ListView/components.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/ListView/components.js @@ -4,7 +4,7 @@ import { Button } from 'strapi-helper-plugin'; import RemoveIcon from '../../assets/images/icon-cross-blue.svg'; const Wrapper = styled.div` - padding-top: 19px; + padding-top: 1px; `; const AddFilterCta = styled(Button)` diff --git a/packages/strapi-plugin-content-manager/admin/src/translations/en.json b/packages/strapi-plugin-content-manager/admin/src/translations/en.json index 169d870cf9..51aba85bd5 100644 --- a/packages/strapi-plugin-content-manager/admin/src/translations/en.json +++ b/packages/strapi-plugin-content-manager/admin/src/translations/en.json @@ -57,6 +57,7 @@ "containers.Edit.submit": "Save", "containers.Edit.Link.Layout": "Configure the layout", "containers.Edit.Link.Fields": "Edit the fields", + "containers.Edit.Link.Model": "Edit the content-type", "containers.EditView.notification.errors": "The form contains some errors", "containers.Home.introduction": "To edit your entries go to the specific link in the left menu. This plugin doesn't have a proper way to edit settings and it's still under active development.", "containers.Home.pluginHeaderDescription": "Manage your entries through a powerful and beautiful interface.", diff --git a/packages/strapi-plugin-content-manager/admin/src/translations/fr.json b/packages/strapi-plugin-content-manager/admin/src/translations/fr.json index 73799193ce..0497941c04 100644 --- a/packages/strapi-plugin-content-manager/admin/src/translations/fr.json +++ b/packages/strapi-plugin-content-manager/admin/src/translations/fr.json @@ -57,6 +57,7 @@ "containers.EditView.notification.errors": "Le formulaire contient des erreurs", "containers.Edit.Link.Layout": "Paramétrer la vue", "containers.Edit.Link.Fields": "Éditer le modèle", + "containers.Edit.Link.Model": "Éditer le modèle", "containers.Home.introduction": "Pour éditer du contenu, choisissez un type de données dans le menu de gauche.", "containers.Home.pluginHeaderDescription": "Créer et modifier votre type de contenu", "containers.Home.pluginHeaderTitle": "Type de contenu", diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/getComponents.js b/packages/strapi-plugin-content-manager/admin/src/utils/getComponents.js similarity index 94% rename from packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/getComponents.js rename to packages/strapi-plugin-content-manager/admin/src/utils/getComponents.js index 4b720835c7..e1e01f6df4 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditView/utils/getComponents.js +++ b/packages/strapi-plugin-content-manager/admin/src/utils/getComponents.js @@ -1,6 +1,6 @@ import React from 'react'; import { get } from 'lodash'; -import pluginId from '../../../pluginId'; +import pluginId from '../pluginId'; /** * Retrieve external links from injected components @@ -12,7 +12,8 @@ const getInjectedComponents = ( currentEnvironment, slug, source, - emitEvent + emitEvent, + push ) => { const componentsToInject = Object.keys(plugins).reduce((acc, current) => { // Retrieve injected compos from plugin @@ -35,6 +36,7 @@ const getInjectedComponents = ( getContentTypeBuilderBaseUrl={() => '/plugins/content-type-builder/models/' } + push={push} {...compo.props} key={compo.key} onClick={() => { diff --git a/packages/strapi-plugin-content-type-builder/admin/src/InjectedComponents/ContentManager/EditViewButton.js b/packages/strapi-plugin-content-type-builder/admin/src/InjectedComponents/ContentManager/EditViewButton.js new file mode 100644 index 0000000000..5441e0a347 --- /dev/null +++ b/packages/strapi-plugin-content-type-builder/admin/src/InjectedComponents/ContentManager/EditViewButton.js @@ -0,0 +1,59 @@ +/** + * + * EditViewButton + * + */ + +import React from 'react'; +import PropTypes from 'prop-types'; +import { useGlobalContext } from 'strapi-helper-plugin'; +import { Button } from '@buffetjs/core'; + +// Create link from content-type-builder to content-manager +function EditViewButton(props) { + const { formatMessage } = useGlobalContext(); + // Retrieve URL from props + const base = `${props.getContentTypeBuilderBaseUrl()}${props.getModelName()}`; + const url = + props.getSource() === 'users-permissions' + ? `${base}&source=${props.getSource()}` + : base; + + const handleClick = () => { + props.push(url); + }; + + if (props.getSource() === 'admin') { + return null; + } + + if (props.currentEnvironment === 'development') { + return ( + + ); + } + + return null; +} + +EditViewButton.propTypes = { + currentEnvironment: PropTypes.string.isRequired, + getContentTypeBuilderBaseUrl: PropTypes.func.isRequired, + getModelName: PropTypes.func.isRequired, + getSource: PropTypes.func.isRequired, + push: PropTypes.func.isRequired, +}; + +export default EditViewButton; diff --git a/packages/strapi-plugin-content-type-builder/admin/src/index.js b/packages/strapi-plugin-content-type-builder/admin/src/index.js index f3f8d93cb0..247ce31421 100644 --- a/packages/strapi-plugin-content-type-builder/admin/src/index.js +++ b/packages/strapi-plugin-content-type-builder/admin/src/index.js @@ -4,6 +4,7 @@ import pluginPkg from '../../package.json'; import App from './containers/App'; import Initializer from './containers/Initializer'; import Link from './InjectedComponents/ContentManager/EditViewLink'; +import Button from './InjectedComponents/ContentManager/EditViewButton'; import lifecycles from './lifecycles'; import trads from './translations'; import pluginId from './pluginId'; @@ -34,6 +35,12 @@ const plugin = { icon: 'fa-cog', }, }, + { + plugin: 'content-manager.editPage', + area: 'left.links', + component: Button, + key: 'content-type-builder.form', + }, ], layout: null, lifecycles, @@ -53,7 +60,6 @@ const plugin = { ? `/models/${uid}&source=${source}` : `/models/${uid}`; }, - trads, };