mailferno-theme/page-edit-domain.php
ruben efc50f3b4e Implement AJAX forms and dashboard modal workflow
- Added dashboard modal with multi-step entity creation
- Updated form pages to use AJAX submission
- Improved validation and user feedback on form actions

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-03-07 07:33:32 -06:00

272 lines
No EOL
8.1 KiB
PHP

<?php
/**
* Template Name: Domain Edit template
* Template Post Type: page
* @package GeneratePress
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
$current_user_id = get_current_user_id();
$new_post = true;
// Get existing post data if editing
if (isset($_GET['edit'])) {
$post_id = intval($_GET['edit']);
$new_post = false;
} else {
$post_id = 0;
}
$domain_name = '';
$cloudflare_email = '';
$cloudflare_key = '';
$domain_in_use = '';
if ($post_id > 0) {
$post_item = get_post($post_id);
if ($post_item && $post_item->post_type === 'domain') {
$domain_name = $post_item->post_title;
$cloudflare_email = get_post_meta($post_id, 'cloudflare_api_email', true) ?: '';
$cloudflare_key = get_post_meta($post_id, 'cloudflare_api_key', true) ?: '';
$domain_in_use = get_post_meta($post_id, 'domain_in_use', true) ?: '';
}
}
// Enqueue Scripts
wp_enqueue_script('domain-form', '/wp-content/plugins/rl-mailwarmer/js/domain-form.js', array('jquery'), '1.0', true);
wp_localize_script('domain-form', 'domain_form_vars', array(
'ajax_url' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('domain_form_nonce'),
'delete_nonce' => wp_create_nonce('domain_delete_nonce'),
'domains_page' => site_url('/domains/'),
));
get_header(); ?>
<div <?php generate_do_attr( 'content' ); ?>>
<main <?php generate_do_attr( 'main' ); ?>>
<?php
/**
* generate_before_main_content hook.
*
* @since 0.1
*/
do_action( 'generate_before_main_content' );
if ( generate_has_default_loop() ) {
while ( have_posts() ) :
the_post();
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?> <?php generate_do_microdata( 'article' ); ?>>
<div class="inside-article mf-dashboard-page">
<?php
/**
* generate_before_content hook.
*
* @since 0.1
*
* @hooked generate_featured_page_header_inside_single - 10
*/
do_action( 'generate_before_content' );
if ( generate_show_entry_header() ) :
?>
<header <?php generate_do_attr( 'entry-header' ); ?>>
<?php
/**
* generate_before_entry_title hook.
*
* @since 0.1
*/
do_action( 'generate_before_entry_title' );
/**
* generate_after_entry_title hook.
*
* @since 0.1
*
* @hooked generate_post_meta - 10
*/
do_action( 'generate_after_entry_title' );
?>
</header>
<?php
endif;
/**
* generate_after_entry_header hook.
*
* @since 0.1
*
* @hooked generate_post_image - 10
*/
do_action( 'generate_after_entry_header' );
$itemprop = '';
if ( 'microdata' === generate_get_schema_type() ) {
$itemprop = ' itemprop="text"';
}
?>
<div class="entry-content"<?php echo $itemprop; // phpcs:ignore -- No escaping needed. ?>>
<div class="wrap">
<h1><?php echo $post_id ? 'Edit Domain' : 'Add New Domain'; ?></h1>
<!-- Form Messages Container -->
<div id="form-messages" style="display: none;"></div>
<form id="domain-form" class="mf-dashboard-form">
<?php wp_nonce_field('domain_form_nonce', 'domain_nonce'); ?>
<?php if ($post_id) : ?>
<input type="hidden" id="post_id" name="post_id" value="<?php echo esc_attr($post_id); ?>">
<?php endif; ?>
<div class="mf-form-field-block">
<table class="mf-form-table">
<tr>
<th><label for="domain_name">Domain Name</label></th>
<td>
<input type="text"
id="domain_name"
name="domain_name"
value="<?php echo esc_attr($domain_name); ?>"
class="regular-text"
required>
</td>
</tr>
<tr>
<th><label for="update_dns">Update DNS Settings?</label></th>
<td>
<input type="checkbox"
id="update_dns"
name="update_dns"
<?php echo $new_post ? 'checked' : ''; ?>
class="">
<span>Warning! This will attempt to update your DNS records!</span>
</td>
</tr>
<tr>
<th><label for="domain_in_use">Is this domain in use (already sending & receiving email)?</label></th>
<td>
<input type="checkbox"
id="domain_in_use"
name="domain_in_use"
<?php echo $domain_in_use || $new_post ? 'checked' : ''; ?>
class="">
<span>If the domain is already in use we won't change the MX records</span>
</td>
</tr>
</table>
</div>
<div class="mf-form-field-block advanced-settings">
<h3 class="advanced-toggle">CloudFlare Settings</h3>
<p>Only if different than the credentials in your profile</p>
<div class="advanced-content" style="display: none;">
<table class="mf-form-table">
<tr>
<th><label for="cloudflare_api_email">Cloudflare API Email</label></th>
<td>
<input type="email"
id="cloudflare_api_email"
name="cloudflare_api_email"
value="<?php echo esc_attr($cloudflare_email); ?>"
class="regular-text">
</td>
</tr>
<tr>
<th><label for="cloudflare_api_key">Cloudflare API Key</label></th>
<td>
<input type="password"
id="cloudflare_api_key"
name="cloudflare_api_key"
value="<?php echo esc_attr($cloudflare_key); ?>"
class="regular-text">
</td>
</tr>
</table>
</div>
</div>
<p class="submit">
<input type="submit"
class="button button-primary"
value="<?php echo $post_id ? 'Update Domain' : 'Add Domain'; ?>">
<?php if ($post_id) : ?>
<a href="#" class="button delete-domain-btn" data-id="<?php echo esc_attr($post_id); ?>" style="margin-left: 10px; color: #a00;">Delete Domain</a>
<?php endif; ?>
</p>
<?php if ($new_post) : ?>
<div class="mf-form-field-block">
<label for="stay_on_page">Stay on this page to create another?</label>
<input type="checkbox"
id="stay_on_page"
name="stay_on_page"
class="">
</div>
<?php endif; ?>
</form>
</div>
</div>
<?php
/**
* generate_after_entry_content hook.
*
* @since 0.1
*
* @hooked generate_footer_meta - 10
*/
do_action( 'generate_after_entry_content' );
/**
* generate_after_content hook.
*
* @since 0.1
*/
do_action( 'generate_after_content' );
?>
</div>
</article>
<?php
endwhile;
wp_reset_postdata();
}
/**
* generate_after_main_content hook.
*
* @since 0.1
*/
do_action( 'generate_after_main_content' );
?>
</main>
</div>
<?php
/**
* generate_after_primary_content_area hook.
*
* @since 2.0
*/
do_action( 'generate_after_primary_content_area' );
generate_construct_sidebars();
get_footer();