Files
skrift-programme/Webseite/skrift-job-manager/skrift-job-manager.php
Lucas Orth 0341c4eaea Initiale Ablage der umsortierten Skrift-Programme
Struktur: Docker/ (skrift-backend, signature-service), Webseite/
(skrift-configurator, skrift-job-manager), Produktion/ (skrift-produktion,
AutoRecover). Aufgeräumt: signature-to-svg entfernt, Backend-PayPal-Service
entfernt (PayPal läuft client-seitig im Configurator), Dev-/Test-Artefakte
und Deployment-Dokus bereinigt, .dockerignore repariert. CLAUDE.md mit
Architektur ergänzt. Secrets (.env, config.json) via .gitignore ausgeschlossen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 12:21:08 +02:00

105 lines
3.2 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
/**
* Plugin Name: Skrift Auftragsmanager
* Description: Kundenauftrag-Verwaltung für den Skrift Konfigurator. Benötigt das Plugin "Skrift Konfigurator" für CSS, Proxy-Endpunkte und Backend-Verbindung.
* Version: 1.0.0
* Author: Skrift
*/
if (!defined('ABSPATH')) { exit; }
require_once plugin_dir_path(__FILE__) . 'includes/admin-job-manager.php';
// Cron beim Deaktivieren des Plugins entfernen
register_deactivation_hook(__FILE__, function () {
wp_clear_scheduled_hook('skrift_cleanup_old_jobs');
});
final class Skrift_Job_Manager_Plugin {
const VERSION = '1.0.0';
const SLUG = 'skrift-job-manager';
public function __construct() {
add_action('wp_enqueue_scripts', [$this, 'register_assets']);
add_filter('script_loader_tag', [$this, 'add_module_attribute'], 10, 3);
add_shortcode('skrift_kundenauftrag', [$this, 'render_shortcode']);
}
public function register_assets(): void {
$base = plugin_dir_url(__FILE__);
// Basis-CSS vom Konfigurator als Abhängigkeit (liefert --sk-* Variablen und alle .sk-* Klassen)
wp_register_style(
self::SLUG,
$base . 'assets/css/job-app.css',
['skrift-konfigurator'],
self::VERSION
);
// SheetJS UMD – im <head> damit window.XLSX vor ES6-Modulen verfügbar ist
wp_register_script(
'skrift-xlsx-js',
'https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js',
[],
'0.18.5',
false
);
wp_register_script(
self::SLUG,
$base . 'assets/js/job-app.js',
['skrift-xlsx-js'],
self::VERSION,
true
);
}
public function add_module_attribute(string $tag, string $handle, string $src): string {
if ($handle !== self::SLUG) return $tag;
return '<script type="module" src="' . esc_url($src) . '"></script>';
}
public function render_shortcode($atts = []): string {
wp_enqueue_style('skrift-konfigurator');
wp_enqueue_style(self::SLUG);
wp_enqueue_script('skrift-xlsx-js');
wp_enqueue_script(self::SLUG);
// Konfigurator-Einstellungen lesen (Backend-URL, API-Key, etc.)
if (class_exists('Skrift_Konfigurator_Admin_Settings')) {
$settings = Skrift_Konfigurator_Admin_Settings::get_settings();
} else {
$settings = get_option('skrift_konfigurator_settings', []);
}
$frontend_settings = $settings;
unset($frontend_settings['backend_connection']['api_token']);
unset($frontend_settings['api_security']);
unset($frontend_settings['paypal']['client_secret_sandbox']);
unset($frontend_settings['paypal']['client_secret_live']);
$job_settings = Skrift_Job_Manager::get_plugin_settings();
ob_start();
?>
<script>
window.SkriftJobApp = <?php echo wp_json_encode([
'version' => self::VERSION,
'restUrl' => esc_url_raw(rest_url()),
'nonce' => wp_create_nonce('wp_rest'),
'apiKey' => $settings['api_security']['api_key'] ?? '',
'settings' => $frontend_settings,
'redirectUrl' => $job_settings['redirect_url'] ?? '',
]); ?>;
</script>
<div class="sk-configurator sk-job-app" data-skrift-kundenauftrag="1">
<!-- Wird per JavaScript befüllt -->
</div>
<?php
return ob_get_clean();
}
}
new Skrift_Job_Manager_Plugin();