Changeset 3074988
- Timestamp:
- 04/22/2024 11:48:00 AM (22 months ago)
- Location:
- pinpointe-form-integration/trunk
- Files:
-
- 3 edited
-
assets/js/pinpointe-admin.js (modified) (10 diffs)
-
includes/pinpointe-prepare-form.inc.php (modified) (1 diff)
-
pinpointe-signup-form.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
pinpointe-form-integration/trunk/assets/js/pinpointe-admin.js
r3070994 r3074988 333 333 placeholder: placeholderText ?? "Choose a mailing list.", 334 334 options, 335 onItemAdd: function (value, $item) { 336 if (this.items.length) { 337 jQuery('#submit').prop('disabled', false); 338 } else { 339 jQuery('#submit').prop('disabled', true); 340 } 341 }, 342 onItemRemove: function (value, $item) { 343 if (this.items.length) { 344 jQuery('#submit').prop('disabled', false); 345 } else { 346 jQuery('#submit').prop('disabled', true); 347 } 348 }, 335 349 render: { 336 350 option: function (data, escape) { … … 451 465 } 452 466 453 var fieldField = '<select multiple style="width: 100% !important;"' +467 var fieldField = '<select multiple required style="width: 100% !important;"' + 454 468 'data-placeholder="' + pinpointe_label_select_mailing_tag + '" id="pinpointe_forms_tag_field_' + current_field_id + 455 469 '" name="pinpointe_options[forms][' + current_field_id + '][tag_field][]" ' + … … 478 492 } 479 493 pinpointe_forms_page_hints(); 494 495 jQuery('#submit').prop('disabled', true); 480 496 481 497 }); … … 641 657 } 642 658 643 hide_selected_options('#pinpointe_forms_tag_field_' + current_id + '_' + last_mailing_list);659 // hide_selected_options('#pinpointe_forms_tag_field_' + current_id + '_' + last_mailing_list); 644 660 645 661 var last_select_selected_values = []; … … 667 683 // Re-activate Chosen on the cloned select element 668 684 var newSelectRow = newRow.find('#pinpointe_forms_tag_field_' + current_id + '_' + next_id) 685 newSelectRow.attr('required', true); 669 686 if (newSelectRow && !newSelectRow.get(0).tomselect) { 670 687 var { results, selected } = transformMailingListSelectOptionsToObjectArray( … … 739 756 this_field = this_field.replace('%%%value%%%', current_selected_merge[prop]['name']); 740 757 // SDL: Moved field label after field 741 fields_table += '<tr class="pinpointe_field_row" id="pinpointe_field_' + current_field_id + '_' + prop + '"><td><select class="pinpointe_tag_select" name="pinpointe_options[forms][' + current_field_id + '][fields][' + prop + '][tag]" id="pinpointe_field_tag_' + current_field_id + '_' + prop + '" >' + field_options + '</select></td><td>' + this_field + '</td><td><select name="pinpointe_options[forms][' + current_field_id + '][fields][' + prop + '][icon]" id="pinpointe_field_icon_' + current_field_id + '_' + prop + '" class="pinpointe_fields_icon">' + font_awesome_list + '</select></td><td><button type="button" class="pinpointe_remove_field"><i class="fa-solid fa-xmark"></i></button></td><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][' + prop + '][type]" id="pinpointe_forms_fields_type_' + current_field_id + '_' + prop + '" value="' + (typeof merge_fields[current_selected_merge[prop]['tag']]['type'] !== 'undefined' ? merge_fields[current_selected_merge[prop]['tag']]['type'] : '') + '" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][' + prop + '][req]" id="pinpointe_forms_fields_req_' + current_field_id + '_' + prop + '" value="' + (typeof merge_fields[current_selected_merge[prop]['tag']]['req'] !== 'undefined' ? merge_fields[current_selected_merge[prop]['tag']]['req'] : '') + '" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][' + prop + '][us_phone]" id="pinpointe_forms_fields_us_phone_' + current_field_id + '_' + prop + '" value="' + (typeof merge_fields[current_selected_merge[prop]['tag']]['us_phone'] !== 'undefined' ? merge_fields[current_selected_merge[prop]['tag']]['us_phone'] : '') + '" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][' + prop + '][choices]" id="pinpointe_forms_fields_choices_' + current_field_id + '_' + prop + '" value="' + (typeof merge_fields[current_selected_merge[prop]['tag']]['choices'] !== 'undefined' ? merge_fields[current_selected_merge[prop]['tag']]['choices'] : '') + '" /></tr>';758 fields_table += '<tr class="pinpointe_field_row" id="pinpointe_field_' + current_field_id + '_' + prop + '"><td><select class="pinpointe_tag_select" name="pinpointe_options[forms][' + current_field_id + '][fields][' + prop + '][tag]" id="pinpointe_field_tag_' + current_field_id + '_' + prop + '" style="width: 346px">' + field_options + '</select></td><td>' + this_field + '</td><td><select name="pinpointe_options[forms][' + current_field_id + '][fields][' + prop + '][icon]" id="pinpointe_field_icon_' + current_field_id + '_' + prop + '" class="pinpointe_fields_icon">' + font_awesome_list + '</select></td><td><button type="button" class="pinpointe_remove_field"><i class="fa-solid fa-xmark"></i></button></td><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][' + prop + '][type]" id="pinpointe_forms_fields_type_' + current_field_id + '_' + prop + '" value="' + (typeof merge_fields[current_selected_merge[prop]['tag']]['type'] !== 'undefined' ? merge_fields[current_selected_merge[prop]['tag']]['type'] : '') + '" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][' + prop + '][req]" id="pinpointe_forms_fields_req_' + current_field_id + '_' + prop + '" value="' + (typeof merge_fields[current_selected_merge[prop]['tag']]['req'] !== 'undefined' ? merge_fields[current_selected_merge[prop]['tag']]['req'] : '') + '" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][' + prop + '][us_phone]" id="pinpointe_forms_fields_us_phone_' + current_field_id + '_' + prop + '" value="' + (typeof merge_fields[current_selected_merge[prop]['tag']]['us_phone'] !== 'undefined' ? merge_fields[current_selected_merge[prop]['tag']]['us_phone'] : '') + '" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][' + prop + '][choices]" id="pinpointe_forms_fields_choices_' + current_field_id + '_' + prop + '" value="' + (typeof merge_fields[current_selected_merge[prop]['tag']]['choices'] !== 'undefined' ? merge_fields[current_selected_merge[prop]['tag']]['choices'] : '') + '" /></tr>'; 742 759 } 743 760 } … … 750 767 this_field = this_field.replace('%%%value%%%', ''); 751 768 // SDL: fields_table += '<tr class="pinpointe_field_row" id="pinpointe_field_' + current_field_id + '_1"><td>' + this_field + '</td><td><select class="pinpointe_tag_select" name="pinpointe_options[forms][' + current_field_id + '][fields][1][tag]" id="pinpointe_field_tag_' + current_field_id + '_1">' + field_options + '</select></td><td><select name="pinpointe_options[forms][' + current_field_id + '][fields][1][icon]" id="pinpointe_field_icon_' + current_field_id + '_1" class="pinpointe_fields_icon">' + font_awesome_list + '</select></td><td><button type="button" class="pinpointe_remove_field"><i class="fa-solid fa-xmark"></i></button></td><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][1][type]" id="pinpointe_forms_fields_type_' + current_field_id + '_1" value="" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][1][req]" id="pinpointe_forms_fields_req_' + current_field_id + '_1" value="" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][1][us_phone]" id="pinpointe_forms_fields_us_phone_' + current_field_id + '_1" value="" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][1][choices]" id="pinpointe_forms_fields_choices_' + current_field_id + '_1" value="" /></tr>'; 752 fields_table += '<tr class="pinpointe_field_row" id="pinpointe_field_' + current_field_id + '_1"><td><select class="pinpointe_tag_select" name="pinpointe_options[forms][' + current_field_id + '][fields][1][tag]" id="pinpointe_field_tag_' + current_field_id + '_1" >' + field_options + '</select></td><td>' + this_field + '</td><td><select name="pinpointe_options[forms][' + current_field_id + '][fields][1][icon]" id="pinpointe_field_icon_' + current_field_id + '_1" class="pinpointe_fields_icon">' + font_awesome_list + '</select></td><td><button type="button" class="pinpointe_remove_field"><i class="fa-solid fa-xmark"></i></button></td><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][1][type]" id="pinpointe_forms_fields_type_' + current_field_id + '_1" value="" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][1][req]" id="pinpointe_forms_fields_req_' + current_field_id + '_1" value="" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][1][us_phone]" id="pinpointe_forms_fields_us_phone_' + current_field_id + '_1" value="" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][1][choices]" id="pinpointe_forms_fields_choices_' + current_field_id + '_1" value="" /></tr>';769 fields_table += '<tr class="pinpointe_field_row" id="pinpointe_field_' + current_field_id + '_1"><td><select class="pinpointe_tag_select" name="pinpointe_options[forms][' + current_field_id + '][fields][1][tag]" id="pinpointe_field_tag_' + current_field_id + '_1" style="width: 346px;">' + field_options + '</select></td><td>' + this_field + '</td><td><select name="pinpointe_options[forms][' + current_field_id + '][fields][1][icon]" id="pinpointe_field_icon_' + current_field_id + '_1" class="pinpointe_fields_icon">' + font_awesome_list + '</select></td><td><button type="button" class="pinpointe_remove_field"><i class="fa-solid fa-xmark"></i></button></td><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][1][type]" id="pinpointe_forms_fields_type_' + current_field_id + '_1" value="" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][1][req]" id="pinpointe_forms_fields_req_' + current_field_id + '_1" value="" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][1][us_phone]" id="pinpointe_forms_fields_us_phone_' + current_field_id + '_1" value="" /><input type="hidden" name="pinpointe_options[forms][' + current_field_id + '][fields][1][choices]" id="pinpointe_forms_fields_choices_' + current_field_id + '_1" value="" /></tr>'; 753 770 } 754 771 … … 876 893 877 894 var cloned_select = jQuery('#pinpointe_field_tag_' + current_field_id + '_' + next_id); 878 cloned_select.css('width', ' 100%');895 cloned_select.css('width', '346px'); 879 896 880 897 let tomSelectOptions = { … … 964 981 // Disable 965 982 jQuery(this).find('option[value="' + all_selected[prop] + '"]').prop('disabled', true); 983 984 if (this.tomselect) { // add the already selected item to be selected. That way it cant be selected again. 985 this.tomselect.items.push(all_selected[prop]); 986 } 966 987 } 967 988 … … 1321 1342 selectElement.attr('data-current-mail-list', next_id + '_1'); 1322 1343 selectElement.attr('style', "width: 100% !important"); 1344 selectElement.attr('required', true); 1323 1345 1324 1346 // Reinitialize chosen after updating attributes -
pinpointe-form-integration/trunk/includes/pinpointe-prepare-form.inc.php
r3070994 r3074988 431 431 $html .= "<p class='label'>Please select the mailing list(s) you would like to receive updates from.</p>"; 432 432 433 $input_name = "pinpointe_".$context .'_subscribe[custom][selected_tags][]'; 434 435 // add mailing list validation rules. 436 $validation_rules[$input_name]["required"] = true; 437 $validation_rules[$input_name]["minlength"] = 1; 438 $validation_messages[$input_name]["minlength"] = $validation_messages[$input_name]["required"] = "You need to select at least one mailing list."; 439 433 440 foreach ($mailing_list_settings as $tag_id => $tag) { 434 441 $input_id = "pinpointe_tags_" . $context . "_" . $tag_id; 435 $input_name = "pinpointe_".$context .'_subscribe[custom][selected_tags][]';436 442 437 443 $html .= '<label for="'.$input_id .'" style="width: 100%;display: flex; justify-content: space-between;align-items: center; margin-bottom: 5px; width: 100%;">'; -
pinpointe-form-integration/trunk/pinpointe-signup-form.php
r3073079 r3074988 687 687 688 688 if ($key === 'tags') { 689 $value = is_array($value) ? $value : [$value]; 689 690 $value = array_map('sanitize_key', $value); 690 691 return; … … 1476 1477 // Show Mailing list 1477 1478 $new_forms[$form_number]['show_mailing_list'] = (isset($form['show_mailing_list']) && !empty($form['show_mailing_list'])) ? $form['show_mailing_list'] : 'off'; 1479 1480 if (empty($new_forms[$form_number]['tags'])) { 1481 array_push( 1482 $errors, 1483 array( 1484 'setting' => 'tags', 1485 'custom' => printf(esc_html__('%s', 'pinpointe'), esc_html("You must selected at least one mailing list")) 1486 ) 1487 ); 1488 } 1478 1489 1479 1490 $this->saveTagMetadata($form_number, $new_forms[$form_number]['show_mailing_list'], $new_forms[$form_number]['tags']);
Note: See TracChangeset
for help on using the changeset viewer.