Advanced Custom Fields - Version 3.1.2

Version Description

  • New Feature: Required field validation. Note: Repeater / Flexible content fields can be required but their sub fields can not.
  • Field update: Select field: API now returns false when "null" is selected
  • Field update: Radio button: When editing a post / page, the radio button will select the first choice if there is no saved value for the field
  • Bug fix: You can now use a repeater field inside a flexible field! Please note that the_repeater_field will not work as expected. Please use get_sub_field to get the sub repeater field, then use php to loop through it.
Download this release

Release Info

Developer elliotcondon
Plugin Icon 128x128 Advanced Custom Fields
Version 3.1.2
Comparing to
See all releases

Code changes from version 3.1.1 to 3.1.2

acf.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Advanced Custom Fields
4
  Plugin URI: http://www.advancedcustomfields.com/
5
  Description: Fully customise WordPress edit screens with powerful fields. Boasting a professional interface and a powerfull API, it’s a must have for any web developer working with WordPress.Field types include: Wysiwyg, text, textarea, image, file, select, checkbox, page link, post object, date picker, color picker and more!
6
- Version: 3.1.1
7
  Author: Elliot Condon
8
  Author URI: http://www.elliotcondon.com/
9
  License: GPL
@@ -45,7 +45,7 @@ class Acf
45
  $this->dir = plugins_url('',__FILE__);
46
  $this->siteurl = get_bloginfo('url');
47
  $this->wpadminurl = admin_url();
48
- $this->version = '3.1.1';
49
  $this->upgrade_version = '3.0.0'; // this is the latest version which requires an upgrade
50
 
51
 
@@ -376,12 +376,6 @@ class Acf
376
  // find post type and add wysiwyg support
377
  $post_type = get_post_type($post);
378
 
379
- // add css + javascript
380
- echo '<link rel="stylesheet" type="text/css" href="'.$this->dir.'/css/global.css" />';
381
- echo '<link rel="stylesheet" type="text/css" href="'.$this->dir.'/css/input.css" />';
382
- echo '<script type="text/javascript" src="'.$this->dir.'/js/input.js" ></script>';
383
- echo '<style type="text/css">.acf_postbox, .postbox[id*="acf_"] { display: none; }</style>';
384
-
385
  // get style for page
386
  $metabox_ids = $this->get_input_metabox_ids(array('post_id' => $post->ID), false);
387
  $style = isset($metabox_ids[0]) ? $this->get_input_style($metabox_ids[0]) : '';
@@ -393,6 +387,12 @@ class Acf
393
  $this->fields[$field->name]->admin_head();
394
  }
395
 
 
 
 
 
 
 
396
  // get acf's
397
  $acfs = $this->get_field_groups();
398
  if($acfs)
3
  Plugin Name: Advanced Custom Fields
4
  Plugin URI: http://www.advancedcustomfields.com/
5
  Description: Fully customise WordPress edit screens with powerful fields. Boasting a professional interface and a powerfull API, it’s a must have for any web developer working with WordPress.Field types include: Wysiwyg, text, textarea, image, file, select, checkbox, page link, post object, date picker, color picker and more!
6
+ Version: 3.1.2
7
  Author: Elliot Condon
8
  Author URI: http://www.elliotcondon.com/
9
  License: GPL
45
  $this->dir = plugins_url('',__FILE__);
46
  $this->siteurl = get_bloginfo('url');
47
  $this->wpadminurl = admin_url();
48
+ $this->version = '3.1.2';
49
  $this->upgrade_version = '3.0.0'; // this is the latest version which requires an upgrade
50
 
51
 
376
  // find post type and add wysiwyg support
377
  $post_type = get_post_type($post);
378
 
 
 
 
 
 
 
379
  // get style for page
380
  $metabox_ids = $this->get_input_metabox_ids(array('post_id' => $post->ID), false);
381
  $style = isset($metabox_ids[0]) ? $this->get_input_style($metabox_ids[0]) : '';
387
  $this->fields[$field->name]->admin_head();
388
  }
389
 
390
+ // add css + javascript
391
+ echo '<link rel="stylesheet" type="text/css" href="'.$this->dir.'/css/global.css" />';
392
+ echo '<link rel="stylesheet" type="text/css" href="'.$this->dir.'/css/input.css" />';
393
+ echo '<script type="text/javascript" src="'.$this->dir.'/js/input.js" ></script>';
394
+ echo '<script type="text/javascript">acf.validation_message = "' . __("Validation Failed. One or more fields below are required.",'acf') . '";</script>';
395
+
396
  // get acf's
397
  $acfs = $this->get_field_groups();
398
  if($acfs)
core/admin/meta_box_fields.php CHANGED
@@ -131,6 +131,23 @@ foreach($this->fields as $field)
131
  ?>
132
  </td>
133
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
134
  <?php
135
  foreach($fields_names as $field_name => $field_title){
136
  $this->fields[$field_name]->create_options($key, $field);
131
  ?>
132
  </td>
133
  </tr>
134
+ <tr class="required">
135
+ <td class="label"><label><?php _e("Required?",'acf'); ?></label></td>
136
+ <td>
137
+ <?php
138
+ $this->create_field(array(
139
+ 'type' => 'radio',
140
+ 'name' => 'fields['.$key.'][required]',
141
+ 'value' => $field['required'],
142
+ 'choices' => array(
143
+ '1' => 'Yes',
144
+ '0' => 'No',
145
+ ),
146
+ 'layout' => 'horizontal',
147
+ ));
148
+ ?>
149
+ </td>
150
+ </tr>
151
  <?php
152
  foreach($fields_names as $field_name => $field_title){
153
  $this->fields[$field_name]->create_options($key, $field);
core/admin/meta_box_input.php CHANGED
@@ -26,9 +26,24 @@ if($fields)
26
  // set value
27
  $field['value'] = $this->get_value($post_id, $field);
28
 
29
- echo '<div class="field">';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
- echo '<label class="field_label" for="fields[' . $field['key'] . '][value]">' . $field['label'] . '</label>';
32
  if($field['instructions']) echo '<p class="instructions">' . $field['instructions'] . '</p>';
33
 
34
  $field['name'] = 'fields[' . $field['key'] . ']';
26
  // set value
27
  $field['value'] = $this->get_value($post_id, $field);
28
 
29
+ // required
30
+ if(!isset($field['required']))
31
+ {
32
+ $field['required'] == "0";
33
+ }
34
+
35
+ $required_class = "";
36
+ $required_label = "";
37
+
38
+ if($field['required'] == "1")
39
+ {
40
+ $required_class = ' required';
41
+ $required_label = ' <span class="required">*</span>';
42
+ }
43
+
44
+ echo '<div class="field field-' . $field['type'] . $required_class . '">';
45
 
46
+ echo '<label class="field_label" for="fields[' . $field['key'] . ']">' . $field['label'] . $required_label . '</label>';
47
  if($field['instructions']) echo '<p class="instructions">' . $field['instructions'] . '</p>';
48
 
49
  $field['name'] = 'fields[' . $field['key'] . ']';
core/fields/file.php CHANGED
@@ -281,6 +281,9 @@ class acf_File extends acf_Field
281
  self.parent.acf_div.find('span.file_url').text('<?php echo $file_src; ?>');
282
  self.parent.acf_div.addClass('active');
283
 
 
 
 
284
  // reset acf_div and return false
285
  self.parent.acf_div = null;
286
  self.parent.tb_remove();
281
  self.parent.acf_div.find('span.file_url').text('<?php echo $file_src; ?>');
282
  self.parent.acf_div.addClass('active');
283
 
284
+ // validation
285
+ self.parent.acf_div.closest('.field').removeClass('error');
286
+
287
  // reset acf_div and return false
288
  self.parent.acf_div = null;
289
  self.parent.tb_remove();
core/fields/flexible_content.php CHANGED
@@ -85,7 +85,7 @@ class acf_Flexible_content extends acf_Field
85
  <?php if($layout['display'] == 'table'): ?></td><?php endif; ?>
86
  <?php endforeach; ?>
87
  <?php if($layout['display'] == 'row'): ?></td><?php endif; ?>
88
- <td class="remove"><a class="remove_field" href="javascript:;"></a></td>
89
  </tr>
90
  </tbody>
91
  </table>
@@ -132,7 +132,7 @@ class acf_Flexible_content extends acf_Field
132
  <?php if($layout['display'] == 'table'): ?></td><?php endif; ?>
133
  <?php endforeach; ?>
134
  <?php if($layout['display'] == 'row'): ?></td><?php endif; ?>
135
- <td class="remove"><a class="remove_field" href="javascript:;"></a></td>
136
  </tr>
137
  </tbody>
138
  </table>
@@ -152,7 +152,7 @@ class acf_Flexible_content extends acf_Field
152
  </ul>
153
  <div class="bit"></div>
154
  </div>
155
- <a href="javascript:;" id="add_field" class="button-primary"><?php _e("+ Add Row",'acf'); ?></a>
156
  <div class="clear"></div>
157
  </div>
158
 
@@ -195,7 +195,7 @@ class acf_Flexible_content extends acf_Field
195
  {
196
  $fields_names[$f->name] = $f->title;
197
  }
198
- unset($fields_names['repeater']);
199
  unset($fields_names['flexible_content']);
200
 
201
  // loop through layouts and create the options for them
@@ -448,7 +448,7 @@ class acf_Flexible_content extends acf_Field
448
  *
449
  *---------------------------------------------------------------------*/
450
 
451
- $('#poststuff .acf_flexible_content #add_field').live('click', function(){
452
 
453
  if($(this).hasClass('active'))
454
  {
@@ -469,7 +469,7 @@ class acf_Flexible_content extends acf_Field
469
  *
470
  *---------------------------------------------------------------------*/
471
 
472
- $('#poststuff .acf_flexible_content a.remove_field').live('click', function(){
473
 
474
  var div = $(this).closest('.acf_flexible_content');
475
  var table = $(this).closest('table');
@@ -536,15 +536,17 @@ class acf_Flexible_content extends acf_Field
536
  update_order_numbers(div);
537
 
538
  // hide acf popup
539
- $(this).closest('.table_footer').find('#add_field').removeClass('active');
540
  $(this).closest('.acf_popup').hide();
541
-
 
 
 
542
  return false;
543
 
544
  });
545
 
546
 
547
-
548
  $(document).ready(function(){
549
 
550
  $('#poststuff .acf_flexible_content').each(function(){
@@ -555,6 +557,23 @@ class acf_Flexible_content extends acf_Field
555
 
556
  });
557
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
558
  })(jQuery);
559
  </script>
560
  <?php
85
  <?php if($layout['display'] == 'table'): ?></td><?php endif; ?>
86
  <?php endforeach; ?>
87
  <?php if($layout['display'] == 'row'): ?></td><?php endif; ?>
88
+ <td class="remove"><a class="remove_row" id="fc_remove_row" href="javascript:;"></a></td>
89
  </tr>
90
  </tbody>
91
  </table>
132
  <?php if($layout['display'] == 'table'): ?></td><?php endif; ?>
133
  <?php endforeach; ?>
134
  <?php if($layout['display'] == 'row'): ?></td><?php endif; ?>
135
+ <td class="remove"><a class="remove_row" id="fc_remove_row" href="javascript:;"></a></td>
136
  </tr>
137
  </tbody>
138
  </table>
152
  </ul>
153
  <div class="bit"></div>
154
  </div>
155
+ <a href="javascript:;" id="fc_add_row" class="add_row button-primary"><?php _e("+ Add Row",'acf'); ?></a>
156
  <div class="clear"></div>
157
  </div>
158
 
195
  {
196
  $fields_names[$f->name] = $f->title;
197
  }
198
+ //unset($fields_names['repeater']);
199
  unset($fields_names['flexible_content']);
200
 
201
  // loop through layouts and create the options for them
448
  *
449
  *---------------------------------------------------------------------*/
450
 
451
+ $('#poststuff .acf_flexible_content #fc_add_row').live('click', function(){
452
 
453
  if($(this).hasClass('active'))
454
  {
469
  *
470
  *---------------------------------------------------------------------*/
471
 
472
+ $('#poststuff .acf_flexible_content #fc_remove_row').live('click', function(){
473
 
474
  var div = $(this).closest('.acf_flexible_content');
475
  var table = $(this).closest('table');
536
  update_order_numbers(div);
537
 
538
  // hide acf popup
539
+ $(this).closest('.table_footer').find('#fc_add_row').removeClass('active');
540
  $(this).closest('.acf_popup').hide();
541
+
542
+ // validation
543
+ div.closest('.field').removeClass('error');
544
+
545
  return false;
546
 
547
  });
548
 
549
 
 
550
  $(document).ready(function(){
551
 
552
  $('#poststuff .acf_flexible_content').each(function(){
557
 
558
  });
559
 
560
+
561
+ // validation
562
+ $('form#post').live("submit", function(){
563
+
564
+ // flexible content
565
+ $('#post-body .acf_postbox:visible .field.required .acf_flexible_content').each(function(){
566
+
567
+ if(!$(this).find('.values table').exists())
568
+ {
569
+ acf.valdation = false;
570
+ $(this).closest('.field').addClass('error');
571
+ }
572
+
573
+ });
574
+
575
+ });
576
+
577
  })(jQuery);
578
  </script>
579
  <?php
core/fields/image.php CHANGED
@@ -311,6 +311,9 @@ class acf_Image extends acf_Field
311
  self.parent.acf_div.find('img').attr('src','<?php echo $file_src; ?>');
312
  self.parent.acf_div.addClass('active');
313
 
 
 
 
314
  // reset acf_div and return false
315
  self.parent.acf_div = null;
316
  self.parent.tb_remove();
311
  self.parent.acf_div.find('img').attr('src','<?php echo $file_src; ?>');
312
  self.parent.acf_div.addClass('active');
313
 
314
+ // validation
315
+ self.parent.acf_div.closest('.field').removeClass('error');
316
+
317
  // reset acf_div and return false
318
  self.parent.acf_div = null;
319
  self.parent.tb_remove();
core/fields/radio.php CHANGED
@@ -47,9 +47,19 @@ class acf_Radio extends acf_Field
47
  }
48
 
49
  echo '<ul class="radio_list ' . $field['class'] . ' ' . $field['layout'] . '">';
50
-
 
51
  foreach($field['choices'] as $key => $value)
52
  {
 
 
 
 
 
 
 
 
 
53
  $selected = '';
54
 
55
  if($key == $field['value'])
47
  }
48
 
49
  echo '<ul class="radio_list ' . $field['class'] . ' ' . $field['layout'] . '">';
50
+
51
+ $i = 0;
52
  foreach($field['choices'] as $key => $value)
53
  {
54
+ $i++;
55
+
56
+ // if there is no value and this is the first of the choices and there is no "0" choice, select this on by default
57
+ // the 0 choice would normally match a no value. This needs to remain possible for the create new field to work.
58
+ if(!$field['value'] && $i == 1 && !isset($field['choices']['0']))
59
+ {
60
+ $field['value'] = $key;
61
+ }
62
+
63
  $selected = '';
64
 
65
  if($key == $field['value'])
core/fields/relationship.php CHANGED
@@ -114,6 +114,9 @@ class acf_Relationship extends acf_Field
114
  // update input value
115
  div.update_input_val();
116
 
 
 
 
117
  return false;
118
 
119
  });
@@ -138,7 +141,7 @@ class acf_Relationship extends acf_Field
138
 
139
  // update input value
140
  div.update_input_val();
141
-
142
  return false;
143
 
144
  });
114
  // update input value
115
  div.update_input_val();
116
 
117
+ // validation
118
+ div.closest('.field').removeClass('error');
119
+
120
  return false;
121
 
122
  });
141
 
142
  // update input value
143
  div.update_input_val();
144
+
145
  return false;
146
 
147
  });
core/fields/repeater.php CHANGED
@@ -129,7 +129,7 @@ class acf_Repeater extends acf_Field
129
  });
130
 
131
  // add field
132
- $('#poststuff .repeater #add_field').live('click', function(){
133
 
134
  var div = $(this).closest('.repeater');
135
  var row_limit = parseInt(div.attr('data-row_limit'));
@@ -139,7 +139,7 @@ class acf_Repeater extends acf_Field
139
  if(row_count >= row_limit)
140
  {
141
  // reached row limit!
142
- div.find('#add_field').attr('disabled','true');
143
  return false;
144
  }
145
 
@@ -174,16 +174,19 @@ class acf_Repeater extends acf_Field
174
  // disable the add field button if row limit is reached
175
  if((row_count+1) >= row_limit)
176
  {
177
- div.find('#add_field').attr('disabled','true');
178
  }
179
 
 
 
 
180
  return false;
181
 
182
  });
183
 
184
 
185
  // remove field
186
- $('#poststuff .repeater a.remove_field').live('click', function(){
187
 
188
  var div = $(this).closest('.repeater');
189
  var tr = $(this).closest('tr');
@@ -193,7 +196,7 @@ class acf_Repeater extends acf_Field
193
  update_order_numbers(div);
194
  });
195
 
196
- div.find('#add_field').removeAttr('disabled');
197
 
198
  return false;
199
 
@@ -300,7 +303,7 @@ class acf_Repeater extends acf_Field
300
  <?php if($layout == 'row'): ?></td><?php endif; ?>
301
 
302
  <?php if($row_limit > 1): ?>
303
- <td class="remove"><a class="remove_field" href="javascript:;"></a></td>
304
  <?php endif; ?>
305
  </tr>
306
  <?php endforeach; ?>
@@ -309,7 +312,7 @@ class acf_Repeater extends acf_Field
309
  <?php if($row_limit > 1): ?>
310
  <div class="table_footer">
311
  <div class="order_message"></div>
312
- <a href="javascript:;" id="add_field" class="button-primary"><?php _e("+ Add Row",'acf'); ?></a>
313
  </div>
314
  <?php endif; ?>
315
  </div>
@@ -351,6 +354,7 @@ class acf_Repeater extends acf_Field
351
  $fields_names[$f->name] = $f->title;
352
  }
353
  unset($fields_names['repeater']);
 
354
 
355
  ?>
356
  <tr class="field_option field_option_<?php echo $this->name; ?>">
129
  });
130
 
131
  // add field
132
+ $('#poststuff .repeater #r_add_row').live('click', function(){
133
 
134
  var div = $(this).closest('.repeater');
135
  var row_limit = parseInt(div.attr('data-row_limit'));
139
  if(row_count >= row_limit)
140
  {
141
  // reached row limit!
142
+ div.find('#r_add_row').attr('disabled','true');
143
  return false;
144
  }
145
 
174
  // disable the add field button if row limit is reached
175
  if((row_count+1) >= row_limit)
176
  {
177
+ div.find('#r_add_row').attr('disabled','true');
178
  }
179
 
180
+ // validation
181
+ div.closest('.field').removeClass('error');
182
+
183
  return false;
184
 
185
  });
186
 
187
 
188
  // remove field
189
+ $('#poststuff .repeater a#r_remove_row').live('click', function(){
190
 
191
  var div = $(this).closest('.repeater');
192
  var tr = $(this).closest('tr');
196
  update_order_numbers(div);
197
  });
198
 
199
+ div.find('#r_add_row').removeAttr('disabled');
200
 
201
  return false;
202
 
303
  <?php if($layout == 'row'): ?></td><?php endif; ?>
304
 
305
  <?php if($row_limit > 1): ?>
306
+ <td class="remove"><a class="remove_row" id="r_remove_row" href="javascript:;"></a></td>
307
  <?php endif; ?>
308
  </tr>
309
  <?php endforeach; ?>
312
  <?php if($row_limit > 1): ?>
313
  <div class="table_footer">
314
  <div class="order_message"></div>
315
+ <a href="javascript:;" id="r_add_row" class="add_row button-primary"><?php _e("+ Add Row",'acf'); ?></a>
316
  </div>
317
  <?php endif; ?>
318
  </div>
354
  $fields_names[$f->name] = $f->title;
355
  }
356
  unset($fields_names['repeater']);
357
+ unset($fields_names['flexible_content']);
358
 
359
  ?>
360
  <tr class="field_option field_option_<?php echo $this->name; ?>">
core/fields/select.php CHANGED
@@ -286,6 +286,27 @@ class acf_Select extends acf_Field
286
  }
287
 
288
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
289
  }
290
 
291
  ?>
286
  }
287
 
288
 
289
+ /*--------------------------------------------------------------------------------------
290
+ *
291
+ * get_value_for_api
292
+ *
293
+ * @author Elliot Condon
294
+ * @since 3.1.2
295
+ *
296
+ *-------------------------------------------------------------------------------------*/
297
+
298
+ function get_value_for_api($post_id, $field)
299
+ {
300
+ $value = parent::get_value($post_id, $field);
301
+
302
+ if($value == 'null')
303
+ {
304
+ $value = false;
305
+ }
306
+
307
+ return $value;
308
+ }
309
+
310
  }
311
 
312
  ?>
css/global.css CHANGED
@@ -190,6 +190,7 @@ ul.radio_list.horizontal li {
190
 
191
  ul.checkbox_list {
192
  background: transparent !important;
 
193
  }
194
 
195
  ul.checkbox_list input[type="checkbox"] {
190
 
191
  ul.checkbox_list {
192
  background: transparent !important;
193
+ margin: 0;
194
  }
195
 
196
  ul.checkbox_list input[type="checkbox"] {
css/input.css CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  /*---------------------------------------------------------------------------------------------
2
  Post Box
3
  ---------------------------------------------------------------------------------------------*/
@@ -7,14 +12,32 @@
7
  padding: 0;
8
  }
9
 
10
- .acf_postbox .field {
11
  position: relative;
12
  padding: 10px 10px;
13
  border-top: 1px solid #fff;
14
  border-bottom: #e8e8e8 solid 1px;
15
  }
16
 
17
- .acf_postbox .field:last-child {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  border-bottom: none;
19
  }
20
 
@@ -27,6 +50,10 @@
27
  text-shadow: 0 1px 0 #FFFFFF;
28
  }
29
 
 
 
 
 
30
  #poststuff .acf_postbox label.field_label:first-child {
31
  padding-top: 0;
32
  }
@@ -214,11 +241,11 @@
214
  border-right: 0 none;
215
  }
216
 
217
- .repeater > table > tbody > tr:hover a.remove_field {
218
  visibility: visible;
219
  }
220
 
221
- .repeater.hide_remove_buttons > table > tbody > tr:hover a.remove_field {
222
  visibility: hidden;
223
  }
224
 
@@ -227,7 +254,7 @@
227
  padding-top: 0;
228
  }
229
 
230
- a.remove_field {
231
  display: block;
232
  width: 16px;
233
  height: 16px;
@@ -235,7 +262,7 @@ a.remove_field {
235
  visibility: hidden;
236
  }
237
 
238
- a.remove_field:hover {
239
  background-position: 0 100%;
240
  }
241
 
@@ -286,11 +313,13 @@ a.remove_field:hover {
286
  padding: 8px 0;
287
  }
288
 
289
- .repeater .table_footer a#add_field{
290
  display: block;
291
  float: right;
292
  margin: 0;
293
  text-align: center;
 
 
294
  }
295
 
296
  #acf_input .wp_themeSkin tr.mceFirst td.mceToolbar {
@@ -506,7 +535,7 @@ ul.checkbox_list {
506
  border-right: 0 none;
507
  }
508
 
509
- .acf_flexible_content > .values > table > tbody > tr:hover a.remove_field {
510
  visibility: visible;
511
  }
512
 
@@ -557,11 +586,13 @@ ul.checkbox_list {
557
  padding: 8px 0;
558
  }
559
 
560
- .acf_flexible_content .table_footer a#add_field{
561
  display: block;
562
  float: right;
563
  margin: 0;
564
  text-align: center;
 
 
565
  }
566
 
567
  .acf_popup {
1
+ .acf_postbox,
2
+ .postbox[id*="acf_"] {
3
+ display: none;
4
+ }
5
+
6
  /*---------------------------------------------------------------------------------------------
7
  Post Box
8
  ---------------------------------------------------------------------------------------------*/
12
  padding: 0;
13
  }
14
 
15
+ #poststuff .acf_postbox .field {
16
  position: relative;
17
  padding: 10px 10px;
18
  border-top: 1px solid #fff;
19
  border-bottom: #e8e8e8 solid 1px;
20
  }
21
 
22
+ #poststuff .acf_postbox .field.error {
23
+ margin: 0;
24
+ border: #CC0000 solid 1px !important;
25
+ border-radius: 0;
26
+ }
27
+
28
+ #poststuff .acf_postbox .field.error + .error {
29
+ border-top: 0 none !important;
30
+ }
31
+
32
+ #poststuff .acf_postbox .field.error:last-child {
33
+ border-bottom: #CC0000 solid 1px;
34
+ }
35
+
36
+ #poststuff .acf_postbox .field.error label.field_label {
37
+ color: #CC0000;
38
+ }
39
+
40
+ #poststuff .acf_postbox .field:last-child {
41
  border-bottom: none;
42
  }
43
 
50
  text-shadow: 0 1px 0 #FFFFFF;
51
  }
52
 
53
+ #poststuff .acf_postbox label.field_label .required {
54
+ color: #CC0000;
55
+ }
56
+
57
  #poststuff .acf_postbox label.field_label:first-child {
58
  padding-top: 0;
59
  }
241
  border-right: 0 none;
242
  }
243
 
244
+ .repeater > table > tbody > tr:hover a.remove_row {
245
  visibility: visible;
246
  }
247
 
248
+ .repeater.hide_remove_buttons > table > tbody > tr:hover a.remove_row {
249
  visibility: hidden;
250
  }
251
 
254
  padding-top: 0;
255
  }
256
 
257
+ a.remove_row {
258
  display: block;
259
  width: 16px;
260
  height: 16px;
262
  visibility: hidden;
263
  }
264
 
265
+ a.remove_row:hover {
266
  background-position: 0 100%;
267
  }
268
 
313
  padding: 8px 0;
314
  }
315
 
316
+ .repeater .table_footer a.add_row{
317
  display: block;
318
  float: right;
319
  margin: 0;
320
  text-align: center;
321
+ color: #fff;
322
+ text-decoration: none;
323
  }
324
 
325
  #acf_input .wp_themeSkin tr.mceFirst td.mceToolbar {
535
  border-right: 0 none;
536
  }
537
 
538
+ .acf_flexible_content > .values > table > tbody > tr:hover a.remove_row {
539
  visibility: visible;
540
  }
541
 
586
  padding: 8px 0;
587
  }
588
 
589
+ .acf_flexible_content .table_footer a.add_row{
590
  display: block;
591
  float: right;
592
  margin: 0;
593
  text-align: center;
594
+ color: #fff;
595
+ text-decoration: none;
596
  }
597
 
598
  .acf_popup {
js/input.js CHANGED
@@ -1,12 +1,13 @@
1
- (function($){
2
-
3
- /*----------------------------------------------------------------------
4
- *
5
- * vars
6
- *
7
- *---------------------------------------------------------------------*/
8
- var shift_is_down = false;
9
- var data = {
 
10
  action : 'get_input_metabox_ids',
11
  post_id : false,
12
  page_template : false,
@@ -16,9 +17,13 @@
16
  post : false,
17
  post_category : false,
18
  post_format : false
19
- };
20
-
 
 
 
21
 
 
22
  /*----------------------------------------------------------------------
23
  *
24
  * Exists
@@ -43,7 +48,7 @@
43
  var post_id = $('input#post_ID').val();
44
 
45
  // show metaboxes for this post
46
- data = {
47
  action : 'get_input_metabox_ids',
48
  post_id : post_id,
49
  page_template : false,
@@ -61,7 +66,7 @@
61
  {
62
  $.ajax({
63
  url: ajaxurl,
64
- data: data,
65
  type: 'post',
66
  dataType: 'json',
67
  success: function(result){
@@ -127,7 +132,7 @@
127
 
128
  $('#page_template').change(function(){
129
 
130
- data.page_template = $(this).val();
131
  update_fields();
132
 
133
  });
@@ -138,11 +143,11 @@
138
 
139
  if($(this).val() != "")
140
  {
141
- data.page_type = 'child';
142
  }
143
  else
144
  {
145
- data.page_type = 'parent';
146
  }
147
 
148
  update_fields();
@@ -151,10 +156,10 @@
151
 
152
  $('#categorychecklist input[type="checkbox"]').change(function(){
153
 
154
- data.post_category = ['0'];
155
 
156
  $('#categorychecklist :checked').each(function(){
157
- data.post_category.push($(this).val())
158
  });
159
 
160
  //console.log(data.post_category);
@@ -166,7 +171,7 @@
166
 
167
  $('#post-formats-select input[type="radio"]').change(function(){
168
 
169
- data.post_format = $(this).val();
170
  update_fields();
171
 
172
  });
@@ -174,10 +179,10 @@
174
  // taxonomy
175
  $('div[id*="taxonomy-"] input[type="checkbox"]').change(function(){
176
 
177
- data.taxonomy = ['0'];
178
 
179
  $(this).closest('ul').find('input[type="checkbox"]:checked').each(function(){
180
- data.taxonomy.push($(this).val())
181
  });
182
 
183
  update_fields();
@@ -187,10 +192,35 @@
187
  });
188
 
189
 
 
 
 
 
 
 
190
  // on save, delete all unused metaboxes
191
- $('input#save-post, input#publish').live("click", function(){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
192
 
193
- // do validation?
194
  $('#post-body .acf_postbox:hidden').remove();
195
 
196
 
@@ -198,4 +228,99 @@
198
  });
199
 
200
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
201
  })(jQuery);
1
+ /*----------------------------------------------------------------------
2
+ *
3
+ * vars
4
+ *
5
+ *---------------------------------------------------------------------*/
6
+
7
+ var acf = {
8
+ validation : false,
9
+ validation_message : "Validation error", // this is overriden by a script tag generated in admin_head for translation
10
+ data : {
11
  action : 'get_input_metabox_ids',
12
  post_id : false,
13
  page_template : false,
17
  post : false,
18
  post_category : false,
19
  post_format : false
20
+ }
21
+ };
22
+
23
+
24
+ (function($){
25
 
26
+
27
  /*----------------------------------------------------------------------
28
  *
29
  * Exists
48
  var post_id = $('input#post_ID').val();
49
 
50
  // show metaboxes for this post
51
+ acf.data = {
52
  action : 'get_input_metabox_ids',
53
  post_id : post_id,
54
  page_template : false,
66
  {
67
  $.ajax({
68
  url: ajaxurl,
69
+ data: acf.data,
70
  type: 'post',
71
  dataType: 'json',
72
  success: function(result){
132
 
133
  $('#page_template').change(function(){
134
 
135
+ acf.data.page_template = $(this).val();
136
  update_fields();
137
 
138
  });
143
 
144
  if($(this).val() != "")
145
  {
146
+ acf.data.page_type = 'child';
147
  }
148
  else
149
  {
150
+ acf.data.page_type = 'parent';
151
  }
152
 
153
  update_fields();
156
 
157
  $('#categorychecklist input[type="checkbox"]').change(function(){
158
 
159
+ acf.data.post_category = ['0'];
160
 
161
  $('#categorychecklist :checked').each(function(){
162
+ acf.data.post_category.push($(this).val())
163
  });
164
 
165
  //console.log(data.post_category);
171
 
172
  $('#post-formats-select input[type="radio"]').change(function(){
173
 
174
+ acf.data.post_format = $(this).val();
175
  update_fields();
176
 
177
  });
179
  // taxonomy
180
  $('div[id*="taxonomy-"] input[type="checkbox"]').change(function(){
181
 
182
+ acf.data.taxonomy = ['0'];
183
 
184
  $(this).closest('ul').find('input[type="checkbox"]:checked').each(function(){
185
+ acf.data.taxonomy.push($(this).val())
186
  });
187
 
188
  update_fields();
192
  });
193
 
194
 
195
+ /*----------------------------------------------------------------------
196
+ *
197
+ * Save
198
+ *
199
+ *---------------------------------------------------------------------*/
200
+
201
  // on save, delete all unused metaboxes
202
+ $('form#post').live("submit", function(){
203
+
204
+ // do validation
205
+ do_validation()
206
+
207
+ if(acf.valdation == false)
208
+ {
209
+ // reset validation for next time
210
+ acf.valdation = true;
211
+
212
+ // show message
213
+ $('#post').siblings('#message').remove();
214
+ $('#post').before('<div id="message" class="error"><p>' + acf.validation_message + '</p></div>');
215
+
216
+
217
+ // hide ajax stuff on submit button
218
+ $('#publish').removeClass('button-primary-disabled');
219
+ $('#ajax-loading').attr('style','');
220
+
221
+ return false;
222
+ }
223
 
 
224
  $('#post-body .acf_postbox:hidden').remove();
225
 
226
 
228
  });
229
 
230
 
231
+ /*----------------------------------------------------------------------
232
+ *
233
+ * Validation
234
+ *
235
+ *---------------------------------------------------------------------*/
236
+
237
+ function do_validation(){
238
+
239
+ $('#post-body .acf_postbox:visible .field.required').each(function(){
240
+
241
+ var validation = true;
242
+
243
+ // text / textarea
244
+ if($(this).find('input[type="text"], input[type="hidden"], textarea').val() == "")
245
+ {
246
+ validation = false;
247
+ }
248
+
249
+ // select
250
+ if($(this).find('select').exists())
251
+ {
252
+ if($(this).find('select').val() == "null" || !$(this).find('select').val())
253
+ {
254
+ validation = false;
255
+ }
256
+ }
257
+
258
+ // checkbox
259
+ if($(this).find('input[type="checkbox"]:checked').exists())
260
+ {
261
+ validation = true;
262
+ }
263
+
264
+ // checkbox
265
+ if($(this).find('.acf_relationship').exists() && $(this).find('input[type="hidden"]').val() != "")
266
+ {
267
+ validation = true;
268
+ }
269
+
270
+ // repeater
271
+ if($(this).find('.repeater').exists())
272
+ {
273
+ if($(this).find('.repeater tr.row').exists())
274
+ {
275
+ validation = true;
276
+ }
277
+ else
278
+ {
279
+ validation = false;
280
+ }
281
+
282
+ }
283
+
284
+
285
+
286
+
287
+ // set validation
288
+ if(!validation)
289
+ {
290
+ acf.valdation = false;
291
+ $(this).closest('.field').addClass('error');
292
+ }
293
+
294
+ });
295
+
296
+
297
+ }
298
+
299
+
300
+ /*----------------------------------------------------------------------
301
+ *
302
+ * Add simple events to remove error class on field
303
+ *
304
+ *---------------------------------------------------------------------*/
305
+
306
+ // inputs / textareas
307
+ $('#post-body .acf_postbox .field.required input, #post-body .acf_postbox .field.required textarea, .acf_postbox .field.required select').live('focus', function(){
308
+ $(this).closest('.field').removeClass('error');
309
+ });
310
+
311
+ // checkbox
312
+ $('#post-body .acf_postbox .field.required input:checkbox').live('click', function(){
313
+ $(this).closest('.field').removeClass('error');
314
+ });
315
+
316
+ // wysiwyg
317
+ $('#post-body .acf_postbox .field.required .acf_wysiwyg').live('mousedown', function(){
318
+ $(this).closest('.field').removeClass('error');
319
+ });
320
+
321
+
322
+
323
+
324
+
325
+
326
  })(jQuery);
lang/acf.pot CHANGED
@@ -1,403 +1,657 @@
1
- # Copyright (C) 2010
2
  # This file is distributed under the same license as the package.
3
  msgid ""
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/advanced-custom-fields\n"
7
- "POT-Creation-Date: 2011-07-16 04:46:14+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2010-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
- #: core/fields/wysiwyg.php:11
16
- msgid "Wysiwyg Editor"
17
  msgstr ""
18
 
19
- #: core/fields/post_object.php:12
20
- msgid "Post Object"
21
  msgstr ""
22
 
23
- #: core/fields/post_object.php:48
24
- msgid "Select Option"
25
  msgstr ""
26
 
27
- #: core/fields/post_object.php:132 core/fields/page_link.php:144
28
- msgid "Post Type"
29
  msgstr ""
30
 
31
- #: core/fields/post_object.php:133 core/fields/page_link.php:145
32
- msgid ""
33
- "Filter posts by selecting a post type<br />\n"
34
- "\t\t\t\tTip: deselect all post types to show all post type's posts"
35
  msgstr ""
36
 
37
- #: core/fields/post_object.php:164
38
- msgid "Select multiple posts?"
39
  msgstr ""
40
 
41
- #: core/fields/textarea.php:11
42
- msgid "Text Area"
43
  msgstr ""
44
 
45
- #: core/fields/repeater.php:13 core/screen_extra.php:23
46
- msgid "Repeater"
47
  msgstr ""
48
 
49
- #: core/fields/repeater.php:165
50
- msgid "Repeater Fields"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  msgstr ""
52
 
53
- #: core/fields/repeater.php:172 core/fields_meta_box.php:36
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  msgid "Field Order"
55
  msgstr ""
56
 
57
- #: core/fields/repeater.php:173 core/fields_meta_box.php:37
58
- #: core/fields_meta_box.php:87
 
59
  msgid "Field Label"
60
  msgstr ""
61
 
62
- #: core/fields/repeater.php:174 core/fields_meta_box.php:38
63
- #: core/fields_meta_box.php:106
 
64
  msgid "Field Name"
65
  msgstr ""
66
 
67
- #: core/fields/repeater.php:175 core/screen_extra.php:9
68
- #: core/fields_meta_box.php:39 core/fields_meta_box.php:124
 
 
69
  msgid "Field Type"
70
  msgstr ""
71
 
72
- #: core/fields/repeater.php:301
73
- msgid "Row Limit"
 
 
74
  msgstr ""
75
 
76
- #: core/fields/repeater.php:310
77
- msgid "Layout"
78
  msgstr ""
79
 
80
- #: core/fields/true_false.php:11
81
- msgid "True / False"
82
  msgstr ""
83
 
84
- #: core/fields/true_false.php:64
85
- msgid "Message"
86
  msgstr ""
87
 
88
- #: core/fields/true_false.php:65
89
- msgid "eg. Show extra content"
 
90
  msgstr ""
91
 
92
- #: core/fields/file.php:12
93
- msgid "File"
 
94
  msgstr ""
95
 
96
- #: core/fields/file.php:36 core/fields/image.php:36
97
- msgid "Save Format"
98
  msgstr ""
99
 
100
- #: core/fields/file.php:103
101
- msgid "Select File"
102
  msgstr ""
103
 
104
- #: core/fields/file.php:189 core/fields/file.php:193
105
- msgid "Remove File"
106
  msgstr ""
107
 
108
- #: core/fields/file.php:197
109
- msgid "No File selected"
 
110
  msgstr ""
111
 
112
- #: core/fields/file.php:197
113
- msgid "Add File"
 
114
  msgstr ""
115
 
116
- #: core/fields/page_link.php:12
117
- msgid "Page Link"
 
118
  msgstr ""
119
 
120
- #: core/fields/page_link.php:177 core/fields/select.php:107
121
- msgid "Select multiple values?"
 
122
  msgstr ""
123
 
124
- #: core/fields/select.php:12
125
- msgid "Select"
 
126
  msgstr ""
127
 
128
- #: core/fields/select.php:89 core/fields/checkbox.php:74
129
- msgid "Choices"
130
  msgstr ""
131
 
132
- #: core/fields/select.php:90 core/fields/checkbox.php:75
133
  msgid ""
134
- "Enter your choices one per line<br />\n"
135
- "\t\t\t\t<br />\n"
136
- "\t\t\t\tRed<br />\n"
137
- "\t\t\t\tBlue<br />\n"
138
- "\t\t\t\t<br />\n"
139
- "\t\t\t\tor<br />\n"
140
- "\t\t\t\t<br />\n"
141
- "\t\t\t\tred : Red<br />\n"
142
- "\t\t\t\tblue : Blue"
143
  msgstr ""
144
 
145
- #: core/fields/checkbox.php:11
146
- msgid "Checkbox"
147
  msgstr ""
148
 
149
- #: core/fields/text.php:11
150
- msgid "Text"
151
  msgstr ""
152
 
153
- #: core/fields/image.php:12
154
- msgid "Image"
155
  msgstr ""
156
 
157
- #: core/fields/image.php:103
158
- msgid "Select Image"
159
  msgstr ""
160
 
161
- #: core/fields/image.php:219
162
- msgid "No image selected"
163
  msgstr ""
164
 
165
- #: core/fields/image.php:219
166
- msgid "Add Image"
167
  msgstr ""
168
 
169
- #: core/fields/date_picker/date_picker.php:12
170
- msgid "Date Picker"
171
  msgstr ""
172
 
173
- #: core/fields/date_picker/date_picker.php:32
174
- msgid "Date format"
175
  msgstr ""
176
 
177
- #: core/fields/date_picker/date_picker.php:33
178
- msgid "eg. dd/mm/yy. read more about"
 
 
179
  msgstr ""
180
 
181
- #: core/acf_post_type.php:4 acf.php:215
182
- msgid "Advanced&nbsp;Custom&nbsp;Fields"
183
  msgstr ""
184
 
185
- #: core/acf_post_type.php:5
186
- msgid "Advanced Custom Fields"
187
  msgstr ""
188
 
189
- #: core/acf_post_type.php:6
190
- msgid "Add New"
191
  msgstr ""
192
 
193
- #: core/acf_post_type.php:7
194
- msgid "Add New Advanced Custom Field Group"
 
 
195
  msgstr ""
196
 
197
- #: core/acf_post_type.php:8
198
- msgid "Edit Advanced Custom Field Group"
199
  msgstr ""
200
 
201
- #: core/acf_post_type.php:9
202
- msgid "New Advanced Custom Field Group"
203
  msgstr ""
204
 
205
- #: core/acf_post_type.php:10
206
- msgid "View Advanced Custom Field Group"
207
  msgstr ""
208
 
209
- #: core/acf_post_type.php:11
210
- msgid "Search Advanced Custom Field Groups"
211
  msgstr ""
212
 
213
- #: core/acf_post_type.php:12
214
- msgid "No Advanced Custom Field Groups found"
215
  msgstr ""
216
 
217
- #: core/acf_post_type.php:13
218
- msgid "No Advanced Custom Field Groups found in Trash"
219
  msgstr ""
220
 
221
- #: core/options_page.php:39 core/options_page.php:40
222
- msgid "Options"
223
  msgstr ""
224
 
225
- #: core/options_page.php:226
226
- msgid "Settings saved"
227
  msgstr ""
228
 
229
- #: core/options_page.php:237
230
- msgid "Save"
231
  msgstr ""
232
 
233
- #: core/options_page.php:327
234
- msgid "No Options"
 
235
  msgstr ""
236
 
237
- #: core/options_page.php:331
238
- msgid "Sorry, it seems there are no fields for this options page."
 
239
  msgstr ""
240
 
241
- #: core/screen_extra.php:4
242
- msgid "Unlock Special Fields."
243
  msgstr ""
244
 
245
- #: core/screen_extra.php:5
 
 
 
 
246
  msgid ""
247
- "Special Fields can be unlocked by purchasing an activation code. Each "
248
- "activation code can be used on multiple sites."
249
  msgstr ""
250
 
251
- #: core/screen_extra.php:5
252
- msgid "Visit the Plugin Store"
253
  msgstr ""
254
 
255
- #: core/screen_extra.php:10
256
- msgid "Status"
257
  msgstr ""
258
 
259
- #: core/screen_extra.php:11
260
- msgid "Activation Code"
 
 
261
  msgstr ""
262
 
263
- #: core/screen_extra.php:25 core/screen_extra.php:57
264
- msgid "Active"
265
  msgstr ""
266
 
267
- #: core/screen_extra.php:29 core/screen_extra.php:61
268
- msgid "Inactive"
269
  msgstr ""
270
 
271
- #: core/screen_extra.php:55
272
- msgid "Options Page"
273
  msgstr ""
274
 
275
- #: core/screen_extra.php:84
276
- msgid "Unlock Fields"
277
  msgstr ""
278
 
279
- #: core/screen_extra.php:102
280
- msgid "Advanced Custom Fields v"
281
  msgstr ""
282
 
283
- #: core/screen_extra.php:105
284
- msgid "Changelog"
285
  msgstr ""
286
 
287
- #: core/screen_extra.php:106
288
- msgid "See what's new in"
289
  msgstr ""
290
 
291
- #: core/screen_extra.php:109
292
- msgid "Resources"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
  msgstr ""
294
 
295
- #: core/screen_extra.php:110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
296
  msgid ""
297
- "Watch tutorials, read documentation, learn the API code and find some tips "
298
- "&amp; tricks for your next web project."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
299
  msgstr ""
300
 
301
- #: core/screen_extra.php:111
302
- msgid "View the plugins website"
 
303
  msgstr ""
304
 
305
- #: core/screen_extra.php:114
306
- msgid "Support"
 
307
  msgstr ""
308
 
309
- #: core/screen_extra.php:115
 
310
  msgid ""
311
- "Join the growing community over at the support forum to share ideas, report "
312
- "bugs and keep up to date with ACF"
 
 
 
 
 
 
 
313
  msgstr ""
314
 
315
- #: core/screen_extra.php:116
316
- msgid "View the Support Forum"
317
  msgstr ""
318
 
319
- #: core/screen_extra.php:119
320
- msgid "Developed by"
321
  msgstr ""
322
 
323
- #: core/screen_extra.php:120
324
- msgid "Vote for ACF"
325
  msgstr ""
326
 
327
- #: core/screen_extra.php:120
328
- msgid "Twitter"
329
  msgstr ""
330
 
331
- #: core/screen_extra.php:120
332
- msgid "Blog"
333
  msgstr ""
334
 
335
- #: core/fields_meta_box.php:46
336
- msgid "No fields. Click the \"+ Add Field button\" to create your first field."
337
  msgstr ""
338
 
339
- #: core/fields_meta_box.php:62
340
- msgid "Edit"
341
  msgstr ""
342
 
343
- #: core/fields_meta_box.php:63
344
- msgid "Delete"
345
  msgstr ""
346
 
347
- #: core/fields_meta_box.php:88
348
- msgid "This is the name which will appear on the EDIT page"
349
  msgstr ""
350
 
351
- #: core/fields_meta_box.php:107
352
- msgid "Single word, no spaces. Underscores and dashes allowed"
353
  msgstr ""
354
 
355
- #: core/fields_meta_box.php:140
356
- msgid "Field Instructions"
357
  msgstr ""
358
 
359
- #: core/fields_meta_box.php:141
360
- msgid "Instructions for authors. Shown when submitting data"
361
  msgstr ""
362
 
363
- #: core/fields_meta_box.php:157
364
- msgid "Is field searchable?"
365
  msgstr ""
366
 
367
- #: core/fields_meta_box.php:165
368
- msgid "Save this field's value as a standard WordPress Custom Field"
 
369
  msgstr ""
370
 
371
- #: core/fields_meta_box.php:200
372
- msgid "+ Add Field"
373
  msgstr ""
374
 
375
- #: core/options_meta_box.php:18
376
- msgid "Show on page"
377
  msgstr ""
378
 
379
- #: core/options_meta_box.php:19
380
- msgid "Deselect items to hide them on the edit page"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
381
  msgstr ""
382
 
383
- #: core/options_meta_box.php:20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
384
  msgid ""
385
- "If multiple ACF groups appear on an edit page, the first ACF group's options "
386
- "will be used. The first ACF group is the one with the lowest order number."
387
  msgstr ""
388
 
389
- #: core/options_meta_box.php:49
390
- msgid "Field Group Layout"
 
391
  msgstr ""
392
 
393
- #: core/options_meta_box.php:50
394
- msgid "Display your field group with or without a box"
 
395
  msgstr ""
396
 
397
- #: acf.php:211
398
- msgid "Adv Custom Fields"
399
  msgstr ""
400
 
401
- #: acf.php:306 acf.php:324
402
- msgid "Error: Field Type does not exist!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
403
  msgstr ""
1
+ # Copyright (C) 2012
2
  # This file is distributed under the same license as the package.
3
  msgid ""
4
  msgstr ""
5
  "Project-Id-Version: \n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/advanced-custom-fields\n"
7
+ "POT-Creation-Date: 2012-02-12 02:40:44+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2012-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
 
15
+ #: acf.php:206
16
+ msgid "Custom Fields"
17
  msgstr ""
18
 
19
+ #: acf.php:207
20
+ msgid "Settings"
21
  msgstr ""
22
 
23
+ #: acf.php:208
24
+ msgid "Upgrade"
25
  msgstr ""
26
 
27
+ #: acf.php:394
28
+ msgid "Validation Failed. One or more fields below are required."
29
  msgstr ""
30
 
31
+ #: acf.php:733
32
+ msgid "Error: Field Type does not exist!"
 
 
33
  msgstr ""
34
 
35
+ #: core/actions/export.php:19
36
+ msgid "No ACF groups selected"
37
  msgstr ""
38
 
39
+ #: core/actions/init.php:107
40
+ msgid "Field&nbsp;Groups"
41
  msgstr ""
42
 
43
+ #: core/actions/init.php:108 core/admin/page_acf.php:14
44
+ msgid "Advanced Custom Fields"
45
  msgstr ""
46
 
47
+ #: core/actions/init.php:109 core/fields/flexible_content.php:219
48
+ msgid "Add New"
49
+ msgstr ""
50
+
51
+ #: core/actions/init.php:110
52
+ msgid "Add New Field Group"
53
+ msgstr ""
54
+
55
+ #: core/actions/init.php:111
56
+ msgid "Edit Field Group"
57
+ msgstr ""
58
+
59
+ #: core/actions/init.php:112
60
+ msgid "New Field Group"
61
+ msgstr ""
62
+
63
+ #: core/actions/init.php:113
64
+ msgid "View Field Group"
65
+ msgstr ""
66
+
67
+ #: core/actions/init.php:114
68
+ msgid "Search Field Groups"
69
  msgstr ""
70
 
71
+ #: core/actions/init.php:115
72
+ msgid "No Field Groups found"
73
+ msgstr ""
74
+
75
+ #: core/actions/init.php:116
76
+ msgid "No Field Groups found in Trash"
77
+ msgstr ""
78
+
79
+ #: core/admin/meta_box_fields.php:17 core/fields/flexible_content.php:207
80
+ #: core/fields/repeater.php:344
81
+ msgid "New Field"
82
+ msgstr ""
83
+
84
+ #: core/admin/meta_box_fields.php:37 core/fields/flexible_content.php:268
85
+ #: core/fields/repeater.php:370
86
  msgid "Field Order"
87
  msgstr ""
88
 
89
+ #: core/admin/meta_box_fields.php:38 core/admin/meta_box_fields.php:78
90
+ #: core/fields/flexible_content.php:269 core/fields/flexible_content.php:314
91
+ #: core/fields/repeater.php:371 core/fields/repeater.php:416
92
  msgid "Field Label"
93
  msgstr ""
94
 
95
+ #: core/admin/meta_box_fields.php:39 core/admin/meta_box_fields.php:94
96
+ #: core/fields/flexible_content.php:270 core/fields/flexible_content.php:330
97
+ #: core/fields/repeater.php:372 core/fields/repeater.php:432
98
  msgid "Field Name"
99
  msgstr ""
100
 
101
+ #: core/admin/meta_box_fields.php:40 core/admin/meta_box_fields.php:109
102
+ #: core/admin/page_settings.php:44 core/fields/flexible_content.php:271
103
+ #: core/fields/flexible_content.php:345 core/fields/repeater.php:373
104
+ #: core/fields/repeater.php:447
105
  msgid "Field Type"
106
  msgstr ""
107
 
108
+ #: core/admin/meta_box_fields.php:47
109
+ msgid ""
110
+ "No fields. Click the <strong>+ Add Field</strong> button to create your "
111
+ "first field."
112
  msgstr ""
113
 
114
+ #: core/admin/meta_box_fields.php:61
115
+ msgid "Edit"
116
  msgstr ""
117
 
118
+ #: core/admin/meta_box_fields.php:62
119
+ msgid "Docs"
120
  msgstr ""
121
 
122
+ #: core/admin/meta_box_fields.php:63 core/fields/flexible_content.php:220
123
+ msgid "Delete"
124
  msgstr ""
125
 
126
+ #: core/admin/meta_box_fields.php:79 core/fields/flexible_content.php:315
127
+ #: core/fields/repeater.php:417
128
+ msgid "This is the name which will appear on the EDIT page"
129
  msgstr ""
130
 
131
+ #: core/admin/meta_box_fields.php:95 core/fields/flexible_content.php:331
132
+ #: core/fields/repeater.php:433
133
+ msgid "Single word, no spaces. Underscores and dashes allowed"
134
  msgstr ""
135
 
136
+ #: core/admin/meta_box_fields.php:122
137
+ msgid "Field Instructions"
138
  msgstr ""
139
 
140
+ #: core/admin/meta_box_fields.php:123
141
+ msgid "Instructions for authors. Shown when submitting data"
142
  msgstr ""
143
 
144
+ #: core/admin/meta_box_fields.php:135
145
+ msgid "Required?"
146
  msgstr ""
147
 
148
+ #: core/admin/meta_box_fields.php:158 core/fields/flexible_content.php:365
149
+ #: core/fields/repeater.php:467
150
+ msgid "Save Field"
151
  msgstr ""
152
 
153
+ #: core/admin/meta_box_fields.php:161 core/fields/flexible_content.php:368
154
+ #: core/fields/repeater.php:470
155
+ msgid "or"
156
  msgstr ""
157
 
158
+ #: core/admin/meta_box_fields.php:161 core/fields/flexible_content.php:368
159
+ #: core/fields/repeater.php:470
160
+ msgid "Hide this edit screen"
161
  msgstr ""
162
 
163
+ #: core/admin/meta_box_fields.php:161 core/fields/flexible_content.php:368
164
+ #: core/fields/repeater.php:470
165
+ msgid "continue editing ACF"
166
  msgstr ""
167
 
168
+ #: core/admin/meta_box_fields.php:173 core/fields/flexible_content.php:381
169
+ #: core/fields/repeater.php:484
170
+ msgid "+ Add Field"
171
  msgstr ""
172
 
173
+ #: core/admin/meta_box_location.php:25
174
+ msgid "Rules"
175
  msgstr ""
176
 
177
+ #: core/admin/meta_box_location.php:26
178
  msgid ""
179
+ "Create a set of rules to determine which edit screens will use these "
180
+ "advanced custom fields"
 
 
 
 
 
 
 
181
  msgstr ""
182
 
183
+ #: core/admin/meta_box_location.php:305
184
+ msgid "match"
185
  msgstr ""
186
 
187
+ #: core/admin/meta_box_location.php:313
188
+ msgid "of the above"
189
  msgstr ""
190
 
191
+ #: core/admin/meta_box_options.php:13
192
+ msgid "Order No."
193
  msgstr ""
194
 
195
+ #: core/admin/meta_box_options.php:14
196
+ msgid "Field groups are created in order <br />from lowest to highest."
197
  msgstr ""
198
 
199
+ #: core/admin/meta_box_options.php:30
200
+ msgid "Position"
201
  msgstr ""
202
 
203
+ #: core/admin/meta_box_options.php:50
204
+ msgid "Style"
205
  msgstr ""
206
 
207
+ #: core/admin/meta_box_options.php:70
208
+ msgid "Show on page"
209
  msgstr ""
210
 
211
+ #: core/admin/meta_box_options.php:71
212
+ msgid "Deselect items to hide them on the edit page"
213
  msgstr ""
214
 
215
+ #: core/admin/meta_box_options.php:72
216
+ msgid ""
217
+ "If multiple ACF groups appear on an edit page, the first ACF group's options "
218
+ "will be used. The first ACF group is the one with the lowest order number."
219
  msgstr ""
220
 
221
+ #: core/admin/page_acf.php:16
222
+ msgid "Changelog"
223
  msgstr ""
224
 
225
+ #: core/admin/page_acf.php:17
226
+ msgid "See what's new in"
227
  msgstr ""
228
 
229
+ #: core/admin/page_acf.php:19
230
+ msgid "Resources"
231
  msgstr ""
232
 
233
+ #: core/admin/page_acf.php:20
234
+ msgid ""
235
+ "Read documentation, learn the functions and find some tips &amp; tricks for "
236
+ "your next web project."
237
  msgstr ""
238
 
239
+ #: core/admin/page_acf.php:21
240
+ msgid "View the ACF website"
241
  msgstr ""
242
 
243
+ #: core/admin/page_acf.php:26
244
+ msgid "Created by"
245
  msgstr ""
246
 
247
+ #: core/admin/page_acf.php:29
248
+ msgid "Vote"
249
  msgstr ""
250
 
251
+ #: core/admin/page_acf.php:30
252
+ msgid "Follow"
253
  msgstr ""
254
 
255
+ #: core/admin/page_settings.php:23
256
+ msgid "Advanced Custom Fields Settings"
257
  msgstr ""
258
 
259
+ #: core/admin/page_settings.php:40
260
+ msgid "Activate Add-ons."
261
  msgstr ""
262
 
263
+ #: core/admin/page_settings.php:45
264
+ msgid "Status"
265
  msgstr ""
266
 
267
+ #: core/admin/page_settings.php:46
268
+ msgid "Activation Code"
269
  msgstr ""
270
 
271
+ #: core/admin/page_settings.php:52
272
+ msgid "Repeater Field"
273
  msgstr ""
274
 
275
+ #: core/admin/page_settings.php:53 core/admin/page_settings.php:73
276
+ #: core/admin/page_settings.php:93
277
+ msgid "Active"
278
  msgstr ""
279
 
280
+ #: core/admin/page_settings.php:53 core/admin/page_settings.php:73
281
+ #: core/admin/page_settings.php:93
282
+ msgid "Inactive"
283
  msgstr ""
284
 
285
+ #: core/admin/page_settings.php:72
286
+ msgid "Flexible Content Field"
287
  msgstr ""
288
 
289
+ #: core/admin/page_settings.php:92
290
+ msgid "Options Page"
291
+ msgstr ""
292
+
293
+ #: core/admin/page_settings.php:115
294
  msgid ""
295
+ "Add-ons can be unlocked by purchasing a license key. Each key can be used on "
296
+ "multiple sites."
297
  msgstr ""
298
 
299
+ #: core/admin/page_settings.php:115
300
+ msgid "Find Add-ons"
301
  msgstr ""
302
 
303
+ #: core/admin/page_settings.php:133
304
+ msgid "Export Field Groups to XML"
305
  msgstr ""
306
 
307
+ #: core/admin/page_settings.php:166
308
+ msgid ""
309
+ "ACF will create a .xml export file which is compatible with the native WP "
310
+ "import plugin."
311
  msgstr ""
312
 
313
+ #: core/admin/page_settings.php:169
314
+ msgid "Export XML"
315
  msgstr ""
316
 
317
+ #: core/admin/page_settings.php:175
318
+ msgid "Import Field Groups"
319
  msgstr ""
320
 
321
+ #: core/admin/page_settings.php:177
322
+ msgid "Navigate to the"
323
  msgstr ""
324
 
325
+ #: core/admin/page_settings.php:177
326
+ msgid "Import Tool"
327
  msgstr ""
328
 
329
+ #: core/admin/page_settings.php:177
330
+ msgid "and select WordPress"
331
  msgstr ""
332
 
333
+ #: core/admin/page_settings.php:178
334
+ msgid "Install WP import plugin if prompted"
335
  msgstr ""
336
 
337
+ #: core/admin/page_settings.php:179
338
+ msgid "Upload and import your exported .xml file"
339
  msgstr ""
340
 
341
+ #: core/admin/page_settings.php:180
342
+ msgid "Select your user and ignore Import Attachments"
343
+ msgstr ""
344
+
345
+ #: core/admin/page_settings.php:181
346
+ msgid "That's it! Happy WordPressing"
347
+ msgstr ""
348
+
349
+ #: core/admin/page_settings.php:200
350
+ msgid "Export Field Groups to PHP"
351
+ msgstr ""
352
+
353
+ #: core/admin/page_settings.php:233
354
+ msgid "ACF will create the PHP code to include in your theme"
355
+ msgstr ""
356
+
357
+ #: core/admin/page_settings.php:236
358
+ msgid "Create PHP"
359
  msgstr ""
360
 
361
+ #: core/admin/page_settings.php:242 core/admin/page_settings.php:270
362
+ msgid "Register Field Groups with PHP"
363
+ msgstr ""
364
+
365
+ #: core/admin/page_settings.php:244 core/admin/page_settings.php:272
366
+ msgid "Copy the PHP code generated"
367
+ msgstr ""
368
+
369
+ #: core/admin/page_settings.php:245 core/admin/page_settings.php:273
370
+ msgid "Paste into your functions.php file"
371
+ msgstr ""
372
+
373
+ #: core/admin/page_settings.php:246 core/admin/page_settings.php:274
374
+ msgid "To activate any Add-ons, edit and use the code in the first few lines."
375
+ msgstr ""
376
+
377
+ #: core/admin/page_settings.php:267
378
+ msgid "Back to settings"
379
+ msgstr ""
380
+
381
+ #: core/admin/page_settings.php:295
382
+ msgid ""
383
+ "/**\n"
384
+ " * Activate Add-ons\n"
385
+ " * Here you can enter your activation codes to unlock Add-ons to use in your "
386
+ "theme. \n"
387
+ " * Since all activation codes are multi-site licenses, you are allowed to "
388
+ "include your key in premium themes. \n"
389
+ " * Use the commented out code to update the database with your activation "
390
+ "code. \n"
391
+ " * You may place this code inside an IF statement that only runs on theme "
392
+ "activation.\n"
393
+ " */"
394
+ msgstr ""
395
+
396
+ #: core/admin/page_settings.php:308
397
  msgid ""
398
+ "/**\n"
399
+ " * Register field groups\n"
400
+ " * The register_field_group function accepts 1 array which holds the "
401
+ "relevant data to register a field group\n"
402
+ " * You may edit the array as you see fit. However, this may result in errors "
403
+ "if the array is not compatible with ACF\n"
404
+ " * This code must run every time the functions.php file is read\n"
405
+ " */"
406
+ msgstr ""
407
+
408
+ #: core/admin/page_settings.php:335
409
+ msgid "No field groups were selected"
410
+ msgstr ""
411
+
412
+ #: core/fields/checkbox.php:21
413
+ msgid "Checkbox"
414
  msgstr ""
415
 
416
+ #: core/fields/checkbox.php:44 core/fields/radio.php:45
417
+ #: core/fields/select.php:50
418
+ msgid "No choices to choose from"
419
  msgstr ""
420
 
421
+ #: core/fields/checkbox.php:101 core/fields/radio.php:114
422
+ #: core/fields/select.php:164
423
+ msgid "Choices"
424
  msgstr ""
425
 
426
+ #: core/fields/checkbox.php:102 core/fields/radio.php:115
427
+ #: core/fields/select.php:165
428
  msgid ""
429
+ "Enter your choices one per line<br />\n"
430
+ "\t\t\t\t<br />\n"
431
+ "\t\t\t\tRed<br />\n"
432
+ "\t\t\t\tBlue<br />\n"
433
+ "\t\t\t\t<br />\n"
434
+ "\t\t\t\tor<br />\n"
435
+ "\t\t\t\t<br />\n"
436
+ "\t\t\t\tred : Red<br />\n"
437
+ "\t\t\t\tblue : Blue"
438
  msgstr ""
439
 
440
+ #: core/fields/color_picker.php:21
441
+ msgid "Color Picker"
442
  msgstr ""
443
 
444
+ #: core/fields/date_picker/date_picker.php:21
445
+ msgid "Date Picker"
446
  msgstr ""
447
 
448
+ #: core/fields/date_picker/date_picker.php:120
449
+ msgid "Date format"
450
  msgstr ""
451
 
452
+ #: core/fields/date_picker/date_picker.php:121
453
+ msgid "eg. dd/mm/yy. read more about"
454
  msgstr ""
455
 
456
+ #: core/fields/file.php:20
457
+ msgid "File"
458
  msgstr ""
459
 
460
+ #: core/fields/file.php:148
461
+ msgid "Remove File"
462
  msgstr ""
463
 
464
+ #: core/fields/file.php:150
465
+ msgid "No File selected"
466
  msgstr ""
467
 
468
+ #: core/fields/file.php:150
469
+ msgid "Add File"
470
  msgstr ""
471
 
472
+ #: core/fields/file.php:175 core/fields/image.php:179
473
+ msgid "Return Value"
474
  msgstr ""
475
 
476
+ #: core/fields/file.php:242
477
+ msgid "Select File"
478
  msgstr ""
479
 
480
+ #: core/fields/flexible_content.php:21
481
+ msgid "Flexible Content"
482
  msgstr ""
483
 
484
+ #: core/fields/flexible_content.php:50
485
+ msgid "Click the \"add row\" button below to start creating your layout"
486
  msgstr ""
487
 
488
+ #: core/fields/flexible_content.php:155 core/fields/repeater.php:315
489
+ msgid "+ Add Row"
490
  msgstr ""
491
 
492
+ #: core/fields/flexible_content.php:216 core/fields/radio.php:145
493
+ #: core/fields/repeater.php:506
494
+ msgid "Layout"
495
  msgstr ""
496
 
497
+ #: core/fields/flexible_content.php:218
498
+ msgid "Reorder"
499
  msgstr ""
500
 
501
+ #: core/fields/flexible_content.php:230
502
+ msgid "Label"
503
  msgstr ""
504
 
505
+ #: core/fields/flexible_content.php:240
506
+ msgid "Name"
507
+ msgstr ""
508
+
509
+ #: core/fields/flexible_content.php:250
510
+ msgid "Display"
511
+ msgstr ""
512
+
513
+ #: core/fields/flexible_content.php:279 core/fields/repeater.php:381
514
+ msgid "No fields. Click the \"+ Add Field button\" to create your first field."
515
+ msgstr ""
516
+
517
+ #: core/fields/image.php:21
518
+ msgid "Image"
519
+ msgstr ""
520
+
521
+ #: core/fields/image.php:155
522
+ msgid "No image selected"
523
+ msgstr ""
524
+
525
+ #: core/fields/image.php:155
526
+ msgid "Add Image"
527
  msgstr ""
528
 
529
+ #: core/fields/image.php:198
530
+ msgid "Preview Size"
531
+ msgstr ""
532
+
533
+ #: core/fields/image.php:269
534
+ msgid "Select Image"
535
+ msgstr ""
536
+
537
+ #: core/fields/page_link.php:21
538
+ msgid "Page Link"
539
+ msgstr ""
540
+
541
+ #: core/fields/page_link.php:185 core/fields/post_object.php:199
542
+ #: core/fields/relationship.php:420
543
+ msgid "Post Type"
544
+ msgstr ""
545
+
546
+ #: core/fields/page_link.php:186
547
  msgid ""
548
+ "Filter posts by selecting a post type<br />\n"
549
+ "\t\t\t\tTip: deselect all post types to show all post type's posts"
550
  msgstr ""
551
 
552
+ #: core/fields/page_link.php:214 core/fields/post_object.php:271
553
+ #: core/fields/select.php:195
554
+ msgid "Allow Null?"
555
  msgstr ""
556
 
557
+ #: core/fields/page_link.php:233 core/fields/post_object.php:290
558
+ #: core/fields/select.php:214
559
+ msgid "Select multiple values?"
560
  msgstr ""
561
 
562
+ #: core/fields/post_object.php:21
563
+ msgid "Post Object"
564
  msgstr ""
565
 
566
+ #: core/fields/post_object.php:221 core/fields/relationship.php:469
567
+ msgid "Filter from Taxonomy"
568
+ msgstr ""
569
+
570
+ #: core/fields/radio.php:21
571
+ msgid "Radio Button"
572
+ msgstr ""
573
+
574
+ #: core/fields/radio.php:131 core/fields/select.php:181
575
+ #: core/fields/text.php:61 core/fields/textarea.php:62
576
+ msgid "Default Value"
577
+ msgstr ""
578
+
579
+ #: core/fields/relationship.php:21
580
+ msgid "Relationship"
581
+ msgstr ""
582
+
583
+ #: core/fields/relationship.php:492
584
+ msgid "Maximum posts"
585
+ msgstr ""
586
+
587
+ #: core/fields/relationship.php:493
588
+ msgid "Set to -1 for inifinit"
589
+ msgstr ""
590
+
591
+ #: core/fields/repeater.php:21
592
+ msgid "Repeater"
593
+ msgstr ""
594
+
595
+ #: core/fields/repeater.php:362
596
+ msgid "Repeater Fields"
597
+ msgstr ""
598
+
599
+ #: core/fields/repeater.php:492
600
+ msgid "Row Limit"
601
+ msgstr ""
602
+
603
+ #: core/fields/select.php:21
604
+ msgid "Select"
605
+ msgstr ""
606
+
607
+ #: core/fields/text.php:21
608
+ msgid "Text"
609
+ msgstr ""
610
+
611
+ #: core/fields/text.php:75 core/fields/textarea.php:76
612
+ msgid "Formatting"
613
+ msgstr ""
614
+
615
+ #: core/fields/text.php:76
616
+ msgid "Define how to render html tags"
617
+ msgstr ""
618
+
619
+ #: core/fields/textarea.php:21
620
+ msgid "Text Area"
621
+ msgstr ""
622
+
623
+ #: core/fields/textarea.php:77
624
+ msgid "Define how to render html tags / new lines"
625
+ msgstr ""
626
+
627
+ #: core/fields/true_false.php:21
628
+ msgid "True / False"
629
+ msgstr ""
630
+
631
+ #: core/fields/true_false.php:68
632
+ msgid "Message"
633
+ msgstr ""
634
+
635
+ #: core/fields/true_false.php:69
636
+ msgid "eg. Show extra content"
637
+ msgstr ""
638
+
639
+ #: core/fields/wysiwyg.php:21
640
+ msgid "Wysiwyg Editor"
641
+ msgstr ""
642
+
643
+ #: core/fields/wysiwyg.php:252
644
+ msgid "Toolbar"
645
+ msgstr ""
646
+
647
+ #: core/fields/wysiwyg.php:271
648
+ msgid "Show Media Upload Buttons?"
649
+ msgstr ""
650
+
651
+ #: core/options_page.php:62 core/options_page.php:74
652
+ msgid "Options"
653
+ msgstr ""
654
+
655
+ #: core/options_page.php:284
656
+ msgid "Save"
657
  msgstr ""
readme.txt CHANGED
@@ -87,6 +87,12 @@ http://www.advancedcustomfields.com/support/
87
 
88
  == Changelog ==
89
 
 
 
 
 
 
 
90
  = 3.1.1 =
91
  * New Feature: Added shortcode support. usage: [acf field="field_name"]
92
  * Bug Fix: Fixed menu disappearing by changing the function "add_menu" to "add_utility_page"
87
 
88
  == Changelog ==
89
 
90
+ = 3.1.2 =
91
+ * New Feature: Required field validation. Note: Repeater / Flexible content fields can be required but their sub fields can not.
92
+ * Field update: Select field: API now returns false when "null" is selected
93
+ * Field update: Radio button: When editing a post / page, the radio button will select the first choice if there is no saved value for the field
94
+ * Bug fix: You can now use a repeater field inside a flexible field! Please note that the_repeater_field will not work as expected. Please use get_sub_field to get the sub repeater field, then use php to loop through it.
95
+
96
  = 3.1.1 =
97
  * New Feature: Added shortcode support. usage: [acf field="field_name"]
98
  * Bug Fix: Fixed menu disappearing by changing the function "add_menu" to "add_utility_page"