twig = new Environment($loader); $this->twig->addFilter(new Filter('svg', [$this, 'svgTag'])); $this->twig->addFilter(new Filter('prop', [$this, 'alpineProp'])); $this->twig->addFunction(new Func('cprop', function ($aprop, $modifier) { return $this->alpineProp($aprop, $modifier); })); $this->twig->addFunction(new Func('sliderelement', function ($aprop, $modifier) { return '$refs.slider.scrollLeft = $refs.slider.scrollWidth / slides.length * active'; })); } public function initFrontend() { add_action('wp_enqueue_scripts', [ $this, 'enqueue' ]); add_action('wp_ajax_nopriv_stepper_submit', [ $this, 'onSubmit' ]); add_action('wp_ajax_stepper_submit', [ $this, 'onSubmit' ]); if (!is_admin()) { add_shortcode('stepper', [ $this, 'handle' ]); } } public function enqueue() { wp_enqueue_script('stepper-js', $this->url.'assets/public/app.js'); wp_enqueue_style('stepper-css', $this->url.'assets/public/app.css'); } public function handle() { if (array_key_exists('kind', $_GET)) { $data = [ 'kaufpreis' => $_GET['kaufpreis'], 'eigenk' => $_GET['eigenkapital'], 'kind' => $_GET['kind'], 'step' => 1 ]; } else { $data = [ 'kaufpreis' => 300000, 'eigenk' => 0, 'kind' => null, 'step' => 0 ]; } return $this->twig->render('stepper.twig.htm', [ 'sprite' => $this->url.'assets/public/sprite.svg', 'data' => $data, ]); } public function svgTag($e, $class = '') { return ''; } public function alpineProp($prop, $modifier) { $v = '$event.target.value'; $bv = '($event.target || $event.originalTarget).value'; return ':value="units.'.$modifier.'.to('.$prop.')" @focus="$event.target.value = '.$prop.'" @blur="console.log($event); '.$bv.' = units.'.$modifier.'.to('.$prop.');" @change="console.log(\'change\'); '.$prop.' = units.'.$modifier.'.from('.$v.');" onblur="console.log(\'RRRR\');"'; } public function validate($payload) { $errors = []; if (!$payload['datenschutz']) { $errors['datenschutz'] = 'Bitte akzeptieren Sie die Datenschutzerklärung.'; } if (!$payload['firstname']) { $errors['firstname'] = 'Bitte füllen Sie dieses Feld aus.'; } if (!$payload['lastname']) { $errors['lastname'] = 'Bitte füllen Sie dieses Feld aus.'; } if (!$payload['phone']) { $errors['phone'] = 'Bitte füllen Sie dieses Feld aus.'; } if (!$payload['email']) { $errors['email'] = 'Bitte füllen Sie dieses Feld aus.'; } if ($payload['email'] && !filter_var($payload['email'], FILTER_VALIDATE_EMAIL)) { $errors['email'] = 'Dies ist keine richtige E-Mail-Adresse'; } return $errors; } public function onSubmit() { $payload = json_decode(file_get_contents('php://input'), true); $errors = $this->validate($payload); if (count($errors)) { echo json_encode(['errors' => $errors]); die(); } wp_mail('info@jonas-ruettgers.de', 'Neue Finanzierungs-Anfrage', $this->twig->render('mail.twig.htm', $payload, true), [ ]); wp_mail($payload['email'], 'Vielen Dank für Ihre Finanzierungs-Anfrage', $this->twig->render('client.twig.htm', $payload, true), [ ]); die(); } }