Prevent forms from rendering submit button
Support › MB User Profile › Prevent forms from rendering submit buttonResolved
- This topic has 8 replies, 2 voices, and was last updated 1 year, 5 months ago by
Peter.
-
AuthorPosts
-
May 30, 2023 at 6:16 PM #41977
pluginoven
ParticipantIn using the
mb_user_profile_info
shortcode, is there a way to prevent the shortcode factory from rendering the submit button? I see we can provide a unique ID for the submit button using the id_submit attribute. At the moment I am forcing the ID to be blank using `id_submit="", and then changing the info.php file located under src/Forms as follows:protected function submit_button() { if(empty( $this->config['id_submit'] )){ return; } ?> <div class="rwmb-field rwmb-button-wrapper rwmb-form-submit"> <div class="rwmb-input"> <button type="submit" class="rwmb-button" id="<?= esc_attr( $this->config['id_submit'] ) ?>" name="rwmb_profile_submit_info" value="1"><?= esc_html( $this->config['label_submit'] ) ?></button> </div> </div> <?php }
Would rather not modify the plugin's core files. A filter or attribute to prevent the submit button from rendering would be useful.
May 30, 2023 at 10:21 PM #41983Peter
ModeratorHello,
There isn't an option to remove the button in the user frontend form. You can use some custom CSS code to hide it on your site.
June 7, 2023 at 4:52 PM #42098pluginoven
ParticipantThe CSS workaround would work if I could assign a class to the submit button. Is this possible? An ID can be assigned using the id_submit but then either:
a) custom CSS to hide multiple submit buttons by their unique ID if they exist on the same page would need to be created. or
b) a new id_class attribute would need to be added to the plugin allowing one CSS class definition to be used to hide the submit button.of course, something like id_submit="hidden_submit" could be used in conjunction with a single CSS ID definition, but then, when multiple forms are used on the same page (or in different tabs on the same page), multiple elements with the same ID would exist in the DOM. Not good.
As many times before, I will modify the plugin to get around this issue for the immediate need and would be happy to submit a pull request.
June 7, 2023 at 5:33 PM #42099pluginoven
ParticipantThe suggested modifications to
src/Forms/info.php
are as follows:
1. Add theclass_submit
attribute to the $config.$config = shortcode_atts( [ ... // Appearance options. ... 'id_password' => 'user_pass', 'id_password2' => 'user_pass2', 'id_submit' => 'submit', 'class_submit' => '', // Add class_submit attribute ... ], $config );
2. add
$this->config['class_submit']
to the button class:protected function submit_button() { ?> <div class="rwmb-field rwmb-button-wrapper rwmb-form-submit"> <div class="rwmb-input"> <button type="submit" class="rwmb-button <?= esc_attr( $this->config['class_submit'] ); ?>" id="<?= esc_attr( $this->config['id_submit'] ) ?>" name="rwmb_profile_submit_info" value="1"><?= esc_html( $this->config['label_submit'] ) ?></button> </div> </div> <?php }
June 7, 2023 at 10:21 PM #42109Peter
ModeratorHello,
Instead of modifying the code, you can just create a
<div>
tag with a class and wrap the frontend shortcode inside the div. For example:<div class="my-custom-form"> [mb_frontend_form id='my-custom-fields' post_fields='title,content'] </div>
Then easy to use the following selector to select the submit button
.my-custom-form .rwmb-form-submit button { your CSS code here }
June 8, 2023 at 12:42 AM #42116pluginoven
ParticipantYes. this is a valid solution.
This issue can be marked as resolved.
Thank you.November 3, 2023 at 3:52 PM #43728pluginoven
ParticipantAgain we are faced with this issue
While there is a rwmb_frontend_submit_button filter for forms created with mb_frontend_form, there is no such filter for mb_user_profile_info (which can also be used on the front end.This is a missing feature. Where can a pull request be submitted?
November 3, 2023 at 4:24 PM #43729pluginoven
Participantsrc/Forms/info.php:
protected function submit_button() { $submit_button = '<div class="rwmb-field rwmb-button-wrapper rwmb-form-submit"> <div class="rwmb-input"> <button type="submit" class="rwmb-button" id="'.esc_attr( $this->config['id_submit'] ).'" name="rwmb_profile_submit_info" value="1">'.esc_html( $this->config['label_submit'] ).'</button> </div> </div>'; $submit_button = apply_filters( 'rwmb_profile_submit_button', $submit_button, $this->config ); echo $submit_button; }
usage:
add_filter( 'rwmb_profile_submit_button', 'fix_frontend_submit_button', 20 , 2 ); function fix_frontend_submit_button( $submit_button, $config ) { $is_complete = get_user_meta( $config['user_id'], 'is_complete', true ); if($is_complete){ $submit_button = ''; } return $submit_button; }
src/Forms/Base.php: function render()
... do_action( 'rwmb_profile_before_form', $this->config ); $form = '<form class="rwmb-form mbup-form" method="post" enctype="multipart/form-data" id="' . esc_html( $this->config['form_id'] ) . '">'; $form = apply_filters( 'rwmb_profile_form', $form, $this->config ); echo $form; ...
usage:
add_filter( 'rwmb_profile_form', 'fix_frontend_profile_form', 20 , 2 ); function fix_frontend_profile_form( $form, $config ) { $is_complete = get_user_meta( $config['user_id'], 'is_complete', true ); if($is_complete){ $form = str_replace('method="post"', 'disabled', $form); } return $form; }
November 6, 2023 at 10:28 PM #43750Peter
ModeratorThanks for your feedback.
I've forwarded it to the development team to consider supporting a filter hook for the submit button form in the user profile forms.
-
AuthorPosts
- You must be logged in to reply to this topic.