Edit File by line
/home/zeestwma/ceyloniy.../wp-conte.../plugins/wpforms-.../src/Integrat.../Gutenber...
File: FormSelector.php
'background' => esc_html__( 'Background', 'wpforms-lite' ),
[500] Fix | Delete
'border' => esc_html__( 'Border', 'wpforms-lite' ),
[501] Fix | Delete
'text' => esc_html__( 'Text', 'wpforms-lite' ),
[502] Fix | Delete
'menu' => esc_html__( 'Menu', 'wpforms-lite' ),
[503] Fix | Delete
'image' => esc_html__( 'Image', 'wpforms-lite' ),
[504] Fix | Delete
'media_library' => esc_html__( 'Media Library', 'wpforms-lite' ),
[505] Fix | Delete
'choose_image' => esc_html__( 'Choose Image', 'wpforms-lite' ),
[506] Fix | Delete
'stock_photo' => esc_html__( 'Stock Photo', 'wpforms-lite' ),
[507] Fix | Delete
'border_radius' => esc_html__( 'Border Radius', 'wpforms-lite' ),
[508] Fix | Delete
'border_size' => esc_html__( 'Border Size', 'wpforms-lite' ),
[509] Fix | Delete
'border_style' => esc_html__( 'Border Style', 'wpforms-lite' ),
[510] Fix | Delete
'none' => esc_html__( 'None', 'wpforms-lite' ),
[511] Fix | Delete
'solid' => esc_html__( 'Solid', 'wpforms-lite' ),
[512] Fix | Delete
'dashed' => esc_html__( 'Dashed', 'wpforms-lite' ),
[513] Fix | Delete
'dotted' => esc_html__( 'Dotted', 'wpforms-lite' ),
[514] Fix | Delete
'double' => esc_html__( 'Double', 'wpforms-lite' ),
[515] Fix | Delete
'shadow_size' => esc_html__( 'Shadow', 'wpforms-lite' ),
[516] Fix | Delete
'border_width' => esc_html__( 'Border Size', 'wpforms-lite' ),
[517] Fix | Delete
'border_color' => esc_html__( 'Border', 'wpforms-lite' ),
[518] Fix | Delete
'colors' => esc_html__( 'Colors', 'wpforms-lite' ),
[519] Fix | Delete
'label' => esc_html__( 'Label', 'wpforms-lite' ),
[520] Fix | Delete
'sublabel_hints' => esc_html__( 'Sublabel & Hint', 'wpforms-lite' ),
[521] Fix | Delete
'error_message' => esc_html__( 'Error Message', 'wpforms-lite' ),
[522] Fix | Delete
'small' => esc_html__( 'Small', 'wpforms-lite' ),
[523] Fix | Delete
'medium' => esc_html__( 'Medium', 'wpforms-lite' ),
[524] Fix | Delete
'large' => esc_html__( 'Large', 'wpforms-lite' ),
[525] Fix | Delete
'btn_yes' => esc_html__( 'Yes', 'wpforms-lite' ),
[526] Fix | Delete
'btn_no' => esc_html__( 'No', 'wpforms-lite' ),
[527] Fix | Delete
'copy_paste_settings' => esc_html__( 'Copy / Paste Style Settings', 'wpforms-lite' ),
[528] Fix | Delete
'copy_paste_error' => esc_html__( 'There was an error parsing your JSON code. Please check your code and try again.', 'wpforms-lite' ),
[529] Fix | Delete
'copy_paste_notice' => esc_html__( 'If you\'ve copied style settings from another form, you can paste them here to add the same styling to this form. Any current style settings will be overwritten.', 'wpforms-lite' ),
[530] Fix | Delete
'custom_css' => esc_html__( 'Custom CSS', 'wpforms-lite' ),
[531] Fix | Delete
'custom_css_notice' => esc_html__( 'Further customize the look of this form without having to edit theme files.', 'wpforms-lite' ),
[532] Fix | Delete
// Translators: %1$s: Opening strong tag, %2$s: Closing strong tag.
[533] Fix | Delete
'wpforms_empty_info' => sprintf( esc_html__( 'You can use %1$sWPForms%2$s to build contact forms, surveys, payment forms, and more with just a few clicks.', 'wpforms-lite' ), '<strong>','</strong>' ),
[534] Fix | Delete
// Translators: %1$s: Opening anchor tag, %2$s: Closing anchor tag.
[535] Fix | Delete
'wpforms_empty_help' => sprintf( esc_html__( 'Need some help? Check out our %1$scomprehensive guide.%2$s', 'wpforms-lite' ), '<a target="_blank" href="' . esc_url( wpforms_utm_link( 'https://wpforms.com/docs/creating-first-form/', 'gutenberg', 'Create Your First Form Documentation' ) ) . '">','</a>' ),
[536] Fix | Delete
'other_styles' => esc_html__( 'Other Styles', 'wpforms-lite' ),
[537] Fix | Delete
'page_break' => esc_html__( 'Page Break', 'wpforms-lite' ),
[538] Fix | Delete
'rating' => esc_html__( 'Rating', 'wpforms-lite' ),
[539] Fix | Delete
'heads_up' => esc_html__( 'Heads Up!', 'wpforms-lite' ),
[540] Fix | Delete
'form_not_available_message' => esc_html__( 'It looks like the form you had selected is in the Trash or has been permanently deleted.', 'wpforms-lite' ),
[541] Fix | Delete
];
[542] Fix | Delete
[543] Fix | Delete
return [
[544] Fix | Delete
'logo_url' => WPFORMS_PLUGIN_URL . 'assets/images/wpforms-logo.svg',
[545] Fix | Delete
'block_preview_url' => WPFORMS_PLUGIN_URL . 'assets/images/integrations/gutenberg/block-preview.png',
[546] Fix | Delete
'block_empty_url' => WPFORMS_PLUGIN_URL . 'assets/images/empty-states/no-forms.svg',
[547] Fix | Delete
'route_namespace' => RestApi::ROUTE_NAMESPACE,
[548] Fix | Delete
'wpnonce' => wp_create_nonce( 'wpforms-gutenberg-form-selector' ),
[549] Fix | Delete
'urls' => [
[550] Fix | Delete
'form_url' => admin_url( 'admin.php?page=wpforms-builder&view=fields&form_id={ID}' ),
[551] Fix | Delete
'entries_url' => admin_url( 'admin.php?view=list&page=wpforms-entries&form_id={ID}' ),
[552] Fix | Delete
],
[553] Fix | Delete
'forms' => $this->get_form_list(),
[554] Fix | Delete
'strings' => $strings,
[555] Fix | Delete
'isAdmin' => current_user_can( 'manage_options' ),
[556] Fix | Delete
'isPro' => wpforms()->is_pro(),
[557] Fix | Delete
'defaults' => self::DEFAULT_ATTRIBUTES,
[558] Fix | Delete
'is_modern_markup' => $this->render_engine === 'modern',
[559] Fix | Delete
'is_full_styling' => $this->disable_css_setting === 1,
[560] Fix | Delete
'wpforms_guide' => esc_url( wpforms_utm_link( 'https://wpforms.com/docs/creating-first-form/', 'gutenberg', 'Create Your First Form Documentation' ) ),
[561] Fix | Delete
'get_started_url' => esc_url( admin_url( 'admin.php?page=wpforms-builder' ) ),
[562] Fix | Delete
'sizes' => [
[563] Fix | Delete
'field-size' => CSSVars::FIELD_SIZE,
[564] Fix | Delete
'label-size' => CSSVars::LABEL_SIZE,
[565] Fix | Delete
'button-size' => CSSVars::BUTTON_SIZE,
[566] Fix | Delete
'container-shadow-size' => CSSVars::CONTAINER_SHADOW_SIZE,
[567] Fix | Delete
],
[568] Fix | Delete
];
[569] Fix | Delete
}
[570] Fix | Delete
[571] Fix | Delete
/**
[572] Fix | Delete
* Get the form list.
[573] Fix | Delete
*
[574] Fix | Delete
* @since 1.8.8
[575] Fix | Delete
*
[576] Fix | Delete
* @return array
[577] Fix | Delete
* @noinspection NullPointerExceptionInspection
[578] Fix | Delete
*/
[579] Fix | Delete
public function get_form_list(): array {
[580] Fix | Delete
[581] Fix | Delete
$forms = wpforms()->obj( 'form' )->get( '', [ 'order' => 'DESC' ] );
[582] Fix | Delete
[583] Fix | Delete
if ( empty( $forms ) ) {
[584] Fix | Delete
return [];
[585] Fix | Delete
}
[586] Fix | Delete
[587] Fix | Delete
return array_map(
[588] Fix | Delete
static function ( $form ) {
[589] Fix | Delete
$form->post_title = htmlspecialchars_decode( $form->post_title, ENT_QUOTES );
[590] Fix | Delete
$max_length = 47;
[591] Fix | Delete
$form->post_title = trim( mb_substr( trim( $form->post_title ), 0, $max_length ) );
[592] Fix | Delete
$form->post_title = mb_strlen( $form->post_title ) === $max_length ? $form->post_title . '…' : $form->post_title;
[593] Fix | Delete
[594] Fix | Delete
return $form;
[595] Fix | Delete
},
[596] Fix | Delete
$forms
[597] Fix | Delete
);
[598] Fix | Delete
}
[599] Fix | Delete
[600] Fix | Delete
/**
[601] Fix | Delete
* Filter form action.
[602] Fix | Delete
*
[603] Fix | Delete
* @since 1.8.8
[604] Fix | Delete
*
[605] Fix | Delete
* @param string|mixed $action Form action.
[606] Fix | Delete
* @param array|mixed $form_data Form data.
[607] Fix | Delete
*
[608] Fix | Delete
* @return string
[609] Fix | Delete
* @noinspection PhpUnusedParameterInspection
[610] Fix | Delete
*/
[611] Fix | Delete
public function form_action_filter( $action, $form_data ): string {
[612] Fix | Delete
[613] Fix | Delete
if ( $this->is_gb_editor() ) {
[614] Fix | Delete
[615] Fix | Delete
// Remove inappropriate form action URL that contains all the block attributes.
[616] Fix | Delete
$action = '';
[617] Fix | Delete
}
[618] Fix | Delete
[619] Fix | Delete
return (string) $action;
[620] Fix | Delete
}
[621] Fix | Delete
[622] Fix | Delete
/**
[623] Fix | Delete
* Get form HTML to display in a WPForms Gutenberg block.
[624] Fix | Delete
*
[625] Fix | Delete
* @since 1.4.8
[626] Fix | Delete
*
[627] Fix | Delete
* @param array|mixed $attr Attributes passed by WPForms Gutenberg block.
[628] Fix | Delete
*
[629] Fix | Delete
* @return string
[630] Fix | Delete
*/
[631] Fix | Delete
public function get_form_html( $attr ): string {
[632] Fix | Delete
[633] Fix | Delete
$attr = (array) $attr;
[634] Fix | Delete
[635] Fix | Delete
$id = ! empty( $attr['formId'] ) ? absint( $attr['formId'] ) : 0;
[636] Fix | Delete
[637] Fix | Delete
$this->current_form_id = $id;
[638] Fix | Delete
[639] Fix | Delete
if ( empty( $id ) ) {
[640] Fix | Delete
return '';
[641] Fix | Delete
}
[642] Fix | Delete
[643] Fix | Delete
if ( $this->is_gb_editor() ) {
[644] Fix | Delete
$this->disable_fields_in_gb_editor();
[645] Fix | Delete
}
[646] Fix | Delete
[647] Fix | Delete
$title = ! empty( $attr['displayTitle'] );
[648] Fix | Delete
$desc = ! empty( $attr['displayDesc'] );
[649] Fix | Delete
[650] Fix | Delete
$this->add_class_callback( $id, $attr );
[651] Fix | Delete
[652] Fix | Delete
// Maybe override block attributes with the theme settings.
[653] Fix | Delete
$attr = $this->maybe_override_block_attributes( $attr );
[654] Fix | Delete
[655] Fix | Delete
// Get block content.
[656] Fix | Delete
$content = $this->get_content( $id, $title, $desc, $attr );
[657] Fix | Delete
[658] Fix | Delete
// phpcs:disable WPForms.PHP.ValidateHooks.InvalidHookName
[659] Fix | Delete
[660] Fix | Delete
/**
[661] Fix | Delete
* Filter Gutenberg block content.
[662] Fix | Delete
*
[663] Fix | Delete
* @since 1.5.8.2
[664] Fix | Delete
*
[665] Fix | Delete
* @param string $content Block content.
[666] Fix | Delete
* @param int $id Form id.
[667] Fix | Delete
*/
[668] Fix | Delete
return (string) apply_filters( 'wpforms_gutenberg_block_form_content', $content, $id );
[669] Fix | Delete
[670] Fix | Delete
// phpcs:enable WPForms.PHP.ValidateHooks.InvalidHookName
[671] Fix | Delete
}
[672] Fix | Delete
[673] Fix | Delete
/**
[674] Fix | Delete
* Maybe override block attributes.
[675] Fix | Delete
*
[676] Fix | Delete
* This method is used to override block attributes with the theme settings.
[677] Fix | Delete
*
[678] Fix | Delete
* @since 1.8.8
[679] Fix | Delete
*
[680] Fix | Delete
* @param array $attr Attributes passed by WPForms Gutenberg block.
[681] Fix | Delete
*
[682] Fix | Delete
* @return array
[683] Fix | Delete
*/
[684] Fix | Delete
private function maybe_override_block_attributes( array $attr ): array {
[685] Fix | Delete
[686] Fix | Delete
$theme_slug = (string) ( $attr['theme'] ?? '' );
[687] Fix | Delete
[688] Fix | Delete
// Previously added blocks (FS 1.0) don't have the themeName attribute.
[689] Fix | Delete
// To preserve existing styling of such old blocks, we shouldn't override attributes.
[690] Fix | Delete
if ( ! isset( $attr['themeName'] ) || ( empty( $attr['themeName'] ) && $theme_slug === 'default' ) ) {
[691] Fix | Delete
return $attr;
[692] Fix | Delete
}
[693] Fix | Delete
[694] Fix | Delete
if ( $theme_slug === '' ) {
[695] Fix | Delete
$theme_slug = $this->get_theme_slug( $attr );
[696] Fix | Delete
}
[697] Fix | Delete
[698] Fix | Delete
$theme_data = $this->themes_data_obj->get_theme( $theme_slug );
[699] Fix | Delete
[700] Fix | Delete
// Theme doesn't exist, let's return.
[701] Fix | Delete
if ( ! $theme_data ) {
[702] Fix | Delete
return $attr;
[703] Fix | Delete
}
[704] Fix | Delete
[705] Fix | Delete
// Override block attributes with the theme settings.
[706] Fix | Delete
return array_merge( $attr, $theme_data['settings'] );
[707] Fix | Delete
}
[708] Fix | Delete
[709] Fix | Delete
/**
[710] Fix | Delete
* Get the theme slug.
[711] Fix | Delete
*
[712] Fix | Delete
* @since 1.9.7
[713] Fix | Delete
*
[714] Fix | Delete
* @param array $attr Attributes passed by WPForms Gutenberg block.
[715] Fix | Delete
*
[716] Fix | Delete
* @return string
[717] Fix | Delete
*/
[718] Fix | Delete
private function get_theme_slug( array $attr ): string {
[719] Fix | Delete
[720] Fix | Delete
$form_handler = wpforms()->obj( 'form' );
[721] Fix | Delete
[722] Fix | Delete
if ( ! $form_handler ) {
[723] Fix | Delete
return 'default';
[724] Fix | Delete
}
[725] Fix | Delete
[726] Fix | Delete
$form_id = (int) $attr['formId'];
[727] Fix | Delete
$form_data = $form_handler->get( $form_id, [ 'content_only' => true ] );
[728] Fix | Delete
[729] Fix | Delete
if ( empty( $form_data['settings']['themes']['wpformsTheme'] ) ) {
[730] Fix | Delete
return 'default';
[731] Fix | Delete
}
[732] Fix | Delete
[733] Fix | Delete
return $form_data['settings']['themes']['wpformsTheme'];
[734] Fix | Delete
}
[735] Fix | Delete
[736] Fix | Delete
/**
[737] Fix | Delete
* Add class callback.
[738] Fix | Delete
*
[739] Fix | Delete
* @since 1.8.1
[740] Fix | Delete
*
[741] Fix | Delete
* @param int $id Form id.
[742] Fix | Delete
* @param array $attr Form attributes.
[743] Fix | Delete
*
[744] Fix | Delete
* @return void
[745] Fix | Delete
*/
[746] Fix | Delete
private function add_class_callback( int $id, array $attr ): void { // phpcs:ignore WPForms.PHP.HooksMethod.InvalidPlaceForAddingHooks
[747] Fix | Delete
[748] Fix | Delete
$class_callback = static function ( $classes, $form_data ) use ( $id, $attr ) {
[749] Fix | Delete
[750] Fix | Delete
if ( (int) $form_data['id'] !== $id ) {
[751] Fix | Delete
return $classes;
[752] Fix | Delete
}
[753] Fix | Delete
[754] Fix | Delete
$cls = [];
[755] Fix | Delete
[756] Fix | Delete
// Add custom class to form container.
[757] Fix | Delete
if ( ! empty( $attr['className'] ) ) {
[758] Fix | Delete
$cls = array_map( 'esc_attr', explode( ' ', $attr['className'] ) );
[759] Fix | Delete
}
[760] Fix | Delete
[761] Fix | Delete
// Add classes to identify that the form displays inside the block.
[762] Fix | Delete
$cls[] = 'wpforms-block';
[763] Fix | Delete
[764] Fix | Delete
if ( ! empty( $attr['clientId'] ) ) {
[765] Fix | Delete
$cls[] = 'wpforms-block-' . $attr['clientId'];
[766] Fix | Delete
}
[767] Fix | Delete
[768] Fix | Delete
return array_unique( array_merge( $classes, $cls ) );
[769] Fix | Delete
};
[770] Fix | Delete
[771] Fix | Delete
if ( empty( $this->callbacks[ $id ] ) ) {
[772] Fix | Delete
add_filter( 'wpforms_frontend_container_class', $class_callback, 10, 2 );
[773] Fix | Delete
}
[774] Fix | Delete
[775] Fix | Delete
$this->callbacks[ $id ][] = $class_callback;
[776] Fix | Delete
}
[777] Fix | Delete
[778] Fix | Delete
/**
[779] Fix | Delete
* Get content.
[780] Fix | Delete
*
[781] Fix | Delete
* @since 1.8.1
[782] Fix | Delete
*
[783] Fix | Delete
* @param int $id Form id.
[784] Fix | Delete
* @param bool $title Form title is not empty.
[785] Fix | Delete
* @param bool $desc Form desc is not empty.
[786] Fix | Delete
* @param array $attr Form attributes.
[787] Fix | Delete
*
[788] Fix | Delete
* @return string
[789] Fix | Delete
* @noinspection JSUnresolvedReference
[790] Fix | Delete
*/
[791] Fix | Delete
private function get_content( int $id, bool $title, bool $desc, array $attr ): string {
[792] Fix | Delete
[793] Fix | Delete
/**
[794] Fix | Delete
* Filter allow render block content flag.
[795] Fix | Delete
*
[796] Fix | Delete
* @since 1.8.8
[797] Fix | Delete
*
[798] Fix | Delete
* @param bool $allow_render Allow render flag. Defaults to `true`.
[799] Fix | Delete
*/
[800] Fix | Delete
$allow_render = (bool) apply_filters( 'wpforms_integrations_gutenberg_form_selector_allow_render', true );
[801] Fix | Delete
[802] Fix | Delete
if ( ! $allow_render ) {
[803] Fix | Delete
return '';
[804] Fix | Delete
}
[805] Fix | Delete
[806] Fix | Delete
ob_start();
[807] Fix | Delete
[808] Fix | Delete
// phpcs:disable WPForms.PHP.ValidateHooks.InvalidHookName
[809] Fix | Delete
[810] Fix | Delete
/**
[811] Fix | Delete
* Fires before Gutenberg block output.
[812] Fix | Delete
*
[813] Fix | Delete
* @since 1.5.8.2
[814] Fix | Delete
*/
[815] Fix | Delete
do_action( 'wpforms_gutenberg_block_before' );
[816] Fix | Delete
[817] Fix | Delete
/**
[818] Fix | Delete
* Filter block title display flag.
[819] Fix | Delete
*
[820] Fix | Delete
* @since 1.5.8.2
[821] Fix | Delete
*
[822] Fix | Delete
* @param bool $title Title display flag.
[823] Fix | Delete
* @param int $id Form id.
[824] Fix | Delete
*/
[825] Fix | Delete
$title = (bool) apply_filters( 'wpforms_gutenberg_block_form_title', $title, $id );
[826] Fix | Delete
[827] Fix | Delete
/**
[828] Fix | Delete
* Filter block description display flag.
[829] Fix | Delete
*
[830] Fix | Delete
* @since 1.5.8.2
[831] Fix | Delete
*
[832] Fix | Delete
* @param bool $desc Description display flag.
[833] Fix | Delete
* @param int $id Form id.
[834] Fix | Delete
*/
[835] Fix | Delete
$desc = (bool) apply_filters( 'wpforms_gutenberg_block_form_desc', $desc, $id );
[836] Fix | Delete
[837] Fix | Delete
$this->output_css_vars( $attr );
[838] Fix | Delete
$this->output_custom_css( $attr );
[839] Fix | Delete
[840] Fix | Delete
wpforms_display( $id, $title, $desc );
[841] Fix | Delete
[842] Fix | Delete
/**
[843] Fix | Delete
* Fires after Gutenberg block output.
[844] Fix | Delete
*
[845] Fix | Delete
* @since 1.5.8.2
[846] Fix | Delete
*/
[847] Fix | Delete
do_action( 'wpforms_gutenberg_block_after' );
[848] Fix | Delete
[849] Fix | Delete
// phpcs:enable WPForms.PHP.ValidateHooks.InvalidHookName
[850] Fix | Delete
[851] Fix | Delete
$content = (string) ob_get_clean();
[852] Fix | Delete
[853] Fix | Delete
if ( ! $this->is_gb_editor() ) {
[854] Fix | Delete
return $content;
[855] Fix | Delete
}
[856] Fix | Delete
[857] Fix | Delete
if ( empty( $content ) ) {
[858] Fix | Delete
return '<div class="components-placeholder"><div class="components-placeholder__label"></div>' .
[859] Fix | Delete
'<div class="components-placeholder__fieldset">' .
[860] Fix | Delete
esc_html__( 'The form cannot be displayed.', 'wpforms-lite' ) .
[861] Fix | Delete
'</div></div>';
[862] Fix | Delete
}
[863] Fix | Delete
[864] Fix | Delete
/**
[865] Fix | Delete
* Unfortunately, the inline 'script' tag cannot be executed in the GB editor.
[866] Fix | Delete
* This is the hacky way to trigger custom event on form loaded in the Block Editor / GB / FSE.
[867] Fix | Delete
*/
[868] Fix | Delete
[869] Fix | Delete
// phpcs:disable WordPress.PHP.DevelopmentFunctions.error_log_var_export
[870] Fix | Delete
$content .= sprintf(
[871] Fix | Delete
// language=JavaScript
[872] Fix | Delete
'<img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" onLoad="
[873] Fix | Delete
window.top.dispatchEvent(
[874] Fix | Delete
new CustomEvent(
[875] Fix | Delete
\'wpformsFormSelectorFormLoaded\',
[876] Fix | Delete
{
[877] Fix | Delete
detail: {
[878] Fix | Delete
formId: %1$s,
[879] Fix | Delete
title: %2$s,
[880] Fix | Delete
desc: %3$s,
[881] Fix | Delete
block: this.closest( \'.wp-block\' )
[882] Fix | Delete
}
[883] Fix | Delete
}
[884] Fix | Delete
)
[885] Fix | Delete
);
[886] Fix | Delete
" class="wpforms-pix-trigger" alt="">',
[887] Fix | Delete
absint( $id ),
[888] Fix | Delete
var_export( $title, true ),
[889] Fix | Delete
var_export( $desc, true )
[890] Fix | Delete
);
[891] Fix | Delete
[892] Fix | Delete
// phpcs:enable WordPress.PHP.DevelopmentFunctions.error_log_var_export
[893] Fix | Delete
[894] Fix | Delete
return $content;
[895] Fix | Delete
}
[896] Fix | Delete
[897] Fix | Delete
/**
[898] Fix | Delete
* Checking if is Gutenberg REST API call.
[899] Fix | Delete
*
[900] Fix | Delete
* @since 1.5.7
[901] Fix | Delete
*
[902] Fix | Delete
* @return bool True if is Gutenberg REST API call.
[903] Fix | Delete
*/
[904] Fix | Delete
public function is_gb_editor(): bool {
[905] Fix | Delete
[906] Fix | Delete
// TODO: Find a better way to check if is GB editor API call.
[907] Fix | Delete
// phpcs:ignore WordPress.Security.NonceVerification.Recommended
[908] Fix | Delete
return defined( 'REST_REQUEST' ) && REST_REQUEST && ! empty( $_REQUEST['context'] ) && $_REQUEST['context'] === 'edit';
[909] Fix | Delete
}
[910] Fix | Delete
[911] Fix | Delete
/**
[912] Fix | Delete
* Disable form fields if called from the Gutenberg editor.
[913] Fix | Delete
*
[914] Fix | Delete
* @since 1.7.5
[915] Fix | Delete
*
[916] Fix | Delete
* @return void
[917] Fix | Delete
*/
[918] Fix | Delete
private function disable_fields_in_gb_editor(): void { // phpcs:ignore WPForms.PHP.HooksMethod.InvalidPlaceForAddingHooks
[919] Fix | Delete
[920] Fix | Delete
add_filter(
[921] Fix | Delete
'wpforms_frontend_container_class',
[922] Fix | Delete
static function ( $classes ) {
[923] Fix | Delete
[924] Fix | Delete
$classes[] = 'wpforms-gutenberg-form-selector';
[925] Fix | Delete
[926] Fix | Delete
return $classes;
[927] Fix | Delete
}
[928] Fix | Delete
);
[929] Fix | Delete
add_action(
[930] Fix | Delete
'wpforms_frontend_output',
[931] Fix | Delete
static function () {
[932] Fix | Delete
[933] Fix | Delete
echo '<fieldset disabled>';
[934] Fix | Delete
},
[935] Fix | Delete
3
[936] Fix | Delete
);
[937] Fix | Delete
add_action(
[938] Fix | Delete
'wpforms_frontend_output',
[939] Fix | Delete
static function () {
[940] Fix | Delete
[941] Fix | Delete
echo '</fieldset>';
[942] Fix | Delete
},
[943] Fix | Delete
30
[944] Fix | Delete
);
[945] Fix | Delete
}
[946] Fix | Delete
[947] Fix | Delete
/**
[948] Fix | Delete
* Output CSS variables for the particular form.
[949] Fix | Delete
*
[950] Fix | Delete
* @since 1.8.1
[951] Fix | Delete
*
[952] Fix | Delete
* @param array $attr Attributes passed by WPForms Gutenberg block.
[953] Fix | Delete
*/
[954] Fix | Delete
private function output_css_vars( array $attr ): void {
[955] Fix | Delete
[956] Fix | Delete
if ( empty( $this->css_vars_obj ) || ! method_exists( $this->css_vars_obj, 'get_vars' ) ) {
[957] Fix | Delete
return;
[958] Fix | Delete
}
[959] Fix | Delete
[960] Fix | Delete
if ( $this->render_engine === 'classic' || $this->disable_css_setting !== 1 ) {
[961] Fix | Delete
return;
[962] Fix | Delete
}
[963] Fix | Delete
[964] Fix | Delete
$css_vars = $this->css_vars_obj->get_customized_css_vars( $attr );
[965] Fix | Delete
[966] Fix | Delete
if ( empty( $css_vars ) ) {
[967] Fix | Delete
return;
[968] Fix | Delete
}
[969] Fix | Delete
[970] Fix | Delete
$style_id = "#wpforms-css-vars-{$attr['formId']}-block-{$attr['clientId']}";
[971] Fix | Delete
[972] Fix | Delete
/**
[973] Fix | Delete
* Filter the CSS selector for output CSS variables for styling the GB block form.
[974] Fix | Delete
*
[975] Fix | Delete
* @since 1.8.1
[976] Fix | Delete
*
[977] Fix | Delete
* @param string $selector The CSS selector for output CSS variables for styling the GB block form.
[978] Fix | Delete
* @param array $attr Attributes passed by WPForms Gutenberg block.
[979] Fix | Delete
* @param array $css_vars CSS variables data.
[980] Fix | Delete
*/
[981] Fix | Delete
$vars_selector = apply_filters(
[982] Fix | Delete
'wpforms_integrations_gutenberg_form_selector_output_css_vars_selector',
[983] Fix | Delete
"#wpforms-{$attr['formId']}.wpforms-block-{$attr['clientId']}",
[984] Fix | Delete
$attr,
[985] Fix | Delete
$css_vars
[986] Fix | Delete
);
[987] Fix | Delete
[988] Fix | Delete
$style_id = rtrim( $style_id, '-' );
[989] Fix | Delete
$vars_selector = rtrim( $vars_selector, '-' );
[990] Fix | Delete
[991] Fix | Delete
$this->css_vars_obj->output_selector_vars( $vars_selector, $css_vars, $style_id, $this->current_form_id );
[992] Fix | Delete
}
[993] Fix | Delete
[994] Fix | Delete
/**
[995] Fix | Delete
* Output custom CSS styles.
[996] Fix | Delete
*
[997] Fix | Delete
* @since 1.8.8
[998] Fix | Delete
*
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function