File Editor
Directories:
.. (Back)
EasyDigitalDownloads
Elementor
Integrations
MemberPress
Plugins
Promos
Rules
Shortcodes
WPForms
WooCommerce
Files:
Actions.php
Ajax.php
Api.php
ApiAuth.php
ApiKey.php
AssetLoader.php
BaseRestApi.php
Blocks.php
ClassicEditor.php
ConstantContact.php
Debug.php
EasyDigitalDownloads.php
Elementor.php
Inserter.php
InstallSkin.php
InstallSkinCompat.php
MailPoet.php
MemberPress.php
Menu.php
Notifications.php
OmuApi.php
Output.php
Pages.php
Partners.php
Plugins.php
Promos.php
Refresh.php
RestApi.php
RevenueAttribution.php
Review.php
Rules.php
Save.php
Shortcode.php
Sites.php
Support.php
Type.php
Urls.php
Utils.php
Validate.php
WPForms.php
Welcome.php
Widget.php
WooCommerce.php
Wordfence.php
WpErrorException.php
Create New File
Create
Edit File: ClassicEditor.php
<?php /** * Classic Editor class. * * @since 2.3.0 * * @package OMAPI * @author Justin Sternberg */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Classic Editor class. * * @since 2.3.0 */ class OMAPI_ClassicEditor { /** * Holds the class object. * * @since 2.3.0 * * @var object */ public static $instance; /** * Path to the file. * * @since 2.3.0 * * @var string */ public $file = __FILE__; /** * Holds the base class object. * * @since 2.3.0 * * @var OMAPI */ public $base; /** * Primary class constructor. * * @since 2.3.0 */ public function __construct() { // Set our object. $this->set(); add_action( 'media_buttons', array( $this, 'media_button' ), 15 ); add_action( 'add_meta_boxes', array( $this, 'settings_meta_box' ) ); add_action( 'save_post', array( $this, 'save_metabox_data' ), 10, 2 ); } /** * Sets our object instance and base class instance. * * @since 2.3.0 */ public function set() { self::$instance = $this; $this->base = OMAPI::get_instance(); } /** * Allow easy shortcode insertion via a custom media button. * * @since 2.3.0 * * @param string $editor_id Unique editor identifier, e.g. 'content'. */ public function media_button( $editor_id ) { if ( ! $this->base->can_access( 'campaign_media_button' ) ) { return; } // Provide the ability to conditionally disable the button, so it can be // disabled for custom fields or front-end use such as bbPress. We default // to only showing within the post editor page. if ( ! apply_filters( 'optin_monster_display_media_button', $this->is_post_editor_page(), $editor_id ) ) { return; } // Setup the icon. $icon = '<span class="wp-media-buttons-icon optin-monster-menu-icon">' . $this->base->menu->icon_svg( 'currentColor', false ) . '</span>'; printf( '<button type="button" class="button optin-monster-insert-campaign-button" data-editor="%s" title="%s">%s %s</button>', esc_attr( $editor_id ), esc_attr__( 'Add OptinMonster', 'optin-monster-api' ), // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped, unable to escape SVG. $icon, esc_html__( 'Add OptinMonster', 'optin-monster-api' ) ); // If we have made it this far then load the JS. $handle = $this->base->plugin_slug . '-editor'; wp_enqueue_script( $handle, $this->base->url . 'assets/dist/js/editor.min.js', array( 'jquery' ), $this->base->asset_version(), true ); $i18n = $this->base->blocks->get_data_for_js( 'i18n' ); $i18n['or_monsterlink'] = esc_html__( 'Or link to a popup campaign', 'optin-monster-api' ); OMAPI_Utils::add_inline_script( $handle, 'OMAPI_Editor', array( 'monsterlink' => esc_url_raw( OPTINMONSTER_SHAREABLE_LINK ) . '/c/', 'canMonsterlink' => $this->base->blocks->get_data_for_js( 'canMonsterlink' ), 'upgradeUri' => $this->base->blocks->get_data_for_js( 'upgradeUri' ), 'i18n' => $i18n, ) ); add_action( 'admin_footer', array( $this, 'shortcode_modal' ) ); } /** * Check if we are on the post editor admin page. * * @since 2.3.0 * * @returns boolean True if it is post editor admin page. */ public function is_post_editor_page() { if ( ! is_admin() ) { return false; } // get_current_screen() is loaded after 'admin_init' hook and may not exist yet. if ( ! function_exists( 'get_current_screen' ) ) { return false; } $screen = get_current_screen(); return null !== $screen && 'edit' === $screen->parent_base; } /** * Modal window for inserting the optin-monster shortcode into TinyMCE. * * Thickbox is old and busted so we don't use that. Creating a custom view in * Backbone would make me pull my hair out. So instead we offer a small clean * modal that is based off of the WordPress insert link modal. * * @since 2.3.0 */ public function shortcode_modal() { $campaigns = $this->base->blocks->get_campaign_options( true ); $campaigns['inline'] = ! empty( $campaigns['inline'] ) ? array_merge( array( '' => esc_html__( 'Select Campaign...', 'optin-monster-api' ) ), $campaigns['inline'] ) : array(); $campaigns['other'] = ! empty( $campaigns['other'] ) ? array_merge( array( '' => esc_html__( 'Select Campaign...', 'optin-monster-api' ) ), $campaigns['other'] ) : array(); $this->base->output_view( 'shortcode-modal.php', array( 'templatesUri' => $this->base->blocks->get_data_for_js( 'templatesUri' ), 'upgradeUri' => OMAPI_Urls::upgrade( 'gutenberg', 'monster-link' ), 'canMonsterlink' => $this->base->blocks->get_data_for_js( 'canMonsterlink' ), 'campaigns' => $campaigns, ) ); $this->base->output_min_css( 'shortcode-modal-css.php' ); } /** * Register the global OptinMonster Settings metabox. * * @since 2.3.0 */ public function settings_meta_box() { $types = array_values( get_post_types( array( 'public' => true ) ) ); foreach ( $types as $type ) { $supports_custom_fields = post_type_supports( $type, 'custom-fields' ); // If custom fields aren't supported, change title to avoid duplicate 'OptinMonster' sections. // @see https://github.com/awesomemotive/optin-monster-wp-api/issues/391 $title = $supports_custom_fields ? 'OptinMonster Settings' : 'Campaign Settings'; add_meta_box( 'om-global-post-settings', esc_html__( $title, 'optin-monster-api' ), array( $this, 'settings_meta_box_output' ), $type, 'side', 'default', array( '__back_compat_meta_box' => $supports_custom_fields ) ); } } /** * Output the markup for the global OptinMonster Settings metabox. * * @since 2.3.0 * * @param WP_Post $post The post object. */ public function settings_meta_box_output( $post ) { $disabled = get_post_meta( $post->ID, 'om_disable_all_campaigns', true ); wp_nonce_field( 'om_disable_all_campaigns', 'om_disable_all_campaigns_nonce' ); ?> <p> <label for="om_disable_all_campaigns"> <input class="widefat" type="checkbox" <?php checked( ! empty( $disabled ) ); ?> name="om_disable_all_campaigns" id="om_disable_all_campaigns" value="1" /> <?php esc_html_e( 'Disable all OptinMonster campaigns.', 'optin-monster-api' ); ?> </label> </p> <?php } /** * Save the global OptinMonster settings. * * @since 2.3.0 * * @param int $post_id Post Id. * @param WP_Post $post Post object. */ public function save_metabox_data( $post_id, $post ) { if ( empty( $_POST['om_disable_all_campaigns_nonce'] ) || ! wp_verify_nonce( $_POST['om_disable_all_campaigns_nonce'], 'om_disable_all_campaigns' ) || empty( $post->post_type ) ) { return; } $type = get_post_type_object( $post->post_type ); if ( empty( $type->cap->edit_post ) || ! current_user_can( $type->cap->edit_post, $post_id ) ) { return; } $disabled = ! empty( $_POST['om_disable_all_campaigns'] ); update_post_meta( $post_id, 'om_disable_all_campaigns', $disabled ); } }
Save Changes
Rename File
Rename