feat: allow editing builtin prompts with override/restore support
This commit is contained in:
+17
-12
@@ -337,12 +337,11 @@ class AdminMenu {
|
|||||||
if (!is_array($custom)) $custom = [];
|
if (!is_array($custom)) $custom = [];
|
||||||
$all = array_merge($builtin, $custom);
|
$all = array_merge($builtin, $custom);
|
||||||
$editing_slug = isset($_GET['prompt_edit']) ? sanitize_key($_GET['prompt_edit']) : '';
|
$editing_slug = isset($_GET['prompt_edit']) ? sanitize_key($_GET['prompt_edit']) : '';
|
||||||
// editing_data: check custom overrides first, then fallback to builtins
|
// editing_data: custom overrides first, then builtins
|
||||||
$builtin_check = $this->getBuiltinPrompts();
|
|
||||||
$editing_data = null;
|
$editing_data = null;
|
||||||
if ($editing_slug) {
|
if ($editing_slug) {
|
||||||
if (isset($custom[$editing_slug])) $editing_data = $custom[$editing_slug];
|
if (isset($custom[$editing_slug])) $editing_data = $custom[$editing_slug];
|
||||||
elseif (isset($builtin_check[$editing_slug])) $editing_data = $builtin_check[$editing_slug];
|
elseif (isset($builtin[$editing_slug])) $editing_data = $builtin[$editing_slug];
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<div class="asktam-mcp-prompts">
|
<div class="asktam-mcp-prompts">
|
||||||
@@ -419,14 +418,17 @@ class AdminMenu {
|
|||||||
|
|
||||||
<div class="asktam-mcp-prompts-grid">
|
<div class="asktam-mcp-prompts-grid">
|
||||||
<?php foreach ($all as $slug => $meta):
|
<?php foreach ($all as $slug => $meta):
|
||||||
$is_custom = !empty($meta['custom']);
|
$is_custom = !empty($meta['custom']);
|
||||||
$copy_id = 'asktam-prompt-' . sanitize_title($slug);
|
$is_builtin_override = $is_custom && isset($builtin[$slug]);
|
||||||
$content = $meta['content'] ?? "Build a {$meta['title']} page using Elementor MCP tools with professional layout and design.";
|
$copy_id = 'asktam-prompt-' . sanitize_title($slug);
|
||||||
$is_editing_this = ($editing_slug === $slug);
|
$content = $meta['content'] ?? "Build a {$meta['title']} page using Elementor MCP tools with professional layout and design.";
|
||||||
|
$is_editing_this = ($editing_slug === $slug);
|
||||||
?>
|
?>
|
||||||
<div class="asktam-mcp-prompt-card" style="position:relative<?php echo $is_editing_this ? ';border:2px solid #f59e0b;' : ''; ?>">
|
<div class="asktam-mcp-prompt-card" style="position:relative<?php echo $is_editing_this ? ';border:2px solid #f59e0b;' : ''; ?>">
|
||||||
<?php if ($is_custom): ?>
|
<?php if ($is_custom && !$is_builtin_override): ?>
|
||||||
<span style="position:absolute;top:10px;right:10px;background:#e8f5e9;color:#2e7d32;font-size:10px;padding:2px 8px;border-radius:10px;font-weight:600;line-height:1.6">Custom</span>
|
<span style="position:absolute;top:10px;right:10px;background:#e8f5e9;color:#2e7d32;font-size:10px;padding:2px 8px;border-radius:10px;font-weight:600;line-height:1.6">Custom</span>
|
||||||
|
<?php elseif ($is_builtin_override): ?>
|
||||||
|
<span style="position:absolute;top:10px;right:10px;background:#fff3cd;color:#856404;font-size:10px;padding:2px 8px;border-radius:10px;font-weight:600;line-height:1.6">Modified</span>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<div class="asktam-mcp-prompt-header">
|
<div class="asktam-mcp-prompt-header">
|
||||||
<h3 class="asktam-mcp-prompt-title"><?php echo esc_html($meta['title']); ?></h3>
|
<h3 class="asktam-mcp-prompt-title"><?php echo esc_html($meta['title']); ?></h3>
|
||||||
@@ -440,11 +442,15 @@ class AdminMenu {
|
|||||||
</button>
|
</button>
|
||||||
<a href="<?php echo esc_url(admin_url('admin.php?page=' . self::PAGE_SLUG . '-prompts&prompt_edit=' . urlencode($slug))); ?>" class="button" style="color:#92400e;border-color:#f59e0b">✎ Edit</a>
|
<a href="<?php echo esc_url(admin_url('admin.php?page=' . self::PAGE_SLUG . '-prompts&prompt_edit=' . urlencode($slug))); ?>" class="button" style="color:#92400e;border-color:#f59e0b">✎ Edit</a>
|
||||||
<?php if ($is_custom): ?>
|
<?php if ($is_custom): ?>
|
||||||
<form method="post" style="margin:0" onsubmit="return confirm('Delete this prompt?')">
|
<form method="post" style="margin:0" onsubmit="return confirm(<?php echo $is_builtin_override ? '\'Restore to original?\'' : '\'Delete this prompt?\''; ?>)">
|
||||||
<?php wp_nonce_field('asktam_mcp_delete_prompt_' . $slug, 'asktam_mcp_nonce'); ?>
|
<?php wp_nonce_field('asktam_mcp_delete_prompt_' . $slug, 'asktam_mcp_nonce'); ?>
|
||||||
<input type="hidden" name="asktam_mcp_action" value="delete_prompt">
|
<input type="hidden" name="asktam_mcp_action" value="delete_prompt">
|
||||||
<input type="hidden" name="prompt_slug" value="<?php echo esc_attr($slug); ?>">
|
<input type="hidden" name="prompt_slug" value="<?php echo esc_attr($slug); ?>">
|
||||||
|
<?php if ($is_builtin_override): ?>
|
||||||
|
<button type="submit" class="button" style="color:#856404;border-color:#f59e0b">↻ Restore</button>
|
||||||
|
<?php else: ?>
|
||||||
<button type="submit" class="button" style="color:#b91c1c;border-color:#b91c1c">🗑 Delete</button>
|
<button type="submit" class="button" style="color:#b91c1c;border-color:#b91c1c">🗑 Delete</button>
|
||||||
|
<?php endif; ?>
|
||||||
</form>
|
</form>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
@@ -780,12 +786,11 @@ class AdminMenu {
|
|||||||
}
|
}
|
||||||
$custom = get_option('asktam_mcp_custom_prompts', []);
|
$custom = get_option('asktam_mcp_custom_prompts', []);
|
||||||
if (!is_array($custom)) $custom = [];
|
if (!is_array($custom)) $custom = [];
|
||||||
// Allow editing builtin prompts — store override in custom store with same slug
|
// Allow editing builtin prompts — save override with same slug; pure custom prompts keep custom:true
|
||||||
$builtins = $this->getBuiltinPrompts();
|
$builtins = $this->getBuiltinPrompts();
|
||||||
if (!isset($custom[$slug]) && !isset($builtins[$slug])) {
|
if (!isset($custom[$slug]) && !isset($builtins[$slug])) {
|
||||||
wp_redirect(admin_url('admin.php?page='.self::PAGE_SLUG.'-prompts&prompt_error='.urlencode('Prompt not found'))); exit;
|
wp_redirect(admin_url('admin.php?page='.self::PAGE_SLUG.'-prompts&prompt_error='.urlencode('Prompt not found'))); exit;
|
||||||
}
|
}
|
||||||
// Builtin overrides don't get the green "Custom" badge (custom:false), pure custom ones do
|
|
||||||
$is_builtin_override = isset($builtins[$slug]) && !isset($custom[$slug]);
|
$is_builtin_override = isset($builtins[$slug]) && !isset($custom[$slug]);
|
||||||
$custom[$slug] = ['title'=>$title,'industry'=>$industry,'description'=>$desc,'content'=>$content,'custom'=>!$is_builtin_override];
|
$custom[$slug] = ['title'=>$title,'industry'=>$industry,'description'=>$desc,'content'=>$content,'custom'=>!$is_builtin_override];
|
||||||
update_option('asktam_mcp_custom_prompts', $custom);
|
update_option('asktam_mcp_custom_prompts', $custom);
|
||||||
|
|||||||
Reference in New Issue
Block a user