diff --git a/assets/js/src/settings/pages/advanced/index.tsx b/assets/js/src/settings/pages/advanced/index.tsx
index 35aa1a8242..ce0234a9cd 100644
--- a/assets/js/src/settings/pages/advanced/index.tsx
+++ b/assets/js/src/settings/pages/advanced/index.tsx
@@ -1,12 +1,14 @@
import React from 'react';
import BounceAddress from './bounce_address';
import TaskScheduler from './task_scheduler';
+import Roles from './roles';
export default function Advanced() {
return (
+
);
}
diff --git a/assets/js/src/settings/pages/advanced/roles.tsx b/assets/js/src/settings/pages/advanced/roles.tsx
new file mode 100644
index 0000000000..ad11e01bfb
--- /dev/null
+++ b/assets/js/src/settings/pages/advanced/roles.tsx
@@ -0,0 +1,37 @@
+import React from 'react';
+import ReactStringReplace from 'react-string-replace';
+
+import { t } from 'common/functions';
+import { useSelector } from 'settings/store/hooks';
+import { Label, Inputs } from 'settings/components';
+
+export default function Roles() {
+ const isMembersPluginActive = useSelector('hasMembersPlugin')();
+ return (
+ <>
+
+
+
+ {isMembersPluginActive
+ ? {t('manageUsingMembers')}
+ : ReactStringReplace(t('installMembers'),
+ /\[link\](.*?)\[\/link\]/,
+ (text) => (
+
+ {text}
+
+ ))}
+
+
+ >
+ );
+}
diff --git a/assets/js/src/settings/store/make_default_state.ts b/assets/js/src/settings/store/make_default_state.ts
index b2c7edc656..efeecb0095 100644
--- a/assets/js/src/settings/store/make_default_state.ts
+++ b/assets/js/src/settings/store/make_default_state.ts
@@ -10,8 +10,9 @@ export default function makeDefaultState(window: any): State {
const data = normalizeSettings(window.mailpoet_settings);
const flags = {
error: false,
- woocommerce: !!window.mailpoet_woocommerce_active,
newUser: !!window.mailpoet_is_new_user,
+ woocommerce: !!window.mailpoet_woocommerce_active,
+ membersPlugin: !!window.mailpoet_members_plugin_active,
};
const premiumStatus = getPremiumStatus(
window.mailpoet_premium_key_valid,
diff --git a/assets/js/src/settings/store/selectors.ts b/assets/js/src/settings/store/selectors.ts
index 8f6728082c..8c37907cc3 100644
--- a/assets/js/src/settings/store/selectors.ts
+++ b/assets/js/src/settings/store/selectors.ts
@@ -29,6 +29,10 @@ export function hasWooCommerce(state: State) {
return state.flags.woocommerce;
}
+export function hasMembersPlugin(state: State) {
+ return state.flags.membersPlugin;
+}
+
export function isNewUser(state: State) {
return state.flags.newUser;
}
diff --git a/assets/js/src/settings/store/types.ts b/assets/js/src/settings/store/types.ts
index be78aff064..1947997f38 100644
--- a/assets/js/src/settings/store/types.ts
+++ b/assets/js/src/settings/store/types.ts
@@ -232,6 +232,7 @@ export type State = {
}
flags: {
woocommerce: boolean
+ membersPlugin: boolean
newUser: boolean
error: boolean
}
diff --git a/lib/AdminPages/Pages/Settings.php b/lib/AdminPages/Pages/Settings.php
index 4df9949c48..3df4e92bb3 100644
--- a/lib/AdminPages/Pages/Settings.php
+++ b/lib/AdminPages/Pages/Settings.php
@@ -75,10 +75,10 @@ class Settings {
'premium_key_valid' => !empty($premiumKeyValid),
'mss_active' => Bridge::isMPSendingServiceEnabled(),
'mss_key_valid' => !empty($mpApiKeyValid),
- 'members_plugin_active' => $this->wp->isPluginActive('members/members.php'),
'pages' => Pages::getAll(),
'current_user' => $this->wp->wpGetCurrentUser(),
'is_woocommerce_active' => $this->woocommerceHelper->isWooCommerceActive(),
+ 'is_members_plugin_active' => $this->wp->isPluginActive('members/members.php'),
'hosts' => [
'web' => Hosts::getWebHosts(),
'smtp' => Hosts::getSMTPHosts(),
diff --git a/views/settings.html b/views/settings.html
index 554ef66026..8bb8090f44 100644
--- a/views/settings.html
+++ b/views/settings.html
@@ -10,6 +10,7 @@