From b57e26f0eb9398fc9ce19d4256ed64ac064b7409 Mon Sep 17 00:00:00 2001 From: Nikola Petrov Date: Wed, 6 May 2026 15:43:51 +0200 Subject: [PATCH] Make better settings screen --- go-form-plugin/go-form-plugin.php | 67 +++++++++++++++++++++---------- 1 file changed, 45 insertions(+), 22 deletions(-) diff --git a/go-form-plugin/go-form-plugin.php b/go-form-plugin/go-form-plugin.php index 289606e..404df68 100644 --- a/go-form-plugin/go-form-plugin.php +++ b/go-form-plugin/go-form-plugin.php @@ -77,6 +77,12 @@ function go_form_get_forms() return $wpdb->get_results("SELECT * FROM {$wpdb->prefix}go_form_forms ORDER BY created_at DESC"); } +function go_form_get_form_name($id) { + global $wpdb; + $form = $wpdb->get_row($wpdb->prepare("SELECT name FROM {$wpdb->prefix}go_form_forms WHERE id = %d", $id)); + return $form ? $form->name : 'Unknown Form'; +} + function go_form_get_entries($form_id) { global $wpdb; @@ -154,9 +160,15 @@ function go_form_delete_entry() go_form_admin_action('delete'); if (isset($_POST['entry_id'])) { global $wpdb; + $entry = $wpdb->get_row($wpdb->prepare("SELECT form_id FROM {$wpdb->prefix}go_form_entries WHERE id = %d", intval($_POST['entry_id']))); + $form_id = $entry ? $entry->form_id : 0; $wpdb->delete("{$wpdb->prefix}go_form_entries", ['id' => intval($_POST['entry_id'])]); + $redirect_url = add_query_arg(array('page' => 'go-form-settings', 'form_id' => $form_id, 'deleted' => 1), admin_url('admin.php')); + wp_redirect($redirect_url); + exit; } - wp_redirect(admin_url('admin.php?page=go-form-settings&deleted=1')); + $redirect_url = add_query_arg(array('page' => 'go-form-settings', 'deleted' => 1), admin_url('admin.php')); + wp_redirect($redirect_url); exit; } add_action('admin_post_go_form_delete_entry', 'go_form_delete_entry'); @@ -167,8 +179,13 @@ function go_form_create_form() if (isset($_POST['form_name']) && !empty($_POST['form_name'])) { global $wpdb; $wpdb->insert("{$wpdb->prefix}go_form_forms", ['name' => sanitize_text_field($_POST['form_name'])]); + $new_form_id = $wpdb->insert_id; + $redirect_url = add_query_arg(array('page' => 'go-form-settings', 'form_id' => $new_form_id, 'created' => 1), admin_url('admin.php')); + wp_redirect($redirect_url); + exit; } - wp_redirect(admin_url('admin.php?page=go-form-settings&created=1')); + $redirect_url = add_query_arg(array('page' => 'go-form-settings'), admin_url('admin.php')); + wp_redirect($redirect_url); exit; } add_action('admin_post_go_form_create_form', 'go_form_create_form'); @@ -182,7 +199,8 @@ function go_form_delete_form() $wpdb->delete("{$wpdb->prefix}go_form_entries", ['form_id' => $id]); $wpdb->delete("{$wpdb->prefix}go_form_forms", ['id' => $id]); } - wp_redirect(admin_url('admin.php?page=go-form-settings&deleted=1')); + $redirect_url = add_query_arg(array('page' => 'go-form-settings', 'deleted' => 1), admin_url('admin.php')); + wp_redirect($redirect_url); exit; } add_action('admin_post_go_form_delete_form', 'go_form_delete_form'); @@ -199,8 +217,6 @@ function go_form_settings_page() if (!current_user_can('manage_options')) wp_die('No access.'); - $forms = go_form_get_forms(); - if (isset($_GET['deleted'])) echo '

Deleted!

'; if (isset($_GET['created'])) @@ -218,26 +234,33 @@ function go_form_settings_page()

-

Manage Forms & Entries

'; - if (empty($forms)) { - echo '

No forms yet.

'; - return; - } +

Manage Forms & Entries

'; - foreach ($forms as $f) { - echo '
-

' . esc_html($f->name) . ' (ID: ' . esc_html($f->id) . ')

-

Shortcode: [go_form id=' . esc_html($f->id) . ']

+ $selected_form_id = isset($_GET['form_id']) ? intval($_GET['form_id']) : 0; + if ($selected_form_id) { -
- ' . wp_nonce_field('go_form_delete_form_action', 'go_form_delete_form_nonce', true, false) . ' - - - -
'; + $form_name = go_form_get_form_name($selected_form_id); + echo "

$form_name Entries

"; + echo '
+ ' . wp_nonce_field('go_form_delete_form_action', 'go_form_delete_form_nonce', true, false) . ' + + + +
'; + $entries = go_form_get_entries($selected_form_id); + go_form_render_entries_table($entries, true); + + } else { + + $forms = go_form_get_forms(); + echo '

Forms

'; - go_form_render_entries_table(go_form_get_entries($f->id), true); - echo '
'; } echo ''; }