diff --git a/.husky/pre-commit b/.husky/pre-commit old mode 100644 new mode 100755 diff --git a/config/plugins.ts b/config/plugins.ts index 59966c8..555ef99 100644 --- a/config/plugins.ts +++ b/config/plugins.ts @@ -5,6 +5,7 @@ export default ({ env }) => { resolve: './src/plugins/strapi-plugin-internal-links', config: { environment: 'test', + useSinglePageType: 'api::page.page', pageBuilder: { enabled: false }, diff --git a/src/plugins/strapi-plugin-internal-links/README.md b/src/plugins/strapi-plugin-internal-links/README.md index 9db73f0..f25f107 100644 --- a/src/plugins/strapi-plugin-internal-links/README.md +++ b/src/plugins/strapi-plugin-internal-links/README.md @@ -33,6 +33,7 @@ module.exports = ({ env }) => ({ enabled: true, config: { environment: 'test', + useSinglePageType: 'api::page.page', // Optional option to use a single page type like the page builder (without page builder options) pageBuilder: { enabled: true, // When enabled, pageBuilder plugin logic is applied. pageUid: 'undefined | string', diff --git a/src/plugins/strapi-plugin-internal-links/admin/src/components/form/index.tsx b/src/plugins/strapi-plugin-internal-links/admin/src/components/form/index.tsx index c2ab165..6e965d1 100644 --- a/src/plugins/strapi-plugin-internal-links/admin/src/components/form/index.tsx +++ b/src/plugins/strapi-plugin-internal-links/admin/src/components/form/index.tsx @@ -20,9 +20,10 @@ interface IProps extends Omit { const { formatMessage } = useIntl(); - const { config: pluginConfig, isLoading: isLoadingConfig } = useGetPluginConfig(); + const useSinglePageType = !!pluginConfig?.useSinglePageType || pluginConfig?.pageBuilder?.enabled; + // More information including tests: https://regexr.com/7b2ai const defaultUrlRegex = new RegExp( /(^https?:\/\/(www.)?[a-zA-Z0-9]{1,}.[^s]{2,}((\/[a-zA-Z0-9\-\_\=\?\%\&\#]{1,}){1,})?)$|^mailto:[\w-\. +]+@([\w-]+\.)+[\w-]{2,4}$|^tel:((\+|00(\s|\s?\-\s?)?)[0-9]{2}(\s|\s?\-\s?)?(\(0\)[\-\s]?)?|0)[0-9](((\s|\s?\-\s?)?[0-9]){1,})$/ @@ -59,8 +60,8 @@ const InternalLinkForm = ({ link, setLink, errors, setErrors, attribute }: IProp }; useEffect(() => { - if (pluginConfig?.pageBuilder?.enabled) { - setContentTypeUid(pluginConfig.pageBuilder.pageUid); + if (pluginConfig && useSinglePageType) { + setContentTypeUid(pluginConfig.pageBuilder?.pageUid || pluginConfig.useSinglePageType); } }, [pluginConfig]); @@ -237,7 +238,7 @@ const InternalLinkForm = ({ link, setLink, errors, setErrors, attribute }: IProp - {!checked && !isLoadingConfig && !pluginConfig?.pageBuilder?.enabled && ( + {!checked && !isLoadingConfig && !useSinglePageType && ( {formatMessage({ diff --git a/src/plugins/strapi-plugin-internal-links/server/controllers/content-type.ts b/src/plugins/strapi-plugin-internal-links/server/controllers/content-type.ts index 40f8b89..90d1c0e 100644 --- a/src/plugins/strapi-plugin-internal-links/server/controllers/content-type.ts +++ b/src/plugins/strapi-plugin-internal-links/server/controllers/content-type.ts @@ -2,6 +2,7 @@ const find = async () => { const { pageBuilder } = await strapi.service('plugin::internal-links.config').getGlobalConfig(); const pageBuilderPathField = pageBuilder?.pathField; + // TODO: Should we check the useSinglePageType option here? const filter = Object.values(strapi.contentTypes).filter((contentType: any) => { if (contentType?.pluginOptions?.['internal-links']?.enabled === false) { return false;