'notificationx_metabox_wrapper',
'title' => __('NotificationX', 'notificationx'),
'object_types' => array('notificationx'),
'context' => 'normal',
'priority' => 'high',
'show_header' => false,
'tabnumber' => true,
'layout' => 'horizontal',
'version' => defined('NOTIFICATIONX_VERSION') ? NOTIFICATIONX_VERSION : null,
'pro_version' => defined('NOTIFICATIONX_PRO_VERSION') ? NOTIFICATIONX_PRO_VERSION : null,
'is_pro_active' => NotificationX::get_instance()->is_pro(),
'cus_imp_limit' => Settings::get_instance()->get('settings.custom_notification_import_limit', 100),
'is_pro_sources' => apply_filters('nx_is_pro_sources', []),
'config' => [
'active' => "source_tab",
'completionTrack' => true,
'sidebar' => true,
'content_heading' => [],
'step' => [
'show' => true,
'buttons' => [
'prev' => __('Previous', 'notificationx'),
'next' => __('Next', 'notificationx'),
]
],
],
'submit' => [
'show' => false,
],
'tabs' => [
"source_tab" => [
'label' => __("Source", 'notificationx'),
'id' => "source_tab",
'name' => "source_tab",
'icon' => [
'type' => 'tabs',
'name' => 'source'
],
'classes' => "source_tab",
'fields' => apply_filters('nx_source_fields', [
'type_section' => [
'label' => __("Notification Type", 'notificationx'),
'name' => "type_section",
'type' => "section",
'fields' => [
'type' => [
// 'label' => "Notification Type",
'name' => "type",
'type' => "radio-card",
'default' => "notification_bar",
'style' => [
'label' => [
'position' => 'top'
]
],
'options' => (array) array_map(function ($type) {
return [
'value' => $type->id,
'label' => $type->title,
'is_pro' => $type->is_pro && ! NotificationX::is_pro(),
'priority' => $type->priority,
'popup' => apply_filters('nx_pro_alert_popup', $type->popup),
];
}, array_values(TypeFactory::get_instance()->get_all())),
'validation_rules' => [
'required' => true,
'label' => "Type",
],
// 'trigger' => [
// 'defaults' => apply_filters( 'nx_type_trigger', [] ),
// ]
],
]
],
'source_section' => [
'label' => __("Source", 'notificationx'),
'name' => "source_section",
'type' => "section",
'fields' => [
'source_error' => [
'type' => 'message',
'name' => 'source_error',
'messages' => apply_filters('source_error_message', []),
'rules' => '',
],
'source' => [
// 'label' => "Source",
'name' => "source",
'type' => "radio-card",
'options' => apply_filters('nx_sources', []),
'default' => 'woocommerce',
'style' => [
'label' => [
'position' => 'top'
]
],
'validation_rules' => [
'required' => true,
'label' => "Source",
],
'trigger' => [
'defaults' => apply_filters( 'nx_source_trigger', [
"custom_notification" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"custom_notification_conversions" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"edd" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"envato" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"give" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"learndash" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"tutor" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"reviewx" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"woocommerce" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"surecart" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"woo_reviews" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"wp_reviews" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"freemius_conversions" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"freemius_reviews" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"freemius_stats" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
"convertkit" => [
'show_notification_image' => '@show_notification_image:gravatar',
],
"zapier" => [
'show_notification_image' => '@show_notification_image:gravatar',
],
"mailchimp" => [
'show_notification_image' => '@show_notification_image:gravatar',
],
"wp_comments" => [
'show_notification_image' => '@show_notification_image:gravatar',
],
"cf7" => [
'show_notification_image' => '@show_notification_image:gravatar',
],
"njf" => [
'show_notification_image' => '@show_notification_image:gravatar',
],
"grvf" => [
'show_notification_image' => '@show_notification_image:gravatar',
],
"wpf" => [
'show_notification_image' => '@show_notification_image:gravatar',
],
"woocommerce_sales" => [
'show_notification_image' => '@show_notification_image:featured_image',
],
] ),
]
],
],
// 'rules' => Rules::logicalRule([
// Rules::is('type', 'notification_bar', true),
// ]),
],
]),
// 'rules' => Rules::is('source', false)
],
"design_tab" => [
'label' => __("Design", 'notificationx'),
'id' => "design_tab",
'name' => "design_tab",
'icon' => [
'type' => 'tabs',
'name' => 'design'
],
'classes' => "design_tab",
'fields' => apply_filters('nx_design_tab_fields', [
'design_error' => [
'type' => 'message',
'name' => 'design_error',
'messages' => apply_filters('design_error_message', []),
'rules' => '',
],
"main_preview" => [
'label' => __("Preview", 'notificationx'),
'name' => "main_preview",
'type' => "section",
'priority' => 1,
'fields' => [
'preview_field' => [
'name' => "preview_field",
'type' => "preview",
'label' => __('Preview', 'notificationx'),
'priority' => 10,
],
],
'rules' => Rules::logicalRule([
Rules::is( 'type', 'notification_bar' ),
]),
],
"themes" => [
'label' => __("Themes", 'notificationx'),
'name' => "themes",
'type' => "section",
'fields' => [
// [
// 'label' => __("Select Theme", 'notificationx'),
// 'name' => "gdpr_s_theme",
// 'type' => "select",
// 'default' => 'light',
// 'options' => GlobalFields::get_instance()->normalize_fields([
// 'light' => __('Light', 'notificationx'),
// 'dark' => __('Dark', 'notificationx'),
// ]),
// 'rules' => Rules::logicalRule([
// Rules::is( 'type', 'gdpr' ),
// ]),
// ],
[
'label' => __("Select Theme", 'notificationx'),
'name' => "gdpr_theme",
'type' => "better-toggle",
'default' => false,
'toggle_label' => ['toggle_label_1' => __('Light', 'notificationx'), 'toggle_label_2' => __('Dark', 'notificationx')],
'rules' => Rules::logicalRule([
Rules::is( 'type', 'gdpr' ),
]),
],
"themes_section" => [
'type' => 'section',
'name' => 'themes_section',
'classes' => NotificationX::is_pro() ? 'pro-activated' : 'pro-deactivated','rules' => Rules::logicalRule([
Rules::is( 'type', 'gdpr', true ),
]),
'fields' => [
'themes_tab' => [
'type' => 'tab',
'name' => 'themes_tab',
'submit' => [
'show' => false,
],
'default' => 'for_desktop',
'fields' => [
'for_desktop' => [
'label' => __("For Desktop", 'notificationx'),
'name' => 'for_desktop',
'id' => 'for_desktop',
'type' => 'section',
'icon' => NOTIFICATIONX_ADMIN_URL . 'images/responsive/desktop.svg',
],
'for_mobile' => [
'label' => __("For Mobile", 'notificationx'),
'type' => 'section',
'name' => 'for_mobile',
'id' => 'for_mobile',
'icon' => NOTIFICATIONX_ADMIN_URL . 'images/responsive/mobile.svg',
'rules' => Rules::logicalRule([
Rules::is( 'source', ['woocommerce_sales_inline'], true ),
Rules::includes('type', [ 'notification_bar', 'flashing_tab', 'inline', 'sales_inline', 'offer_announcement', 'custom' ], true),
]),
],
]
],
],
],
'themes' => [
// 'label' => "Themes",
'name' => "themes",
'type' => "radio-card",
// 'default' => "conversions_theme-one",
'options' => apply_filters('nx_themes', []),
'priority' => 10,
'style' => [
'label' => [
'position' => 'top'
]
],
'validation_rules' => [
'required' => true,
'label' => "Theme",
],
'trigger' => [
'defaults' => apply_filters('nx_themes_trigger', []),
],
'rules' => Rules::logicalRule([
Rules::is('themes_tab', 'for_desktop'),
]),
],
"responsive_themes" => [
// 'label' => __("Mobile Responsive Themes", 'notificationx'),
'name' => "responsive_themes",
'type' => "section",
'priority' => 10,
'classes' => NotificationX::is_pro() ? 'pro-activated' : 'pro-deactivated',
'rules' => Rules::logicalRule([
Rules::is('themes_tab', 'for_mobile'),
]),
'fields' => [
'res_get_pro_btn' => array(
'name' => 'res_get_pro_btn',
'text' => __( 'Get PRO to Unlock', 'notificationx' ),
'type' => 'button',
'href' => esc_url('https://notificationx.com/#pricing'),
'target' => '_blank',
'classes' => 'res_get_pro_btn',
),
'responsive_themes' => [
'name' => "responsive_themes",
'type' => "radio-card",
'options' => apply_filters('nx_res_themes', []),
'priority' => 10,
'style' => [
'label' => [
'position' => 'top'
]
],
'validation_rules' => [
'required' => true,
'label' => __("Mobile Responsive Themes",'notificationx'),
],
'trigger' => [
'defaults' => apply_filters('nx_themes_trigger_for_responsive', []),
],
],
'is_mobile_responsive' => [
'label' => __("Enable Mobile Responsive", 'notificationx'),
'name' => "is_mobile_responsive",
'type' => "toggle",
'default' => true,
'priority' => 20,
'is_pro' => true,
],
]
],
[
'label' => __("Position", 'notificationx'),
'name' => "gdpr_position",
'type' => "select",
'default' => 'cookie_notice_bottom_right',
'options' => GlobalFields::get_instance()->normalize_fields([
'cookie_notice_bottom_left' => __('Bottom Left', 'notificationx'),
'cookie_notice_bottom_right' => __('Bottom Right', 'notificationx'),
'cookie_notice_center' => __('Center', 'notificationx'),
]),
'rules' => Rules::logicalRule([
Rules::is( 'type', 'gdpr' ),
Rules::includes('themes', [ 'gdpr_theme-light-one', 'gdpr_theme-light-two', 'gdpr_theme-light-three',
'gdpr_theme-light-four', 'gdpr_theme-dark-one', 'gdpr_theme-dark-two', 'gdpr_theme-dark-three', 'gdpr_theme-dark-four' ], false),
]),
],
[
'label' => __("Position", 'notificationx'),
'name' => "gdpr_banner_position",
'type' => "select",
'default' => 'cookie_banner_bottom',
'options' => GlobalFields::get_instance()->normalize_fields([
'cookie_banner_bottom' => __('Bottom', 'notificationx'),
'cookie_banner_top' => __('Top', 'notificationx'),
]),
'rules' => Rules::logicalRule([
Rules::is( 'type', 'gdpr' ),
Rules::includes('themes', [ 'gdpr_theme-banner-light-one', 'gdpr_theme-banner-light-two', 'gdpr_theme-banner-dark-one', 'gdpr_theme-banner-dark-two' ], false),
]),
],
'advance_edit' => [
'label' => __("Advanced Design", 'notificationx'),
'name' => "advance_edit",
'type' => "toggle",
'default' => false,
'priority' => 20,
'rules' => Rules::logicalRule([
Rules::is('themes_tab', 'for_desktop'),
Rules::is('themes_tab', 'nxbar_build_with_ai'),
], 'or'),
],
]
],
'advance_design_section' => [
'label' => __('Advanced Design', 'notificationx'),
'type' => 'section',
'name' => 'advance_design_section',
'dependency_class' => [
'name' => 'advance_edit',
'is' => true,
'classes' => 'advanced_active',
'selector' => '#advance_design_section',
],
'fields' => [
"advance_edit" => [
'label' => __("Advanced Toggle", 'notificationx'),
'name' => "advance_edit",
'type' => "toggle",
'default' => false,
'priority' => 1,
],
"design" => [
'label' => __("Design", 'notificationx'),
'name' => "design",
'type' => "section",
'priority' => 5,
'rules' => Rules::is('advance_edit', true),
// 'rules' => Rules::is( 'advance_edit', true ),
'fields' => [
[
'label' => __("Background Color", 'notificationx'),
'name' => "bg_color",
'type' => "colorpicker",
'default' => "#fff",
],
[
'label' => __("Text Color", 'notificationx'),
'name' => "text_color",
'type' => "colorpicker",
'default' => "#000",
],
[
'label' => __("Want Border?", 'notificationx'),
'name' => "border",
'type' => "checkbox",
'default' => 0,
],
[
'label' => __("Border Size", 'notificationx'),
'name' => "border_size",
'type' => "number",
'default' => 1,
'rules' => Rules::is( 'border', true ),
],
[
'label' => __("Border Style", 'notificationx'),
'name' => "border_style",
'type' => "select",
'default' => 'solid',
'options' => $this->normalize_fields([
'solid' => __('Solid', 'notificationx'),
'dashed' => __('Dashed', 'notificationx'),
'dotted' => __('Dotted', 'notificationx'),
]),
'rules' => Rules::is( 'border', true ),
],
[
'label' => __('Border Color', 'notificationx'),
'name' => "border_color",
'type' => "colorpicker",
'default' => "#000",
'rules' => Rules::is( 'border', true ),
],
[
'label' => __('Discount Text Color', 'notificationx'),
'name' => "discount_text_color",
'type' => "colorpicker",
'default' => "#fff",
'rules' => Rules::logicalRule([
Rules::is( 'type', 'offer_announcement' ),
Rules::includes('themes', [ 'announcements_theme-1', 'announcements_theme-2' ], false),
]),
],
[
'label' => __('Discount Background', 'notificationx'),
'name' => "discount_background",
'type' => "colorpicker",
'rules' => Rules::logicalRule([
Rules::is( 'type', 'offer_announcement' ),
Rules::includes('themes', [ 'announcements_theme-1', 'announcements_theme-2' ], false),
]),
],
]
],
"typography" => [
'label' => __('Typography', 'notificationx'),
'name' => "typography",
'type' => "section",
'priority' => 10,
'rules' => Rules::is( 'advance_edit', true ),
'fields' => [
[
'label' => __('Font Size', 'notificationx'),
'name' => "first_font_size",
'type' => "number",
'default' => '13',
'description' => 'px',
'help' => __('This font size will be applied for first row', 'notificationx'),
],
[
'label' => __('Font Size', 'notificationx'),
'name' => "second_font_size",
'type' => "number",
'default' => '14',
'description' => 'px',
'help' => __('This font size will be applied for second row', 'notificationx'),
],
[
'label' => __('Font Size', 'notificationx'),
'name' => "third_font_size",
'type' => "number",
'default' => '11',
'description' => 'px',
'help' => __('This font size will be applied for third row', 'notificationx'),
],
]
],
"image-appearance" => [
'label' => __('Image Appearance', 'notificationx'),
'name' => "image-appearance",
'type' => "section",
'priority' => 15,
'rules' => Rules::is( 'advance_edit', true ),
'fields' => [
'image_shape' => [
'label' => __('Image Shape', 'notificationx'),
'name' => "image_shape",
'type' => "select",
'default' => 'circle',
'priority' => 5,
'options' => $this->normalize_fields([
'circle' => __('Circle', 'notificationx'),
'rounded' => __('Rounded', 'notificationx'),
'square' => __('Square', 'notificationx'),
]),
],
'image_position' => [
'label' => __('Position', 'notificationx'),
'name' => "image_position",
'type' => "select",
'default' => 'left',
'priority' => 15,
'options' => $this->normalize_fields([
'left' => __('Left', 'notificationx'),
'right' => __('Right', 'notificationx'),
]),
],
]
],
"custom_css" => [
'label' => __('Custom CSS', 'notificationx'),
'name' => "custom_css",
'type' => "section",
'priority' => 150,
'rules' => Rules::is( 'advance_edit', true ),
'fields' => [
[
'label' => __('Add Custom CSS', 'notificationx'),
'name' => "add_custom_css",
'type' => "advanced-codeviewer",
'button_text' => __( 'Click to Copy', 'notificationx' ),
'success_text' => __( 'Copied to clipboard.', 'notificationx' ),
'is_pro' => true,
'copyOnClick' => false,
'priority' => 5,
'info' => InfoTooltipManager::get_instance()->render('custom_css'),
'help' => __('Use custom CSS to style this Notification.', 'notificationx'),
],
]
],
]
]
])
],
"content_tab" => [
'label' => __("Content", 'notificationx'),
'id' => "content_tab",
'name' => "content_tab",
'icon' => [
'type' => 'tabs',
'name' => 'content'
],
'classes' => "content_tab",
'fields' => apply_filters('nx_content_fields', [
"main_preview" => [
'label' => __("Preview", 'notificationx'),
'name' => "main_preview",
'type' => "section",
'priority' => 1,
'fields' => [
'preview_field' => [
'name' => "preview_field",
'type' => "preview",
'label' => __('Preview', 'notificationx'),
'priority' => 10,
],
],
'rules' => Rules::logicalRule([
Rules::is( 'type', 'notification_bar' ),
]),
],
'content' => apply_filters('nx_content_field', [
'label' => __("Content", 'notificationx'),
'name' => "content",
'type' => "section",
'priority' => 90,
'fields' => [
"notification-template" => [
'label' => __("Notification Template", 'notificationx'),
'name' => "notification-template",
'type' => "group",
'display' => 'inline',
'priority' => 90,
'fields' => apply_filters('nx_notification_template', [
"first_param" => [
// 'label' => __("First Parameter", 'notificationx'),
'name' => "first_param",
'type' => "select",
'priority' => 3,
'default' => 'tag_name',
'options' => $this->normalize_fields([
'tag_custom' => __('Custom', 'notificationx'),
]),
],
"custom_first_param" => [
// 'label' => __("Custom First Parameter", 'notificationx'),
'name' => "custom_first_param",
'type' => "text",
'priority' => 5,
'default' => __('Someone', 'notificationx'),
'rules' => Rules::is( 'notification-template.first_param', 'tag_custom' ),
],
"second_param" => [
// 'label' => __("Second Param", 'notificationx'),
'name' => "second_param",
'type' => "text",
'priority' => 10,
'default' => __('recently purchased', 'notificationx'),
],
"third_param" => [
// 'label' => __("Third Parameter", 'notificationx'),
'name' => "third_param",
'type' => "select",
'priority' => 20,
'default' => 'tag_title',
'options' => $this->normalize_fields([
'tag_custom' => __('Custom', 'notificationx'),
]),
],
"custom_third_param" => [
// 'label' => __("Custom Third Param", 'notificationx'),
'name' => "custom_third_param",
'type' => "text",
'priority' => 25,
'default' => __('Some time ago', 'notificationx'),
'rules' => Rules::is( 'notification-template.third_param', 'tag_custom' ),
],
"fourth_param" => [
// 'label' => __("Fourth Parameter", 'notificationx'),
'name' => "fourth_param",
'type' => "select",
'priority' => 30,
'default' => 'tag_time',
'options' => $this->normalize_fields([
'tag_custom' => __('Custom', 'notificationx'),
]),
],
"custom_fourth_param" => [
// 'label' => __("Custom Fourth Parameter", 'notificationx'),
'name' => "custom_fourth_param",
'type' => "text",
'priority' => 35,
'default' => __('Some time ago', 'notificationx'),
'rules' => Rules::is( 'notification-template.fourth_param', 'tag_custom' ),
],
"fifth_param" => [
// 'label' => __("Fifth Parameter", 'notificationx'),
'name' => "fifth_param",
'type' => "select",
'priority' => 40,
'options' => $this->normalize_fields([
'tag_custom' => __('Custom', 'notificationx'),
]),
],
"custom_fifth_param" => [
// 'label' => __("Custom Fifth Parameter", 'notificationx'),
'name' => "custom_fifth_param",
'type' => "text",
'priority' => 45,
'rules' => Rules::is( 'notification-template.fifth_param', 'tag_custom' ),
],
"sixth_param" => [
// 'label' => __("Sixth Parameter", 'notificationx'),
'name' => "sixth_param",
'type' => "select",
'priority' => 50,
// 'default' => 'tag_custom',
'options' => $this->normalize_fields([
'tag_custom' => __('Custom', 'notificationx'),
]),
],
"custom_sixth_param" => [
// 'label' => __("Custom Sixth Parameter", 'notificationx'),
'name' => "custom_sixth_param",
'type' => "text",
'priority' => 55,
'rules' => Rules::is( 'notification-template.sixth_param', 'tag_custom' ),
],
]),
'rules' => Rules::includes( 'source', apply_filters('nx_notification_template_dependency', []) ),
],
'template_adv' => [
'label' => __("Advanced Template", 'notificationx'),
'name' => "template_adv",
'type' => "toggle",
'default' => false,
'is_pro' => true,
'priority' => 91,
'info' => InfoTooltipManager::get_instance()->render('advanced_template'),
],
'advanced_template' => [
'name' => 'advanced_template',
'type' => 'advanced-template',
'label' => __('Advanced Template', 'notificationx'),
'priority' => 92,
'rules' => ['is', 'template_adv', true],
],
'random_order' => array(
'name' => 'random_order',
'label' => __('Random Order', 'notificationx'),
'type' => 'checkbox',
'priority' => 93,
'default' => 0,
'is_pro' => true,
'description' => __('Enable to show notification in random order.', 'notificationx'),
'rules' => Rules::includes('source', ['woocommerce', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline","surecart","custom_notification", 'woocommerce_sales','woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart']),
'info' => InfoTooltipManager::get_instance()->render('random_order'),
),
'product_control' => array(
'label' => __('Show Purchase Of', 'notificationx'),
'name' => 'product_control',
'type' => 'select',
'priority' => 94,
'default' => 'none',
// 'is_pro' => true,
// 'disable' => true,
'options' => GlobalFields::get_instance()->normalize_fields([
'none' => __('All', 'notificationx'),
'product_category' => __('Product Category', 'notificationx'),
'manual_selection' => __('Selected Product', 'notificationx'),
]),
'info' => InfoTooltipManager::get_instance()->render('show_purchase_of'),
'rules' => Rules::includes('source', ['woocommerce','woocommerce_sales', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline","surecart",'woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']),
),
'category_list' => array(
'label' => __('Select Product Category', 'notificationx'),
'name' => 'category_list',
'type' => 'select',
'multiple' => true,
'priority' => 95,
'options' => apply_filters('nx_conversion_category_list', []),
'rules' => Rules::logicalRule([
Rules::includes('source', ['woocommerce' , 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline", "surecart", 'woocommerce_sales','woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']),
Rules::is( 'product_control', 'product_category' ),
]),
),
'product_list' => array(
'label' => __('Select Product', 'notificationx'),
'name' => 'product_list',
'type' => 'select-async',
'multiple' => true,
'priority' => 96,
'options' => apply_filters('nx_conversion_product_list', [
[
'label' => "Type for more result...",
'value' => null,
'disabled' => true,
],
]),
'rules' => Rules::logicalRule([
Rules::includes('source', ['woocommerce', 'woocommerce_sales', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline","surecart",'woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']),
Rules::is( 'product_control', 'manual_selection' ),
]),
'ajax' => [
'api' => "/notificationx/v1/get-data",
'data' => [
'type' => "@type",
'source' => "@source",
'field' => "product_list",
],
// 'target' => "product_list",
'rules' => Rules::logicalRule([
Rules::includes('source', ['woocommerce', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline", "surecart", 'woocommerce_sales','woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']),
Rules::is( 'product_control', 'manual_selection' ),
]),
],
),
'product_exclude_by' => array(
'label' => __('Exclude By', 'notificationx'),
'name' => 'product_exclude_by',
'type' => 'select',
'priority' => 97,
'default' => 'none',
// 'is_pro' => true,
// 'disable' => true,
'options' => GlobalFields::get_instance()->normalize_fields([
'none' => __('None', 'notificationx'),
'product_category' => __('Product Category', 'notificationx'),
'manual_selection' => __('Selected Product', 'notificationx'),
]),
'info' => InfoTooltipManager::get_instance()->render('exclude_by'),
'rules' => Rules::includes('source', ['woocommerce', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline","surecart", 'woocommerce_sales','woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']),
),
'exclude_categories' => array(
'label' => __('Select Product Category', 'notificationx'),
'name' => 'exclude_categories',
'type' => 'select',
'multiple' => true,
'priority' => 98,
'options' => apply_filters('nx_conversion_category_list', []),
'rules' => Rules::logicalRule([
Rules::includes('source', ['woocommerce', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline", "surecart", 'woocommerce_sales','woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']),
Rules::is( 'product_exclude_by', 'product_category' ),
]),
),
'exclude_products' => array(
'label' => __('Select Product', 'notificationx'),
'name' => 'exclude_products',
'type' => 'select-async',
'multiple' => true,
'priority' => 99,
'options' => apply_filters('nx_conversion_product_list', [
[
'label' => "Type for more result...",
'value' => null,
'disabled' => true,
],
]),
'rules' => Rules::logicalRule([
Rules::includes('source', ['woocommerce', 'woocommerce_sales', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline","surecart",'woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']),
Rules::is( 'product_exclude_by', 'manual_selection' ),
]),
'ajax' => [
'api' => "/notificationx/v1/get-data",
'data' => [
'type' => "@type",
'source' => "@source",
'field' => "exclude_products",
],
'rules' => Rules::logicalRule([
Rules::includes('source', ['woocommerce', 'woo_reviews', "edd", "reviewx", "woo_inline", "edd_inline", 'woocommerce_sales','woocommerce_sales_reviews','woocommerce_sales_inline','fluentcart','fluentcart_inline']),
Rules::is( 'product_exclude_by', 'manual_selection' ),
]),
],
),
'order_status' => array(
'label' => __('Order Status', 'notificationx'),
'name' => 'order_status',
'type' => 'select',
'multiple' => true,
'is_pro' => true,
'priority' => 99.5,
'default' => ['wc-completed', 'wc-processing'],
'help' => __("By default it will show Processing & Completed status.",'notificationx'),
'options' => apply_filters('nx_woo_order_status', []),
'info' => InfoTooltipManager::get_instance()->render('order_status'),
'rules' => Rules::logicalRule([
Rules::includes('source', ['woocommerce', 'woocommerce_sales', "woo_inline","woocommerce_sales_inline"]),
Rules::includes('themes', [ 'woo_inline_stock-theme-one', 'woo_inline_stock-theme-two', 'woocommerce_sales_inline_stock-theme-one', 'woocommerce_sales_inline_stock-theme-two'], true),
]),
),
'surecart_order_status' => array(
'label' => __('Order Status', 'notificationx'),
'name' => 'surecart_order_status',
'type' => 'select',
'multiple' => true,
'is_pro' => true,
'priority' => 99.6,
'default' => ['processing','fulfilled'],
'help' => __("By default it will show Processing & Fulfilled status.",'notificationx'),
'options' => apply_filters('nx_surecart_order_status', []),
'info' => InfoTooltipManager::get_instance()->render('order_status'),
'rules' => Rules::logicalRule([
Rules::includes('source', ["surecart"]),
]),
),
'fluentcart_order_status' => array(
'label' => __('Order Status', 'notificationx'),
'name' => 'fluentcart_order_status',
'type' => 'select',
'multiple' => true,
'is_pro' => true,
'priority' => 99.8,
'default' => ['on-hold','completed','processing'],
'help' => __("By default it will show Processing & Fulfilled status.",'notificationx'),
'options' => apply_filters('nx_fluentcart_order_status', []),
'info' => InfoTooltipManager::get_instance()->render('order_status'),
'rules' => Rules::logicalRule([
Rules::includes('source', ["fluentcart"]),
]),
),
'combine_multiorder' => [
'label' => __('Combine Multi Order', 'notificationx'),
'name' => 'combine_multiorder',
'type' => 'checkbox',
'priority' => 99.7,
'default' => true,
'description' => __('Combine order like, 2 more products.', 'notificationx'),
'rules' => Rules::logicalRule([
Rules::is('notification-template.first_param', 'tag_sales_count', true),
Rules::includes('source', [ 'woocommerce', 'edd', 'woocommerce_sales' ]),
]),
],
],
]),
'gdpr_content' => apply_filters('nx_content_gdpr', [
'label' => __("Cookies Content", 'notificationx'),
'name' => "content",
'type' => "section",
'priority' => 95,
'fields' => apply_filters('nx_content_fields_gdpr', []),
'rules' => Rules::is('type', 'gdpr' ),
]),
'link_options' => [
'label' => __('Link Options', 'notificationx'),
'name' => "link_options",
'type' => "section",
'priority' => 105,
'fields' => [
"link_type" => [
'label' => __("Link Type", 'notificationx'),
'name' => "link_type",
'type' => "select",
'default' => 'none',
'options' => apply_filters('nx_link_types', $this->normalize_fields([
'none' => __('None', 'notificationx'),
])),
],
'link_button' => [
'label' => __('Button', 'notificationx'),
'name' => 'link_button',
'type' => 'checkbox',
'priority' => 100,
'is_pro' => true,
'default' => false,
// 'default' => [
// 'youtube_channel-1' => true,
// 'youtube_channel-2' => true,
// 'youtube_video-3' => true,
// 'youtube_video-4' => true,
// ],
'info' => InfoTooltipManager::get_instance()->render('button'),
'description' => __('Enable button with link', 'notificationx'),
'rules' => Rules::logicalRule([
Rules::includes('type', ['conversions','video','woocommerce', 'woocommerce_sales','page_analytics']),
Rules::is('link_type','none',true),
]),
],
],
// must be called after nx_link_types filter.
'rules' => Rules::logicalRule([
[ 'includes', 'source', apply_filters('nx_link_types_dependency', []) ],
Rules::is( 'type', 'gdpr', true ),
]),
],
]),
],
"manager_tab" => [
'label' => __("Manager", 'notificationx'),
'id' => "manager_tab",
'name' => "manager_tab",
'rules' => Rules::is('type', 'gdpr'),
'icon' => [
'type' => 'tabs',
'name' => 'manager'
],
'classes' => "manager_tab",
'fields' => apply_filters('nx_manager_fields', [
"main_preview" => [
'label' => __("Preview", 'notificationx'),
'name' => "main_preview",
'type' => "section",
'priority' => 1,
'fields' => [
'preview_field' => [
'name' => "preview_field",
'type' => "preview",
'label' => __('Preview', 'notificationx'),
'priority' => 10,
],
],
'rules' => Rules::logicalRule([
Rules::is( 'type', 'notification_bar' ),
]),
],
'general_settngs' => [
'label' => __("General Settings", 'notificationx'),
'id' => "general_settngs",
'name' => "general_settngs",
'type' => 'section',
'fields'=> [
'gdpr_force_reload' => [
'label' => __("Force Reload", 'notificationx'),
'name' => "gdpr_force_reload",
'type' => "better-toggle",
'default' => false,
'toggle_label' => ['toggle_label_1' => __('Enable Force Reload', 'notificationx'), 'toggle_label_2' => __('', 'notificationx')],
'rules' => Rules::logicalRule([
Rules::is( 'type', 'gdpr' ),
]),
'info' => __('Choose whether the page should reload after the user accepts cookies. If not, your analytics software won’t register the current page visit, as cookies will only be loaded during the next page load', 'notificationx'),
],
'gdpr_cookie_removal' => [
'label' => __("Cookie Removal", 'notificationx'),
'name' => "gdpr_cookie_removal",
'type' => "better-toggle",
'default' => false,
'toggle_label' => ['toggle_label_1' => __('Enable Cookie Removal', 'notificationx'), 'toggle_label_2' => __('', 'notificationx')],
'rules' => Rules::logicalRule([
Rules::is( 'type', 'gdpr' ),
]),
'info' => __('When cookies are not accepted, non-essential cookies are removed, ensuring compliance with GDPR requirements.', 'notificationx'),
],
'gdpr_consent_expiry' => [
'label' => __("Consent Expiry", 'notificationx'),
'name' => "gdpr_consent_expiry",
'type' => "number",
'min' => 1,
'description' => __('Days', 'notificationx'),
'default' => 30,
'suggestions' => [
[
'value' => 30,
'unit' => 'days',
],
[
'value' => 90,
'unit' => 'days',
],
[
'value' => 180,
'unit' => 'days',
],
[
'value' => 365,
'unit' => 'days',
],
],
'rules' => Rules::logicalRule([
Rules::is( 'type', 'gdpr' ),
]),
'info' => __('By default, consent expires after 30 days. If needed, you can adjust this number to your preference', 'notificationx'),
],
]
],
'scan_cookies' => [
'label' => 'Scan Cookies',
'type' => 'section',
'name' => 'scan_cookies',
'fields' => [
'cookie_scanner' => [
'type' => 'cookie-scanner',
'name' => 'cookie_scanner',
'id' => 'cookie_scanner',
'label' => 'Cookie Scanner',
],
]
],
'cookies_list_section' => [
'label' => 'Cookies List',
'type' => 'section',
'name' => 'cookies_list_section',
'fields' => [
'cookies_lists' => [
'type' => 'tab',
'name' => 'cookies_lists',
'submit' => [
'show' => false,
],
'default' => 'necessary_tab',
'dataShare' => true,
'fields' => [
'necessary_tab' => [
'label' => __("Necessary", 'notificationx'),
'name' => 'necessary_tab',
'id' => 'necessary_tab',
'type' => 'section',
'icon' => [
'type' => 'tabs',
'name' => 'necessary'
],
'fields' => [
'necessary_tab_info_modal' => [
'name' => 'necessary_tab_info_modal',
'type' => 'modal',
'show_body' => true,
'close_on_body' => true,
'button' => [
'name' => 'tab_info_edit',
'text' => __(' ', 'notificationx'),
'icon' => [
'type' => 'tabs',
'name' => 'edit_modal'
],
],
'confirm_button' => [
'type' => 'button',
'text' => 'Save',
'name' => 'necessary_close_tab_info_modal',
"default" => false,
'close_action' => true,
],
'cancel' => "necessary_close_tab_info_modal",
'body' => [
'header' => __('Edit Category ', 'notificationx'),
'fields' => [
'tab_title' => Helper::tab_info_title('necessary', 'Necessary'),
'tab_description' => Helper::tab_info_desc('necessary', 'Necessary cookies are needed to ensure the basic functions of this site, like allowing secure log-ins and managing your consent settings. These cookies do not collect any personal information.'),
],
],
],
'necessary_cookie_lists' => [
'label' => __('', 'notificationx'),
'name' => 'necessary_cookie_lists',
'type' => 'better-repeater',
'priority' => 10,
'placeholder_img'=> NOTIFICATIONX_ADMIN_URL . 'images/extensions/empty-cookie.png',
'button' => [
'label' => __('Add New', 'notificationx'),
'position' => 'top',
],
'default' => Helper::default_cookie_list(),
'visible_fields' => ['cookies_id','load_inside', 'script_url_pattern', 'description'],
'_fields' => Helper::gdpr_common_fields(),
]
],
],
'functional_tab' => [
'label' => __("Functional", 'notificationx'),
'type' => 'section',
'name' => 'functional_tab',
'id' => 'functional_tab',
'icon' => [
'type' => 'tabs',
'name' => 'functional'
],
'fields' => [
'functional_tab_info_modal' => [
'name' => 'functional_tab_info_modal',
'type' => 'modal',
'show_body' => true,
'close_on_body' => true,
'button' => [
'name' => 'tab_info_edit',
'text' => __(' ', 'notificationx'),
'icon' => [
'type' => 'tabs',
'name' => 'edit_modal'
],
],
'confirm_button' => [
'type' => 'button',
'text' => 'Save',
'name' => 'functional_close_tab_info_modal',
"default" => false,
'close_action' => true,
],
'cancel' => "functional_close_tab_info_modal",
'body' => [
'header' => __('Edit Category ', 'notificationx'),
'fields' => [
'tab_title' => Helper::tab_info_title('functional', 'Functional'),
'tab_description' => Helper::tab_info_desc('functional', 'Functional cookies assist in performing tasks like sharing website content on social media, collecting feedback, and enabling other third-party features.'),
],
],
],
'functional_cookie_lists' => [
'label' => __('', 'notificationx'),
'name' => 'functional_cookie_lists',
'type' => 'better-repeater',
'priority' => 10,
'placeholder_img'=> NOTIFICATIONX_ADMIN_URL . 'images/extensions/empty-cookie.png',
'button' => [
'label' => __('Add New', 'notificationx'),
'position' => 'top',
],
'visible_fields' => Helper::gdpr_cookie_list_visible_fields(),
'_fields' => Helper::gdpr_common_fields(),
]
],
],
'analytics_tab' => [
'label' => __("Analytics", 'notificationx'),
'type' => 'section',
'name' => 'analytics_tab',
'id' => 'analytics_tab',
'icon' => [
'type' => 'tabs',
'name' => 'analytics'
],
'fields' => [
'analytics_tab_info_modal' => [
'name' => 'analytics_tab_info_modal',
'type' => 'modal',
'show_body' => true,
'close_on_body' => true,
'button' => [
'name' => 'tab_info_edit',
'text' => __(' ', 'notificationx'),
'icon' => [
'type' => 'tabs',
'name' => 'edit_modal'
],
],
'confirm_button' => [
'type' => 'button',
'text' => 'Save',
'name' => 'analytics_close_tab_info_modal',
"default" => false,
'close_action' => true,
],
'cancel' => "analytics_close_tab_info_modal",
'body' => [
'header' => __('Edit Category ', 'notificationx'),
'fields' => [
'tab_title' => Helper::tab_info_title('analytics', 'Analytics'),
'tab_description' => Helper::tab_info_desc('analytics', 'Analytical cookies help us understand how visitors use the website. They provide data on metrics like the number of visitors, bounce rate, traffic sources etc.'),
],
],
],
'analytics_cookie_lists' => [
'label' => __('', 'notificationx'),
'name' => 'analytics_cookie_lists',
'type' => 'better-repeater',
'priority' => 10,
'placeholder_img'=> NOTIFICATIONX_ADMIN_URL . 'images/extensions/empty-cookie.png',
'button' => [
'label' => __('Add New', 'notificationx'),
'position' => 'top',
],
'visible_fields' => Helper::gdpr_cookie_list_visible_fields(),
'_fields' => Helper::gdpr_common_fields(),
]
],
],
'performance_tab' => [
'label' => __("Performance", 'notificationx'),
'type' => 'section',
'name' => 'performance_tab',
'id' => 'performance_tab',
'icon' => [
'type' => 'tabs',
'name' => 'performance'
],
'fields' => [
'performance_tab_info_modal' => [
'name' => 'performance_tab_info_modal',
'type' => 'modal',
'show_body' => true,
'close_on_body' => true,
'button' => [
'name' => 'tab_info_edit',
'text' => __(' ', 'notificationx'),
'icon' => [
'type' => 'tabs',
'name' => 'edit_modal'
],
],
'confirm_button' => [
'type' => 'button',
'text' => 'Save',
'name' => 'performance_close_tab_info_modal',
"default" => false,
'close_action' => true,
],
'cancel' => "performance_close_tab_info_modal",
'body' => [
'header' => __('Edit Category ', 'notificationx'),
'fields' => [
'tab_title' => Helper::tab_info_title('performance', 'Performance'),
'tab_description' => Helper::tab_info_desc('performance', "Performance cookies help analyze the website's key performance indicators, which in turn helps improve the user experience for visitors."),
],
],
],
'performance_cookie_lists' => [
'label' => __('', 'notificationx'),
'name' => 'performance_cookie_lists',
'type' => 'better-repeater',
'priority' => 10,
'placeholder_img'=> NOTIFICATIONX_ADMIN_URL . 'images/extensions/empty-cookie.png',
'button' => [
'label' => __('Add New', 'notificationx'),
'position' => 'top',
],
'visible_fields' => Helper::gdpr_cookie_list_visible_fields(),
'_fields' => Helper::gdpr_common_fields(),
]
],
],
'advertisement_tab' => [
'label' => __("Advertisement", 'notificationx'),
'type' => 'section',
'name' => 'advertisement_tab',
'id' => 'advertisement_tab',
'icon' => [
'type' => 'tabs',
'name' => 'performance'
],
'fields' => [
'advertising_tab_info_modal' => [
'name' => 'advertising_tab_info_modal',
'type' => 'modal',
'show_body' => true,
'close_on_body' => true,
'button' => [
'name' => 'tab_info_edit',
'text' => __(' ', 'notificationx'),
'icon' => [
'type' => 'tabs',
'name' => 'edit_modal'
],
],
'confirm_button' => [
'type' => 'button',
'text' => 'Save',
'name' => 'advertising_close_tab_info_modal',
"default" => false,
'close_action' => true,
],
'cancel' => "advertising_close_tab_info_modal",
'body' => [
'header' => __('Edit Category ', 'notificationx'),
'fields' => [
'tab_title' => Helper::tab_info_title('advertising', 'Advertisement'),
'tab_description' => Helper::tab_info_desc('advertising', "Advertisement cookies help analyze the website's key performance indicators, which in turn helps improve the user experience for visitors."),
],
],
],
'advertising_cookie_lists' => [
'label' => __('', 'notificationx'),
'name' => 'advertising_cookie_lists',
'type' => 'better-repeater',
'priority' => 10,
'placeholder_img'=> NOTIFICATIONX_ADMIN_URL . 'images/extensions/empty-cookie.png',
'button' => [
'label' => __('Add New', 'notificationx'),
'position' => 'top',
],
'visible_fields' => Helper::gdpr_cookie_list_visible_fields(),
'_fields' => Helper::gdpr_common_fields(),
]
],
],
'uncategorized_tab' => [
'label' => __("Uncategorized", 'notificationx'),
'type' => 'section',
'name' => 'uncategorized_tab',
'id' => 'uncategorized_tab',
'icon' => [
'type' => 'tabs',
'name' => 'uncategorized'
],
'fields' => [
'uncategorized_tab_info_modal' => [
'name' => 'uncategorized_tab_info_modal',
'type' => 'modal',
'show_body' => true,
'close_on_body' => true,
'button' => [
'name' => 'tab_info_edit',
'text' => __(' ', 'notificationx'),
'icon' => [
'type' => 'tabs',
'name' => 'edit_modal'
],
],
'confirm_button' => [
'type' => 'button',
'text' => 'Save',
'name' => 'uncategorized_close_tab_info',
"default" => false,
'close_action' => true,
],
'cancel' => "uncategorized_close_tab_info",
'body' => [
'header' => __('Edit Category ', 'notificationx'),
'fields' => [
'tab_title' => Helper::tab_info_title('uncategorized', 'Uncategorized'),
'tab_description' => Helper::tab_info_desc('uncategorized', "Uncategorized cookies are those that don't fall into any specific category but may still be used for various purposes on the site. These cookies help us improve user experience by tracking interactions that don't fit into other cookie types."),
],
],
],
'uncategorized_cookie_lists' => [
'label' => __('', 'notificationx'),
'name' => 'uncategorized_cookie_lists',
'type' => 'better-repeater',
'priority' => 10,
'placeholder_img'=> NOTIFICATIONX_ADMIN_URL . 'images/extensions/empty-cookie.png',
'button' => [
'label' => __('Add New', 'notificationx'),
'position' => 'top',
],
'visible_fields' => Helper::gdpr_cookie_list_visible_fields(),
'_fields' => Helper::gdpr_common_fields(),
]
],
],
]
],
]
]
]),
],
"display_tab" => [
'label' => __("Display", 'notificationx'),
'id' => "display_tab",
'name' => "display_tab",
'rules' => Rules::is('type', 'gdpr', true),
'icon' => [
'type' => 'tabs',
'name' => 'display'
],
'classes' => "display_tab",
'fields' => apply_filters('nx_display_fields', [
"main_preview" => [
'label' => __("Preview", 'notificationx'),
'name' => "main_preview",
'type' => "section",
'priority' => 1,
'fields' => [
'preview_field' => [
'name' => "preview_field",
'type' => "preview",
'label' => __('Preview', 'notificationx'),
'priority' => 10,
],
],
'rules' => Rules::logicalRule([
Rules::is( 'type', 'notification_bar' ),
]),
],
"image-section" => [
'label' => __("IMAGE", 'notificationx'),
'name' => "image-section",
'type' => "section",
// 'condition' => [
// 'type' => '',
// ],
'fields' => [
'show_default_image' => [
'label' => __("Show Default Image", 'notificationx'),
'name' => "show_default_image",
'type' => "checkbox",
'default' => false,
],
'default_avatar' => [
'label' =>__( "Choose an Image", 'notificationx'),
'name' => "default_avatar",
'type' => "radio-card",
'default' => "verified.svg",
'description' => __('If checked, this will show in notifications.', 'notificationx'),
'rules' => Rules::is( 'show_default_image', true ),
'style' => [
'size' => 'medium'
],
'options' => array(
array(
'value' => 'verified.svg',
'label' => __('Verified', 'notificationx'),
'icon' => NOTIFICATIONX_PUBLIC_URL . 'image/icons/verified.svg',
),
array(
'value' => 'flames.svg',
'label' => __('Flames', 'notificationx'),
'icon' => NOTIFICATIONX_PUBLIC_URL . 'image/icons/flames.svg',
),
array(
'value' => 'flames.gif',
'label' => __('Flames GIF', 'notificationx'),
'icon' => NOTIFICATIONX_PUBLIC_URL . 'image/icons/flames.gif',
),
array(
'value' => 'pink-face-looped.gif',
'label' => __('Pink Face', 'notificationx'),
'icon' => NOTIFICATIONX_PUBLIC_URL . 'image/icons/pink-face-looped.gif',
),
array(
'value' => 'blue-face-non-looped.gif',
'label' => __('Blue Face', 'notificationx'),
'icon' => NOTIFICATIONX_PUBLIC_URL . 'image/icons/blue-face-non-looped.gif',
),
//TODO: none
)
],
[
'label' => __("Upload an Image", 'notificationx'),
'name' => "image_url",
'button' => __('Upload', 'notificationx'),
'type' => "media",
'default' => "",
'rules' => Rules::is( 'show_default_image', true ),
],
'show_notification_image' => [
'label' => __("Image", 'notificationx'),
'name' => "show_notification_image",
'type' => "select",
'default' => "none",
'rules' => Rules::includes( 'source', [
"fluentform",
"cf7",
"custom_notification",
"custom_notification_conversions",
"edd",
"envato",
"grvf",
"give",
// "ifttt",
"learndash",
"njf",
"tutor",
"wpf",
"reviewx",
"woocommerce",
"surecart",
"woo_reviews",
"wp_comments",
"wp_reviews",
"zapier",
"mailchimp",
"convertkit",
"freemius_conversions",
"freemius_reviews",
"freemius_stats",
"youtube",
"woocommerce_sales",
'woocommerce_sales_reviews',
] ),
'options' => apply_filters('nx_show_image_options', array(
'none' => [
'value' => 'none',
'label' => __('None', 'notificationx'),
],
'featured_image' => [
'value' => 'featured_image',
'label' => __('Featured Image', 'notificationx'),
'rules' => [
'includes',
'source',
[
"cf7",
"custom_notification",
"custom_notification_conversions",
"edd",
"envato",
"grvf",
"give",
// "ifttt",
"learndash",
"njf",
"tutor",
"wpf",
"reviewx",
"woocommerce",
"surecart",
"woo_reviews",
"wp_reviews",
"freemius_conversions",
"freemius_reviews",
"freemius_stats",
"woocommerce_sales",
'woocommerce_sales_reviews',
]
],
],
'gravatar' => [
// @todo move the rules to a filter.
'value' => 'gravatar',
'label' => __('Gravatar', 'notificationx'),
'rules' => [
'includes',
'source',[
"fluentform",
"cf7",
"custom_notification",
"custom_notification_conversions",
"edd",
"grvf",
"give",
// "ifttt",
"learndash",
"njf",
"tutor",
"wpf",
"reviewx",
"woocommerce",
"surecart",
"woo_reviews",
"wp_comments",
"wp_reviews",
"zapier",
"mailchimp",
"convertkit",
"freemius_conversions",
"freemius_reviews",
"freemius_stats",
"woocommerce_sales",
'woocommerce_sales_reviews',
],
],
],
)),
],
],
],
"visibility" => [
'label' => __("Visibility", 'notificationx'),
'name' => "visibility",
'type' => "section",
'fields' => [
"show_on" => [
'label' => __("Show On", 'notificationx'),
'name' => "show_on",
'type' => "select",
'default' => "everywhere",
'priority' => 5,
'options' => apply_filters('nx_show_on_options', $this->normalize_fields([
'everywhere' => __('Show Everywhere', 'notificationx'),
'on_selected' => __('Show On Selected', 'notificationx'),
'hide_on_selected' => __('Hide On Selected', 'notificationx'),
])),
],
"all_locations" => [
'label' => __("Locations", 'notificationx'),
'name' => "all_locations",
'type' => "select",
'default' => "",
'multiple' => true,
'priority' => 10,
'rules' => [ 'includes', 'show_on', [
'on_selected',
'hide_on_selected',
] ],
'options' => $this->normalize_fields(Locations::get_instance()->get_locations()),
],
"show_on_display" => [
'label' => __("Display For", 'notificationx'),
'name' => "show_on_display",
'type' => "select",
'default' => "always",
'priority' => 15,
'options' => $this->normalize_fields([
'always' => __('Everyone', 'notificationx'),
'logged_out_user' => __('Logged Out User', 'notificationx'),
'logged_in_user' => __('Logged In User', 'notificationx'),
]),
'help' => sprintf('%s', __('More Control in Pro', 'notificationx')),
],
],
],
]),
],
"customize_tab" => [
'label' => __("Customize", 'notificationx'),
'id' => "customize_tab",
'name' => "customize_tab",
'icon' => [
'type' => 'tabs',
'name' => 'customize'
],
'classes' => "customize_tab",
'fields' => apply_filters('nx_customize_fields', [
"main_preview" => [
'label' => __("Preview", 'notificationx'),
'name' => "main_preview",
'type' => "section",
'priority' => 1,
'fields' => [
'preview_field' => [
'name' => "preview_field",
'type' => "preview",
'label' => __('Preview', 'notificationx'),
'priority' => 10,
],
],
'rules' => Rules::logicalRule([
Rules::is( 'type', 'notification_bar' ),
]),
],
'appearance' => [
'label' => __("Appearance", 'notificationx'),
'name' => "appearance",
'type' => "section",
'fields' => [
'position' => [
'label' => __("Position", 'notificationx'),
'name' => "position", // combined "pressbar_position" && "conversion_position"
'type' => "select",
'default' => 'bottom_left',
'priority' => 50,
'options' => [
'bottom_left' => [
'label' => __('Bottom Left', 'notificationx'),
'value' => 'bottom_left',
],
'bottom_right' => [
'label' => __('Bottom Right', 'notificationx'),
'value' => 'bottom_right',
],
],
],
'close_icon_position' => [
'label' => __("Close Icon Position", 'notificationx'),
'name' => "close_icon_position",
'type' => "select",
'default' => 'top_right',
'priority' => 51,
'options' => [
'top_right' => [
'label' => __('Top Right', 'notificationx'),
'value' => 'top_right',
],
'top_left' => [
'label' => __('Top Left', 'notificationx'),
'value' => 'top_left',
]
],
'rules' => Rules::includes('source', ['press_bar']),
],
'size' => [
'label' => __("Notification Size", 'notificationx'),
'name' => "size",
'type' => "responsive-number",
'default' => [
"desktop" => 500,
"tablet" => 500,
"mobile" => 500,
],
'priority' => 51,
'min' => 300,
'controls' => [
"desktop" => [
"icon" => NOTIFICATIONX_ADMIN_URL . 'images/responsive/desktop.svg',
'size' => 18,
],
"tablet" => [
"icon" => NOTIFICATIONX_ADMIN_URL . 'images/responsive/tablet.svg',
'size' => 14,
],
"mobile" => [
"icon" => NOTIFICATIONX_ADMIN_URL . 'images/responsive/mobile.svg',
'size' => 12,
],
],
'help' => __('Set a max width for notification.', 'notificationx'),
],
'close_button' => [
'label' => __("Display Close Option", 'notificationx'),
'name' => "close_button",
'type' => "checkbox",
'default' => 1,
'priority' => 70,
'description' => __('Display a close button.', 'notificationx'),
],
'hide_on_mobile' => [
'label' => __("Mobile Visibility", 'notificationx'),
'name' => "hide_on_mobile",
'type' => "checkbox",
'default' => false,
'priority' => 200,
'description' => __('Hide NotificationX on mobile.', 'notificationx'),
],
]
],
'appearance' => [
'label' => __("Appearance", 'notificationx'),
'name' => "appearance",
'type' => "section",
'fields' => [
'position' => [
'label' => __("Position", 'notificationx'),
'name' => "position", // combined "pressbar_position" && "conversion_position"
'type' => "select",
'default' => 'bottom_left',
'priority' => 50,
'options' => [
'bottom_left' => [
'label' => __('Bottom Left', 'notificationx'),
'value' => 'bottom_left',
],
'bottom_right' => [
'label' => __('Bottom Right', 'notificationx'),
'value' => 'bottom_right',
],
],
],
'size' => [
'label' => __("Notification Size", 'notificationx'),
'name' => "size",
'type' => "responsive-number",
'default' => [
"desktop" => 500,
"tablet" => 500,
"mobile" => 500,
],
'priority' => 51,
'min' => 300,
'controls' => [
"desktop" => [
"icon" => NOTIFICATIONX_ADMIN_URL . 'images/responsive/desktop.svg',
'size' => 18,
],
"tablet" => [
"icon" => NOTIFICATIONX_ADMIN_URL . 'images/responsive/tablet.svg',
'size' => 14,
],
"mobile" => [
"icon" => NOTIFICATIONX_ADMIN_URL . 'images/responsive/mobile.svg',
'size' => 12,
],
],
'help' => __('Set a max width for notification.', 'notificationx'),
],
'close_button_control' => [
'label' => __("Display Close Button", 'notificationx'),
'name' => "close_button_control",
'type' => "section",
'fields' => [
'close_button' => [
'name' => "close_button",
'type' => "checkbox",
'default' => 1,
'priority' => 70,
'description' => __('Desktop', 'notificationx'),
],
'close_button_tab' => [
'name' => "close_button_tab",
'type' => "checkbox",
'default' => 1,
'priority' => 71,
'description' => __('Tablet', 'notificationx'),
],
'close_button_mobile' => [
'name' => "close_button_mobile",
'type' => "checkbox",
'default' => 1,
'priority' => 72,
'description' => __('Mobile', 'notificationx'),
],
]
],
'nx_visibility_control' => [
'label' => __("Notification Visibility", 'notificationx'),
'name' => "close_button_control",
'type' => "section",
'fields' => [
'hide_on_desktop' => [
'name' => "hide_on_desktop",
'type' => "checkbox",
'default' => true,
'priority' => 201,
'description' => __('Desktop', 'notificationx'),
],
'hide_on_tab' => [
'name' => "hide_on_tab",
'type' => "checkbox",
'default' => true,
'priority' => 202,
'description' => __('Tablet', 'notificationx'),
],
'hide_on_mobile' => [
'name' => "hide_on_mobile",
'type' => "checkbox",
'default' => true,
'priority' => 205,
'description' => __('Mobile', 'notificationx'),
],
]
],
'notification_reappearance' => array(
'label' => __( 'Notification Reappearance', 'notificationx' ),
'type' => 'select',
'name' => 'notification_reappearance',
'default' => 'show_notification_next_visit',
'rules' => Rules::logicalRule([
Rules::is('source', 'press_bar', true),
]),
'options' => GlobalFields::get_instance()->normalize_fields([
'dont_show_notification' => __( "Don't show the Notification again for the user", 'notificationx' ),
'show_notification_next_visit' => __( 'Show the Notification again when the user visits the website next time', 'notificationx' ),
'show_notification_every_page' => __( 'Show the Notification when the user refreshes/goes to another page', 'notificationx' ),
]),
),
'cache_duration_for_dont_show' => [
'label' => __( 'Cache Duration for "Don\'t show again"', 'notificationx' ),
'name' => 'cache_duration_for_dont_show',
'type' => 'number',
'default' => 10,
'min' => 1,
'max' => 365,
'step' => 1,
'description' => __('Days', 'notificationx'),
'rules' => Rules::logicalRule([
Rules::is('notification_reappearance', 'dont_show_notification'),
]),
],
]
],
'animation' => [
'label' => __("Animation", 'notificationx'),
'name' => "animation",
'type' => "section",
'priority'=> 15,
'fields' => [
'animation_notification_show' => [
'label' => __("Notification Show", 'notificationx'),
'name' => "animation_notification_show",
'type' => "select",
'default' => 'default',
'classes' => NotificationX::is_pro() ? '' : 'animation-pro-disabled',
'priority' => 5,
'info' => InfoTooltipManager::get_instance()->render('animation'),
'options' => [
'default' => [
'label' => __('Default', 'notificationx'),
'value' => 'default',
'selected' => 'selected',
],
'animate__fadeIn' => [
'label' => __('Fade In', 'notificationx'),
'value' => 'animate__fadeIn',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__fadeInUp' => [
'label' => __('Fade In Up', 'notificationx'),
'value' => 'animate__fadeInUp',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__fadeInDown' => [
'label' => __('Fade In Down', 'notificationx'),
'value' => 'animate__fadeInDown',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__fadeInDownBig' => [
'label' => __('Fade In Down Big', 'notificationx'),
'value' => 'animate__fadeInDownBig',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__fadeInLeft' => [
'label' => __('Fade In Left', 'notificationx'),
'value' => 'animate__fadeInLeft',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__fadeInRight' => [
'label' => __('Fade In Right', 'notificationx'),
'value' => 'animate__fadeInRight',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__lightSpeedInLeft' => [
'label' => __('Light Speed In Left', 'notificationx'),
'value' => 'animate__lightSpeedInLeft',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__lightSpeedInRight' => [
'label' => __('Light Speed In Right', 'notificationx'),
'value' => 'animate__lightSpeedInRight',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__zoomIn' => [
'label' => __('Zoom In', 'notificationx'),
'value' => 'animate__zoomIn',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__slideInUp' => [
'label' => __('Slide In Up', 'notificationx'),
'value' => 'animate__slideInUp',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__slideInLeft' => [
'label' => __('Slide In Left', 'notificationx'),
'value' => 'animate__slideInLeft',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__slideInRight' => [
'label' => __('Slide In Right', 'notificationx'),
'value' => 'animate__slideInRight',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__slideInDown' => [
'label' => __('Slide In Down', 'notificationx'),
'value' => 'animate__slideInDown',
'disabled' => NotificationX::is_pro() ? false : true,
],
],
],
'animation_notification_hide' => [
'label' => __("Notification Hide", 'notificationx'),
'name' => "animation_notification_hide",
'type' => "select",
'default' => 'default',
'classes' => NotificationX::is_pro() ? '' : 'animation-pro-disabled',
'priority' => 10,
'info' => InfoTooltipManager::get_instance()->render('animation'),
'options' => [
'default' => [
'label' => __('Default', 'notificationx'),
'value' => 'default',
],
'animate__fadeOut' => [
'label' => __('Fade Out', 'notificationx'),
'value' => 'animate__fadeOut',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__fadeOutDown' => [
'label' => __('Fade Out Down', 'notificationx'),
'value' => 'animate__fadeOutDown',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__fadeOutRight' => [
'label' => __('Fade Out Right', 'notificationx'),
'value' => 'animate__fadeOutRight',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__fadeOutUp' => [
'label' => __('Fade Out Up', 'notificationx'),
'value' => 'animate__fadeOutUp',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__lightSpeedOutLeft' => [
'label' => __('Light Speed Out Left', 'notificationx'),
'value' => 'animate__lightSpeedOutLeft',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__zoomOut' => [
'label' => __('Zoom Out', 'notificationx'),
'value' => 'animate__zoomOut',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__slideOutDown' => [
'label' => __('Slide Out Down', 'notificationx'),
'value' => 'animate__slideOutDown',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__slideOutLeft' => [
'label' => __('Slide Out Left', 'notificationx'),
'value' => 'animate__slideOutLeft',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__slideOutRight' => [
'label' => __('Slide Out Right', 'notificationx'),
'value' => 'animate__slideOutRight',
'disabled' => NotificationX::is_pro() ? false : true,
],
'animate__slideOutUp' => [
'label' => __('Slide Out Up', 'notificationx'),
'value' => 'animate__slideOutUp',
'disabled' => NotificationX::is_pro() ? false : true,
],
],
],
// 'animation_notification_duration' => [
// 'label' => __("Duration", 'notificationx'),
// 'name' => "animation_notification_duration",
// 'type' => "select",
// 'default' => 'default',
// 'priority' => 15,
// 'options' => [
// 'default' => [
// 'label' => __('Default', 'notificationx'),
// 'value' => 'default',
// ],
// 'animate__faster' => [
// 'label' => __('Faster', 'notificationx'),
// 'value' => 'animate__faster',
// 'disabled' => NotificationX::is_pro() ? false : true,
// ],
// 'animate__fast' => [
// 'label' => __('Fast', 'notificationx'),
// 'value' => 'animate__fast',
// 'disabled' => NotificationX::is_pro() ? false : true,
// ],
// ],
// ],
]
],
'queue_management' => [
'label' => __("Queue Management", 'notificationx'),
'name' => "queue_management",
'type' => "section",
'priority' => 150,
// @todo is_pro
'is_pro' => true,
'fields' => [
[
'label' => __("Enable Global Queue", 'notificationx'),
'name' => "global_queue",
'type' => "checkbox",
'priority' => 0,
'default' => false,
'is_pro' => true,
'info' => InfoTooltipManager::get_instance()->render('global_queue_management'),
'description' => sprintf('%s %s', __('Activate global queue system for this notification.', 'notificationx'), 'https://notificationx.com/docs/centralized-queue', __('Check out this doc.', 'notificationx')),
],
]
],
'timing' => [
'label' => __("Timing", 'notificationx'),
'name' => "timing",
'type' => "section",
'priority' => 200,
// 'rules' => Rules::is( 'global_queue', false ),
'rules' => Rules::is( 'global_queue', true, true ),
'fields' => [
'delay_before' => [
'label' => __("Delay Before First Notification", 'notificationx'),
'name' => "delay_before",
'type' => "number",
'priority' => 40,
'default' => defined('NX_DEBUG') && NX_DEBUG ? 1 : 5,
'help' => __('Initial Delay', 'notificationx'),
'description' => __('seconds', 'notificationx'),
],
'display_for' => [
'name' => "display_for",
'type' => "number",
'label' => __("Display For", 'notificationx'),
'description' => __('seconds', 'notificationx'),
'help' => __('Display each notification for * seconds', 'notificationx'),
'priority' => 60,
'default' => defined('NX_DEBUG') && NX_DEBUG ? 2 : 5,
],
'delay_between' => [
'name' => "delay_between",
'type' => "number",
'label' => __("Delay Between", 'notificationx'),
'description' => __('seconds', 'notificationx'),
'help' => __('Delay between each notification', 'notificationx'),
'priority' => 70,
'default' => defined('NX_DEBUG') && NX_DEBUG ? 1 : 5,
],
]
],
'behaviour' => [
'label' => __("Behavior", 'notificationx'),
'name' => "behaviour",
'type' => "section",
'priority' => 300,
'collapsable' => true,
'fields' => [
"display_last" => [
'name' => "display_last",
'type' => 'number',
'label' => __('Display The Last', 'notificationx'),
'description' => 'conversions',
'default' => 20,
'priority' => 40,
'max' => 20,
],
'display_from' => [
'name' => 'display_from',
'type' => 'number',
'label' => __('Display From The Last', 'notificationx'),
'priority' => 45,
'default' => 30,
'description' => 'Days',
'min' => 0,
],
'hour_minutes_section' => [
'name' => "hour_minutes_section",
'type' => "section",
'rules' => Rules::logicalRule([
Rules::includes('source', ['woocommerce', 'woocommerce_sales', 'woocommerce_sales_reviews', 'custom_notification_conversions', 'surecart', 'edd', 'tutor', 'learndash', 'learnpress', 'cf7', 'wp_comments', 'njf', 'wpf', 'fluentform', 'elementor_form', 'custom_notification', 'grvf', 'mailchimp', 'convertkit', 'ActiveCampaign', 'zapier_email_subscription', 'give', 'woo_reviews', 'freemius_conversions', 'freemius_reviews', 'zapier_conversions', 'zapier_reviews']),
]),
'fields' => [
[
'help' => __('Hours', 'notificationx'),
'name' => "display_from_hour",
'type' => "number",
'default' => '0',
'description' => '',
'max' => 23,
'min' => 0,
],
[
'help' => __('Minutes', 'notificationx'),
'name' => "display_from_minute",
'type' => "number",
'default' => '0',
'description' => '',
'max' => 59,
'min' => 0,
],
]
],
'loop' => [
'name' => 'loop',
'type' => 'checkbox',
'label' => __('Loop Notification', 'notificationx'),
'priority' => 50,
'default' => true,
'rules' => Rules::is( 'global_queue', true, true ),
],
'link_open' => [
'name' => 'link_open',
'type' => 'checkbox',
'label' => __('Open Link In New Tab', 'notificationx'),
'priority' => 60,
'default' => false,
],
]
],
]),
],
],
'instructions' => apply_filters( 'nx_instructions', [] ),
'pro_popup' => apply_filters( 'nx_popup_alert', [] ),
];
$tabs['tabs'] = apply_filters('nx_metabox_tabs', $tabs['tabs']);
$tabs = apply_filters('nx_metabox_config', $tabs);
if(defined('NX_DEBUG') && NX_DEBUG){
do_action( 'qm/stop', __METHOD__ );
}
return $tabs;
}
public function normalize_fields($fields, $key = '', $value = [], $return = []) {
foreach ($fields as $val => $label) {
$val = !empty( $label['value'] ) ? $label['value'] : $val;
if (empty($return[$val]) && !is_array($label)) {
$return[$val] = [
'value' => $val,
'label' => $label,
];
}
elseif (empty($return[$val])){
$return[$val] = $label;
}
if(!empty($key)){
$return[$val] = Rules::includes($key, $value, false, $return[$val]);
}
}
return $return;
}
public function common_name_fields($display_name = false) {
$fields = [
'tag_name' => __('Full Name', 'notificationx'),
'tag_first_name' => __('First Name', 'notificationx'),
'tag_last_name' => __('Last Name', 'notificationx'),
];
if ($display_name)
$fields['tag_display_name'] = __('Display Name', 'notificationx');
return $fields;
}
public function common_time_fields() {
return [
'tag_time' => __('Definite Time', 'notificationx'),
'tag_custom' => __('Some time ago', 'notificationx'),
];
}
}