name = 'MailChimp'; $this->type = 'mailchimp'; $this->icon = 'fa-envelope-o'; $this->order = 21; $this->defaults = array( 0 => array( 'label' => __('Sign-up to our newsletter?', 'mailchimp-for-wp'), 'value' => '1', 'default' => '', ) ); } /** * Field options panel inside the builder. * * @since 1.0.0 * @param array $field */ public function field_options($field) { //--------------------------------------------------------------------// // Basic field options //--------------------------------------------------------------------// // Options open markup $this->field_option('basic-options', $field, array('markup' => 'open')); // MailChimp list $this->field_option_mailchimp_list($field); // Choices $this->field_option_choices($field); // Description $this->field_option('description', $field); // Required toggle $this->field_option('required', $field); // Options close markup $this->field_option('basic-options', $field, array('markup' => 'close')); //--------------------------------------------------------------------// // Advanced field options //--------------------------------------------------------------------// // Options open markup $this->field_option('advanced-options', $field, array('markup' => 'open')); // Custom CSS classes $this->field_option('css', $field); // Options close markup $this->field_option('advanced-options', $field, array('markup' => 'close')); } private function field_option_mailchimp_list($field) { $mailchimp = new MC4WP_MailChimp(); // Field option label $tooltip = __('Select the MailChimp list to subscribe to.', 'mailchimp-for-wp'); $option_label = $this->field_element( 'label', $field, array( 'slug' => 'mailchimp-list', 'value' => __('MailChimp list', 'mailchimp-for-wp'), 'tooltip' => $tooltip, ), false ); $option_select = sprintf(''; // Field option row (markup) including label and input. $output = $this->field_element( 'row', $field, array( 'slug' => 'mailchimp-list', 'content' => $option_label . $option_select, ) ); } private function field_option_choices($field) { $tooltip = __('Set your sign-up label text and whether it should be pre-checked.', 'mailchimp-for-wp'); $values = !empty($field['choices']) ? $field['choices'] : $this->defaults; $class = !empty($field['show_values']) && $field['show_values'] == '1' ? 'show-values' : ''; $class .= !empty($dynamic) ? ' wpforms-hidden' : ''; // Field option label $option_label = $this->field_element( 'label', $field, array( 'slug' => 'mailchimp-checkbox', 'value' => __('Sign-up checkbox', 'mailchimp-for-wp'), 'tooltip' => $tooltip, ), false ); // Field option choices inputs $option_choices = sprintf(''; // Field option row (markup) including label and input. $output = $this->field_element( 'row', $field, array( 'slug' => 'choices', 'content' => $option_label . $option_choices, ) ); } /** * Field preview inside the builder. * * @since 1.0.0 * @param array $field */ public function field_preview($field) { $values = !empty($field['choices']) ? $field['choices'] : $this->defaults; // Field checkbox elements echo ''; // Dynamic population is enabled and contains more than 20 items if (isset($total) && $total > 20) { echo '
'; printf(__('Showing the first 20 choices.
All %d choices will be displayed when viewing the form.', 'wpforms'), absint($total)); echo '
'; } // Description $this->field_preview_option('description', $field); } /** * Field display on the form front-end. * * @since 1.0.0 * @param array $field * @param array $form_data */ public function field_display($field, $field_atts, $form_data) { // Setup and sanitize the necessary data $field_required = !empty($field['required']) ? ' required' : ''; $field_class = implode(' ', array_map('sanitize_html_class', $field_atts['input_class'])); $field_id = implode(' ', array_map('sanitize_html_class', $field_atts['input_id'])); $form_id = $form_data['id']; $choices = $field['choices']; // List printf(''; } /** * Formats and sanitizes field. * * @since 1.0.2 * @param int $field_id * @param array $field_submit * @param array $form_data */ public function format($field_id, $field_submit, $form_data) { $field = $form_data['fields'][$field_id]; $choice = array_pop($field['choices']); $name = sanitize_text_field($choice['label']); $data = array( 'name' => $name, 'value' => empty($field_submit) ? __('No') : __('Yes'), 'value_raw' => $field_submit, 'id' => absint($field_id), 'type' => $this->type, ); wpforms()->process->fields[$field_id] = $data; } }