Files
wp-agentic-writer/views/settings-v2/layout.php
Dwindi Ramadhana 690991c526 refactor: Cleanup git state - commit all staged changes
Major refactoring cleanup:
- Add new controller architecture (class-controller-*.php)
- Add new settings-v2 UI (views/settings-v2/)
- Add new CSS architecture (agentic-sidebar.css, tokens)
- Add esbuild build pipeline (scripts/build.js, package.json)
- Add composer dependencies (vendor/)
- Add frontend src directory (assets/js/src/index.jsx)
- Add documentation files
- Remove old/obsolete files (class-settings.php, old CSS)

This commits all pending changes from previous refactoring efforts.
2026-06-17 05:27:58 +07:00

195 lines
7.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Settings V2 layout — Stitch rebuild.
*
* @package WP_Agentic_Writer
* @var array $view_data Prepared view data from class-settings-v2.php.
*/
if (!defined("ABSPATH")) {
exit();
}
// phpcs:ignore WordPress.PHP.DontExtract.extract_extract -- View templates are intentionally passed prepared variables.
extract($view_data);
$api_connected = !empty($api_key);
$models_ready = !empty($planning_model) && !empty($writing_model);
$budget_percent_safe = min(100, (float) $budget_percent);
$user_agent = isset($_SERVER["HTTP_USER_AGENT"])
? sanitize_text_field(wp_unslash($_SERVER["HTTP_USER_AGENT"]))
: "";
$cmd_key = false !== strpos($user_agent, "Mac OS") ? "" : "Ctrl";
$settings_tabs = [
"general" => ["General", "6"],
"models" => ["OpenRouter", "6"],
"local-backend" => ["Custom Router", "3"],
"tools" => ["Tools", "1"],
"memanto" => ["MEMANTO", "3"],
"cost-log" => ["Cost Log", "2"],
"guide" => ["Model Guide", "3"],
];
?>
<div class="wrap wpaw2-settings">
<script>
// Intercept WP "Settings saved" admin notice → use our Agentic toast
document.addEventListener('DOMContentLoaded', function() {
var wpNotice = document.querySelector('#setting-error-settings_updated, .notice.settings-error');
if (wpNotice) {
var msg = wpNotice.querySelector('p');
var text = msg ? msg.textContent.replace('Settings saved.', 'Settings saved').trim() : 'Settings saved';
wpNotice.style.display = 'none';
// Delegate to existing toast system
var toast = document.getElementById('wpaw2-toast');
var body = document.getElementById('wpaw2-toast-message');
if (toast && body) {
body.textContent = text;
toast.className = 'toast show toast-success';
clearTimeout(toast._timer);
toast._timer = setTimeout(function() { toast.classList.remove('show'); }, 2600);
}
}
});
</script>
<div class="main">
<header class="admin-top">
<div class="crumb"><?php esc_html_e(
"Agentic Writer",
"wp-agentic-writer",
); ?> / <strong id="wpaw2-crumb-tab"><?php esc_html_e(
"General",
"wp-agentic-writer",
); ?></strong></div>
<div class="top-actions">
<button type="button" class="btn btn-small" data-aw2-tab="guide"><?php esc_html_e(
"Open Guide",
"wp-agentic-writer",
); ?></button>
<button type="button" class="btn btn-small btn-danger" id="wpaw-reset-settings"><?php esc_html_e(
"Reset Defaults",
"wp-agentic-writer",
); ?></button>
<button type="submit" form="wpaw2-settings-form" class="btn btn-primary btn-small"><?php esc_html_e(
"Save Settings",
"wp-agentic-writer",
); ?></button>
</div>
</header>
<main class="page">
<section class="hero">
<div class="hero-card">
<p class="eyebrow"><?php esc_html_e(
"Control center",
"wp-agentic-writer",
); ?></p>
<h1><?php esc_html_e(
"Configure your agentic writing workflow.",
"wp-agentic-writer",
); ?></h1>
<p class="hero-copy"><?php esc_html_e(
"Manage providers, model routing, memory, cost controls, and custom endpoint integrations from one lightweight settings interface.",
"wp-agentic-writer",
); ?></p>
</div>
<div class="status-panel">
<div class="workflow-step"><span class="step-dot">1</span><span class="step-label"><?php esc_html_e(
"OpenRouter",
"wp-agentic-writer",
); ?></span><span class="status <?php echo esc_attr(
$api_connected ? "connected" : "warn",
); ?>"><?php echo $api_connected
? esc_html__("Connected", "wp-agentic-writer")
: esc_html__("Missing key", "wp-agentic-writer"); ?></span></div>
<div class="workflow-step"><span class="step-dot">2</span><span class="step-label"><?php esc_html_e(
"Models",
"wp-agentic-writer",
); ?></span><span class="status <?php echo esc_attr(
$models_ready ? "connected" : "warn",
); ?>"><?php echo $models_ready
? esc_html__("Ready", "wp-agentic-writer")
: esc_html__("Review", "wp-agentic-writer"); ?></span></div>
<div class="workflow-step"><span class="step-dot">3</span><span class="step-label"><?php esc_html_e(
"Budget",
"wp-agentic-writer",
); ?></span><span class="status <?php echo esc_attr(
"danger" === $budget_status
? "error"
: ("warning" === $budget_status
? "warn"
: "connected"),
); ?>"><?php echo esc_html(
number_format_i18n($budget_percent_safe, 1),
); ?>%</span></div>
</div>
</section>
<form method="post" action="options.php" id="wpaw2-settings-form">
<?php settings_fields("wp_agentic_writer_settings"); ?>
<section class="tabs-wrap">
<aside class="tab-sidebar" aria-label="Settings sections">
<div class="tab-group">
<div class="tab-group-title"><?php esc_html_e(
"Setup",
"wp-agentic-writer",
); ?></div>
<?php foreach (
["general", "models", "local-backend", "tools", "memanto"]
as $tab_key
): ?>
<button type="button" class="tab-btn" data-aw2-tab="<?php echo esc_attr(
$tab_key,
); ?>" data-label="<?php echo esc_attr(
$settings_tabs[$tab_key][0],
); ?>" aria-selected="<?php echo "general" === $tab_key
? "true"
: "false"; ?>"><span><?php echo esc_html(
$settings_tabs[$tab_key][0],
); ?></span><span class="tab-count"><?php echo esc_html(
$settings_tabs[$tab_key][1],
); ?></span></button>
<?php endforeach; ?>
</div>
<div class="tab-group">
<div class="tab-group-title"><?php esc_html_e(
"Reference",
"wp-agentic-writer",
); ?></div>
<?php foreach (["cost-log", "guide"] as $tab_key): ?>
<button type="button" class="tab-btn" data-aw2-tab="<?php echo esc_attr(
$tab_key,
); ?>" data-label="<?php echo esc_attr(
$settings_tabs[$tab_key][0],
); ?>" aria-selected="false"><span><?php echo esc_html(
$settings_tabs[$tab_key][0],
); ?></span><span class="tab-count"><?php echo esc_html(
$settings_tabs[$tab_key][1],
); ?></span></button>
<?php endforeach; ?>
</div>
</aside>
<div>
<section class="tab-panel active" id="general"><?php require WP_AGENTIC_WRITER_DIR .
"views/settings-v2/tab-general.php"; ?></section>
<section class="tab-panel" id="models"><?php require WP_AGENTIC_WRITER_DIR .
"views/settings-v2/tab-models.php"; ?></section>
<section class="tab-panel" id="local-backend"><?php require WP_AGENTIC_WRITER_DIR .
"views/settings-v2/tab-local-backend.php"; ?></section>
<section class="tab-panel" id="tools"><?php require WP_AGENTIC_WRITER_DIR .
"views/settings-v2/tab-tools.php"; ?></section>
<section class="tab-panel" id="memanto"><?php require WP_AGENTIC_WRITER_DIR .
"views/settings-v2/tab-memanto.php"; ?></section>
<section class="tab-panel" id="cost-log"><?php require WP_AGENTIC_WRITER_DIR .
"views/settings-v2/tab-cost-log.php"; ?></section>
<section class="tab-panel" id="guide"><?php require WP_AGENTIC_WRITER_DIR .
"views/settings-v2/tab-guide.php"; ?></section>
</div>
</section>
</form>
</main>
</div>
<div class="toast" id="wpaw2-toast" role="status" aria-live="polite"><button type="button" class="btn btn-small" id="wpaw2-toast-close" style="float:right">×</button><span id="wpaw2-toast-message"></span></div>
</div>