* @since 3.0.0 */ namespace Beyondwords\Wordpress\Component\Post\Metabox; use Beyondwords\Wordpress\Component\Post\GenerateAudio\GenerateAudio; use Beyondwords\Wordpress\Component\Post\DisplayPlayer\DisplayPlayer; use Beyondwords\Wordpress\Component\Post\PostMetaUtils; use Beyondwords\Wordpress\Component\Post\SelectVoice\SelectVoice; use Beyondwords\Wordpress\Component\Post\PlayerStyle\PlayerStyle; use Beyondwords\Wordpress\Component\Settings\SettingsUtils; use Beyondwords\Wordpress\Core\Environment; /** * PostMetabox setup * * @since 3.0.0 */ class Metabox { /** * @var \Beyondwords\Wordpress\Core\ApiClient */ private $apiClient; /** * Init. * * @since 4.0.0 */ public function __construct($apiClient) { $this->apiClient = $apiClient; } /** * Init. * * @since 4.0.0 */ public function init() { add_action('admin_enqueue_scripts', array($this, 'adminEnqueueScripts')); add_action("add_meta_boxes", array($this, 'addMetaBox')); } /** * Enque JS for Bulk Edit feature. */ public function adminEnqueueScripts($hook) { // Only enqueue for Post screens if ($hook === 'post.php' || $hook === 'post-new.php') { // Register the Classic Editor "Metabox" CSS wp_enqueue_style( 'beyondwords-Metabox', BEYONDWORDS__PLUGIN_URI . 'src/Component/Post/Metabox/Metabox.css', false, BEYONDWORDS__PLUGIN_VERSION ); } } /** * Adds the meta box container. * * @param string $postType */ public function addMetaBox($postType) { $postTypes = SettingsUtils::getCompatiblePostTypes(); if (is_array($postTypes) && ! in_array($postType, $postTypes)) { return; } add_meta_box( 'beyondwords', __('BeyondWords', 'speechkit'), array($this, 'renderMetaBoxContent'), $postType, 'side', 'default', [ '__back_compat_meta_box' => true, ] ); } /** * Render Meta Box content. * * @param int|WP_Post $post The WordPress post ID, or post object. * * @since 3.0.0 * @since 3.7.0 Show "Pending review" notice for posts with status of "pending" * @since 4.0.0 Content ID is no longer an int * @since 4.1.0 Add "Player style" and update component display conditions */ public function renderMetaBoxContent($post) { $post = get_post($post); if (!($post instanceof \WP_Post)) { return; } // Show errors for posts with/without audio $this->errors($post); $contentId = PostMetaUtils::getContentId($post->ID); if ($contentId) { // Enable these components for posts with audio if (get_post_status($post) === 'pending') { $this->pendingReviewNotice($post); } else { $this->playerEmbed($post); } echo '
%s', 'mailto:support@beyondwords.io', 'support@beyondwords.io') ); ?>