loadAssets(); $attributes = $this->parseAttributes($atts); $renderFile = GIVE_PLUGIN_DIR . 'src/Campaigns/Blocks/CampaignComments/render.php'; return ShortcodeRenderController::renderWithBlockContext( $renderFile, 'givewp/campaign-comments-block', $attributes ); } /** * @since 4.5.0 */ public function loadAssets() { $handleName = 'givewp-campaign-comments-block-app'; $asset = ScriptAsset::get(GIVE_PLUGIN_DIR . 'build/campaignCommentsBlockApp.asset.php'); wp_enqueue_script( $handleName, GIVE_PLUGIN_URL . 'build/campaignCommentsBlockApp.js', $asset['dependencies'], $asset['version'], true ); Language::setScriptTranslations($handleName); wp_enqueue_style( $handleName, GIVE_PLUGIN_URL . 'build/campaignCommentsBlockApp.css', [], $asset['version'] ); wp_enqueue_style('givewp-design-system-foundation'); } /** * @since 4.16.1 sanitize block_id from shortcode attributes * @since 4.5.0 */ private function parseAttributes($atts): array { $atts = shortcode_atts([ 'block_id' => '', 'campaign_id' => 0, 'title' => '', 'show_anonymous' => true, 'show_avatar' => true, 'show_date' => true, 'show_name' => true, 'comment_length' => 200, 'read_more_text' => '', 'comments_per_page'=> 3, ], $atts, 'givewp_campaign_comments'); return [ 'blockId' => sanitize_key((string) $atts['block_id']), 'campaignId' => (int) $atts['campaign_id'], 'title' => (string) $atts['title'], 'showAnonymous' => filter_var($atts['show_anonymous'], FILTER_VALIDATE_BOOLEAN), 'showAvatar' => filter_var($atts['show_avatar'], FILTER_VALIDATE_BOOLEAN), 'showDate' => filter_var($atts['show_date'], FILTER_VALIDATE_BOOLEAN), 'showName' => filter_var($atts['show_name'], FILTER_VALIDATE_BOOLEAN), 'commentLength' => (int) $atts['comment_length'], 'readMoreText' => (string) $atts['read_more_text'], 'commentsPerPage' => (int) $atts['comments_per_page'], ]; } }