start_controls_section('wizup_section', ['label' => 'Wizup', 'condition' => ['submit_actions' => $this->get_name()]]); $widget->add_control('wizup_help', [ 'type' => \Elementor\Controls_Manager::RAW_HTML, 'raw' => 'חברו Token דרך הגדרות Wizup Forms. בחרו שדות מתוך הטופס או השתמשו בזיהוי אוטומטי. הרשימה מתעדכנת לפי שדות הטופס. שמרו את העמוד לאחר שינוי הבחירה.', 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info', ]); foreach (['name' => 'שם (חובה)', 'last_name' => 'שם משפחה (אופציונלי)', 'phone' => 'טלפון (חובה)', 'email' => 'אימייל'] as $key => $label) { $widget->add_control('wizup_' . $key, ['label' => $label, 'type' => 'wizup_form_field', 'wizup_role' => $key, 'wizup_required' => in_array($key, ['name', 'phone'], true), 'default' => $key === 'last_name' ? '' : Field_Mapping::AUTO, 'label_block' => true, 'dynamic' => ['active' => false]]); } $widget->add_control('wizup_country', ['label' => 'קידומת מדינה', 'type' => \Elementor\Controls_Manager::TEXT, 'default' => '972', 'description' => '972 לישראל. ריק: נדרש מספר בינלאומי שמתחיל ב-+.']); $widget->add_control('wizup_stage_id', ['label' => 'שלב ליד', 'type' => \Elementor\Controls_Manager::SELECT, 'options' => ['' => 'ברירת המחדל ב-Wizup'] + Settings::stages(), 'default' => '', 'description' => 'לטעינת השלבים לחצו על בדיקת חיבור בהגדרות ורעננו את העורך.']); $repeater = new \Elementor\Repeater(); $repeater->add_control('key', ['label' => 'מפתח השדה ב-Wizup', 'type' => \Elementor\Controls_Manager::TEXT, 'label_block' => true, 'dynamic' => ['active' => false], 'description' => 'הדביקו את ערך key של השדה, ללא מרכאות. שם התצוגה label אינו המפתח.']); $repeater->add_control('field', ['label' => 'שדה מהטופס', 'type' => 'wizup_form_field', 'wizup_required' => true, 'label_block' => true]); $repeater->add_control('type', ['label' => 'סוג ערך', 'type' => \Elementor\Controls_Manager::SELECT, 'default' => 'text', 'options' => ['text' => 'טקסט / מספר / תאריך', 'boolean' => 'כן / לא']]); $widget->add_control('wizup_custom', ['label' => 'שדות מותאמים', 'type' => \Elementor\Controls_Manager::REPEATER, 'fields' => $repeater->get_controls(), 'title_field' => '{{{ key }}}', 'default' => [], 'prevent_empty' => false, 'description' => 'המפתח חייב להתקיים בהגדרות הלידים ב-Wizup. קבצים וסיסמאות אינם נשלחים.']); $widget->add_control('wizup_custom_help', ['type' => \Elementor\Controls_Manager::RAW_HTML, 'raw' => '
להעברת הודעה, צרו ב-Wizup שדה מסוג טקסט ארוך, אתרו את המפתח שלו ומפו אליו את שדה ההודעה בטופס.
מדריך: יצירת שדה ואיתור המפתח ב-DevTools', 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info']); $widget->end_controls_section(); } public function run($record, $ajax_handler): void { $settings = []; foreach (array_keys(Settings::defaults()) as $key) { $settings[$key] = $record->get_form_settings('wizup_' . $key); } $settings = Field_Mapping::resolve($settings, (array) $record->get_form_settings('form_fields')); $fields = []; foreach ((array) $record->get('fields') as $id => $field) { if (!in_array($field['type'] ?? '', ['upload', 'file', 'password', 'recaptcha', 'recaptcha_v3', 'honeypot'], true)) { $fields[$id] = $field['value'] ?? ''; } } $payload = Mapper::build($fields, $settings); if (is_wp_error($payload)) { $ajax_handler->add_error_message('לא ניתן לשלוח את הפנייה. בדקו שם, טלפון ואימייל ונסו שוב, או פנו אלינו בדרך אחרת.'); return; } $form_id = $record->get_form_settings('id') ?: $record->get_form_settings('form_name'); $result = Queue::enqueue($payload, 'elementor', (string) $form_id); if (is_wp_error($result)) { $ajax_handler->add_error_message('לא ניתן לשמור את הפנייה כעת. נסו שוב בעוד רגע או פנו אלינו בדרך אחרת.'); } } public function on_export($element): array { foreach (array_keys($element['settings'] ?? []) as $key) { if (str_starts_with((string) $key, 'wizup_')) { unset($element['settings'][$key]); } } // Imported templates need explicit setup before they can send data to the destination account. if (isset($element['settings']['submit_actions']) && is_array($element['settings']['submit_actions'])) { $element['settings']['submit_actions'] = array_values(array_diff($element['settings']['submit_actions'], ['wizup'])); } return $element; } }