date_default.hbs
4 years ago
date_formats.hbs
4 years ago
date_types.hbs
4 years ago
field.hbs
4 years ago
field_form.hbs
4 years ago
index.php
3 years ago
label.hbs
4 years ago
label_within.hbs
4 years ago
required.hbs
4 years ago
segment_selection.hbs
2 years ago
segment_selection_item.hbs
4 years ago
submit.hbs
4 years ago
validate.hbs
4 years ago
values.hbs
4 years ago
values_item.hbs
4 years ago
values.hbs
82 lines
| 1 | <div class="mailpoet_multiple_values"> |
| 2 | <ul></ul> |
| 3 | {{#ifCond type 'in' 'radio,select'}} |
| 4 | <a href="javascript:;" class="add"><span></span><%= __('Add item') %></a> |
| 5 | {{/ifCond}} |
| 6 | </div> |
| 7 | <script type="text/javascript"> |
| 8 | jQuery(function($) { |
| 9 | {{#if params.values}} |
| 10 | var field_values = {{{ json_encode params.values }}}; |
| 11 | {{else}} |
| 12 | var field_values = [{ value: '' }]; |
| 13 | {{/if}} |
| 14 | var field_type = "{{ type }}"; |
| 15 | var template = Handlebars.compile($('#field_settings_values_item').html()); |
| 16 | |
| 17 | // set default value for checkbox type if there is no value defined |
| 18 | if(field_type === 'checkbox' && field_values.length !== 1) { |
| 19 | if(field_values.length > 1) { |
| 20 | field_values = [field_values[0]]; |
| 21 | } else { |
| 22 | // push a default empty value |
| 23 | field_values = [{}]; |
| 24 | } |
| 25 | } |
| 26 | $(function() { |
| 27 | // render all values by creating inputs |
| 28 | for(var i = 0, count = field_values.length; i < count; i++) { |
| 29 | createInput(template, field_values[i]); |
| 30 | } |
| 31 | // set inputs name |
| 32 | setInputNames(); |
| 33 | |
| 34 | // add value |
| 35 | $('.mailpoet_multiple_values .add').on('click', function() { |
| 36 | createInput(template); |
| 37 | setInputNames(); |
| 38 | }); |
| 39 | // remove value |
| 40 | $(document).on('click', '.mailpoet_multiple_values li .remove', function() { |
| 41 | $(this).parent('li').remove(); |
| 42 | setInputNames(); |
| 43 | }); |
| 44 | // create an input |
| 45 | function createInput(template, values) { |
| 46 | var data = values || {}; |
| 47 | // set field type |
| 48 | data.type = field_type; |
| 49 | // add input to selection |
| 50 | $('.mailpoet_multiple_values ul').append(template(data)); |
| 51 | } |
| 52 | // set input names (since their index is based on their position) |
| 53 | function setInputNames() { |
| 54 | $('.mailpoet_multiple_values li').each(function(index, item) { |
| 55 | $(item).find('.is_checked').attr('name', 'params[values]['+index+'][is_checked]'); |
| 56 | $(item).find('.value').attr('name', 'params[values]['+index+'][value]'); |
| 57 | }); |
| 58 | |
| 59 | // hide remove button if only one item remains |
| 60 | if ($('.mailpoet_multiple_values li').length > 1) { |
| 61 | $('.mailpoet_multiple_values .remove').show(); |
| 62 | } else { |
| 63 | $('.mailpoet_multiple_values .remove').hide(); |
| 64 | } |
| 65 | } |
| 66 | {{#ifCond type '!=' 'checkbox'}} |
| 67 | $('.mailpoet_multiple_values').on('click', '.is_checked', function() { |
| 68 | // get click checkbox's state |
| 69 | var is_checked = $(this).is(':checked'); |
| 70 | // uncheck all checkboxes |
| 71 | $('.mailpoet_multiple_values .is_checked').removeProp('checked'); |
| 72 | // toggle clicked checkbox |
| 73 | if(is_checked === false) { |
| 74 | $(this).removeProp('checked'); |
| 75 | } else { |
| 76 | $(this).prop('checked', 'checked'); |
| 77 | } |
| 78 | }); |
| 79 | {{/ifCond}} |
| 80 | }); |
| 81 | }); |
| 82 | <{{!}}/script> |