Load Custom Fields for segment form

[MAILPOET-3220]
This commit is contained in:
Pavel Dohnal
2021-05-12 11:32:52 +02:00
committed by Veljko V
parent a5f3a06110
commit d4f165747f
3 changed files with 25 additions and 0 deletions

View File

@ -30,6 +30,15 @@ interface SegmentFormDataWindow extends Window {
id: string; id: string;
}[]; }[];
mailpoet_custom_fields: {
created_at: string;
id: number;
name: string;
type: string;
params: Record<string, unknown>;
updated_at: string;
}
mailpoet_can_use_woocommerce_subscriptions: boolean; mailpoet_can_use_woocommerce_subscriptions: boolean;
mailpoet_woocommerce_currency_symbol: string; mailpoet_woocommerce_currency_symbol: string;
} }
@ -45,4 +54,5 @@ export const SegmentFormData = {
canUseWooSubscriptions: window.mailpoet_can_use_woocommerce_subscriptions, canUseWooSubscriptions: window.mailpoet_can_use_woocommerce_subscriptions,
wooCurrencySymbol: window.mailpoet_woocommerce_currency_symbol, wooCurrencySymbol: window.mailpoet_woocommerce_currency_symbol,
wooCountries: window.mailpoet_woocommerce_countries, wooCountries: window.mailpoet_woocommerce_countries,
customFieldsList: window.mailpoet_custom_fields,
}; };

View File

@ -3,7 +3,9 @@
namespace MailPoet\AdminPages\Pages; namespace MailPoet\AdminPages\Pages;
use MailPoet\AdminPages\PageRenderer; use MailPoet\AdminPages\PageRenderer;
use MailPoet\API\JSON\ResponseBuilders\CustomFieldsResponseBuilder;
use MailPoet\Config\ServicesChecker; use MailPoet\Config\ServicesChecker;
use MailPoet\CustomFields\CustomFieldsRepository;
use MailPoet\Entities\DynamicSegmentFilterData; use MailPoet\Entities\DynamicSegmentFilterData;
use MailPoet\Listing\PageLimit; use MailPoet\Listing\PageLimit;
use MailPoet\Models\Newsletter; use MailPoet\Models\Newsletter;
@ -43,6 +45,12 @@ class Segments {
/** @var SegmentDependencyValidator */ /** @var SegmentDependencyValidator */
private $segmentDependencyValidator; private $segmentDependencyValidator;
/** @var CustomFieldsRepository */
private $customFieldsRepository;
/** @var CustomFieldsResponseBuilder */
private $customFieldsResponseBuilder;
public function __construct( public function __construct(
PageRenderer $pageRenderer, PageRenderer $pageRenderer,
PageLimit $listingPageLimit, PageLimit $listingPageLimit,
@ -52,6 +60,8 @@ class Segments {
WPPostListLoader $wpPostListLoader, WPPostListLoader $wpPostListLoader,
SubscribersFeature $subscribersFeature, SubscribersFeature $subscribersFeature,
SettingsController $settings, SettingsController $settings,
CustomFieldsRepository $customFieldsRepository,
CustomFieldsResponseBuilder $customFieldsResponseBuilder,
SegmentDependencyValidator $segmentDependencyValidator SegmentDependencyValidator $segmentDependencyValidator
) { ) {
$this->pageRenderer = $pageRenderer; $this->pageRenderer = $pageRenderer;
@ -63,6 +73,8 @@ class Segments {
$this->wpPostListLoader = $wpPostListLoader; $this->wpPostListLoader = $wpPostListLoader;
$this->settings = $settings; $this->settings = $settings;
$this->segmentDependencyValidator = $segmentDependencyValidator; $this->segmentDependencyValidator = $segmentDependencyValidator;
$this->customFieldsRepository = $customFieldsRepository;
$this->customFieldsResponseBuilder = $customFieldsResponseBuilder;
} }
public function render() { public function render() {
@ -77,6 +89,8 @@ class Segments {
$data['subscriber_count'] = $this->subscribersFeature->getSubscribersCount(); $data['subscriber_count'] = $this->subscribersFeature->getSubscribersCount();
$data['has_premium_support'] = $this->subscribersFeature->hasPremiumSupport(); $data['has_premium_support'] = $this->subscribersFeature->hasPremiumSupport();
$data['mss_key_invalid'] = ($this->servicesChecker->isMailPoetAPIKeyValid() === false); $data['mss_key_invalid'] = ($this->servicesChecker->isMailPoetAPIKeyValid() === false);
$customFields = $this->customFieldsRepository->findAll();
$data['custom_fields'] = $this->customFieldsResponseBuilder->buildBatch($customFields);
$wpRoles = $this->wp->getEditableRoles(); $wpRoles = $this->wp->getEditableRoles();
$data['wordpress_editable_roles_list'] = array_map(function($roleId, $role) { $data['wordpress_editable_roles_list'] = array_map(function($roleId, $role) {

View File

@ -21,6 +21,7 @@
var mailpoet_has_valid_api_key = <%= has_valid_api_key ? 'true' : 'false' %>; var mailpoet_has_valid_api_key = <%= has_valid_api_key ? 'true' : 'false' %>;
var mailpoet_mss_key_invalid = <%= mss_key_invalid ? 'true' : 'false' %>; var mailpoet_mss_key_invalid = <%= mss_key_invalid ? 'true' : 'false' %>;
var mailpoet_subscribers_count = <%= subscriber_count %>; var mailpoet_subscribers_count = <%= subscriber_count %>;
var mailpoet_custom_fields = <%= json_encode(custom_fields) %>;
var mailpoet_has_premium_support = <%= has_premium_support ? 'true' : 'false' %>; var mailpoet_has_premium_support = <%= has_premium_support ? 'true' : 'false' %>;
var wordpress_editable_roles_list = <%= json_encode(wordpress_editable_roles_list) %>; var wordpress_editable_roles_list = <%= json_encode(wordpress_editable_roles_list) %>;
var mailpoet_newsletters_list = <%= json_encode(newsletters_list) %>; var mailpoet_newsletters_list = <%= json_encode(newsletters_list) %>;